X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=mappers%2F33.c;h=f3362c01f7b678e1480481b0da755c8538dfe32f;hb=eec2623f6183dd0f9494b99065a16bf90f2a1ccf;hp=a675ec0f2cae02c181b9c3e9d0d3151afb6dd652;hpb=c0bf6f9f02a2b6afb961a7e9195e2168d7e9cecf;p=fceu.git diff --git a/mappers/33.c b/mappers/33.c index a675ec0..f3362c0 100644 --- a/mappers/33.c +++ b/mappers/33.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,28 +20,35 @@ #include "mapinc.h" +static int is48; + static DECLFW(Mapper33_write) { - A&=0xF003; + //printf("%04x:%02x, %d\n",A,V,scanline); - //printf("$%04x:$%02x, %d\n",A,V,scanline); + A&=0xF003; if(A>=0xA000 && A<=0xA003) VROM_BANK1(0x1000+((A&3)<<10),V); - else switch(A){ - case 0x8000:if(!mapbyte1[0]) - MIRROR_SET((V>>6)&1); - ROM_BANK8(0x8000,V); - X6502_Rebase(); - break; - case 0x8001:ROM_BANK8(0xA000,V); - X6502_Rebase();break; - case 0x8002:VROM_BANK2(0x0000,V);break; - case 0x8003:VROM_BANK2(0x0800,V);break; - case 0xc000:IRQLatch=V;break; - case 0xc001:IRQCount=IRQLatch;break; - case 0xc003:IRQa=0;break; - case 0xc002:IRQa=1;break; - case 0xe000:mapbyte1[0]=1;MIRROR_SET((V>>6)&1);break; + else switch(A) + { + case 0x8000:if(!is48) MIRROR_SET((V>>6)&1); + ROM_BANK8(0x8000,V); + break; + case 0x8001:ROM_BANK8(0xA000,V); break; + case 0x8002:VROM_BANK2(0x0000,V);break; + case 0x8003:VROM_BANK2(0x0800,V);break; + } +} + +static DECLFW(Mapper48_HiWrite) +{ + switch(A&0xF003) + { + case 0xc000:IRQLatch=V;break; + case 0xc001:IRQCount=IRQLatch;break; + case 0xc003:IRQa=0;X6502_IRQEnd(FCEU_IQEXT);break; + case 0xc002:IRQa=1;break; + case 0xe000:MIRROR_SET((V>>6)&1);break; } } @@ -52,7 +59,7 @@ static void heho(void) IRQCount++; if(IRQCount==0x100) { - TriggerIRQ(); + X6502_IRQBegin(FCEU_IQEXT); IRQa=0; } } @@ -60,6 +67,14 @@ static void heho(void) void Mapper33_init(void) { - SetWriteHandler(0x8000,0xffff,Mapper33_write); - GameHBIRQHook=heho; + SetWriteHandler(0x8000,0xffff,Mapper33_write); + is48=0; +} + +void Mapper48_init(void) +{ + SetWriteHandler(0x8000,0xffff,Mapper33_write); + SetWriteHandler(0xc000,0xffff,Mapper48_HiWrite); + GameHBIRQHook=heho; + is48=1; }