X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=fceu.git;a=blobdiff_plain;f=mappers%2F42.c;h=10774bd6c4c8816aa9349df77fde5fcf65c9f89e;hp=27002277d410bcc3ec15bbd4c2fa625dfb577b7b;hb=386f5371eb984fb9c2860c83e740890a75cd45c1;hpb=c62d28102c77e19c291c78bf6bf7f0a81abd54b9 diff --git a/mappers/42.c b/mappers/42.c index 2700227..10774bd 100644 --- a/mappers/42.c +++ b/mappers/42.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 @@ -15,7 +15,7 @@ * * 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 */ #include "mapinc.h" @@ -23,25 +23,26 @@ static DECLFW(Mapper42_write) { +// FCEU_printf("%04x:%04x\n",A,V); switch(A&0xe003) { + case 0x8000:VROM_BANK8(V);break; case 0xe000:mapbyte1[0]=V;ROM_BANK8(0x6000,V&0xF);break; case 0xe001:MIRROR_SET((V>>3)&1);break; - case 0xe002:IRQa=V&2;if(!IRQa) IRQCount=0;break; + case 0xe002:IRQa=V&2;if(!IRQa) IRQCount=0;X6502_IRQEnd(FCEU_IQEXT);break; } } -static void FP_FASTAPASS(1) Mapper42IRQ(int a) +static void Mapper42IRQ(int a) { if(IRQa) { - if(IRQCount<24576) - IRQCount+=a; + IRQCount+=a; + if(IRQCount>=32768) IRQCount-=32768; + if(IRQCount>=24576) + X6502_IRQBegin(FCEU_IQEXT); else - { - IRQa=0; - TriggerIRQ(); - } + X6502_IRQEnd(FCEU_IQEXT); } } @@ -55,7 +56,7 @@ void Mapper42_init(void) { ROM_BANK8(0x6000,0); ROM_BANK32(~0); - SetWriteHandler(0xe000,0xffff,Mapper42_write); + SetWriteHandler(0x6000,0xffff,Mapper42_write); SetReadHandler(0x6000,0x7fff,CartBR); MapStateRestore=Mapper42_StateRestore; MapIRQHook=Mapper42IRQ;