From e9c6b471e074ff36d48d86dd18fbf3397f712ae4 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Wed, 10 Jul 2013 01:43:33 +0000 Subject: [PATCH] begin collapse (nw) --- src/mame/drivers/konamigx.c | 18 +- src/mame/drivers/mystwarr.c | 83 ++-- src/mame/includes/konamigx.h | 10 + src/mame/includes/mystwarr.h | 2 + src/mame/video/k054156_k054157_k056832.c | 577 +++++++++++------------ src/mame/video/k054156_k054157_k056832.h | 127 +++-- src/mame/video/konamigx.c | 106 ++--- src/mame/video/konicdev.h | 4 - src/mame/video/mystwarr.c | 72 +-- 9 files changed, 526 insertions(+), 473 deletions(-) diff --git a/src/mame/drivers/konamigx.c b/src/mame/drivers/konamigx.c index 4f183ae5395..aae3b82f1c8 100644 --- a/src/mame/drivers/konamigx.c +++ b/src/mame/drivers/konamigx.c @@ -1150,10 +1150,10 @@ static ADDRESS_MAP_START( gx_base_memmap, AS_PROGRAM, 32, konamigx_state ) AM_RANGE(0x200000, 0x3fffff) AM_ROM // main program ROM AM_RANGE(0x400000, 0x7fffff) AM_ROM // data ROM AM_RANGE(0xc00000, 0xc1ffff) AM_RAM AM_SHARE("workram") // work RAM - AM_RANGE(0xd00000, 0xd01fff) AM_READ_LEGACY(K056832_5bpp_rom_long_r) + AM_RANGE(0xd00000, 0xd01fff) AM_DEVREAD("k056832", k056832_device, altK056832_5bpp_rom_long_r) AM_RANGE(0xd20000, 0xd20fff) AM_READWRITE_LEGACY(K053247_long_r, K053247_long_w) AM_RANGE(0xd21000, 0xd23fff) AM_RAM - AM_RANGE(0xd40000, 0xd4003f) AM_WRITE_LEGACY(K056832_long_w) + AM_RANGE(0xd40000, 0xd4003f) AM_DEVWRITE("k056832", k056832_device, altK056832_long_w) AM_RANGE(0xd44000, 0xd4400f) AM_WRITE(konamigx_tilebank_w) AM_RANGE(0xd48000, 0xd48007) AM_WRITE_LEGACY(K053246_long_w) AM_RANGE(0xd4a010, 0xd4a01f) AM_WRITE_LEGACY(K053247_reg_long_w) @@ -1168,10 +1168,10 @@ static ADDRESS_MAP_START( gx_base_memmap, AS_PROGRAM, 32, konamigx_state ) AM_RANGE(0xd5c000, 0xd5c003) AM_READ_PORT("INPUTS") AM_RANGE(0xd5e000, 0xd5e003) AM_READ_PORT("SERVICE") AM_RANGE(0xd80000, 0xd8001f) AM_WRITE_LEGACY(K054338_long_w) - AM_RANGE(0xda0000, 0xda1fff) AM_READWRITE_LEGACY(K056832_ram_long_r, K056832_ram_long_w) - AM_RANGE(0xda2000, 0xda3fff) AM_READWRITE_LEGACY(K056832_ram_long_r, K056832_ram_long_w) + AM_RANGE(0xda0000, 0xda1fff) AM_DEVREADWRITE("k056832", k056832_device, altK056832_ram_long_r, altK056832_ram_long_w) + AM_RANGE(0xda2000, 0xda3fff) AM_DEVREADWRITE("k056832", k056832_device, altK056832_ram_long_r, altK056832_ram_long_w) #if GX_DEBUG - AM_RANGE(0xd40000, 0xd4003f) AM_READ_LEGACY(K056832_long_r) + AM_RANGE(0xd40000, 0xd4003f) AM_READ_LEGACY(altK056832_long_r) AM_RANGE(0xd50000, 0xd500ff) AM_READ_LEGACY(K055555_long_r) AM_RANGE(0xd4a010, 0xd4a01f) AM_READ_LEGACY(K053247_reg_long_r) #endif @@ -1792,6 +1792,8 @@ static MACHINE_CONFIG_START( konamigx, konamigx_state ) MCFG_PALETTE_LENGTH(8192) + MCFG_K056832_ADD_NOINTF("k056832"/*, konamigx_k056832_intf*/) + MCFG_VIDEO_START_OVERRIDE(konamigx_state,konamigx_5bpp) /* sound hardware */ @@ -3715,6 +3717,10 @@ static const GXGameInfoT gameDefs[] = { "", -1, -1, -1, -1 }, }; +READ32_MEMBER( konamigx_state::altK056832_6bpp_rom_long_r ) +{ + return m_k056832->altK056832_6bpp_rom_long_r(space,offset,mem_mask); +} DRIVER_INIT_MEMBER(konamigx_state,konamigx) { @@ -3804,7 +3810,7 @@ DRIVER_INIT_MEMBER(konamigx_state,konamigx) break; case BPP66: - m_maincpu->space(AS_PROGRAM).install_legacy_read_handler(0xd00000, 0xd01fff, FUNC(K056832_6bpp_rom_long_r)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xd00000, 0xd01fff, read32_delegate(FUNC(konamigx_state::altK056832_6bpp_rom_long_r), this)); case BPP6: m_maincpu->space(AS_PROGRAM).install_read_handler(0xd4a000, 0xd4a00f, read32_delegate(FUNC(konamigx_state::gx6bppspr_r),this)); diff --git a/src/mame/drivers/mystwarr.c b/src/mame/drivers/mystwarr.c index 65f1d0444e9..57302c5f83d 100644 --- a/src/mame/drivers/mystwarr.c +++ b/src/mame/drivers/mystwarr.c @@ -203,7 +203,7 @@ READ16_MEMBER(mystwarr_state::sound_status_msb_r) WRITE16_MEMBER(mystwarr_state::irq_ack_w) { - K056832_b_word_w(space, offset, data, mem_mask); + m_k056832->altK056832_b_word_w(space, offset, data, mem_mask); if (offset == 3 && ACCESSING_BITS_0_7) { @@ -253,7 +253,7 @@ static ADDRESS_MAP_START( mystwarr_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x482010, 0x48201f) AM_WRITE_LEGACY(K053247_reg_word_w) AM_RANGE(0x484000, 0x484007) AM_WRITE_LEGACY(K053246_word_w) AM_RANGE(0x48a000, 0x48a01f) AM_WRITE_LEGACY(K054338_word_w) - AM_RANGE(0x48c000, 0x48c03f) AM_WRITE_LEGACY(K056832_word_w) + AM_RANGE(0x48c000, 0x48c03f) AM_DEVWRITE("k056832", k056832_device,m_word_w) AM_RANGE(0x490000, 0x490001) AM_WRITE(mweeprom_w) AM_RANGE(0x492000, 0x492001) AM_WRITENOP // watchdog AM_RANGE(0x494000, 0x494001) AM_READ_PORT("P1_P2") @@ -267,16 +267,16 @@ static ADDRESS_MAP_START( mystwarr_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x49a000, 0x49a001) AM_WRITE(sound_irq_w) AM_RANGE(0x49c000, 0x49c01f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) AM_RANGE(0x49e000, 0x49e007) AM_WRITE(irq_ack_w) // VSCCS (custom) - AM_RANGE(0x600000, 0x601fff) AM_READWRITE_LEGACY(K056832_ram_word_r,K056832_ram_word_w) - AM_RANGE(0x602000, 0x603fff) AM_READWRITE_LEGACY(K056832_ram_word_r,K056832_ram_word_w) // tilemap RAM mirror read(essential) - AM_RANGE(0x680000, 0x683fff) AM_READ_LEGACY(K056832_mw_rom_word_r) + AM_RANGE(0x600000, 0x601fff) AM_DEVREADWRITE("k056832", k056832_device,altK056832_ram_word_r,altK056832_ram_word_w) + AM_RANGE(0x602000, 0x603fff) AM_DEVREADWRITE("k056832", k056832_device,altK056832_ram_word_r,altK056832_ram_word_w) // tilemap RAM mirror read(essential) + AM_RANGE(0x680000, 0x683fff) AM_DEVREAD("k056832", k056832_device, altK056832_mw_rom_word_r) AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram_xrgb_word_be_w) AM_SHARE("paletteram") #if MW_DEBUG AM_RANGE(0x480000, 0x4800ff) AM_READ_LEGACY(K055555_word_r) AM_RANGE(0x482010, 0x48201f) AM_READ_LEGACY(K053247_reg_word_r) AM_RANGE(0x484000, 0x484007) AM_READ_LEGACY(K053246_reg_word_r) AM_RANGE(0x48a000, 0x48a01f) AM_READ_LEGACY(K054338_word_r) - AM_RANGE(0x48c000, 0x48c03f) AM_READ_LEGACY(K056832_word_r) + AM_RANGE(0x48c000, 0x48c03f) AM_READ_LEGACY(m_word_r) #endif ADDRESS_MAP_END @@ -299,17 +299,17 @@ static ADDRESS_MAP_START( metamrph_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x26800e, 0x26800f) AM_WRITE(sound_cmd2_w) AM_RANGE(0x268014, 0x268015) AM_READ(sound_status_r) AM_RANGE(0x268000, 0x26801f) AM_RAM - AM_RANGE(0x26c000, 0x26c007) AM_WRITE_LEGACY(K056832_b_word_w) - AM_RANGE(0x270000, 0x27003f) AM_WRITE_LEGACY(K056832_word_w) + AM_RANGE(0x26c000, 0x26c007) AM_DEVWRITE("k056832", k056832_device,altK056832_b_word_w) + AM_RANGE(0x270000, 0x27003f) AM_DEVWRITE("k056832", k056832_device,m_word_w) AM_RANGE(0x274000, 0x274001) AM_READ_PORT("P1_P3") AM_RANGE(0x274002, 0x274003) AM_READ_PORT("P2_P4") AM_RANGE(0x278000, 0x278001) AM_READ_PORT("IN0") AM_RANGE(0x278002, 0x278003) AM_READ(eeprom_r) AM_RANGE(0x27c000, 0x27c001) AM_READNOP // watchdog lives here AM_RANGE(0x27c000, 0x27c001) AM_WRITE(mmeeprom_w) - AM_RANGE(0x300000, 0x301fff) AM_READWRITE_LEGACY(K056832_ram_word_r,K056832_ram_word_w) - AM_RANGE(0x302000, 0x303fff) AM_READWRITE_LEGACY(K056832_ram_word_r,K056832_ram_word_w) // tilemap RAM mirror read/write (essential) - AM_RANGE(0x310000, 0x311fff) AM_READ_LEGACY(K056832_mw_rom_word_r) + AM_RANGE(0x300000, 0x301fff) AM_DEVREADWRITE("k056832", k056832_device,altK056832_ram_word_r,altK056832_ram_word_w) + AM_RANGE(0x302000, 0x303fff) AM_DEVREADWRITE("k056832", k056832_device,altK056832_ram_word_r,altK056832_ram_word_w) // tilemap RAM mirror read/write (essential) + AM_RANGE(0x310000, 0x311fff) AM_DEVREAD("k056832", k056832_device, altK056832_mw_rom_word_r) AM_RANGE(0x320000, 0x321fff) AM_DEVREAD("k053250_1", k053250_device, rom_r) AM_RANGE(0x330000, 0x331fff) AM_RAM_WRITE(paletteram_xrgb_word_be_w) AM_SHARE("paletteram") #if MW_DEBUG @@ -317,8 +317,8 @@ static ADDRESS_MAP_START( metamrph_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x244010, 0x24401f) AM_READ_LEGACY(K053247_reg_word_r) AM_RANGE(0x254000, 0x25401f) AM_READ_LEGACY(K054338_word_r) AM_RANGE(0x258000, 0x2580ff) AM_READ_LEGACY(K055555_word_r) - AM_RANGE(0x26C000, 0x26C007) AM_READ_LEGACY(K056832_b_word_r) - AM_RANGE(0x270000, 0x27003f) AM_READ_LEGACY(K056832_word_r) + AM_RANGE(0x26C000, 0x26C007) AM_READ_LEGACY(altK056832_b_word_r) + AM_RANGE(0x270000, 0x27003f) AM_READ_LEGACY(m_word_r) #endif ADDRESS_MAP_END @@ -342,26 +342,26 @@ static ADDRESS_MAP_START( viostorm_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x26800e, 0x26800f) AM_WRITE(sound_cmd2_w) AM_RANGE(0x268014, 0x268015) AM_READ(sound_status_r) AM_RANGE(0x268000, 0x26801f) AM_RAM - AM_RANGE(0x26c000, 0x26c007) AM_WRITE_LEGACY(K056832_b_word_w) - AM_RANGE(0x270000, 0x27003f) AM_WRITE_LEGACY(K056832_word_w) + AM_RANGE(0x26c000, 0x26c007) AM_DEVWRITE("k056832", k056832_device,altK056832_b_word_w) + AM_RANGE(0x270000, 0x27003f) AM_DEVWRITE("k056832", k056832_device,m_word_w) AM_RANGE(0x274000, 0x274001) AM_READ_PORT("P1_P3") AM_RANGE(0x274002, 0x274003) AM_READ_PORT("P2_P4") AM_RANGE(0x278000, 0x278001) AM_READ_PORT("IN0") AM_RANGE(0x278002, 0x278003) AM_READ(eeprom_r) AM_RANGE(0x27c000, 0x27c001) AM_READNOP // watchdog lives here AM_RANGE(0x27c000, 0x27c001) AM_WRITE(mmeeprom_w) - AM_RANGE(0x300000, 0x301fff) AM_READWRITE_LEGACY(K056832_ram_word_r,K056832_ram_word_w) - AM_RANGE(0x302000, 0x303fff) AM_READWRITE_LEGACY(K056832_ram_word_r,K056832_ram_word_w) // tilemap RAM mirror read(essential) + AM_RANGE(0x300000, 0x301fff) AM_DEVREADWRITE("k056832", k056832_device,altK056832_ram_word_r,altK056832_ram_word_w) + AM_RANGE(0x302000, 0x303fff) AM_DEVREADWRITE("k056832", k056832_device,altK056832_ram_word_r,altK056832_ram_word_w) // tilemap RAM mirror read(essential) AM_RANGE(0x304000, 0x3041ff) AM_RAM - AM_RANGE(0x310000, 0x311fff) AM_READ_LEGACY(K056832_mw_rom_word_r) + AM_RANGE(0x310000, 0x311fff) AM_DEVREAD("k056832", k056832_device, altK056832_mw_rom_word_r) AM_RANGE(0x330000, 0x331fff) AM_RAM_WRITE(paletteram_xrgb_word_be_w) AM_SHARE("paletteram") #if MW_DEBUG AM_RANGE(0x240000, 0x240007) AM_READ_LEGACY(K053246_reg_word_r) AM_RANGE(0x244010, 0x24401f) AM_READ_LEGACY(K053247_reg_word_r) AM_RANGE(0x254000, 0x25401f) AM_READ_LEGACY(K054338_word_r) AM_RANGE(0x258000, 0x2580ff) AM_READ_LEGACY(K055555_word_r) - AM_RANGE(0x26C000, 0x26C007) AM_READ_LEGACY(K056832_b_word_r) - AM_RANGE(0x270000, 0x27003f) AM_READ_LEGACY(K056832_word_r) + AM_RANGE(0x26C000, 0x26C007) AM_READ_LEGACY(altK056832_b_word_r) + AM_RANGE(0x270000, 0x27003f) AM_READ_LEGACY(m_word_r) #endif ADDRESS_MAP_END @@ -425,7 +425,7 @@ static ADDRESS_MAP_START( martchmp_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x402010, 0x40201f) AM_WRITE_LEGACY(K053247_reg_word_w) // OBJSET2 AM_RANGE(0x404000, 0x404007) AM_WRITE_LEGACY(K053246_word_w) // OBJSET1 AM_RANGE(0x40a000, 0x40a01f) AM_WRITE_LEGACY(K054338_word_w) // CLTC - AM_RANGE(0x40c000, 0x40c03f) AM_WRITE_LEGACY(K056832_word_w) // VACSET + AM_RANGE(0x40c000, 0x40c03f) AM_DEVWRITE("k056832", k056832_device,m_word_w) // VACSET AM_RANGE(0x40e000, 0x40e03f) AM_WRITE(K053990_martchmp_word_w) // protection AM_RANGE(0x410000, 0x410001) AM_WRITE(mweeprom_w) AM_RANGE(0x412000, 0x412001) AM_READWRITE(mccontrol_r,mccontrol_w) @@ -439,20 +439,20 @@ static ADDRESS_MAP_START( martchmp_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x418000, 0x41801f) AM_RAM // sound regs fall through AM_RANGE(0x41a000, 0x41a001) AM_WRITE(sound_irq_w) AM_RANGE(0x41c000, 0x41c01f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) // CCU - AM_RANGE(0x41e000, 0x41e007) AM_WRITE_LEGACY(K056832_b_word_w) // VSCCS + AM_RANGE(0x41e000, 0x41e007) AM_DEVWRITE("k056832", k056832_device,altK056832_b_word_w) // VSCCS AM_RANGE(0x480000, 0x483fff) AM_READWRITE(K053247_martchmp_word_r,K053247_martchmp_word_w) AM_SHARE("spriteram") // sprite RAM AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram_xrgb_word_be_w) AM_SHARE("paletteram") // palette RAM - AM_RANGE(0x680000, 0x681fff) AM_READWRITE_LEGACY(K056832_ram_word_r,K056832_ram_word_w) // tilemap RAM - AM_RANGE(0x682000, 0x683fff) AM_READWRITE_LEGACY(K056832_ram_word_r,K056832_ram_word_w) // tilemap RAM mirror read/write (essential) - AM_RANGE(0x700000, 0x703fff) AM_READ_LEGACY(K056832_mw_rom_word_r) // tile ROM readback + AM_RANGE(0x680000, 0x681fff) AM_DEVREADWRITE("k056832", k056832_device,altK056832_ram_word_r,altK056832_ram_word_w) // tilemap RAM + AM_RANGE(0x682000, 0x683fff) AM_DEVREADWRITE("k056832", k056832_device,altK056832_ram_word_r,altK056832_ram_word_w) // tilemap RAM mirror read/write (essential) + AM_RANGE(0x700000, 0x703fff) AM_DEVREAD("k056832", k056832_device, altK056832_mw_rom_word_r) // tile ROM readback #if MW_DEBUG AM_RANGE(0x400000, 0x4000ff) AM_READ_LEGACY(K055555_word_r) AM_RANGE(0x402010, 0x40201f) AM_READ_LEGACY(K053247_reg_word_r) AM_RANGE(0x404000, 0x404007) AM_READ_LEGACY(K053246_reg_word_r) AM_RANGE(0x40a000, 0x40a01f) AM_READ_LEGACY(K054338_word_r) - AM_RANGE(0x40c000, 0x40c03f) AM_READ_LEGACY(K056832_word_r) + AM_RANGE(0x40c000, 0x40c03f) AM_READ_LEGACY(m_word_r) AM_RANGE(0x41c000, 0x41c01f) AM_READ_LEGACY(K053252_word_r) - AM_RANGE(0x41e000, 0x41e007) AM_READ_LEGACY(K056832_b_word_r) + AM_RANGE(0x41e000, 0x41e007) AM_READ_LEGACY(altK056832_b_word_r) #endif ADDRESS_MAP_END @@ -460,17 +460,17 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( dadandrn_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x000000, 0x1fffff) AM_ROM // main program and data ROM AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(K053247_scattered_word_r,K053247_scattered_word_w) AM_SHARE("spriteram") - AM_RANGE(0x410000, 0x411fff) AM_READWRITE_LEGACY(K056832_ram_word_r,K056832_ram_word_w) // tilemap RAM - AM_RANGE(0x412000, 0x413fff) AM_READWRITE_LEGACY(K056832_ram_word_r,K056832_ram_word_w) // tilemap RAM mirror read/write (essential) + AM_RANGE(0x410000, 0x411fff) AM_DEVREADWRITE("k056832", k056832_device,altK056832_ram_word_r,altK056832_ram_word_w) // tilemap RAM + AM_RANGE(0x412000, 0x413fff) AM_DEVREADWRITE("k056832", k056832_device,altK056832_ram_word_r,altK056832_ram_word_w) // tilemap RAM mirror read/write (essential) AM_RANGE(0x420000, 0x421fff) AM_RAM_WRITE(paletteram_xrgb_word_be_w) AM_SHARE("paletteram") AM_RANGE(0x430000, 0x430007) AM_WRITE_LEGACY(K053246_word_w) - AM_RANGE(0x440000, 0x443fff) AM_READ_LEGACY(K056832_mw_rom_word_r) + AM_RANGE(0x440000, 0x443fff) AM_DEVREAD("k056832", k056832_device, altK056832_mw_rom_word_r) AM_RANGE(0x450000, 0x45000f) AM_READ_LEGACY(K055673_rom_word_r) AM_RANGE(0x450010, 0x45001f) AM_WRITE_LEGACY(K053247_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_WRITE_LEGACY(K056832_word_w) // VACSET - AM_RANGE(0x482000, 0x482007) AM_WRITE_LEGACY(K056832_b_word_w) // VSCCS + AM_RANGE(0x480000, 0x48003f) AM_DEVWRITE("k056832", k056832_device,m_word_w) // VACSET + AM_RANGE(0x482000, 0x482007) AM_DEVWRITE("k056832", k056832_device,altK056832_b_word_w) // VSCCS AM_RANGE(0x484000, 0x484003) AM_WRITE(ddd_053936_clip_w) AM_RANGE(0x486000, 0x48601f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) AM_RANGE(0x488000, 0x4880ff) AM_WRITE_LEGACY(K055555_word_w) @@ -493,8 +493,8 @@ static ADDRESS_MAP_START( dadandrn_map, AS_PROGRAM, 16, mystwarr_state ) #if MW_DEBUG AM_RANGE(0x430000, 0x430007) AM_READ_LEGACY(K053246_reg_word_r) AM_RANGE(0x450010, 0x45001f) AM_READ_LEGACY(K053247_reg_word_r) - AM_RANGE(0x480000, 0x48003f) AM_READ_LEGACY(K056832_word_r) - AM_RANGE(0x482000, 0x482007) AM_READ_LEGACY(K056832_b_word_r) + AM_RANGE(0x480000, 0x48003f) AM_READ_LEGACY(m_word_r) + AM_RANGE(0x482000, 0x482007) AM_READ_LEGACY(altK056832_b_word_r) AM_RANGE(0x488000, 0x4880ff) AM_READ_LEGACY(K055555_word_r) AM_RANGE(0x48c000, 0x48c01f) AM_READ_LEGACY(K054338_word_r) #endif @@ -507,17 +507,17 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( gaiapols_map, AS_PROGRAM, 16, mystwarr_state ) AM_RANGE(0x000000, 0x2fffff) AM_ROM // main program AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(K053247_scattered_word_r,K053247_scattered_word_w) AM_SHARE("spriteram") - AM_RANGE(0x410000, 0x411fff) AM_READWRITE_LEGACY(K056832_ram_word_r,K056832_ram_word_w) // tilemap RAM - AM_RANGE(0x412000, 0x413fff) AM_READWRITE_LEGACY(K056832_ram_word_r,K056832_ram_word_w) // tilemap RAM mirror read / write (essential) + AM_RANGE(0x410000, 0x411fff) AM_DEVREADWRITE("k056832", k056832_device,altK056832_ram_word_r,altK056832_ram_word_w) // tilemap RAM + AM_RANGE(0x412000, 0x413fff) AM_DEVREADWRITE("k056832", k056832_device,altK056832_ram_word_r,altK056832_ram_word_w) // tilemap RAM mirror read / write (essential) AM_RANGE(0x420000, 0x421fff) AM_RAM_WRITE(paletteram_xrgb_word_be_w) AM_SHARE("paletteram") AM_RANGE(0x430000, 0x430007) AM_WRITE_LEGACY(K053246_word_w) - AM_RANGE(0x440000, 0x441fff) AM_READ_LEGACY(K056832_mw_rom_word_r) + AM_RANGE(0x440000, 0x441fff) AM_DEVREAD("k056832", k056832_device, altK056832_mw_rom_word_r) AM_RANGE(0x450000, 0x45000f) AM_READ_LEGACY(K055673_rom_word_r) AM_RANGE(0x450010, 0x45001f) AM_WRITE_LEGACY(K053247_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_WRITE_LEGACY(K056832_word_w) // VACSET - AM_RANGE(0x482000, 0x482007) AM_WRITE_LEGACY(K056832_b_word_w) // VSCCS + AM_RANGE(0x480000, 0x48003f) AM_DEVWRITE("k056832", k056832_device,m_word_w) // VACSET + AM_RANGE(0x482000, 0x482007) AM_DEVWRITE("k056832", k056832_device,altK056832_b_word_w) // VSCCS AM_RANGE(0x484000, 0x484003) AM_WRITE(ddd_053936_clip_w) AM_RANGE(0x486000, 0x48601f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) AM_RANGE(0x488000, 0x4880ff) AM_WRITE_LEGACY(K055555_word_w) @@ -540,8 +540,8 @@ static ADDRESS_MAP_START( gaiapols_map, AS_PROGRAM, 16, mystwarr_state ) #if MW_DEBUG AM_RANGE(0x430000, 0x430007) AM_READ_LEGACY(K053246_reg_word_r) AM_RANGE(0x450010, 0x45001f) AM_READ_LEGACY(K053247_reg_word_r) - AM_RANGE(0x480000, 0x48003f) AM_READ_LEGACY(K056832_word_r) - AM_RANGE(0x482000, 0x482007) AM_READ_LEGACY(K056832_b_word_r) + AM_RANGE(0x480000, 0x48003f) AM_READ_LEGACY(m_word_r) + AM_RANGE(0x482000, 0x482007) AM_READ_LEGACY(altK056832_b_word_r) AM_RANGE(0x488000, 0x4880ff) AM_READ_LEGACY(K055555_word_r) AM_RANGE(0x48c000, 0x48c01f) AM_READ_LEGACY(K054338_word_r) #endif @@ -999,6 +999,7 @@ static MACHINE_CONFIG_START( mystwarr, mystwarr_state ) MCFG_SCREEN_UPDATE_DRIVER(mystwarr_state, screen_update_mystwarr) MCFG_PALETTE_LENGTH(2048) + MCFG_K056832_ADD_NOINTF("k056832"/*, mystwarr_k056832_intf*/) MCFG_VIDEO_START_OVERRIDE(mystwarr_state,mystwarr) diff --git a/src/mame/includes/konamigx.h b/src/mame/includes/konamigx.h index cba4077ae6b..008ad6bea61 100644 --- a/src/mame/includes/konamigx.h +++ b/src/mame/includes/konamigx.h @@ -11,6 +11,7 @@ public: m_workram(*this,"workram"), m_psacram(*this,"psacram"), m_subpaletteram32(*this,"subpaletteram"), + m_k056832(*this, "k056832"), m_k053936_0_ctrl(*this,"k053936_0_ctrl",32), m_k053936_0_linectrl(*this,"k053936_0_line",32), m_k053936_0_ctrl_16(*this,"k053936_0_ct16",16), @@ -26,6 +27,7 @@ public: optional_shared_ptr m_workram; optional_shared_ptr m_psacram; optional_shared_ptr m_subpaletteram32; + required_device m_k056832; optional_shared_ptr m_k053936_0_ctrl; optional_shared_ptr m_k053936_0_linectrl; optional_shared_ptr m_k053936_0_ctrl_16; @@ -98,6 +100,14 @@ public: TIMER_DEVICE_CALLBACK_MEMBER(konamigx_hbinterrupt); optional_device m_soundcpu; optional_device m_dasp; + + void _gxcommoninitnosprites(running_machine &machine); + void _gxcommoninit(running_machine &machine); + DECLARE_READ32_MEMBER( altK056832_6bpp_rom_long_r ); + void konamigx_mixer(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, + tilemap_t *sub1, int sub1flags, + tilemap_t *sub2, int sub2flags, + int mixerflags, bitmap_ind16 *extra_bitmap, int rushingheroes_hack); }; diff --git a/src/mame/includes/mystwarr.h b/src/mame/includes/mystwarr.h index 1669e49411e..51d5c0abae5 100644 --- a/src/mame/includes/mystwarr.h +++ b/src/mame/includes/mystwarr.h @@ -8,12 +8,14 @@ public: : konamigx_state(mconfig, type, tag), m_maincpu(*this,"maincpu"), m_k053252(*this, "k053252"), + m_k056832(*this, "k056832"), m_gx_workram(*this,"gx_workram"), m_spriteram(*this,"spriteram") { } required_device m_maincpu; required_device m_k053252; + required_device m_k056832; required_shared_ptr m_gx_workram; optional_shared_ptr m_spriteram; UINT8 m_mw_irq_control; diff --git a/src/mame/video/k054156_k054157_k056832.c b/src/mame/video/k054156_k054157_k056832.c index 1f05000e704..4893f583083 100644 --- a/src/mame/video/k054156_k054157_k056832.c +++ b/src/mame/video/k054156_k054157_k056832.c @@ -216,6 +216,7 @@ k056832_device::k056832_device(const machine_config &mconfig, const char *tag, d m_uses_tile_banks(0), m_cur_tile_bank(0) { + } @@ -252,6 +253,12 @@ void k056832_device::device_config_complete() void k056832_device::device_start() { + + // for non-interface cases we still use the vh_start call + if (m_bpp == 0) + return; + + /* TODO: understand which elements MUST be init here (to keep correct layer associations) and which ones can can be init at RESET, if any */ tilemap_t *tmap; @@ -330,6 +337,8 @@ void k056832_device::device_start() }; + + /* handle the various graphics formats */ i = (m_big) ? 8 : 16; @@ -376,6 +385,8 @@ void k056832_device::device_start() fatalerror("Unsupported bpp\n"); } + + machine().gfx[m_gfx_num]->set_granularity(16); /* override */ /* deinterleave the graphics, if needed */ @@ -417,6 +428,8 @@ void k056832_device::device_start() m_page_tile_mode[i] = 1; } + + m_videoram = auto_alloc_array_clear(machine(), UINT16, 0x2000 * (K056832_PAGE_COUNT + 1) / 2); m_tilemap[0x0] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(k056832_device::get_tile_info0),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); @@ -454,6 +467,8 @@ void k056832_device::device_start() change_rambank(); change_rombank(); + + save_pointer(NAME(m_videoram), 0x10000); save_item(NAME(m_regs)); save_item(NAME(m_regsb)); @@ -490,6 +505,7 @@ void k056832_device::device_start() } machine().save().register_postload(save_prepost_delegate(FUNC(k056832_device::postload), this)); + } /***************************************************************************** @@ -2092,7 +2108,7 @@ READ16_MEMBER( k056832_device::b_word_r ) /* - some drivers still rely on this non-device implementation + some drivers still rely on this non-device implementation, this should be collapsed into the device. */ @@ -2104,175 +2120,127 @@ READ16_MEMBER( k056832_device::b_word_r ) /* */ /***************************************************************************/ +#define altK056832_mark_line_dirty(P,L) if (L<0x100) m_line_dirty[P][L>>5] |= 1<<(L&0x1f) +#define altK056832_mark_all_lines_dirty(P) m_all_lines_dirty[P] = 1 -#define K056832_PAGE_COUNT 16 - -static tilemap_t *K056832_tilemap[K056832_PAGE_COUNT]; -static bitmap_ind16 *K056832_pixmap[K056832_PAGE_COUNT]; - -static UINT16 K056832_regs[0x20]; // 157/832 regs group 1 -static UINT16 K056832_regsb[4]; // 157/832 regs group 2, board dependent - -static UINT8 *K056832_rombase; // pointer to tile gfx data -static UINT16 *K056832_videoram; -static int K056832_NumGfxBanks; // depends on size of graphics ROMs -static int K056832_CurGfxBank; // cached info for K056832_regs[0x1a] -static int K056832_gfxnum; // graphics element index for unpacked tiles -static const char *K056832_memory_region; // memory region for tile gfx data -static int K056832_bpp; - -// ROM readback involves reading 2 halves of a word -// from the same location in a row. Reading the -// RAM window resets this state so you get the first half. -static int K056832_rom_half; - -// locally cached values -static int K056832_LayerAssociatedWithPage[K056832_PAGE_COUNT]; -static int K056832_LayerOffset[8][2]; -static int K056832_LSRAMPage[8][2]; -static INT32 K056832_X[8]; // 0..3 left -static INT32 K056832_Y[8]; // 0..3 top -static INT32 K056832_W[8]; // 0..3 width -> 1..4 pages -static INT32 K056832_H[8]; // 0..3 height -> 1..4 pages -static INT32 K056832_dx[8]; // scroll -static INT32 K056832_dy[8]; // scroll -static UINT32 K056832_LineDirty[K056832_PAGE_COUNT][8]; -static UINT8 K056832_AllLinesDirty[K056832_PAGE_COUNT]; -static UINT8 K056832_PageTileMode[K056832_PAGE_COUNT]; -static UINT8 K056832_LayerTileMode[8]; -static int K056832_DefaultLayerAssociation; -static int K056832_LayerAssociation; -static int K056832_ActiveLayer; -static int K056832_SelectedPage; -static int K056832_SelectedPagex4096; -static int K056832_UpdateMode; -static int K056832_linemap_enabled; -static int K056832_use_ext_linescroll; -static int K056832_uses_tile_banks, K056832_cur_tile_bank; - -static int K056832_djmain_hack; - -#define K056832_mark_line_dirty(P,L) if (L<0x100) K056832_LineDirty[P][L>>5] |= 1<<(L&0x1f) -#define K056832_mark_all_lines_dirty(P) K056832_AllLinesDirty[P] = 1 - -static void K056832_mark_page_dirty(int page) +void k056832_device::altK056832_mark_page_dirty(int page) { - if (K056832_PageTileMode[page]) - K056832_tilemap[page]->mark_all_dirty(); + if (m_page_tile_mode[page]) + m_tilemap[page]->mark_all_dirty(); else - K056832_mark_all_lines_dirty(page); + altK056832_mark_all_lines_dirty(page); } -void K056832_mark_plane_dirty(int layer) +void k056832_device::altK056832_mark_plane_dirty(int layer) { int tilemode, i; - tilemode = K056832_LayerTileMode[layer]; + tilemode = m_layer_tile_mode[layer]; for (i=0; i>6 & 3; - flip = K056832_regs[1]>>(layer<<1) & 0x3; // tile-flip override (see p.20 3.2.2 "REG2") - smptr = &K056832_shiftmasks[fbits]; + fbits = m_regs[3]>>6 & 3; + flip = m_regs[1]>>(layer<<1) & 0x3; // tile-flip override (see p.20 3.2.2 "REG2") + smptr = &altK056832_shiftmasks[fbits]; attr = pMem[0]; code = pMem[1]; @@ -2283,80 +2251,85 @@ INLINE void K056832_get_tile_info( running_machine &machine, tile_data &tileinfo color = (attr & smptr->palm1) | (attr>>smptr->pals2 & smptr->palm2); flags = TILE_FLIPYX(flip); - (*K056832_callback)(machine, layer, &code, &color, &flags); + (*altK056832_callback)(machine(), layer, &code, &color, &flags); - SET_TILE_INFO(K056832_gfxnum, + SET_TILE_INFO_MEMBER(altK056832_gfxnum, code, color, flags); } -static TILE_GET_INFO( K056832_get_tile_info0 ) { K056832_get_tile_info(machine,tileinfo,tile_index,0x0); } -static TILE_GET_INFO( K056832_get_tile_info1 ) { K056832_get_tile_info(machine,tileinfo,tile_index,0x1); } -static TILE_GET_INFO( K056832_get_tile_info2 ) { K056832_get_tile_info(machine,tileinfo,tile_index,0x2); } -static TILE_GET_INFO( K056832_get_tile_info3 ) { K056832_get_tile_info(machine,tileinfo,tile_index,0x3); } -static TILE_GET_INFO( K056832_get_tile_info4 ) { K056832_get_tile_info(machine,tileinfo,tile_index,0x4); } -static TILE_GET_INFO( K056832_get_tile_info5 ) { K056832_get_tile_info(machine,tileinfo,tile_index,0x5); } -static TILE_GET_INFO( K056832_get_tile_info6 ) { K056832_get_tile_info(machine,tileinfo,tile_index,0x6); } -static TILE_GET_INFO( K056832_get_tile_info7 ) { K056832_get_tile_info(machine,tileinfo,tile_index,0x7); } -static TILE_GET_INFO( K056832_get_tile_info8 ) { K056832_get_tile_info(machine,tileinfo,tile_index,0x8); } -static TILE_GET_INFO( K056832_get_tile_info9 ) { K056832_get_tile_info(machine,tileinfo,tile_index,0x9); } -static TILE_GET_INFO( K056832_get_tile_infoa ) { K056832_get_tile_info(machine,tileinfo,tile_index,0xa); } -static TILE_GET_INFO( K056832_get_tile_infob ) { K056832_get_tile_info(machine,tileinfo,tile_index,0xb); } -static TILE_GET_INFO( K056832_get_tile_infoc ) { K056832_get_tile_info(machine,tileinfo,tile_index,0xc); } -static TILE_GET_INFO( K056832_get_tile_infod ) { K056832_get_tile_info(machine,tileinfo,tile_index,0xd); } -static TILE_GET_INFO( K056832_get_tile_infoe ) { K056832_get_tile_info(machine,tileinfo,tile_index,0xe); } -static TILE_GET_INFO( K056832_get_tile_infof ) { K056832_get_tile_info(machine,tileinfo,tile_index,0xf); } -static void K056832_change_rambank(void) + + +TILE_GET_INFO_MEMBER( k056832_device::altK056832_get_tile_info0 ) { altK056832_get_tile_info(tileinfo,tile_index,0x0); } +TILE_GET_INFO_MEMBER( k056832_device::altK056832_get_tile_info1 ) { altK056832_get_tile_info(tileinfo,tile_index,0x1); } +TILE_GET_INFO_MEMBER( k056832_device::altK056832_get_tile_info2 ) { altK056832_get_tile_info(tileinfo,tile_index,0x2); } +TILE_GET_INFO_MEMBER( k056832_device::altK056832_get_tile_info3 ) { altK056832_get_tile_info(tileinfo,tile_index,0x3); } +TILE_GET_INFO_MEMBER( k056832_device::altK056832_get_tile_info4 ) { altK056832_get_tile_info(tileinfo,tile_index,0x4); } +TILE_GET_INFO_MEMBER( k056832_device::altK056832_get_tile_info5 ) { altK056832_get_tile_info(tileinfo,tile_index,0x5); } +TILE_GET_INFO_MEMBER( k056832_device::altK056832_get_tile_info6 ) { altK056832_get_tile_info(tileinfo,tile_index,0x6); } +TILE_GET_INFO_MEMBER( k056832_device::altK056832_get_tile_info7 ) { altK056832_get_tile_info(tileinfo,tile_index,0x7); } +TILE_GET_INFO_MEMBER( k056832_device::altK056832_get_tile_info8 ) { altK056832_get_tile_info(tileinfo,tile_index,0x8); } +TILE_GET_INFO_MEMBER( k056832_device::altK056832_get_tile_info9 ) { altK056832_get_tile_info(tileinfo,tile_index,0x9); } +TILE_GET_INFO_MEMBER( k056832_device::altK056832_get_tile_infoa ) { altK056832_get_tile_info(tileinfo,tile_index,0xa); } +TILE_GET_INFO_MEMBER( k056832_device::altK056832_get_tile_infob ) { altK056832_get_tile_info(tileinfo,tile_index,0xb); } +TILE_GET_INFO_MEMBER( k056832_device::altK056832_get_tile_infoc ) { altK056832_get_tile_info(tileinfo,tile_index,0xc); } +TILE_GET_INFO_MEMBER( k056832_device::altK056832_get_tile_infod ) { altK056832_get_tile_info(tileinfo,tile_index,0xd); } +TILE_GET_INFO_MEMBER( k056832_device::altK056832_get_tile_infoe ) { altK056832_get_tile_info(tileinfo,tile_index,0xe); } +TILE_GET_INFO_MEMBER( k056832_device::altK056832_get_tile_infof ) { altK056832_get_tile_info(tileinfo,tile_index,0xf); } + +void k056832_device::altK056832_change_rambank(void) { /* ------xx page col * ---xx--- page row */ - int bank = K056832_regs[0x19]; + int bank = m_regs[0x19]; - if (K056832_regs[0] & 0x02) // external linescroll enable + if (m_regs[0] & 0x02) // external linescroll enable { - K056832_SelectedPage = K056832_PAGE_COUNT; + m_selected_page = K056832_PAGE_COUNT; } else { - K056832_SelectedPage = ((bank>>1)&0xc)|(bank&3); + m_selected_page = ((bank>>1)&0xc)|(bank&3); } - K056832_SelectedPagex4096 = K056832_SelectedPage << 12; + m_selected_page_x4096 = m_selected_page << 12; // refresh associated tilemaps - K056832_MarkAllTilemapsDirty(); + altK056832_MarkAllTilemapsDirty(); } -static void K056832_change_rombank(void) +void k056832_device::altK056832_change_rombank(void) { int bank; - if (K056832_uses_tile_banks) /* Asterix */ + if (m_uses_tile_banks) /* Asterix */ { - bank = (K056832_regs[0x1a] >> 8) | (K056832_regs[0x1b] << 4) | (K056832_cur_tile_bank << 6); + bank = (m_regs[0x1a] >> 8) | (m_regs[0x1b] << 4) | (m_cur_tile_bank << 6); } else { - bank = K056832_regs[0x1a] | (K056832_regs[0x1b] << 16); + bank = m_regs[0x1a] | (m_regs[0x1b] << 16); } - K056832_CurGfxBank = bank % K056832_NumGfxBanks; + m_cur_gfx_banks = bank % m_num_gfx_banks; } -static void K056832_postload(running_machine &machine) + +void k056832_device::altK056832_postload() { - K056832_UpdatePageLayout(); - K056832_change_rambank(); - K056832_change_rombank(); + altK056832_UpdatePageLayout(); + altK056832_change_rambank(); + altK056832_change_rombank(); } -void K056832_vh_start(running_machine &machine, const char *gfx_memory_region, int bpp, int big, +void k056832_device::altK056832_vh_start(running_machine &machine, const char *gfx_memory_region, int bpp, int big, int (*scrolld)[4][2], void (*callback)(running_machine &machine, int layer, int *code, int *color, int *flags), int djmain_hack) { + tilemap_t *tmap; int gfx_index; int i; @@ -2433,7 +2406,7 @@ void K056832_vh_start(running_machine &machine, const char *gfx_memory_region, i 8*8*4 }; - K056832_bpp = bpp; + altK056832_bpp = bpp; /* find first empty slot to decode gfx */ for (gfx_index = 0; gfx_index < MAX_GFX_ELEMENTS; gfx_index++) @@ -2489,114 +2462,116 @@ void K056832_vh_start(running_machine &machine, const char *gfx_memory_region, i machine.gfx[gfx_index]->set_granularity(16); /* override */ - K056832_memory_region = gfx_memory_region; - K056832_gfxnum = gfx_index; - K056832_callback = callback; + altK056832_memory_region = gfx_memory_region; + altK056832_gfxnum = gfx_index; + altK056832_callback = callback; - K056832_rombase = machine.root_device().memregion(gfx_memory_region)->base(); - K056832_NumGfxBanks = machine.root_device().memregion(gfx_memory_region)->bytes() / 0x2000; - K056832_CurGfxBank = 0; - K056832_use_ext_linescroll = 0; - K056832_uses_tile_banks = 0; + m_rombase = machine.root_device().memregion(gfx_memory_region)->base(); + m_num_gfx_banks = machine.root_device().memregion(gfx_memory_region)->bytes() / 0x2000; + m_cur_gfx_banks = 0; + m_use_ext_linescroll = 0; + m_uses_tile_banks = 0; - K056832_djmain_hack = djmain_hack; + altK056832_djmain_hack = djmain_hack; for (i=0; i<4; i++) { - K056832_LayerOffset[i][0] = 0; - K056832_LayerOffset[i][1] = 0; - K056832_LSRAMPage[i][0] = i; - K056832_LSRAMPage[i][1] = i << 11; - K056832_X[i] = 0; - K056832_Y[i] = 0; - K056832_W[i] = 0; - K056832_H[i] = 0; - K056832_dx[i] = 0; - K056832_dy[i] = 0; - K056832_LayerTileMode[i] = 1; + m_layer_offs[i][0] = 0; + m_layer_offs[i][1] = 0; + m_lsram_page[i][0] = i; + m_lsram_page[i][1] = i << 11; + m_x[i] = 0; + m_y[i] = 0; + m_w[i] = 0; + m_h[i] = 0; + m_dx[i] = 0; + m_dy[i] = 0; + m_layer_tile_mode[i] = 1; } - K056832_DefaultLayerAssociation = 1; - K056832_ActiveLayer = 0; - K056832_UpdateMode = 0; - K056832_linemap_enabled = 0; + m_default_layer_association = 1; + m_active_layer = 0; + m_k055555_use = 0; + m_linemap_enabled = 0; - memset(K056832_LineDirty, 0, sizeof(UINT32) * K056832_PAGE_COUNT * 8); + memset(m_line_dirty, 0, sizeof(UINT32) * K056832_PAGE_COUNT * 8); for (i=0; ipixmap(); + m_pixmap[i] = &tmap->pixmap(); tmap->set_transparent_pen(0); } - memset(K056832_videoram, 0x00, 0x20000); - memset(K056832_regs, 0x00, sizeof(K056832_regs) ); - memset(K056832_regsb, 0x00, sizeof(K056832_regsb) ); + memset(m_videoram, 0x00, 0x20000); + memset(m_regs, 0x00, sizeof(m_regs) ); + memset(m_regsb, 0x00, sizeof(m_regsb) ); - K056832_UpdatePageLayout(); + altK056832_UpdatePageLayout(); - K056832_change_rambank(); - K056832_change_rombank(); + altK056832_change_rambank(); + altK056832_change_rombank(); + + machine.save().save_pointer(NAME(m_videoram), 0x10000); + machine.save().save_item(NAME(m_regs)); + machine.save().save_item(NAME(m_regsb)); + machine.save().save_item(NAME(m_x)); + machine.save().save_item(NAME(m_y)); + machine.save().save_item(NAME(m_w)); + machine.save().save_item(NAME(m_h)); + machine.save().save_item(NAME(m_dx)); + machine.save().save_item(NAME(m_dy)); + machine.save().save_item(NAME(m_layer_tile_mode)); + + machine.save().register_postload(save_prepost_delegate(FUNC(k056832_device::altK056832_postload), this)); - machine.save().save_pointer(NAME(K056832_videoram), 0x10000); - machine.save().save_item(NAME(K056832_regs)); - machine.save().save_item(NAME(K056832_regsb)); - machine.save().save_item(NAME(K056832_X)); - machine.save().save_item(NAME(K056832_Y)); - machine.save().save_item(NAME(K056832_W)); - machine.save().save_item(NAME(K056832_H)); - machine.save().save_item(NAME(K056832_dx)); - machine.save().save_item(NAME(K056832_dy)); - machine.save().save_item(NAME(K056832_LayerTileMode)); - machine.save().register_postload(save_prepost_delegate(FUNC(K056832_postload), &machine)); } /* generic helper routine for ROM checksumming */ -static int K056832_rom_read_b(running_machine &machine, int offset, int blksize, int blksize2, int zerosec) +int k056832_device::altK056832_rom_read_b(running_machine &machine, int offset, int blksize, int blksize2, int zerosec) { UINT8 *rombase; int base, ret; - rombase = (UINT8 *)machine.root_device().memregion(K056832_memory_region)->base(); + rombase = (UINT8 *)machine.root_device().memregion(altK056832_memory_region)->base(); - if ((K056832_rom_half) && (zerosec)) + if ((m_rom_half) && (zerosec)) { return 0; } // add in the bank offset - offset += (K056832_CurGfxBank * 0x2000); + offset += (m_cur_gfx_banks * 0x2000); // figure out the base of the ROM block base = (offset / blksize) * blksize2; @@ -2604,37 +2579,37 @@ static int K056832_rom_read_b(running_machine &machine, int offset, int blksize, // get the starting offset of the proper word inside the block base += (offset % blksize) * 2; - if (K056832_rom_half) + if (m_rom_half) { ret = rombase[base+1]; } else { ret = rombase[base]; - K056832_rom_half = 1; + m_rom_half = 1; } return ret; } -READ32_HANDLER( K056832_5bpp_rom_long_r ) +READ32_MEMBER( k056832_device::altK056832_5bpp_rom_long_r ) { if (mem_mask == 0xff000000) { - return K056832_rom_read_b(space.machine(), offset*4, 4, 5, 0)<<24; + return altK056832_rom_read_b(space.machine(), offset*4, 4, 5, 0)<<24; } else if (mem_mask == 0x00ff0000) { - return K056832_rom_read_b(space.machine(), offset*4+1, 4, 5, 0)<<16; + return altK056832_rom_read_b(space.machine(), offset*4+1, 4, 5, 0)<<16; } else if (mem_mask == 0x0000ff00) { - return K056832_rom_read_b(space.machine(), offset*4+2, 4, 5, 0)<<8; + return altK056832_rom_read_b(space.machine(), offset*4+2, 4, 5, 0)<<8; } else if (mem_mask == 0x000000ff) { - return K056832_rom_read_b(space.machine(), offset*4+3, 4, 5, 1); + return altK056832_rom_read_b(space.machine(), offset*4+3, 4, 5, 1); } else { @@ -2643,23 +2618,23 @@ READ32_HANDLER( K056832_5bpp_rom_long_r ) return 0; } -READ32_HANDLER( K056832_6bpp_rom_long_r ) +READ32_MEMBER( k056832_device::altK056832_6bpp_rom_long_r ) { if (mem_mask == 0xff000000) { - return K056832_rom_read_b(space.machine(), offset*4, 4, 6, 0)<<24; + return altK056832_rom_read_b(space.machine(), offset*4, 4, 6, 0)<<24; } else if (mem_mask == 0x00ff0000) { - return K056832_rom_read_b(space.machine(), offset*4+1, 4, 6, 0)<<16; + return altK056832_rom_read_b(space.machine(), offset*4+1, 4, 6, 0)<<16; } else if (mem_mask == 0x0000ff00) { - return K056832_rom_read_b(space.machine(), offset*4+2, 4, 6, 0)<<8; + return altK056832_rom_read_b(space.machine(), offset*4+2, 4, 6, 0)<<8; } else if (mem_mask == 0x000000ff) { - return K056832_rom_read_b(space.machine(), offset*4+3, 4, 6, 0); + return altK056832_rom_read_b(space.machine(), offset*4+3, 4, 6, 0); } else { @@ -2671,17 +2646,17 @@ READ32_HANDLER( K056832_6bpp_rom_long_r ) // data is arranged like this: // 0000 1111 22 0000 1111 22 -READ16_HANDLER( K056832_mw_rom_word_r ) +READ16_MEMBER( k056832_device::altK056832_mw_rom_word_r ) { - int bank = 10240*K056832_CurGfxBank; + int bank = 10240*m_cur_gfx_banks; int addr; - if (!K056832_rombase) + if (!m_rombase) { - K056832_rombase = space.machine().root_device().memregion(K056832_memory_region)->base(); + m_rombase = space.machine().root_device().memregion(altK056832_memory_region)->base(); } - if (K056832_regsb[2] & 0x8) + if (m_regsb[2] & 0x8) { // we want only the 2s int bit; @@ -2690,7 +2665,7 @@ READ16_HANDLER( K056832_mw_rom_word_r ) bit = offset % 4; addr = (offset / 4) * 5; - temp = K056832_rombase[addr+4+bank]; + temp = m_rombase[addr+4+bank]; switch (bit) { @@ -2731,38 +2706,38 @@ READ16_HANDLER( K056832_mw_rom_word_r ) addr += bank; - return K056832_rombase[addr+1] | (K056832_rombase[addr] << 8); + return m_rombase[addr+1] | (m_rombase[addr] << 8); } } /* only one page is mapped to videoram at a time through a window */ -READ16_HANDLER( K056832_ram_word_r ) +READ16_MEMBER( k056832_device::altK056832_ram_word_r ) { // reading from tile RAM resets the ROM readback "half" offset - K056832_rom_half = 0; + m_rom_half = 0; - return K056832_videoram[K056832_SelectedPagex4096+offset]; + return m_videoram[m_selected_page_x4096+offset]; } -READ32_HANDLER( K056832_ram_long_r ) +READ32_MEMBER( k056832_device::altK056832_ram_long_r ) { - UINT16 *pMem = &K056832_videoram[K056832_SelectedPagex4096+offset*2]; + UINT16 *pMem = &m_videoram[m_selected_page_x4096+offset*2]; // reading from tile RAM resets the ROM readback "half" offset - K056832_rom_half = 0; + m_rom_half = 0; return(pMem[0]<<16 | pMem[1]); } -WRITE16_HANDLER( K056832_ram_word_w ) +WRITE16_MEMBER( k056832_device::altK056832_ram_word_w ) { UINT16 *tile_ptr; UINT16 old_mask, old_data; - tile_ptr = &K056832_videoram[K056832_SelectedPagex4096+offset]; + tile_ptr = &m_videoram[m_selected_page_x4096+offset]; old_mask = ~mem_mask; old_data = *tile_ptr; data = (data & mem_mask) | (old_data & old_mask); @@ -2772,20 +2747,20 @@ WRITE16_HANDLER( K056832_ram_word_w ) offset >>= 1; *tile_ptr = data; - if (K056832_PageTileMode[K056832_SelectedPage]) - K056832_tilemap[K056832_SelectedPage]->mark_tile_dirty(offset); + if (m_page_tile_mode[m_selected_page]) + m_tilemap[m_selected_page]->mark_tile_dirty(offset); else - K056832_mark_line_dirty(K056832_SelectedPage, offset); + altK056832_mark_line_dirty(m_selected_page, offset); } } -WRITE32_HANDLER( K056832_ram_long_w ) +WRITE32_MEMBER( k056832_device::altK056832_ram_long_w ) { UINT16 *tile_ptr; UINT32 old_mask, old_data; - tile_ptr = &K056832_videoram[K056832_SelectedPagex4096+offset*2]; + tile_ptr = &m_videoram[m_selected_page_x4096+offset*2]; old_mask = ~mem_mask; old_data = (UINT32)tile_ptr[0]<<16 | (UINT32)tile_ptr[1]; data = (data & mem_mask) | (old_data & old_mask); @@ -2795,21 +2770,21 @@ WRITE32_HANDLER( K056832_ram_long_w ) tile_ptr[0] = data>>16; tile_ptr[1] = data; - if (K056832_PageTileMode[K056832_SelectedPage]) - K056832_tilemap[K056832_SelectedPage]->mark_tile_dirty(offset); + if (m_page_tile_mode[m_selected_page]) + m_tilemap[m_selected_page]->mark_tile_dirty(offset); else - K056832_mark_line_dirty(K056832_SelectedPage, offset); + altK056832_mark_line_dirty(m_selected_page, offset); } } -WRITE16_HANDLER( K056832_word_w ) +WRITE16_MEMBER( k056832_device::m_word_w ) { int layer, flip, mask, i; UINT32 old_data, new_data; - old_data = K056832_regs[offset]; - COMBINE_DATA(&K056832_regs[offset]); - new_data = K056832_regs[offset]; + old_data = m_regs[offset]; + COMBINE_DATA(&m_regs[offset]); + new_data = m_regs[offset]; if (new_data != old_data) { @@ -2828,13 +2803,13 @@ WRITE16_HANDLER( K056832_word_w ) if (new_data & 0x10) flip |= TILEMAP_FLIPX; for (i=0; iset_flip(flip); + m_tilemap[i]->set_flip(flip); } } if ((new_data & 0x02) != (old_data & 0x02)) { - K056832_change_rambank(); + altK056832_change_rambank(); } break; @@ -2852,8 +2827,8 @@ WRITE16_HANDLER( K056832_word_w ) i = new_data & mask; if (i != (old_data & mask)) { - K056832_LayerTileMode[layer] = i; - K056832_mark_plane_dirty(layer); + m_layer_tile_mode[layer] = i; + altK056832_mark_plane_dirty(layer); } } break; @@ -2870,12 +2845,12 @@ WRITE16_HANDLER( K056832_word_w ) //case 0x0a/2: break; case 0x32/2: - K056832_change_rambank(); + altK056832_change_rambank(); break; case 0x34/2: /* ROM bank select for checksum */ case 0x36/2: /* secondary ROM bank select for use with tile banking */ - K056832_change_rombank(); + altK056832_change_rombank(); break; // extended tile address @@ -2892,54 +2867,54 @@ WRITE16_HANDLER( K056832_word_w ) if (offset >= 0x10/2 && offset <= 0x16/2) { - K056832_Y[layer] = (new_data&0x18)>>3; - K056832_H[layer] = (new_data&0x3); - K056832_ActiveLayer = layer; - K056832_UpdatePageLayout(); + m_y[layer] = (new_data&0x18)>>3; + m_h[layer] = (new_data&0x3); + m_active_layer = layer; + altK056832_UpdatePageLayout(); } else if (offset >= 0x18/2 && offset <= 0x1e/2) { - K056832_X[layer] = (new_data&0x18)>>3; - K056832_W[layer] = (new_data&0x03); - K056832_ActiveLayer = layer; - K056832_UpdatePageLayout(); + m_x[layer] = (new_data&0x18)>>3; + m_w[layer] = (new_data&0x03); + m_active_layer = layer; + altK056832_UpdatePageLayout(); } else if (offset >= 0x20/2 && offset <= 0x26/2) { - K056832_dy[layer] = (INT16)new_data; + m_dy[layer] = (INT16)new_data; } else if (offset >= 0x28/2 && offset <= 0x2e/2) { - K056832_dx[layer] = (INT16)new_data; + m_dx[layer] = (INT16)new_data; } break; } } } -WRITE32_HANDLER( K056832_long_w ) +WRITE32_MEMBER( k056832_device::altK056832_long_w ) { // GX does access of all 3 widths (8/16/32) so we can't do the // if (ACCESSING_xxx) trick. in particular, 8-bit writes // are used to the tilemap bank register. offset <<= 1; - K056832_word_w(space, offset, data>>16, mem_mask >> 16); - K056832_word_w(space, offset+1, data, mem_mask); + m_word_w(space, offset, data>>16, mem_mask >> 16); + m_word_w(space, offset+1, data, mem_mask); } -WRITE16_HANDLER( K056832_b_word_w ) +WRITE16_MEMBER( k056832_device::altK056832_b_word_w ) { - COMBINE_DATA( &K056832_regsb[offset] ); + COMBINE_DATA( &m_regsb[offset] ); } -static int K056832_update_linemap(running_machine &machine, bitmap_rgb32 &bitmap, int page, int flags) +int k056832_device::altK056832_update_linemap(running_machine &machine, bitmap_rgb32 &bitmap, int page, int flags) { - if (K056832_PageTileMode[page]) return(0); - if (!K056832_linemap_enabled) return(1); + if (m_page_tile_mode[page]) return(0); + if (!m_linemap_enabled) return(1); { @@ -2949,17 +2924,17 @@ static int K056832_update_linemap(running_machine &machine, bitmap_rgb32 &bitmap int all_dirty; UINT8 *xprdata; - tmap = K056832_tilemap[page]; + tmap = m_tilemap[page]; bitmap_ind8 &xprmap = tmap->flagsmap(); xprdata = tmap->tile_flags(); - dirty = K056832_LineDirty[page]; - all_dirty = K056832_AllLinesDirty[page]; + dirty = m_line_dirty[page]; + all_dirty = m_all_lines_dirty[page]; if (all_dirty) { dirty[7]=dirty[6]=dirty[5]=dirty[4]=dirty[3]=dirty[2]=dirty[1]=dirty[0] = 0; - K056832_AllLinesDirty[page] = 0; + m_all_lines_dirty[page] = 0; // force tilemap into a clean, static state // *really ugly but it minimizes alteration to tilemap.c @@ -3001,9 +2976,9 @@ static int K056832_update_linemap(running_machine &machine, bitmap_rgb32 &bitmap { pen += basepen; xpr_ptr[count+N] = TILEMAP_PIXEL_LAYER0; dst_ptr[count+N] = pen; } else \ { xpr_ptr[count+N] = 0; } - pixmap = K056832_pixmap[page]; + pixmap = m_pixmap[page]; pal_ptr = machine.pens; - src_gfx = machine.gfx[K056832_gfxnum]; + src_gfx = machine.gfx[altK056832_gfxnum]; src_pitch = src_gfx->rowbytes(); src_modulo = src_gfx->char_modulo; dst_pitch = pixmap->rowpixels; @@ -3025,7 +3000,7 @@ static int K056832_update_linemap(running_machine &machine, bitmap_rgb32 &bitmap for (count = 0; count < LINE_WIDTH; count+=8) { - K056832_get_tile_info(machine, &tileinfo, line, page); + altK056832_get_tile_info(machine, &tileinfo, line, page); basepen = tileinfo.palette_base; code_transparent = tileinfo.category; code_opaque = code_transparent | TILEMAP_PIXEL_LAYER0; @@ -3053,7 +3028,7 @@ static int K056832_update_linemap(running_machine &machine, bitmap_rgb32 &bitmap return(0); } -void K056832_tilemap_draw(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int layer, UINT32 flags, UINT32 priority) +void k056832_device::m_tilemap_draw(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int layer, UINT32 flags, UINT32 priority) { static int last_colorbase[K056832_PAGE_COUNT]; @@ -3070,16 +3045,16 @@ void K056832_tilemap_draw(running_machine &machine, bitmap_rgb32 &bitmap, const UINT16 *pScrollData; UINT16 ram16[2]; - int rowstart = K056832_Y[layer]; - int colstart = K056832_X[layer]; - int rowspan = K056832_H[layer]+1; - int colspan = K056832_W[layer]+1; - int dy = K056832_dy[layer]; - int dx = K056832_dx[layer]; - int scrollbank = ((K056832_regs[0x18]>>1) & 0xc) | (K056832_regs[0x18] & 3); - int scrollmode = K056832_regs[0x05]>>(K056832_LSRAMPage[layer][0]<<1) & 3; + int rowstart = m_y[layer]; + int colstart = m_x[layer]; + int rowspan = m_h[layer]+1; + int colspan = m_w[layer]+1; + int dy = m_dy[layer]; + int dx = m_dx[layer]; + int scrollbank = ((m_regs[0x18]>>1) & 0xc) | (m_regs[0x18] & 3); + int scrollmode = m_regs[0x05]>>(m_lsram_page[layer][0]<<1) & 3; - if (K056832_use_ext_linescroll) + if (m_use_ext_linescroll) { scrollbank = K056832_PAGE_COUNT; } @@ -3093,24 +3068,24 @@ void K056832_tilemap_draw(running_machine &machine, bitmap_rgb32 &bitmap, const cmaxy = cliprect.max_y; // flip correction registers - flipy = K056832_regs[0] & 0x20; + flipy = m_regs[0] & 0x20; if (flipy) { - corr = K056832_regs[0x3c/2]; + corr = m_regs[0x3c/2]; if (corr & 0x400) corr |= 0xfffff800; } else corr = 0; dy += corr; - ay = (unsigned)(dy - K056832_LayerOffset[layer][1]) % height; + ay = (unsigned)(dy - m_layer_offs[layer][1]) % height; - flipx = K056832_regs[0] & 0x10; + flipx = m_regs[0] & 0x10; if (flipx) { - corr = K056832_regs[0x3a/2]; + corr = m_regs[0x3a/2]; if (corr & 0x800) corr |= 0xfffff000; } else corr = 0; - corr -= K056832_LayerOffset[layer][0]; + corr -= m_layer_offs[layer][0]; if (scrollmode == 0 && (flags & K056382_DRAW_FLAG_FORCE_XYSCROLL)) { @@ -3121,14 +3096,14 @@ void K056832_tilemap_draw(running_machine &machine, bitmap_rgb32 &bitmap, const switch( scrollmode ) { case 0: // linescroll - pScrollData = &K056832_videoram[scrollbank<<12] + (K056832_LSRAMPage[layer][1]>>1); + pScrollData = &m_videoram[scrollbank<<12] + (m_lsram_page[layer][1]>>1); line_height = 1; sdat_wrapmask = 0x3ff; sdat_adv = 2; break; case 2: // rowscroll - pScrollData = &K056832_videoram[scrollbank<<12] + (K056832_LSRAMPage[layer][1]>>1); + pScrollData = &m_videoram[scrollbank<<12] + (m_lsram_page[layer][1]>>1); line_height = 8; sdat_wrapmask = 0x3ff; sdat_adv = 16; @@ -3143,8 +3118,8 @@ void K056832_tilemap_draw(running_machine &machine, bitmap_rgb32 &bitmap, const } if (flipy) sdat_adv = -sdat_adv; - last_active = K056832_ActiveLayer; - new_colorbase = (K056832_UpdateMode) ? K055555_get_palette_index(layer) : 0; + last_active = m_active_layer; + new_colorbase = (m_k055555_use) ? K055555_get_palette_index(layer) : 0; for (r=0; rset_scrolly(0, ay); last_dx = 0x100000; @@ -3338,26 +3313,26 @@ void K056832_tilemap_draw(running_machine &machine, bitmap_rgb32 &bitmap, const } // end of column loop } // end of row loop - K056832_ActiveLayer = last_active; + m_active_layer = last_active; } // end of function -int K056832_get_LayerAssociation(void) +int k056832_device::altK056832_get_LayerAssociation(void) { - return(K056832_LayerAssociation); + return(m_layer_association); } -void K056832_set_LayerOffset(int layer, int offsx, int offsy) +void k056832_device::altK056832_set_LayerOffset(int layer, int offsx, int offsy) { - K056832_LayerOffset[layer][0] = offsx; - K056832_LayerOffset[layer][1] = offsy; + m_layer_offs[layer][0] = offsx; + m_layer_offs[layer][1] = offsy; } -void K056832_set_UpdateMode(int mode) +void k056832_device::altK056832_set_UpdateMode(int mode) { - K056832_UpdateMode = mode; + m_k055555_use = mode; } diff --git a/src/mame/video/k054156_k054157_k056832.h b/src/mame/video/k054156_k054157_k056832.h index b682afc925c..7ba826bc52e 100644 --- a/src/mame/video/k054156_k054157_k056832.h +++ b/src/mame/video/k054156_k054157_k056832.h @@ -8,6 +8,14 @@ typedef void (*k056832_callback)(running_machine &machine, int layer, int *code, int *color, int *flags); +#define MCFG_K056832_ADD(_tag, _interface) \ + MCFG_DEVICE_ADD(_tag, K056832, 0) \ + MCFG_DEVICE_CONFIG(_interface) + +#define MCFG_K056832_ADD_NOINTF(_tag ) \ + MCFG_DEVICE_ADD(_tag, K056832, 0) + + struct k056832_interface { const char *m_gfx_memory_region; @@ -35,13 +43,22 @@ struct k056832_interface #define K056832_BPP_8TASMAN 6 #define K056832_DRAW_FLAG_MIRROR 0x00800000 +#define K056382_DRAW_FLAG_FORCE_XYSCROLL 0x00800000 + class k056832_device : public device_t, public k056832_interface { public: k056832_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - ~k056832_device() {} + ~k056832_device() + { + m_k055555_use = 0; + altK056832_djmain_hack= 0; + altK056832_gfxnum = 0; + altK056832_bpp = 0; + altK056832_memory_region = 0; + } void SetExtLinescroll(); /* Lethal Enforcers */ @@ -117,6 +134,14 @@ private: int m_num_gfx_banks; // depends on size of graphics ROMs int m_cur_gfx_banks; // cached info for K056832_regs[0x1a] + + + + + + + + // ROM readback involves reading 2 halves of a word // from the same location in a row. Reading the // RAM window resets this state so you get the first half. @@ -146,6 +171,19 @@ private: int m_use_ext_linescroll; int m_uses_tile_banks, m_cur_tile_bank; + + + + + // todo: collapse these into above + + int m_k055555_use; + + int altK056832_djmain_hack; + int altK056832_gfxnum; // graphics element index for unpacked tiles + const char *altK056832_memory_region; // memory region for tile gfx data + int altK056832_bpp; + device_t *m_k055555; /* used to choose colorbase */ void get_tile_info( tile_data &tileinfo, int tile_index, int pageIndex ); @@ -180,6 +218,62 @@ private: template void tilemap_draw_common(_BitmapClass &bitmap, const rectangle &cliprect, int layer, UINT32 flags, UINT32 priority); + + +public: + + + + + void altK056832_vh_start(running_machine &machine, const char *gfx_memory_region, int bpp, int big, + int (*scrolld)[4][2], + void (*callback)(running_machine &machine, int layer, int *code, int *color, int *flags), + int djmain_hack); + DECLARE_READ16_MEMBER( altK056832_ram_word_r ); + DECLARE_WRITE16_MEMBER( altK056832_ram_word_w ); + DECLARE_READ32_MEMBER( altK056832_5bpp_rom_long_r ); + DECLARE_READ32_MEMBER( altK056832_6bpp_rom_long_r ); + DECLARE_READ16_MEMBER( altK056832_mw_rom_word_r ); + DECLARE_WRITE16_MEMBER( m_word_w ); // "VRAM" registers + DECLARE_WRITE16_MEMBER( altK056832_b_word_w ); + void altK056832_mark_plane_dirty(int num); + void altK056832_MarkAllTilemapsDirty(void); + void m_tilemap_draw(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int num, UINT32 flags, UINT32 priority); + int altK056832_get_LayerAssociation(void); + void altK056832_set_LayerOffset(int layer, int offsx, int offsy); + void altK056832_set_UpdateMode(int mode); + + DECLARE_READ32_MEMBER( altK056832_ram_long_r ); + DECLARE_WRITE32_MEMBER( altK056832_ram_long_w ); + DECLARE_WRITE32_MEMBER( altK056832_long_w ); + DECLARE_WRITE32_MEMBER( altK056832_b_long_w ); + + void altK056832_mark_page_dirty(int page); + void altK056832_change_rambank(void); + void altK056832_change_rombank(void); + void altK056832_UpdatePageLayout(void); + int altK056832_rom_read_b(running_machine &machine, int offset, int blksize, int blksize2, int zerosec); + void altK056832_postload(void); + void altK056832_get_tile_info( tile_data &tileinfo, int tile_index, int pageIndex ); + int altK056832_update_linemap(running_machine &machine, bitmap_rgb32 &bitmap, int page, int flags); + + TILE_GET_INFO_MEMBER(altK056832_get_tile_info0); + TILE_GET_INFO_MEMBER(altK056832_get_tile_info1); + TILE_GET_INFO_MEMBER(altK056832_get_tile_info2); + TILE_GET_INFO_MEMBER(altK056832_get_tile_info3); + TILE_GET_INFO_MEMBER(altK056832_get_tile_info4); + TILE_GET_INFO_MEMBER(altK056832_get_tile_info5); + TILE_GET_INFO_MEMBER(altK056832_get_tile_info6); + TILE_GET_INFO_MEMBER(altK056832_get_tile_info7); + TILE_GET_INFO_MEMBER(altK056832_get_tile_info8); + TILE_GET_INFO_MEMBER(altK056832_get_tile_info9); + TILE_GET_INFO_MEMBER(altK056832_get_tile_infoa); + TILE_GET_INFO_MEMBER(altK056832_get_tile_infob); + TILE_GET_INFO_MEMBER(altK056832_get_tile_infoc); + TILE_GET_INFO_MEMBER(altK056832_get_tile_infod); + TILE_GET_INFO_MEMBER(altK056832_get_tile_infoe); + TILE_GET_INFO_MEMBER(altK056832_get_tile_infof); + }; extern const device_type K056832; @@ -187,38 +281,7 @@ extern const device_type K056832; -#define K056382_DRAW_FLAG_FORCE_XYSCROLL 0x00800000 -void K056832_vh_start(running_machine &machine, const char *gfx_memory_region, int bpp, int big, - int (*scrolld)[4][2], - void (*callback)(running_machine &machine, int layer, int *code, int *color, int *flags), - int djmain_hack); -DECLARE_READ16_HANDLER( K056832_ram_word_r ); -DECLARE_WRITE16_HANDLER( K056832_ram_word_w ); -DECLARE_READ32_HANDLER( K056832_5bpp_rom_long_r ); -DECLARE_READ32_HANDLER( K056832_6bpp_rom_long_r ); -DECLARE_READ16_HANDLER( K056832_mw_rom_word_r ); -DECLARE_WRITE16_HANDLER( K056832_word_w ); // "VRAM" registers -DECLARE_WRITE16_HANDLER( K056832_b_word_w ); -void K056832_mark_plane_dirty(int num); -void K056832_MarkAllTilemapsDirty(void); -void K056832_tilemap_draw(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int num, UINT32 flags, UINT32 priority); -int K056832_get_LayerAssociation(void); -void K056832_set_LayerOffset(int layer, int offsx, int offsy); -void K056832_set_UpdateMode(int mode); -DECLARE_READ32_HANDLER( K056832_ram_long_r ); -DECLARE_WRITE32_HANDLER( K056832_ram_long_w ); -DECLARE_WRITE32_HANDLER( K056832_long_w ); -DECLARE_WRITE32_HANDLER( K056832_b_long_w ); - -/* bit depths for the 56832 */ -#define K056832_BPP_4 0 -#define K056832_BPP_5 1 -#define K056832_BPP_6 2 -#define K056832_BPP_8 3 -#define K056832_BPP_4dj 4 -#define K056832_BPP_8LE 5 -#define K056832_BPP_8TASMAN 6 #endif diff --git a/src/mame/video/konamigx.c b/src/mame/video/konamigx.c index 508056e2871..97cff797184 100644 --- a/src/mame/video/konamigx.c +++ b/src/mame/video/konamigx.c @@ -1165,7 +1165,7 @@ void konamigx_objdma(void) if (gx_objdma && gx_spriteram && K053247_ram) memcpy(gx_spriteram, K053247_ram, 0x1000); } -void konamigx_mixer(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, +void konamigx_state::konamigx_mixer(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, tilemap_t *sub1, int sub1flags, tilemap_t *sub2, int sub2flags, int mixerflags, bitmap_ind16 *extra_bitmap, int rushingheroes_hack) @@ -1552,7 +1552,7 @@ void konamigx_mixer(running_machine &machine, bitmap_rgb32 &bitmap, const rectan if (mixerflags & 1<<(code+12)) k |= K056382_DRAW_FLAG_FORCE_XYSCROLL; - K056832_tilemap_draw(machine, bitmap, cliprect, code, k, 0); + m_k056832->m_tilemap_draw(machine, bitmap, cliprect, code, k, 0); } continue; case -2: @@ -2016,7 +2016,7 @@ static void konamigx_alpha_tile_callback(running_machine &machine, int layer, in > so, well, the top bits of the code are suspicious */ -static void _gxcommoninitnosprites(running_machine &machine) +void konamigx_state::_gxcommoninitnosprites(running_machine &machine) { int i; @@ -2044,16 +2044,16 @@ static void _gxcommoninitnosprites(running_machine &machine) // In most cases only a constant is needed to add to the X offsets to yield correct // displacement. This should be done by the CCU but the CRT timings have not been // figured out. - K056832_set_LayerOffset(0, -2, 0); - K056832_set_LayerOffset(1, 0, 0); - K056832_set_LayerOffset(2, 2, 0); - K056832_set_LayerOffset(3, 3, 0); + m_k056832->altK056832_set_LayerOffset(0, -2, 0); + m_k056832->altK056832_set_LayerOffset(1, 0, 0); + m_k056832->altK056832_set_LayerOffset(2, 2, 0); + m_k056832->altK056832_set_LayerOffset(3, 3, 0); konamigx_has_dual_screen = 0; konamigx_current_frame = 0; } -static void _gxcommoninit(running_machine &machine) +void konamigx_state::_gxcommoninit(running_machine &machine) { // (+ve values move objects to the right and -ve values move objects to the left) K055673_vh_start(machine, "gfx2", K055673_LAYOUT_GX, -26, -23, konamigx_type2_sprite_callback); @@ -2069,7 +2069,7 @@ VIDEO_START_MEMBER(konamigx_state,konamigx_5bpp) else game_tile_callback = konamigx_type2_tile_callback; - K056832_vh_start(machine(), "gfx1", K056832_BPP_5, 0, NULL, game_tile_callback, 0); + m_k056832->altK056832_vh_start(machine(), "gfx1", K056832_BPP_5, 0, NULL, game_tile_callback, 0); _gxcommoninit(machine()); @@ -2078,7 +2078,7 @@ VIDEO_START_MEMBER(konamigx_state,konamigx_5bpp) if (!strcmp(machine().system().name,"tbyahhoo")) { - K056832_set_UpdateMode(1); + m_k056832->altK056832_set_UpdateMode(1); gx_tilemode = 1; } else @@ -2106,7 +2106,7 @@ VIDEO_START_MEMBER(konamigx_state,konamigx_5bpp) VIDEO_START_MEMBER(konamigx_state,winspike) { - K056832_vh_start(machine(), "gfx1", K056832_BPP_8, 0, NULL, konamigx_alpha_tile_callback, 2); + m_k056832->altK056832_vh_start(machine(), "gfx1", K056832_BPP_8, 0, NULL, konamigx_alpha_tile_callback, 2); K055673_vh_start(machine(), "gfx2", K055673_LAYOUT_LE2, -53, -23, konamigx_type2_sprite_callback); _gxcommoninitnosprites(machine()); @@ -2114,20 +2114,20 @@ VIDEO_START_MEMBER(konamigx_state,winspike) VIDEO_START_MEMBER(konamigx_state,dragoonj) { - K056832_vh_start(machine(), "gfx1", K056832_BPP_5, 1, NULL, konamigx_type2_tile_callback, 0); + m_k056832->altK056832_vh_start(machine(), "gfx1", K056832_BPP_5, 1, NULL, konamigx_type2_tile_callback, 0); K055673_vh_start(machine(), "gfx2", K055673_LAYOUT_RNG, -53, -23, konamigx_dragoonj_sprite_callback); _gxcommoninitnosprites(machine()); - K056832_set_LayerOffset(0, -2+1, 0); - K056832_set_LayerOffset(1, 0+1, 0); - K056832_set_LayerOffset(2, 2+1, 0); - K056832_set_LayerOffset(3, 3+1, 0); + m_k056832->altK056832_set_LayerOffset(0, -2+1, 0); + m_k056832->altK056832_set_LayerOffset(1, 0+1, 0); + m_k056832->altK056832_set_LayerOffset(2, 2+1, 0); + m_k056832->altK056832_set_LayerOffset(3, 3+1, 0); } VIDEO_START_MEMBER(konamigx_state,le2) { - K056832_vh_start(machine(), "gfx1", K056832_BPP_8, 1, NULL, konamigx_type2_tile_callback, 0); + m_k056832->altK056832_vh_start(machine(), "gfx1", K056832_BPP_8, 1, NULL, konamigx_type2_tile_callback, 0); K055673_vh_start(machine(), "gfx2", K055673_LAYOUT_LE2, -46, -23, konamigx_le2_sprite_callback); _gxcommoninitnosprites(machine()); @@ -2140,7 +2140,7 @@ VIDEO_START_MEMBER(konamigx_state,le2) VIDEO_START_MEMBER(konamigx_state,konamigx_6bpp) { - K056832_vh_start(machine(), "gfx1", K056832_BPP_6, 0, NULL, konamigx_type2_tile_callback, 0); + m_k056832->altK056832_vh_start(machine(), "gfx1", K056832_BPP_6, 0, NULL, konamigx_type2_tile_callback, 0); _gxcommoninit(machine()); @@ -2156,7 +2156,7 @@ VIDEO_START_MEMBER(konamigx_state,konamigx_type3) int width = machine().primary_screen->width(); int height = machine().primary_screen->height(); - K056832_vh_start(machine(), "gfx1", K056832_BPP_6, 0, NULL, konamigx_type2_tile_callback, 1); + m_k056832->altK056832_vh_start(machine(), "gfx1", K056832_BPP_6, 0, NULL, konamigx_type2_tile_callback, 1); K055673_vh_start(machine(), "gfx2", K055673_LAYOUT_GX6, -132, -23, konamigx_type2_sprite_callback); dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height); @@ -2181,10 +2181,10 @@ VIDEO_START_MEMBER(konamigx_state,konamigx_type3) // K053936GP_set_offset(0, -30, -1); K053936_set_offset(0, -30, +1); - K056832_set_LayerOffset(0, -52, 0); - K056832_set_LayerOffset(1, -48, 0); - K056832_set_LayerOffset(2, -48, 0); - K056832_set_LayerOffset(3, -48, 0); + m_k056832->altK056832_set_LayerOffset(0, -52, 0); + m_k056832->altK056832_set_LayerOffset(1, -48, 0); + m_k056832->altK056832_set_LayerOffset(2, -48, 0); + m_k056832->altK056832_set_LayerOffset(3, -48, 0); konamigx_has_dual_screen = 1; konamigx_palformat = 1; @@ -2195,7 +2195,7 @@ VIDEO_START_MEMBER(konamigx_state,konamigx_type4) int width = machine().primary_screen->width(); int height = machine().primary_screen->height(); - K056832_vh_start(machine(), "gfx1", K056832_BPP_8, 0, NULL, konamigx_type2_tile_callback, 0); + m_k056832->altK056832_vh_start(machine(), "gfx1", K056832_BPP_8, 0, NULL, konamigx_type2_tile_callback, 0); K055673_vh_start(machine(), "gfx2", K055673_LAYOUT_GX6, -79, -24, konamigx_type2_sprite_callback); // -23 looks better in intro dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height); @@ -2207,10 +2207,10 @@ VIDEO_START_MEMBER(konamigx_state,konamigx_type4) gx_rozenable = 0; gx_specialrozenable = 3; - K056832_set_LayerOffset(0, -27, 0); - K056832_set_LayerOffset(1, -25, 0); - K056832_set_LayerOffset(2, -24, 0); - K056832_set_LayerOffset(3, -22, 0); + m_k056832->altK056832_set_LayerOffset(0, -27, 0); + m_k056832->altK056832_set_LayerOffset(1, -25, 0); + m_k056832->altK056832_set_LayerOffset(2, -24, 0); + m_k056832->altK056832_set_LayerOffset(3, -22, 0); K053936_wraparound_enable(0, 0); K053936GP_set_offset(0, -36, 1); @@ -2226,7 +2226,7 @@ VIDEO_START_MEMBER(konamigx_state,konamigx_type4_vsn) int width = machine().primary_screen->width(); int height = machine().primary_screen->height(); - K056832_vh_start(machine(), "gfx1", K056832_BPP_8, 0, NULL, konamigx_type2_tile_callback, 2); // set djmain_hack to 2 to kill layer association or half the tilemaps vanish on screen 0 + m_k056832->altK056832_vh_start(machine(), "gfx1", K056832_BPP_8, 0, NULL, konamigx_type2_tile_callback, 2); // set djmain_hack to 2 to kill layer association or half the tilemaps vanish on screen 0 K055673_vh_start(machine(), "gfx2", K055673_LAYOUT_GX6, -132, -23, konamigx_type2_sprite_callback); dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height); @@ -2238,10 +2238,10 @@ VIDEO_START_MEMBER(konamigx_state,konamigx_type4_vsn) gx_rozenable = 0; gx_specialrozenable = 3; - K056832_set_LayerOffset(0, -52, 0); - K056832_set_LayerOffset(1, -48, 0); - K056832_set_LayerOffset(2, -48, 0); - K056832_set_LayerOffset(3, -48, 0); + m_k056832->altK056832_set_LayerOffset(0, -52, 0); + m_k056832->altK056832_set_LayerOffset(1, -48, 0); + m_k056832->altK056832_set_LayerOffset(2, -48, 0); + m_k056832->altK056832_set_LayerOffset(3, -48, 0); K053936_wraparound_enable(0, 1); // wraparound doesn't work properly with the custom drawing function anyway, see the crowd in vsnet and rushhero K053936GP_set_offset(0, -30, 0); @@ -2256,7 +2256,7 @@ VIDEO_START_MEMBER(konamigx_state,konamigx_type4_sd2) int width = machine().primary_screen->width(); int height = machine().primary_screen->height(); - K056832_vh_start(machine(), "gfx1", K056832_BPP_8, 0, NULL, konamigx_type2_tile_callback, 0); + m_k056832->altK056832_vh_start(machine(), "gfx1", K056832_BPP_8, 0, NULL, konamigx_type2_tile_callback, 0); K055673_vh_start(machine(), "gfx2", K055673_LAYOUT_GX6, -81, -23, konamigx_type2_sprite_callback); dualscreen_left_tempbitmap = auto_bitmap_rgb32_alloc(machine(), width, height); @@ -2269,10 +2269,10 @@ VIDEO_START_MEMBER(konamigx_state,konamigx_type4_sd2) gx_specialrozenable = 3; - K056832_set_LayerOffset(0, -29, -1); - K056832_set_LayerOffset(1, -27, -1); - K056832_set_LayerOffset(2, -26, -1); - K056832_set_LayerOffset(3, -24, -1); + m_k056832->altK056832_set_LayerOffset(0, -29, -1); + m_k056832->altK056832_set_LayerOffset(1, -27, -1); + m_k056832->altK056832_set_LayerOffset(2, -26, -1); + m_k056832->altK056832_set_LayerOffset(3, -24, -1); K053936_wraparound_enable(0, 0); @@ -2287,7 +2287,7 @@ VIDEO_START_MEMBER(konamigx_state,konamigx_type4_sd2) VIDEO_START_MEMBER(konamigx_state,konamigx_6bpp_2) { - K056832_vh_start(machine(), "gfx1", K056832_BPP_6, 1, NULL, konamigx_type2_tile_callback, 0); + m_k056832->altK056832_vh_start(machine(), "gfx1", K056832_BPP_6, 1, NULL, konamigx_type2_tile_callback, 0); if (!strcmp(machine().system().name,"salmndr2") || !strcmp(machine().system().name,"salmndr2a")) { @@ -2303,15 +2303,15 @@ VIDEO_START_MEMBER(konamigx_state,konamigx_6bpp_2) VIDEO_START_MEMBER(konamigx_state,opengolf) { - K056832_vh_start(machine(), "gfx1", K056832_BPP_5, 0, NULL, konamigx_type2_tile_callback, 0); + m_k056832->altK056832_vh_start(machine(), "gfx1", K056832_BPP_5, 0, NULL, konamigx_type2_tile_callback, 0); K055673_vh_start(machine(), "gfx2", K055673_LAYOUT_GX6, -53, -23, konamigx_type2_sprite_callback); _gxcommoninitnosprites(machine()); - K056832_set_LayerOffset(0, -2+1, 0); - K056832_set_LayerOffset(1, 0+1, 0); - K056832_set_LayerOffset(2, 2+1, 0); - K056832_set_LayerOffset(3, 3+1, 0); + m_k056832->altK056832_set_LayerOffset(0, -2+1, 0); + m_k056832->altK056832_set_LayerOffset(1, 0+1, 0); + m_k056832->altK056832_set_LayerOffset(2, 2+1, 0); + m_k056832->altK056832_set_LayerOffset(3, 3+1, 0); gx_psac_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1a_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128); gx_psac_tilemap2 = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1b_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128); @@ -2341,15 +2341,15 @@ VIDEO_START_MEMBER(konamigx_state,opengolf) VIDEO_START_MEMBER(konamigx_state,racinfrc) { - K056832_vh_start(machine(), "gfx1", K056832_BPP_6, 0, NULL, konamigx_type2_tile_callback, 0); + m_k056832->altK056832_vh_start(machine(), "gfx1", K056832_BPP_6, 0, NULL, konamigx_type2_tile_callback, 0); K055673_vh_start(machine(), "gfx2", K055673_LAYOUT_GX, -53, -23, konamigx_type2_sprite_callback); _gxcommoninitnosprites(machine()); - K056832_set_LayerOffset(0, -2+1, 0); - K056832_set_LayerOffset(1, 0+1, 0); - K056832_set_LayerOffset(2, 2+1, 0); - K056832_set_LayerOffset(3, 3+1, 0); + m_k056832->altK056832_set_LayerOffset(0, -2+1, 0); + m_k056832->altK056832_set_LayerOffset(1, 0+1, 0); + m_k056832->altK056832_set_LayerOffset(2, 2+1, 0); + m_k056832->altK056832_set_LayerOffset(3, 3+1, 0); gx_psac_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1a_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128); gx_psac_tilemap2 = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1b_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128); @@ -2392,7 +2392,7 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3 if (gx_tilemode == 0) { // driver approximates tile update in mode 0 for speed - unchained = K056832_get_LayerAssociation(); + unchained = m_k056832->altK056832_get_LayerAssociation(); for (i=0; i<4; i++) { newbase = K055555_get_palette_index(i)<<6; @@ -2401,7 +2401,7 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3 layer_colorbase[i] = newbase; if (unchained) - K056832_mark_plane_dirty(i); + m_k056832->altK056832_mark_plane_dirty(i); else dirty = 1; } @@ -2409,7 +2409,7 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3 } else { - // K056832 does all the tracking in mode 1 for accuracy (Twinbee needs this) + // altK056832 does all the tracking in mode 1 for accuracy (Twinbee needs this) } // sub2 is PSAC colorbase on GX @@ -2428,7 +2428,7 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3 } } - if (dirty) K056832_MarkAllTilemapsDirty(); + if (dirty) m_k056832->altK056832_MarkAllTilemapsDirty(); // Type-1 if (gx_specialrozenable == 1) diff --git a/src/mame/video/konicdev.h b/src/mame/video/konicdev.h index a0c55c8a3c1..6df35d95cfc 100644 --- a/src/mame/video/konicdev.h +++ b/src/mame/video/konicdev.h @@ -822,10 +822,6 @@ extern const device_type K037122; #define MCFG_K051733_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, K051733, 0) -#define MCFG_K056832_ADD(_tag, _interface) \ - MCFG_DEVICE_ADD(_tag, K056832, 0) \ - MCFG_DEVICE_CONFIG(_interface) - #define MCFG_K055555_ADD(_tag) \ MCFG_DEVICE_ADD(_tag, K055555, 0) diff --git a/src/mame/video/mystwarr.c b/src/mame/video/mystwarr.c index 6ac7541c044..e75cb0d47cd 100644 --- a/src/mame/video/mystwarr.c +++ b/src/mame/video/mystwarr.c @@ -167,7 +167,7 @@ VIDEO_START_MEMBER(mystwarr_state,gaiapols) m_gametype = 0; - K056832_vh_start(machine(), "gfx1", K056832_BPP_5, 0, NULL, game4bpp_tile_callback, 0); + m_k056832->altK056832_vh_start(machine(), "gfx1", K056832_BPP_5, 0, NULL, game4bpp_tile_callback, 0); mystwarr_decode_tiles(machine()); @@ -175,10 +175,10 @@ VIDEO_START_MEMBER(mystwarr_state,gaiapols) konamigx_mixer_init(machine(), 0); - K056832_set_LayerOffset(0, -2+2-1, 0-1); - K056832_set_LayerOffset(1, 0+2, 0); - K056832_set_LayerOffset(2, 2+2, 0); - K056832_set_LayerOffset(3, 3+2, 0); + m_k056832->altK056832_set_LayerOffset(0, -2+2-1, 0-1); + m_k056832->altK056832_set_LayerOffset(1, 0+2, 0); + m_k056832->altK056832_set_LayerOffset(2, 2+2, 0); + m_k056832->altK056832_set_LayerOffset(3, 3+2, 0); K053936_wraparound_enable(0, 1); K053936GP_set_offset(0, -10, 0); // floor tiles in demo loop2 (Elaine vs. boss) @@ -207,7 +207,7 @@ VIDEO_START_MEMBER(mystwarr_state,dadandrn) m_gametype = 1; - K056832_vh_start(machine(), "gfx1", K056832_BPP_5, 0, NULL, game5bpp_tile_callback, 0); + m_k056832->altK056832_vh_start(machine(), "gfx1", K056832_BPP_5, 0, NULL, game5bpp_tile_callback, 0); mystwarr_decode_tiles(machine()); @@ -217,10 +217,10 @@ VIDEO_START_MEMBER(mystwarr_state,dadandrn) konamigx_mixer_primode(1); - K056832_set_LayerOffset(0, -2+4, 0); - K056832_set_LayerOffset(1, 0+4, 0); - K056832_set_LayerOffset(2, 2+4, 0); - K056832_set_LayerOffset(3, 3+4, 0); + m_k056832->altK056832_set_LayerOffset(0, -2+4, 0); + m_k056832->altK056832_set_LayerOffset(1, 0+4, 0); + m_k056832->altK056832_set_LayerOffset(2, 2+4, 0); + m_k056832->altK056832_set_LayerOffset(3, 3+4, 0); K053936_wraparound_enable(0, 1); K053936GP_set_offset(0, -8, 0); // Brainy's laser @@ -236,7 +236,7 @@ VIDEO_START_MEMBER(mystwarr_state,mystwarr) m_gametype = 0; - K056832_vh_start(machine(), "gfx1", K056832_BPP_5, 0, NULL, mystwarr_tile_callback, 0); + m_k056832->altK056832_vh_start(machine(), "gfx1", K056832_BPP_5, 0, NULL, mystwarr_tile_callback, 0); mystwarr_decode_tiles(machine()); @@ -244,10 +244,10 @@ VIDEO_START_MEMBER(mystwarr_state,mystwarr) konamigx_mixer_init(machine(), 0); - K056832_set_LayerOffset(0, -2-3, 0); - K056832_set_LayerOffset(1, 0-3, 0); - K056832_set_LayerOffset(2, 2-3, 0); - K056832_set_LayerOffset(3, 3-3, 0); + m_k056832->altK056832_set_LayerOffset(0, -2-3, 0); + m_k056832->altK056832_set_LayerOffset(1, 0-3, 0); + m_k056832->altK056832_set_LayerOffset(2, 2-3, 0); + m_k056832->altK056832_set_LayerOffset(3, 3-3, 0); m_cbparam = 0; } @@ -259,7 +259,7 @@ VIDEO_START_MEMBER(mystwarr_state,metamrph) K055555_vh_start(machine()); K054338_vh_start(machine()); - K056832_vh_start(machine(), "gfx1", K056832_BPP_5, 0, NULL, game4bpp_tile_callback, 0); + m_k056832->altK056832_vh_start(machine(), "gfx1", K056832_BPP_5, 0, NULL, game4bpp_tile_callback, 0); mystwarr_decode_tiles(machine()); @@ -268,10 +268,10 @@ VIDEO_START_MEMBER(mystwarr_state,metamrph) konamigx_mixer_init(machine(), 0); // other reference, floor at first boss - K056832_set_LayerOffset(0, -2+4, 0); // text - K056832_set_LayerOffset(1, 0+4, 0); // attract sea - K056832_set_LayerOffset(2, 2+4, 0); // attract red monster in background of sea - K056832_set_LayerOffset(3, 3+4, 0); // attract sky background to sea + m_k056832->altK056832_set_LayerOffset(0, -2+4, 0); // text + m_k056832->altK056832_set_LayerOffset(1, 0+4, 0); // attract sea + m_k056832->altK056832_set_LayerOffset(2, 2+4, 0); // attract red monster in background of sea + m_k056832->altK056832_set_LayerOffset(3, 3+4, 0); // attract sky background to sea } VIDEO_START_MEMBER(mystwarr_state,viostorm) @@ -281,7 +281,7 @@ VIDEO_START_MEMBER(mystwarr_state,viostorm) K055555_vh_start(machine()); K054338_vh_start(machine()); - K056832_vh_start(machine(), "gfx1", K056832_BPP_5, 0, NULL, game4bpp_tile_callback, 0); + m_k056832->altK056832_vh_start(machine(), "gfx1", K056832_BPP_5, 0, NULL, game4bpp_tile_callback, 0); mystwarr_decode_tiles(machine()); @@ -289,10 +289,10 @@ VIDEO_START_MEMBER(mystwarr_state,viostorm) konamigx_mixer_init(machine(), 0); - K056832_set_LayerOffset(0, -2+1, 0); - K056832_set_LayerOffset(1, 0+1, 0); - K056832_set_LayerOffset(2, 2+1, 0); - K056832_set_LayerOffset(3, 3+1, 0); + m_k056832->altK056832_set_LayerOffset(0, -2+1, 0); + m_k056832->altK056832_set_LayerOffset(1, 0+1, 0); + m_k056832->altK056832_set_LayerOffset(2, 2+1, 0); + m_k056832->altK056832_set_LayerOffset(3, 3+1, 0); } VIDEO_START_MEMBER(mystwarr_state,martchmp) @@ -302,7 +302,7 @@ VIDEO_START_MEMBER(mystwarr_state,martchmp) K055555_vh_start(machine()); K054338_vh_start(machine()); - K056832_vh_start(machine(), "gfx1", K056832_BPP_5, 0, NULL, game5bpp_tile_callback, 0); + m_k056832->altK056832_vh_start(machine(), "gfx1", K056832_BPP_5, 0, NULL, game5bpp_tile_callback, 0); mystwarr_decode_tiles(machine()); @@ -310,10 +310,10 @@ VIDEO_START_MEMBER(mystwarr_state,martchmp) konamigx_mixer_init(machine(), 0); - K056832_set_LayerOffset(0, -2-4, 0); - K056832_set_LayerOffset(1, 0-4, 0); - K056832_set_LayerOffset(2, 2-4, 0); - K056832_set_LayerOffset(3, 3-4, 0); + m_k056832->altK056832_set_LayerOffset(0, -2-4, 0); + m_k056832->altK056832_set_LayerOffset(1, 0-4, 0); + m_k056832->altK056832_set_LayerOffset(2, 2-4, 0); + m_k056832->altK056832_set_LayerOffset(3, 3-4, 0); K054338_invert_alpha(0); } @@ -330,7 +330,7 @@ UINT32 mystwarr_state::screen_update_mystwarr(screen_device &screen, bitmap_rgb3 { old = m_layer_colorbase[i]; m_layer_colorbase[i] = K055555_get_palette_index(i)<<4; - if( old != m_layer_colorbase[i] ) K056832_mark_plane_dirty(i); + if( old != m_layer_colorbase[i] ) m_k056832->altK056832_mark_plane_dirty(i); } m_sprite_colorbase = K055555_get_palette_index(4)<<5; @@ -347,7 +347,7 @@ UINT32 mystwarr_state::screen_update_metamrph(screen_device &screen, bitmap_rgb3 { old = m_layer_colorbase[i]; m_layer_colorbase[i] = K055555_get_palette_index(i)<<4; - if (old != m_layer_colorbase[i]) K056832_mark_plane_dirty(i); + if (old != m_layer_colorbase[i]) m_k056832->altK056832_mark_plane_dirty(i); } m_sprite_colorbase = K055555_get_palette_index(4)<<4; @@ -364,7 +364,7 @@ UINT32 mystwarr_state::screen_update_martchmp(screen_device &screen, bitmap_rgb3 { old = m_layer_colorbase[i]; m_layer_colorbase[i] = K055555_get_palette_index(i)<<4; - if (old != m_layer_colorbase[i]) K056832_mark_plane_dirty(i); + if (old != m_layer_colorbase[i]) m_k056832->altK056832_mark_plane_dirty(i); } m_sprite_colorbase = K055555_get_palette_index(4)<<5; @@ -498,7 +498,7 @@ UINT32 mystwarr_state::screen_update_dadandrn(screen_device &screen, bitmap_rgb3 rozmode = GXSUB_8BPP; } - if (K056832_get_LayerAssociation()) + if (m_k056832->altK056832_get_LayerAssociation()) { for (i=0; i<4; i++) { @@ -506,7 +506,7 @@ UINT32 mystwarr_state::screen_update_dadandrn(screen_device &screen, bitmap_rgb3 if (m_layer_colorbase[i] != newbase) { m_layer_colorbase[i] = newbase; - K056832_mark_plane_dirty(i); + m_k056832->altK056832_mark_plane_dirty(i); } } } @@ -521,7 +521,7 @@ UINT32 mystwarr_state::screen_update_dadandrn(screen_device &screen, bitmap_rgb3 dirty = 1; } } - if (dirty) K056832_MarkAllTilemapsDirty(); + if (dirty) m_k056832->altK056832_MarkAllTilemapsDirty(); }