X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=boards%2Fsupervision.c;h=61a373d3fba44c27ca2cb3131c2ab1cdb07e1c18;hb=39e1ccffc7ec6bbee9bb3ed1be7cbe856792bf69;hp=cb2890fda08d11e9974b3bfadcdbc375687380b0;hpb=c0bf6f9f02a2b6afb961a7e9195e2168d7e9cecf;p=fceu.git diff --git a/boards/supervision.c b/boards/supervision.c index cb2890f..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,58 +20,55 @@ #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); - X6502_Rebase(); + 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) { SetWriteHandler(0x6000,0x7FFF,SuperWrite); SetWriteHandler(0x8000,0xFFFF,SuperHi); - SetReadHandler(0x6000,0xFFFF,CartBR); - GameMemBlock[0]=GameMemBlock[1]=0; + SetReadHandler(0x6000,0xFFFF,CartBR); + 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; }