metro.cpp: puzzlet actually uses the same window VRAM area rmw as karate tournament, clean both (nw)

This commit is contained in:
angelosa 2017-11-19 07:11:09 +01:00
parent 0509fa75ac
commit 9a79dac1d6
2 changed files with 9 additions and 47 deletions

View File

@ -1026,6 +1026,9 @@ static ADDRESS_MAP_START( karatour_map, AS_PROGRAM, 16, metro_state )
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(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_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
@ -1059,6 +1062,9 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( kokushi_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
AM_RANGE(0x700000, 0x70ffff) 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, 0x871fff) AM_RAM // ???
AM_RANGE(0x872000, 0x873fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
@ -1792,34 +1798,6 @@ WRITE16_MEMBER(metro_state::puzzlet_irq_enable_w)
*m_irq_enable = data ^ 0xffff;
}
/* FIXME: algorithm not yet understood. */
WRITE16_MEMBER(metro_state::vram_0_clr_w)
{
static int i;
// printf("0 %04x %04x\n",offset,data);
for(i=0;i<0x20/2;i++)
m_vram_0[(offset*0x10+i)/2] = 0xffff;
}
WRITE16_MEMBER(metro_state::vram_1_clr_w)
{
static int i;
// printf("0 %04x %04x\n",offset,data);
for(i=0;i<0x20/2;i++)
m_vram_1[(offset*0x10+i)/2] = 0xffff;
}
WRITE16_MEMBER(metro_state::vram_2_clr_w)
{
static int i;
// printf("0 %04x %04x\n",offset,data);
for(i=0;i<0x20/2;i++)
m_vram_2[(offset*0x10+i)/2] = 0xffff;
}
// H8/3007 CPU
static ADDRESS_MAP_START( puzzlet_map, AS_PROGRAM, 16, metro_state )
@ -1837,9 +1815,9 @@ static ADDRESS_MAP_START( puzzlet_map, AS_PROGRAM, 16, metro_state )
AM_RANGE(0x770000, 0x771fff) AM_RAM // ???
AM_RANGE(0x772000, 0x773fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0x774000, 0x774fff) AM_RAM AM_SHARE("spriteram")
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(0x775000, 0x775fff) AM_READWRITE(karatour_vram_0_r, karatour_vram_0_w) // Layer 0 (Part of)
AM_RANGE(0x776000, 0x776fff) AM_READWRITE(karatour_vram_1_r, karatour_vram_1_w) // Layer 1 (Part of)
AM_RANGE(0x777000, 0x777fff) AM_READWRITE(karatour_vram_2_r, karatour_vram_2_w) // Layer 2 (Part of)
AM_RANGE(0x778000, 0x7787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set
AM_RANGE(0x778800, 0x778813) AM_RAM AM_SHARE("videoregs") // Video Registers
AM_RANGE(0x778840, 0x77884f) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter
@ -6253,18 +6231,6 @@ DRIVER_INIT_MEMBER(metro_state,metro)
DRIVER_INIT_MEMBER(metro_state,karatour)
{
m_vram_0.allocate(m_vram_size);
m_vram_1.allocate(m_vram_size);
m_vram_2.allocate(m_vram_size);
for (int i = 0; i < m_vram_size; i++)
{
// sane init VRAM for Lady Killer
// TODO: stage select still looks bogus tho
m_vram_0[i] = 0xffff; //machine().rand();
m_vram_1[i] = 0xffff; //machine().rand();
m_vram_2[i] = 0xffff; //machine().rand();
}
m_karatour_irq_timer = timer_alloc(TIMER_KARATOUR_IRQ);
DRIVER_INIT_CALL(metro);

View File

@ -83,9 +83,6 @@ public:
DECLARE_WRITE16_MEMBER(blzntrnd_sound_w);
DECLARE_WRITE8_MEMBER(blzntrnd_sh_bankswitch_w);
DECLARE_WRITE16_MEMBER(puzzlet_irq_enable_w);
DECLARE_WRITE16_MEMBER(vram_0_clr_w);
DECLARE_WRITE16_MEMBER(vram_1_clr_w);
DECLARE_WRITE16_MEMBER(vram_2_clr_w);
DECLARE_WRITE16_MEMBER(puzzlet_portb_w);
DECLARE_WRITE16_MEMBER(metro_k053936_w);
DECLARE_WRITE16_MEMBER(metro_vram_0_w);
@ -210,7 +207,6 @@ private:
/* misc */
int m_gakusai_oki_bank_lo;
int m_gakusai_oki_bank_hi;
static constexpr uint32_t m_vram_size = 0x20000 / 2;
void update_irq_state();
inline uint8_t get_tile_pix( uint16_t code, uint8_t x, uint8_t y, int big, uint16_t *pix );