X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=fceu.git;a=blobdiff_plain;f=boards%2Fsupervision.c;h=61a373d3fba44c27ca2cb3131c2ab1cdb07e1c18;hp=fc22599fb59bfa1024e9d021a0f8262c233d734f;hb=e2d0dd92bfad989cce4270fc0ac5a712476c7c50;hpb=c62d28102c77e19c291c78bf6bf7f0a81abd54b9 diff --git a/boards/supervision.c b/boards/supervision.c index fc22599..61a373d 100644 --- a/boards/supervision.c +++ b/boards/supervision.c @@ -1,7 +1,7 @@ /* FCE Ultra - NES/Famicom Emulator * * Copyright notice for this file: - * Copyright (C) 2002 Ben Parnell + * Copyright (C) 2002 Xodnizel * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,35 +20,34 @@ #include "mapinc.h" -#define CHRRAM (GameMemBlock+16) +static uint8 cmd0, cmd1; static void DoSuper(void) { - setprg8r((GameMemBlock[0]&0xC)>>2,0x6000,((GameMemBlock[0]&0x3)<<4)|0xF); - if(GameMemBlock[0]&0x10) - { - setprg16r((GameMemBlock[0]&0xC)>>2,0x8000,((GameMemBlock[0]&0x3)<<3)|(GameMemBlock[1]&7)); - setprg16r((GameMemBlock[0]&0xC)>>2,0xc000,((GameMemBlock[0]&0x3)<<3)|7); - } - else - setprg32r(4,0x8000,0); - - setmirror(((GameMemBlock[0]&0x20)>>5)^1); + setprg8r((cmd0&0xC)>>2,0x6000,((cmd0&0x3)<<4)|0xF); + if(cmd0&0x10) + { + setprg16r((cmd0&0xC)>>2,0x8000,((cmd0&0x3)<<3)|(cmd1&7)); + setprg16r((cmd0&0xC)>>2,0xc000,((cmd0&0x3)<<3)|7); + } + else + setprg32r(4,0x8000,0); + setmirror(((cmd0&0x20)>>5)^1); } static DECLFW(SuperWrite) { - if(!(GameMemBlock[0]&0x10)) - { - GameMemBlock[0]=V; - DoSuper(); - } + if(!(cmd0&0x10)) + { + cmd0=V; + DoSuper(); + } } static DECLFW(SuperHi) { - GameMemBlock[1]=V; - DoSuper(); + cmd1=V; + DoSuper(); } static void SuperReset(void) @@ -56,21 +55,20 @@ static void SuperReset(void) SetWriteHandler(0x6000,0x7FFF,SuperWrite); SetWriteHandler(0x8000,0xFFFF,SuperHi); SetReadHandler(0x6000,0xFFFF,CartBR); - GameMemBlock[0]=GameMemBlock[1]=0; + cmd0=cmd1=0; setprg32r(4,0x8000,0); - setvram8(CHRRAM); + setchr8(0); } static void SuperRestore(int version) { - DoSuper(); + DoSuper(); } -void Supervision16_Init(void) +void Supervision16_Init(CartInfo *info) { - AddExState(&GameMemBlock[0], 1, 0,"L1"); - AddExState(&GameMemBlock[1], 1, 0,"L2"); - AddExState(CHRRAM, 8192, 0, "CHRR"); - BoardPower=SuperReset; + AddExState(&cmd0, 1, 0,"L1"); + AddExState(&cmd1, 1, 0,"L2"); + info->Power=SuperReset; GameStateRestore=SuperRestore; }