From e06a07056ca7873c8c8a6f9bf5cdb679ed572edf Mon Sep 17 00:00:00 2001 From: Aaron Giles Date: Mon, 9 Apr 2012 03:43:38 +0000 Subject: [PATCH] Psikyo and DCS fixes. --- src/emu/memory.h | 2 +- src/mame/drivers/psikyo.c | 11 +++++++++-- src/mame/includes/psikyo.h | 1 + 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/emu/memory.h b/src/emu/memory.h index c7e96351cee..6ae40c22f6b 100644 --- a/src/emu/memory.h +++ b/src/emu/memory.h @@ -722,7 +722,7 @@ public: // getters memory_share *next() const { return m_next; } - void *ptr() const { return m_ptr; } + void *ptr() const { if (this == NULL) return NULL; return m_ptr; } size_t bytes() const { return m_bytes; } UINT8 width() const { return m_width; } diff --git a/src/mame/drivers/psikyo.c b/src/mame/drivers/psikyo.c index dc9fde0b69c..fefb6dcd763 100644 --- a/src/mame/drivers/psikyo.c +++ b/src/mame/drivers/psikyo.c @@ -307,6 +307,11 @@ READ32_MEMBER(psikyo_state::s1945_input_r) ***************************************************************************/ +READ32_MEMBER(psikyo_state::paletteram32_dword_r) +{ + return (m_generic_paletteram_16[offset * 2] << 16) | m_generic_paletteram_16[offset * 2 + 1]; +} + WRITE32_MEMBER(psikyo_state::paletteram32_xRRRRRGGGGGBBBBB_dword_w) { if (ACCESSING_BITS_16_31) @@ -318,7 +323,7 @@ WRITE32_MEMBER(psikyo_state::paletteram32_xRRRRRGGGGGBBBBB_dword_w) static ADDRESS_MAP_START( psikyo_map, AS_PROGRAM, 32, psikyo_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM (not all used) AM_RANGE(0x400000, 0x401fff) AM_RAM AM_BASE_SIZE(m_spriteram, m_spriteram_size) // Sprites, buffered by two frames (list buffered + fb buffered) - AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram32_xRRRRRGGGGGBBBBB_dword_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x600000, 0x601fff) AM_READWRITE(paletteram32_dword_r, paletteram32_xRRRRRGGGGGBBBBB_dword_w) // Palette AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(psikyo_vram_0_w) AM_BASE(m_vram_0) // Layer 0 AM_RANGE(0x802000, 0x803fff) AM_RAM_WRITE(psikyo_vram_1_w) AM_BASE(m_vram_1) // Layer 1 AM_RANGE(0x804000, 0x807fff) AM_RAM AM_BASE(m_vregs) // RAM + Vregs @@ -367,7 +372,7 @@ static ADDRESS_MAP_START( psikyo_bootleg_map, AS_PROGRAM, 32, psikyo_state ) AM_RANGE(0x200000, 0x200fff) AM_RAM AM_BASE(m_bootleg_spritebuffer) // RAM (it copies the spritelist here, the HW probably doesn't have automatic buffering like the originals? AM_RANGE(0x400000, 0x401fff) AM_RAM AM_BASE_SIZE(m_spriteram, m_spriteram_size) // Sprites, buffered by two frames (list buffered + fb buffered) - AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram32_xRRRRRGGGGGBBBBB_dword_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram32_xRRRRRGGGGGBBBBB_dword_w) // Palette AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(psikyo_vram_0_w) AM_BASE(m_vram_0) // Layer 0 AM_RANGE(0x802000, 0x803fff) AM_RAM_WRITE(psikyo_vram_1_w) AM_BASE(m_vram_1) // Layer 1 AM_RANGE(0x804000, 0x807fff) AM_RAM AM_BASE(m_vregs) // RAM + Vregs @@ -1026,6 +1031,8 @@ GFXDECODE_END static MACHINE_START( psikyo ) { psikyo_state *state = machine.driver_data(); + + state->m_generic_paletteram_16.allocate(0x1000); state->m_audiocpu = machine.device("audiocpu"); diff --git a/src/mame/includes/psikyo.h b/src/mame/includes/psikyo.h index 5258cb098ae..39b2e78807f 100644 --- a/src/mame/includes/psikyo.h +++ b/src/mame/includes/psikyo.h @@ -61,6 +61,7 @@ public: DECLARE_WRITE32_MEMBER(s1945_mcu_w); DECLARE_READ32_MEMBER(s1945_mcu_r); DECLARE_READ32_MEMBER(s1945_input_r); + DECLARE_READ32_MEMBER(paletteram32_dword_r); DECLARE_WRITE32_MEMBER(paletteram32_xRRRRRGGGGGBBBBB_dword_w); DECLARE_READ32_MEMBER(s1945bl_oki_r); DECLARE_WRITE32_MEMBER(s1945bl_oki_w);