X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=mappers%2F33.c;h=f3362c01f7b678e1480481b0da755c8538dfe32f;hb=eec2623f6183dd0f9494b99065a16bf90f2a1ccf;hp=baa2bf9cd0086a1813c19214ba59f92f6d085fbb;hpb=c62d28102c77e19c291c78bf6bf7f0a81abd54b9;p=fceu.git diff --git a/mappers/33.c b/mappers/33.c index baa2bf9..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,26 +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); + 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; - 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; + 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; } } @@ -48,9 +57,9 @@ static void heho(void) if(IRQa) { IRQCount++; - if(IRQCount==0x100) + if(IRQCount==0x100) { - TriggerIRQ(); + X6502_IRQBegin(FCEU_IQEXT); IRQa=0; } } @@ -58,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; }