diff --git a/src/dmg/GB.cpp b/src/dmg/GB.cpp index 58ff3664..8e6b0ec1 100644 --- a/src/dmg/GB.cpp +++ b/src/dmg/GB.cpp @@ -2218,7 +2218,11 @@ void gbReset() gbMemory[temp] = 0xff; } - + // GB bios set this memory area to 0 + // Fixes Pitman (J) title screen + if (gbHardware & 0x1) { + memset(&gbMemory[0x8000], 0x0, 0x2000); + } // clean LineBuffer if (gbLineBuffer != NULL) diff --git a/src/dmg/gbMemory.cpp b/src/dmg/gbMemory.cpp index afc89232..85774086 100644 --- a/src/dmg/gbMemory.cpp +++ b/src/dmg/gbMemory.cpp @@ -252,9 +252,14 @@ void memoryUpdateMapMBC1() gbMemoryMap[0x07] = &gbRom[tmpAddress + 0x3000]; } - if((gbRamSize) && (gbDataMBC1.mapperMemoryModel == 1)){ - gbMemoryMap[0x0a] = &gbRam[gbDataMBC1.mapperRAMAddress]; - gbMemoryMap[0x0b] = &gbRam[gbDataMBC1.mapperRAMAddress + 0x1000]; + if(gbRamSize) { + if(gbDataMBC1.mapperMemoryModel == 1) { + gbMemoryMap[0x0a] = &gbRam[gbDataMBC1.mapperRAMAddress]; + gbMemoryMap[0x0b] = &gbRam[gbDataMBC1.mapperRAMAddress + 0x1000]; + } else { + gbMemoryMap[0x0a] = &gbRam[0]; + gbMemoryMap[0x0b] = &gbRam[0x1000]; + } } } diff --git a/src/dmg/gbSound.cpp b/src/dmg/gbSound.cpp index 481afd81..bb00506f 100644 --- a/src/dmg/gbSound.cpp +++ b/src/dmg/gbSound.cpp @@ -237,6 +237,12 @@ void gbSoundReset() else gbSoundEvent(0xff26, 0xf1); + /* workaround for game Beetlejuice */ + if (gbHardware & 0x1) { + gbSoundEvent(0xff24, 0x77); + gbSoundEvent(0xff25, 0xf3); + } + int addr = 0xff30; while(addr < 0xff40) {