k053246: fix 8bpp ROM readback; remove some obsolete trampoline and debug handlers (nw)

This commit is contained in:
Alex W. Jackson 2014-07-30 13:59:12 +00:00
parent 996d2fcf88
commit eb570b4839
7 changed files with 65 additions and 213 deletions

View File

@ -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

View File

@ -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
/**********************************************************************************/

View File

@ -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

View File

@ -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);

View File

@ -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);
}

View File

@ -6,7 +6,7 @@
#ifndef __K05324x_H__
#define __K05324x_H__
#define NORMAL_PLANE_ORDER 0x0123
#define NORMAL_PLANE_ORDER 4
typedef device_delegate<void (int *code, int *color, int *priority_mask)> k053247_cb_delegate;
#define K053246_CB_MEMBER(_name) void _name(int *code, int *color, int *priority_mask)
@ -26,10 +26,10 @@ typedef device_delegate<void (int *code, int *color, int *priority_mask)> 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<k053247_device &>(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<k053247_device &>(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<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;

View File

@ -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 */