From eb570b4839a5a38967cf15500ddabb0da2ccc7ea Mon Sep 17 00:00:00 2001 From: "Alex W. Jackson" Date: Wed, 30 Jul 2014 13:59:12 +0000 Subject: [PATCH] k053246: fix 8bpp ROM readback; remove some obsolete trampoline and debug handlers (nw) --- src/mame/drivers/konamigx.c | 79 +++++++------------- src/mame/drivers/mystwarr.c | 67 +++-------------- src/mame/drivers/rungun.c | 7 +- src/mame/includes/konamigx.h | 2 - src/mame/video/k053246_k053247_k055673.c | 94 ++++-------------------- src/mame/video/k053246_k053247_k055673.h | 27 +++---- src/mame/video/konami_helper.h | 2 - 7 files changed, 65 insertions(+), 213 deletions(-) diff --git a/src/mame/drivers/konamigx.c b/src/mame/drivers/konamigx.c index 9e58713f4f3..3d443af61d5 100644 --- a/src/mame/drivers/konamigx.c +++ b/src/mame/drivers/konamigx.c @@ -104,8 +104,6 @@ #include "includes/konamigx.h" #include "rendlay.h" -#define GX_DEBUG 0 - @@ -745,16 +743,6 @@ READ32_MEMBER(konamigx_state::le2_gun_V_r) /**********************************************************************************/ /* system or game dependent handlers */ -READ32_MEMBER(konamigx_state::gx5bppspr_r) -{ - return (m_k055673->k055673_rom_word_r(space, offset*2+1, 0xffff) | m_k055673->k055673_rom_word_r(space, offset*2, 0xffff)<<16); -} - -READ32_MEMBER(konamigx_state::gx6bppspr_r) -{ - return (m_k055673->k055673_GX6bpp_rom_word_r(space, offset*2+1, 0xffff) | m_k055673->k055673_GX6bpp_rom_word_r(space, offset*2, 0xffff)<<16); -} - READ32_MEMBER(konamigx_state::type1_roz_r1) { UINT32 *ROM = (UINT32 *)memregion("gfx3")->base(); @@ -993,12 +981,13 @@ static ADDRESS_MAP_START( gx_base_memmap, AS_PROGRAM, 32, konamigx_state ) AM_RANGE(0x400000, 0x7fffff) AM_ROM // data ROM AM_RANGE(0xc00000, 0xc1ffff) AM_RAM AM_SHARE("workram") AM_RANGE(0xd00000, 0xd01fff) AM_DEVREAD("k056832", k056832_device, k_5bpp_rom_long_r) - AM_RANGE(0xd20000, 0xd20fff) AM_DEVREADWRITE("k055673", k055673_device, k053247_long_r, k053247_long_w) + AM_RANGE(0xd20000, 0xd20fff) AM_DEVREADWRITE16("k055673", k055673_device, k053247_word_r, k053247_word_w, 0xffffffff) AM_RANGE(0xd21000, 0xd23fff) AM_RAM AM_RANGE(0xd40000, 0xd4003f) AM_DEVWRITE("k056832", k056832_device, long_w) AM_RANGE(0xd44000, 0xd4400f) AM_WRITE(konamigx_tilebank_w) - AM_RANGE(0xd48000, 0xd48007) AM_DEVWRITE("k055673", k055673_device, k053246_long_w) - AM_RANGE(0xd4a010, 0xd4a01f) AM_DEVWRITE("k055673", k055673_device, k053247_reg_long_w) + AM_RANGE(0xd48000, 0xd48007) AM_DEVWRITE16("k055673", k055673_device, k053246_word_w, 0xffffffff) + AM_RANGE(0xd4a000, 0xd4a00f) AM_DEVREAD16("k055673", k055673_device, k055673_rom_word_r, 0xffffffff) + AM_RANGE(0xd4a010, 0xd4a01f) AM_DEVWRITE16("k055673", k055673_device, k055673_reg_word_w, 0xffffffff) AM_RANGE(0xd4c000, 0xd4c01f) AM_READWRITE(ccu_r, ccu_w) AM_RANGE(0xd4e000, 0xd4e01f) AM_WRITENOP AM_RANGE(0xd50000, 0xd500ff) AM_DEVWRITE("k055555", k055555_device, K055555_long_w) @@ -1011,14 +1000,9 @@ static ADDRESS_MAP_START( gx_base_memmap, AS_PROGRAM, 32, konamigx_state ) AM_RANGE(0xd80000, 0xd8001f) AM_DEVWRITE("k054338", k054338_device, long_w) AM_RANGE(0xda0000, 0xda1fff) AM_DEVREADWRITE("k056832", k056832_device, ram_long_r, ram_long_w) AM_RANGE(0xda2000, 0xda3fff) AM_DEVREADWRITE("k056832", k056832_device, ram_long_r, ram_long_w) -#if GX_DEBUG - AM_RANGE(0xd40000, 0xd4003f) AM_DEVREAD("k056832", k056832_device, long_r) - AM_RANGE(0xd4a010, 0xd4a01f) AM_DEVREAD("k055673", k055673_device, k053247_reg_long_r) -#endif ADDRESS_MAP_END static ADDRESS_MAP_START( gx_type1_map, AS_PROGRAM, 32, konamigx_state ) - AM_RANGE(0xd4a000, 0xd4a01f) AM_READ(gx6bppspr_r) // sprite ROM readback AM_RANGE(0xd90000, 0xd97fff) AM_RAM_WRITE(konamigx_palette_w) AM_SHARE("paletteram") AM_RANGE(0xdc0000, 0xdc1fff) AM_RAM // LAN RAM? (Racin' Force has, Open Golf doesn't) AM_RANGE(0xdd0000, 0xdd00ff) AM_READNOP AM_WRITENOP // LAN board @@ -2443,10 +2427,10 @@ ROM_START( winspike ) /* sprites */ ROM_REGION( 0x1000000, "gfx2", ROMREGION_ERASE00 ) - ROM_LOAD64_WORD( "705a10.33g", 0x000000, 0x400000, CRC(fc4dc78b) SHA1(520cdcf9ca20ec1c84be734e06e183e7a871090b) ) - ROM_LOAD64_WORD( "705a11.30g", 0x000002, 0x400000, CRC(68542ce9) SHA1(a4294da1d1026e3a9d070575e5855935389a705f) ) - ROM_LOAD64_WORD( "705a13.28g", 0x000004, 0x400000, CRC(3b62584b) SHA1(69718f47ff1e8d65a11972af1ed5068db175f625) ) - ROM_LOAD64_WORD( "705a17.25g", 0x000006, 0x400000, CRC(971d2812) SHA1(ee0819faf6f6c8420d5d3742cb39dfb76b9ce7a4) ) + ROM_LOAD64_WORD( "705a17.25g", 0x000000, 0x400000, CRC(971d2812) SHA1(ee0819faf6f6c8420d5d3742cb39dfb76b9ce7a4) ) + ROM_LOAD64_WORD( "705a13.28g", 0x000002, 0x400000, CRC(3b62584b) SHA1(69718f47ff1e8d65a11972af1ed5068db175f625) ) + ROM_LOAD64_WORD( "705a11.30g", 0x000004, 0x400000, CRC(68542ce9) SHA1(a4294da1d1026e3a9d070575e5855935389a705f) ) + ROM_LOAD64_WORD( "705a10.33g", 0x000006, 0x400000, CRC(fc4dc78b) SHA1(520cdcf9ca20ec1c84be734e06e183e7a871090b) ) /* sound data */ ROM_REGION( 0x400000, "shared", 0 ) @@ -2502,10 +2486,10 @@ ROM_START( winspikej ) /* sprites */ ROM_REGION( 0x1000000, "gfx2", ROMREGION_ERASE00 ) - ROM_LOAD64_WORD( "705a10.33g", 0x000000, 0x400000, CRC(fc4dc78b) SHA1(520cdcf9ca20ec1c84be734e06e183e7a871090b) ) - ROM_LOAD64_WORD( "705a11.30g", 0x000002, 0x400000, CRC(68542ce9) SHA1(a4294da1d1026e3a9d070575e5855935389a705f) ) - ROM_LOAD64_WORD( "705a13.28g", 0x000004, 0x400000, CRC(3b62584b) SHA1(69718f47ff1e8d65a11972af1ed5068db175f625) ) - ROM_LOAD64_WORD( "705a17.25g", 0x000006, 0x400000, CRC(971d2812) SHA1(ee0819faf6f6c8420d5d3742cb39dfb76b9ce7a4) ) + ROM_LOAD64_WORD( "705a17.25g", 0x000000, 0x400000, CRC(971d2812) SHA1(ee0819faf6f6c8420d5d3742cb39dfb76b9ce7a4) ) + ROM_LOAD64_WORD( "705a13.28g", 0x000002, 0x400000, CRC(3b62584b) SHA1(69718f47ff1e8d65a11972af1ed5068db175f625) ) + ROM_LOAD64_WORD( "705a11.30g", 0x000004, 0x400000, CRC(68542ce9) SHA1(a4294da1d1026e3a9d070575e5855935389a705f) ) + ROM_LOAD64_WORD( "705a10.33g", 0x000006, 0x400000, CRC(fc4dc78b) SHA1(520cdcf9ca20ec1c84be734e06e183e7a871090b) ) /* sound data */ ROM_REGION( 0x400000, "shared", 0 ) @@ -3200,10 +3184,10 @@ ROM_START( le2 ) /* sprites */ ROM_REGION( 0x800000, "gfx2", ROMREGION_ERASE00 ) - ROM_LOAD64_WORD( "312a08.33g", 0x000000, 2*1024*1024, CRC(29015d56) SHA1(7273270804ecefd8f59469c2c2a8a89fb045a12b) ) - ROM_LOAD64_WORD( "312a09.30g", 0x000002, 2*1024*1024, CRC(b2c5d6d5) SHA1(8248612275ca862c6688de5c6f24f37aeb3f9fe5) ) - ROM_LOAD64_WORD( "312a10.28g", 0x000004, 2*1024*1024, CRC(3c570d04) SHA1(ebbf7d28726e98c8895c9bf901f8b2dd38018c77) ) - ROM_LOAD64_WORD( "312a11.25g", 0x000006, 2*1024*1024, CRC(5f474357) SHA1(1f6d99f1ea69e07a65731ea4eae5917452cfcab6) ) + ROM_LOAD64_WORD( "312a11.25g", 0x000000, 2*1024*1024, CRC(5f474357) SHA1(1f6d99f1ea69e07a65731ea4eae5917452cfcab6) ) + ROM_LOAD64_WORD( "312a10.28g", 0x000002, 2*1024*1024, CRC(3c570d04) SHA1(ebbf7d28726e98c8895c9bf901f8b2dd38018c77) ) + ROM_LOAD64_WORD( "312a09.30g", 0x000004, 2*1024*1024, CRC(b2c5d6d5) SHA1(8248612275ca862c6688de5c6f24f37aeb3f9fe5) ) + ROM_LOAD64_WORD( "312a08.33g", 0x000006, 2*1024*1024, CRC(29015d56) SHA1(7273270804ecefd8f59469c2c2a8a89fb045a12b) ) /* sound data */ ROM_REGION( 0x400000, "shared", 0 ) @@ -3238,10 +3222,10 @@ ROM_START( le2u ) /* sprites */ ROM_REGION( 0x800000, "gfx2", ROMREGION_ERASE00 ) - ROM_LOAD64_WORD( "312a08.33g", 0x000000, 2*1024*1024, CRC(29015d56) SHA1(7273270804ecefd8f59469c2c2a8a89fb045a12b) ) - ROM_LOAD64_WORD( "312a09.30g", 0x000002, 2*1024*1024, CRC(b2c5d6d5) SHA1(8248612275ca862c6688de5c6f24f37aeb3f9fe5) ) - ROM_LOAD64_WORD( "312a10.28g", 0x000004, 2*1024*1024, CRC(3c570d04) SHA1(ebbf7d28726e98c8895c9bf901f8b2dd38018c77) ) - ROM_LOAD64_WORD( "312a11.25g", 0x000006, 2*1024*1024, CRC(5f474357) SHA1(1f6d99f1ea69e07a65731ea4eae5917452cfcab6) ) + ROM_LOAD64_WORD( "312a11.25g", 0x000000, 2*1024*1024, CRC(5f474357) SHA1(1f6d99f1ea69e07a65731ea4eae5917452cfcab6) ) + ROM_LOAD64_WORD( "312a10.28g", 0x000002, 2*1024*1024, CRC(3c570d04) SHA1(ebbf7d28726e98c8895c9bf901f8b2dd38018c77) ) + ROM_LOAD64_WORD( "312a09.30g", 0x000004, 2*1024*1024, CRC(b2c5d6d5) SHA1(8248612275ca862c6688de5c6f24f37aeb3f9fe5) ) + ROM_LOAD64_WORD( "312a08.33g", 0x000006, 2*1024*1024, CRC(29015d56) SHA1(7273270804ecefd8f59469c2c2a8a89fb045a12b) ) /* sound data */ ROM_REGION( 0x400000, "shared", 0 ) @@ -3277,10 +3261,10 @@ ROM_START( le2j ) /* sprites */ ROM_REGION( 0x800000, "gfx2", ROMREGION_ERASE00 ) - ROM_LOAD64_WORD( "312a08.33g", 0x000000, 2*1024*1024, CRC(29015d56) SHA1(7273270804ecefd8f59469c2c2a8a89fb045a12b) ) - ROM_LOAD64_WORD( "312a09.30g", 0x000002, 2*1024*1024, CRC(b2c5d6d5) SHA1(8248612275ca862c6688de5c6f24f37aeb3f9fe5) ) - ROM_LOAD64_WORD( "312a10.28g", 0x000004, 2*1024*1024, CRC(3c570d04) SHA1(ebbf7d28726e98c8895c9bf901f8b2dd38018c77) ) - ROM_LOAD64_WORD( "312a11.25g", 0x000006, 2*1024*1024, CRC(5f474357) SHA1(1f6d99f1ea69e07a65731ea4eae5917452cfcab6) ) + ROM_LOAD64_WORD( "312a11.25g", 0x000000, 2*1024*1024, CRC(5f474357) SHA1(1f6d99f1ea69e07a65731ea4eae5917452cfcab6) ) + ROM_LOAD64_WORD( "312a10.28g", 0x000002, 2*1024*1024, CRC(3c570d04) SHA1(ebbf7d28726e98c8895c9bf901f8b2dd38018c77) ) + ROM_LOAD64_WORD( "312a09.30g", 0x000004, 2*1024*1024, CRC(b2c5d6d5) SHA1(8248612275ca862c6688de5c6f24f37aeb3f9fe5) ) + ROM_LOAD64_WORD( "312a08.33g", 0x000006, 2*1024*1024, CRC(29015d56) SHA1(7273270804ecefd8f59469c2c2a8a89fb045a12b) ) /* sound data */ ROM_REGION( 0x400000, "shared", 0 ) @@ -3798,20 +3782,9 @@ DRIVER_INIT_MEMBER(konamigx_state,konamigx) i++; } - switch (readback) - { - case BPP5: - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd4a000, 0xd4a00f, read32_delegate(FUNC(konamigx_state::gx5bppspr_r),this)); - break; + if (readback == BPP66) + m_maincpu->space(AS_PROGRAM).install_read_handler(0xd00000, 0xd01fff, read32_delegate(FUNC(konamigx_state::k_6bpp_rom_long_r), this)); - case BPP66: - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd00000, 0xd01fff, read32_delegate(FUNC(konamigx_state::k_6bpp_rom_long_r), this)); - // fall through - - case BPP6: - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd4a000, 0xd4a00f, read32_delegate(FUNC(konamigx_state::gx6bppspr_r),this)); - break; - } #undef BPP5 #undef BPP6 diff --git a/src/mame/drivers/mystwarr.c b/src/mame/drivers/mystwarr.c index 189a3737a1b..76502908844 100644 --- a/src/mame/drivers/mystwarr.c +++ b/src/mame/drivers/mystwarr.c @@ -1,5 +1,3 @@ -#define MW_DEBUG 0 - /************************************************************************** * Mystic Warrior (c) 1993 Konami * Metamorphic Force (c) 1993 Konami @@ -298,7 +296,7 @@ static ADDRESS_MAP_START( mystwarr_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(k053247_scattered_word_r,k053247_scattered_word_w) AM_SHARE("spriteram") AM_RANGE(0x480000, 0x4800ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w) AM_RANGE(0x482000, 0x48200f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r) - AM_RANGE(0x482010, 0x48201f) AM_DEVWRITE("k055673", k055673_device,k053247_reg_word_w) + AM_RANGE(0x482010, 0x48201f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w) AM_RANGE(0x484000, 0x484007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) AM_RANGE(0x48a000, 0x48a01f) AM_DEVWRITE("k054338", k054338_device, word_w) AM_RANGE(0x48c000, 0x48c03f) AM_DEVWRITE("k056832", k056832_device,word_w) @@ -319,12 +317,6 @@ static ADDRESS_MAP_START( mystwarr_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x602000, 0x603fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read(essential) AM_RANGE(0x680000, 0x683fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r) AM_RANGE(0x700000, 0x701fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") -#if MW_DEBUG - AM_RANGE(0x482010, 0x48201f) AM_DEVREAD("k055673", k055673_device, k053247_reg_word_r) - AM_RANGE(0x484000, 0x484007) AM_DEVREAD("k055673", k055673_device, k053246_reg_word_r) - AM_RANGE(0x48a000, 0x48a01f) AM_DEVREAD("k054338", k054338_device, word_r) - AM_RANGE(0x48c000, 0x48c03f) AM_DEVREAD("k056832", k056832_device, word_r) -#endif ADDRESS_MAP_END /* Metamorphic Force */ @@ -335,7 +327,7 @@ static ADDRESS_MAP_START( metamrph_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x211000, 0x21ffff) AM_RAM AM_RANGE(0x240000, 0x240007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) AM_RANGE(0x244000, 0x24400f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r) - AM_RANGE(0x244010, 0x24401f) AM_DEVWRITE("k055673", k055673_device,k053247_reg_word_w) + AM_RANGE(0x244010, 0x24401f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w) AM_RANGE(0x24c000, 0x24ffff) AM_DEVREADWRITE("k053250_1", k053250_device, ram_r, ram_w) AM_RANGE(0x250000, 0x25000f) AM_DEVREADWRITE("k053250_1", k053250_device, reg_r, reg_w) AM_RANGE(0x254000, 0x25401f) AM_DEVWRITE("k054338", k054338_device, word_w) @@ -359,13 +351,6 @@ static ADDRESS_MAP_START( metamrph_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x310000, 0x311fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r) AM_RANGE(0x320000, 0x321fff) AM_DEVREAD("k053250_1", k053250_device, rom_r) AM_RANGE(0x330000, 0x331fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") -#if MW_DEBUG - AM_RANGE(0x240000, 0x240007) AM_DEVREAD("k055673", k055673_device, k053246_reg_word_r) - AM_RANGE(0x244010, 0x24401f) AM_DEVREAD("k055673", k055673_device, k053247_reg_word_r) - AM_RANGE(0x254000, 0x25401f) AM_DEVREAD("k054338", k054338_device, word_r) - AM_RANGE(0x26C000, 0x26C007) AM_DEVREAD("k056832", k056832_device, b_word_r) - AM_RANGE(0x270000, 0x27003f) AM_DEVREAD("k056832", k056832_device, word_r) -#endif ADDRESS_MAP_END /* Violent Storm */ @@ -376,7 +361,7 @@ static ADDRESS_MAP_START( viostorm_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x211000, 0x21ffff) AM_RAM AM_RANGE(0x240000, 0x240007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) AM_RANGE(0x244000, 0x24400f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r) - AM_RANGE(0x244010, 0x24401f) AM_DEVWRITE("k055673", k055673_device,k053247_reg_word_w) + AM_RANGE(0x244010, 0x24401f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w) AM_RANGE(0x24c000, 0x24ffff) AM_RAM // K053250 ram AM_RANGE(0x250000, 0x25000f) AM_RAM // K053250 reg AM_RANGE(0x254000, 0x25401f) AM_DEVWRITE("k054338", k054338_device, word_w) @@ -401,13 +386,6 @@ static ADDRESS_MAP_START( viostorm_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x304000, 0x3041ff) AM_RAM AM_RANGE(0x310000, 0x311fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r) AM_RANGE(0x330000, 0x331fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") -#if MW_DEBUG - AM_RANGE(0x240000, 0x240007) AM_DEVREAD("k055673", k055673_device, k053246_reg_word_r) - AM_RANGE(0x244010, 0x24401f) AM_DEVREAD("k055673", k055673_device, k053247_reg_word_r) - AM_RANGE(0x254000, 0x25401f) AM_DEVREAD("k054338", k054338_device, word_r) - AM_RANGE(0x26C000, 0x26C007) AM_DEVREAD("k056832", k056832_device, b_word_r) - AM_RANGE(0x270000, 0x27003f) AM_DEVREAD("k056832", k056832_device, word_r) -#endif ADDRESS_MAP_END // Martial Champion specific interfaces @@ -467,7 +445,7 @@ static ADDRESS_MAP_START( martchmp_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x300000, 0x3fffff) AM_ROM // data ROM AM_RANGE(0x400000, 0x4000ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w) // PCU2 AM_RANGE(0x402000, 0x40200f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r) // sprite ROM readback - AM_RANGE(0x402010, 0x40201f) AM_DEVWRITE("k055673", k055673_device,k053247_reg_word_w) // OBJSET2 + AM_RANGE(0x402010, 0x40201f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w) // OBJSET2 AM_RANGE(0x404000, 0x404007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // OBJSET1 AM_RANGE(0x40a000, 0x40a01f) AM_DEVWRITE("k054338", k054338_device, word_w) // CLTC AM_RANGE(0x40c000, 0x40c03f) AM_DEVWRITE("k056832", k056832_device,word_w) // VACSET @@ -490,13 +468,6 @@ static ADDRESS_MAP_START( martchmp_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x680000, 0x681fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM AM_RANGE(0x682000, 0x683fff) AM_DEVREADWRITE("k056832", k056832_device,ram_word_r,ram_word_w) // tilemap RAM mirror read/write (essential) AM_RANGE(0x700000, 0x703fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r) // tile ROM readback -#if MW_DEBUG - AM_RANGE(0x402010, 0x40201f) AM_DEVREAD("k055673", k055673_device, k053247_reg_word_r) - AM_RANGE(0x404000, 0x404007) AM_DEVREAD("k055673", k055673_device, k053246_reg_word_r) - AM_RANGE(0x40a000, 0x40a01f) AM_DEVREAD("k054338", k054338_device, word_r) - AM_RANGE(0x40c000, 0x40c03f) AM_DEVREAD("k056832", k056832_device, word_r) - AM_RANGE(0x41e000, 0x41e007) AM_DEVREAD("k056832", k056832_device, b_word_r) -#endif ADDRESS_MAP_END /* Ultimate Battler Dadandarn */ @@ -509,7 +480,7 @@ static ADDRESS_MAP_START( dadandrn_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x430000, 0x430007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) AM_RANGE(0x440000, 0x443fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r) AM_RANGE(0x450000, 0x45000f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r) - AM_RANGE(0x450010, 0x45001f) AM_DEVWRITE("k055673", k055673_device,k053247_reg_word_w) + AM_RANGE(0x450010, 0x45001f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w) AM_RANGE(0x460000, 0x46001f) AM_WRITEONLY AM_SHARE("k053936_0_ct16") AM_RANGE(0x470000, 0x470fff) AM_RAM AM_SHARE("k053936_0_li16") AM_RANGE(0x480000, 0x48003f) AM_DEVWRITE("k056832", k056832_device,word_w) // VACSET @@ -533,13 +504,6 @@ static ADDRESS_MAP_START( dadandrn_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0xa00000, 0xa7ffff) AM_READ(ddd_053936_tilerom_1_r) // 128k tilemap readback AM_RANGE(0xc00000, 0xdfffff) AM_READ(ddd_053936_tilerom_2_r) // tile character readback AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // watchdog -#if MW_DEBUG - AM_RANGE(0x430000, 0x430007) AM_DEVREAD("k055673", k055673_device, k053246_reg_word_r) - AM_RANGE(0x450010, 0x45001f) AM_DEVREAD("k055673", k055673_device, k053247_reg_word_r) - AM_RANGE(0x480000, 0x48003f) AM_DEVREAD("k056832", k056832_device, word_r) - AM_RANGE(0x482000, 0x482007) AM_DEVREAD("k056832", k056832_device, b_word_r) - AM_RANGE(0x48c000, 0x48c01f) AM_DEVREAD("k054338", k054338_device, word_r) -#endif ADDRESS_MAP_END /* Gaiapolis */ @@ -555,7 +519,7 @@ static ADDRESS_MAP_START( gaiapols_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x430000, 0x430007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) AM_RANGE(0x440000, 0x441fff) AM_DEVREAD("k056832", k056832_device, mw_rom_word_r) AM_RANGE(0x450000, 0x45000f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r) - AM_RANGE(0x450010, 0x45001f) AM_DEVWRITE("k055673", k055673_device,k053247_reg_word_w) + AM_RANGE(0x450010, 0x45001f) AM_DEVWRITE("k055673", k055673_device,k055673_reg_word_w) AM_RANGE(0x460000, 0x46001f) AM_WRITEONLY AM_SHARE("k053936_0_ct16") AM_RANGE(0x470000, 0x470fff) AM_RAM AM_SHARE("k053936_0_li16") AM_RANGE(0x480000, 0x48003f) AM_DEVWRITE("k056832", k056832_device,word_w) // VACSET @@ -579,13 +543,6 @@ static ADDRESS_MAP_START( gaiapols_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0xa00000, 0xa7ffff) AM_READ(ddd_053936_tilerom_1_r) // 128k tilemap readback AM_RANGE(0xc00000, 0xdfffff) AM_READ(gai_053936_tilerom_2_r) // tile character readback AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // watchdog -#if MW_DEBUG - AM_RANGE(0x430000, 0x430007) AM_DEVREAD("k055673", k055673_device, k053246_reg_word_r) - AM_RANGE(0x450010, 0x45001f) AM_DEVREAD("k055673", k055673_device, k053247_reg_word_r) - AM_RANGE(0x480000, 0x48003f) AM_DEVREAD("k056832", k056832_device, word_r) - AM_RANGE(0x482000, 0x482007) AM_DEVREAD("k056832", k056832_device, b_word_r) - AM_RANGE(0x48c000, 0x48c01f) AM_DEVREAD("k054338", k054338_device, word_r) -#endif ADDRESS_MAP_END /**********************************************************************************/ @@ -1013,7 +970,7 @@ static MACHINE_CONFIG_START( mystwarr, mystwarr_state ) MCFG_DEVICE_ADD("k055673", K055673, 0) MCFG_K055673_CB(mystwarr_state, mystwarr_sprite_callback) - MCFG_K055673_CONFIG("gfx2", 0, 0, -48, -24) + MCFG_K055673_CONFIG("gfx2", 0, K055673_LAYOUT_GX, -48, -24) MCFG_K055673_GFXDECODE("gfxdecode") MCFG_K055673_PALETTE("palette") @@ -1066,7 +1023,7 @@ static MACHINE_CONFIG_DERIVED( viostorm, mystwarr ) MCFG_DEVICE_MODIFY("k055673") MCFG_K055673_CB(mystwarr_state, metamrph_sprite_callback) - MCFG_K055673_CONFIG("gfx2", 0, 1, -62, -23) + MCFG_K055673_CONFIG("gfx2", 0, K055673_LAYOUT_RNG, -62, -23) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( metamrph, mystwarr ) @@ -1099,7 +1056,7 @@ static MACHINE_CONFIG_DERIVED( metamrph, mystwarr ) MCFG_DEVICE_MODIFY("k055673") MCFG_K055673_CB(mystwarr_state, metamrph_sprite_callback) - MCFG_K055673_CONFIG("gfx2", 0, 1, -51, -24) + MCFG_K055673_CONFIG("gfx2", 0, K055673_LAYOUT_RNG, -51, -24) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( dadandrn, mystwarr ) @@ -1132,7 +1089,7 @@ static MACHINE_CONFIG_DERIVED( dadandrn, mystwarr ) MCFG_DEVICE_MODIFY("k055673") MCFG_K055673_CB(mystwarr_state, gaiapols_sprite_callback) - MCFG_K055673_CONFIG("gfx2", 0, 0, -42, -22) + MCFG_K055673_CONFIG("gfx2", 0, K055673_LAYOUT_GX, -42, -22) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( gaiapols, mystwarr ) @@ -1168,7 +1125,7 @@ static MACHINE_CONFIG_DERIVED( gaiapols, mystwarr ) MCFG_DEVICE_MODIFY("k055673") MCFG_K055673_CB(mystwarr_state, gaiapols_sprite_callback) - MCFG_K055673_CONFIG("gfx2", 0, 1, -61, -22) // stage2 brick walls + MCFG_K055673_CONFIG("gfx2", 0, K055673_LAYOUT_RNG, -61, -22) // stage2 brick walls MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( martchmp, mystwarr ) @@ -1203,7 +1160,7 @@ static MACHINE_CONFIG_DERIVED( martchmp, mystwarr ) MCFG_DEVICE_MODIFY("k055673") MCFG_K055673_CB(mystwarr_state, martchmp_sprite_callback) - MCFG_K055673_CONFIG("gfx2", 0, 0, -58, -23) + MCFG_K055673_CONFIG("gfx2", 0, K055673_LAYOUT_GX, -58, -23) MACHINE_CONFIG_END /**********************************************************************************/ diff --git a/src/mame/drivers/rungun.c b/src/mame/drivers/rungun.c index fc03ecae1bc..93e2351fda9 100644 --- a/src/mame/drivers/rungun.c +++ b/src/mame/drivers/rungun.c @@ -50,7 +50,6 @@ #include "includes/konamipt.h" #include "includes/rungun.h" -#define RNG_DEBUG 0 READ16_MEMBER(rungun_state::rng_sysregs_r) @@ -175,7 +174,7 @@ static ADDRESS_MAP_START( rungun_map, AS_PROGRAM, 16, rungun_state ) AM_RANGE(0x580014, 0x580015) AM_READ(sound_status_msb_r) AM_RANGE(0x580000, 0x58001f) AM_RAM // sound regs read/write fall-through AM_RANGE(0x5c0000, 0x5c000f) AM_DEVREAD("k055673", k055673_device, k055673_rom_word_r) // 246A ROM readback window - AM_RANGE(0x5c0010, 0x5c001f) AM_DEVWRITE("k055673", k055673_device, k053247_reg_word_w) + AM_RANGE(0x5c0010, 0x5c001f) AM_DEVWRITE("k055673", k055673_device, k055673_reg_word_w) AM_RANGE(0x600000, 0x600fff) AM_DEVREADWRITE("k055673", k055673_device, k053247_word_r, k053247_word_w) // OBJ RAM AM_RANGE(0x601000, 0x601fff) AM_RAM // communication? second monitor buffer? AM_RANGE(0x640000, 0x640007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // '246A registers @@ -184,10 +183,6 @@ static ADDRESS_MAP_START( rungun_map, AS_PROGRAM, 16, rungun_state ) AM_RANGE(0x700000, 0x7007ff) AM_DEVREADWRITE("k053936", k053936_device, linectrl_r, linectrl_w) // PSAC "Line RAM" AM_RANGE(0x740000, 0x741fff) AM_READWRITE(rng_ttl_ram_r, rng_ttl_ram_w) // text plane RAM AM_RANGE(0x7c0000, 0x7c0001) AM_WRITENOP // watchdog -#if RNG_DEBUG - AM_RANGE(0x5c0010, 0x5c001f) AM_DEVREAD("k055673", k055673_device, k053247_reg_word_r) - AM_RANGE(0x640000, 0x640007) AM_DEVREAD("k055673", k055673_device, k053246_reg_word_r) -#endif ADDRESS_MAP_END diff --git a/src/mame/includes/konamigx.h b/src/mame/includes/konamigx.h index c12c21fda96..46e6e0e4c9f 100644 --- a/src/mame/includes/konamigx.h +++ b/src/mame/includes/konamigx.h @@ -79,8 +79,6 @@ public: DECLARE_WRITE32_MEMBER(sound020_w); DECLARE_READ32_MEMBER(le2_gun_H_r); DECLARE_READ32_MEMBER(le2_gun_V_r); - DECLARE_READ32_MEMBER(gx5bppspr_r); - DECLARE_READ32_MEMBER(gx6bppspr_r); DECLARE_READ32_MEMBER(type1_roz_r1); DECLARE_READ32_MEMBER(type1_roz_r2); DECLARE_READ32_MEMBER(type3_sync_r); diff --git a/src/mame/video/k053246_k053247_k055673.c b/src/mame/video/k053246_k053247_k055673.c index 818e45594ea..8e6e74436fd 100644 --- a/src/mame/video/k053246_k053247_k055673.c +++ b/src/mame/video/k053246_k053247_k055673.c @@ -88,20 +88,11 @@ int k053247_device::k053247_read_register( int regnum ) } -WRITE16_MEMBER( k053247_device::k053247_reg_word_w ) // write-only OBJSET2 registers (see p.43 table 6.1) +WRITE16_MEMBER( k053247_device::k055673_reg_word_w ) // write-only OBJSET2 registers (see p.43 table 6.1) { COMBINE_DATA(m_kx47_regs + offset); } -WRITE32_MEMBER( k053247_device::k053247_reg_long_w ) -{ - offset <<= 1; - COMBINE_DATA(m_kx47_regs + offset + 1); - mem_mask >>= 16; - data >>= 16; - COMBINE_DATA(m_kx47_regs + offset); -} - READ16_MEMBER( k053247_device::k053247_word_r ) { return m_ram[offset]; @@ -112,20 +103,6 @@ WRITE16_MEMBER( k053247_device::k053247_word_w ) COMBINE_DATA(m_ram + offset); } -READ32_MEMBER( k053247_device::k053247_long_r ) -{ - return m_ram[offset * 2 + 1] | (m_ram[offset * 2] << 16); -} - -WRITE32_MEMBER( k053247_device::k053247_long_w ) -{ - offset <<= 1; - COMBINE_DATA(m_ram + offset + 1); - mem_mask >>= 16; - data >>= 16; - COMBINE_DATA(m_ram + offset); -} - READ8_MEMBER( k053247_device::k053247_r ) { int offs = offset >> 1; @@ -146,11 +123,13 @@ WRITE8_MEMBER( k053247_device::k053247_w ) m_ram[offs] = (m_ram[offs] & 0x00ff) | (data << 8); } -// Mystic Warriors hardware games support a non-objcha based ROM readback +// The K055673 supports a non-objcha based ROM readback // write the address to the 246 as usual, but there's a completely separate ROM // window that works without needing an objcha line. // in this window, +0 = 32 bits from one set of ROMs, and +8 = 32 bits from another set -READ16_MEMBER( k053247_device::k055673_rom_word_r ) // 5bpp + +// FIXME: rearrange ROM loading so this can be merged with the 4/6/8bpp version +READ16_MEMBER( k053247_device::k055673_5bpp_rom_word_r ) // 5bpp { UINT8 *ROM8 = (UINT8 *)space.machine().root_device().memregion(m_memory_region)->base(); UINT16 *ROM = (UINT16 *)space.machine().root_device().memregion(m_memory_region)->base(); @@ -188,38 +167,21 @@ READ16_MEMBER( k053247_device::k055673_rom_word_r ) // 5bpp return 0; } -READ16_MEMBER( k053247_device::k055673_GX6bpp_rom_word_r ) +READ16_MEMBER( k053247_device::k055673_rom_word_r ) { + if (m_bpp == 5) + return k055673_5bpp_rom_word_r(space, offset, mem_mask); + UINT16 *ROM = (UINT16 *)space.machine().root_device().memregion(m_memory_region)->base(); int romofs; romofs = m_kx46_regs[6] << 16 | m_kx46_regs[7] << 8 | m_kx46_regs[4]; - romofs /= 4; // romofs increments 4 at a time - romofs *= 12 / 2; // each increment of romofs = 12 new bytes (6 new words) + romofs = (romofs >> 2) * m_bpp; - switch (offset) - { - case 0: - return ROM[romofs + 3]; - case 1: - return ROM[romofs + 4]; - case 2: - case 3: - return ROM[romofs + 5]; - case 4: - return ROM[romofs]; - case 5: - return ROM[romofs + 1]; - case 6: - case 7: - return ROM[romofs + 2]; - default: -// LOG(("55673_rom_word_r: Unknown read offset %x (PC=%x)\n", offset, space.device().safe_pc())); - break; - } + if ((offset & 0x4) == 0) romofs += m_bpp >> 1; - return 0; + return ROM[romofs + (offset & 0x3)]; } READ8_MEMBER( k053247_device::k053246_r ) @@ -260,19 +222,6 @@ WRITE16_MEMBER( k053247_device::k053246_word_w ) k053246_w( space, (offset << 1) + 1,data & 0xff); } -READ32_MEMBER( k053247_device::k053246_long_r ) -{ - offset <<= 1; - return (k053246_word_r( space, offset + 1, 0xffff) | k053246_word_r( space, offset, 0xffff) << 16); -} - -WRITE32_MEMBER( k053247_device::k053246_long_w ) -{ - offset <<= 1; - k053246_word_w( space, offset, data >> 16, mem_mask >> 16); - k053246_word_w( space, offset + 1, data, mem_mask); -} - void k053247_device::k053246_set_objcha_line( int state ) { m_objcha_line = state; @@ -992,11 +941,11 @@ void k055673_device::device_start() 16,16, 0, 8, - { 8*1,8*0,8*3,8*2,8*5,8*4,8*7,8*6 }, + { 56, 48, 40, 32, 24, 16, 8, 0 }, { 0,1,2,3,4,5,6,7,64+0,64+1,64+2,64+3,64+4,64+5,64+6,64+7 }, { 128*0, 128*1, 128*2, 128*3, 128*4, 128*5, 128*6, 128*7, 128*8, 128*9, 128*10, 128*11, 128*12, 128*13, 128*14, 128*15 }, - 128*16 + 16*16*8 }; static const gfx_layout spritelayout4 = /* System GX 6bpp sprite layout */ { @@ -1023,7 +972,7 @@ void k055673_device::device_start() alt_k055673_rom = (UINT16 *)machine().root_device().memregion(m_memory_region)->base(); /* decode the graphics */ - switch (m_plane_order) + switch (m_bpp) { case K055673_LAYOUT_GX: size4 = (machine().root_device().memregion(m_memory_region)->bytes()/(1024*1024))/5; @@ -1155,7 +1104,7 @@ void k053247_device::device_start() }; /* decode the graphics */ - switch (m_plane_order) + switch (m_bpp) { case NORMAL_PLANE_ORDER: total = machine().root_device().memregion(m_memory_region)->bytes() / 128; @@ -1232,14 +1181,3 @@ READ16_MEMBER( k053247_device::k053246_reg_word_r ) { return(m_kx46_regs[offset * 2] << 8 | m_kx46_regs[offset * 2 + 1]); } // OBJSET1 - -READ16_MEMBER( k053247_device::k053247_reg_word_r ) -{ - return(m_kx47_regs[offset]); -} // OBJSET2 - -READ32_MEMBER( k053247_device::k053247_reg_long_r ) -{ - offset <<= 1; - return (k053247_reg_word_r( space, offset + 1, 0xffff) | k053247_reg_word_r( space, offset, 0xffff) << 16); -} diff --git a/src/mame/video/k053246_k053247_k055673.h b/src/mame/video/k053246_k053247_k055673.h index 1d2b4597bb4..3183772bc72 100644 --- a/src/mame/video/k053246_k053247_k055673.h +++ b/src/mame/video/k053246_k053247_k055673.h @@ -6,7 +6,7 @@ #ifndef __K05324x_H__ #define __K05324x_H__ -#define NORMAL_PLANE_ORDER 0x0123 +#define NORMAL_PLANE_ORDER 4 typedef device_delegate k053247_cb_delegate; #define K053246_CB_MEMBER(_name) void _name(int *code, int *color, int *priority_mask) @@ -26,10 +26,10 @@ typedef device_delegate k05324 /** Konami 053246 / 053247 / 055673 **/ -#define K055673_LAYOUT_GX 0 -#define K055673_LAYOUT_RNG 1 -#define K055673_LAYOUT_LE2 2 -#define K055673_LAYOUT_GX6 3 +#define K055673_LAYOUT_GX 5 +#define K055673_LAYOUT_RNG 4 +#define K055673_LAYOUT_LE2 8 +#define K055673_LAYOUT_GX6 6 /* @@ -68,12 +68,12 @@ public: static void static_set_gfxdecode_tag(device_t &device, const char *tag); static void static_set_palette_tag(device_t &device, const char *tag); static void set_k053247_callback(device_t &device, k053247_cb_delegate callback) { downcast(device).m_k053247_cb = callback; } - static void set_config(device_t &device, const char *gfx_reg, int gfx_num, int order, int dx, int dy) + static void set_config(device_t &device, const char *gfx_reg, int gfx_num, int bpp, int dx, int dy) { k053247_device &dev = downcast(device); dev.m_memory_region = gfx_reg; dev.m_gfx_num = gfx_num; - dev.m_plane_order = order; + dev.m_bpp = bpp; dev.m_dx = dx; dev.m_dy = dy; } @@ -81,16 +81,13 @@ public: void clear_all(); DECLARE_READ16_MEMBER( k055673_rom_word_r ); - DECLARE_READ16_MEMBER( k055673_GX6bpp_rom_word_r ); + DECLARE_READ16_MEMBER( k055673_5bpp_rom_word_r ); DECLARE_READ8_MEMBER( k053247_r ); DECLARE_WRITE8_MEMBER( k053247_w ); DECLARE_READ16_MEMBER( k053247_word_r ); DECLARE_WRITE16_MEMBER( k053247_word_w ); - DECLARE_READ32_MEMBER( k053247_long_r ); - DECLARE_WRITE32_MEMBER( k053247_long_w ); - DECLARE_WRITE16_MEMBER( k053247_reg_word_w ); // "OBJSET2" registers - DECLARE_WRITE32_MEMBER( k053247_reg_long_w ); + DECLARE_WRITE16_MEMBER( k055673_reg_word_w ); // "OBJSET2" registers void k053247_sprites_draw( bitmap_ind16 &bitmap,const rectangle &cliprect); void k053247_sprites_draw( bitmap_rgb32 &bitmap,const rectangle &cliprect); @@ -104,16 +101,12 @@ public: DECLARE_WRITE8_MEMBER( k053246_w ); DECLARE_READ16_MEMBER( k053246_word_r ); DECLARE_WRITE16_MEMBER( k053246_word_w ); - DECLARE_READ32_MEMBER( k053246_long_r ); - DECLARE_WRITE32_MEMBER( k053246_long_w ); void k053246_set_objcha_line( int state); int k053246_is_irq_enabled(void); int k053246_read_register( int regnum); DECLARE_READ16_MEMBER( k053246_reg_word_r ); // OBJSET1 - DECLARE_READ16_MEMBER( k053247_reg_word_r ); // OBJSET2 - DECLARE_READ32_MEMBER( k053247_reg_long_r ); // OBJSET2 UINT16 *m_ram; @@ -130,7 +123,7 @@ public: //FIXME: device should be updated to use device_gfx_interface to get rid of most of these! const char *m_memory_region; int m_gfx_num; - int m_plane_order; + int m_bpp; required_device m_gfxdecode; required_device m_palette; diff --git a/src/mame/video/konami_helper.h b/src/mame/video/konami_helper.h index 4a2dae37203..15e80709038 100644 --- a/src/mame/video/konami_helper.h +++ b/src/mame/video/konami_helper.h @@ -4,8 +4,6 @@ #ifndef __KONAMI_HELPER_H__ #define __KONAMI_HELPER_H__ -#define NORMAL_PLANE_ORDER 0x0123 - void konami_decode_gfx(running_machine &machine, gfxdecode_device * gfxdecode, palette_device &palette, int gfx_index, UINT8 *data, UINT32 total, const gfx_layout *layout, int bpp); /* helper function to sort three tile layers by priority order */