diff --git a/HISTORY.txt b/HISTORY.txt index 8821025..333f3b5 100644 --- a/HISTORY.txt +++ b/HISTORY.txt @@ -81,6 +81,7 @@ Genesis Plus GX 1.7.5 (xx/xx/xxxx) (Eke-Eke) * improved console region auto-detection for a few PAL-only games (The Smurfs Travel the World & Williams Arcade's Greatest Hits) * improved I2C EEPROM boards emulation accuracy * improved SVP memory handlers accuracy (fixes Virtua Racing debug mode) +* improved accuracy of 68k access to Z80 bus delays * fixed Realtec mapper behavior on soft-reset and with TMSS hardware * fixed Game Genie / Pro Action Replay lock-on support when Mega CD hardware is enabled * fixed Game Genie / Pro Action Replay lock-on support with games larger than 8MB @@ -167,9 +168,9 @@ Genesis Plus GX 1.7.5 (xx/xx/xxxx) (Eke-Eke) * fixed Mode 1 rendering (TMS99xx "text" mode) * fixed Master System II extended video modes sprite parsing (fixes Mega Man 2 demo) * fixed Game Gear display rendering regression when left/right borders were disabled -* fixed 68k cycles delay on invalid VRAM writes (fixes "Microcosm" intro loop) * fixed address/code potential corruption by one-instruction execution delay after HV interrupts activation (fixes Pugsy's Pyramids stage boss) * optimized tile caching +* reverted FIFO access timings hack when using invalid write code value [Core/Sound] --------------- diff --git a/builds/genesis_plus_gx_libretro.dll b/builds/genesis_plus_gx_libretro.dll index bbe3278..8284d8a 100644 Binary files a/builds/genesis_plus_gx_libretro.dll and b/builds/genesis_plus_gx_libretro.dll differ diff --git a/builds/genplus_cube.dol b/builds/genplus_cube.dol index f72b587..ffa1c57 100644 Binary files a/builds/genplus_cube.dol and b/builds/genplus_cube.dol differ diff --git a/builds/genplus_wii.dol b/builds/genplus_wii.dol index 58e8490..43275cc 100644 Binary files a/builds/genplus_wii.dol and b/builds/genplus_wii.dol differ diff --git a/core/mem68k.c b/core/mem68k.c index 81e9d80..2e302f5 100644 --- a/core/mem68k.c +++ b/core/mem68k.c @@ -140,6 +140,9 @@ unsigned int m68k_lockup_r_16 (unsigned int address) unsigned int z80_read_byte(unsigned int address) { + /* Z80 bus access latency */ + m68k.cycles += 1 * 7; + switch ((address >> 13) & 3) { case 2: /* YM2612 */ @@ -172,6 +175,9 @@ unsigned int z80_read_word(unsigned int address) void z80_write_byte(unsigned int address, unsigned int data) { + /* Z80 bus access latency (fixes Pacman 2: New Adventures sound engine crashes & Puyo Puyo 2 crash when exiting option menu) */ + m68k.cycles += 1 * 7; + switch ((address >> 13) & 3) { case 2: /* YM2612 */ @@ -207,7 +213,6 @@ void z80_write_byte(unsigned int address, unsigned int data) default: /* ZRAM */ { zram[address & 0x1FFF] = data; - m68k.cycles += 2 * 7; /* ZRAM access latency (fixes Pacman 2: New Adventures & Puyo Puyo 2) */ return; } }