mirror of
https://github.com/holub/mame
synced 2025-06-27 06:39:03 +03:00
Moved misc functions into driver classes and small cleanups(nw)
This commit is contained in:
parent
cdc6d197ed
commit
116cfaedb3
@ -213,9 +213,9 @@ void n8080_state::helifire_sound_pins_changed()
|
||||
{
|
||||
UINT16 changes = ~m_curr_sound_pins & m_prev_sound_pins;
|
||||
|
||||
/* ((state->m_curr_sound_pins >> 0xa) & 1) not emulated */
|
||||
/* ((state->m_curr_sound_pins >> 0xb) & 1) not emulated */
|
||||
/* ((state->m_curr_sound_pins >> 0xc) & 1) not emulated */
|
||||
/* ((m_curr_sound_pins >> 0xa) & 1) not emulated */
|
||||
/* ((m_curr_sound_pins >> 0xb) & 1) not emulated */
|
||||
/* ((m_curr_sound_pins >> 0xc) & 1) not emulated */
|
||||
|
||||
if (changes & (1 << 6))
|
||||
{
|
||||
|
@ -452,22 +452,22 @@ public:
|
||||
INTERRUPT_GEN_MEMBER(avt_vblank_irq);
|
||||
};
|
||||
|
||||
#define mc6845_h_char_total (state->m_crtc_vreg[0])
|
||||
#define mc6845_h_char_total (m_crtc_vreg[0])
|
||||
#define mc6845_h_display (m_crtc_vreg[1])
|
||||
#define mc6845_h_sync_pos (state->m_crtc_vreg[2])
|
||||
#define mc6845_sync_width (state->m_crtc_vreg[3])
|
||||
#define mc6845_v_char_total (state->m_crtc_vreg[4])
|
||||
#define mc6845_v_total_adj (state->m_crtc_vreg[5])
|
||||
#define mc6845_h_sync_pos (m_crtc_vreg[2])
|
||||
#define mc6845_sync_width (m_crtc_vreg[3])
|
||||
#define mc6845_v_char_total (m_crtc_vreg[4])
|
||||
#define mc6845_v_total_adj (m_crtc_vreg[5])
|
||||
#define mc6845_v_display (m_crtc_vreg[6])
|
||||
#define mc6845_v_sync_pos (state->m_crtc_vreg[7])
|
||||
#define mc6845_mode_ctrl (state->m_crtc_vreg[8])
|
||||
#define mc6845_tile_height (state->m_crtc_vreg[9]+1)
|
||||
#define mc6845_cursor_y_start (state->m_crtc_vreg[0x0a])
|
||||
#define mc6845_cursor_y_end (state->m_crtc_vreg[0x0b])
|
||||
#define mc6845_start_addr (((state->m_crtc_vreg[0x0c]<<8) & 0x3f00) | (state->m_crtc_vreg[0x0d] & 0xff))
|
||||
#define mc6845_cursor_addr (((state->m_crtc_vreg[0x0e]<<8) & 0x3f00) | (state->m_crtc_vreg[0x0f] & 0xff))
|
||||
#define mc6845_light_pen_addr (((state->m_crtc_vreg[0x10]<<8) & 0x3f00) | (state->m_crtc_vreg[0x11] & 0xff))
|
||||
#define mc6845_update_addr (((state->m_crtc_vreg[0x12]<<8) & 0x3f00) | (state->m_crtc_vreg[0x13] & 0xff))
|
||||
#define mc6845_v_sync_pos (m_crtc_vreg[7])
|
||||
#define mc6845_mode_ctrl (m_crtc_vreg[8])
|
||||
#define mc6845_tile_height (m_crtc_vreg[9]+1)
|
||||
#define mc6845_cursor_y_start (m_crtc_vreg[0x0a])
|
||||
#define mc6845_cursor_y_end (m_crtc_vreg[0x0b])
|
||||
#define mc6845_start_addr (((m_crtc_vreg[0x0c]<<8) & 0x3f00) | (m_crtc_vreg[0x0d] & 0xff))
|
||||
#define mc6845_cursor_addr (((m_crtc_vreg[0x0e]<<8) & 0x3f00) | (m_crtc_vreg[0x0f] & 0xff))
|
||||
#define mc6845_light_pen_addr (((m_crtc_vreg[0x10]<<8) & 0x3f00) | (m_crtc_vreg[0x11] & 0xff))
|
||||
#define mc6845_update_addr (((m_crtc_vreg[0x12]<<8) & 0x3f00) | (m_crtc_vreg[0x13] & 0xff))
|
||||
|
||||
|
||||
/*********************************************
|
||||
|
@ -638,11 +638,10 @@ ADDRESS_MAP_END
|
||||
Koro Koro Quest
|
||||
***************************************************************************/
|
||||
|
||||
static void show_leds(running_machine &machine)
|
||||
void cave_state::show_leds()
|
||||
{
|
||||
#ifdef MAME_DEBUG
|
||||
// cave_state *state = machine.driver_data<cave_state>();
|
||||
// popmessage("led %04X eep %02X", state->m_leds[0], (state->m_leds[1] >> 8) & ~0x70);
|
||||
// popmessage("led %04X eep %02X", m_leds[0], (m_leds[1] >> 8) & ~0x70);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -666,7 +665,7 @@ WRITE16_MEMBER(cave_state::korokoro_leds_w)
|
||||
set_led_status(machine(), 7, data & 0x0002);
|
||||
set_led_status(machine(), 8, data & 0x0001);
|
||||
|
||||
show_leds(machine());
|
||||
show_leds();
|
||||
}
|
||||
|
||||
|
||||
@ -676,7 +675,7 @@ WRITE16_MEMBER(cave_state::korokoro_eeprom_msb_w)
|
||||
{
|
||||
logerror("%s: Unknown EEPROM bit written %04X\n",machine().describe_context(),data);
|
||||
COMBINE_DATA(&m_leds[1]);
|
||||
show_leds(machine());
|
||||
show_leds();
|
||||
}
|
||||
|
||||
if (ACCESSING_BITS_8_15) // even address
|
||||
@ -924,10 +923,9 @@ READ16_MEMBER(cave_state::pwrinst2_eeprom_r)
|
||||
return ~8 + ((m_eeprom->do_read() & 1) ? 8 : 0);
|
||||
}
|
||||
|
||||
INLINE void vctrl_w(address_space &space, offs_t offset, UINT16 data, UINT16 mem_mask, int GFX)
|
||||
inline void cave_state::vctrl_w(address_space &space, offs_t offset, UINT16 data, UINT16 mem_mask, int GFX)
|
||||
{
|
||||
cave_state *state = space.machine().driver_data<cave_state>();
|
||||
UINT16 *VCTRL = state->m_vctrl[GFX];
|
||||
UINT16 *VCTRL = m_vctrl[GFX];
|
||||
if (offset == 4 / 2)
|
||||
{
|
||||
switch (data & 0x000f)
|
||||
@ -4665,10 +4663,10 @@ ROM_END
|
||||
|
||||
/* Tiles are 6 bit, 4 bits stored in one rom, 2 bits in the other.
|
||||
Expand the 2 bit part into a 4 bit layout, so we can decode it */
|
||||
static void sailormn_unpack_tiles( running_machine &machine, const char *region )
|
||||
void cave_state::sailormn_unpack_tiles( const char *region )
|
||||
{
|
||||
const UINT32 len = machine.root_device().memregion(region)->bytes();
|
||||
UINT8 *rgn = machine.root_device().memregion(region)->base();
|
||||
const UINT32 len = memregion(region)->bytes();
|
||||
UINT8 *rgn = memregion(region)->base();
|
||||
UINT8 *src = rgn + (len/4)*3 - 1;
|
||||
UINT8 *dst = rgn + (len/4)*4 - 2;
|
||||
|
||||
@ -4684,22 +4682,20 @@ static void sailormn_unpack_tiles( running_machine &machine, const char *region
|
||||
}
|
||||
}
|
||||
|
||||
static void init_cave(running_machine &machine)
|
||||
void cave_state::init_cave()
|
||||
{
|
||||
cave_state *state = machine.driver_data<cave_state>();
|
||||
m_spritetype[0] = 0; // Normal sprites
|
||||
m_kludge = 0;
|
||||
m_time_vblank_irq = 100;
|
||||
|
||||
state->m_spritetype[0] = 0; // Normal sprites
|
||||
state->m_kludge = 0;
|
||||
state->m_time_vblank_irq = 100;
|
||||
|
||||
state->m_irq_level = 1;
|
||||
m_irq_level = 1;
|
||||
}
|
||||
|
||||
|
||||
DRIVER_INIT_MEMBER(cave_state,agallet)
|
||||
{
|
||||
UINT8 *ROM = memregion("audiocpu")->base();
|
||||
init_cave(machine());
|
||||
init_cave();
|
||||
|
||||
membank("z80bank")->configure_entries(0, 0x20, &ROM[0x00000], 0x4000);
|
||||
|
||||
@ -4711,14 +4707,14 @@ DRIVER_INIT_MEMBER(cave_state,agallet)
|
||||
membank("oki2bank1")->configure_entries(0, 0x10, &ROM[0x00000], 0x20000);
|
||||
membank("oki2bank2")->configure_entries(0, 0x10, &ROM[0x00000], 0x20000);
|
||||
|
||||
sailormn_unpack_tiles(machine(), "layer2");
|
||||
sailormn_unpack_tiles("layer2");
|
||||
|
||||
unpack_sprites("sprites0");
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(cave_state,dfeveron)
|
||||
{
|
||||
init_cave(machine());
|
||||
init_cave();
|
||||
|
||||
unpack_sprites("sprites0");
|
||||
m_kludge = 2;
|
||||
@ -4726,7 +4722,7 @@ DRIVER_INIT_MEMBER(cave_state,dfeveron)
|
||||
|
||||
DRIVER_INIT_MEMBER(cave_state,feversos)
|
||||
{
|
||||
init_cave(machine());
|
||||
init_cave();
|
||||
|
||||
unpack_sprites("sprites0");
|
||||
m_kludge = 2;
|
||||
@ -4734,7 +4730,7 @@ DRIVER_INIT_MEMBER(cave_state,feversos)
|
||||
|
||||
DRIVER_INIT_MEMBER(cave_state,ddonpach)
|
||||
{
|
||||
init_cave(machine());
|
||||
init_cave();
|
||||
|
||||
ddonpach_unpack_sprites("sprites0");
|
||||
m_spritetype[0] = 1; // "different" sprites (no zooming?)
|
||||
@ -4743,7 +4739,7 @@ DRIVER_INIT_MEMBER(cave_state,ddonpach)
|
||||
|
||||
DRIVER_INIT_MEMBER(cave_state,donpachi)
|
||||
{
|
||||
init_cave(machine());
|
||||
init_cave();
|
||||
|
||||
ddonpach_unpack_sprites("sprites0");
|
||||
m_spritetype[0] = 1; // "different" sprites (no zooming?)
|
||||
@ -4753,7 +4749,7 @@ DRIVER_INIT_MEMBER(cave_state,donpachi)
|
||||
|
||||
DRIVER_INIT_MEMBER(cave_state,esprade)
|
||||
{
|
||||
init_cave(machine());
|
||||
init_cave();
|
||||
|
||||
esprade_unpack_sprites("sprites0");
|
||||
m_time_vblank_irq = 2000; /**/
|
||||
@ -4768,7 +4764,7 @@ DRIVER_INIT_MEMBER(cave_state,esprade)
|
||||
|
||||
DRIVER_INIT_MEMBER(cave_state,gaia)
|
||||
{
|
||||
init_cave(machine());
|
||||
init_cave();
|
||||
|
||||
/* No EEPROM */
|
||||
|
||||
@ -4779,7 +4775,7 @@ DRIVER_INIT_MEMBER(cave_state,gaia)
|
||||
|
||||
DRIVER_INIT_MEMBER(cave_state,guwange)
|
||||
{
|
||||
init_cave(machine());
|
||||
init_cave();
|
||||
|
||||
esprade_unpack_sprites("sprites0");
|
||||
m_time_vblank_irq = 2000; /**/
|
||||
@ -4789,7 +4785,7 @@ DRIVER_INIT_MEMBER(cave_state,hotdogst)
|
||||
{
|
||||
UINT8 *ROM = memregion("audiocpu")->base();
|
||||
|
||||
init_cave(machine());
|
||||
init_cave();
|
||||
|
||||
membank("z80bank")->configure_entries(0, 0x10, &ROM[0x00000], 0x4000);
|
||||
|
||||
@ -4808,7 +4804,7 @@ DRIVER_INIT_MEMBER(cave_state,mazinger)
|
||||
UINT8 *src = memregion("sprites0")->base();
|
||||
int len = memregion("sprites0")->bytes();
|
||||
|
||||
init_cave(machine());
|
||||
init_cave();
|
||||
|
||||
membank("z80bank")->configure_entries(0, 8, &ROM[0x00000], 0x4000);
|
||||
|
||||
@ -4835,7 +4831,7 @@ DRIVER_INIT_MEMBER(cave_state,metmqstr)
|
||||
{
|
||||
UINT8 *ROM = memregion("audiocpu")->base();
|
||||
|
||||
init_cave(machine());
|
||||
init_cave();
|
||||
|
||||
membank("z80bank")->configure_entries(0, 0x10, &ROM[0x00000], 0x4000);
|
||||
|
||||
@ -4855,7 +4851,7 @@ DRIVER_INIT_MEMBER(cave_state,metmqstr)
|
||||
|
||||
DRIVER_INIT_MEMBER(cave_state,ppsatan)
|
||||
{
|
||||
init_cave(machine());
|
||||
init_cave();
|
||||
|
||||
unpack_sprites("sprites0");
|
||||
unpack_sprites("sprites1");
|
||||
@ -4875,7 +4871,7 @@ DRIVER_INIT_MEMBER(cave_state,pwrinst2j)
|
||||
int len = memregion("sprites0")->bytes();
|
||||
int i, j;
|
||||
|
||||
init_cave(machine());
|
||||
init_cave();
|
||||
|
||||
membank("z80bank")->configure_entries(0, 8, &ROM[0x00000], 0x4000);
|
||||
|
||||
@ -4919,7 +4915,7 @@ DRIVER_INIT_MEMBER(cave_state,sailormn)
|
||||
UINT8 *src = memregion("sprites0")->base();
|
||||
int len = memregion("sprites0")->bytes();
|
||||
|
||||
init_cave(machine());
|
||||
init_cave();
|
||||
|
||||
membank("z80bank")->configure_entries(0, 0x20, &ROM[0x00000], 0x4000);
|
||||
|
||||
@ -4940,7 +4936,7 @@ DRIVER_INIT_MEMBER(cave_state,sailormn)
|
||||
memcpy(src, buffer, len);
|
||||
}
|
||||
|
||||
sailormn_unpack_tiles( machine(), "layer2" );
|
||||
sailormn_unpack_tiles("layer2");
|
||||
|
||||
unpack_sprites("sprites0");
|
||||
m_spritetype[0] = 2; // Normal sprites with different position handling
|
||||
@ -4953,7 +4949,7 @@ DRIVER_INIT_MEMBER(cave_state,sailormn)
|
||||
|
||||
DRIVER_INIT_MEMBER(cave_state,tjumpman)
|
||||
{
|
||||
init_cave(machine());
|
||||
init_cave();
|
||||
|
||||
unpack_sprites("sprites0");
|
||||
m_spritetype[0] = 2; // Normal sprites with different position handling
|
||||
@ -4966,7 +4962,7 @@ DRIVER_INIT_MEMBER(cave_state,tjumpman)
|
||||
|
||||
DRIVER_INIT_MEMBER(cave_state,uopoko)
|
||||
{
|
||||
init_cave(machine());
|
||||
init_cave();
|
||||
|
||||
unpack_sprites("sprites0");
|
||||
m_kludge = 2;
|
||||
@ -4975,7 +4971,7 @@ DRIVER_INIT_MEMBER(cave_state,uopoko)
|
||||
|
||||
DRIVER_INIT_MEMBER(cave_state,korokoro)
|
||||
{
|
||||
init_cave(machine());
|
||||
init_cave();
|
||||
|
||||
m_irq_level = 2;
|
||||
|
||||
|
@ -387,13 +387,13 @@ public:
|
||||
void draw_line(const rectangle &visarea, vertex_t &v1, vertex_t &v2);
|
||||
|
||||
void gfx_init();
|
||||
void gfx_exit(running_machine &machine);
|
||||
void gfx_reset(running_machine &machine);
|
||||
void gfx_fifo_exec(running_machine &machine);
|
||||
void gfx_exit();
|
||||
void gfx_reset();
|
||||
void gfx_fifo_exec();
|
||||
UINT32 gfx_read_gram(UINT32 address);
|
||||
void gfx_write_gram(UINT32 address, UINT32 mask, UINT32 data);
|
||||
UINT64 gfx_read_reg(running_machine &machine);
|
||||
void gfx_write_reg(running_machine &machine, UINT64 data);
|
||||
UINT64 gfx_read_reg();
|
||||
void gfx_write_reg(UINT64 data);
|
||||
|
||||
void display(bitmap_rgb32 *bitmap, const rectangle &cliprect);
|
||||
inline rgb_t texture_fetch(UINT32 *texture, int u, int v, int width, int format);
|
||||
@ -998,7 +998,7 @@ void cobra_renderer::draw_line(const rectangle &visarea, vertex_t &v1, vertex_t
|
||||
|
||||
void cobra_state::cobra_video_exit()
|
||||
{
|
||||
m_renderer->gfx_exit(machine());
|
||||
m_renderer->gfx_exit();
|
||||
}
|
||||
|
||||
void cobra_state::video_start()
|
||||
@ -2032,7 +2032,7 @@ void cobra_renderer::gfx_init()
|
||||
m_zbuffer->fill(*(int*)&zvalue, visarea);
|
||||
}
|
||||
|
||||
void cobra_renderer::gfx_exit(running_machine &machine)
|
||||
void cobra_renderer::gfx_exit()
|
||||
{
|
||||
/*
|
||||
FILE *file;
|
||||
@ -2048,9 +2048,9 @@ void cobra_renderer::gfx_exit(running_machine &machine)
|
||||
*/
|
||||
}
|
||||
|
||||
void cobra_renderer::gfx_reset(running_machine &machine)
|
||||
void cobra_renderer::gfx_reset()
|
||||
{
|
||||
cobra_state *cobra = machine.driver_data<cobra_state>();
|
||||
cobra_state *cobra = machine().driver_data<cobra_state>();
|
||||
|
||||
cobra->m_gfx_re_status = RE_STATUS_IDLE;
|
||||
}
|
||||
@ -2125,12 +2125,12 @@ void cobra_renderer::gfx_write_gram(UINT32 address, UINT32 mask, UINT32 data)
|
||||
m_gfx_gram[address/4] |= data & mask;
|
||||
}
|
||||
|
||||
UINT64 cobra_renderer::gfx_read_reg(running_machine &machine)
|
||||
UINT64 cobra_renderer::gfx_read_reg()
|
||||
{
|
||||
return m_gfx_register[m_gfx_register_select];
|
||||
}
|
||||
|
||||
void cobra_renderer::gfx_write_reg(running_machine &machine, UINT64 data)
|
||||
void cobra_renderer::gfx_write_reg(UINT64 data)
|
||||
{
|
||||
switch (m_gfx_register_select)
|
||||
{
|
||||
@ -2150,9 +2150,9 @@ void cobra_renderer::gfx_write_reg(running_machine &machine, UINT64 data)
|
||||
m_gfx_register[m_gfx_register_select] = data;
|
||||
}
|
||||
|
||||
void cobra_renderer::gfx_fifo_exec(running_machine &machine)
|
||||
void cobra_renderer::gfx_fifo_exec()
|
||||
{
|
||||
cobra_state *cobra = machine.driver_data<cobra_state>();
|
||||
cobra_state *cobra = machine().driver_data<cobra_state>();
|
||||
|
||||
if (cobra->m_gfx_fifo_loopback != 0)
|
||||
return;
|
||||
@ -2230,7 +2230,7 @@ void cobra_renderer::gfx_fifo_exec(running_machine &machine)
|
||||
// 64-bit registers, top 32-bits in word 2, low 32-bit in word 3
|
||||
printf("GFX: register write %08X: %08X %08X\n", m_gfx_register_select, w[2], w[3]);
|
||||
|
||||
gfx_write_reg(machine, ((UINT64)(w[2]) << 32) | w[3]);
|
||||
gfx_write_reg(((UINT64)(w[2]) << 32) | w[3]);
|
||||
}
|
||||
else if (w2 == 0x10521000)
|
||||
{
|
||||
@ -2832,7 +2832,7 @@ READ64_MEMBER(cobra_state::gfx_fifo_r)
|
||||
{
|
||||
UINT64 r = 0;
|
||||
|
||||
m_renderer->gfx_fifo_exec(space.machine());
|
||||
m_renderer->gfx_fifo_exec();
|
||||
|
||||
if (ACCESSING_BITS_32_63)
|
||||
{
|
||||
@ -2958,7 +2958,7 @@ WRITE64_MEMBER(cobra_state::gfx_buf_w)
|
||||
|
||||
// printf("prc_read %08X%08X at %08X\n", (UINT32)(data >> 32), (UINT32)(data), activecpu_get_pc());
|
||||
|
||||
m_renderer->gfx_fifo_exec(space.machine());
|
||||
m_renderer->gfx_fifo_exec();
|
||||
|
||||
if (data == U64(0x00a0000110500018))
|
||||
{
|
||||
@ -2966,7 +2966,7 @@ WRITE64_MEMBER(cobra_state::gfx_buf_w)
|
||||
|
||||
// reads back the register selected by gfx register select
|
||||
|
||||
UINT64 regdata = m_renderer->gfx_read_reg(space.machine());
|
||||
UINT64 regdata = m_renderer->gfx_read_reg();
|
||||
|
||||
m_gfxfifo_out->push(&space.device(), (UINT32)(regdata >> 32));
|
||||
m_gfxfifo_out->push(&space.device(), (UINT32)(regdata));
|
||||
@ -3012,7 +3012,7 @@ static void gfx_cpu_dc_store(device_t *device, UINT32 address)
|
||||
fifo_in->push(device, (UINT32)(cobra->m_gfx_fifo_mem[a+3] >> 32) | i);
|
||||
fifo_in->push(device, (UINT32)(cobra->m_gfx_fifo_mem[a+3] >> 0) | i);
|
||||
|
||||
cobra->m_renderer->gfx_fifo_exec(device->machine());
|
||||
cobra->m_renderer->gfx_fifo_exec();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -3150,7 +3150,7 @@ void cobra_state::machine_reset()
|
||||
identify_device[51] = 0x0200; /* 51: PIO data transfer cycle timing mode */
|
||||
identify_device[67] = 0x01e0; /* 67: minimum PIO transfer cycle time without flow control */
|
||||
|
||||
m_renderer->gfx_reset(machine());
|
||||
m_renderer->gfx_reset();
|
||||
|
||||
m_sound_dma_ptr = 0;
|
||||
|
||||
|
@ -1106,19 +1106,17 @@ ROM_END
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static void register_state_save(running_machine &machine)
|
||||
void coolpool_state::register_state_save()
|
||||
{
|
||||
coolpool_state *state = machine.driver_data<coolpool_state>();
|
||||
save_item(NAME(m_oldx));
|
||||
save_item(NAME(m_oldy));
|
||||
save_item(NAME(m_result));
|
||||
save_item(NAME(m_lastresult));
|
||||
|
||||
state->save_item(NAME(state->m_oldx));
|
||||
state->save_item(NAME(state->m_oldy));
|
||||
state->save_item(NAME(state->m_result));
|
||||
state->save_item(NAME(state->m_lastresult));
|
||||
|
||||
state->save_item(NAME(state->m_cmd_pending));
|
||||
state->save_item(NAME(state->m_iop_cmd));
|
||||
state->save_item(NAME(state->m_iop_answer));
|
||||
state->save_item(NAME(state->m_iop_romaddr));
|
||||
save_item(NAME(m_cmd_pending));
|
||||
save_item(NAME(m_iop_cmd));
|
||||
save_item(NAME(m_iop_answer));
|
||||
save_item(NAME(m_iop_romaddr));
|
||||
}
|
||||
|
||||
|
||||
@ -1127,14 +1125,14 @@ DRIVER_INIT_MEMBER(coolpool_state,amerdart)
|
||||
{
|
||||
m_lastresult = 0xffff;
|
||||
|
||||
register_state_save(machine());
|
||||
register_state_save();
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(coolpool_state,coolpool)
|
||||
{
|
||||
m_dsp->space(AS_IO).install_read_handler(0x07, 0x07, read16_delegate(FUNC(coolpool_state::coolpool_input_r),this));
|
||||
|
||||
register_state_save(machine());
|
||||
register_state_save();
|
||||
}
|
||||
|
||||
|
||||
@ -1178,7 +1176,7 @@ DRIVER_INIT_MEMBER(coolpool_state,9ballsht)
|
||||
rom[a+1] = tmp;
|
||||
}
|
||||
|
||||
register_state_save(machine());
|
||||
register_state_save();
|
||||
}
|
||||
|
||||
|
||||
|
@ -446,7 +446,7 @@ INTERRUPT_GEN_MEMBER(galaxian_state::fakechange_interrupt_gen)
|
||||
{
|
||||
m_tenspot_current_game++;
|
||||
m_tenspot_current_game%=10;
|
||||
tenspot_set_game_bank(machine(), m_tenspot_current_game, 1);
|
||||
tenspot_set_game_bank(m_tenspot_current_game, 1);
|
||||
m_maincpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
|
||||
}
|
||||
}
|
||||
@ -5972,7 +5972,7 @@ READ8_MEMBER(galaxian_state::tenspot_dsw_read)
|
||||
}
|
||||
|
||||
|
||||
void galaxian_state::tenspot_set_game_bank(running_machine& machine, int bank, int from_game)
|
||||
void galaxian_state::tenspot_set_game_bank(int bank, int from_game)
|
||||
{
|
||||
char tmp[64];
|
||||
UINT8* srcregion;
|
||||
@ -5980,15 +5980,15 @@ void galaxian_state::tenspot_set_game_bank(running_machine& machine, int bank, i
|
||||
int x;
|
||||
|
||||
sprintf(tmp,"game_%d_cpu", bank);
|
||||
srcregion = machine.root_device().memregion(tmp)->base();
|
||||
dstregion = machine.root_device().memregion("maincpu")->base();
|
||||
srcregion = memregion(tmp)->base();
|
||||
dstregion = memregion("maincpu")->base();
|
||||
memcpy(dstregion, srcregion, 0x4000);
|
||||
|
||||
sprintf(tmp,"game_%d_temp", bank);
|
||||
srcregion = machine.root_device().memregion(tmp)->base();
|
||||
dstregion = machine.root_device().memregion("gfx1")->base();
|
||||
srcregion = memregion(tmp)->base();
|
||||
dstregion = memregion("gfx1")->base();
|
||||
memcpy(dstregion, srcregion, 0x2000);
|
||||
dstregion = machine.root_device().memregion("gfx2")->base();
|
||||
dstregion = memregion("gfx2")->base();
|
||||
memcpy(dstregion, srcregion, 0x2000);
|
||||
|
||||
if (from_game)
|
||||
@ -6005,8 +6005,8 @@ void galaxian_state::tenspot_set_game_bank(running_machine& machine, int bank, i
|
||||
}
|
||||
|
||||
sprintf(tmp,"game_%d_prom", bank);
|
||||
srcregion = machine.root_device().memregion(tmp)->base();
|
||||
dstregion = machine.root_device().memregion("proms")->base();
|
||||
srcregion = memregion(tmp)->base();
|
||||
dstregion = memregion("proms")->base();
|
||||
memcpy(dstregion, srcregion, 0x20);
|
||||
|
||||
PALETTE_INIT_NAME(galaxian)(m_palette);
|
||||
@ -6032,7 +6032,7 @@ DRIVER_INIT_MEMBER(galaxian_state,tenspot)
|
||||
|
||||
m_tenspot_current_game = 0;
|
||||
|
||||
tenspot_set_game_bank(machine(), m_tenspot_current_game, 0);
|
||||
tenspot_set_game_bank(m_tenspot_current_game, 0);
|
||||
|
||||
space.install_read_handler(0x7000, 0x7000, read8_delegate(FUNC(galaxian_state::tenspot_dsw_read),this));
|
||||
}
|
||||
|
@ -472,14 +472,13 @@ WRITE32_MEMBER(midzeus_state::analog_w)
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static void update_gun_irq(running_machine &machine)
|
||||
void midzeus_state::update_gun_irq()
|
||||
{
|
||||
midzeus_state *state = machine.driver_data<midzeus_state>();
|
||||
/* low 2 bits of gun_control seem to enable IRQs */
|
||||
if (gun_irq_state & gun_control & 0x03)
|
||||
state->m_maincpu->set_input_line(3, ASSERT_LINE);
|
||||
m_maincpu->set_input_line(3, ASSERT_LINE);
|
||||
else
|
||||
state->m_maincpu->set_input_line(3, CLEAR_LINE);
|
||||
m_maincpu->set_input_line(3, CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
@ -490,7 +489,7 @@ TIMER_CALLBACK_MEMBER(midzeus_state::invasn_gun_callback)
|
||||
|
||||
/* set the appropriate IRQ in the internal gun control and update */
|
||||
gun_irq_state |= 0x01 << player;
|
||||
update_gun_irq(machine());
|
||||
update_gun_irq();
|
||||
|
||||
/* generate another interrupt on the next scanline while we are within the BEAM_DY */
|
||||
beamy++;
|
||||
@ -509,7 +508,7 @@ WRITE32_MEMBER(midzeus_state::invasn_gun_w)
|
||||
/* bits 0-1 enable IRQs (?) */
|
||||
/* bits 2-3 reset IRQ states */
|
||||
gun_irq_state &= ~((gun_control >> 2) & 3);
|
||||
update_gun_irq(machine());
|
||||
update_gun_irq();
|
||||
|
||||
for (player = 0; player < 2; player++)
|
||||
{
|
||||
|
@ -529,16 +529,6 @@ orunners: Interleaved with the dj and << >> buttons is the data the drives the
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Prototypes
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static void signal_sound_irq(running_machine &machine, int which);
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Machine init
|
||||
@ -659,7 +649,7 @@ void segas32_state::int_control_w(address_space &space, int offset, UINT8 data)
|
||||
case 13:
|
||||
case 14:
|
||||
case 15: /* signal IRQ to sound CPU */
|
||||
signal_sound_irq(machine(),SOUND_IRQ_V60);
|
||||
signal_sound_irq(SOUND_IRQ_V60);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1216,27 +1206,22 @@ void segas32_state::update_sound_irq_state()
|
||||
}
|
||||
|
||||
|
||||
static void signal_sound_irq(running_machine &machine, int which)
|
||||
void segas32_state::signal_sound_irq(int which)
|
||||
{
|
||||
segas32_state *state = machine.driver_data<segas32_state>();
|
||||
int i;
|
||||
|
||||
/* see if this interrupt input is mapped to any vectors; if so, mark them */
|
||||
for (i = 0; i < 3; i++)
|
||||
if (state->m_sound_irq_control[i] == which)
|
||||
state->m_sound_irq_input |= 1 << i;
|
||||
state->update_sound_irq_state();
|
||||
for (int i = 0; i < 3; i++)
|
||||
if (m_sound_irq_control[i] == which)
|
||||
m_sound_irq_input |= 1 << i;
|
||||
update_sound_irq_state();
|
||||
}
|
||||
|
||||
|
||||
static void clear_sound_irq(running_machine &machine, int which)
|
||||
void segas32_state::clear_sound_irq(int which)
|
||||
{
|
||||
segas32_state *state = machine.driver_data<segas32_state>();
|
||||
int i;
|
||||
for (i = 0; i < 3; i++)
|
||||
if (state->m_sound_irq_control[i] == which)
|
||||
state->m_sound_irq_input &= ~(1 << i);
|
||||
state->update_sound_irq_state();
|
||||
for (int i = 0; i < 3; i++)
|
||||
if (m_sound_irq_control[i] == which)
|
||||
m_sound_irq_input &= ~(1 << i);
|
||||
update_sound_irq_state();
|
||||
}
|
||||
|
||||
|
||||
@ -1265,9 +1250,9 @@ WRITE8_MEMBER(segas32_state::sound_int_control_hi_w)
|
||||
WRITE_LINE_MEMBER(segas32_state::ym3438_irq_handler)
|
||||
{
|
||||
if (state)
|
||||
signal_sound_irq(machine(), SOUND_IRQ_YM3438);
|
||||
signal_sound_irq(SOUND_IRQ_YM3438);
|
||||
else
|
||||
clear_sound_irq(machine(), SOUND_IRQ_YM3438);
|
||||
clear_sound_irq(SOUND_IRQ_YM3438);
|
||||
}
|
||||
|
||||
|
||||
|
@ -608,11 +608,11 @@ public:
|
||||
DECLARE_READ16_MEMBER(tlcs_ide1_r);
|
||||
DECLARE_WRITE_LINE_MEMBER(ide_interrupt);
|
||||
void taitotz_exit();
|
||||
void draw_tile(taitotz_state *state, UINT32 pos, UINT32 tile);
|
||||
UINT32 video_mem_r(taitotz_state *state, UINT32 address);
|
||||
void video_mem_w(taitotz_state *state, UINT32 address, UINT32 data);
|
||||
UINT32 video_reg_r(taitotz_state *state, UINT32 reg);
|
||||
void video_reg_w(taitotz_state *state, UINT32 reg, UINT32 data);
|
||||
void draw_tile(UINT32 pos, UINT32 tile);
|
||||
UINT32 video_mem_r(UINT32 address);
|
||||
void video_mem_w(UINT32 address, UINT32 data);
|
||||
UINT32 video_reg_r(UINT32 reg);
|
||||
void video_reg_w(UINT32 reg, UINT32 data);
|
||||
void init_taitotz_152();
|
||||
void init_taitotz_111a();
|
||||
};
|
||||
@ -634,8 +634,8 @@ public:
|
||||
}
|
||||
|
||||
void set_fb(bitmap_rgb32 *fb) { m_fb = fb; }
|
||||
void render_displaylist(running_machine &machine, const rectangle &cliprect);
|
||||
void draw_object(running_machine &machine, UINT32 address, float scale, UINT8 alpha);
|
||||
void render_displaylist(const rectangle &cliprect);
|
||||
void draw_object(UINT32 address, float scale, UINT8 alpha);
|
||||
float line_plane_intersection(const vertex_t *v1, const vertex_t *v2, PLANE cp);
|
||||
int clip_polygon(const vertex_t *v, int num_vertices, PLANE cp, vertex_t *vout);
|
||||
void setup_viewport(int x, int y, int width, int height, int center_x, int center_y);
|
||||
@ -1152,7 +1152,7 @@ int taitotz_renderer::clip_polygon(const vertex_t *v, int num_vertices, PLANE cp
|
||||
return clip_verts;
|
||||
}
|
||||
|
||||
void taitotz_renderer::draw_object(running_machine &machine, UINT32 address, float scale, UINT8 alpha)
|
||||
void taitotz_renderer::draw_object(UINT32 address, float scale, UINT8 alpha)
|
||||
{
|
||||
const rectangle& visarea = m_state.m_screen->visible_area();
|
||||
|
||||
@ -1336,7 +1336,7 @@ void taitotz_renderer::setup_viewport(int x, int y, int width, int height, int c
|
||||
m_clip_plane[4].d = 0.1f;
|
||||
}
|
||||
|
||||
void taitotz_renderer::render_displaylist(running_machine &machine, const rectangle &cliprect)
|
||||
void taitotz_renderer::render_displaylist(const rectangle &cliprect)
|
||||
{
|
||||
float zvalue = 0;//ZBUFFER_MAX;
|
||||
m_zbuffer->fill(*(int*)&zvalue, cliprect);
|
||||
@ -1405,7 +1405,7 @@ void taitotz_renderer::render_displaylist(running_machine &machine, const rectan
|
||||
|
||||
UINT32 alpha = w[2];
|
||||
|
||||
draw_object(machine, w[0] & 0x1fffff, scale, alpha);
|
||||
draw_object(w[0] & 0x1fffff, scale, alpha);
|
||||
|
||||
#if LOG_DISPLAY_LIST
|
||||
printf("0xffff0011: %08X, %08X, %08X, %08X\n", w[0], w[1], w[2], w[3]);
|
||||
@ -1594,7 +1594,7 @@ UINT32 taitotz_state::screen_update_taitotz(screen_device &screen, bitmap_rgb32
|
||||
{
|
||||
bitmap.fill(0x000000, cliprect);
|
||||
m_renderer->set_fb(&bitmap);
|
||||
m_renderer->render_displaylist(machine(), cliprect);
|
||||
m_renderer->render_displaylist(cliprect);
|
||||
|
||||
|
||||
UINT16 *screen_src = (UINT16*)&m_screen_ram[m_scr_base];
|
||||
@ -1618,7 +1618,7 @@ UINT32 taitotz_state::screen_update_taitotz(screen_device &screen, bitmap_rgb32
|
||||
return 0;
|
||||
}
|
||||
|
||||
void taitotz_state::draw_tile(taitotz_state *state, UINT32 pos, UINT32 tile)
|
||||
void taitotz_state::draw_tile(UINT32 pos, UINT32 tile)
|
||||
{
|
||||
int tileu = (tile & 0x1f) * 16;
|
||||
int tilev = ((tile >> 5)) * 16;
|
||||
@ -1660,7 +1660,7 @@ void taitotz_state::draw_tile(taitotz_state *state, UINT32 pos, UINT32 tile)
|
||||
batlgr2 into 0x9e0000
|
||||
*/
|
||||
|
||||
UINT32 taitotz_state::video_mem_r(taitotz_state *state, UINT32 address)
|
||||
UINT32 taitotz_state::video_mem_r(UINT32 address)
|
||||
{
|
||||
if (address >= 0x800000 && address < 0x1000000)
|
||||
{
|
||||
@ -1681,7 +1681,7 @@ UINT32 taitotz_state::video_mem_r(taitotz_state *state, UINT32 address)
|
||||
}
|
||||
}
|
||||
|
||||
void taitotz_state::video_mem_w(taitotz_state *state, UINT32 address, UINT32 data)
|
||||
void taitotz_state::video_mem_w(UINT32 address, UINT32 data)
|
||||
{
|
||||
if (address >= 0x800000 && address < 0x1000000)
|
||||
{
|
||||
@ -1701,7 +1701,7 @@ void taitotz_state::video_mem_w(taitotz_state *state, UINT32 address, UINT32 dat
|
||||
}
|
||||
}
|
||||
|
||||
UINT32 taitotz_state::video_reg_r(taitotz_state *state, UINT32 reg)
|
||||
UINT32 taitotz_state::video_reg_r(UINT32 reg)
|
||||
{
|
||||
switch ((reg >> 28) & 0xf)
|
||||
{
|
||||
@ -1731,7 +1731,7 @@ UINT32 taitotz_state::video_reg_r(taitotz_state *state, UINT32 reg)
|
||||
}
|
||||
case 0xb:
|
||||
{
|
||||
return video_mem_r(state, reg & 0xfffffff);
|
||||
return video_mem_r(reg & 0xfffffff);
|
||||
}
|
||||
default:
|
||||
{
|
||||
@ -1764,7 +1764,7 @@ video_reg_w: r: 20000003 d: 019501AA
|
||||
video_reg_w: r: 20000004 d: 00000000
|
||||
*/
|
||||
|
||||
void taitotz_state::video_reg_w(taitotz_state *state, UINT32 reg, UINT32 data)
|
||||
void taitotz_state::video_reg_w(UINT32 reg, UINT32 data)
|
||||
{
|
||||
switch ((reg >> 28) & 0xf)
|
||||
{
|
||||
@ -1794,12 +1794,12 @@ void taitotz_state::video_reg_w(taitotz_state *state, UINT32 reg, UINT32 data)
|
||||
{
|
||||
UINT32 pos = (data >> 12) & 0xfff;
|
||||
UINT32 tile = data & 0xfff;
|
||||
draw_tile(state, pos, tile);
|
||||
draw_tile(pos, tile);
|
||||
break;
|
||||
}
|
||||
case 0xb: // RAM write?
|
||||
{
|
||||
video_mem_w(state, m_video_ram_ptr, data);
|
||||
video_mem_w(m_video_ram_ptr, data);
|
||||
m_video_ram_ptr++;
|
||||
break;
|
||||
}
|
||||
@ -1839,7 +1839,7 @@ READ64_MEMBER(taitotz_state::video_chip_r)
|
||||
{
|
||||
case 0x0:
|
||||
{
|
||||
r |= (UINT64)(video_reg_r(this, m_video_reg)) << 32;
|
||||
r |= (UINT64)(video_reg_r(m_video_reg)) << 32;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1885,7 +1885,7 @@ WRITE64_MEMBER(taitotz_state::video_chip_w)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
video_reg_w(this, m_video_reg, regdata);
|
||||
video_reg_w(m_video_reg, regdata);
|
||||
break;
|
||||
}
|
||||
case 0x8:
|
||||
@ -1940,12 +1940,12 @@ READ64_MEMBER(taitotz_state::video_fifo_r)
|
||||
UINT64 r = 0;
|
||||
if (ACCESSING_BITS_32_63)
|
||||
{
|
||||
r |= (UINT64)(video_mem_r(this, m_video_ram_ptr)) << 32;
|
||||
r |= (UINT64)(video_mem_r(m_video_ram_ptr)) << 32;
|
||||
m_video_ram_ptr++;
|
||||
}
|
||||
if (ACCESSING_BITS_0_31)
|
||||
{
|
||||
r |= (UINT64)(video_mem_r(this, m_video_ram_ptr));
|
||||
r |= (UINT64)(video_mem_r(m_video_ram_ptr));
|
||||
m_video_ram_ptr++;
|
||||
}
|
||||
|
||||
@ -1963,7 +1963,7 @@ WRITE64_MEMBER(taitotz_state::video_fifo_w)
|
||||
{
|
||||
if (m_video_fifo_ptr >= 8)
|
||||
{
|
||||
video_mem_w(this, m_video_ram_ptr, (UINT32)(data >> 32));
|
||||
video_mem_w(m_video_ram_ptr, (UINT32)(data >> 32));
|
||||
m_video_ram_ptr++;
|
||||
}
|
||||
m_video_fifo_ptr++;
|
||||
@ -1972,7 +1972,7 @@ WRITE64_MEMBER(taitotz_state::video_fifo_w)
|
||||
{
|
||||
if (m_video_fifo_ptr >= 8)
|
||||
{
|
||||
video_mem_w(this, m_video_ram_ptr, (UINT32)(data));
|
||||
video_mem_w(m_video_ram_ptr, (UINT32)(data));
|
||||
m_video_ram_ptr++;
|
||||
}
|
||||
m_video_fifo_ptr++;
|
||||
|
@ -127,6 +127,10 @@ public:
|
||||
required_device<timer_device> m_int_timer;
|
||||
optional_device<timer_device> m_int_timer_left;
|
||||
optional_device<timer_device> m_int_timer_right;
|
||||
optional_device<eeprom_serial_93cxx_device> m_eeprom;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
int m_rasflag;
|
||||
int m_old_rasflag;
|
||||
DECLARE_READ16_MEMBER(cave_irq_cause_r);
|
||||
@ -237,20 +241,18 @@ public:
|
||||
void sailormn_tilebank_w(int bank);
|
||||
DECLARE_WRITE_LINE_MEMBER(irqhandler);
|
||||
DECLARE_WRITE_LINE_MEMBER(sound_irq_gen);
|
||||
optional_device<eeprom_serial_93cxx_device> m_eeprom;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
void update_irq_state();
|
||||
void unpack_sprites(const char *region);
|
||||
void ddonpach_unpack_sprites(const char *region);
|
||||
void esprade_unpack_sprites(const char *region);
|
||||
void sailormn_unpack_tiles(const char *region);
|
||||
|
||||
private:
|
||||
inline void get_tile_info( tile_data &tileinfo, int tile_index, int GFX );
|
||||
inline void tilemap_draw( int chip, screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT32 flags, UINT32 priority, UINT32 priority2, int GFX );
|
||||
inline void vram_w( address_space &space, ATTR_UNUSED offs_t offset, ATTR_UNUSED UINT16 data, ATTR_UNUSED UINT16 mem_mask, int GFX );
|
||||
inline void vram_8x8_w( address_space &space, ATTR_UNUSED offs_t offset, ATTR_UNUSED UINT16 data, ATTR_UNUSED UINT16 mem_mask, int GFX );
|
||||
inline void vctrl_w( address_space &space, offs_t offset, UINT16 data, UINT16 mem_mask, int GFX );
|
||||
void set_pens(int chip);
|
||||
void cave_vh_start( int num );
|
||||
void get_sprite_info_cave(int chip);
|
||||
@ -265,4 +267,6 @@ private:
|
||||
void sprite_draw_cave_zbuf( int chip, int priority );
|
||||
void sprite_draw_donpachi( int chip, int priority );
|
||||
void sprite_draw_donpachi_zbuf( int chip, int priority );
|
||||
void init_cave();
|
||||
void show_leds();
|
||||
};
|
||||
|
@ -8,14 +8,18 @@ class coolpool_state : public driver_device
|
||||
public:
|
||||
coolpool_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_tlc34076(*this, "tlc34076"),
|
||||
m_vram_base(*this, "vram_base"),
|
||||
m_nvram(*this, "nvram"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_dsp(*this, "dsp"),
|
||||
m_dac(*this, "dac"){ }
|
||||
m_dac(*this, "dac"),
|
||||
m_tlc34076(*this, "tlc34076"),
|
||||
m_vram_base(*this, "vram_base"),
|
||||
m_nvram(*this, "nvram") { }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_dsp;
|
||||
required_device<dac_device> m_dac;
|
||||
optional_device<tlc34076_device> m_tlc34076;
|
||||
|
||||
required_shared_ptr<UINT16> m_vram_base;
|
||||
required_shared_ptr<UINT16> m_nvram;
|
||||
|
||||
@ -33,9 +37,7 @@ public:
|
||||
|
||||
UINT16 m_result;
|
||||
UINT16 m_lastresult;
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_dsp;
|
||||
|
||||
UINT16 m_nvram_write_seq[NVRAM_UNLOCK_SEQ_LEN];
|
||||
UINT8 m_nvram_write_enable;
|
||||
UINT8 m_old_cmd;
|
||||
@ -73,5 +75,5 @@ public:
|
||||
TIMER_CALLBACK_MEMBER(deferred_iop_w);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(nvram_write_timeout);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(amerdart_audio_int_gen);
|
||||
required_device<dac_device> m_dac;
|
||||
void register_state_save();
|
||||
};
|
||||
|
@ -18,9 +18,9 @@ public:
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_videoram(*this, "videoram"),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_samples(*this, "samples"),
|
||||
m_dac(*this, "dac"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_screen(*this, "screen"),
|
||||
m_palette(*this, "palette") { }
|
||||
@ -30,7 +30,8 @@ public:
|
||||
optional_shared_ptr<UINT8> m_spriteram;
|
||||
|
||||
/* video-related */
|
||||
pen_t (*m_map_color)(running_machine &machine, UINT8 x, UINT8 y);
|
||||
typedef pen_t (cosmic_state::*color_func)(UINT8 x, UINT8 y);
|
||||
color_func m_map_color;
|
||||
int m_color_registers[3];
|
||||
int m_background_enable;
|
||||
int m_magspot_pen_mask;
|
||||
@ -47,8 +48,13 @@ public:
|
||||
DECLARE_READ8_MEMBER( interrupt_level );
|
||||
|
||||
/* devices */
|
||||
required_device<cpu_device> m_maincpu;
|
||||
optional_device<samples_device> m_samples;
|
||||
required_device<dac_device> m_dac;
|
||||
optional_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
DECLARE_WRITE8_MEMBER(panic_sound_output_w);
|
||||
DECLARE_WRITE8_MEMBER(panic_sound_output2_w);
|
||||
DECLARE_WRITE8_MEMBER(cosmicg_output_w);
|
||||
@ -85,13 +91,13 @@ public:
|
||||
UINT32 screen_update_devzone(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
UINT32 screen_update_nomnlnd(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(panic_scanline);
|
||||
void draw_bitmap( bitmap_ind16 &bitmap, const rectangle &cliprect );
|
||||
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int color_mask, int extra_sprites );
|
||||
void cosmica_draw_starfield( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect );
|
||||
void devzone_draw_grid( bitmap_ind16 &bitmap, const rectangle &cliprect );
|
||||
void nomnlnd_draw_background( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect );
|
||||
required_device<cpu_device> m_maincpu;
|
||||
optional_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
void draw_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int color_mask, int extra_sprites);
|
||||
void cosmica_draw_starfield(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void devzone_draw_grid(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void nomnlnd_draw_background(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
pen_t panic_map_color(UINT8 x, UINT8 y);
|
||||
pen_t cosmica_map_color(UINT8 x, UINT8 y);
|
||||
pen_t cosmicg_map_color(UINT8 x, UINT8 y);
|
||||
pen_t magspot_map_color(UINT8 x, UINT8 y);
|
||||
};
|
||||
|
@ -258,7 +258,7 @@ public:
|
||||
virtual void video_start();
|
||||
DECLARE_PALETTE_INIT(galaxian);
|
||||
DECLARE_PALETTE_INIT(moonwar);
|
||||
void tenspot_set_game_bank(running_machine& machine, int bank, int from_game);
|
||||
void tenspot_set_game_bank(int bank, int from_game);
|
||||
UINT32 screen_update_galaxian(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(interrupt_gen);
|
||||
INTERRUPT_GEN_MEMBER(fakechange_interrupt_gen);
|
||||
|
@ -83,6 +83,7 @@ private:
|
||||
|
||||
void log_fifo_command(const UINT32 *data, int numwords, const char *suffix);
|
||||
void log_waveram(UINT32 length_and_base);
|
||||
void update_gun_irq();
|
||||
};
|
||||
|
||||
|
||||
|
@ -267,6 +267,8 @@ public:
|
||||
void update_bitmap(screen_device &screen, struct layer_info *layer, const rectangle &cliprect);
|
||||
void update_background(struct layer_info *layer, const rectangle &cliprect);
|
||||
DECLARE_WRITE_LINE_MEMBER(ym3438_irq_handler);
|
||||
void signal_sound_irq(int which);
|
||||
void clear_sound_irq(int which);
|
||||
};
|
||||
|
||||
/*----------- defined in machine/segas32.c -----------*/
|
||||
|
@ -16,50 +16,46 @@ WRITE8_MEMBER(cosmic_state::cosmic_color_register_w)
|
||||
}
|
||||
|
||||
|
||||
static pen_t panic_map_color( running_machine &machine, UINT8 x, UINT8 y )
|
||||
pen_t cosmic_state::panic_map_color( UINT8 x, UINT8 y )
|
||||
{
|
||||
cosmic_state *state = machine.driver_data<cosmic_state>();
|
||||
offs_t offs = (state->m_color_registers[0] << 9) | (state->m_color_registers[2] << 10) | ((x >> 4) << 5) | (y >> 3);
|
||||
pen_t pen = state->memregion("user1")->base()[offs];
|
||||
offs_t offs = (m_color_registers[0] << 9) | (m_color_registers[2] << 10) | ((x >> 4) << 5) | (y >> 3);
|
||||
pen_t pen = memregion("user1")->base()[offs];
|
||||
|
||||
if (state->m_color_registers[1])
|
||||
if (m_color_registers[1])
|
||||
pen >>= 4;
|
||||
|
||||
return pen & 0x0f;
|
||||
}
|
||||
|
||||
static pen_t cosmica_map_color( running_machine &machine, UINT8 x, UINT8 y )
|
||||
pen_t cosmic_state::cosmica_map_color( UINT8 x, UINT8 y )
|
||||
{
|
||||
cosmic_state *state = machine.driver_data<cosmic_state>();
|
||||
offs_t offs = (state->m_color_registers[0] << 9) | ((x >> 4) << 5) | (y >> 3);
|
||||
pen_t pen = state->memregion("user1")->base()[offs];
|
||||
offs_t offs = (m_color_registers[0] << 9) | ((x >> 4) << 5) | (y >> 3);
|
||||
pen_t pen = memregion("user1")->base()[offs];
|
||||
|
||||
if (state->m_color_registers[1]) // 0 according to the schematics, but that breaks alien formation colors
|
||||
if (m_color_registers[1]) // 0 according to the schematics, but that breaks alien formation colors
|
||||
pen >>= 4;
|
||||
|
||||
return pen & 0x07;
|
||||
}
|
||||
|
||||
static pen_t cosmicg_map_color( running_machine &machine, UINT8 x, UINT8 y )
|
||||
pen_t cosmic_state::cosmicg_map_color( UINT8 x, UINT8 y )
|
||||
{
|
||||
cosmic_state *state = machine.driver_data<cosmic_state>();
|
||||
offs_t offs = (state->m_color_registers[0] << 8) | (state->m_color_registers[1] << 9) | ((y >> 4) << 4) | (x >> 4);
|
||||
pen_t pen = state->memregion("user1")->base()[offs];
|
||||
offs_t offs = (m_color_registers[0] << 8) | (m_color_registers[1] << 9) | ((y >> 4) << 4) | (x >> 4);
|
||||
pen_t pen = memregion("user1")->base()[offs];
|
||||
|
||||
/* the upper 4 bits are for cocktail mode support */
|
||||
return pen & 0x0f;
|
||||
}
|
||||
|
||||
static pen_t magspot_map_color( running_machine &machine, UINT8 x, UINT8 y )
|
||||
pen_t cosmic_state::magspot_map_color( UINT8 x, UINT8 y )
|
||||
{
|
||||
cosmic_state *state = machine.driver_data<cosmic_state>();
|
||||
offs_t offs = (state->m_color_registers[0] << 9) | ((x >> 3) << 4) | (y >> 4);
|
||||
pen_t pen = state->memregion("user1")->base()[offs];
|
||||
offs_t offs = (m_color_registers[0] << 9) | ((x >> 3) << 4) | (y >> 4);
|
||||
pen_t pen = memregion("user1")->base()[offs];
|
||||
|
||||
if (state->m_color_registers[1])
|
||||
if (m_color_registers[1])
|
||||
pen >>= 4;
|
||||
|
||||
return pen & state->m_magspot_pen_mask;
|
||||
return pen & m_magspot_pen_mask;
|
||||
}
|
||||
|
||||
|
||||
@ -101,7 +97,7 @@ PALETTE_INIT_MEMBER(cosmic_state,panic)
|
||||
palette.set_pen_indirect(i, ctabentry);
|
||||
}
|
||||
|
||||
m_map_color = panic_map_color;
|
||||
m_map_color = &cosmic_state::panic_map_color;
|
||||
}
|
||||
|
||||
|
||||
@ -141,7 +137,7 @@ PALETTE_INIT_MEMBER(cosmic_state,cosmica)
|
||||
palette.set_pen_indirect(i + 0x20, ctabentry);
|
||||
}
|
||||
|
||||
m_map_color = cosmica_map_color;
|
||||
m_map_color = &cosmic_state::cosmica_map_color;
|
||||
}
|
||||
|
||||
|
||||
@ -167,7 +163,7 @@ PALETTE_INIT_MEMBER(cosmic_state,cosmicg)
|
||||
palette.set_pen_color(i, rgb_t(r, g, b));
|
||||
}
|
||||
|
||||
m_map_color = cosmicg_map_color;
|
||||
m_map_color = &cosmic_state::cosmicg_map_color;
|
||||
}
|
||||
|
||||
|
||||
@ -197,7 +193,7 @@ PALETTE_INIT_MEMBER(cosmic_state,magspot)
|
||||
palette.set_pen_indirect(i, ctabentry);
|
||||
}
|
||||
|
||||
m_map_color = magspot_map_color;
|
||||
m_map_color = &cosmic_state::magspot_map_color;
|
||||
m_magspot_pen_mask = 0x0f;
|
||||
}
|
||||
|
||||
@ -225,7 +221,7 @@ PALETTE_INIT_MEMBER(cosmic_state,nomnlnd)
|
||||
palette.set_pen_indirect(i, ctabentry);
|
||||
}
|
||||
|
||||
m_map_color = magspot_map_color;
|
||||
m_map_color = &cosmic_state::magspot_map_color;
|
||||
m_magspot_pen_mask = 0x07;
|
||||
}
|
||||
|
||||
@ -248,7 +244,7 @@ void cosmic_state::draw_bitmap( bitmap_ind16 &bitmap, const rectangle &cliprect
|
||||
UINT8 x = offs << 3;
|
||||
UINT8 y = offs >> 5;
|
||||
|
||||
pen_t pen = m_map_color(machine(), x, y);
|
||||
pen_t pen = (this->*m_map_color)(x, y);
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user