k055555 reworking

This commit is contained in:
David Haywood 2013-07-13 00:10:52 +00:00
parent b03966ce17
commit a1e479d5bd
17 changed files with 185 additions and 190 deletions

View File

@ -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(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(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(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")

View File

@ -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(0x580000, 0x58003f) AM_DEVREADWRITE("k056832", k056832_device, long_r, long_w) // VIDEO REG (tilemap)
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_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)

View File

@ -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)
{
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)
{
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)
{
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)
@ -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(0xd4c000, 0xd4c01f) AM_READWRITE(ccu_r, ccu_w)
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(0xd52010, 0xd5201f) AM_READ(sound020_r)
AM_RANGE(0xd56000, 0xd56003) AM_WRITE(eeprom_w)
@ -1792,6 +1795,7 @@ static MACHINE_CONFIG_START( konamigx, konamigx_state )
MCFG_PALETTE_LENGTH(8192)
MCFG_K056832_ADD_NOINTF("k056832"/*, konamigx_k056832_intf*/)
MCFG_K055555_ADD("k055555")
MCFG_VIDEO_START_OVERRIDE(konamigx_state,konamigx_5bpp)

View File

@ -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(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(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(0x482010, 0x48201f) AM_WRITE_LEGACY(K053247_reg_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(0x250000, 0x25000f) AM_DEVREADWRITE("k053250_1", k053250_device, reg_r, reg_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(0x264000, 0x264001) AM_WRITE(sound_irq_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(0x250000, 0x25000f) AM_RAM // K053250 reg
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(0x260000, 0x26001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff)
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(0x100000, 0x10ffff) AM_RAM AM_SHARE("gx_workram") // work RAM
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(0x402010, 0x40201f) AM_WRITE_LEGACY(K053247_reg_word_w) // OBJSET2
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(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)
AM_RANGE(0x488000, 0x4880ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w)
AM_RANGE(0x48a00c, 0x48a00d) AM_WRITE(sound_cmd1_msb_w)
AM_RANGE(0x48a00e, 0x48a00f) AM_WRITE(sound_cmd2_msb_w)
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(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)
AM_RANGE(0x488000, 0x4880ff) AM_DEVWRITE("k055555", k055555_device, K055555_word_w)
AM_RANGE(0x48a00c, 0x48a00d) AM_WRITE(sound_cmd1_msb_w)
AM_RANGE(0x48a00e, 0x48a00f) AM_WRITE(sound_cmd2_msb_w)
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_K056832_ADD_NOINTF("k056832"/*, mystwarr_k056832_intf*/)
MCFG_K055555_ADD("k055555")
MCFG_VIDEO_START_OVERRIDE(mystwarr_state,mystwarr)

View File

@ -612,6 +612,7 @@ static MACHINE_CONFIG_START( kongambl, kongambl_state )
MCFG_VIDEO_START_OVERRIDE(kongambl_state,kongambl)
MCFG_K053247_ADD("k053246", k053247_intf)
MCFG_K055555_ADD("k055555")
MCFG_GFXDECODE(tasman)

View File

@ -15,6 +15,7 @@ public:
m_workram(*this,"workram"),
m_psacram(*this,"psacram"),
m_subpaletteram32(*this,"subpaletteram"),
m_k055555(*this, "k055555"),
m_k056832(*this, "k056832"),
m_k053936_0_ctrl(*this,"k053936_0_ctrl",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_psacram;
optional_shared_ptr<UINT32> m_subpaletteram32;
required_device<k055555_device> m_k055555;
required_device<k056832_device> m_k056832;
optional_shared_ptr<UINT16> m_k053936_0_ctrl;
optional_shared_ptr<UINT16> m_k053936_0_linectrl;
@ -112,6 +114,10 @@ public:
tilemap_t *sub1, int sub1flags,
tilemap_t *sub2, int sub2flags,
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 -----------*/
// 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);

View File

@ -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
static const UINT8 ztable[7][8] =
@ -380,7 +380,7 @@ if((data1=obj[0])&0x80000000)\
case 0x11010010: i = 5; vmask = 0x1ff; break;
case 0x01111018: i = 4; break;
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;
case 0x11010811: i = 2; break;
case 0x10000010: i = 1; break;

View File

@ -54,7 +54,7 @@ UINT32 bishi_state::screen_update_bishi(screen_device &screen, bitmap_rgb32 &bit
for (i = 0; i < 4; 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);
@ -63,7 +63,7 @@ UINT32 bishi_state::screen_update_bishi(screen_device &screen, bitmap_rgb32 &bit
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);
}

View File

@ -16,7 +16,7 @@ void djmain_state::draw_sprites( bitmap_rgb32 &bitmap, const rectangle &cliprect
int offs, pri_code;
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++)
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)
{
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 order[NUM_LAYERS + 1];
int i, j;
for (i = 0; i < NUM_LAYERS; i++)
pri[i] = 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_0 + i * 3);
pri[i] = m_k055555->k055555_read_register(m_k055555, K55_PRIINP_10);
for (i = 0; i < NUM_LAYERS + 1; i++)
order[i] = i;

View File

@ -166,7 +166,6 @@ ones. The other 7 words are ignored. Global scrollx is ignored.
#include "k054156_k054157_k056832.h"
#include "konami_helper.h"
#include "video/k055555.h"// still needs k055555_get_palette_index
/* end common functions */
@ -378,7 +377,8 @@ void k056832_device::device_start()
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
associations) and which ones can can be init at RESET, if any */
@ -1464,7 +1464,7 @@ printf("\nend\n");
}
*/
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++)
{
@ -1769,7 +1769,7 @@ void k056832_device::tilemap_draw_dj( bitmap_rgb32 &bitmap, const rectangle &cli
sdat_adv = -sdat_adv;
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++)
{
@ -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),
int djmain_hack)
{
m_k055555_use = 0;
m_k055555 = 0;
m_callback = callback;
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;
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++)
{
@ -2501,7 +2501,7 @@ void k056832_device::m_tilemap_draw(running_machine &machine, bitmap_rgb32 &bitm
m_active_layer = layer;
}
if (m_k055555_use)
if (m_k055555 != NULL)
{
if (last_colorbase[pageIndex] != new_colorbase)
{
@ -2607,9 +2607,9 @@ int k056832_device::get_layer_association(void)
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;
}

View File

@ -5,6 +5,9 @@
#define VERBOSE 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);
@ -53,7 +56,7 @@ public:
k056832_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
~k056832_device()
{
m_k055555_use = 0;
m_k055555 = 0;
}
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 );
@ -216,15 +219,12 @@ private:
public:
// 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,
int (*scrolld)[4][2],
void (*callback)(running_machine &machine, int layer, int *code, int *color, int *flags),
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);

View File

@ -21,14 +21,19 @@ static int K054338_shdRGB[9];
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)
// because the implementation is video dependant, this is just a
// 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(K054338_shdRGB, 0, sizeof(int)*9);
K054338_alphainverted = 1;
temp_k055555 = k055555;
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
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
{
BGC_CBLK = K055555_read_register(0);
BGC_SET = K055555_read_register(1);
BGC_CBLK = temp_k055555->K055555_read_register(0);
BGC_SET = temp_k055555->K055555_read_register(1);
pal_ptr += BGC_CBLK << 9;
// single color output from PCU2
@ -264,7 +271,7 @@ void k054338_device::device_config_complete()
void k054338_device::device_start()
{
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_shd_rgb));
@ -376,8 +383,8 @@ void k054338_device::fill_backcolor( bitmap_rgb32 &bitmap, int mode ) // (see p.
}
else
{
BGC_CBLK = k055555_read_register(m_k055555, 0);
BGC_SET = k055555_read_register(m_k055555, 1);
BGC_CBLK = m_k055555->k055555_read_register(m_k055555, 0);
BGC_SET = m_k055555->k055555_read_register(m_k055555, 1);
pal_ptr += BGC_CBLK << 9;

View File

@ -3,6 +3,7 @@
#ifndef __K054338_H__
#define __K054338_H__
#include "k055555.h"
#define MCFG_K054338_ADD(_tag, _interface) \
MCFG_DEVICE_ADD(_tag, K054338, 0) \
@ -11,7 +12,7 @@
/* 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_WRITE32_HANDLER( K054338_long_w );
int K054338_read_register(int reg);
@ -77,7 +78,7 @@ private:
int m_shd_rgb[9];
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;

View File

@ -59,7 +59,6 @@ Lots of byte-wise registers. A partial map:
#include "emu.h"
#include "k055555.h"
#include "devlegcy.h"
#define VERBOSE 0
@ -68,16 +67,15 @@ Lots of byte-wise registers. A partial map:
/* K055555 5-bit-per-pixel priority encoder */
/* 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] =
{
@ -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"
};
if (regdat != k55555_regs[regnum])
if (regdat != m_regs[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;
@ -123,7 +121,7 @@ WRITE32_HANDLER( K055555_long_w )
K055555_write_reg(regnum, regdat);
}
WRITE16_HANDLER( K055555_word_w )
WRITE16_MEMBER( k055555_device::K055555_word_w )
{
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 */
/* 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
*****************************************************************************/
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] =
{
"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"
};
if (regdat != k055555->regs[regnum])
if (regdat != m_regs[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;
@ -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)
{
k055555_write_reg(device, offset, data & 0xff);
k055555_write_reg(offset, data & 0xff);
}
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 k055555->regs[regnum];
return m_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 k055555->regs[K55_PALBASE_A + idx];
return m_regs[K55_PALBASE_A + idx];
}
/*****************************************************************************
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>;
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__)
{
m_token = global_alloc_clear(k055555_state);
}
//-------------------------------------------------
@ -290,7 +257,8 @@ void k055555_device::device_config_complete()
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()
{
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(k055555->regs[offset] << 8);
return(m_regs[offset] << 8);
} // PCU2
READ32_DEVICE_HANDLER( k055555_long_r )
READ32_MEMBER( k055555_device::k055555_long_r )
{
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);
}

View File

@ -7,12 +7,7 @@
#define MCFG_K055555_ADD(_tag) \
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 */
/* priority inputs */
@ -84,33 +79,46 @@ class k055555_device : public device_t
{
public:
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:
// device-level overrides
virtual void device_config_complete();
virtual void device_start();
virtual void device_reset();
UINT8 m_regs[128];
private:
// internal state
void *m_token;
};
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

View File

@ -849,7 +849,7 @@ static int vcblk[6], ocblk;
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)
static const int coregmasks[5] = {0xf,0xe,0xc,0x8,0x0};
@ -875,19 +875,19 @@ static void konamigx_precache_registers(void)
K053247_coregshift = coregshifts[i];
opri = K055555_read_register(K55_PRIINP_8);
oinprion = K055555_read_register(K55_OINPRI_ON);
vcblk[0] = K055555_read_register(K55_PALBASE_A);
vcblk[1] = K055555_read_register(K55_PALBASE_B);
vcblk[2] = K055555_read_register(K55_PALBASE_C);
vcblk[3] = K055555_read_register(K55_PALBASE_D);
vcblk[4] = K055555_read_register(K55_PALBASE_SUB1);
vcblk[5] = K055555_read_register(K55_PALBASE_SUB2);
ocblk = K055555_read_register(K55_PALBASE_OBJ);
vinmix = K055555_read_register(K55_BLEND_ENABLES);
vmixon = K055555_read_register(K55_VINMIX_ON);
osinmix = K055555_read_register(K55_OSBLEND_ENABLES);
osmixon = K055555_read_register(K55_OSBLEND_ON);
opri = m_k055555->K055555_read_register(K55_PRIINP_8);
oinprion = m_k055555->K055555_read_register(K55_OINPRI_ON);
vcblk[0] = m_k055555->K055555_read_register(K55_PALBASE_A);
vcblk[1] = m_k055555->K055555_read_register(K55_PALBASE_B);
vcblk[2] = m_k055555->K055555_read_register(K55_PALBASE_C);
vcblk[3] = m_k055555->K055555_read_register(K55_PALBASE_D);
vcblk[4] = m_k055555->K055555_read_register(K55_PALBASE_SUB1);
vcblk[5] = m_k055555->K055555_read_register(K55_PALBASE_SUB2);
ocblk = m_k055555->K055555_read_register(K55_PALBASE_OBJ);
vinmix = m_k055555->K055555_read_register(K55_BLEND_ENABLES);
vmixon = m_k055555->K055555_read_register(K55_VINMIX_ON);
osinmix = m_k055555->K055555_read_register(K55_OSBLEND_ENABLES);
osmixon = m_k055555->K055555_read_register(K55_OSBLEND_ON);
}
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;
// 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;
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?)
//prflp = K055555_read_register(K55_CONTROL) & K55_CTL_FLIPPRI;
layerpri[0] = K055555_read_register(K55_PRIINP_0);
layerpri[1] = K055555_read_register(K55_PRIINP_3);
layerpri[3] = K055555_read_register(K55_PRIINP_7);
layerpri[4] = K055555_read_register(K55_PRIINP_9);
layerpri[5] = K055555_read_register(K55_PRIINP_10);
layerpri[0] = m_k055555->K055555_read_register(K55_PRIINP_0);
layerpri[1] = m_k055555->K055555_read_register(K55_PRIINP_3);
layerpri[3] = m_k055555->K055555_read_register(K55_PRIINP_7);
layerpri[4] = m_k055555->K055555_read_register(K55_PRIINP_9);
layerpri[5] = m_k055555->K055555_read_register(K55_PRIINP_10);
if (gx_primode == -1)
{
// 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;
}
else
{
layerpri[2] = K055555_read_register(K55_PRIINP_6);
shdprisel = K055555_read_register(K55_SHD_PRI_SEL);
layerpri[2] = m_k055555->K055555_read_register(K55_PRIINP_6);
shdprisel = m_k055555->K055555_read_register(K55_SHD_PRI_SEL);
}
// 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 & 0x30)) shadowon[2] = 0;
shdpri[0] = K055555_read_register(K55_SHAD1_PRI);
shdpri[1] = K055555_read_register(K55_SHAD2_PRI);
shdpri[2] = K055555_read_register(K55_SHAD3_PRI);
shdpri[0] = m_k055555->K055555_read_register(K55_SHAD1_PRI);
shdpri[1] = m_k055555->K055555_read_register(K55_SHAD2_PRI);
shdpri[2] = m_k055555->K055555_read_register(K55_SHAD3_PRI);
spri_min = 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)
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
// update shadows status
@ -2019,8 +2019,8 @@ void konamigx_state::_gxcommoninitnosprites(running_machine &machine)
{
int i;
K054338_vh_start(machine);
K055555_vh_start(machine);
K054338_vh_start(machine, m_k055555);
m_k055555->K055555_vh_start(machine);
konamigx_mixer_init(machine, 0);
@ -2077,7 +2077,7 @@ VIDEO_START_MEMBER(konamigx_state,konamigx_5bpp)
if (!strcmp(machine().system().name,"tbyahhoo"))
{
m_k056832->altK056832_set_UpdateMode(1);
m_k056832->K056832_set_k055555(m_k055555);
gx_tilemode = 1;
} else
@ -2134,7 +2134,7 @@ VIDEO_START_MEMBER(konamigx_state,le2)
konamigx_mixer_primode(-1); // swapped layer B and C priorities?
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)
@ -2394,7 +2394,7 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3
unchained = m_k056832->get_layer_association();
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)
{
layer_colorbase[i] = newbase;
@ -2415,7 +2415,7 @@ UINT32 konamigx_state::screen_update_konamigx(screen_device &screen, bitmap_rgb3
if (gx_rozenable)
{
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)
{

View File

@ -161,8 +161,8 @@ TILE_GET_INFO_MEMBER(mystwarr_state::get_gai_936_tile_info)
VIDEO_START_MEMBER(mystwarr_state,gaiapols)
{
K055555_vh_start(machine());
K054338_vh_start(machine());
m_k055555->K055555_vh_start(machine());
K054338_vh_start(machine(), m_k055555);
m_gametype = 0;
@ -201,8 +201,8 @@ TILE_GET_INFO_MEMBER(mystwarr_state::get_ult_936_tile_info)
VIDEO_START_MEMBER(mystwarr_state,dadandrn)
{
K055555_vh_start(machine());
K054338_vh_start(machine());
m_k055555->K055555_vh_start(machine());
K054338_vh_start(machine(), m_k055555);
m_gametype = 1;
@ -230,8 +230,8 @@ VIDEO_START_MEMBER(mystwarr_state,dadandrn)
VIDEO_START_MEMBER(mystwarr_state,mystwarr)
{
K055555_vh_start(machine());
K054338_vh_start(machine());
m_k055555->K055555_vh_start(machine());
K054338_vh_start(machine(), m_k055555);
m_gametype = 0;
@ -255,8 +255,8 @@ VIDEO_START_MEMBER(mystwarr_state,metamrph)
{
m_gametype = 0;
K055555_vh_start(machine());
K054338_vh_start(machine());
m_k055555->K055555_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);
@ -277,8 +277,8 @@ VIDEO_START_MEMBER(mystwarr_state,viostorm)
{
m_gametype = 0;
K055555_vh_start(machine());
K054338_vh_start(machine());
m_k055555->K055555_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);
@ -298,8 +298,8 @@ VIDEO_START_MEMBER(mystwarr_state,martchmp)
{
m_gametype = 0;
K055555_vh_start(machine());
K054338_vh_start(machine());
m_k055555->K055555_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);
@ -328,11 +328,11 @@ UINT32 mystwarr_state::screen_update_mystwarr(screen_device &screen, bitmap_rgb3
for (i = 0; i < 4; 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);
}
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);
return 0;
@ -345,11 +345,11 @@ UINT32 mystwarr_state::screen_update_metamrph(screen_device &screen, bitmap_rgb3
for (i = 0; i < 4; 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);
}
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);
return 0;
@ -362,14 +362,14 @@ UINT32 mystwarr_state::screen_update_martchmp(screen_device &screen, bitmap_rgb3
for (i = 0; i < 4; 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);
}
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_oinprion = K055555_read_register(K55_OINPRI_ON);
m_cbparam = m_k055555->K055555_read_register(K55_PRIINP_8);
m_oinprion = m_k055555->K055555_read_register(K55_OINPRI_ON);
// not quite right
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)
{
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;
}
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;
}
@ -501,7 +501,7 @@ UINT32 mystwarr_state::screen_update_dadandrn(screen_device &screen, bitmap_rgb3
{
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)
{
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++)
{
newbase = K055555_get_palette_index(i)<<4;
newbase = m_k055555->K055555_get_palette_index(i)<<4;
if (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_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)
{