From 75e06c120dbcdc2b4de311f5e28e2f2a3abe24c6 Mon Sep 17 00:00:00 2001 From: arbee Date: Sat, 1 Apr 2017 20:20:08 -0400 Subject: [PATCH] piratesh: fix to pass POST, which earns it working with imperfect gfx [R. Belmont] --- src/mame/drivers/piratesh.cpp | 2 +- src/mame/video/k053246_k053247_k055673.cpp | 14 ++++++++++++++ src/mame/video/k053246_k053247_k055673.h | 1 + 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/mame/drivers/piratesh.cpp b/src/mame/drivers/piratesh.cpp index ccd7f70a525..1312ac3d220 100644 --- a/src/mame/drivers/piratesh.cpp +++ b/src/mame/drivers/piratesh.cpp @@ -387,7 +387,7 @@ static ADDRESS_MAP_START( piratesh_map, AS_PROGRAM, 16, piratesh_state ) AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) // CRTC AM_RANGE(0x180000, 0x18003f) AM_DEVWRITE("k056832", k056832_device, word_w) // TILEMAP AM_RANGE(0x280000, 0x280007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // SPRITES - AM_RANGE(0x290000, 0x29000f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r) // SPRITES + AM_RANGE(0x290000, 0x29000f) AM_DEVREAD("k055673", k055673_device, k055673_ps_rom_word_r) // SPRITES AM_RANGE(0x290010, 0x29001f) AM_DEVWRITE("k055673", k055673_device, k055673_reg_word_w) // SPRITES AM_RANGE(0x2a0000, 0x2a0fff) AM_DEVREADWRITE("k055673", k055673_device, k053247_word_r, k053247_word_w) // SPRITES AM_RANGE(0x2a1000, 0x2a3fff) AM_WRITENOP diff --git a/src/mame/video/k053246_k053247_k055673.cpp b/src/mame/video/k053246_k053247_k055673.cpp index 05589200f81..453242840ec 100644 --- a/src/mame/video/k053246_k053247_k055673.cpp +++ b/src/mame/video/k053246_k053247_k055673.cpp @@ -186,6 +186,20 @@ READ16_MEMBER( k053247_device::k055673_rom_word_r ) return ROM[romofs + (offset & 0x3)]; } +READ16_MEMBER( k053247_device::k055673_ps_rom_word_r ) +{ + uint8_t *ROM = (uint8_t *)space.machine().root_device().memregion(m_memory_region)->base(); + int romofs; + int magic = (offset & 1); + + romofs = m_kx46_regs[6] << 16 | m_kx46_regs[7] << 8 | m_kx46_regs[4]; + offset = ((offset & 4) >> 1); + + int finoffs = (romofs * 2) + (offset * 2) + magic; + + return ROM[finoffs+2] | (ROM[finoffs]<<8); +} + READ8_MEMBER( k053247_device::k053246_r ) { if (m_objcha_line == ASSERT_LINE) diff --git a/src/mame/video/k053246_k053247_k055673.h b/src/mame/video/k053246_k053247_k055673.h index cb87044d4e4..9083662b249 100644 --- a/src/mame/video/k053246_k053247_k055673.h +++ b/src/mame/video/k053246_k053247_k055673.h @@ -83,6 +83,7 @@ public: void clear_all(); DECLARE_READ16_MEMBER( k055673_rom_word_r ); + DECLARE_READ16_MEMBER( k055673_ps_rom_word_r ); DECLARE_READ16_MEMBER( k055673_5bpp_rom_word_r ); DECLARE_READ8_MEMBER( k053247_r );