From f4a80a8972ead698e13403602290c60fce485fd3 Mon Sep 17 00:00:00 2001 From: Luca Elia Date: Tue, 1 Jan 2013 21:36:40 +0000 Subject: [PATCH] metro.c update [Luca Elia] - added work RAM mirror (fixes toride2g intro) - halved palette size - corrected video chip model and offsets in several games --- src/mame/drivers/metro.c | 977 +++++++++++++++++++------------------- src/mame/includes/metro.h | 3 +- src/mame/video/metro.c | 58 +-- 3 files changed, 504 insertions(+), 534 deletions(-) diff --git a/src/mame/drivers/metro.c b/src/mame/drivers/metro.c index bd536733d54..529062914b8 100644 --- a/src/mame/drivers/metro.c +++ b/src/mame/drivers/metro.c @@ -46,7 +46,7 @@ Year + Game PCB Video Chip Issues / Notes 96 Sankokushi MTR5260-A I4220 99 Battle Bubble v2.00 LM2D-Y I4220 No sound CPU -95 Mahjong Doukyuhsei VG330-B I4300 No sound CPU +95 Mahjong Doukyuusei VG330-B I4300 No sound CPU 95 Mahjong Doukyuusei Special VG340-A I4300 No sound CPU 96 Mouja VG410-B I4300 No sound CPU 97 Mahjong Gakuensai VG340-A I4300 No sound CPU @@ -55,16 +55,21 @@ Year + Game PCB Video Chip Issues / Notes ----------------------------------------------------------------------------- Mouse Shooter GoGo, Bal Cube, Bang Bang Ball & Daitoride (YMF278B) PCBs have - no PCB number but all look identical to each other. +no PCB number but all look identical to each other. Not dumped yet: 94 Toride II To Do: +- Wrong color bars in service mode (e.g. balcube, toride2g). + They use solid color tiles (80xx), but the right palette is not at 00-ff. + Related to the unknown table in the RAM mapped just before the palette? +- Most games, in service mode, seem to require that you press start1&2 *exactly at once* + in order to advance to the next screen (e.g. holding 1 then pressing 2 doesn't work). - Coin lockout -- Some gfx problems in ladykill, 3kokushi, puzzli, gakusai - - Seems related to how we handle windows and wrapping +- Some gfx problems in ladykill, 3kokushi, puzzli, gakusai, + seem related to how we handle windows and wrapping - Are the 16x16 tiles used by Mouja a Imagetek I4300-only feature? - Interrupt timing needs figuring out properly, having it incorrect causes scrolling glitches in some games. Test cases Mouse Go Go @@ -76,8 +81,8 @@ To Do: Notes: -- To enter service mode in Lady Killer, toggle the dip switch and reset - keeping start 2 pressed. +- To enter service mode in ladykill, 3kokishi: toggle the dip switch and reset + keeping start 2 pressed. - Sprite zoom in Mouja at the end of a match looks wrong, but it's been verified to be the same on the original board @@ -190,14 +195,12 @@ WRITE16_MEMBER(metro_state::metro_irq_cause_w) INTERRUPT_GEN_MEMBER(metro_state::metro_vblank_interrupt) { - m_requested_int[m_vblank_bit] = 1; update_irq_state(machine()); } INTERRUPT_GEN_MEMBER(metro_state::metro_periodic_interrupt) { - m_requested_int[4] = 1; update_irq_state(machine()); } @@ -210,7 +213,6 @@ TIMER_CALLBACK_MEMBER(metro_state::karatour_irq_callback) /* lev 2-7 (lev 1 seems sound related) */ INTERRUPT_GEN_MEMBER(metro_state::karatour_interrupt) { - m_requested_int[m_vblank_bit] = 1; /* write to scroll registers, the duration is a guess */ @@ -222,7 +224,6 @@ INTERRUPT_GEN_MEMBER(metro_state::karatour_interrupt) TIMER_CALLBACK_MEMBER(metro_state::mouja_irq_callback) { - m_requested_int[0] = 1; update_irq_state(machine()); } @@ -236,7 +237,6 @@ WRITE16_MEMBER(metro_state::mouja_irq_timer_ctrl_w) INTERRUPT_GEN_MEMBER(metro_state::puzzlet_interrupt) { - m_requested_int[m_vblank_bit] = 1; update_irq_state(machine()); @@ -769,67 +769,69 @@ READ16_MEMBER(metro_state::balcube_dsw_r) static ADDRESS_MAP_START( balcube_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM - AM_RANGE(0x300000, 0x300001) AM_DEVREAD8_LEGACY("ymf", ymf278b_r, 0x00ff) // Sound - AM_RANGE(0x300000, 0x30000b) AM_DEVWRITE8_LEGACY("ymf", ymf278b_w, 0x00ff) // Sound + AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM + AM_RANGE(0x300000, 0x300001) AM_DEVREAD8_LEGACY("ymf", ymf278b_r, 0x00ff) // Sound + AM_RANGE(0x300000, 0x30000b) AM_DEVWRITE8_LEGACY("ymf", ymf278b_w, 0x00ff) // Sound AM_RANGE(0x400000, 0x41ffff) AM_READ(balcube_dsw_r) // DSW x 3 AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN0") // Inputs AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN1") // - AM_RANGE(0x500006, 0x500007) AM_READNOP // - AM_RANGE(0x500002, 0x500009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout + AM_RANGE(0x500006, 0x500007) AM_READNOP // + AM_RANGE(0x500002, 0x500009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout AM_RANGE(0x600000, 0x61ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 AM_RANGE(0x620000, 0x63ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 AM_RANGE(0x640000, 0x65ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 AM_RANGE(0x660000, 0x66ffff) AM_READ(metro_bankedrom_r) // Banked ROM - AM_RANGE(0x670000, 0x673fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x674000, 0x674fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x678000, 0x6787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0x670000, 0x671fff) AM_RAM // ??? + AM_RANGE(0x672000, 0x673fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x674000, 0x674fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0x678000, 0x6787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set AM_RANGE(0x678840, 0x67884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter AM_RANGE(0x678860, 0x67886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0x678870, 0x67887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll + AM_RANGE(0x678870, 0x67887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll AM_RANGE(0x678880, 0x678881) AM_WRITENOP // ? increasing AM_RANGE(0x678890, 0x678891) AM_WRITENOP // ? increasing - AM_RANGE(0x6788a2, 0x6788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x6788a4, 0x6788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x6788aa, 0x6788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0x6788ac, 0x6788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0x679700, 0x679713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0x6788a2, 0x6788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0x6788a4, 0x6788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0x6788aa, 0x6788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0x6788ac, 0x6788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0x679700, 0x679713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) ADDRESS_MAP_END /*************************************************************************** - Daitoride (alt hardware) + Daitoride (YMF278B version) ***************************************************************************/ static ADDRESS_MAP_START( daitoa_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM - AM_RANGE(0x400000, 0x400001) AM_DEVREAD8_LEGACY("ymf", ymf278b_r, 0x00ff) // Sound - AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8_LEGACY("ymf", ymf278b_w, 0x00ff) // Sound - AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r) // DSW x 3 + AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM AM_RANGE(0x100000, 0x11ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 AM_RANGE(0x120000, 0x13ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 AM_RANGE(0x140000, 0x15ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 AM_RANGE(0x160000, 0x16ffff) AM_READ(metro_bankedrom_r) // Banked ROM - AM_RANGE(0x170000, 0x173fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x174000, 0x174fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0x170000, 0x171fff) AM_RAM // ??? + AM_RANGE(0x172000, 0x173fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x174000, 0x174fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set AM_RANGE(0x178840, 0x17884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter AM_RANGE(0x178860, 0x17886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0x178870, 0x17887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll + AM_RANGE(0x178870, 0x17887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll AM_RANGE(0x178880, 0x178881) AM_WRITENOP // ? increasing AM_RANGE(0x178890, 0x178891) AM_WRITENOP // ? increasing - AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x1788aa, 0x1788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0x1788ac, 0x1788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0x179700, 0x179713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0x1788aa, 0x1788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0x1788ac, 0x1788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0x179700, 0x179713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers AM_RANGE(0x200000, 0x200001) AM_READ_PORT("IN0") // Inputs AM_RANGE(0x200002, 0x200003) AM_READ_PORT("IN1") // - AM_RANGE(0x200006, 0x200007) AM_READNOP // - AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout + AM_RANGE(0x200006, 0x200007) AM_READNOP // + AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout + AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r) // DSW x 3 + AM_RANGE(0x400000, 0x400001) AM_DEVREAD8_LEGACY("ymf", ymf278b_r, 0x00ff) // Sound + AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8_LEGACY("ymf", ymf278b_w, 0x00ff) // Sound + AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) ADDRESS_MAP_END @@ -838,33 +840,33 @@ ADDRESS_MAP_END ***************************************************************************/ static ADDRESS_MAP_START( bangball_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM - AM_RANGE(0xf10000, 0xf10fff) AM_RAM // RAM (bug in the ram test routine) - AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8_LEGACY("ymf", ymf278b_r, 0x00ff) // Sound - AM_RANGE(0xb00000, 0xb0000b) AM_DEVWRITE8_LEGACY("ymf", ymf278b_w, 0x00ff) // Sound + AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM + AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8_LEGACY("ymf", ymf278b_r, 0x00ff) // Sound + AM_RANGE(0xb00000, 0xb0000b) AM_DEVWRITE8_LEGACY("ymf", ymf278b_w, 0x00ff) // Sound AM_RANGE(0xc00000, 0xc1ffff) AM_READ(balcube_dsw_r) // DSW x 3 AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0") // Inputs AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1") // - AM_RANGE(0xd00006, 0xd00007) AM_READNOP // - AM_RANGE(0xd00002, 0xd00009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout + AM_RANGE(0xd00006, 0xd00007) AM_READNOP // + AM_RANGE(0xd00002, 0xd00009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout AM_RANGE(0xe00000, 0xe1ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 AM_RANGE(0xe20000, 0xe3ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 AM_RANGE(0xe40000, 0xe5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 AM_RANGE(0xe60000, 0xe6ffff) AM_READ(metro_bankedrom_r) // Banked ROM - AM_RANGE(0xe70000, 0xe73fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0xe74000, 0xe74fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0xe78000, 0xe787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0xe70000, 0xe71fff) AM_RAM // ??? + AM_RANGE(0xe72000, 0xe73fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0xe74000, 0xe74fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0xe78000, 0xe787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set AM_RANGE(0xe78840, 0xe7884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter AM_RANGE(0xe78860, 0xe7886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0xe78870, 0xe7887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll + AM_RANGE(0xe78870, 0xe7887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll AM_RANGE(0xe78880, 0xe78881) AM_WRITENOP // ? increasing AM_RANGE(0xe78890, 0xe78891) AM_WRITENOP // ? increasing - AM_RANGE(0xe788a2, 0xe788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0xe788a4, 0xe788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0xe788aa, 0xe788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0xe788ac, 0xe788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0xe79700, 0xe79713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0xe788a2, 0xe788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0xe788a4, 0xe788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0xe788aa, 0xe788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0xe788ac, 0xe788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0xe79700, 0xe79713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) ADDRESS_MAP_END @@ -873,34 +875,34 @@ ADDRESS_MAP_END ***************************************************************************/ static ADDRESS_MAP_START( batlbubl_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM + AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM AM_RANGE(0x100000, 0x11ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 AM_RANGE(0x120000, 0x13ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 AM_RANGE(0x140000, 0x15ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 AM_RANGE(0x160000, 0x16ffff) AM_READ(metro_bankedrom_r) // Banked ROM - AM_RANGE(0x170000, 0x173fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x174000, 0x174fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0x170000, 0x171fff) AM_RAM // ??? + AM_RANGE(0x172000, 0x173fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x174000, 0x174fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set AM_RANGE(0x178840, 0x17884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter AM_RANGE(0x178860, 0x17886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0x178870, 0x17887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll + AM_RANGE(0x178870, 0x17887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll AM_RANGE(0x178880, 0x178881) AM_WRITENOP // ? increasing AM_RANGE(0x178890, 0x178891) AM_WRITENOP // ? increasing - AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x1788aa, 0x1788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0x1788ac, 0x1788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0x179700, 0x179713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers - AM_RANGE(0x200000, 0x200001) AM_READ_PORT("IN1") - AM_RANGE(0x200002, 0x200003) AM_READ_PORT("DSW0") - AM_RANGE(0x200004, 0x200005) AM_READ_PORT("IN0") - AM_RANGE(0x200006, 0x200007) AM_READ_PORT("IN2") - AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout + AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0x1788aa, 0x1788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0x1788ac, 0x1788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0x179700, 0x179713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0x200000, 0x200001) AM_READ_PORT("IN1") // Inputs + AM_RANGE(0x200002, 0x200003) AM_READ_PORT("DSW0") // + AM_RANGE(0x200004, 0x200005) AM_READ_PORT("IN0") // + AM_RANGE(0x200006, 0x200007) AM_READ_PORT("IN2") // + AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r) // read but ignored? - AM_RANGE(0x400000, 0x400001) AM_DEVREAD8_LEGACY("ymf", ymf278b_r, 0x00ff) // Sound - AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8_LEGACY("ymf", ymf278b_w, 0x00ff) // - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM - AM_RANGE(0xf10000, 0xf10fff) AM_RAM // RAM (bug in the ram test routine) + AM_RANGE(0x400000, 0x400001) AM_DEVREAD8_LEGACY("ymf", ymf278b_r, 0x00ff) // Sound + AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8_LEGACY("ymf", ymf278b_w, 0x00ff) // + AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) ADDRESS_MAP_END @@ -909,32 +911,33 @@ ADDRESS_MAP_END ***************************************************************************/ static ADDRESS_MAP_START( msgogo_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM + AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM AM_RANGE(0x100000, 0x11ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 AM_RANGE(0x120000, 0x13ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 AM_RANGE(0x140000, 0x15ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 AM_RANGE(0x160000, 0x16ffff) AM_READ(metro_bankedrom_r) // Banked ROM - AM_RANGE(0x170000, 0x173fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x174000, 0x174fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0x170000, 0x171fff) AM_RAM // ??? + AM_RANGE(0x172000, 0x173fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x174000, 0x174fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set AM_RANGE(0x178840, 0x17884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter AM_RANGE(0x178860, 0x17886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0x178870, 0x17887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll + AM_RANGE(0x178870, 0x17887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll AM_RANGE(0x178880, 0x178881) AM_WRITENOP // ? increasing AM_RANGE(0x178890, 0x178891) AM_WRITENOP // ? increasing - AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x1788aa, 0x1788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0x1788ac, 0x1788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0x179700, 0x179713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0x1788aa, 0x1788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0x1788ac, 0x1788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0x179700, 0x179713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers AM_RANGE(0x200000, 0x200001) AM_READ_PORT("COINS") // Inputs AM_RANGE(0x200002, 0x200003) AM_READ_PORT("JOYS") // - AM_RANGE(0x200006, 0x200007) AM_READNOP // - AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout + AM_RANGE(0x200006, 0x200007) AM_READNOP // + AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r) // 3 x DSW - AM_RANGE(0x400000, 0x400001) AM_DEVREAD8_LEGACY("ymf", ymf278b_r, 0x00ff) // Sound - AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8_LEGACY("ymf", ymf278b_w, 0x00ff) // - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM + AM_RANGE(0x400000, 0x400001) AM_DEVREAD8_LEGACY("ymf", ymf278b_r, 0x00ff) // Sound + AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8_LEGACY("ymf", ymf278b_w, 0x00ff) // + AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) ADDRESS_MAP_END /*************************************************************************** @@ -942,31 +945,32 @@ ADDRESS_MAP_END ***************************************************************************/ static ADDRESS_MAP_START( daitorid_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x800000, 0x80ffff) AM_RAM // RAM + AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r) // Banked ROM - AM_RANGE(0x470000, 0x473fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0x470000, 0x471fff) AM_RAM // ??? + AM_RANGE(0x472000, 0x473fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0x478870, 0x47887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll + AM_RANGE(0x478870, 0x47887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll AM_RANGE(0x478880, 0x478881) AM_WRITENOP // ? increasing AM_RANGE(0x478890, 0x478891) AM_WRITENOP // ? increasing - AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x4788a4, 0x4788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x4788a8, 0x4788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU - AM_RANGE(0x4788aa, 0x4788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0x4788ac, 0x4788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers - AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU - AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") - AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0") - AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN2") - AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout + AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0x4788a4, 0x4788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0x4788a8, 0x4788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU + AM_RANGE(0x4788aa, 0x4788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0x4788ac, 0x4788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) + AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU + AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // + AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0") // + AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN2") // + AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout ADDRESS_MAP_END @@ -975,31 +979,32 @@ ADDRESS_MAP_END ***************************************************************************/ static ADDRESS_MAP_START( dharma_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM // RAM + AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM + AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) AM_RANGE(0x800000, 0x81ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 AM_RANGE(0x820000, 0x83ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM - AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0x870000, 0x871fff) AM_RAM // ??? + AM_RANGE(0x872000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs + AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs AM_RANGE(0x878880, 0x878881) AM_WRITENOP // ? increasing AM_RANGE(0x878890, 0x878891) AM_WRITENOP // ? increasing - AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU - AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x879700, 0x879713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers - AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU - AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") - AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0") - AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN2") - AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout + AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU + AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0x879700, 0x879713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU + AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // + AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0") // + AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN2") // + AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout ADDRESS_MAP_END @@ -1022,33 +1027,34 @@ WRITE16_MEMBER(metro_state::karatour_vram_1_w){ metro_vram_1_w(space, KARATOUR_O WRITE16_MEMBER(metro_state::karatour_vram_2_w){ metro_vram_2_w(space, KARATOUR_OFFS(offset), data, mem_mask); } static ADDRESS_MAP_START( karatour_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0xffc000, 0xffffff) AM_RAM // RAM - AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w) // From Sound CPU + AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM + AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w) // From Sound CPU AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout + AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN1") // AM_RANGE(0x400006, 0x400007) AM_READ_PORT("DSW0") // AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW1") // AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("IN2") // AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM - AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x875000, 0x875fff) AM_READWRITE(karatour_vram_0_r, karatour_vram_0_w) // Layer 0 (Part of) - AM_RANGE(0x876000, 0x876fff) AM_READWRITE(karatour_vram_1_r, karatour_vram_1_w) // Layer 1 (Part of) - AM_RANGE(0x877000, 0x877fff) AM_READWRITE(karatour_vram_2_r, karatour_vram_2_w) // Layer 2 (Part of) - AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set - AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0x870000, 0x871fff) AM_RAM // ??? + AM_RANGE(0x872000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0x875000, 0x875fff) AM_READWRITE(karatour_vram_0_r, karatour_vram_0_w) // Layer 0 (Part of) + AM_RANGE(0x876000, 0x876fff) AM_READWRITE(karatour_vram_1_r, karatour_vram_1_w) // Layer 1 (Part of) + AM_RANGE(0x877000, 0x877fff) AM_READWRITE(karatour_vram_2_r, karatour_vram_2_w) // Layer 2 (Part of) + AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll + AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll AM_RANGE(0x878880, 0x878881) AM_WRITENOP // ? increasing AM_RANGE(0x878890, 0x878891) AM_WRITENOP // ? increasing - AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU - AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU + AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) ADDRESS_MAP_END @@ -1059,30 +1065,31 @@ ADDRESS_MAP_END /* same limited tilemap access as karatour */ static ADDRESS_MAP_START( kokushi_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x7fc000, 0x7fffff) AM_RAM // RAM - AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM - AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x875000, 0x875fff) AM_READWRITE(karatour_vram_0_r, karatour_vram_0_w) // Layer 0 (Part of) - AM_RANGE(0x876000, 0x876fff) AM_READWRITE(karatour_vram_1_r, karatour_vram_1_w) // Layer 1 (Part of) - AM_RANGE(0x877000, 0x877fff) AM_READWRITE(karatour_vram_2_r, karatour_vram_2_w) // Layer 2 (Part of) - AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM + AM_RANGE(0x700000, 0x70ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) + AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM + AM_RANGE(0x870000, 0x871fff) AM_RAM // ??? + AM_RANGE(0x872000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0x875000, 0x875fff) AM_READWRITE(karatour_vram_0_r, karatour_vram_0_w) // Layer 0 (Part of) + AM_RANGE(0x876000, 0x876fff) AM_READWRITE(karatour_vram_1_r, karatour_vram_1_w) // Layer 1 (Part of) + AM_RANGE(0x877000, 0x877fff) AM_READWRITE(karatour_vram_2_r, karatour_vram_2_w) // Layer 2 (Part of) + AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter - AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs - WRONG -// AM_RANGE(0x878880, 0x878881) AM_WRITENOP // ? increasing - AM_RANGE(0x878890, 0x878891) AM_WRITENOP // ? increasing - AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window + AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs - WRONG +// AM_RANGE(0x878880, 0x878881) AM_WRITENOP // ? increasing + AM_RANGE(0x878890, 0x878891) AM_WRITENOP // ? increasing + AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU - AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0x879700, 0x879713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers - AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU - AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // Inputs - AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0") - AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w ) // Coin Lockout + AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0x879700, 0x879713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU + AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // Inputs + AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0") // + AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w ) // Coin Lockout ADDRESS_MAP_END @@ -1091,28 +1098,29 @@ ADDRESS_MAP_END ***************************************************************************/ static ADDRESS_MAP_START( lastfort_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM // RAM + AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM + AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) AM_RANGE(0x800000, 0x81ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 AM_RANGE(0x820000, 0x83ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM - AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set - AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0x870000, 0x871fff) AM_RAM // ??? + AM_RANGE(0x872000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll + AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll AM_RANGE(0x878880, 0x878881) AM_WRITENOP // ? increasing AM_RANGE(0x878890, 0x878891) AM_WRITENOP // ? increasing - AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU - AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0xc00000, 0xc00001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w) // From / To Sound CPU - AM_RANGE(0xc00002, 0xc00003) AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout + AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU + AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0xc00000, 0xc00001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w) // From / To Sound CPU + AM_RANGE(0xc00002, 0xc00003) AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("IN0") // Inputs AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN1") // AM_RANGE(0xc00008, 0xc00009) AM_READ_PORT("IN2") // @@ -1125,10 +1133,10 @@ ADDRESS_MAP_END /* todo: clean up input reads etc. */ static ADDRESS_MAP_START( lastforg_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w) // From / To Sound CPU + AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM + AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w) // From / To Sound CPU AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN0") // Inputs - AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout + AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN1") // AM_RANGE(0x400006, 0x400007) AM_READ_PORT("DSW0") // AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW1") // @@ -1137,21 +1145,22 @@ static ADDRESS_MAP_START( lastforg_map, AS_PROGRAM, 16, metro_state ) AM_RANGE(0x8a0000, 0x8bffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 AM_RANGE(0x8c0000, 0x8dffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 AM_RANGE(0x8e0000, 0x8effff) AM_READ(metro_bankedrom_r) // Banked ROM - AM_RANGE(0x8f0000, 0x8f3fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x8f4000, 0x8f4fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x8f8000, 0x8f87ff) AM_RAM AM_SHARE("tiletable") // Tiles Set - AM_RANGE(0x8f8800, 0x8f8813) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0x8f0000, 0x8f1fff) AM_RAM // ??? + AM_RANGE(0x8f2000, 0x8f3fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x8f4000, 0x8f4fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0x8f8000, 0x8f87ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0x8f8800, 0x8f8813) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers AM_RANGE(0x8f8840, 0x8f884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter AM_RANGE(0x8f8860, 0x8f886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0x8f8870, 0x8f887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll + AM_RANGE(0x8f8870, 0x8f887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll AM_RANGE(0x8f8880, 0x8f8881) AM_WRITENOP // ? increasing AM_RANGE(0x8f8890, 0x8f8891) AM_WRITENOP // ? increasing - AM_RANGE(0x8f88a2, 0x8f88a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x8f88a4, 0x8f88a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x8f88a8, 0x8f88a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU - AM_RANGE(0x8f88aa, 0x8f88ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0x8f88ac, 0x8f88ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0xc00000, 0xc0ffff) AM_RAM // RAM + AM_RANGE(0x8f88a2, 0x8f88a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0x8f88a4, 0x8f88a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0x8f88a8, 0x8f88a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU + AM_RANGE(0x8f88aa, 0x8f88ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0x8f88ac, 0x8f88ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) ADDRESS_MAP_END @@ -1227,35 +1236,36 @@ WRITE16_MEMBER(metro_state::gakusai_eeprom_w) } static ADDRESS_MAP_START( gakusai_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM + AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM AM_RANGE(0x200000, 0x21ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 AM_RANGE(0x220000, 0x23ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 AM_RANGE(0x240000, 0x25ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r) // Banked ROM - AM_RANGE(0x270000, 0x273fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x274000, 0x274fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set - AM_RANGE(0x27880e, 0x27880f) AM_RAM AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels - AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors - AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r) // Inputs + AM_RANGE(0x270000, 0x271fff) AM_RAM // ??? + AM_RANGE(0x272000, 0x273fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x274000, 0x274fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0x27880e, 0x27880f) AM_RAM AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels + AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors + AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r) // Inputs AM_RANGE(0x278882, 0x278883) AM_READ_PORT("IN0") // - AM_RANGE(0x278836, 0x278837) AM_WRITE(watchdog_reset16_w) // Watchdog + AM_RANGE(0x278836, 0x278837) AM_WRITE(watchdog_reset16_w) // Watchdog AM_RANGE(0x278840, 0x27884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0x278850, 0x27885b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs - AM_RANGE(0x278870, 0x278871) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_SHARE("input_sel") // Inputs - AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0x278850, 0x27885b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs + AM_RANGE(0x278870, 0x278871) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_SHARE("input_sel") // Inputs + AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? 5 AM_RANGE(0x500000, 0x500001) AM_WRITE(gakusai_oki_bank_lo_w) // Sound AM_RANGE(0x600000, 0x600003) AM_DEVWRITE8_LEGACY("ymsnd", ym2413_w, 0x00ff) - AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound + AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound AM_RANGE(0xc00000, 0xc00001) AM_READWRITE(gakusai_eeprom_r, gakusai_eeprom_w) // EEPROM AM_RANGE(0xd00000, 0xd00001) AM_WRITE(gakusai_oki_bank_hi_w) + AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) ADDRESS_MAP_END @@ -1264,36 +1274,37 @@ ADDRESS_MAP_END ***************************************************************************/ static ADDRESS_MAP_START( gakusai2_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM + AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM AM_RANGE(0x600000, 0x61ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 AM_RANGE(0x620000, 0x63ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 AM_RANGE(0x640000, 0x65ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 AM_RANGE(0x660000, 0x66ffff) AM_READ(metro_bankedrom_r) // Banked ROM - AM_RANGE(0x670000, 0x673fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x674000, 0x674fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x675000, 0x675fff) AM_RAM // Sprites? - AM_RANGE(0x678000, 0x6787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set - AM_RANGE(0x67880e, 0x67880f) AM_RAM AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0x678810, 0x67881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels - AM_RANGE(0x678820, 0x67882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors - AM_RANGE(0x678830, 0x678831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x678832, 0x678833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x678836, 0x678837) AM_WRITE(watchdog_reset16_w) // Watchdog + AM_RANGE(0x670000, 0x671fff) AM_RAM // ??? + AM_RANGE(0x672000, 0x673fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x674000, 0x674fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0x675000, 0x675fff) AM_RAM // Sprites? + AM_RANGE(0x678000, 0x6787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0x67880e, 0x67880f) AM_RAM AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0x678810, 0x67881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels + AM_RANGE(0x678820, 0x67882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors + AM_RANGE(0x678830, 0x678831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0x678832, 0x678833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0x678836, 0x678837) AM_WRITE(watchdog_reset16_w) // Watchdog AM_RANGE(0x678840, 0x67884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter AM_RANGE(0x678860, 0x67886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0x678880, 0x678881) AM_READ(gakusai_input_r) // Inputs + AM_RANGE(0x678880, 0x678881) AM_READ(gakusai_input_r) // Inputs AM_RANGE(0x678882, 0x678883) AM_READ_PORT("IN0") // - AM_RANGE(0x678850, 0x67885b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs - AM_RANGE(0x678870, 0x678871) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0x678888, 0x678889) AM_WRITEONLY AM_SHARE("input_sel") // Inputs - AM_RANGE(0x679700, 0x679713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0x678850, 0x67885b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs + AM_RANGE(0x678870, 0x678871) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0x678888, 0x678889) AM_WRITEONLY AM_SHARE("input_sel") // Inputs + AM_RANGE(0x679700, 0x679713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers AM_RANGE(0x800000, 0x800001) AM_WRITENOP // ? 5 AM_RANGE(0x900000, 0x900001) AM_WRITE(gakusai_oki_bank_lo_w) // Sound bank - AM_RANGE(0xa00000, 0xa00001) AM_WRITE(gakusai_oki_bank_hi_w) - AM_RANGE(0xb00000, 0xb00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound + AM_RANGE(0xa00000, 0xa00001) AM_WRITE(gakusai_oki_bank_hi_w) // + AM_RANGE(0xb00000, 0xb00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8_LEGACY("ymsnd", ym2413_w, 0x00ff) - AM_RANGE(0xe00000, 0xe00001) AM_READWRITE(gakusai_eeprom_r,gakusai_eeprom_w) // EEPROM + AM_RANGE(0xe00000, 0xe00001) AM_READWRITE(gakusai_eeprom_r,gakusai_eeprom_w) // EEPROM + AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) ADDRESS_MAP_END @@ -1339,35 +1350,36 @@ WRITE16_MEMBER(metro_state::dokyusp_eeprom_reset_w) } static ADDRESS_MAP_START( dokyusp_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM + AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM AM_RANGE(0x200000, 0x21ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 AM_RANGE(0x220000, 0x23ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 AM_RANGE(0x240000, 0x25ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r) // Banked ROM - AM_RANGE(0x270000, 0x273fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x274000, 0x274fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set - AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels - AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors - AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x278836, 0x278837) AM_WRITE(watchdog_reset16_w) // Watchdog + AM_RANGE(0x270000, 0x271fff) AM_RAM // ??? + AM_RANGE(0x272000, 0x273fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x274000, 0x274fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels + AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors + AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0x278836, 0x278837) AM_WRITE(watchdog_reset16_w) // Watchdog AM_RANGE(0x278840, 0x27884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0x278850, 0x27885b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs - AM_RANGE(0x278870, 0x278871) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r) // Inputs + AM_RANGE(0x278850, 0x27885b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs + AM_RANGE(0x278870, 0x278871) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r) // Inputs AM_RANGE(0x278882, 0x278883) AM_READ_PORT("IN0") // - AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_SHARE("input_sel") // Inputs - AM_RANGE(0x27880e, 0x27880f) AM_RAM AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_SHARE("input_sel") // + AM_RANGE(0x27880e, 0x27880f) AM_RAM AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? 5 AM_RANGE(0x500000, 0x500001) AM_WRITE(gakusai_oki_bank_lo_w) // Sound AM_RANGE(0x600000, 0x600003) AM_DEVWRITE8_LEGACY("ymsnd", ym2413_w, 0x00ff) - AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound - AM_RANGE(0xc00000, 0xc00001) AM_WRITE(dokyusp_eeprom_reset_w) // EEPROM + AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound + AM_RANGE(0xc00000, 0xc00001) AM_WRITE(dokyusp_eeprom_reset_w) // EEPROM AM_RANGE(0xd00000, 0xd00001) AM_READWRITE(dokyusp_eeprom_r, dokyusp_eeprom_bit_w) // EEPROM + AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) ADDRESS_MAP_END @@ -1376,38 +1388,39 @@ ADDRESS_MAP_END ***************************************************************************/ static ADDRESS_MAP_START( dokyusei_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM + AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r) // Banked ROM AM_RANGE(0x460000, 0x46ffff) AM_WRITENOP // DSW Selection - AM_RANGE(0x470000, 0x473fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set - AM_RANGE(0x47880e, 0x47880f) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0x478810, 0x47881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels - AM_RANGE(0x478820, 0x47882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors - AM_RANGE(0x478830, 0x478831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable -// AM_RANGE(0x478832, 0x478833) AM_READ(metro_irq_cause_r) // IRQ Cause - AM_RANGE(0x478832, 0x478833) AM_WRITE(metro_irq_cause_w) // IRQ Acknowledge + AM_RANGE(0x470000, 0x471fff) AM_RAM // ??? + AM_RANGE(0x472000, 0x473fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0x47880e, 0x47880f) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0x478810, 0x47881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels + AM_RANGE(0x478820, 0x47882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors + AM_RANGE(0x478830, 0x478831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable +// AM_RANGE(0x478832, 0x478833) AM_READ(metro_irq_cause_r) // IRQ Cause + AM_RANGE(0x478832, 0x478833) AM_WRITE(metro_irq_cause_w) // IRQ Acknowledge AM_RANGE(0x478836, 0x478837) AM_WRITENOP // ? watchdog ? AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter - AM_RANGE(0x478850, 0x47885b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs + AM_RANGE(0x478850, 0x47885b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0x478870, 0x478871) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers - AM_RANGE(0x478888, 0x478889) AM_WRITEONLY AM_SHARE("input_sel") // Inputs - AM_RANGE(0x478880, 0x478881) AM_READ(gakusai_input_r) // Inputs + AM_RANGE(0x478870, 0x478871) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0x478888, 0x478889) AM_WRITEONLY AM_SHARE("input_sel") // Inputs + AM_RANGE(0x478880, 0x478881) AM_READ(gakusai_input_r) // Inputs AM_RANGE(0x478882, 0x478883) AM_READ_PORT("IN0") // AM_RANGE(0x478884, 0x478885) AM_READ_PORT("DSW0") // 2 x DSW AM_RANGE(0x478886, 0x478887) AM_READ_PORT("DSW1") // AM_RANGE(0x800000, 0x800001) AM_WRITE(gakusai_oki_bank_hi_w) // Samples Bank? AM_RANGE(0x900000, 0x900001) AM_WRITENOP // ? 4 AM_RANGE(0xa00000, 0xa00001) AM_WRITE(gakusai_oki_bank_lo_w) // Samples Bank - AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8_LEGACY("ymsnd", ym2413_w, 0x00ff) // - AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound + AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8_LEGACY("ymsnd", ym2413_w, 0x00ff) // + AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // Sound + AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) ADDRESS_MAP_END @@ -1416,34 +1429,35 @@ ADDRESS_MAP_END ***************************************************************************/ static ADDRESS_MAP_START( pangpoms_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0xc00000, 0xc0ffff) AM_RAM // RAM + AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r) // Banked ROM - AM_RANGE(0x470000, 0x473fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set - AM_RANGE(0x478800, 0x478813) AM_RAM AM_SHARE("videoregs") // Video Registers + AM_RANGE(0x470000, 0x471fff) AM_RAM // ??? + AM_RANGE(0x472000, 0x473fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0x478800, 0x478813) AM_RAM AM_SHARE("videoregs") // Video Registers AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0x478870, 0x47887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs + AM_RANGE(0x478870, 0x47887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs AM_RANGE(0x478880, 0x478881) AM_WRITENOP // ? increasing AM_RANGE(0x478890, 0x478891) AM_WRITENOP // ? increasing - AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x4788a4, 0x4788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x4788a8, 0x4788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU - AM_RANGE(0x4788aa, 0x4788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0x4788ac, 0x4788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0x800000, 0x800001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w) // From / To Sound CPU - AM_RANGE(0x800002, 0x800003) AM_READNOP AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout + AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0x4788a4, 0x4788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0x4788a8, 0x4788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU + AM_RANGE(0x4788aa, 0x4788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0x4788ac, 0x4788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0x800000, 0x800001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w) // From / To Sound CPU + AM_RANGE(0x800002, 0x800003) AM_READNOP AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout AM_RANGE(0x800004, 0x800005) AM_READ_PORT("IN0") // Inputs AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN1") // AM_RANGE(0x800008, 0x800009) AM_READ_PORT("IN2") // AM_RANGE(0x80000a, 0x80000b) AM_READ_PORT("DSW0") // AM_RANGE(0x80000c, 0x80000d) AM_READ_PORT("DSW1") // AM_RANGE(0x80000e, 0x80000f) AM_READ_PORT("IN3") // + AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) ADDRESS_MAP_END @@ -1452,31 +1466,32 @@ ADDRESS_MAP_END ***************************************************************************/ static ADDRESS_MAP_START( poitto_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM // RAM + AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM + AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) + AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU + AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1") // + AM_RANGE(0x800004, 0x800005) AM_READ_PORT("DSW0") // + AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN2") // + AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout AM_RANGE(0xc00000, 0xc1ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 AM_RANGE(0xc20000, 0xc3ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 AM_RANGE(0xc40000, 0xc5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r) // Banked ROM - AM_RANGE(0xc70000, 0xc73fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set - AM_RANGE(0xc78800, 0xc78813) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0xc70000, 0xc71fff) AM_RAM // ??? + AM_RANGE(0xc72000, 0xc73fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0xc78800, 0xc78813) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers AM_RANGE(0xc78840, 0xc7884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter AM_RANGE(0xc78860, 0xc7886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0xc78870, 0xc7887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs + AM_RANGE(0xc78870, 0xc7887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs AM_RANGE(0xc78880, 0xc78881) AM_WRITENOP // ? increasing AM_RANGE(0xc78890, 0xc78891) AM_WRITENOP // ? increasing - AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU - AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU - AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1") - AM_RANGE(0x800004, 0x800005) AM_READ_PORT("DSW0") - AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN2") - AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout + AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU + AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control ADDRESS_MAP_END @@ -1485,34 +1500,35 @@ ADDRESS_MAP_END ***************************************************************************/ static ADDRESS_MAP_START( skyalert_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0xc00000, 0xc0ffff) AM_RAM // RAM - AM_RANGE(0x800000, 0x81ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 - AM_RANGE(0x820000, 0x83ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 - AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 - AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM - AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set - AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers - AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter - AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll - AM_RANGE(0x878880, 0x878881) AM_WRITENOP // ? increasing - AM_RANGE(0x878890, 0x878891) AM_WRITENOP // ? increasing - AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU - AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w) // From / To Sound CPU - AM_RANGE(0x400002, 0x400003) AM_READNOP AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout + AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM + AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w) // From / To Sound CPU + AM_RANGE(0x400002, 0x400003) AM_READNOP AM_WRITE(metro_coin_lockout_1word_w) // Coin Lockout AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN0") // Inputs AM_RANGE(0x400006, 0x400007) AM_READ_PORT("IN1") // AM_RANGE(0x400008, 0x400009) AM_READ_PORT("IN2") // AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW0") // AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("DSW1") // AM_RANGE(0x40000e, 0x40000f) AM_READ_PORT("IN3") // + AM_RANGE(0x800000, 0x81ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 + AM_RANGE(0x820000, 0x83ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 + AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 + AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r) // Banked ROM + AM_RANGE(0x870000, 0x871fff) AM_RAM // ??? + AM_RANGE(0x872000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter + AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window + AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll + AM_RANGE(0x878880, 0x878881) AM_WRITENOP // ? increasing + AM_RANGE(0x878890, 0x878891) AM_WRITENOP // ? increasing + AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU + AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) ADDRESS_MAP_END @@ -1521,31 +1537,32 @@ ADDRESS_MAP_END ***************************************************************************/ static ADDRESS_MAP_START( pururun_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x800000, 0x80ffff) AM_RAM // RAM + AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM + AM_RANGE(0x400000, 0x400001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU + AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN1") // + AM_RANGE(0x400004, 0x400005) AM_READ_PORT("DSW0") // + AM_RANGE(0x400006, 0x400007) AM_READ_PORT("IN2") // + AM_RANGE(0x400002, 0x400009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout + AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) AM_RANGE(0xc00000, 0xc1ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 AM_RANGE(0xc20000, 0xc3ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 AM_RANGE(0xc40000, 0xc5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r) // Banked ROM - AM_RANGE(0xc70000, 0xc73fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0xc70000, 0xc71fff) AM_RAM // ??? + AM_RANGE(0xc72000, 0xc73fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set AM_RANGE(0xc78840, 0xc7884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter AM_RANGE(0xc78860, 0xc7886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0xc78870, 0xc7887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs + AM_RANGE(0xc78870, 0xc7887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs AM_RANGE(0xc78880, 0xc78881) AM_WRITENOP // ? increasing AM_RANGE(0xc78890, 0xc78891) AM_WRITENOP // ? increasing - AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU - AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0xc79700, 0xc79713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN1") - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("DSW0") - AM_RANGE(0x400006, 0x400007) AM_READ_PORT("IN2") - AM_RANGE(0x400002, 0x400009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout + AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU + AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0xc79700, 0xc79713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers ADDRESS_MAP_END @@ -1554,33 +1571,32 @@ ADDRESS_MAP_END ***************************************************************************/ static ADDRESS_MAP_START( toride2g_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x400000, 0x4cffff) AM_RAM // RAM (4xc000-4xffff mirrored?) + AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM + AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) + AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // Watchdog (R)? / To Sound CPU (W) + AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1") // + AM_RANGE(0x800004, 0x800005) AM_READ_PORT("DSW0") // + AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN2") // + AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout AM_RANGE(0xc00000, 0xc1ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 AM_RANGE(0xc20000, 0xc3ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 AM_RANGE(0xc40000, 0xc5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r) // Banked ROM - AM_RANGE(0xc70000, 0xc73fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0xc70000, 0xc71fff) AM_RAM // ??? + AM_RANGE(0xc72000, 0xc73fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set AM_RANGE(0xc78840, 0xc7884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter AM_RANGE(0xc78860, 0xc7886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0xc78870, 0xc7887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs + AM_RANGE(0xc78870, 0xc7887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs AM_RANGE(0xc78880, 0xc78881) AM_WRITENOP // ? increasing AM_RANGE(0xc78890, 0xc78891) AM_WRITENOP // ? increasing - AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU - AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0xc79700, 0xc79713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers - - AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU - AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1") - AM_RANGE(0x800004, 0x800005) AM_READ_PORT("DSW0") - AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN2") - AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout - + AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU + AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0xc79700, 0xc79713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers ADDRESS_MAP_END @@ -1590,7 +1606,6 @@ ADDRESS_MAP_END WRITE16_MEMBER(metro_state::blzntrnd_sound_w) { - soundlatch_byte_w(space, offset, data >> 8); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } @@ -1629,35 +1644,36 @@ static ADDRESS_MAP_START( blzntrnd_sound_io_map, AS_IO, 8, metro_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( blzntrnd_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM - AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM -// AM_RANGE(0x300000, 0x300001) AM_READNOP // Sound + AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM AM_RANGE(0x200000, 0x21ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 AM_RANGE(0x220000, 0x23ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 AM_RANGE(0x240000, 0x25ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r) // Banked ROM AM_RANGE(0x260000, 0x26ffff) AM_WRITENOP // ?????? - AM_RANGE(0x270000, 0x273fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x274000, 0x274fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0x270000, 0x271fff) AM_RAM // ??? + AM_RANGE(0x272000, 0x273fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x274000, 0x274fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0x278870, 0x27887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll + AM_RANGE(0x278870, 0x27887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll AM_RANGE(0x278890, 0x278891) AM_WRITENOP // ? increasing - AM_RANGE(0x2788a2, 0x2788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x2788a4, 0x2788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x2788aa, 0x2788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0x2788ac, 0x2788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0x2788a2, 0x2788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0x2788a4, 0x2788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0x2788aa, 0x2788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0x2788ac, 0x2788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers +// AM_RANGE(0x300000, 0x300001) AM_READNOP // Sound AM_RANGE(0x400000, 0x43ffff) AM_RAM_WRITE(metro_k053936_w) AM_SHARE("k053936_ram") // 053936 - AM_RANGE(0x500000, 0x500fff) AM_DEVWRITE_LEGACY("k053936", k053936_linectrl_w) // 053936 line control - AM_RANGE(0x600000, 0x60001f) AM_DEVWRITE_LEGACY("k053936", k053936_ctrl_w) // 053936 control + AM_RANGE(0x500000, 0x500fff) AM_DEVWRITE_LEGACY("k053936", k053936_linectrl_w) // 053936 line control + AM_RANGE(0x600000, 0x60001f) AM_DEVWRITE_LEGACY("k053936", k053936_ctrl_w) // 053936 control - AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("DSW0") AM_WRITENOP // Inputs - AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("DSW1") AM_WRITE(blzntrnd_sound_w) // + AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("DSW0") AM_WRITENOP // Inputs + AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("DSW1") AM_WRITE(blzntrnd_sound_w) // AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("IN0") // AM_RANGE(0xe00006, 0xe00007) AM_READ_PORT("IN1") // AM_RANGE(0xe00008, 0xe00009) AM_READ_PORT("IN2") // + AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) ADDRESS_MAP_END @@ -1672,37 +1688,38 @@ WRITE16_MEMBER(metro_state::mouja_sound_rombank_w) } static ADDRESS_MAP_START( mouja_map, AS_PROGRAM, 16, metro_state ) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM + AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 - AM_RANGE(0x470000, 0x473fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette - AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram") // Sprites - AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set - AM_RANGE(0x47880e, 0x47880f) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control - AM_RANGE(0x478810, 0x47881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels - AM_RANGE(0x478820, 0x47882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors - AM_RANGE(0x478830, 0x478831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x478832, 0x478833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge - AM_RANGE(0x478834, 0x478835) AM_WRITE(mouja_irq_timer_ctrl_w) // IRQ set timer count - AM_RANGE(0x478836, 0x478837) AM_WRITE(watchdog_reset16_w) // Watchdog - AM_RANGE(0x478850, 0x47885b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs + AM_RANGE(0x470000, 0x471fff) AM_RAM // ??? + AM_RANGE(0x472000, 0x473fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram") // Sprites + AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0x47880e, 0x47880f) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0x478810, 0x47881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels + AM_RANGE(0x478820, 0x47882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors + AM_RANGE(0x478830, 0x478831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable + AM_RANGE(0x478832, 0x478833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge + AM_RANGE(0x478834, 0x478835) AM_WRITE(mouja_irq_timer_ctrl_w) // IRQ set timer count + AM_RANGE(0x478836, 0x478837) AM_WRITE(watchdog_reset16_w) // Watchdog + AM_RANGE(0x478850, 0x47885b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window AM_RANGE(0x478880, 0x478881) AM_READ_PORT("IN0") // Inputs AM_RANGE(0x478882, 0x478883) AM_READ_PORT("IN1") // AM_RANGE(0x478884, 0x478885) AM_READ_PORT("DSW0") // AM_RANGE(0x478886, 0x478887) AM_READ_PORT("IN2") // AM_RANGE(0x478888, 0x478889) AM_WRITENOP // ?? - AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers AM_RANGE(0x800000, 0x800001) AM_WRITE(mouja_sound_rombank_w) AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8_LEGACY("ymsnd", ym2413_w, 0x00ff) AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xffff) + AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) #if 0 AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r) // Banked ROM AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter - AM_RANGE(0x47883a, 0x47883b) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout + AM_RANGE(0x47883a, 0x47883b) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w) // Coin Lockout #endif ADDRESS_MAP_END @@ -1762,24 +1779,25 @@ static ADDRESS_MAP_START( puzzlet_map, AS_PROGRAM, 16, metro_state ) AM_RANGE(0x760000, 0x76ffff) AM_READ(metro_bankedrom_r) // Banked ROM + AM_RANGE(0x770000, 0x771fff) AM_RAM // ??? // AM_RANGE(0x772000, 0x773fff) AM_RAM - AM_RANGE(0x770000, 0x773fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette + AM_RANGE(0x772000, 0x773fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram") // Palette AM_RANGE(0x775000, 0x775fff) AM_RAM_WRITE(vram_0_clr_w) AM_RANGE(0x776000, 0x776fff) AM_RAM_WRITE(vram_1_clr_w) AM_RANGE(0x777000, 0x777fff) AM_RAM_WRITE(vram_2_clr_w) - AM_RANGE(0x778000, 0x7787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set - AM_RANGE(0x778800, 0x778813) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers + AM_RANGE(0x778000, 0x7787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set + AM_RANGE(0x778800, 0x778813) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers AM_RANGE(0x778840, 0x77884f) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter AM_RANGE(0x778860, 0x77886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window - AM_RANGE(0x778870, 0x77887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll + AM_RANGE(0x778870, 0x77887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll AM_RANGE(0x778890, 0x778891) AM_WRITENOP // ? increasing AM_RANGE(0x7788a2, 0x7788a3) AM_WRITE(metro_irq_cause_w) // IRQ Cause AM_RANGE(0x7788a4, 0x7788a5) AM_WRITE(puzzlet_irq_enable_w) AM_SHARE("irq_enable") // IRQ Enable - AM_RANGE(0x7788aa, 0x7788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank - AM_RANGE(0x7788ac, 0x7788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control + AM_RANGE(0x7788aa, 0x7788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank + AM_RANGE(0x7788ac, 0x7788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control AM_RANGE(0x7f2000, 0x7f3fff) AM_RAM @@ -2570,7 +2588,7 @@ static INPUT_PORTS_START( ladykill ) COINS PORT_START("DSW0") // $400006 - PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1,2") + PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1,2") PORT_DIPSETTING( 0x0001, "1" ) PORT_DIPSETTING( 0x0000, "2" ) PORT_DIPSETTING( 0x0003, "3" ) @@ -2580,10 +2598,12 @@ static INPUT_PORTS_START( ladykill ) PORT_DIPSETTING( 0x000c, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x0004, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x0000, DEF_STR( Very_Hard ) ) - PORT_DIPNAME( 0x0010, 0x0000, "Nudity" ) PORT_DIPLOCATION("SW2:5") /* Manual calls this "Sexy Version" ;-) */ + PORT_DIPNAME( 0x0010, 0x0000, "Nudity" ) PORT_DIPLOCATION("SW2:5") // Manual calls this "Sexy Version" PORT_DIPSETTING( 0x0010, "Partial" ) PORT_DIPSETTING( 0x0000, "Full" ) - PORT_SERVICE_DIPLOC( 0x0020, IP_ACTIVE_LOW, "SW2:6" ) /* Manual states "Don't Change" */ + PORT_DIPNAME( 0x0020, 0x0020, "Service Mode / Free Play" ) PORT_DIPLOCATION("SW2:6") // Keep Start2 pressed during boot - Manual states "Don't Change" + PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:7") PORT_DIPSETTING( 0x0000, DEF_STR( No ) ) PORT_DIPSETTING( 0x0040, DEF_STR( Yes ) ) @@ -3103,10 +3123,10 @@ static INPUT_PORTS_START( 3kokushi ) PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:5") PORT_DIPSETTING( 0x0000, DEF_STR( No ) ) PORT_DIPSETTING( 0x1000, DEF_STR( Yes ) ) - PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW2:6") + PORT_DIPNAME( 0x2000, 0x2000, "Service Mode / Free Play" ) PORT_DIPLOCATION("SW2:6") // Keep Start2 pressed during boot PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0xc000, 0xc000, "Helps" ) PORT_DIPLOCATION("SW2:7,8") + PORT_DIPNAME( 0xc000, 0xc000, "Helps" ) PORT_DIPLOCATION("SW2:7,8") PORT_DIPSETTING( 0x0000, "1" ) PORT_DIPSETTING( 0x4000, "2" ) PORT_DIPSETTING( 0xc000, "3" ) @@ -3330,31 +3350,31 @@ static const gfx_layout layout_053936_16 = }; static GFXDECODE_START( i4100 ) - GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4, 0x0, 0x200 ) // [0] 4 Bit Tiles + GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4, 0x0, 0x100 ) // [0] 4 Bit Tiles GFXDECODE_END static GFXDECODE_START( i4220 ) - GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4, 0x0, 0x200 ) // [0] 4 Bit Tiles - GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x8h, 0x0, 0x20 ) // [1] 8 Bit Tiles + GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4, 0x0, 0x100 ) // [0] 4 Bit Tiles + GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x8h, 0x0, 0x10 ) // [1] 8 Bit Tiles GFXDECODE_END static GFXDECODE_START( blzntrnd ) - GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4, 0x0, 0x200 ) // [0] 4 Bit Tiles - GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x8h, 0x0, 0x20 ) // [1] 8 Bit Tiles - GFXDECODE_ENTRY( "gfx3", 0, layout_053936, 0x0, 0x20 ) // [2] 053936 Tiles + GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4, 0x0, 0x100 ) // [0] 4 Bit Tiles + GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x8h, 0x0, 0x10 ) // [1] 8 Bit Tiles + GFXDECODE_ENTRY( "gfx3", 0, layout_053936, 0x0, 0x10 ) // [2] 053936 Tiles GFXDECODE_END static GFXDECODE_START( gstrik2 ) - GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4, 0x0, 0x200 ) // [0] 4 Bit Tiles - GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x8h, 0x0, 0x20 ) // [1] 8 Bit Tiles - GFXDECODE_ENTRY( "gfx3", 0, layout_053936_16,0x0, 0x20 ) // [2] 053936 Tiles + GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4, 0x0, 0x100 ) // [0] 4 Bit Tiles + GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x8h, 0x0, 0x10 ) // [1] 8 Bit Tiles + GFXDECODE_ENTRY( "gfx3", 0, layout_053936_16,0x0, 0x10 ) // [2] 053936 Tiles GFXDECODE_END static GFXDECODE_START( i4300 ) - GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4, 0x0, 0x200 ) // [0] 4 Bit Tiles - GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x8h, 0x0, 0x20 ) // [1] 8 Bit Tiles - GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x4q, 0x0, 0x200 ) // [2] 4 Bit Tiles 16x16 - GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x8o, 0x0, 0x200 ) // [2] 8 Bit Tiles 16x16 + GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4, 0x0, 0x100 ) // [0] 4 Bit Tiles + GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x8h, 0x0, 0x10 ) // [1] 8 Bit Tiles + GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x4q, 0x0, 0x100 ) // [2] 4 Bit Tiles 16x16 + GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x8o, 0x0, 0x100 ) // [2] 8 Bit Tiles 16x16 GFXDECODE_END @@ -3368,7 +3388,6 @@ GFXDECODE_END MACHINE_START_MEMBER(metro_state,metro) { - save_item(NAME(m_blitter_bit)); save_item(NAME(m_irq_line)); save_item(NAME(m_requested_int)); @@ -3386,7 +3405,6 @@ MACHINE_START_MEMBER(metro_state,metro) MACHINE_RESET_MEMBER(metro_state,metro) { - if (m_irq_line == -1) machine().device("maincpu")->execute().set_irq_acknowledge_callback(metro_irq_callback); } @@ -3418,9 +3436,8 @@ static MACHINE_CONFIG_START( balcube, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(i4220) - MCFG_PALETTE_LENGTH(8192) - - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220) + MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_offset) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -3452,9 +3469,8 @@ static MACHINE_CONFIG_START( daitoa, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(i4220) - MCFG_PALETTE_LENGTH(8192) - - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220) + MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_offset) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -3486,9 +3502,8 @@ static MACHINE_CONFIG_START( msgogo, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(i4220) - MCFG_PALETTE_LENGTH(8192) - - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220) + MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_offset) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -3520,9 +3535,8 @@ static MACHINE_CONFIG_START( bangball, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(i4220) - MCFG_PALETTE_LENGTH(8192) - - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220) + MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_offset) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -3554,9 +3568,8 @@ static MACHINE_CONFIG_START( batlbubl, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(i4220) - MCFG_PALETTE_LENGTH(8192) - - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220) + MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_offset) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -3592,9 +3605,8 @@ static MACHINE_CONFIG_START( daitorid, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(i4220) - MCFG_PALETTE_LENGTH(8192) - - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220) + MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_offset) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -3634,10 +3646,9 @@ static MACHINE_CONFIG_START( dharma, metro_state ) MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) - MCFG_GFXDECODE(i4100) - MCFG_PALETTE_LENGTH(8192) - - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100) + MCFG_GFXDECODE(i4220) + MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -3677,9 +3688,8 @@ static MACHINE_CONFIG_START( karatour, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(i4100) - MCFG_PALETTE_LENGTH(8192) - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -3719,9 +3729,8 @@ static MACHINE_CONFIG_START( 3kokushi, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(i4220) - MCFG_PALETTE_LENGTH(8192) - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -3761,9 +3770,8 @@ static MACHINE_CONFIG_START( lastfort, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(i4100) - MCFG_PALETTE_LENGTH(8192) - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -3802,9 +3810,8 @@ static MACHINE_CONFIG_START( lastforg, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(i4100) - MCFG_PALETTE_LENGTH(8192) - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -3837,9 +3844,8 @@ static MACHINE_CONFIG_START( dokyusei, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(i4300) - MCFG_PALETTE_LENGTH(8192) - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4300) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -3873,9 +3879,8 @@ static MACHINE_CONFIG_START( dokyusp, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(i4300) - MCFG_PALETTE_LENGTH(8192) - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4300) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -3910,9 +3915,8 @@ static MACHINE_CONFIG_START( gakusai, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(i4300) - MCFG_PALETTE_LENGTH(8192) - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4300) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -3947,9 +3951,8 @@ static MACHINE_CONFIG_START( gakusai2, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(i4300) - MCFG_PALETTE_LENGTH(8192) - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4300) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -3989,9 +3992,8 @@ static MACHINE_CONFIG_START( pangpoms, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(i4100) - MCFG_PALETTE_LENGTH(8192) - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -4031,9 +4033,8 @@ static MACHINE_CONFIG_START( poitto, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(i4100) - MCFG_PALETTE_LENGTH(8192) - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -4072,10 +4073,9 @@ static MACHINE_CONFIG_START( pururun, metro_state ) MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) - MCFG_GFXDECODE(i4100) - MCFG_PALETTE_LENGTH(8192) - - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100) + MCFG_GFXDECODE(i4220) + MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -4116,9 +4116,8 @@ static MACHINE_CONFIG_START( skyalert, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(i4100) - MCFG_PALETTE_LENGTH(8192) - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -4157,10 +4156,9 @@ static MACHINE_CONFIG_START( toride2g, metro_state ) MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) - MCFG_GFXDECODE(i4100) - MCFG_PALETTE_LENGTH(8192) - - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100) + MCFG_GFXDECODE(i4220) + MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -4194,9 +4192,8 @@ static MACHINE_CONFIG_START( mouja, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(i4300) - MCFG_PALETTE_LENGTH(8192) - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4300) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -4239,9 +4236,8 @@ static MACHINE_CONFIG_START( blzntrnd, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(blzntrnd) - MCFG_PALETTE_LENGTH(8192) - MCFG_VIDEO_START_OVERRIDE(metro_state,blzntrnd) + MCFG_PALETTE_LENGTH(0x1000) MCFG_K053936_ADD("k053936", blzntrnd_k053936_intf) @@ -4287,9 +4283,8 @@ static MACHINE_CONFIG_START( gstrik2, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(gstrik2) - MCFG_PALETTE_LENGTH(8192) - MCFG_VIDEO_START_OVERRIDE(metro_state,gstrik2) + MCFG_PALETTE_LENGTH(0x1000) MCFG_K053936_ADD("k053936", gstrik2_k053936_intf) @@ -4325,9 +4320,8 @@ static MACHINE_CONFIG_START( puzzlet, metro_state ) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) MCFG_GFXDECODE(i4300) - MCFG_PALETTE_LENGTH(8192) - MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4300) + MCFG_PALETTE_LENGTH(0x1000) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") @@ -5196,7 +5190,7 @@ ROM_END /*************************************************************************** -Mahjong Doukyuhsei (JPN Ver.) +Mahjong Doukyuusei (JPN Ver.) (c)1995 make software/elf/media trading corp. @@ -6023,7 +6017,6 @@ DRIVER_INIT_MEMBER(metro_state,daitorid) /* Unscramble the GFX ROMs */ DRIVER_INIT_MEMBER(metro_state,balcube) { - const size_t len = memregion("gfx1")->bytes(); UINT8 *src = memregion("gfx1")->base(); UINT8 *end = src + len; @@ -6107,10 +6100,10 @@ GAME( 1992, pangpomsm, pangpoms, pangpoms, pangpoms, metro_state, metro, ROT0 GAME( 1992, skyalert, 0, skyalert, skyalert, metro_state, metro, ROT270, "Metro", "Sky Alert", GAME_SUPPORTS_SAVE ) GAME( 1993, ladykill, 0, karatour, ladykill, metro_state, karatour, ROT90, "Yanyaka (Mitchell license)", "Lady Killer", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) GAME( 1993, moegonta, ladykill, karatour, moegonta, metro_state, karatour, ROT90, "Yanyaka", "Moeyo Gonta!! (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) -GAME( 1993, poitto, 0, poitto, poitto, metro_state, metro, ROT0, "Metro / Able Corp.", "Poitto!", GAME_SUPPORTS_SAVE ) +GAME( 1993, poitto, 0, poitto, poitto, metro_state, metro, ROT0, "Metro / Able Corp.", "Poitto!", GAME_SUPPORTS_SAVE ) GAME( 1994, blzntrnd, 0, blzntrnd, blzntrnd, metro_state, blzntrnd, ROT0, "Human Amusement", "Blazing Tornado", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) -GAME( 1994, dharma, 0, dharma, dharma, metro_state, metro, ROT0, "Metro", "Dharma Doujou", GAME_SUPPORTS_SAVE ) -GAME( 1994, dharmak, dharma, dharma, dharma, metro_state, dharmak, ROT0, "Metro", "Dharma Doujou (Korea)", GAME_SUPPORTS_SAVE ) +GAME( 1994, dharma, 0, dharma, dharma, metro_state, metro, ROT0, "Metro", "Dharma Doujou", GAME_SUPPORTS_SAVE ) +GAME( 1994, dharmak, dharma, dharma, dharma, metro_state, dharmak, ROT0, "Metro", "Dharma Doujou (Korea)", GAME_SUPPORTS_SAVE ) GAME( 1994, lastfort, 0, lastfort, lastfort, metro_state, metro, ROT0, "Metro", "Last Fortress - Toride", GAME_SUPPORTS_SAVE ) GAME( 1994, lastforte, lastfort, lastfort, lastfero, metro_state, metro, ROT0, "Metro", "Last Fortress - Toride (Erotic, Rev C)", GAME_SUPPORTS_SAVE ) GAME( 1994, lastfortea,lastfort, lastfort, lastfero, metro_state, metro, ROT0, "Metro", "Last Fortress - Toride (Erotic, Rev A)", GAME_SUPPORTS_SAVE ) @@ -6120,21 +6113,21 @@ GAME( 1994, toride2g, 0, toride2g, toride2g, metro_state, metro, ROT0 GAME( 1994, toride2gg, toride2g, toride2g, toride2g, metro_state, metro, ROT0, "Metro", "Toride II Adauchi Gaiden (German)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) GAME( 1994, toride2gk, toride2g, toride2g, toride2g, metro_state, metro, ROT0, "Metro", "Toride II Bok Su Oi Jeon Adauchi Gaiden (Korea)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) GAME( 1994, toride2j, toride2g, toride2g, toride2g, metro_state, metro, ROT0, "Metro", "Toride II (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) -GAME( 1994, gunmast, 0, pururun, gunmast, metro_state, daitorid, ROT0, "Metro", "Gun Master", GAME_SUPPORTS_SAVE ) +GAME( 1994, gunmast, 0, pururun, gunmast, metro_state, daitorid, ROT0, "Metro", "Gun Master", GAME_SUPPORTS_SAVE ) GAME( 1995, daitorid, 0, daitorid, daitorid, metro_state, daitorid, ROT0, "Metro", "Daitoride", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) GAME( 1996, daitorida, daitorid, daitoa, daitorid, metro_state, balcube, ROT0, "Metro", "Daitoride (YMF278B version)", GAME_SUPPORTS_SAVE ) GAME( 1995, dokyusei, 0, dokyusei, dokyusei, metro_state, gakusai, ROT0, "Make Software / Elf / Media Trading", "Mahjong Doukyuusei", GAME_SUPPORTS_SAVE ) -GAME( 1995, dokyusp, 0, dokyusp, gakusai, metro_state, gakusai, ROT0, "Make Software / Elf / Media Trading", "Mahjong Doukyuusei Special", GAME_SUPPORTS_SAVE ) -GAME( 1995, msgogo, 0, msgogo, msgogo, metro_state, balcube, ROT0, "Metro", "Mouse Shooter GoGo", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) -GAME( 1995, pururun, 0, pururun, pururun, metro_state, daitorid, ROT0, "Metro / Banpresto", "Pururun", GAME_SUPPORTS_SAVE ) -GAME( 1995, puzzli, 0, daitorid, puzzli, metro_state, daitorid, ROT0, "Metro / Banpresto", "Puzzli", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) +GAME( 1995, dokyusp, 0, dokyusp, gakusai, metro_state, gakusai, ROT0, "Make Software / Elf / Media Trading", "Mahjong Doukyuusei Special", GAME_SUPPORTS_SAVE ) +GAME( 1995, msgogo, 0, msgogo, msgogo, metro_state, balcube, ROT0, "Metro", "Mouse Shooter GoGo", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) +GAME( 1995, pururun, 0, pururun, pururun, metro_state, daitorid, ROT0, "Metro / Banpresto", "Pururun", GAME_SUPPORTS_SAVE ) +GAME( 1995, puzzli, 0, daitorid, puzzli, metro_state, daitorid, ROT0, "Metro / Banpresto", "Puzzli", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) GAME( 1996, 3kokushi, 0, 3kokushi, 3kokushi, metro_state, karatour, ROT0, "Mitchell", "Sankokushi (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) -GAME( 1996, balcube, 0, balcube, balcube, metro_state, balcube, ROT0, "Metro", "Bal Cube", GAME_SUPPORTS_SAVE ) +GAME( 1996, balcube, 0, balcube, balcube, metro_state, balcube, ROT0, "Metro", "Bal Cube", GAME_SUPPORTS_SAVE ) GAME( 1996, bangball, 0, bangball, bangball, metro_state, balcube, ROT0, "Banpresto / Kunihiko Tashiro+Goodhouse", "Bang Bang Ball (v1.05)", GAME_SUPPORTS_SAVE ) -GAME( 1996, gstrik2, 0, gstrik2, gstrik2, metro_state, blzntrnd, ROT0, "Human Amusement", "Grand Striker 2 (Europe and Oceania)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) -GAME( 1996, gstrik2j, gstrik2, gstrik2, gstrik2, metro_state, blzntrnd, ROT0, "Human Amusement", "Grand Striker 2 (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // priority between rounds +GAME( 1996, gstrik2, 0, gstrik2, gstrik2, metro_state, blzntrnd, ROT0, "Human Amusement", "Grand Striker 2 (Europe and Oceania)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) +GAME( 1996, gstrik2j, gstrik2, gstrik2, gstrik2, metro_state, blzntrnd, ROT0, "Human Amusement", "Grand Striker 2 (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // priority between rounds GAME( 1999, batlbubl, bangball, batlbubl, batlbubl, metro_state, balcube, ROT0, "Banpresto (Limenko license?)", "Battle Bubble (v2.00)", GAME_SUPPORTS_SAVE ) // or bootleg? -GAME( 1996, mouja, 0, mouja, mouja, metro_state, mouja, ROT0, "Etona", "Mouja (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) -GAME( 1997, gakusai, 0, gakusai, gakusai, metro_state, gakusai, ROT0, "MakeSoft", "Mahjong Gakuensai (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) -GAME( 1998, gakusai2, 0, gakusai2, gakusai, metro_state, gakusai, ROT0, "MakeSoft", "Mahjong Gakuensai 2 (Japan)", GAME_SUPPORTS_SAVE ) -GAME( 2000, puzzlet, 0, puzzlet, puzzlet, metro_state, puzzlet, ROT0, "Unies Corporation", "Puzzlet (Japan)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 1996, mouja, 0, mouja, mouja, metro_state, mouja, ROT0, "Etona", "Mouja (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) +GAME( 1997, gakusai, 0, gakusai, gakusai, metro_state, gakusai, ROT0, "MakeSoft", "Mahjong Gakuensai (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) +GAME( 1998, gakusai2, 0, gakusai2, gakusai, metro_state, gakusai, ROT0, "MakeSoft", "Mahjong Gakuensai 2 (Japan)", GAME_SUPPORTS_SAVE ) +GAME( 2000, puzzlet, 0, puzzlet, puzzlet, metro_state, puzzlet, ROT0, "Unies Corporation", "Puzzlet (Japan)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/metro.h b/src/mame/includes/metro.h index bf8d9652f65..8491f52f3cb 100644 --- a/src/mame/includes/metro.h +++ b/src/mame/includes/metro.h @@ -156,8 +156,9 @@ public: TILEMAP_MAPPER_MEMBER(tilemap_scan_gstrik2); DECLARE_MACHINE_START(metro); DECLARE_MACHINE_RESET(metro); - DECLARE_VIDEO_START(metro_i4220); DECLARE_VIDEO_START(metro_i4100); + DECLARE_VIDEO_START(metro_i4220); + DECLARE_VIDEO_START(metro_i4220_offset); DECLARE_VIDEO_START(metro_i4300); DECLARE_VIDEO_START(blzntrnd); DECLARE_VIDEO_START(gstrik2); diff --git a/src/mame/video/metro.c b/src/mame/video/metro.c index 1675745d170..75e96a33a95 100644 --- a/src/mame/video/metro.c +++ b/src/mame/video/metro.c @@ -35,7 +35,7 @@ Note: if MAME_DEBUG is defined, pressing Z with: their color code. Tile code with their msbit set are different as they mean: - draw a tile filled with a single color (0-1ff) + draw a tile filled with a single color (0-fff) [ 512 Zooming Sprites ] @@ -62,7 +62,7 @@ TILE_GET_INFO_MEMBER(metro_state::metro_k053936_get_tile_info) SET_TILE_INFO_MEMBER( 2, code & 0x7fff, - 0x1e, + 0xe, 0); } @@ -73,7 +73,7 @@ TILE_GET_INFO_MEMBER(metro_state::metro_k053936_gstrik2_get_tile_info) SET_TILE_INFO_MEMBER( 2, (code & 0x7fff)>>2, - 0x1e, + 0xe, 0); } @@ -110,12 +110,12 @@ TILEMAP_MAPPER_MEMBER(metro_state::tilemap_scan_gstrik2) Offset: Bits: Value: 0.w fedc ---- ---- ---- - ---- ba98 7654 ---- Color Code + ---- ba98 7654 ---- Color Code* ---- ---- ---- 3210 Code High Bits 2.w Code Low Bits - +* 00-ff, but on later chips supporting it, xf means 256 color tile and palette x ***************************************************************************/ @@ -151,7 +151,7 @@ INLINE UINT8 get_tile_pix( running_machine &machine, UINT16 code, UINT8 x, UINT8 if (code & 0x8000) /* Special: draw a tile of a single color (i.e. not from the gfx ROMs) */ { - *pix = (code & 0x0fff)+0x1000; + *pix = code & 0x0fff; if ((*pix & 0xf) != 0xf) return 1; @@ -159,7 +159,7 @@ INLINE UINT8 get_tile_pix( running_machine &machine, UINT16 code, UINT8 x, UINT8 return 0; } - else if (((tile & 0x00f00000) == 0x00f00000) && (state->m_support_8bpp)) /* draw tile as 8bpp */ + else if (((tile & 0x00f00000) == 0x00f00000) && (state->m_support_8bpp)) /* draw tile as 8bpp (e.g. balcube bg) */ { gfx_element *gfx1 = machine.gfx[big?3:1]; UINT32 tile2 = big ? ((tile & 0xfffff) + 8*(code & 0xf)) : @@ -184,7 +184,7 @@ INLINE UINT8 get_tile_pix( running_machine &machine, UINT16 code, UINT8 x, UINT8 case 0x3: *pix = data[(((big?15:7)-y) * (big?16:8)) + ((big?15:7)-x)]; break; } - *pix |= ((((tile & 0x0f000000) >> 24) + 0x10)*0x100); + *pix |= ((tile & 0x0f000000) >> 24) * 0x100; if ((*pix & 0xff) != 0xff) return 1; @@ -208,7 +208,6 @@ INLINE UINT8 get_tile_pix( running_machine &machine, UINT16 code, UINT8 x, UINT8 return 0; } - switch (flipxy) { default: @@ -218,7 +217,7 @@ INLINE UINT8 get_tile_pix( running_machine &machine, UINT16 code, UINT8 x, UINT8 case 0x3: *pix = data[(((big?15:7)-y) * (big?16:8)) + ((big?15:7)-x)]; break; } - *pix |= (((((tile & 0x0ff00000) >> 20)) + 0x100)*0x10); + *pix |= (((tile & 0x0ff00000) >> 20)) * 0x10; if ((*pix & 0xf) != 0xf) return 1; @@ -246,7 +245,6 @@ WRITE16_MEMBER(metro_state::metro_vram_2_w){ metro_vram_w(machine(), offset, dat WRITE16_MEMBER(metro_state::metro_window_w) { COMBINE_DATA(&m_window[offset]); - } @@ -305,19 +303,13 @@ VIDEO_START_MEMBER(metro_state,metro_i4100) VIDEO_START_MEMBER(metro_state,metro_i4220) { - expand_gfx1(*this); + VIDEO_START_CALL_MEMBER(metro_i4100); m_support_8bpp = 1; - m_support_16x16 = 0; - m_has_zoom = 0; - - m_bg_tilemap_enable[0] = 1; - m_bg_tilemap_enable[1] = 1; - m_bg_tilemap_enable[2] = 1; - - m_bg_tilemap_enable16[0] = 0; - m_bg_tilemap_enable16[1] = 0; - m_bg_tilemap_enable16[2] = 0; +} +VIDEO_START_MEMBER(metro_state,metro_i4220_offset) +{ + VIDEO_START_CALL_MEMBER(metro_i4220); m_bg_tilemap_scrolldx[0] = -2; m_bg_tilemap_scrolldx[1] = -2; @@ -326,28 +318,13 @@ VIDEO_START_MEMBER(metro_state,metro_i4220) VIDEO_START_MEMBER(metro_state,metro_i4300) { - expand_gfx1(*this); + VIDEO_START_CALL_MEMBER(metro_i4220); - m_support_8bpp = 1; m_support_16x16 = 1; - m_has_zoom = 0; - - m_bg_tilemap_enable[0] = 1; - m_bg_tilemap_enable[1] = 1; - m_bg_tilemap_enable[2] = 1; - - m_bg_tilemap_enable16[0] = 0; - m_bg_tilemap_enable16[1] = 0; - m_bg_tilemap_enable16[2] = 0; - - m_bg_tilemap_scrolldx[0] = 0; - m_bg_tilemap_scrolldx[1] = 0; - m_bg_tilemap_scrolldx[2] = 0; } VIDEO_START_MEMBER(metro_state,blzntrnd) { - VIDEO_START_CALL_MEMBER(metro_i4220); m_has_zoom = 1; @@ -361,7 +338,6 @@ VIDEO_START_MEMBER(metro_state,blzntrnd) VIDEO_START_MEMBER(metro_state,gstrik2) { - VIDEO_START_CALL_MEMBER(metro_i4220); m_has_zoom = 1; @@ -448,7 +424,7 @@ void metro_draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const r int max_sprites = state->m_spriteram.bytes() / 8; int sprites = state->m_videoregs[0x00/2] % max_sprites; - int color_start = ((state->m_videoregs[0x08/2] & 0x0f) << 4) + 0x100; + int color_start = (state->m_videoregs[0x08/2] & 0x0f) << 4; int i, j, pri; static const int primask[4] = { 0x0000, 0xff00, 0xff00 | 0xf0f0, 0xff00 | 0xf0f0 | 0xcccc }; @@ -724,7 +700,7 @@ UINT32 metro_state::screen_update_metro(screen_device &screen, bitmap_ind16 &bit /* The background color is selected by a register */ machine().priority_bitmap.fill(0, cliprect); - bitmap.fill((m_videoregs[0x12/2] & 0x0fff) + 0x1000, cliprect); + bitmap.fill(m_videoregs[0x12/2] & 0x0fff, cliprect); /* Screen Control Register: