X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=fceu.git;a=blobdiff_plain;f=boards%2FKS7032.c;fp=boards%2Fks7032.c;h=c93fc1566a79792723f50ce972dacb642f65d0dd;hp=fcb0eb58545b1af530f31875273a0dc830ec81fc;hb=43725da7349c85fa13e828fdbf20cc7ac8d298d6;hpb=386f5371eb984fb9c2860c83e740890a75cd45c1 diff --git a/boards/ks7032.c b/boards/KS7032.c similarity index 78% rename from boards/ks7032.c rename to boards/KS7032.c index fcb0eb5..c93fc15 100644 --- a/boards/ks7032.c +++ b/boards/KS7032.c @@ -15,12 +15,15 @@ * * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * FDS Conversion + * */ #include "mapinc.h" -static uint8 reg[8], cmd, IRQa; +static uint8 reg[8], cmd, IRQa = 0, isirqused = 0; static int32 IRQCount; static SFORMAT StateRegs[]= @@ -45,20 +48,20 @@ static void Sync(void) static DECLFW(UNLKS7032Write) { // FCEU_printf("bs %04x %02x\n",A,V); - switch(A) + switch(A&0xF000) { // case 0x8FFF: reg[4]=V; Sync(); break; - case 0x8000: X6502_IRQEnd(FCEU_IQEXT); IRQCount=(IRQCount&0x000F)|(V&0x0F); break; - case 0x9000: X6502_IRQEnd(FCEU_IQEXT); IRQCount=(IRQCount&0x00F0)|((V&0x0F)<<4); break; - case 0xA000: X6502_IRQEnd(FCEU_IQEXT); IRQCount=(IRQCount&0x0F00)|((V&0x0F)<<8); break; - case 0xB000: X6502_IRQEnd(FCEU_IQEXT); IRQCount=(IRQCount&0xF000)|(V<<12); break; - case 0xC000: X6502_IRQEnd(FCEU_IQEXT); IRQa=1; break; + case 0x8000: X6502_IRQEnd(FCEU_IQEXT); IRQCount=(IRQCount&0x000F)|(V&0x0F); isirqused = 1; break; + case 0x9000: X6502_IRQEnd(FCEU_IQEXT); IRQCount=(IRQCount&0x00F0)|((V&0x0F)<<4); isirqused = 1; break; + case 0xA000: X6502_IRQEnd(FCEU_IQEXT); IRQCount=(IRQCount&0x0F00)|((V&0x0F)<<8); isirqused = 1; break; + case 0xB000: X6502_IRQEnd(FCEU_IQEXT); IRQCount=(IRQCount&0xF000)|(V<<12); isirqused = 1; break; + case 0xC000: if(isirqused) { X6502_IRQEnd(FCEU_IQEXT); IRQa=1; } break; case 0xE000: cmd=V&7; break; case 0xF000: reg[cmd]=V; Sync(); break; } } -static void UNLSMB2JIRQHook(int a) +static void FP_FASTAPASS(1) UNLSMB2JIRQHook(int a) { if(IRQa) {