diff options
| author | 2017-08-10 22:34:42 -0400 | |
|---|---|---|
| committer | 2017-08-10 22:38:20 -0400 | |
| commit | fe999de3d3d76ddc3b4f448628fe32714e0c2a03 (patch) | |
| tree | 1a9857549bdc501af8f6d42f9b8cd7cfb4c8ba21 | |
| parent | 378fe3d0d0863188b18783172f36d3116b96734b (diff) | |
dynax.cpp: Use address map bank device for most games in this driver (plus htengoku). Many of these games will now successfully retrieve the local time at the start through an RTC device previously treated as read-only.
| -rw-r--r-- | src/mame/drivers/ddenlovr.cpp | 29 | ||||
| -rw-r--r-- | src/mame/drivers/dynax.cpp | 270 | ||||
| -rw-r--r-- | src/mame/includes/dynax.h | 12 |
3 files changed, 147 insertions, 164 deletions
diff --git a/src/mame/drivers/ddenlovr.cpp b/src/mame/drivers/ddenlovr.cpp index 719f91c3060..bd2a59efc71 100644 --- a/src/mame/drivers/ddenlovr.cpp +++ b/src/mame/drivers/ddenlovr.cpp @@ -413,7 +413,6 @@ public: DECLARE_READ8_MEMBER(htengoku_coin_r); DECLARE_WRITE8_MEMBER(htengoku_rombank_w); DECLARE_WRITE8_MEMBER(htengoku_blit_romregion_w); - DECLARE_MACHINE_START(htengoku); DECLARE_VIDEO_START(htengoku); DECLARE_WRITE8_MEMBER(htengoku_dsw_w); DECLARE_READ8_MEMBER(htengoku_dsw_r); @@ -4123,15 +4122,6 @@ uint32_t ddenlovr_state::screen_update_htengoku(screen_device &screen, bitmap_in return screen_update_ddenlovr(screen, bitmap, cliprect); } -MACHINE_START_MEMBER(ddenlovr_state,htengoku) -{ - uint8_t *ROM = memregion("maincpu")->base(); - - membank("bank1")->configure_entries(0, 8, &ROM[0x10000], 0x8000); - - MACHINE_START_CALL_MEMBER(dynax); -} - WRITE8_MEMBER(ddenlovr_state::htengoku_select_w) { m_input_sel = data; @@ -4208,8 +4198,7 @@ READ8_MEMBER(ddenlovr_state::htengoku_coin_r) WRITE8_MEMBER(ddenlovr_state::htengoku_rombank_w) { - membank("bank1")->set_entry(data & 0x07); - m_hnoridur_bank = data; + m_bankdev->set_bank(data & 0x1f); } WRITE8_MEMBER(ddenlovr_state::htengoku_blit_romregion_w) @@ -4262,8 +4251,12 @@ static ADDRESS_MAP_START( htengoku_mem_map, AS_PROGRAM, 8, ddenlovr_state ) AM_RANGE( 0x0000, 0x5fff ) AM_ROM AM_RANGE( 0x6000, 0x6fff ) AM_RAM AM_SHARE("nvram") AM_RANGE( 0x7000, 0x7fff ) AM_RAM - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1") - AM_RANGE( 0x8000, 0x81ff ) AM_WRITE(yarunara_palette_w) // Palette or RTC + AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( htengoku_banked_map, AS_PROGRAM, 8, dynax_state ) + AM_RANGE(0x00000, 0x3ffff) AM_ROM AM_REGION("maincpu", 0x10000) + AM_RANGE(0x80000, 0x801ff) AM_WRITE(tenkai_palette_w) ADDRESS_MAP_END static MACHINE_CONFIG_START( htengoku ) @@ -4275,7 +4268,13 @@ static MACHINE_CONFIG_START( htengoku ) MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */ MCFG_CPU_PERIODIC_INT_DRIVER(ddenlovr_state, yarunara_clock_interrupt, 60) // RTC - MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,htengoku) + MCFG_DEVICE_ADD("bankdev", ADDRESS_MAP_BANK, 0) + MCFG_DEVICE_PROGRAM_MAP(htengoku_banked_map) + MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8) + MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(20) + MCFG_ADDRESS_MAP_BANK_STRIDE(0x8000) + + MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,dynax) MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,dynax) MCFG_NVRAM_ADD_0FILL("nvram") diff --git a/src/mame/drivers/dynax.cpp b/src/mame/drivers/dynax.cpp index a5ca64bccec..5b315e58838 100644 --- a/src/mame/drivers/dynax.cpp +++ b/src/mame/drivers/dynax.cpp @@ -291,111 +291,52 @@ WRITE8_MEMBER(dynax_state::jantouki_sound_rombank_w) WRITE8_MEMBER(dynax_state::hnoridur_rombank_w) { - int bank_n = (memregion("maincpu")->bytes() - 0x10000) / 0x8000; - - //logerror("%04x: rom bank = %02x\n", space.device().safe_pc(), data); - if (data < bank_n) - membank("bank1")->set_entry(data); - else - logerror("rom_bank = %02x (larger than the maximum bank %02x)\n", data, bank_n); - m_hnoridur_bank = data; + m_bankdev->set_bank(data & 0x1f); } -WRITE8_MEMBER(dynax_state::hnoridur_palette_w) +WRITE8_MEMBER(dynax_state::hnoridur_palette_lo_w) { - switch (m_hnoridur_bank) - { - case 0x10: - if (offset >= 0x100) - return; - m_palette_ram[256 * m_palbank + offset + 16 * 256] = data; - break; - - case 0x14: - if (offset >= 0x100) - return; - m_palette_ram[256 * m_palbank + offset] = data; - break; - - // hnoridur: R/W RAM - case 0x18: - { - m_hnoridur_ptr[offset] = data; - return; - } - - default: - popmessage("palette_w with bank = %02x", m_hnoridur_bank); - break; - } - - { - int x = (m_palette_ram[256 * m_palbank + offset] << 8) + m_palette_ram[256 * m_palbank + offset + 16 * 256]; - /* The bits are in reverse order! */ - int r = BITSWAP8((x >> 0) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4); - int g = BITSWAP8((x >> 5) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4); - int b = BITSWAP8((x >> 10) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4); - m_palette->set_pen_color(256 * m_palbank + offset, pal5bit(r), pal5bit(g), pal5bit(b)); - } + m_palette_ram[256 * m_palbank + offset + 16 * 256] = data; + hnoridur_palette_update(offset); } -WRITE8_MEMBER(dynax_state::yarunara_palette_w) +WRITE8_MEMBER(dynax_state::hnoridur_palette_hi_w) { - int addr = 512 * m_palbank + offset; - - switch (m_hnoridur_bank) - { - case 0x10: - m_palette_ram[addr] = data; - break; - - case 0x1c: // RTC - { - m_rtc->write(space, offset,data); - } - return; - - default: - popmessage("palette_w with bank = %02x", m_hnoridur_bank); - return; - } - - { - int br = m_palette_ram[addr & ~0x10]; // bbbrrrrr - int bg = m_palette_ram[addr | 0x10]; // bb0ggggg - int r = br & 0x1f; - int g = bg & 0x1f; - int b = ((bg & 0xc0) >> 3) | ((br & 0xe0) >> 5); - m_palette->set_pen_color(256 * m_palbank + ((offset & 0x0f) | ((offset & 0x1e0) >> 1)), pal5bit(r), pal5bit(g), pal5bit(b)); - } + m_palette_ram[256 * m_palbank + offset] = data; + hnoridur_palette_update(offset); } -WRITE8_MEMBER(dynax_state::nanajign_palette_w) +void dynax_state::hnoridur_palette_update(offs_t offset) { - switch (m_hnoridur_bank) - { - case 0x10: - m_palette_ram[256 * m_palbank + offset + 16 * 256] = data; - break; + int x = (m_palette_ram[256 * m_palbank + offset] << 8) + m_palette_ram[256 * m_palbank + offset + 16 * 256]; + /* The bits are in reverse order! */ + int r = BITSWAP8((x >> 0) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4); + int g = BITSWAP8((x >> 5) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4); + int b = BITSWAP8((x >> 10) & 0x1f, 7, 6, 5, 0, 1, 2, 3, 4); + m_palette->set_pen_color(256 * m_palbank + offset, pal5bit(r), pal5bit(g), pal5bit(b)); +} - case 0x14: - m_palette_ram[256 * m_palbank + offset] = data; - break; +WRITE8_MEMBER(dynax_state::nanajign_palette_lo_w) +{ + m_palette_ram[256 * m_palbank + offset + 16 * 256] = data; + nanajign_palette_update(offset); +} - default: - popmessage("palette_w with bank = %02x", m_hnoridur_bank); - break; - } +WRITE8_MEMBER(dynax_state::nanajign_palette_hi_w) +{ + m_palette_ram[256 * m_palbank + offset] = data; + nanajign_palette_update(offset); +} - { - int bg = m_palette_ram[256 * m_palbank + offset]; - int br = m_palette_ram[256 * m_palbank + offset + 16 * 256]; - int r = br & 0x1f; - int g = bg & 0x1f; - int b = ((bg & 0xc0) >> 3) | ((br & 0xe0) >> 5); - m_palette->set_pen_color(256 * m_palbank + offset, pal5bit(r), pal5bit(g), pal5bit(b)); - } +void dynax_state::nanajign_palette_update(offs_t offset) +{ + int bg = m_palette_ram[256 * m_palbank + offset]; + int br = m_palette_ram[256 * m_palbank + offset + 16 * 256]; + int r = br & 0x1f; + int g = bg & 0x1f; + int b = ((bg & 0xc0) >> 3) | ((br & 0xe0) >> 5); + m_palette->set_pen_color(256 * m_palbank + offset, pal5bit(r), pal5bit(g), pal5bit(b)); } @@ -464,22 +405,21 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( hnoridur_mem_map, AS_PROGRAM, 8, dynax_state ) AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_READ_BANK("bank1") AM_WRITE(hnoridur_palette_w) + AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8) ADDRESS_MAP_END static ADDRESS_MAP_START( mcnpshnt_mem_map, AS_PROGRAM, 8, dynax_state ) AM_RANGE( 0x0000, 0x5fff ) AM_ROM AM_RANGE( 0x6000, 0x6fff ) AM_RAM AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_READ_BANK("bank1") AM_WRITE(hnoridur_palette_w) + AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8) ADDRESS_MAP_END static ADDRESS_MAP_START( nanajign_mem_map, AS_PROGRAM, 8, dynax_state ) AM_RANGE( 0x0000, 0x5fff ) AM_ROM AM_RANGE( 0x6000, 0x6fff ) AM_RAM AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0x80ff ) AM_WRITE(nanajign_palette_w) - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1") + AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8) ADDRESS_MAP_END static ADDRESS_MAP_START( mjdialq2_mem_map, AS_PROGRAM, 8, dynax_state ) @@ -493,8 +433,7 @@ static ADDRESS_MAP_START( yarunara_mem_map, AS_PROGRAM, 8, dynax_state ) AM_RANGE( 0x0000, 0x5fff ) AM_ROM AM_RANGE( 0x6000, 0x6fff ) AM_RAM AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1") - AM_RANGE( 0x8000, 0x81ff ) AM_WRITE(yarunara_palette_w) // Palette or RTC + AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8) ADDRESS_MAP_END //identical to yarunara, but nvram is in the 0x6000 - 0x6fff range @@ -502,8 +441,7 @@ static ADDRESS_MAP_START( quiztvqq_mem_map, AS_PROGRAM, 8, dynax_state ) AM_RANGE( 0x0000, 0x5fff ) AM_ROM AM_RANGE( 0x6000, 0x6fff ) AM_RAM AM_SHARE("nvram") AM_RANGE( 0x7000, 0x7fff ) AM_RAM - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1") - AM_RANGE( 0x8000, 0x81ff ) AM_WRITE(yarunara_palette_w) // Palette or RTC + AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8) ADDRESS_MAP_END static ADDRESS_MAP_START( jantouki_mem_map, AS_PROGRAM, 8, dynax_state ) @@ -521,6 +459,41 @@ ADDRESS_MAP_END +static ADDRESS_MAP_START( hnoridur_banked_map, AS_PROGRAM, 8, dynax_state ) + AM_RANGE(0x00000, 0x7ffff) AM_ROM AM_REGION("maincpu", 0x10000) + AM_RANGE(0x80000, 0x800ff) AM_WRITE(hnoridur_palette_lo_w) + AM_RANGE(0xa0000, 0xa00ff) AM_WRITE(hnoridur_palette_hi_w) + AM_RANGE(0xc0000, 0xc7fff) AM_RAM // hnoridur: R/W RAM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( mjelctrn_banked_map, AS_PROGRAM, 8, dynax_state ) + AM_RANGE(0x00000, 0x3ffff) AM_ROM AM_REGION("maincpu", 0x10000) + AM_RANGE(0x80000, 0x800ff) AM_WRITE(nanajign_palette_lo_w) + AM_RANGE(0xa0000, 0xa00ff) AM_WRITE(nanajign_palette_hi_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( nanajign_banked_map, AS_PROGRAM, 8, dynax_state ) + AM_RANGE(0x00000, 0x7ffff) AM_ROM AM_REGION("maincpu", 0x10000) + AM_RANGE(0x80000, 0x800ff) AM_WRITE(nanajign_palette_lo_w) + AM_RANGE(0xa0000, 0xa00ff) AM_WRITE(nanajign_palette_hi_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( yarunara_banked_map, AS_PROGRAM, 8, dynax_state ) + AM_RANGE(0x00000, 0x3ffff) AM_ROM AM_REGION("maincpu", 0x10000) + AM_RANGE(0x80000, 0x801ff) AM_WRITE(tenkai_palette_w) + AM_RANGE(0xe0000, 0xe000f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( mjangels_banked_map, AS_PROGRAM, 8, dynax_state ) + AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("maincpu", 0x010000) + AM_RANGE(0x080000, 0x0801ff) AM_WRITE(tenkai_palette_w) + AM_RANGE(0x0a0000, 0x0bffff) AM_ROM AM_REGION("maincpu", 0x0b0000) + AM_RANGE(0x0e0000, 0x0e000f) AM_DEVREADWRITE("rtc", msm6242_device, read, write) + AM_RANGE(0x100000, 0x13ffff) AM_ROM AM_REGION("maincpu", 0x110000) +ADDRESS_MAP_END + + + static ADDRESS_MAP_START( hanamai_io_map, AS_IO, 8, dynax_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE( 0x00, 0x00 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X @@ -593,7 +566,7 @@ ADDRESS_MAP_END WRITE8_MEMBER(dynax_state::hjingi_bank_w) { - m_hnoridur_bank = data; + m_bankdev->set_bank(data); } WRITE_LINE_MEMBER(dynax_state::hjingi_lockout_w) @@ -625,7 +598,13 @@ static ADDRESS_MAP_START( hjingi_mem_map, AS_PROGRAM, 8, dynax_state ) AM_RANGE( 0x0000, 0x01ff ) AM_ROM AM_RANGE( 0x0200, 0x1fff ) AM_RAM AM_SHARE("nvram") AM_RANGE( 0x2000, 0x7fff ) AM_ROM - AM_RANGE( 0x8000, 0xffff ) AM_READ_BANK("bank1") AM_WRITE(hnoridur_palette_w) + AM_RANGE( 0x8000, 0xffff ) AM_DEVICE("bankdev", address_map_bank_device, amap8) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( hjingi_banked_map, AS_PROGRAM, 8, dynax_state ) + AM_RANGE(0x00000, 0x1ffff) AM_ROM AM_REGION("maincpu", 0x10000) + AM_RANGE(0x80000, 0x800ff) AM_WRITE(hnoridur_palette_lo_w) + AM_RANGE(0xa0000, 0xa00ff) AM_WRITE(hnoridur_palette_hi_w) ADDRESS_MAP_END static ADDRESS_MAP_START( hjingi_io_map, AS_IO, 8, dynax_state ) @@ -663,7 +642,7 @@ static ADDRESS_MAP_START( hjingi_io_map, AS_IO, 8, dynax_state ) AM_RANGE( 0x50, 0x50 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X AM_RANGE( 0x51, 0x51 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y - AM_RANGE( 0x54, 0x54 ) AM_WRITE(hjingi_bank_w) // + AM_RANGE( 0x54, 0x54 ) AM_WRITE(hjingi_bank_w) // BANK ROM Select AM_RANGE( 0x56, 0x56 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack AM_RANGE( 0x57, 0x57 ) AM_READ(ret_ff) // Blitter Busy @@ -739,14 +718,7 @@ READ8_MEMBER(dynax_state::yarunara_input_r) WRITE8_MEMBER(dynax_state::yarunara_rombank_w) { - int bank_n = (memregion("maincpu")->bytes() - 0x10000) / 0x8000; - - //logerror("%04x: rom bank = %02x\n", space.device().safe_pc(), data); - if (data < bank_n) - membank("bank1")->set_entry(data); - else - logerror("rom_bank = %02x (larger than the maximum bank %02x)\n",data, bank_n); - m_hnoridur_bank = data; + m_bankdev->set_bank(data & 0x3f); } WRITE8_MEMBER(dynax_state::yarunara_mainlatch_w) @@ -4147,7 +4119,6 @@ MACHINE_START_MEMBER(dynax_state,dynax) save_item(NAME(m_keyb)); save_item(NAME(m_coins)); save_item(NAME(m_hopper)); - save_item(NAME(m_hnoridur_bank)); save_item(NAME(m_palbank)); save_item(NAME(m_msm5205next)); save_item(NAME(m_resetkludge)); @@ -4182,7 +4153,6 @@ MACHINE_RESET_MEMBER(dynax_state,dynax) m_keyb = 0; m_coins = 0; m_hopper = 0; - m_hnoridur_bank = 0; m_palbank = 0; m_msm5205next = 0; m_resetkludge = 0; @@ -4210,19 +4180,6 @@ MACHINE_START_MEMBER(dynax_state,hanamai) MACHINE_START_CALL_MEMBER(dynax); } -MACHINE_START_MEMBER(dynax_state,hnoridur) -{ - uint8_t *ROM = memregion("maincpu")->base(); - int bank_n = (memregion("maincpu")->bytes() - 0x10000) / 0x8000; - - m_hnoridur_ptr = &ROM[0x10000 + 0x18 * 0x8000]; - save_pointer(NAME(m_hnoridur_ptr), 0x8000); - - membank("bank1")->configure_entries(0, bank_n, &ROM[0x10000], 0x8000); - - MACHINE_START_CALL_MEMBER(dynax); -} - /*************************************************************************** Castle Of Dracula ***************************************************************************/ @@ -4343,9 +4300,15 @@ static MACHINE_CONFIG_START( hnoridur ) MCFG_CPU_IO_MAP(hnoridur_io_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */ - MCFG_MACHINE_START_OVERRIDE(dynax_state,hnoridur) + MCFG_MACHINE_START_OVERRIDE(dynax_state,dynax) MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax) + MCFG_DEVICE_ADD("bankdev", ADDRESS_MAP_BANK, 0) + MCFG_DEVICE_PROGRAM_MAP(hnoridur_banked_map) + MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8) + MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(20) + MCFG_ADDRESS_MAP_BANK_STRIDE(0x8000) + MCFG_NVRAM_ADD_0FILL("nvram") MCFG_DEVICE_ADD("mainlatch", LS259, 0) // IC25 @@ -4400,9 +4363,15 @@ static MACHINE_CONFIG_START( hjingi ) MCFG_CPU_IO_MAP(hjingi_io_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */ - MCFG_MACHINE_START_OVERRIDE(dynax_state,hnoridur) + MCFG_MACHINE_START_OVERRIDE(dynax_state,dynax) MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax) + MCFG_DEVICE_ADD("bankdev", ADDRESS_MAP_BANK, 0) + MCFG_DEVICE_PROGRAM_MAP(hjingi_banked_map) + MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8) + MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(20) + MCFG_ADDRESS_MAP_BANK_STRIDE(0x8000) + MCFG_NVRAM_ADD_0FILL("nvram") MCFG_DEVICE_ADD("mainlatch", LS259, 0) @@ -4588,6 +4557,9 @@ static MACHINE_CONFIG_DERIVED( yarunara, hnoridur ) MCFG_CPU_IO_MAP(yarunara_io_map) MCFG_CPU_PERIODIC_INT_DRIVER(dynax_state, yarunara_clock_interrupt, 60) // RTC + MCFG_DEVICE_MODIFY("bankdev") + MCFG_DEVICE_PROGRAM_MAP(yarunara_banked_map) + MCFG_NVRAM_REPLACE_0FILL("nvram") MCFG_DEVICE_REMOVE("outlatch") // ??? @@ -4599,7 +4571,13 @@ static MACHINE_CONFIG_DERIVED( yarunara, hnoridur ) MCFG_DEVICE_ADD("rtc", MSM6242, XTAL_32_768kHz) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( quiztvqq, yarunara ) +static MACHINE_CONFIG_DERIVED( mjangels, yarunara ) + MCFG_DEVICE_MODIFY("bankdev") + MCFG_DEVICE_PROGRAM_MAP(mjangels_banked_map) + MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(21) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( quiztvqq, mjangels ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") @@ -4628,6 +4606,9 @@ static MACHINE_CONFIG_DERIVED( nanajign, hnoridur ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(nanajign_mem_map) MCFG_CPU_IO_MAP(nanajign_io_map) + + MCFG_DEVICE_MODIFY("bankdev") + MCFG_DEVICE_PROGRAM_MAP(nanajign_banked_map) MACHINE_CONFIG_END @@ -4747,6 +4728,9 @@ static MACHINE_CONFIG_DERIVED( mjelctrn, hnoridur ) MCFG_CPU_PROGRAM_MAP(nanajign_mem_map) MCFG_CPU_IO_MAP(mjelctrn_io_map) + MCFG_DEVICE_MODIFY("bankdev") + MCFG_DEVICE_PROGRAM_MAP(mjelctrn_banked_map) + MCFG_DEVICE_REPLACE("mainlatch", LS259, 0) MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(dynax_state, flipscreen_w)) MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(dynax_state, layer_half_w)) @@ -5095,7 +5079,7 @@ Custom chip: DYNAX TC17G032AP-0246 JAPAN 8929EAI ***************************************************************************/ ROM_START( hnoridur ) - ROM_REGION( 0x10000 + 0x19*0x8000, "maincpu", 0 ) // Z80 Code + ROM_REGION( 0x90000, "maincpu", 0 ) // Z80 Code ROM_LOAD( "2309.12", 0x00000, 0x20000, CRC(5517dd68) SHA1(3da27032a412b51b67e852b61166c2fdc138a370) ) ROM_RELOAD( 0x10000, 0x20000 ) @@ -5536,7 +5520,7 @@ DYNAX NL-001 WD10100 ***************************************************************************/ ROM_START( yarunara ) - ROM_REGION( 0x10000 + 0x1d*0x8000, "maincpu", 0 ) // Z80 Code + ROM_REGION( 0x50000, "maincpu", 0 ) // Z80 Code ROM_LOAD( "5501m.2d", 0x00000, 0x20000, CRC(d86fade5) SHA1(4ae5e22972eb4ead9aa4a455ff1a18e128c33ed6) ) ROM_RELOAD( 0x10000, 0x20000 ) ROM_LOAD( "5502m.4d", 0x30000, 0x20000, CRC(1ef09ff0) SHA1(bbedcc1c0f5b43c78e0c3ce0fc1a3c28025562ec) ) @@ -5603,7 +5587,7 @@ dumped by sayu ***************************************************************************/ ROM_START( hanayara ) - ROM_REGION( 0x10000 + 0x1d*0x8000, "maincpu", 0 ) // Z80 Code + ROM_REGION( 0x50000, "maincpu", 0 ) // Z80 Code ROM_LOAD( "5501h.2d", 0x00000, 0x20000, CRC(124860b7) SHA1(205459d95f876433a9ca329fe31cfe9b08023baf) ) ROM_RELOAD( 0x10000, 0x20000 ) ROM_LOAD( "5502h.4d", 0x30000, 0x20000, CRC(93407801) SHA1(63dc3419f97d86221dbdd67b5be41d713364496b) ) @@ -5796,7 +5780,7 @@ DYNAX TC17G032AP-0246 JAPAN 8951EAY ***************************************************************************/ ROM_START( mcnpshnt ) - ROM_REGION( 0x10000 + 0xc*0x8000, "maincpu", 0 ) // Z80 Code + ROM_REGION( 0x90000, "maincpu", 0 ) // Z80 Code ROM_LOAD( "3318.12", 0x000000, 0x020000, CRC(e3b457a8) SHA1(b768895797157cad029ac1f652a838ecf6587d4f) ) ROM_RELOAD( 0x010000, 0x020000 ) ROM_LOAD( "3317.11", 0x030000, 0x020000, CRC(4bb62bb4) SHA1(0de5605cecb1e729a5b5b866274395945cf88aa3) ) @@ -5868,7 +5852,7 @@ Custom: (TC17G032AP-0246) ***************************************************************************/ ROM_START( 7jigen ) - ROM_REGION( 0x10000 + 0xc*0x8000, "maincpu", 0 ) // Z80 Code + ROM_REGION( 0x90000, "maincpu", 0 ) // Z80 Code ROM_LOAD( "3701.1a", 0x00000, 0x20000, CRC(ee8ab3c4) SHA1(9ccc9e9697dd452cd28e38c81cebea0b862f0642) ) ROM_RELOAD( 0x10000, 0x20000 ) ROM_LOAD( "3702.3a", 0x30000, 0x20000, CRC(4e43a0bb) SHA1(d98a1ab43dcfab3d2a17f99db797f7bfa17e5ecc) ) @@ -6085,7 +6069,7 @@ ROM_END ***************************************************************************/ ROM_START( mjelctrn ) - ROM_REGION( 0x30000, "maincpu", 0 ) // Z80 Code + ROM_REGION( 0x50000, "maincpu", 0 ) // Z80 Code ROM_LOAD( "u27b-020", 0x00000, 0x20000, CRC(7773d382) SHA1(1d2ae799677e99c7cba09b0a2c49bb9310232e80) ) ROM_CONTINUE( 0x00000, 0x20000 ) ROM_RELOAD( 0x10000, 0x20000 ) @@ -6105,7 +6089,7 @@ ROM_START( mjelctrn ) ROM_END ROM_START( mjelct3 ) - ROM_REGION( 0x30000, "maincpu", 0 ) // Z80 Code + ROM_REGION( 0x50000, "maincpu", 0 ) // Z80 Code ROM_LOAD( "se-3010", 0x00000, 0x20000, CRC(370347e7) SHA1(2dc9f1fde4efaaff887722aae6507d7e9fac8eb6) ) ROM_RELOAD( 0x10000, 0x08000 ) ROM_CONTINUE( 0x28000, 0x08000 ) @@ -6120,7 +6104,7 @@ ROM_START( mjelct3 ) ROM_END ROM_START( mjelct3a ) - ROM_REGION( 0x30000, "maincpu", 0 ) // Z80 Code + ROM_REGION( 0x50000, "maincpu", 0 ) // Z80 Code ROM_LOAD( "dz-00.rom", 0x00000, 0x20000, CRC(d28358f7) SHA1(995c16e0865048069f79411574256a88d58c6be9) ) ROM_RELOAD( 0x10000, 0x08000 ) ROM_CONTINUE( 0x28000, 0x08000 ) @@ -6170,7 +6154,7 @@ Z84C015 - Toshiba TMPZ84C015BF-6 Z80 compatible CPU ***************************************************************************/ ROM_START( mjelctrb ) - ROM_REGION( 0x30000, "maincpu", 0 ) // Z80 Code + ROM_REGION( 0x50000, "maincpu", 0 ) // Z80 Code ROM_LOAD( "prog.u27", 0x00000, 0x20000, CRC(688990ca) SHA1(34825cee8f76de93f12ccf2a1021f9c5369da46a) ) ROM_RELOAD( 0x28000, 0x08000 ) ROM_CONTINUE( 0x20000, 0x08000 ) @@ -6226,7 +6210,7 @@ Notes: ***************************************************************************/ ROM_START( mjembase ) - ROM_REGION( 0x30000, "maincpu", 0 ) + ROM_REGION( 0x50000, "maincpu", 0 ) ROM_LOAD( "dynax_3815.20a", 0x00000, 0x20000, CRC(35b35b48) SHA1(9966804337a7c6de160a09087e1fea3b0a515fe4) ) ROM_RELOAD( 0x10000, 0x20000 ) @@ -7241,7 +7225,7 @@ Notes: ***************************************************************************/ ROM_START( hjingi ) - ROM_REGION( 0x30000, "maincpu", 0 ) + ROM_REGION( 0x90000, "maincpu", 0 ) ROM_LOAD( "h10b.4a", 0x00000, 0x20000, CRC(e1152b17) SHA1(ced822eafa96c89dda82fd8ea002e86c2eb4438a) ) ROM_RELOAD( 0x10000, 0x20000 ) @@ -7261,7 +7245,7 @@ ROM_END // dump of the program roms only? ROM_START( hjingia ) - ROM_REGION( 0x30000, "maincpu", 0 ) + ROM_REGION( 0x90000, "maincpu", 0 ) ROM_LOAD( "h10b.4a", 0x00000, 0x20000, CRC(a77a062a) SHA1(cae76effd573c20e20172829220587a5d200eb9e) ) ROM_RELOAD( 0x10000, 0x20000 ) @@ -7382,7 +7366,7 @@ GAME( 1990, jantouki, 0, jantouki, jantouki, dynax_state, 0, ROT0, GAME( 1991, mjdialq2, 0, mjdialq2, mjdialq2, dynax_state, 0, ROT180, "Dynax", "Mahjong Dial Q2 (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1991, mjdialq2a,mjdialq2, mjdialq2, mjdialq2, dynax_state, 0, ROT180, "Dynax", "Mahjong Dial Q2 (Japan, alt.)", MACHINE_SUPPORTS_SAVE ) GAME( 1991, yarunara, 0, yarunara, yarunara, dynax_state, 0, ROT180, "Dynax", "Mahjong Yarunara (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, mjangels, 0, yarunara, yarunara, dynax_state, 0, ROT180, "Dynax", "Mahjong Angels - Comic Theater Vol.2 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, mjangels, 0, mjangels, yarunara, dynax_state, 0, ROT180, "Dynax", "Mahjong Angels - Comic Theater Vol.2 (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1992, quiztvqq, 0, quiztvqq, quiztvqq, dynax_state, 0, ROT180, "Dynax", "Quiz TV Gassyuukoku Q&Q (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, mjelctrn, 0, mjelctrn, mjelctrn, dynax_state, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 4, Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1989, mjembase, mjelctrn, mjembase, mjembase, dynax_state, mjelct3, ROT180, "Dynax", "Mahjong Electromagnetic Base", MACHINE_SUPPORTS_SAVE ) @@ -7393,7 +7377,7 @@ GAME( 1990, majxtal7, 0, neruton, majxtal7, dynax_state, mjelct3, ROT18 GAME( 1990, neruton, 0, neruton, neruton, dynax_state, mjelct3, ROT180, "Dynax / Yukiyoshi Tokoro", "Mahjong Neruton Haikujiradan (Japan, Rev. B?)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1990, nerutona, neruton, neruton, neruton, dynax_state, mjelct3, ROT180, "Dynax / Yukiyoshi Tokoro", "Mahjong Neruton Haikujiradan (Japan, Rev. A?)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1991, hanayara, 0, yarunara, hanayara, dynax_state, 0, ROT180, "Dynax", "Hana wo Yaraneba! (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, mjcomv1, 0, yarunara, yarunara, dynax_state, 0, ROT180, "Dynax", "Mahjong Comic Gekijou Vol.1 (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, mjcomv1, 0, mjangels, yarunara, dynax_state, 0, ROT180, "Dynax", "Mahjong Comic Gekijou Vol.1 (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1991, tenkai, 0, tenkai, tenkai, dynax_state, 0, ROT0, "Dynax", "Mahjong Tenkaigen", MACHINE_SUPPORTS_SAVE ) GAME( 1991, tenkai2b, tenkai, tenkai, tenkai, dynax_state, 0, ROT0, "bootleg", "Mahjong Tenkaigen Part 2 (bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 1991, tenkaibb, tenkai, tenkai, tenkai, dynax_state, 0, ROT0, "bootleg", "Mahjong Tenkaigen (bootleg b)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/includes/dynax.h b/src/mame/includes/dynax.h index f27c957c7de..45e8a879d00 100644 --- a/src/mame/includes/dynax.h +++ b/src/mame/includes/dynax.h @@ -124,7 +124,6 @@ public: uint8_t m_hopper; /* misc */ - int m_hnoridur_bank; uint8_t m_palette_ram[16*256*2]; int m_palbank; int m_msm5205next; @@ -140,7 +139,6 @@ public: int m_tenkai_6c; int m_tenkai_70; uint8_t m_gekisha_val[2]; - uint8_t *m_hnoridur_ptr; DECLARE_WRITE8_MEMBER(dynax_vblank_ack_w); DECLARE_WRITE_LINE_MEMBER(blitter_ack_w); @@ -159,9 +157,12 @@ public: DECLARE_WRITE8_MEMBER(cdracula_sound_rombank_w); DECLARE_WRITE8_MEMBER(hnoridur_rombank_w); DECLARE_WRITE8_MEMBER(hnoridur_palbank_w); - DECLARE_WRITE8_MEMBER(hnoridur_palette_w); - DECLARE_WRITE8_MEMBER(yarunara_palette_w); - DECLARE_WRITE8_MEMBER(nanajign_palette_w); + DECLARE_WRITE8_MEMBER(hnoridur_palette_lo_w); + DECLARE_WRITE8_MEMBER(hnoridur_palette_hi_w); + void hnoridur_palette_update(offs_t offset); + DECLARE_WRITE8_MEMBER(nanajign_palette_lo_w); + DECLARE_WRITE8_MEMBER(nanajign_palette_hi_w); + void nanajign_palette_update(offs_t offset); DECLARE_WRITE8_MEMBER(adpcm_data_w); DECLARE_WRITE8_MEMBER(yarunara_mainlatch_w); DECLARE_WRITE8_MEMBER(hjingi_bank_w); @@ -285,7 +286,6 @@ public: DECLARE_MACHINE_START(dynax); DECLARE_MACHINE_START(hanamai); DECLARE_VIDEO_START(hanamai); - DECLARE_MACHINE_START(hnoridur); DECLARE_VIDEO_START(hnoridur); DECLARE_PALETTE_INIT(sprtmtch); DECLARE_VIDEO_START(sprtmtch); |
