X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=fceu.git;a=blobdiff_plain;f=boards%2F112.c;h=ccfd4f4699fa36baa69148d9b766d9044d56162f;hp=2bb1e4b85f6b250dd79e7237bc571c57179b45b4;hb=386f5371eb984fb9c2860c83e740890a75cd45c1;hpb=eec2623f6183dd0f9494b99065a16bf90f2a1ccf diff --git a/boards/112.c b/boards/112.c index 2bb1e4b..ccfd4f4 100644 --- a/boards/112.c +++ b/boards/112.c @@ -15,19 +15,21 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * NTDEC, ASDER games */ #include "mapinc.h" static uint8 reg[8]; -static uint8 mirror, cmd; +static uint8 mirror, cmd, bank; static uint8 *WRAM=NULL; static SFORMAT StateRegs[]= { {&cmd, 1, "CMD"}, {&mirror, 1, "MIRR"}, + {&bank, 1, "BANK"}, {reg, 8, "REGS"}, {0} }; @@ -37,12 +39,12 @@ static void Sync(void) setmirror(mirror^1); setprg8(0x8000,reg[0]); setprg8(0xA000,reg[1]); - setchr2(0x0000,reg[2]>>1); - setchr2(0x0800,reg[3]>>1); - setchr1(0x1000,reg[4]); - setchr1(0x1400,reg[5]); - setchr1(0x1800,reg[6]); - setchr1(0x1C00,reg[7]); + setchr2(0x0000,(reg[2]>>1)); + setchr2(0x0800,(reg[3]>>1)); + setchr1(0x1000,((bank&0x10)<<4)|reg[4]); + setchr1(0x1400,((bank&0x20)<<3)|reg[5]); + setchr1(0x1800,((bank&0x40)<<2)|reg[6]); + setchr1(0x1C00,((bank&0x80)<<1)|reg[7]); } static DECLFW(M112Write) @@ -52,8 +54,8 @@ static DECLFW(M112Write) case 0xe000: mirror=V&1; Sync(); ;break; case 0x8000: cmd=V&7; break; case 0xa000: reg[cmd]=V; Sync(); break; + case 0xc000: bank=V; Sync(); break; } -FCEU_printf("%04x:%04x %d\n",A,V,scanline); } static void M112Close(void) @@ -65,10 +67,12 @@ static void M112Close(void) static void M112Power(void) { + bank=0; setprg16(0xC000,~0); setprg8r(0x10,0x6000,0); SetReadHandler(0x8000,0xFFFF,CartBR); SetWriteHandler(0x8000,0xFFFF,M112Write); + SetWriteHandler(0x4020,0x5FFF,M112Write); SetReadHandler(0x6000,0x7FFF,CartBR); SetWriteHandler(0x6000,0x7FFF,CartBW); }