mirror of
https://github.com/holub/mame
synced 2025-10-06 17:08:28 +03:00
k055555 reworking
This commit is contained in:
parent
b03966ce17
commit
a1e479d5bd
@ -151,7 +151,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, bishi_state )
|
|||||||
AM_RANGE(0x830000, 0x83003f) AM_DEVWRITE("k056832", k056832_device, word_w)
|
AM_RANGE(0x830000, 0x83003f) AM_DEVWRITE("k056832", k056832_device, word_w)
|
||||||
AM_RANGE(0x840000, 0x840007) AM_DEVWRITE("k056832", k056832_device, b_word_w) // VSCCS
|
AM_RANGE(0x840000, 0x840007) AM_DEVWRITE("k056832", k056832_device, b_word_w) // VSCCS
|
||||||
AM_RANGE(0x850000, 0x85001f) AM_DEVWRITE("k054338", k054338_device, word_w) // CLTC
|
AM_RANGE(0x850000, 0x85001f) AM_DEVWRITE("k054338", k054338_device, word_w) // CLTC
|
||||||
AM_RANGE(0x870000, 0x8700ff) AM_DEVWRITE_LEGACY("k055555", k055555_word_w) // PCU2
|
AM_RANGE(0x870000, 0x8700ff) AM_DEVWRITE("k055555", k055555_device, k055555_word_w) // PCU2
|
||||||
AM_RANGE(0x880000, 0x880003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xff00)
|
AM_RANGE(0x880000, 0x880003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0xff00)
|
||||||
AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) // Graphic planes
|
AM_RANGE(0xa00000, 0xa01fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) // Graphic planes
|
||||||
AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(paletteram_xbgr_word_be_w) AM_SHARE("paletteram")
|
AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(paletteram_xbgr_word_be_w) AM_SHARE("paletteram")
|
||||||
|
@ -399,7 +399,7 @@ static ADDRESS_MAP_START( memory_map, AS_PROGRAM, 32, djmain_state )
|
|||||||
AM_RANGE(0x500000, 0x57ffff) AM_READWRITE(sndram_r, sndram_w) // SOUND RAM
|
AM_RANGE(0x500000, 0x57ffff) AM_READWRITE(sndram_r, sndram_w) // SOUND RAM
|
||||||
AM_RANGE(0x580000, 0x58003f) AM_DEVREADWRITE("k056832", k056832_device, long_r, long_w) // VIDEO REG (tilemap)
|
AM_RANGE(0x580000, 0x58003f) AM_DEVREADWRITE("k056832", k056832_device, long_r, long_w) // VIDEO REG (tilemap)
|
||||||
AM_RANGE(0x590000, 0x590007) AM_WRITE(unknown590000_w) // ??
|
AM_RANGE(0x590000, 0x590007) AM_WRITE(unknown590000_w) // ??
|
||||||
AM_RANGE(0x5a0000, 0x5a005f) AM_DEVWRITE_LEGACY("k055555", k055555_long_w) // 055555: priority encoder
|
AM_RANGE(0x5a0000, 0x5a005f) AM_DEVWRITE("k055555", k055555_device, k055555_long_w) // 055555: priority encoder
|
||||||
AM_RANGE(0x5b0000, 0x5b04ff) AM_DEVREADWRITE8("k054539_1", k054539_device, read, write, 0xff00ff00)
|
AM_RANGE(0x5b0000, 0x5b04ff) AM_DEVREADWRITE8("k054539_1", k054539_device, read, write, 0xff00ff00)
|
||||||
AM_RANGE(0x5b0000, 0x5b04ff) AM_DEVREADWRITE8("k054539_2", k054539_device, read, write, 0x00ff00ff)
|
AM_RANGE(0x5b0000, 0x5b04ff) AM_DEVREADWRITE8("k054539_2", k054539_device, read, write, 0x00ff00ff)
|
||||||
AM_RANGE(0x5c0000, 0x5c0003) AM_READ8(inp1_r, 0xffffffff) // DSW3,BTN3,BTN2,BTN1 // input port control (buttons and DIP switches)
|
AM_RANGE(0x5c0000, 0x5c0003) AM_READ8(inp1_r, 0xffffffff) // DSW3,BTN3,BTN2,BTN1 // input port control (buttons and DIP switches)
|
||||||
|
@ -318,17 +318,20 @@ static void generate_sprites(address_space &space, UINT32 src, UINT32 spr, int c
|
|||||||
|
|
||||||
static void tkmmpzdm_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
|
static void tkmmpzdm_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
|
||||||
{
|
{
|
||||||
konamigx_esc_alert(space.machine().driver_data<konamigx_state>()->m_workram, 0x0142, 0x100, 0);
|
konamigx_state* state = space.machine().driver_data<konamigx_state>();
|
||||||
|
state->konamigx_esc_alert(space.machine().driver_data<konamigx_state>()->m_workram, 0x0142, 0x100, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dragoonj_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
|
static void dragoonj_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
|
||||||
{
|
{
|
||||||
konamigx_esc_alert(space.machine().driver_data<konamigx_state>()->m_workram, 0x5c00, 0x100, 0);
|
konamigx_state* state = space.machine().driver_data<konamigx_state>();
|
||||||
|
state->konamigx_esc_alert(space.machine().driver_data<konamigx_state>()->m_workram, 0x5c00, 0x100, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sal2_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
|
static void sal2_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
|
||||||
{
|
{
|
||||||
konamigx_esc_alert(space.machine().driver_data<konamigx_state>()->m_workram, 0x1c8c, 0x172, 1);
|
konamigx_state* state = space.machine().driver_data<konamigx_state>();
|
||||||
|
state->konamigx_esc_alert(space.machine().driver_data<konamigx_state>()->m_workram, 0x1c8c, 0x172, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sexyparo_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
|
static void sexyparo_esc(address_space &space, UINT32 p1, UINT32 p2, UINT32 p3, UINT32 p4)
|
||||||
@ -1158,7 +1161,7 @@ static ADDRESS_MAP_START( gx_base_memmap, AS_PROGRAM, 32, konamigx_state )
|
|||||||
AM_RANGE(0xd4a010, 0xd4a01f) AM_WRITE_LEGACY(K053247_reg_long_w)
|
AM_RANGE(0xd4a010, 0xd4a01f) AM_WRITE_LEGACY(K053247_reg_long_w)
|
||||||
AM_RANGE(0xd4c000, 0xd4c01f) AM_READWRITE(ccu_r, ccu_w)
|
AM_RANGE(0xd4c000, 0xd4c01f) AM_READWRITE(ccu_r, ccu_w)
|
||||||
AM_RANGE(0xd4e000, 0xd4e01f) AM_WRITENOP
|
AM_RANGE(0xd4e000, 0xd4e01f) AM_WRITENOP
|
||||||
AM_RANGE(0xd50000, 0xd500ff) AM_WRITE_LEGACY(K055555_long_w)
|
AM_RANGE(0xd50000, 0xd500ff) AM_DEVWRITE("k055555", k055555_device, K055555_long_w)
|
||||||
AM_RANGE(0xd52000, 0xd5200f) AM_WRITE(sound020_w)
|
AM_RANGE(0xd52000, 0xd5200f) AM_WRITE(sound020_w)
|
||||||
AM_RANGE(0xd52010, 0xd5201f) AM_READ(sound020_r)
|
AM_RANGE(0xd52010, 0xd5201f) AM_READ(sound020_r)
|
||||||
AM_RANGE(0xd56000, 0xd56003) AM_WRITE(eeprom_w)
|
AM_RANGE(0xd56000, 0xd56003) AM_WRITE(eeprom_w)
|
||||||
@ -1792,6 +1795,7 @@ static MACHINE_CONFIG_START( konamigx, konamigx_state )
|
|||||||
MCFG_PALETTE_LENGTH(8192)
|
MCFG_PALETTE_LENGTH(8192)
|
||||||
|
|
||||||
MCFG_K056832_ADD_NOINTF("k056832"/*, konamigx_k056832_intf*/)
|
MCFG_K056832_ADD_NOINTF("k056832"/*, konamigx_k056832_intf*/)
|
||||||
|
MCFG_K055555_ADD("k055555")
|
||||||
|
|
||||||
MCFG_VIDEO_START_OVERRIDE(konamigx_state,konamigx_5bpp)
|
MCFG_VIDEO_START_OVERRIDE(konamigx_state,konamigx_5bpp)
|
||||||
|
|
||||||
|
@ -247,7 +247,7 @@ static ADDRESS_MAP_START( mystwarr_map, AS_PROGRAM, 16, mystwarr_state )
|
|||||||
AM_RANGE(0x000000, 0x1fffff) AM_ROM // main program
|
AM_RANGE(0x000000, 0x1fffff) AM_ROM // main program
|
||||||
AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("gx_workram")
|
AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("gx_workram")
|
||||||
AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(K053247_scattered_word_r,K053247_scattered_word_w) AM_SHARE("spriteram")
|
AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(K053247_scattered_word_r,K053247_scattered_word_w) AM_SHARE("spriteram")
|
||||||
AM_RANGE(0x480000, 0x4800ff) AM_WRITE_LEGACY(K055555_word_w)
|
AM_RANGE(0x480000, 0x4800ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w)
|
||||||
AM_RANGE(0x482000, 0x48200f) AM_READ_LEGACY(K055673_rom_word_r)
|
AM_RANGE(0x482000, 0x48200f) AM_READ_LEGACY(K055673_rom_word_r)
|
||||||
AM_RANGE(0x482010, 0x48201f) AM_WRITE_LEGACY(K053247_reg_word_w)
|
AM_RANGE(0x482010, 0x48201f) AM_WRITE_LEGACY(K053247_reg_word_w)
|
||||||
AM_RANGE(0x484000, 0x484007) AM_WRITE_LEGACY(K053246_word_w)
|
AM_RANGE(0x484000, 0x484007) AM_WRITE_LEGACY(K053246_word_w)
|
||||||
@ -291,7 +291,7 @@ static ADDRESS_MAP_START( metamrph_map, AS_PROGRAM, 16, mystwarr_state )
|
|||||||
AM_RANGE(0x24c000, 0x24ffff) AM_DEVREADWRITE("k053250_1", k053250_device, ram_r, ram_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(0x250000, 0x25000f) AM_DEVREADWRITE("k053250_1", k053250_device, reg_r, reg_w)
|
||||||
AM_RANGE(0x254000, 0x25401f) AM_WRITE_LEGACY(K054338_word_w)
|
AM_RANGE(0x254000, 0x25401f) AM_WRITE_LEGACY(K054338_word_w)
|
||||||
AM_RANGE(0x258000, 0x2580ff) AM_WRITE_LEGACY(K055555_word_w)
|
AM_RANGE(0x258000, 0x2580ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w)
|
||||||
AM_RANGE(0x260000, 0x26001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff)
|
AM_RANGE(0x260000, 0x26001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff)
|
||||||
AM_RANGE(0x264000, 0x264001) AM_WRITE(sound_irq_w)
|
AM_RANGE(0x264000, 0x264001) AM_WRITE(sound_irq_w)
|
||||||
AM_RANGE(0x26800c, 0x26800d) AM_WRITE(sound_cmd1_w)
|
AM_RANGE(0x26800c, 0x26800d) AM_WRITE(sound_cmd1_w)
|
||||||
@ -333,7 +333,7 @@ static ADDRESS_MAP_START( viostorm_map, AS_PROGRAM, 16, mystwarr_state )
|
|||||||
AM_RANGE(0x24c000, 0x24ffff) AM_RAM // K053250 ram
|
AM_RANGE(0x24c000, 0x24ffff) AM_RAM // K053250 ram
|
||||||
AM_RANGE(0x250000, 0x25000f) AM_RAM // K053250 reg
|
AM_RANGE(0x250000, 0x25000f) AM_RAM // K053250 reg
|
||||||
AM_RANGE(0x254000, 0x25401f) AM_WRITE_LEGACY(K054338_word_w)
|
AM_RANGE(0x254000, 0x25401f) AM_WRITE_LEGACY(K054338_word_w)
|
||||||
AM_RANGE(0x258000, 0x2580ff) AM_WRITE_LEGACY(K055555_word_w)
|
AM_RANGE(0x258000, 0x2580ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w)
|
||||||
AM_RANGE(0x25c000, 0x25c03f) AM_READWRITE(K055550_word_r,K055550_word_w)
|
AM_RANGE(0x25c000, 0x25c03f) AM_READWRITE(K055550_word_r,K055550_word_w)
|
||||||
AM_RANGE(0x260000, 0x26001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff)
|
AM_RANGE(0x260000, 0x26001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff)
|
||||||
AM_RANGE(0x264000, 0x264001) AM_WRITE(sound_irq_w)
|
AM_RANGE(0x264000, 0x264001) AM_WRITE(sound_irq_w)
|
||||||
@ -419,7 +419,7 @@ static ADDRESS_MAP_START( martchmp_map, AS_PROGRAM, 16, mystwarr_state )
|
|||||||
AM_RANGE(0x000000, 0x0fffff) AM_ROM // main program
|
AM_RANGE(0x000000, 0x0fffff) AM_ROM // main program
|
||||||
AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("gx_workram") // work RAM
|
AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("gx_workram") // work RAM
|
||||||
AM_RANGE(0x300000, 0x3fffff) AM_ROM // data ROM
|
AM_RANGE(0x300000, 0x3fffff) AM_ROM // data ROM
|
||||||
AM_RANGE(0x400000, 0x4000ff) AM_WRITE_LEGACY(K055555_word_w) // PCU2
|
AM_RANGE(0x400000, 0x4000ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w) // PCU2
|
||||||
AM_RANGE(0x402000, 0x40200f) AM_READ_LEGACY(K055673_rom_word_r) // sprite ROM readback
|
AM_RANGE(0x402000, 0x40200f) AM_READ_LEGACY(K055673_rom_word_r) // sprite ROM readback
|
||||||
AM_RANGE(0x402010, 0x40201f) AM_WRITE_LEGACY(K053247_reg_word_w) // OBJSET2
|
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(0x404000, 0x404007) AM_WRITE_LEGACY(K053246_word_w) // OBJSET1
|
||||||
@ -472,7 +472,7 @@ static ADDRESS_MAP_START( dadandrn_map, AS_PROGRAM, 16, mystwarr_state )
|
|||||||
AM_RANGE(0x482000, 0x482007) AM_DEVWRITE("k056832", k056832_device,b_word_w) // VSCCS
|
AM_RANGE(0x482000, 0x482007) AM_DEVWRITE("k056832", k056832_device,b_word_w) // VSCCS
|
||||||
AM_RANGE(0x484000, 0x484003) AM_WRITE(ddd_053936_clip_w)
|
AM_RANGE(0x484000, 0x484003) AM_WRITE(ddd_053936_clip_w)
|
||||||
AM_RANGE(0x486000, 0x48601f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff)
|
AM_RANGE(0x486000, 0x48601f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff)
|
||||||
AM_RANGE(0x488000, 0x4880ff) AM_WRITE_LEGACY(K055555_word_w)
|
AM_RANGE(0x488000, 0x4880ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w)
|
||||||
AM_RANGE(0x48a00c, 0x48a00d) AM_WRITE(sound_cmd1_msb_w)
|
AM_RANGE(0x48a00c, 0x48a00d) AM_WRITE(sound_cmd1_msb_w)
|
||||||
AM_RANGE(0x48a00e, 0x48a00f) AM_WRITE(sound_cmd2_msb_w)
|
AM_RANGE(0x48a00e, 0x48a00f) AM_WRITE(sound_cmd2_msb_w)
|
||||||
AM_RANGE(0x48a014, 0x48a015) AM_READ(sound_status_msb_r)
|
AM_RANGE(0x48a014, 0x48a015) AM_READ(sound_status_msb_r)
|
||||||
@ -519,7 +519,7 @@ static ADDRESS_MAP_START( gaiapols_map, AS_PROGRAM, 16, mystwarr_state )
|
|||||||
AM_RANGE(0x482000, 0x482007) AM_DEVWRITE("k056832", k056832_device,b_word_w) // VSCCS
|
AM_RANGE(0x482000, 0x482007) AM_DEVWRITE("k056832", k056832_device,b_word_w) // VSCCS
|
||||||
AM_RANGE(0x484000, 0x484003) AM_WRITE(ddd_053936_clip_w)
|
AM_RANGE(0x484000, 0x484003) AM_WRITE(ddd_053936_clip_w)
|
||||||
AM_RANGE(0x486000, 0x48601f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff)
|
AM_RANGE(0x486000, 0x48601f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff)
|
||||||
AM_RANGE(0x488000, 0x4880ff) AM_WRITE_LEGACY(K055555_word_w)
|
AM_RANGE(0x488000, 0x4880ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w)
|
||||||
AM_RANGE(0x48a00c, 0x48a00d) AM_WRITE(sound_cmd1_msb_w)
|
AM_RANGE(0x48a00c, 0x48a00d) AM_WRITE(sound_cmd1_msb_w)
|
||||||
AM_RANGE(0x48a00e, 0x48a00f) AM_WRITE(sound_cmd2_msb_w)
|
AM_RANGE(0x48a00e, 0x48a00f) AM_WRITE(sound_cmd2_msb_w)
|
||||||
AM_RANGE(0x48a014, 0x48a015) AM_READ(sound_status_msb_r)
|
AM_RANGE(0x48a014, 0x48a015) AM_READ(sound_status_msb_r)
|
||||||
@ -999,6 +999,7 @@ static MACHINE_CONFIG_START( mystwarr, mystwarr_state )
|
|||||||
|
|
||||||
MCFG_PALETTE_LENGTH(2048)
|
MCFG_PALETTE_LENGTH(2048)
|
||||||
MCFG_K056832_ADD_NOINTF("k056832"/*, mystwarr_k056832_intf*/)
|
MCFG_K056832_ADD_NOINTF("k056832"/*, mystwarr_k056832_intf*/)
|
||||||
|
MCFG_K055555_ADD("k055555")
|
||||||
|
|
||||||
MCFG_VIDEO_START_OVERRIDE(mystwarr_state,mystwarr)
|
MCFG_VIDEO_START_OVERRIDE(mystwarr_state,mystwarr)
|
||||||
|
|
||||||
|
@ -612,7 +612,8 @@ static MACHINE_CONFIG_START( kongambl, kongambl_state )
|
|||||||
MCFG_VIDEO_START_OVERRIDE(kongambl_state,kongambl)
|
MCFG_VIDEO_START_OVERRIDE(kongambl_state,kongambl)
|
||||||
|
|
||||||
MCFG_K053247_ADD("k053246", k053247_intf)
|
MCFG_K053247_ADD("k053246", k053247_intf)
|
||||||
|
MCFG_K055555_ADD("k055555")
|
||||||
|
|
||||||
MCFG_GFXDECODE(tasman)
|
MCFG_GFXDECODE(tasman)
|
||||||
|
|
||||||
MCFG_K056832_ADD("k056832", k056832_intf)
|
MCFG_K056832_ADD("k056832", k056832_intf)
|
||||||
|
@ -15,6 +15,7 @@ public:
|
|||||||
m_workram(*this,"workram"),
|
m_workram(*this,"workram"),
|
||||||
m_psacram(*this,"psacram"),
|
m_psacram(*this,"psacram"),
|
||||||
m_subpaletteram32(*this,"subpaletteram"),
|
m_subpaletteram32(*this,"subpaletteram"),
|
||||||
|
m_k055555(*this, "k055555"),
|
||||||
m_k056832(*this, "k056832"),
|
m_k056832(*this, "k056832"),
|
||||||
m_k053936_0_ctrl(*this,"k053936_0_ctrl",32),
|
m_k053936_0_ctrl(*this,"k053936_0_ctrl",32),
|
||||||
m_k053936_0_linectrl(*this,"k053936_0_line",32),
|
m_k053936_0_linectrl(*this,"k053936_0_line",32),
|
||||||
@ -31,6 +32,7 @@ public:
|
|||||||
optional_shared_ptr<UINT32> m_workram;
|
optional_shared_ptr<UINT32> m_workram;
|
||||||
optional_shared_ptr<UINT32> m_psacram;
|
optional_shared_ptr<UINT32> m_psacram;
|
||||||
optional_shared_ptr<UINT32> m_subpaletteram32;
|
optional_shared_ptr<UINT32> m_subpaletteram32;
|
||||||
|
required_device<k055555_device> m_k055555;
|
||||||
required_device<k056832_device> m_k056832;
|
required_device<k056832_device> m_k056832;
|
||||||
optional_shared_ptr<UINT16> m_k053936_0_ctrl;
|
optional_shared_ptr<UINT16> m_k053936_0_ctrl;
|
||||||
optional_shared_ptr<UINT16> m_k053936_0_linectrl;
|
optional_shared_ptr<UINT16> m_k053936_0_linectrl;
|
||||||
@ -112,6 +114,10 @@ public:
|
|||||||
tilemap_t *sub1, int sub1flags,
|
tilemap_t *sub1, int sub1flags,
|
||||||
tilemap_t *sub2, int sub2flags,
|
tilemap_t *sub2, int sub2flags,
|
||||||
int mixerflags, bitmap_ind16 *extra_bitmap, int rushingheroes_hack);
|
int mixerflags, bitmap_ind16 *extra_bitmap, int rushingheroes_hack);
|
||||||
|
|
||||||
|
void konamigx_esc_alert(UINT32 *srcbase, int srcoffs, int count, int mode);
|
||||||
|
void konamigx_precache_registers(void);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -191,6 +197,6 @@ extern int konamigx_current_frame;
|
|||||||
/*----------- defined in machine/konamigx.c -----------*/
|
/*----------- defined in machine/konamigx.c -----------*/
|
||||||
|
|
||||||
// K055550/K053990/ESC protection devices handlers
|
// K055550/K053990/ESC protection devices handlers
|
||||||
void konamigx_esc_alert(UINT32 *srcbase, int srcoffs, int count, int mode);
|
|
||||||
|
|
||||||
void fantjour_dma_install(running_machine &machine);
|
void fantjour_dma_install(running_machine &machine);
|
||||||
|
@ -260,7 +260,7 @@ WRITE16_MEMBER(konamigx_state::K053990_martchmp_word_w)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void konamigx_esc_alert(UINT32 *srcbase, int srcoffs, int count, int mode) // (WARNING: assumed big endianess)
|
void konamigx_state::konamigx_esc_alert(UINT32 *srcbase, int srcoffs, int count, int mode) // (WARNING: assumed big endianess)
|
||||||
{
|
{
|
||||||
// hand-filled but should be close
|
// hand-filled but should be close
|
||||||
static const UINT8 ztable[7][8] =
|
static const UINT8 ztable[7][8] =
|
||||||
@ -380,7 +380,7 @@ if((data1=obj[0])&0x80000000)\
|
|||||||
case 0x11010010: i = 5; vmask = 0x1ff; break;
|
case 0x11010010: i = 5; vmask = 0x1ff; break;
|
||||||
case 0x01111018: i = 4; break;
|
case 0x01111018: i = 4; break;
|
||||||
case 0x10010011: i = 3;
|
case 0x10010011: i = 3;
|
||||||
if ((srcbase[0x1c75]&0xff)==32) K055555_write_reg(K55_BLEND_ENABLES,36); // (TEMPORARY)
|
if ((srcbase[0x1c75]&0xff)==32) m_k055555->K055555_write_reg(K55_BLEND_ENABLES,36); // (TEMPORARY)
|
||||||
break;
|
break;
|
||||||
case 0x11010811: i = 2; break;
|
case 0x11010811: i = 2; break;
|
||||||
case 0x10000010: i = 1; break;
|
case 0x10000010: i = 1; break;
|
||||||
|
@ -54,7 +54,7 @@ UINT32 bishi_state::screen_update_bishi(screen_device &screen, bitmap_rgb32 &bit
|
|||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
layers[i] = i;
|
layers[i] = i;
|
||||||
layerpri[i] = k055555_read_register(m_k055555, pris[i]);
|
layerpri[i] = m_k055555->k055555_read_register(m_k055555, pris[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
konami_sortlayers4(layers, layerpri);
|
konami_sortlayers4(layers, layerpri);
|
||||||
@ -63,7 +63,7 @@ UINT32 bishi_state::screen_update_bishi(screen_device &screen, bitmap_rgb32 &bit
|
|||||||
|
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
if (k055555_read_register(m_k055555, K55_INPUT_ENABLES) & enables[layers[i]])
|
if (m_k055555->k055555_read_register(m_k055555, K55_INPUT_ENABLES) & enables[layers[i]])
|
||||||
{
|
{
|
||||||
m_k056832->tilemap_draw(bitmap, cliprect, layers[i], 0, 1 << i);
|
m_k056832->tilemap_draw(bitmap, cliprect, layers[i], 0, 1 << i);
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ void djmain_state::draw_sprites( bitmap_rgb32 &bitmap, const rectangle &cliprect
|
|||||||
int offs, pri_code;
|
int offs, pri_code;
|
||||||
int sortedlist[NUM_SPRITES];
|
int sortedlist[NUM_SPRITES];
|
||||||
|
|
||||||
machine().gfx[0]->set_colorbase(k055555_read_register(m_k055555, K55_PALBASE_SUB2) * 0x400);
|
machine().gfx[0]->set_colorbase(m_k055555->k055555_read_register(m_k055555, K55_PALBASE_SUB2) * 0x400);
|
||||||
|
|
||||||
for (offs = 0; offs < NUM_SPRITES; offs++)
|
for (offs = 0; offs < NUM_SPRITES; offs++)
|
||||||
sortedlist[offs] = -1;
|
sortedlist[offs] = -1;
|
||||||
@ -140,14 +140,14 @@ void djmain_state::video_start()
|
|||||||
|
|
||||||
UINT32 djmain_state::screen_update_djmain(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
UINT32 djmain_state::screen_update_djmain(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||||
{
|
{
|
||||||
int enables = k055555_read_register(m_k055555, K55_INPUT_ENABLES);
|
int enables = m_k055555->k055555_read_register(m_k055555, K55_INPUT_ENABLES);
|
||||||
int pri[NUM_LAYERS + 1];
|
int pri[NUM_LAYERS + 1];
|
||||||
int order[NUM_LAYERS + 1];
|
int order[NUM_LAYERS + 1];
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
for (i = 0; i < NUM_LAYERS; i++)
|
for (i = 0; i < NUM_LAYERS; i++)
|
||||||
pri[i] = k055555_read_register(m_k055555, K55_PRIINP_0 + i * 3);
|
pri[i] = m_k055555->k055555_read_register(m_k055555, K55_PRIINP_0 + i * 3);
|
||||||
pri[i] = k055555_read_register(m_k055555, K55_PRIINP_10);
|
pri[i] = m_k055555->k055555_read_register(m_k055555, K55_PRIINP_10);
|
||||||
|
|
||||||
for (i = 0; i < NUM_LAYERS + 1; i++)
|
for (i = 0; i < NUM_LAYERS + 1; i++)
|
||||||
order[i] = i;
|
order[i] = i;
|
||||||
|
@ -166,7 +166,6 @@ ones. The other 7 words are ignored. Global scrollx is ignored.
|
|||||||
#include "k054156_k054157_k056832.h"
|
#include "k054156_k054157_k056832.h"
|
||||||
#include "konami_helper.h"
|
#include "konami_helper.h"
|
||||||
|
|
||||||
#include "video/k055555.h"// still needs k055555_get_palette_index
|
|
||||||
|
|
||||||
/* end common functions */
|
/* end common functions */
|
||||||
|
|
||||||
@ -378,7 +377,8 @@ void k056832_device::device_start()
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
m_k055555 = machine().device(m_k055555_tag);
|
m_k055555 = machine().device<k055555_device>(m_k055555_tag);
|
||||||
|
|
||||||
|
|
||||||
/* TODO: understand which elements MUST be init here (to keep correct layer
|
/* TODO: understand which elements MUST be init here (to keep correct layer
|
||||||
associations) and which ones can can be init at RESET, if any */
|
associations) and which ones can can be init at RESET, if any */
|
||||||
@ -1464,7 +1464,7 @@ printf("\nend\n");
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
last_active = m_active_layer;
|
last_active = m_active_layer;
|
||||||
new_colorbase = (m_k055555 != NULL) ? k055555_get_palette_index(m_k055555, layer) : 0;
|
new_colorbase = (m_k055555 != NULL) ? m_k055555->k055555_get_palette_index(m_k055555, layer) : 0;
|
||||||
|
|
||||||
for (r = 0; r < rowspan; r++)
|
for (r = 0; r < rowspan; r++)
|
||||||
{
|
{
|
||||||
@ -1769,7 +1769,7 @@ void k056832_device::tilemap_draw_dj( bitmap_rgb32 &bitmap, const rectangle &cli
|
|||||||
sdat_adv = -sdat_adv;
|
sdat_adv = -sdat_adv;
|
||||||
|
|
||||||
last_active = m_active_layer;
|
last_active = m_active_layer;
|
||||||
new_colorbase = (m_k055555 != NULL) ? k055555_get_palette_index(m_k055555, layer) : 0;
|
new_colorbase = (m_k055555 != NULL) ? m_k055555->k055555_get_palette_index(m_k055555, layer) : 0;
|
||||||
|
|
||||||
for (r = 0; r <= rowspan; r++)
|
for (r = 0; r <= rowspan; r++)
|
||||||
{
|
{
|
||||||
@ -2182,7 +2182,7 @@ void k056832_device::altK056832_vh_start(running_machine &machine, const char *g
|
|||||||
void (*callback)(running_machine &machine, int layer, int *code, int *color, int *flags),
|
void (*callback)(running_machine &machine, int layer, int *code, int *color, int *flags),
|
||||||
int djmain_hack)
|
int djmain_hack)
|
||||||
{
|
{
|
||||||
m_k055555_use = 0;
|
m_k055555 = 0;
|
||||||
m_callback = callback;
|
m_callback = callback;
|
||||||
m_djmain_hack = djmain_hack;
|
m_djmain_hack = djmain_hack;
|
||||||
|
|
||||||
@ -2403,7 +2403,7 @@ void k056832_device::m_tilemap_draw(running_machine &machine, bitmap_rgb32 &bitm
|
|||||||
if (flipy) sdat_adv = -sdat_adv;
|
if (flipy) sdat_adv = -sdat_adv;
|
||||||
|
|
||||||
last_active = m_active_layer;
|
last_active = m_active_layer;
|
||||||
new_colorbase = (m_k055555_use) ? K055555_get_palette_index(layer) : 0;
|
new_colorbase = (m_k055555 != NULL) ? m_k055555->K055555_get_palette_index(layer) : 0;
|
||||||
|
|
||||||
for (r=0; r<rowspan; r++)
|
for (r=0; r<rowspan; r++)
|
||||||
{
|
{
|
||||||
@ -2501,7 +2501,7 @@ void k056832_device::m_tilemap_draw(running_machine &machine, bitmap_rgb32 &bitm
|
|||||||
m_active_layer = layer;
|
m_active_layer = layer;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_k055555_use)
|
if (m_k055555 != NULL)
|
||||||
{
|
{
|
||||||
if (last_colorbase[pageIndex] != new_colorbase)
|
if (last_colorbase[pageIndex] != new_colorbase)
|
||||||
{
|
{
|
||||||
@ -2607,9 +2607,9 @@ int k056832_device::get_layer_association(void)
|
|||||||
return(m_layer_association);
|
return(m_layer_association);
|
||||||
}
|
}
|
||||||
|
|
||||||
void k056832_device::altK056832_set_UpdateMode(int mode)
|
void k056832_device::K056832_set_k055555(k055555_device * mode)
|
||||||
{
|
{
|
||||||
m_k055555_use = mode;
|
m_k055555 = mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -5,6 +5,9 @@
|
|||||||
#define VERBOSE 0
|
#define VERBOSE 0
|
||||||
#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
|
#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
|
||||||
|
|
||||||
|
#include "video/k055555.h"// still needs k055555_get_palette_index
|
||||||
|
|
||||||
|
|
||||||
typedef void (*k056832_callback)(running_machine &machine, int layer, int *code, int *color, int *flags);
|
typedef void (*k056832_callback)(running_machine &machine, int layer, int *code, int *color, int *flags);
|
||||||
|
|
||||||
|
|
||||||
@ -53,7 +56,7 @@ public:
|
|||||||
k056832_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
k056832_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||||
~k056832_device()
|
~k056832_device()
|
||||||
{
|
{
|
||||||
m_k055555_use = 0;
|
m_k055555 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetExtLinescroll(); /* Lethal Enforcers */
|
void SetExtLinescroll(); /* Lethal Enforcers */
|
||||||
@ -174,7 +177,7 @@ private:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
device_t *m_k055555; /* used to choose colorbase */
|
k055555_device *m_k055555; /* used to choose colorbase */
|
||||||
|
|
||||||
void get_tile_info( tile_data &tileinfo, int tile_index, int pageIndex );
|
void get_tile_info( tile_data &tileinfo, int tile_index, int pageIndex );
|
||||||
|
|
||||||
@ -216,15 +219,12 @@ private:
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
// todo: collapse these into above
|
// todo: collapse these into above
|
||||||
|
|
||||||
int m_k055555_use;
|
|
||||||
|
|
||||||
void altK056832_vh_start(running_machine &machine, const char *gfx_memory_region, int bpp, int big,
|
void altK056832_vh_start(running_machine &machine, const char *gfx_memory_region, int bpp, int big,
|
||||||
int (*scrolld)[4][2],
|
int (*scrolld)[4][2],
|
||||||
void (*callback)(running_machine &machine, int layer, int *code, int *color, int *flags),
|
void (*callback)(running_machine &machine, int layer, int *code, int *color, int *flags),
|
||||||
int djmain_hack);
|
int djmain_hack);
|
||||||
|
|
||||||
void altK056832_set_UpdateMode(int mode); // k055555 hook
|
void K056832_set_k055555(k055555_device* mode); // k055555 hook
|
||||||
|
|
||||||
|
|
||||||
void m_tilemap_draw(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int num, UINT32 flags, UINT32 priority);
|
void m_tilemap_draw(running_machine &machine, bitmap_rgb32 &bitmap, const rectangle &cliprect, int num, UINT32 flags, UINT32 priority);
|
||||||
|
@ -21,14 +21,19 @@ static int K054338_shdRGB[9];
|
|||||||
static int K054338_alphainverted;
|
static int K054338_alphainverted;
|
||||||
|
|
||||||
|
|
||||||
|
// use member once implementations are merged.
|
||||||
|
k055555_device* temp_k055555 = 0;
|
||||||
|
|
||||||
|
|
||||||
// K054338 alpha blend / final mixer (normally used with the 55555)
|
// K054338 alpha blend / final mixer (normally used with the 55555)
|
||||||
// because the implementation is video dependant, this is just a
|
// because the implementation is video dependant, this is just a
|
||||||
// register-handling shell.
|
// register-handling shell.
|
||||||
void K054338_vh_start(running_machine &machine)
|
void K054338_vh_start(running_machine &machine, k055555_device* k055555)
|
||||||
{
|
{
|
||||||
memset(k54338_regs, 0, sizeof(UINT16)*32);
|
memset(k54338_regs, 0, sizeof(UINT16)*32);
|
||||||
memset(K054338_shdRGB, 0, sizeof(int)*9);
|
memset(K054338_shdRGB, 0, sizeof(int)*9);
|
||||||
K054338_alphainverted = 1;
|
K054338_alphainverted = 1;
|
||||||
|
temp_k055555 = k055555;
|
||||||
|
|
||||||
machine.save().save_item(NAME(k54338_regs));
|
machine.save().save_item(NAME(k54338_regs));
|
||||||
}
|
}
|
||||||
@ -77,6 +82,8 @@ void K054338_update_all_shadows(running_machine &machine, int rushingheroes_hack
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Unified K054338/K055555 BG color fill
|
// Unified K054338/K055555 BG color fill
|
||||||
void K054338_fill_backcolor(running_machine &machine, bitmap_rgb32 &bitmap, int mode) // (see p.67)
|
void K054338_fill_backcolor(running_machine &machine, bitmap_rgb32 &bitmap, int mode) // (see p.67)
|
||||||
{
|
{
|
||||||
@ -106,8 +113,8 @@ void K054338_fill_backcolor(running_machine &machine, bitmap_rgb32 &bitmap, int
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BGC_CBLK = K055555_read_register(0);
|
BGC_CBLK = temp_k055555->K055555_read_register(0);
|
||||||
BGC_SET = K055555_read_register(1);
|
BGC_SET = temp_k055555->K055555_read_register(1);
|
||||||
pal_ptr += BGC_CBLK << 9;
|
pal_ptr += BGC_CBLK << 9;
|
||||||
|
|
||||||
// single color output from PCU2
|
// single color output from PCU2
|
||||||
@ -264,7 +271,7 @@ void k054338_device::device_config_complete()
|
|||||||
void k054338_device::device_start()
|
void k054338_device::device_start()
|
||||||
{
|
{
|
||||||
m_screen = machine().device<screen_device>(m_screen_tag);
|
m_screen = machine().device<screen_device>(m_screen_tag);
|
||||||
m_k055555 = machine().device(m_k055555_tag);
|
m_k055555 = machine().device<k055555_device>(m_k055555_tag);
|
||||||
|
|
||||||
save_item(NAME(m_regs));
|
save_item(NAME(m_regs));
|
||||||
save_item(NAME(m_shd_rgb));
|
save_item(NAME(m_shd_rgb));
|
||||||
@ -376,8 +383,8 @@ void k054338_device::fill_backcolor( bitmap_rgb32 &bitmap, int mode ) // (see p.
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BGC_CBLK = k055555_read_register(m_k055555, 0);
|
BGC_CBLK = m_k055555->k055555_read_register(m_k055555, 0);
|
||||||
BGC_SET = k055555_read_register(m_k055555, 1);
|
BGC_SET = m_k055555->k055555_read_register(m_k055555, 1);
|
||||||
|
|
||||||
pal_ptr += BGC_CBLK << 9;
|
pal_ptr += BGC_CBLK << 9;
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#ifndef __K054338_H__
|
#ifndef __K054338_H__
|
||||||
#define __K054338_H__
|
#define __K054338_H__
|
||||||
|
|
||||||
|
#include "k055555.h"
|
||||||
|
|
||||||
#define MCFG_K054338_ADD(_tag, _interface) \
|
#define MCFG_K054338_ADD(_tag, _interface) \
|
||||||
MCFG_DEVICE_ADD(_tag, K054338, 0) \
|
MCFG_DEVICE_ADD(_tag, K054338, 0) \
|
||||||
@ -11,7 +12,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/* K054338 mixer/alpha blender */
|
/* K054338 mixer/alpha blender */
|
||||||
void K054338_vh_start(running_machine &machine);
|
void K054338_vh_start(running_machine &machine, k055555_device* k055555);
|
||||||
DECLARE_WRITE16_HANDLER( K054338_word_w ); // "CLCT" registers
|
DECLARE_WRITE16_HANDLER( K054338_word_w ); // "CLCT" registers
|
||||||
DECLARE_WRITE32_HANDLER( K054338_long_w );
|
DECLARE_WRITE32_HANDLER( K054338_long_w );
|
||||||
int K054338_read_register(int reg);
|
int K054338_read_register(int reg);
|
||||||
@ -77,7 +78,7 @@ private:
|
|||||||
int m_shd_rgb[9];
|
int m_shd_rgb[9];
|
||||||
|
|
||||||
screen_device *m_screen;
|
screen_device *m_screen;
|
||||||
device_t *m_k055555; /* used to fill BG color */
|
k055555_device *m_k055555; /* used to fill BG color */
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const device_type K054338;
|
extern const device_type K054338;
|
||||||
|
@ -59,7 +59,6 @@ Lots of byte-wise registers. A partial map:
|
|||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "k055555.h"
|
#include "k055555.h"
|
||||||
#include "devlegcy.h"
|
|
||||||
|
|
||||||
|
|
||||||
#define VERBOSE 0
|
#define VERBOSE 0
|
||||||
@ -68,16 +67,15 @@ Lots of byte-wise registers. A partial map:
|
|||||||
/* K055555 5-bit-per-pixel priority encoder */
|
/* K055555 5-bit-per-pixel priority encoder */
|
||||||
/* This device has 48 8-bit-wide registers */
|
/* This device has 48 8-bit-wide registers */
|
||||||
|
|
||||||
static UINT8 k55555_regs[128];
|
|
||||||
|
|
||||||
void K055555_vh_start(running_machine &machine)
|
void k055555_device::K055555_vh_start(running_machine &machine)
|
||||||
{
|
{
|
||||||
machine.save().save_item(NAME(k55555_regs));
|
machine.save().save_item(NAME(m_regs));
|
||||||
|
|
||||||
memset(k55555_regs, 0, 64*sizeof(UINT8));
|
memset(m_regs, 0, 64*sizeof(UINT8));
|
||||||
}
|
}
|
||||||
|
|
||||||
void K055555_write_reg(UINT8 regnum, UINT8 regdat)
|
void k055555_device::K055555_write_reg(UINT8 regnum, UINT8 regdat)
|
||||||
{
|
{
|
||||||
static const char *const rnames[46] =
|
static const char *const rnames[46] =
|
||||||
{
|
{
|
||||||
@ -89,15 +87,15 @@ void K055555_write_reg(UINT8 regnum, UINT8 regdat)
|
|||||||
"SHD PRI 2", "SHD PRI 3", "SHD ON", "SHD PRI SEL", "V BRI", "OS INBRI", "OS INBRI ON", "ENABLE"
|
"SHD PRI 2", "SHD PRI 3", "SHD ON", "SHD PRI SEL", "V BRI", "OS INBRI", "OS INBRI ON", "ENABLE"
|
||||||
};
|
};
|
||||||
|
|
||||||
if (regdat != k55555_regs[regnum])
|
if (regdat != m_regs[regnum])
|
||||||
{
|
{
|
||||||
LOG(("5^5: %x to reg %x (%s)\n", regdat, regnum, rnames[regnum]));
|
LOG(("5^5: %x to reg %x (%s)\n", regdat, regnum, rnames[regnum]));
|
||||||
}
|
}
|
||||||
|
|
||||||
k55555_regs[regnum] = regdat;
|
m_regs[regnum] = regdat;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE32_HANDLER( K055555_long_w )
|
WRITE32_MEMBER( k055555_device::K055555_long_w )
|
||||||
{
|
{
|
||||||
UINT8 regnum, regdat;
|
UINT8 regnum, regdat;
|
||||||
|
|
||||||
@ -123,7 +121,7 @@ WRITE32_HANDLER( K055555_long_w )
|
|||||||
K055555_write_reg(regnum, regdat);
|
K055555_write_reg(regnum, regdat);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE16_HANDLER( K055555_word_w )
|
WRITE16_MEMBER( k055555_device::K055555_word_w )
|
||||||
{
|
{
|
||||||
if (mem_mask == 0x00ff)
|
if (mem_mask == 0x00ff)
|
||||||
{
|
{
|
||||||
@ -135,14 +133,14 @@ WRITE16_HANDLER( K055555_word_w )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int K055555_read_register(int regnum)
|
int k055555_device::K055555_read_register(int regnum)
|
||||||
{
|
{
|
||||||
return(k55555_regs[regnum]);
|
return(m_regs[regnum]);
|
||||||
}
|
}
|
||||||
|
|
||||||
int K055555_get_palette_index(int idx)
|
int k055555_device::K055555_get_palette_index(int idx)
|
||||||
{
|
{
|
||||||
return(k55555_regs[K55_PALBASE_A + idx]);
|
return(m_regs[K55_PALBASE_A + idx]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -157,31 +155,12 @@ int K055555_get_palette_index(int idx)
|
|||||||
/* K055555 5-bit-per-pixel priority encoder */
|
/* K055555 5-bit-per-pixel priority encoder */
|
||||||
/* This device has 48 8-bit-wide registers */
|
/* This device has 48 8-bit-wide registers */
|
||||||
|
|
||||||
struct k055555_state
|
|
||||||
{
|
|
||||||
UINT8 regs[128];
|
|
||||||
};
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
INLINE FUNCTIONS
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
INLINE k055555_state *k055555_get_safe_token( device_t *device )
|
|
||||||
{
|
|
||||||
assert(device != NULL);
|
|
||||||
assert(device->type() == K055555);
|
|
||||||
|
|
||||||
return (k055555_state *)downcast<k055555_device *>(device)->token();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
DEVICE HANDLERS
|
DEVICE HANDLERS
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
void k055555_write_reg( device_t *device, UINT8 regnum, UINT8 regdat )
|
void k055555_device::k055555_write_reg( UINT8 regnum, UINT8 regdat )
|
||||||
{
|
{
|
||||||
k055555_state *k055555 = k055555_get_safe_token(device);
|
|
||||||
|
|
||||||
static const char *const rnames[46] =
|
static const char *const rnames[46] =
|
||||||
{
|
{
|
||||||
"BGC CBLK", "BGC SET", "COLSET0", "COLSET1", "COLSET2", "COLSET3", "COLCHG ON",
|
"BGC CBLK", "BGC SET", "COLSET0", "COLSET1", "COLSET2", "COLSET3", "COLCHG ON",
|
||||||
@ -192,15 +171,15 @@ void k055555_write_reg( device_t *device, UINT8 regnum, UINT8 regdat )
|
|||||||
"SHD PRI 2", "SHD PRI 3", "SHD ON", "SHD PRI SEL", "V BRI", "OS INBRI", "OS INBRI ON", "ENABLE"
|
"SHD PRI 2", "SHD PRI 3", "SHD ON", "SHD PRI SEL", "V BRI", "OS INBRI", "OS INBRI ON", "ENABLE"
|
||||||
};
|
};
|
||||||
|
|
||||||
if (regdat != k055555->regs[regnum])
|
if (regdat != m_regs[regnum])
|
||||||
{
|
{
|
||||||
LOG(("5^5: %x to reg %x (%s)\n", regdat, regnum, rnames[regnum]));
|
LOG(("5^5: %x to reg %x (%s)\n", regdat, regnum, rnames[regnum]));
|
||||||
}
|
}
|
||||||
|
|
||||||
k055555->regs[regnum] = regdat;
|
m_regs[regnum] = regdat;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE32_DEVICE_HANDLER( k055555_long_w )
|
WRITE32_MEMBER( k055555_device::k055555_long_w )
|
||||||
{
|
{
|
||||||
UINT8 regnum, regdat;
|
UINT8 regnum, regdat;
|
||||||
|
|
||||||
@ -223,55 +202,43 @@ WRITE32_DEVICE_HANDLER( k055555_long_w )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
k055555_write_reg(device, regnum, regdat);
|
k055555_write_reg(regnum, regdat);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE16_DEVICE_HANDLER( k055555_word_w )
|
WRITE16_MEMBER( k055555_device::k055555_word_w )
|
||||||
{
|
{
|
||||||
if (mem_mask == 0x00ff)
|
if (mem_mask == 0x00ff)
|
||||||
{
|
{
|
||||||
k055555_write_reg(device, offset, data & 0xff);
|
k055555_write_reg(offset, data & 0xff);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
k055555_write_reg(device, offset, data >> 8);
|
k055555_write_reg(offset, data >> 8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int k055555_read_register( device_t *device, int regnum )
|
int k055555_device::k055555_read_register( device_t *device, int regnum )
|
||||||
{
|
{
|
||||||
k055555_state *k055555 = k055555_get_safe_token(device);
|
return m_regs[regnum];
|
||||||
return k055555->regs[regnum];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int k055555_get_palette_index( device_t *device, int idx )
|
int k055555_device::k055555_get_palette_index( device_t *device, int idx )
|
||||||
{
|
{
|
||||||
k055555_state *k055555 = k055555_get_safe_token(device);
|
return m_regs[K55_PALBASE_A + idx];
|
||||||
return k055555->regs[K55_PALBASE_A + idx];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
DEVICE INTERFACE
|
DEVICE INTERFACE
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
static DEVICE_START( k055555 )
|
|
||||||
{
|
|
||||||
k055555_state *k055555 = k055555_get_safe_token(device);
|
|
||||||
device->save_item(NAME(k055555->regs));
|
|
||||||
}
|
|
||||||
|
|
||||||
static DEVICE_RESET( k055555 )
|
|
||||||
{
|
|
||||||
k055555_state *k055555 = k055555_get_safe_token(device);
|
|
||||||
memset(k055555->regs, 0, 64 * sizeof(UINT8));
|
|
||||||
}
|
|
||||||
|
|
||||||
const device_type K055555 = &device_creator<k055555_device>;
|
const device_type K055555 = &device_creator<k055555_device>;
|
||||||
|
|
||||||
k055555_device::k055555_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
k055555_device::k055555_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||||
: device_t(mconfig, K055555, "Konami 055555", tag, owner, clock, "k055555", __FILE__)
|
: device_t(mconfig, K055555, "Konami 055555", tag, owner, clock, "k055555", __FILE__)
|
||||||
{
|
{
|
||||||
m_token = global_alloc_clear(k055555_state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -290,7 +257,8 @@ void k055555_device::device_config_complete()
|
|||||||
|
|
||||||
void k055555_device::device_start()
|
void k055555_device::device_start()
|
||||||
{
|
{
|
||||||
DEVICE_START_NAME( k055555 )(this);
|
save_item(NAME(m_regs));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -299,22 +267,21 @@ void k055555_device::device_start()
|
|||||||
|
|
||||||
void k055555_device::device_reset()
|
void k055555_device::device_reset()
|
||||||
{
|
{
|
||||||
DEVICE_RESET_NAME( k055555 )(this);
|
memset(m_regs, 0, 64 * sizeof(UINT8));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
READ16_DEVICE_HANDLER( k055555_word_r )
|
READ16_MEMBER( k055555_device::k055555_word_r )
|
||||||
{
|
{
|
||||||
k055555_state *k055555 = k055555_get_safe_token(device);
|
return(m_regs[offset] << 8);
|
||||||
return(k055555->regs[offset] << 8);
|
|
||||||
} // PCU2
|
} // PCU2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
READ32_DEVICE_HANDLER( k055555_long_r )
|
READ32_MEMBER( k055555_device::k055555_long_r )
|
||||||
{
|
{
|
||||||
offset <<= 1;
|
offset <<= 1;
|
||||||
return (k055555_word_r(device, space, offset + 1, 0xffff) | k055555_word_r(device, space, offset, 0xffff) << 16);
|
return (k055555_word_r(space, offset + 1, 0xffff) | k055555_word_r(space, offset, 0xffff) << 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,12 +7,7 @@
|
|||||||
#define MCFG_K055555_ADD(_tag) \
|
#define MCFG_K055555_ADD(_tag) \
|
||||||
MCFG_DEVICE_ADD(_tag, K055555, 0)
|
MCFG_DEVICE_ADD(_tag, K055555, 0)
|
||||||
|
|
||||||
void K055555_vh_start(running_machine &machine); // "PCU2"
|
|
||||||
void K055555_write_reg(UINT8 regnum, UINT8 regdat);
|
|
||||||
DECLARE_WRITE16_HANDLER( K055555_word_w );
|
|
||||||
DECLARE_WRITE32_HANDLER( K055555_long_w );
|
|
||||||
int K055555_read_register(int regnum);
|
|
||||||
int K055555_get_palette_index(int idx);
|
|
||||||
|
|
||||||
/* K055555 registers */
|
/* K055555 registers */
|
||||||
/* priority inputs */
|
/* priority inputs */
|
||||||
@ -84,33 +79,46 @@ class k055555_device : public device_t
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
k055555_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
k055555_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||||
~k055555_device() { global_free(m_token); }
|
~k055555_device() { }
|
||||||
|
|
||||||
|
void k055555_write_reg(UINT8 regnum, UINT8 regdat);
|
||||||
|
|
||||||
|
|
||||||
|
/** Konami 055555 **/
|
||||||
|
|
||||||
|
DECLARE_WRITE16_MEMBER( k055555_word_w );
|
||||||
|
DECLARE_WRITE32_MEMBER( k055555_long_w );
|
||||||
|
int k055555_read_register(device_t *device, int regnum);
|
||||||
|
int k055555_get_palette_index(device_t *device, int idx);
|
||||||
|
|
||||||
|
// debug handlers
|
||||||
|
DECLARE_READ16_MEMBER( k055555_word_r ); // PCU2
|
||||||
|
DECLARE_READ32_MEMBER( k055555_long_r ); // PCU2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* alt implementation to merge */
|
||||||
|
void K055555_vh_start(running_machine &machine); // "PCU2"
|
||||||
|
void K055555_write_reg(UINT8 regnum, UINT8 regdat);
|
||||||
|
DECLARE_WRITE16_MEMBER( K055555_word_w );
|
||||||
|
DECLARE_WRITE32_MEMBER( K055555_long_w );
|
||||||
|
int K055555_read_register(int regnum);
|
||||||
|
int K055555_get_palette_index(int idx);
|
||||||
|
|
||||||
// access to legacy token
|
|
||||||
void *token() const { assert(m_token != NULL); return m_token; }
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_config_complete();
|
virtual void device_config_complete();
|
||||||
virtual void device_start();
|
virtual void device_start();
|
||||||
virtual void device_reset();
|
virtual void device_reset();
|
||||||
|
|
||||||
|
UINT8 m_regs[128];
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// internal state
|
|
||||||
void *m_token;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const device_type K055555;
|
extern const device_type K055555;
|
||||||
|
|
||||||
|
|
||||||
/** Konami 055555 **/
|
|
||||||
void k055555_write_reg(device_t *device, UINT8 regnum, UINT8 regdat);
|
|
||||||
DECLARE_WRITE16_DEVICE_HANDLER( k055555_word_w );
|
|
||||||
DECLARE_WRITE32_DEVICE_HANDLER( k055555_long_w );
|
|
||||||
int k055555_read_register(device_t *device, int regnum);
|
|
||||||
int k055555_get_palette_index(device_t *device, int idx);
|
|
||||||
|
|
||||||
// debug handlers
|
|
||||||
DECLARE_READ16_DEVICE_HANDLER( k055555_word_r ); // PCU2
|
|
||||||
DECLARE_READ32_DEVICE_HANDLER( k055555_long_r ); // PCU2
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -849,7 +849,7 @@ static int vcblk[6], ocblk;
|
|||||||
static int vinmix, vmixon, osinmix, osmixon;
|
static int vinmix, vmixon, osinmix, osmixon;
|
||||||
|
|
||||||
|
|
||||||
static void konamigx_precache_registers(void)
|
void konamigx_state::konamigx_precache_registers(void)
|
||||||
{
|
{
|
||||||
// (see sprite color coding scheme on p.46 & 47)
|
// (see sprite color coding scheme on p.46 & 47)
|
||||||
static const int coregmasks[5] = {0xf,0xe,0xc,0x8,0x0};
|
static const int coregmasks[5] = {0xf,0xe,0xc,0x8,0x0};
|
||||||
@ -875,19 +875,19 @@ static void konamigx_precache_registers(void)
|
|||||||
|
|
||||||
K053247_coregshift = coregshifts[i];
|
K053247_coregshift = coregshifts[i];
|
||||||
|
|
||||||
opri = K055555_read_register(K55_PRIINP_8);
|
opri = m_k055555->K055555_read_register(K55_PRIINP_8);
|
||||||
oinprion = K055555_read_register(K55_OINPRI_ON);
|
oinprion = m_k055555->K055555_read_register(K55_OINPRI_ON);
|
||||||
vcblk[0] = K055555_read_register(K55_PALBASE_A);
|
vcblk[0] = m_k055555->K055555_read_register(K55_PALBASE_A);
|
||||||
vcblk[1] = K055555_read_register(K55_PALBASE_B);
|
vcblk[1] = m_k055555->K055555_read_register(K55_PALBASE_B);
|
||||||
vcblk[2] = K055555_read_register(K55_PALBASE_C);
|
vcblk[2] = m_k055555->K055555_read_register(K55_PALBASE_C);
|
||||||
vcblk[3] = K055555_read_register(K55_PALBASE_D);
|
vcblk[3] = m_k055555->K055555_read_register(K55_PALBASE_D);
|
||||||
vcblk[4] = K055555_read_register(K55_PALBASE_SUB1);
|
vcblk[4] = m_k055555->K055555_read_register(K55_PALBASE_SUB1);
|
||||||
vcblk[5] = K055555_read_register(K55_PALBASE_SUB2);
|
vcblk[5] = m_k055555->K055555_read_register(K55_PALBASE_SUB2);
|
||||||
ocblk = K055555_read_register(K55_PALBASE_OBJ);
|
ocblk = m_k055555->K055555_read_register(K55_PALBASE_OBJ);
|
||||||
vinmix = K055555_read_register(K55_BLEND_ENABLES);
|
vinmix = m_k055555->K055555_read_register(K55_BLEND_ENABLES);
|
||||||
vmixon = K055555_read_register(K55_VINMIX_ON);
|
vmixon = m_k055555->K055555_read_register(K55_VINMIX_ON);
|
||||||
osinmix = K055555_read_register(K55_OSBLEND_ENABLES);
|
osinmix = m_k055555->K055555_read_register(K55_OSBLEND_ENABLES);
|
||||||
osmixon = K055555_read_register(K55_OSBLEND_ON);
|
osmixon = m_k055555->K055555_read_register(K55_OSBLEND_ON);
|
||||||
}
|
}
|
||||||
|
|
||||||
INLINE int K053247GX_combine_c18(int attrib) // (see p.46)
|
INLINE int K053247GX_combine_c18(int attrib) // (see p.46)
|
||||||
@ -1195,7 +1195,7 @@ void konamigx_state::konamigx_mixer(running_machine &machine, bitmap_rgb32 &bitm
|
|||||||
parity ^= 1;
|
parity ^= 1;
|
||||||
|
|
||||||
// abort if video has been disabled
|
// abort if video has been disabled
|
||||||
disp = K055555_read_register(K55_INPUT_ENABLES);
|
disp = m_k055555->K055555_read_register(K55_INPUT_ENABLES);
|
||||||
if (!disp) return;
|
if (!disp) return;
|
||||||
cltc_shdpri = K054338_read_register(K338_REG_CONTROL);
|
cltc_shdpri = K054338_read_register(K338_REG_CONTROL);
|
||||||
|
|
||||||
@ -1245,22 +1245,22 @@ void konamigx_state::konamigx_mixer(running_machine &machine, bitmap_rgb32 &bitm
|
|||||||
// invert layer priority when this flag is set (not used by any GX game?)
|
// invert layer priority when this flag is set (not used by any GX game?)
|
||||||
//prflp = K055555_read_register(K55_CONTROL) & K55_CTL_FLIPPRI;
|
//prflp = K055555_read_register(K55_CONTROL) & K55_CTL_FLIPPRI;
|
||||||
|
|
||||||
layerpri[0] = K055555_read_register(K55_PRIINP_0);
|
layerpri[0] = m_k055555->K055555_read_register(K55_PRIINP_0);
|
||||||
layerpri[1] = K055555_read_register(K55_PRIINP_3);
|
layerpri[1] = m_k055555->K055555_read_register(K55_PRIINP_3);
|
||||||
layerpri[3] = K055555_read_register(K55_PRIINP_7);
|
layerpri[3] = m_k055555->K055555_read_register(K55_PRIINP_7);
|
||||||
layerpri[4] = K055555_read_register(K55_PRIINP_9);
|
layerpri[4] = m_k055555->K055555_read_register(K55_PRIINP_9);
|
||||||
layerpri[5] = K055555_read_register(K55_PRIINP_10);
|
layerpri[5] = m_k055555->K055555_read_register(K55_PRIINP_10);
|
||||||
|
|
||||||
if (gx_primode == -1)
|
if (gx_primode == -1)
|
||||||
{
|
{
|
||||||
// Lethal Enforcer hack (requires pixel color comparison)
|
// Lethal Enforcer hack (requires pixel color comparison)
|
||||||
layerpri[2] = K055555_read_register(K55_PRIINP_3) + 0x20;
|
layerpri[2] = m_k055555->K055555_read_register(K55_PRIINP_3) + 0x20;
|
||||||
shdprisel = 0x3f;
|
shdprisel = 0x3f;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
layerpri[2] = K055555_read_register(K55_PRIINP_6);
|
layerpri[2] = m_k055555->K055555_read_register(K55_PRIINP_6);
|
||||||
shdprisel = K055555_read_register(K55_SHD_PRI_SEL);
|
shdprisel = m_k055555->K055555_read_register(K55_SHD_PRI_SEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
// SHDPRISEL filters shadows by different priority comparison methods (UNIMPLEMENTED, see detail on p.66)
|
// SHDPRISEL filters shadows by different priority comparison methods (UNIMPLEMENTED, see detail on p.66)
|
||||||
@ -1268,9 +1268,9 @@ void konamigx_state::konamigx_mixer(running_machine &machine, bitmap_rgb32 &bitm
|
|||||||
if (!(shdprisel & 0x0c)) shadowon[1] = 0;
|
if (!(shdprisel & 0x0c)) shadowon[1] = 0;
|
||||||
if (!(shdprisel & 0x30)) shadowon[2] = 0;
|
if (!(shdprisel & 0x30)) shadowon[2] = 0;
|
||||||
|
|
||||||
shdpri[0] = K055555_read_register(K55_SHAD1_PRI);
|
shdpri[0] = m_k055555->K055555_read_register(K55_SHAD1_PRI);
|
||||||
shdpri[1] = K055555_read_register(K55_SHAD2_PRI);
|
shdpri[1] = m_k055555->K055555_read_register(K55_SHAD2_PRI);
|
||||||
shdpri[2] = K055555_read_register(K55_SHAD3_PRI);
|
shdpri[2] = m_k055555->K055555_read_register(K55_SHAD3_PRI);
|
||||||
|
|
||||||
spri_min = 0;
|
spri_min = 0;
|
||||||
shadowon[2] = shadowon[1] = shadowon[0] = 0;
|
shadowon[2] = shadowon[1] = shadowon[0] = 0;
|
||||||
@ -1286,7 +1286,7 @@ void konamigx_state::konamigx_mixer(running_machine &machine, bitmap_rgb32 &bitm
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SHDON specifies layers on which shadows can be projected (see detail on p.65 7.2.8)
|
// SHDON specifies layers on which shadows can be projected (see detail on p.65 7.2.8)
|
||||||
temp = K055555_read_register(K55_SHD_ON);
|
temp = m_k055555->K055555_read_register(K55_SHD_ON);
|
||||||
for (i=0; i<4; i++) if (!(temp>>i & 1) && spri_min < layerpri[i]) spri_min = layerpri[i]; // HACK
|
for (i=0; i<4; i++) if (!(temp>>i & 1) && spri_min < layerpri[i]) spri_min = layerpri[i]; // HACK
|
||||||
|
|
||||||
// update shadows status
|
// update shadows status
|
||||||
@ -2019,8 +2019,8 @@ void konamigx_state::_gxcommoninitnosprites(running_machine &machine)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
K054338_vh_start(machine);
|
K054338_vh_start(machine, m_k055555);
|
||||||
K055555_vh_start(machine);
|
m_k055555->K055555_vh_start(machine);
|
||||||
|
|
||||||
konamigx_mixer_init(machine, 0);
|
konamigx_mixer_init(machine, 0);
|
||||||
|
|
||||||
@ -2077,7 +2077,7 @@ VIDEO_START_MEMBER(konamigx_state,konamigx_5bpp)
|
|||||||
|
|
||||||
if (!strcmp(machine().system().name,"tbyahhoo"))
|
if (!strcmp(machine().system().name,"tbyahhoo"))
|
||||||
{
|
{
|
||||||
m_k056832->altK056832_set_UpdateMode(1);
|
m_k056832->K056832_set_k055555(m_k055555);
|
||||||
gx_tilemode = 1;
|
gx_tilemode = 1;
|
||||||
} else
|
} else
|
||||||
|
|
||||||
@ -2134,7 +2134,7 @@ VIDEO_START_MEMBER(konamigx_state,le2)
|
|||||||
konamigx_mixer_primode(-1); // swapped layer B and C priorities?
|
konamigx_mixer_primode(-1); // swapped layer B and C priorities?
|
||||||
|
|
||||||
gx_le2_textcolour_hack = 1; // force text layer to use the right palette
|
gx_le2_textcolour_hack = 1; // force text layer to use the right palette
|
||||||
K055555_write_reg(K55_INPUT_ENABLES, 1); // it doesn't turn on the video output at first for the test screens, maybe it should default to ON?
|
m_k055555->K055555_write_reg(K55_INPUT_ENABLES, 1); // it doesn't turn on the video output at first for the test screens, maybe it should default to ON?
|
||||||
}
|
}
|
||||||
|
|
||||||
VIDEO_START_MEMBER(konamigx_state,konamigx_6bpp)
|
VIDEO_START_MEMBER(konamigx_state,konamigx_6bpp)
|
||||||
@ -2394,7 +2394,7 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3
|
|||||||
unchained = m_k056832->get_layer_association();
|
unchained = m_k056832->get_layer_association();
|
||||||
for (i=0; i<4; i++)
|
for (i=0; i<4; i++)
|
||||||
{
|
{
|
||||||
newbase = K055555_get_palette_index(i)<<6;
|
newbase = m_k055555->K055555_get_palette_index(i)<<6;
|
||||||
if (layer_colorbase[i] != newbase)
|
if (layer_colorbase[i] != newbase)
|
||||||
{
|
{
|
||||||
layer_colorbase[i] = newbase;
|
layer_colorbase[i] = newbase;
|
||||||
@ -2415,7 +2415,7 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3
|
|||||||
if (gx_rozenable)
|
if (gx_rozenable)
|
||||||
{
|
{
|
||||||
last_psac_colorbase = psac_colorbase;
|
last_psac_colorbase = psac_colorbase;
|
||||||
psac_colorbase = K055555_get_palette_index(6);
|
psac_colorbase = m_k055555->K055555_get_palette_index(6);
|
||||||
|
|
||||||
if (psac_colorbase != last_psac_colorbase)
|
if (psac_colorbase != last_psac_colorbase)
|
||||||
{
|
{
|
||||||
|
@ -161,8 +161,8 @@ TILE_GET_INFO_MEMBER(mystwarr_state::get_gai_936_tile_info)
|
|||||||
|
|
||||||
VIDEO_START_MEMBER(mystwarr_state,gaiapols)
|
VIDEO_START_MEMBER(mystwarr_state,gaiapols)
|
||||||
{
|
{
|
||||||
K055555_vh_start(machine());
|
m_k055555->K055555_vh_start(machine());
|
||||||
K054338_vh_start(machine());
|
K054338_vh_start(machine(), m_k055555);
|
||||||
|
|
||||||
m_gametype = 0;
|
m_gametype = 0;
|
||||||
|
|
||||||
@ -201,8 +201,8 @@ TILE_GET_INFO_MEMBER(mystwarr_state::get_ult_936_tile_info)
|
|||||||
|
|
||||||
VIDEO_START_MEMBER(mystwarr_state,dadandrn)
|
VIDEO_START_MEMBER(mystwarr_state,dadandrn)
|
||||||
{
|
{
|
||||||
K055555_vh_start(machine());
|
m_k055555->K055555_vh_start(machine());
|
||||||
K054338_vh_start(machine());
|
K054338_vh_start(machine(), m_k055555);
|
||||||
|
|
||||||
m_gametype = 1;
|
m_gametype = 1;
|
||||||
|
|
||||||
@ -230,8 +230,8 @@ VIDEO_START_MEMBER(mystwarr_state,dadandrn)
|
|||||||
|
|
||||||
VIDEO_START_MEMBER(mystwarr_state,mystwarr)
|
VIDEO_START_MEMBER(mystwarr_state,mystwarr)
|
||||||
{
|
{
|
||||||
K055555_vh_start(machine());
|
m_k055555->K055555_vh_start(machine());
|
||||||
K054338_vh_start(machine());
|
K054338_vh_start(machine(), m_k055555);
|
||||||
|
|
||||||
m_gametype = 0;
|
m_gametype = 0;
|
||||||
|
|
||||||
@ -255,8 +255,8 @@ VIDEO_START_MEMBER(mystwarr_state,metamrph)
|
|||||||
{
|
{
|
||||||
m_gametype = 0;
|
m_gametype = 0;
|
||||||
|
|
||||||
K055555_vh_start(machine());
|
m_k055555->K055555_vh_start(machine());
|
||||||
K054338_vh_start(machine());
|
K054338_vh_start(machine(), m_k055555);
|
||||||
|
|
||||||
m_k056832->altK056832_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);
|
||||||
|
|
||||||
@ -277,8 +277,8 @@ VIDEO_START_MEMBER(mystwarr_state,viostorm)
|
|||||||
{
|
{
|
||||||
m_gametype = 0;
|
m_gametype = 0;
|
||||||
|
|
||||||
K055555_vh_start(machine());
|
m_k055555->K055555_vh_start(machine());
|
||||||
K054338_vh_start(machine());
|
K054338_vh_start(machine(), m_k055555);
|
||||||
|
|
||||||
m_k056832->altK056832_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);
|
||||||
|
|
||||||
@ -298,8 +298,8 @@ VIDEO_START_MEMBER(mystwarr_state,martchmp)
|
|||||||
{
|
{
|
||||||
m_gametype = 0;
|
m_gametype = 0;
|
||||||
|
|
||||||
K055555_vh_start(machine());
|
m_k055555->K055555_vh_start(machine());
|
||||||
K054338_vh_start(machine());
|
K054338_vh_start(machine(), m_k055555);
|
||||||
|
|
||||||
m_k056832->altK056832_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);
|
||||||
|
|
||||||
@ -328,11 +328,11 @@ UINT32 mystwarr_state::screen_update_mystwarr(screen_device &screen, bitmap_rgb3
|
|||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
old = m_layer_colorbase[i];
|
old = m_layer_colorbase[i];
|
||||||
m_layer_colorbase[i] = K055555_get_palette_index(i)<<4;
|
m_layer_colorbase[i] = m_k055555->K055555_get_palette_index(i)<<4;
|
||||||
if( old != m_layer_colorbase[i] ) m_k056832->mark_plane_dirty(i);
|
if( old != m_layer_colorbase[i] ) m_k056832->mark_plane_dirty(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_sprite_colorbase = K055555_get_palette_index(4)<<5;
|
m_sprite_colorbase = m_k055555->K055555_get_palette_index(4)<<5;
|
||||||
|
|
||||||
konamigx_mixer(machine(), bitmap, cliprect, 0, 0, 0, 0, blendmode, 0, 0);
|
konamigx_mixer(machine(), bitmap, cliprect, 0, 0, 0, 0, blendmode, 0, 0);
|
||||||
return 0;
|
return 0;
|
||||||
@ -345,11 +345,11 @@ UINT32 mystwarr_state::screen_update_metamrph(screen_device &screen, bitmap_rgb3
|
|||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
old = m_layer_colorbase[i];
|
old = m_layer_colorbase[i];
|
||||||
m_layer_colorbase[i] = K055555_get_palette_index(i)<<4;
|
m_layer_colorbase[i] = m_k055555->K055555_get_palette_index(i)<<4;
|
||||||
if (old != m_layer_colorbase[i]) m_k056832->mark_plane_dirty(i);
|
if (old != m_layer_colorbase[i]) m_k056832->mark_plane_dirty(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_sprite_colorbase = K055555_get_palette_index(4)<<4;
|
m_sprite_colorbase = m_k055555->K055555_get_palette_index(4)<<4;
|
||||||
|
|
||||||
konamigx_mixer(machine(), bitmap, cliprect, 0, GXSUB_K053250 | GXSUB_4BPP, 0, 0, 0, 0, 0);
|
konamigx_mixer(machine(), bitmap, cliprect, 0, GXSUB_K053250 | GXSUB_4BPP, 0, 0, 0, 0, 0);
|
||||||
return 0;
|
return 0;
|
||||||
@ -362,14 +362,14 @@ UINT32 mystwarr_state::screen_update_martchmp(screen_device &screen, bitmap_rgb3
|
|||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
old = m_layer_colorbase[i];
|
old = m_layer_colorbase[i];
|
||||||
m_layer_colorbase[i] = K055555_get_palette_index(i)<<4;
|
m_layer_colorbase[i] = m_k055555->K055555_get_palette_index(i)<<4;
|
||||||
if (old != m_layer_colorbase[i]) m_k056832->mark_plane_dirty(i);
|
if (old != m_layer_colorbase[i]) m_k056832->mark_plane_dirty(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_sprite_colorbase = K055555_get_palette_index(4)<<5;
|
m_sprite_colorbase = m_k055555->K055555_get_palette_index(4)<<5;
|
||||||
|
|
||||||
m_cbparam = K055555_read_register(K55_PRIINP_8);
|
m_cbparam = m_k055555->K055555_read_register(K55_PRIINP_8);
|
||||||
m_oinprion = K055555_read_register(K55_OINPRI_ON);
|
m_oinprion = m_k055555->K055555_read_register(K55_OINPRI_ON);
|
||||||
|
|
||||||
// not quite right
|
// not quite right
|
||||||
blendmode = (m_oinprion==0xef && K054338_read_register(K338_REG_PBLEND)) ? ((1<<16|GXMIX_BLEND_FORCE)<<2) : 0;
|
blendmode = (m_oinprion==0xef && K054338_read_register(K338_REG_PBLEND)) ? ((1<<16|GXMIX_BLEND_FORCE)<<2) : 0;
|
||||||
@ -488,12 +488,12 @@ UINT32 mystwarr_state::screen_update_dadandrn(screen_device &screen, bitmap_rgb3
|
|||||||
|
|
||||||
if (m_gametype == 0)
|
if (m_gametype == 0)
|
||||||
{
|
{
|
||||||
m_sprite_colorbase = (K055555_get_palette_index(4)<<4)&0x7f;
|
m_sprite_colorbase = (m_k055555->K055555_get_palette_index(4)<<4)&0x7f;
|
||||||
rozmode = GXSUB_4BPP;
|
rozmode = GXSUB_4BPP;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_sprite_colorbase = (K055555_get_palette_index(4)<<3)&0x7f;
|
m_sprite_colorbase = (m_k055555->K055555_get_palette_index(4)<<3)&0x7f;
|
||||||
rozmode = GXSUB_8BPP;
|
rozmode = GXSUB_8BPP;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -501,7 +501,7 @@ UINT32 mystwarr_state::screen_update_dadandrn(screen_device &screen, bitmap_rgb3
|
|||||||
{
|
{
|
||||||
for (i=0; i<4; i++)
|
for (i=0; i<4; i++)
|
||||||
{
|
{
|
||||||
newbase = K055555_get_palette_index(i)<<4;
|
newbase = m_k055555->K055555_get_palette_index(i)<<4;
|
||||||
if (m_layer_colorbase[i] != newbase)
|
if (m_layer_colorbase[i] != newbase)
|
||||||
{
|
{
|
||||||
m_layer_colorbase[i] = newbase;
|
m_layer_colorbase[i] = newbase;
|
||||||
@ -513,7 +513,7 @@ UINT32 mystwarr_state::screen_update_dadandrn(screen_device &screen, bitmap_rgb3
|
|||||||
{
|
{
|
||||||
for (dirty=0, i=0; i<4; i++)
|
for (dirty=0, i=0; i<4; i++)
|
||||||
{
|
{
|
||||||
newbase = K055555_get_palette_index(i)<<4;
|
newbase = m_k055555->K055555_get_palette_index(i)<<4;
|
||||||
if (m_layer_colorbase[i] != newbase)
|
if (m_layer_colorbase[i] != newbase)
|
||||||
{
|
{
|
||||||
m_layer_colorbase[i] = newbase;
|
m_layer_colorbase[i] = newbase;
|
||||||
@ -525,7 +525,7 @@ UINT32 mystwarr_state::screen_update_dadandrn(screen_device &screen, bitmap_rgb3
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_last_psac_colorbase = m_sub1_colorbase;
|
m_last_psac_colorbase = m_sub1_colorbase;
|
||||||
m_sub1_colorbase = K055555_get_palette_index(5);
|
m_sub1_colorbase = m_k055555->K055555_get_palette_index(5);
|
||||||
|
|
||||||
if (m_last_psac_colorbase != m_sub1_colorbase)
|
if (m_last_psac_colorbase != m_sub1_colorbase)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user