summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author arbee <rb6502@users.noreply.github.com>2017-04-01 20:20:08 -0400
committer arbee <rb6502@users.noreply.github.com>2017-04-01 20:20:08 -0400
commit75e06c120dbcdc2b4de311f5e28e2f2a3abe24c6 (patch)
treefca4ed9ee2900d50d15a0aa8b28477efd3d20a96
parent78343b27866fe024a7a2f3193793f0f6a14b17c0 (diff)
piratesh: fix to pass POST, which earns it working with imperfect gfx [R. Belmont]
-rw-r--r--src/mame/drivers/piratesh.cpp2
-rw-r--r--src/mame/video/k053246_k053247_k055673.cpp14
-rw-r--r--src/mame/video/k053246_k053247_k055673.h1
3 files changed, 16 insertions, 1 deletions
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 );