From c99931f5e5760b667c4a4ff23ff012136332f6c2 Mon Sep 17 00:00:00 2001 From: cyberwarriorx Date: Tue, 7 Nov 2006 00:26:49 +0000 Subject: [PATCH] -Added Get ROM chip ID Cartridge command. This should greatly increase compatibility. --- desmume/src/MMU.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/desmume/src/MMU.c b/desmume/src/MMU.c index 131891424..3a7f7128f 100644 --- a/desmume/src/MMU.c +++ b/desmume/src/MMU.c @@ -505,7 +505,7 @@ u32 FASTCALL MMU_read32(u32 proc, u32 adr) case CARD_DATA_RD: { - if(!MMU.dscard[proc].adress) return 0; + if(!MMU.dscard[proc].adress) return 0; u32 val = T1ReadLong(MMU.CART_ROM, MMU.dscard[proc].adress); @@ -1911,6 +1911,13 @@ void FASTCALL MMU_write32(u32 proc, u32 adr, u32 val) MMU.dscard[proc].adress = (MEM_8(MMU.MMU_MEM[proc], CARD_COMMAND+1) << 24) | (MEM_8(MMU.MMU_MEM[proc], CARD_COMMAND+2) << 16) | (MEM_8(MMU.MMU_MEM[proc], CARD_COMMAND+3) << 8) | (MEM_8(MMU.MMU_MEM[proc], CARD_COMMAND+4)); MMU.dscard[proc].transfer_count = 0x80;// * ((val>>24)&7)); } + else if (MEM_8(MMU.MMU_MEM[proc], CARD_COMMAND) == 0xB8) + { + // Get ROM chip ID + val |= 0x800000; // Data-Word Status + T1WriteLong(MMU.MMU_MEM[proc][(CARD_CR2 >> 20) & 0xff], CARD_CR2 & 0xfff, val); + MMU.dscard[proc].adress = 0; + } else { LOG("CARD command: %02X\n", MEM_8(MMU.MMU_MEM[proc], CARD_COMMAND));