From: Atari Ace [mailto:atari_ace@verizon.net]

Subject: [patch] More reset/multisession cleanup

Hi mamedev,

This patch eliminates more cases of .data objects, in an effort to
make more drivers multisession/reset safe.  The changes should not
change the first time run behavior at all, except perhaps the ygv608.c
change, which had a suspicious use of a static rectangle.

~aa
This commit is contained in:
Aaron Giles 2008-08-20 01:25:28 +00:00
parent 384422ee09
commit cf07a5a784
26 changed files with 338 additions and 231 deletions

View File

@ -231,6 +231,10 @@ VIDEO_START( cadash );
VIDEO_UPDATE( asuka ); VIDEO_UPDATE( asuka );
VIDEO_UPDATE( bonzeadv ); VIDEO_UPDATE( bonzeadv );
static int adpcm_pos;
static int adpcm_data;
/*********************************************************** /***********************************************************
INTERRUPTS INTERRUPTS
***********************************************************/ ***********************************************************/
@ -258,12 +262,8 @@ static WRITE8_HANDLER( sound_bankswitch_w )
static int adpcm_pos;
static void asuka_msm5205_vck(running_machine *machine, int chip) static void asuka_msm5205_vck(running_machine *machine, int chip)
{ {
static int adpcm_data = -1;
if (adpcm_data != -1) if (adpcm_data != -1)
{ {
msm5205_data_w(0, adpcm_data & 0x0f); msm5205_data_w(0, adpcm_data & 0x0f);
@ -304,6 +304,11 @@ static MACHINE_START( asuka )
state_save_register_global(adpcm_pos); state_save_register_global(adpcm_pos);
} }
static MACHINE_RESET( asuka )
{
adpcm_pos = 0;
adpcm_data = -1;
}
/*********************************************************** /***********************************************************
@ -803,6 +808,7 @@ static MACHINE_DRIVER_START( bonzeadv )
MDRV_PALETTE_LENGTH(4096) MDRV_PALETTE_LENGTH(4096)
MDRV_MACHINE_START(asuka) MDRV_MACHINE_START(asuka)
MDRV_MACHINE_RESET(asuka)
MDRV_VIDEO_START(asuka) MDRV_VIDEO_START(asuka)
MDRV_VIDEO_EOF(asuka) MDRV_VIDEO_EOF(asuka)
@ -841,6 +847,7 @@ static MACHINE_DRIVER_START( asuka )
MDRV_PALETTE_LENGTH(4096) MDRV_PALETTE_LENGTH(4096)
MDRV_MACHINE_START(asuka) MDRV_MACHINE_START(asuka)
MDRV_MACHINE_RESET(asuka)
MDRV_VIDEO_START(asuka) MDRV_VIDEO_START(asuka)
MDRV_VIDEO_EOF(asuka) MDRV_VIDEO_EOF(asuka)
@ -882,6 +889,7 @@ static MACHINE_DRIVER_START( cadash )
MDRV_PALETTE_LENGTH(4096) MDRV_PALETTE_LENGTH(4096)
MDRV_MACHINE_START(asuka) MDRV_MACHINE_START(asuka)
MDRV_MACHINE_RESET(asuka)
MDRV_VIDEO_START(cadash) MDRV_VIDEO_START(cadash)
MDRV_VIDEO_EOF(asuka) MDRV_VIDEO_EOF(asuka)
@ -919,6 +927,7 @@ static MACHINE_DRIVER_START( mofflott )
MDRV_PALETTE_LENGTH(4096) /* only Mofflott uses full palette space */ MDRV_PALETTE_LENGTH(4096) /* only Mofflott uses full palette space */
MDRV_MACHINE_START(asuka) MDRV_MACHINE_START(asuka)
MDRV_MACHINE_RESET(asuka)
MDRV_VIDEO_START(galmedes) MDRV_VIDEO_START(galmedes)
MDRV_VIDEO_EOF(asuka) MDRV_VIDEO_EOF(asuka)
@ -960,6 +969,7 @@ static MACHINE_DRIVER_START( galmedes )
MDRV_PALETTE_LENGTH(4096) /* only Mofflott uses full palette space */ MDRV_PALETTE_LENGTH(4096) /* only Mofflott uses full palette space */
MDRV_MACHINE_START(asuka) MDRV_MACHINE_START(asuka)
MDRV_MACHINE_RESET(asuka)
MDRV_VIDEO_START(galmedes) MDRV_VIDEO_START(galmedes)
MDRV_VIDEO_EOF(asuka) MDRV_VIDEO_EOF(asuka)
@ -997,6 +1007,7 @@ static MACHINE_DRIVER_START( eto )
MDRV_PALETTE_LENGTH(4096) MDRV_PALETTE_LENGTH(4096)
MDRV_MACHINE_START(asuka) MDRV_MACHINE_START(asuka)
MDRV_MACHINE_RESET(asuka)
MDRV_VIDEO_START(galmedes) MDRV_VIDEO_START(galmedes)
MDRV_VIDEO_EOF(asuka) MDRV_VIDEO_EOF(asuka)

View File

@ -19,22 +19,7 @@ DIP Locations verified for:
#include "cpu/m6805/m6805.h" #include "cpu/m6805/m6805.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
#include "sound/dac.h" #include "sound/dac.h"
#include "includes/buggychl.h"
/* bking3 mcu communication */
extern MACHINE_RESET( buggychl );
extern READ8_HANDLER( buggychl_68705_portA_r );
extern WRITE8_HANDLER( buggychl_68705_portA_w );
extern WRITE8_HANDLER( buggychl_68705_ddrA_w );
extern READ8_HANDLER( buggychl_68705_portB_r );
extern WRITE8_HANDLER( buggychl_68705_portB_w );
extern WRITE8_HANDLER( buggychl_68705_ddrB_w );
extern READ8_HANDLER( buggychl_68705_portC_r );
extern WRITE8_HANDLER( buggychl_68705_portC_w );
extern WRITE8_HANDLER( buggychl_68705_ddrC_w );
extern WRITE8_HANDLER( buggychl_mcu_w );
extern READ8_HANDLER( buggychl_mcu_r );
extern READ8_HANDLER( buggychl_mcu_status_r );
extern PALETTE_INIT( bking ); extern PALETTE_INIT( bking );
@ -62,7 +47,7 @@ extern READ8_HANDLER( bking_pos_r );
UINT8 *bking_playfield_ram; UINT8 *bking_playfield_ram;
static int bking3_addr_h, bking3_addr_l; static int bking3_addr_h, bking3_addr_l;
static int sndnmi_enable = 1; static int sndnmi_enable;
static READ8_HANDLER( bking_sndnmi_disable_r ) static READ8_HANDLER( bking_sndnmi_disable_r )
{ {
@ -789,6 +774,11 @@ ROM_START( bking3 )
ROM_LOAD( "a24-21.25", 0x0000, 0x1000, CRC(3106fcac) SHA1(08454adfb58e5df84140d86ed52fa4ef684df9f1) ) /* extra rom on the same SUB PCB where is the mcu */ ROM_LOAD( "a24-21.25", 0x0000, 0x1000, CRC(3106fcac) SHA1(08454adfb58e5df84140d86ed52fa4ef684df9f1) ) /* extra rom on the same SUB PCB where is the mcu */
ROM_END ROM_END
GAME( 1982, bking, 0, bking, bking, 0, ROT270, "Taito Corporation", "Birdie King", 0 ) static DRIVER_INIT( bking )
GAME( 1983, bking2, 0, bking, bking2, 0, ROT90, "Taito Corporation", "Birdie King 2", 0 ) {
GAME( 1984, bking3, 0, bking3, bking2, 0, ROT90, "Taito Corporation", "Birdie King 3", 0 ) sndnmi_enable = 1;
}
GAME( 1982, bking, 0, bking, bking, bking, ROT270, "Taito Corporation", "Birdie King", 0 )
GAME( 1983, bking2, 0, bking, bking2, bking, ROT90, "Taito Corporation", "Birdie King 2", 0 )
GAME( 1984, bking3, 0, bking3, bking2, bking, ROT90, "Taito Corporation", "Birdie King 3", 0 )

View File

@ -393,7 +393,7 @@ static INTERRUPT_GEN(adpcm_int)
} }
} }
static msm5205_interface msm_interface = static const msm5205_interface msm_interface =
{ {
adpcm_int, /* interrupt function */ adpcm_int, /* interrupt function */
MSM5205_S96_4B /* 1 / 96 = 3906.25Hz playback - guess */ MSM5205_S96_4B /* 1 / 96 = 3906.25Hz playback - guess */

View File

@ -97,14 +97,13 @@ extern UINT8 technos_video_hw;
/* end of extern code & data */ /* end of extern code & data */
static emu_timer *scanline_timer; static emu_timer *scanline_timer;
static MACHINE_START( ddragon );
static WRITE8_HANDLER( ddragon_bankswitch_w );
/* private globals */ /* private globals */
static UINT8 dd_sub_cpu_busy; static UINT8 dd_sub_cpu_busy;
static UINT8 sprite_irq, sound_irq, ym_irq, snd_cpu; static UINT8 sprite_irq, sound_irq, ym_irq, snd_cpu;
static UINT32 adpcm_pos[2], adpcm_end[2]; static UINT32 adpcm_pos[2], adpcm_end[2];
static UINT8 adpcm_idle[2]; static UINT8 adpcm_idle[2];
static int adpcm_data[2];
static UINT8 *darktowr_mcu_ports; static UINT8 *darktowr_mcu_ports;
static UINT8 *rambase; static UINT8 *rambase;
/* end of private globals */ /* end of private globals */
@ -196,7 +195,10 @@ static MACHINE_START( ddragon )
static MACHINE_RESET( ddragon ) static MACHINE_RESET( ddragon )
{ {
dd_sub_cpu_busy = 1; dd_sub_cpu_busy = 1;
adpcm_pos[0] = adpcm_pos[1] = 0;
adpcm_end[0] = adpcm_end[1] = 0;
adpcm_idle[0] = adpcm_idle[1] = 1; adpcm_idle[0] = adpcm_idle[1] = 1;
adpcm_data[0] = adpcm_data[1] = -1;
timer_adjust_oneshot(scanline_timer, video_screen_get_time_until_pos(machine->primary_screen, 0, 0), 0); timer_adjust_oneshot(scanline_timer, video_screen_get_time_until_pos(machine->primary_screen, 0, 0), 0);
} }
@ -463,8 +465,6 @@ static WRITE8_HANDLER( dd_adpcm_w )
static void dd_adpcm_int(running_machine *machine, int chip) static void dd_adpcm_int(running_machine *machine, int chip)
{ {
static int adpcm_data[2] = { -1, -1 };
if (adpcm_pos[chip] >= adpcm_end[chip] || adpcm_pos[chip] >= 0x10000) if (adpcm_pos[chip] >= adpcm_end[chip] || adpcm_pos[chip] >= 0x10000)
{ {
adpcm_idle[chip] = 1; adpcm_idle[chip] = 1;

View File

@ -49,6 +49,7 @@ static UINT8* discoboy_ram_att;
static UINT8 discoboy_ram_bank; static UINT8 discoboy_ram_bank;
static UINT8 port_00; static UINT8 port_00;
static UINT8 discoboy_gfxbank; static UINT8 discoboy_gfxbank;
static int adpcm_data;
static VIDEO_START( discoboy ) static VIDEO_START( discoboy )
{ {
@ -330,8 +331,6 @@ ADDRESS_MAP_END
/* Sound */ /* Sound */
static int adpcm_data = 0x80;
//static WRITE8_HANDLER( splash_adpcm_data_w ){ //static WRITE8_HANDLER( splash_adpcm_data_w ){
// adpcm_data = data; // adpcm_data = data;
//} //}
@ -460,7 +459,6 @@ static const gfx_layout tiles8x8_layout2 =
static GFXDECODE_START( discoboy ) static GFXDECODE_START( discoboy )
GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0x000, 128 ) GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0x000, 128 )
GFXDECODE_ENTRY( "gfx2", 0, tiles8x8_layout2, 0x000, 128 ) GFXDECODE_ENTRY( "gfx2", 0, tiles8x8_layout2, 0x000, 128 )
GFXDECODE_END GFXDECODE_END
@ -471,6 +469,13 @@ static const msm5205_interface discoboy_msm5205_interface =
MSM5205_S48_4B /* ??? unknown hz */ MSM5205_S48_4B /* ??? unknown hz */
}; };
static MACHINE_RESET( discoboy )
{
discoboy_ram_bank = 0;
port_00 = 0;
discoboy_gfxbank = 0;
adpcm_data = 0x80;
}
static MACHINE_DRIVER_START( discoboy ) static MACHINE_DRIVER_START( discoboy )
/* basic machine hardware */ /* basic machine hardware */
@ -499,6 +504,8 @@ static MACHINE_DRIVER_START( discoboy )
MDRV_VIDEO_START(discoboy) MDRV_VIDEO_START(discoboy)
MDRV_VIDEO_UPDATE(discoboy) MDRV_VIDEO_UPDATE(discoboy)
MDRV_MACHINE_RESET( discoboy )
/* sound hardware */ /* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono") MDRV_SPEAKER_STANDARD_MONO("mono")

View File

@ -159,14 +159,16 @@ Dip locations verified with manual for docastle, dorunrun and dowild.
#include "includes/docastle.h" #include "includes/docastle.h"
static int adpcm_pos, adpcm_idle;
static int adpcm_data;
static int adpcm_status;
/* Read/Write Handlers */ /* Read/Write Handlers */
static int adpcm_pos, adpcm_idle;
static void idsoccer_adpcm_int(running_machine *machine, int chip) static void idsoccer_adpcm_int(running_machine *machine, int chip)
{ {
static int adpcm_data = -1;
if (adpcm_pos >= memory_region_length(machine, "adpcm")) if (adpcm_pos >= memory_region_length(machine, "adpcm"))
{ {
adpcm_idle = 1; adpcm_idle = 1;
@ -187,9 +189,8 @@ static void idsoccer_adpcm_int(running_machine *machine, int chip)
static READ8_HANDLER( idsoccer_adpcm_status_r ) static READ8_HANDLER( idsoccer_adpcm_status_r )
{ {
// this is wrong, but the samples work anyway!! // this is wrong, but the samples work anyway!!
static int i; adpcm_status ^= 0x80;
i ^= 0x80; return adpcm_status;
return i;
} }
static WRITE8_HANDLER( idsoccer_adpcm_w ) static WRITE8_HANDLER( idsoccer_adpcm_w )
@ -571,6 +572,14 @@ static const msm5205_interface msm5205_config =
/* Machine Drivers */ /* Machine Drivers */
static MACHINE_RESET( docastle )
{
adpcm_pos = adpcm_idle = 0;
adpcm_data = -1;
adpcm_status = 0;
}
static MACHINE_DRIVER_START( docastle ) static MACHINE_DRIVER_START( docastle )
// basic machine hardware // basic machine hardware
// MDRV_CPU_ADD("main", Z80, 4000000) // 4 MHz // MDRV_CPU_ADD("main", Z80, 4000000) // 4 MHz
@ -603,6 +612,8 @@ static MACHINE_DRIVER_START( docastle )
MDRV_VIDEO_START(docastle) MDRV_VIDEO_START(docastle)
MDRV_VIDEO_UPDATE(docastle) MDRV_VIDEO_UPDATE(docastle)
MDRV_MACHINE_RESET( docastle )
// sound hardware // sound hardware
MDRV_SPEAKER_STANDARD_MONO("mono") MDRV_SPEAKER_STANDARD_MONO("mono")

View File

@ -17,6 +17,9 @@ static bitmap_t *ml_bitmap[8];
#define ML_CHARS 0x2000 #define ML_CHARS 0x2000
static UINT8 dirtychar[ML_CHARS]; static UINT8 dirtychar[ML_CHARS];
static int status_bit; static int status_bit;
static int adpcm_pos;
static int adpcm_data;
static const gfx_layout tiles8x8_layout = static const gfx_layout tiles8x8_layout =
@ -87,12 +90,8 @@ static WRITE8_HANDLER( sound_bankswitch_w )
memory_set_bankptr( 1, memory_region(machine, "z80") + ((data) & 0x03) * 0x4000 + 0x10000 ); memory_set_bankptr( 1, memory_region(machine, "z80") + ((data) & 0x03) * 0x4000 + 0x10000 );
} }
static int adpcm_pos;
static void ml_msm5205_vck(running_machine *machine, int chip) static void ml_msm5205_vck(running_machine *machine, int chip)
{ {
static int adpcm_data = -1;
if (adpcm_data != -1) if (adpcm_data != -1)
{ {
msm5205_data_w(0, adpcm_data & 0x0f); msm5205_data_w(0, adpcm_data & 0x0f);
@ -352,6 +351,12 @@ static const ym2151_interface ym2151_config =
sound_bankswitch_w sound_bankswitch_w
}; };
static MACHINE_RESET( mlanding )
{
status_bit = 0;
adpcm_pos = 0;
adpcm_data = -1;
}
static MACHINE_DRIVER_START( mlanding ) static MACHINE_DRIVER_START( mlanding )
@ -385,6 +390,8 @@ static MACHINE_DRIVER_START( mlanding )
MDRV_VIDEO_START(mlanding) MDRV_VIDEO_START(mlanding)
MDRV_VIDEO_UPDATE(mlanding) MDRV_VIDEO_UPDATE(mlanding)
MDRV_MACHINE_RESET(mlanding)
/* sound hardware */ /* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono") MDRV_SPEAKER_STANDARD_MONO("mono")

View File

@ -131,17 +131,6 @@ GFXDECODE_END
/* Machine Initialization */ /* Machine Initialization */
static TIMER_CALLBACK( nitedrvr_crash_toggle_callback )
{
nitedrvr_crash_toggle(machine);
}
static MACHINE_RESET( nitedrvr )
{
timer_pulse(PERIOD_OF_555_ASTABLE(RES_K(180), 330, CAP_U(1)), NULL, 0, nitedrvr_crash_toggle_callback);
nitedrvr_register_machine_vars();
}
/* Machine Driver */ /* Machine Driver */
static MACHINE_DRIVER_START( nitedrvr ) static MACHINE_DRIVER_START( nitedrvr )
@ -151,6 +140,7 @@ static MACHINE_DRIVER_START( nitedrvr )
MDRV_CPU_VBLANK_INT("main", irq0_line_hold) MDRV_CPU_VBLANK_INT("main", irq0_line_hold)
MDRV_WATCHDOG_VBLANK_INIT(3) MDRV_WATCHDOG_VBLANK_INIT(3)
MDRV_MACHINE_START(nitedrvr)
MDRV_MACHINE_RESET(nitedrvr) MDRV_MACHINE_RESET(nitedrvr)
// video hardware // video hardware

View File

@ -119,6 +119,9 @@ int opwolf_region;
static UINT8 *cchip_ram; static UINT8 *cchip_ram;
static UINT8 adpcm_b[0x08]; static UINT8 adpcm_b[0x08];
static UINT8 adpcm_c[0x08]; static UINT8 adpcm_c[0x08];
static UINT32 adpcm_pos[2],adpcm_end[2];
static int adpcm_data[2];
static int opwolf_gun_xoffs, opwolf_gun_yoffs; static int opwolf_gun_xoffs, opwolf_gun_yoffs;
WRITE16_HANDLER( rainbow_spritectrl_w ); WRITE16_HANDLER( rainbow_spritectrl_w );
@ -291,8 +294,6 @@ static ADDRESS_MAP_START( z80_readmem, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END ADDRESS_MAP_END
static UINT32 adpcm_pos[2],adpcm_end[2];
//static UINT8 adpcm_d[0x08]; //static UINT8 adpcm_d[0x08];
//0 - start ROM offset LSB //0 - start ROM offset LSB
//1 - start ROM offset MSB //1 - start ROM offset MSB
@ -313,14 +314,18 @@ static MACHINE_START( opwolf )
static MACHINE_RESET( opwolf ) static MACHINE_RESET( opwolf )
{ {
adpcm_b[0] = adpcm_b[1] = 0;
adpcm_c[0] = adpcm_c[1] = 0;
adpcm_pos[0] = adpcm_pos[1] = 0;
adpcm_end[0] = adpcm_end[1] = 0;
adpcm_data[0] = adpcm_data[1] = -1;
msm5205_reset_w(0, 1); msm5205_reset_w(0, 1);
msm5205_reset_w(1, 1); msm5205_reset_w(1, 1);
} }
static void opwolf_msm5205_vck(running_machine *machine, int chip) static void opwolf_msm5205_vck(running_machine *machine, int chip)
{ {
static int adpcm_data[2] = { -1, -1 };
if (adpcm_data[chip] != -1) if (adpcm_data[chip] != -1)
{ {
msm5205_data_w(chip, adpcm_data[chip] & 0x0f); msm5205_data_w(chip, adpcm_data[chip] & 0x0f);

View File

@ -170,6 +170,10 @@ VIDEO_START( rastan );
VIDEO_UPDATE( rastan ); VIDEO_UPDATE( rastan );
static int adpcm_pos;
static int adpcm_data;
static WRITE8_HANDLER( rastan_bankswitch_w ) static WRITE8_HANDLER( rastan_bankswitch_w )
{ {
int offs; int offs;
@ -182,12 +186,8 @@ static WRITE8_HANDLER( rastan_bankswitch_w )
} }
static int adpcm_pos;
static void rastan_msm5205_vck(running_machine *machine, int chip) static void rastan_msm5205_vck(running_machine *machine, int chip)
{ {
static int adpcm_data = -1;
if (adpcm_data != -1) if (adpcm_data != -1)
{ {
msm5205_data_w(0, adpcm_data & 0x0f); msm5205_data_w(0, adpcm_data & 0x0f);
@ -373,6 +373,11 @@ static const msm5205_interface msm5205_config =
MSM5205_S48_4B /* 8 kHz */ MSM5205_S48_4B /* 8 kHz */
}; };
static MACHINE_RESET( rastan )
{
adpcm_pos = 0;
adpcm_data = -1;
}
static MACHINE_DRIVER_START( rastan ) static MACHINE_DRIVER_START( rastan )
@ -401,6 +406,8 @@ static MACHINE_DRIVER_START( rastan )
MDRV_VIDEO_START(rastan) MDRV_VIDEO_START(rastan)
MDRV_VIDEO_UPDATE(rastan) MDRV_VIDEO_UPDATE(rastan)
MDRV_MACHINE_RESET(rastan)
/* sound hardware */ /* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono") MDRV_SPEAKER_STANDARD_MONO("mono")

View File

@ -41,6 +41,13 @@ WRITE8_HANDLER( spdodgeb_videoram_w );
/* private globals */ /* private globals */
static int toggle=0;//, soundcode = 0; static int toggle=0;//, soundcode = 0;
static int adpcm_pos[2],adpcm_end[2],adpcm_idle[2]; static int adpcm_pos[2],adpcm_end[2],adpcm_idle[2];
static int adpcm_data[2];
static int mcu63701_command;
static int inputs[4];
static UINT8 tapc[4] = {0,0,0,0}; // R1, R2, L1, L2
static UINT8 last_port[2] = {0,0};
static UINT8 last_dash[2] = {0,0};
/* end of private globals */ /* end of private globals */
@ -78,8 +85,6 @@ static WRITE8_HANDLER( spd_adpcm_w )
static void spd_adpcm_int(running_machine *machine, int chip) static void spd_adpcm_int(running_machine *machine, int chip)
{ {
static int adpcm_data[2] = { -1, -1 };
if (adpcm_pos[chip] >= adpcm_end[chip] || adpcm_pos[chip] >= 0x10000) if (adpcm_pos[chip] >= adpcm_end[chip] || adpcm_pos[chip] >= 0x10000)
{ {
adpcm_idle[chip] = 1; adpcm_idle[chip] = 1;
@ -100,9 +105,6 @@ static void spd_adpcm_int(running_machine *machine, int chip)
} }
static int mcu63701_command;
static int inputs[4];
#if 0 // default - more sensitive (state change and timing measured on real board?) #if 0 // default - more sensitive (state change and timing measured on real board?)
static void mcu63705_update_inputs(running_machine *machine) static void mcu63705_update_inputs(running_machine *machine)
{ {
@ -178,9 +180,6 @@ static void mcu63705_update_inputs(running_machine *machine)
#define A 0x10 #define A 0x10
#define D 0x20 #define D 0x20
static UINT8 tapc[4] = {0,0,0,0}; // R1, R2, L1, L2
static UINT8 last_port[2] = {0,0};
static UINT8 last_dash[2] = {0,0};
UINT8 curr_port[2]; UINT8 curr_port[2];
UINT8 curr_dash[2]; UINT8 curr_dash[2];
int p; int p;
@ -429,6 +428,19 @@ static const msm5205_interface msm5205_config =
}; };
static MACHINE_RESET( spdodgeb )
{
toggle = 0;
adpcm_pos[0] = adpcm_pos[1] = 0;
adpcm_end[0] = adpcm_end[0] = 0;
adpcm_idle[0] = adpcm_data[1] = 0;
adpcm_data[0] = adpcm_data[1] = -1;
mcu63701_command = 0;
memset(inputs, 0, sizeof(inputs));
memset(tapc, 0, sizeof(tapc));
last_port[0] = last_port[1] = 0;
last_dash[0] = last_dash[1] = 0;
}
static MACHINE_DRIVER_START( spdodgeb ) static MACHINE_DRIVER_START( spdodgeb )
@ -455,6 +467,8 @@ static MACHINE_DRIVER_START( spdodgeb )
MDRV_VIDEO_START(spdodgeb) MDRV_VIDEO_START(spdodgeb)
MDRV_VIDEO_UPDATE(spdodgeb) MDRV_VIDEO_UPDATE(spdodgeb)
MDRV_MACHINE_RESET( spdodgeb )
/* sound hardware */ /* sound hardware */
MDRV_SPEAKER_STANDARD_STEREO("left", "right") MDRV_SPEAKER_STANDARD_STEREO("left", "right")

View File

@ -56,6 +56,8 @@ extern UINT16 *splash_spriteram;
extern UINT16 *splash_pixelram; extern UINT16 *splash_pixelram;
extern UINT16 *roldfrog_bitmap_mode; extern UINT16 *roldfrog_bitmap_mode;
static UINT16 *roldfrog_protdata; static UINT16 *roldfrog_protdata;
static int adpcm_data;
static int ret;
extern int splash_bitmap_type; extern int splash_bitmap_type;
extern int splash_sprite_attr2_shift; extern int splash_sprite_attr2_shift;
@ -137,8 +139,6 @@ static ADDRESS_MAP_START( splash_readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM) /* RAM */ AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM) /* RAM */
ADDRESS_MAP_END ADDRESS_MAP_END
static int adpcm_data;
static WRITE8_HANDLER( splash_adpcm_data_w ){ static WRITE8_HANDLER( splash_adpcm_data_w ){
adpcm_data = data; adpcm_data = data;
} }
@ -165,7 +165,6 @@ ADDRESS_MAP_END
static READ16_HANDLER( roldfrog_bombs_r ) static READ16_HANDLER( roldfrog_bombs_r )
{ {
static int ret = 0x100;
ret ^= 0x100; ret ^= 0x100;
return ret; return ret;
} }
@ -429,6 +428,11 @@ static const msm5205_interface splash_msm5205_interface =
MSM5205_S48_4B /* 8KHz */ MSM5205_S48_4B /* 8KHz */
}; };
static MACHINE_RESET( splash )
{
adpcm_data = 0;
ret = 0x100;
}
static MACHINE_DRIVER_START( splash ) static MACHINE_DRIVER_START( splash )
@ -455,6 +459,8 @@ static MACHINE_DRIVER_START( splash )
MDRV_VIDEO_START(splash) MDRV_VIDEO_START(splash)
MDRV_VIDEO_UPDATE(splash) MDRV_VIDEO_UPDATE(splash)
MDRV_MACHINE_RESET( splash )
/* sound hardware */ /* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono") MDRV_SPEAKER_STANDARD_MONO("mono")
@ -508,6 +514,8 @@ static MACHINE_DRIVER_START( roldfrog )
MDRV_VIDEO_START(splash) MDRV_VIDEO_START(splash)
MDRV_VIDEO_UPDATE(splash) MDRV_VIDEO_UPDATE(splash)
MDRV_MACHINE_RESET( splash )
MDRV_SPEAKER_STANDARD_MONO("mono") MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD("ym", YM2203, 3000000) MDRV_SOUND_ADD("ym", YM2203, 3000000)
@ -544,6 +552,8 @@ static MACHINE_DRIVER_START( funystrp )
MDRV_VIDEO_START(splash) MDRV_VIDEO_START(splash)
MDRV_VIDEO_UPDATE(funystrp) MDRV_VIDEO_UPDATE(funystrp)
MDRV_MACHINE_RESET( splash )
/* sound hardware */ /* sound hardware */
// MDRV_SPEAKER_STANDARD_MONO("mono") // MDRV_SPEAKER_STANDARD_MONO("mono")

View File

@ -119,6 +119,20 @@ static read8_machine_func porte1_r;
static read8_machine_func portf0_r; static read8_machine_func portf0_r;
static read8_machine_func portf1_r; static read8_machine_func portf1_r;
static int adpcm_pos;
static int adpcm_data;
static int trackx,tracky;
static int mux_ctrl = 0;
static int extport;
static int last_irq_level;
static int high = 0;
static int high2 = 0;
static const UINT8 *mcu_reply;
static int mcu_pos = 0, mcu_reply_len = 0;
static int last_data_adr, last_data;
static int cur_bank = 0;
static void palette_notifier(int addr) static void palette_notifier(int addr)
{ {
UINT8 *p = palette_ram + (addr & ~1); UINT8 *p = palette_ram + (addr & ~1);
@ -166,6 +180,19 @@ static void machine_init(running_machine *machine)
decodechar(machine->gfx[2], i, taitol_rambanks); decodechar(machine->gfx[2], i, taitol_rambanks);
decodechar(machine->gfx[2], i+512, taitol_rambanks + 0x4000); decodechar(machine->gfx[2], i+512, taitol_rambanks + 0x4000);
} }
adpcm_pos = 0;
adpcm_data = -1;
trackx = tracky = 0;
mux_ctrl = 0;
extport = 0;
last_irq_level = 0;
high = 0;
high2 = 0;
mcu_pos = mcu_reply_len = 0;
last_data_adr = last_data = 0;
cur_bank = 0;
} }
@ -261,8 +288,6 @@ static MACHINE_RESET( horshoes )
} }
static int last_irq_level;
static IRQ_CALLBACK(irq_callback) static IRQ_CALLBACK(irq_callback)
{ {
return irq_adr_table[last_irq_level]; return irq_adr_table[last_irq_level];
@ -323,7 +348,6 @@ static READ8_HANDLER( irq_enable_r )
static WRITE8_HANDLER( rombankswitch_w ) static WRITE8_HANDLER( rombankswitch_w )
{ {
static int high = 0;
if(cur_rombank != data) if(cur_rombank != data)
{ {
if(data>high) if(data>high)
@ -340,16 +364,14 @@ static WRITE8_HANDLER( rombankswitch_w )
static WRITE8_HANDLER( rombank2switch_w ) static WRITE8_HANDLER( rombank2switch_w )
{ {
static int high = 0;
data &= 0xf; data &= 0xf;
if(cur_rombank2 != data) if(cur_rombank2 != data)
{ {
if(data>high) if(data>high2)
{ {
high = data; high2 = data;
logerror("New rom2 size : %x\n", (high+1)*0x4000); logerror("New rom2 size : %x\n", (high2+1)*0x4000);
} }
// logerror("robs2 %02x (%04x)\n", data, activecpu_get_pc()); // logerror("robs2 %02x (%04x)\n", data, activecpu_get_pc());
@ -449,8 +471,6 @@ static WRITE8_HANDLER( control2_w )
coin_counter_w(1,data & 0x08); coin_counter_w(1,data & 0x08);
} }
static int extport;
static READ8_HANDLER( portA_r ) static READ8_HANDLER( portA_r )
{ {
if (extport == 0) return porte0_r(machine,0); if (extport == 0) return porte0_r(machine,0);
@ -475,10 +495,6 @@ static READ8_HANDLER( ym2203_data1_r )
return ym2203_read_port_0_r(machine,offset); return ym2203_read_port_0_r(machine,offset);
} }
static const UINT8 *mcu_reply;
static int mcu_pos = 0, mcu_reply_len = 0;
static int last_data_adr, last_data;
static const UINT8 puzznic_mcu_reply[] = { 0x50, 0x1f, 0xb6, 0xba, 0x06, 0x03, 0x47, 0x05, 0x00 }; static const UINT8 puzznic_mcu_reply[] = { 0x50, 0x1f, 0xb6, 0xba, 0x06, 0x03, 0x47, 0x05, 0x00 };
static WRITE8_HANDLER( mcu_data_w ) static WRITE8_HANDLER( mcu_data_w )
@ -533,8 +549,6 @@ static WRITE8_HANDLER( shared_w )
shared_ram[offset] = data; shared_ram[offset] = data;
} }
static int mux_ctrl = 0;
static READ8_HANDLER( mux_r ) static READ8_HANDLER( mux_r )
{ {
switch(mux_ctrl) switch(mux_ctrl)
@ -575,12 +589,8 @@ static WRITE8_HANDLER( mux_ctrl_w )
static int adpcm_pos;
static void champwr_msm5205_vck(running_machine *machine, int chip) static void champwr_msm5205_vck(running_machine *machine, int chip)
{ {
static int adpcm_data = -1;
if (adpcm_data != -1) if (adpcm_data != -1)
{ {
msm5205_data_w(0, adpcm_data & 0x0f); msm5205_data_w(0, adpcm_data & 0x0f);
@ -622,8 +632,6 @@ static WRITE8_HANDLER( champwr_msm5205_volume_w )
static int trackx,tracky;
static READ8_HANDLER( horshoes_tracky_reset_r ) static READ8_HANDLER( horshoes_tracky_reset_r )
{ {
/* reset the trackball counter */ /* reset the trackball counter */
@ -2105,8 +2113,6 @@ static void irqhandler(running_machine *machine, int irq)
static WRITE8_HANDLER( portA_w ) static WRITE8_HANDLER( portA_w )
{ {
static int cur_bank = 0;
if (cur_bank != (data & 0x03) ) if (cur_bank != (data & 0x03) )
{ {
int bankaddress; int bankaddress;

View File

@ -171,7 +171,7 @@ TODO:
#include "includes/taitosj.h" #include "includes/taitosj.h"
static UINT8 sndnmi_disable = 1; static UINT8 sndnmi_disable;
static WRITE8_HANDLER( taitosj_sndnmi_msk_w ) static WRITE8_HANDLER( taitosj_sndnmi_msk_w )
{ {
@ -2697,14 +2697,45 @@ ROM_START( kikstart )
ROM_LOAD( "pal16l8.28", 0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */ ROM_LOAD( "pal16l8.28", 0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */
ROM_END ROM_END
static void reset_common(running_machine *machine)
{
sndnmi_disable = 1;
input_port_4_f0 = 0;
/* start in 1st gear */
kikstart_gears[0] = 0x02;
kikstart_gears[1] = 0x02;
dac_out = 0;
dac_vol = 0;
}
static void init_common(running_machine *machine)
{
state_save_register_global(sndnmi_disable);
state_save_register_global(input_port_4_f0);
state_save_register_global_array(kikstart_gears);
state_save_register_global(dac_out);
state_save_register_global(dac_vol);
add_reset_callback(machine, reset_common);
}
static DRIVER_INIT( taitosj )
{
init_common(machine);
}
static DRIVER_INIT( spacecr ) static DRIVER_INIT( spacecr )
{ {
init_common(machine);
/* install protection handler */ /* install protection handler */
memory_install_read8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xd48b, 0xd48b, 0, 0, spacecr_prot_r); memory_install_read8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xd48b, 0xd48b, 0, 0, spacecr_prot_r);
} }
static DRIVER_INIT( alpine ) static DRIVER_INIT( alpine )
{ {
init_common(machine);
/* install protection handlers */ /* install protection handlers */
memory_install_read8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xd40b, 0xd40b, 0, 0, alpine_port_2_r); memory_install_read8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xd40b, 0xd40b, 0, 0, alpine_port_2_r);
memory_install_write8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xd50f, 0xd50f, 0, 0, alpine_protection_w); memory_install_write8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xd50f, 0xd50f, 0, 0, alpine_protection_w);
@ -2712,6 +2743,8 @@ static DRIVER_INIT( alpine )
static DRIVER_INIT( alpinea ) static DRIVER_INIT( alpinea )
{ {
init_common(machine);
/* install protection handlers */ /* install protection handlers */
memory_install_read8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xd40b, 0xd40b, 0, 0, alpine_port_2_r); memory_install_read8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xd40b, 0xd40b, 0, 0, alpine_port_2_r);
memory_install_write8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xd50e, 0xd50e, 0, 0, alpinea_bankswitch_w); memory_install_write8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xd50e, 0xd50e, 0, 0, alpinea_bankswitch_w);
@ -2719,45 +2752,31 @@ static DRIVER_INIT( alpinea )
static DRIVER_INIT( junglhbr ) static DRIVER_INIT( junglhbr )
{ {
init_common(machine);
/* inverter on bits 0 and 1 */ /* inverter on bits 0 and 1 */
memory_install_write8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x9000, 0xbfff, 0, 0, junglhbr_characterram_w); memory_install_write8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x9000, 0xbfff, 0, 0, junglhbr_characterram_w);
} }
static DRIVER_INIT( kikstart ) GAME( 1981, spaceskr, 0, nomcu, spaceskr, taitosj, ROT0, "Taito Corporation", "Space Seeker", GAME_SUPPORTS_SAVE )
{
/* start in 1st gear */
kikstart_gears[0] = 0x02;
kikstart_gears[1] = 0x02;
}
void taitosj_register_main_savestate(void)
{
state_save_register_global(sndnmi_disable);
state_save_register_global(input_port_4_f0);
state_save_register_global_array(kikstart_gears);
state_save_register_global(dac_out);
state_save_register_global(dac_vol);
}
GAME( 1981, spaceskr, 0, nomcu, spaceskr, 0, ROT0, "Taito Corporation", "Space Seeker", GAME_SUPPORTS_SAVE )
GAME( 1981, spacecr, 0, nomcu, spacecr, spacecr, ROT90, "Taito Corporation", "Space Cruiser", GAME_SUPPORTS_SAVE ) GAME( 1981, spacecr, 0, nomcu, spacecr, spacecr, ROT90, "Taito Corporation", "Space Cruiser", GAME_SUPPORTS_SAVE )
GAME( 1982, junglek, 0, nomcu, junglek, 0, ROT180, "Taito Corporation", "Jungle King (Japan)", GAME_SUPPORTS_SAVE ) GAME( 1982, junglek, 0, nomcu, junglek, taitosj, ROT180, "Taito Corporation", "Jungle King (Japan)", GAME_SUPPORTS_SAVE )
GAME( 1982, junglkj2, junglek, nomcu, junglek, 0, ROT180, "Taito Corporation", "Jungle King (Japan, earlier)", GAME_SUPPORTS_SAVE ) GAME( 1982, junglkj2, junglek, nomcu, junglek, taitosj, ROT180, "Taito Corporation", "Jungle King (Japan, earlier)", GAME_SUPPORTS_SAVE )
GAME( 1982, jungleh, junglek, nomcu, junglek, 0, ROT180, "Taito America Corporation", "Jungle Hunt (US)", GAME_SUPPORTS_SAVE ) GAME( 1982, jungleh, junglek, nomcu, junglek, taitosj, ROT180, "Taito America Corporation", "Jungle Hunt (US)", GAME_SUPPORTS_SAVE )
GAME( 1983, junglhbr, junglek, nomcu, junglek, junglhbr,ROT180, "Taito do Brasil", "Jungle Hunt (Brazil)", GAME_SUPPORTS_SAVE ) GAME( 1983, junglhbr, junglek, nomcu, junglek, junglhbr,ROT180, "Taito do Brasil", "Jungle Hunt (Brazil)", GAME_SUPPORTS_SAVE )
GAME( 1982, piratpet, junglek, nomcu, piratpet, 0, ROT180, "Taito America Corporation", "Pirate Pete", GAME_SUPPORTS_SAVE ) GAME( 1982, piratpet, junglek, nomcu, piratpet, taitosj, ROT180, "Taito America Corporation", "Pirate Pete", GAME_SUPPORTS_SAVE )
GAME( 1982, alpine, 0, nomcu, alpine, alpine, ROT270, "Taito Corporation", "Alpine Ski (set 1)", GAME_SUPPORTS_SAVE ) GAME( 1982, alpine, 0, nomcu, alpine, alpine, ROT270, "Taito Corporation", "Alpine Ski (set 1)", GAME_SUPPORTS_SAVE )
GAME( 1982, alpinea, alpine, nomcu, alpinea, alpinea, ROT270, "Taito Corporation", "Alpine Ski (set 2)", GAME_SUPPORTS_SAVE ) GAME( 1982, alpinea, alpine, nomcu, alpinea, alpinea, ROT270, "Taito Corporation", "Alpine Ski (set 2)", GAME_SUPPORTS_SAVE )
GAME( 1982, timetunl, 0, nomcu, timetunl, 0, ROT0, "Taito Corporation", "Time Tunnel", GAME_SUPPORTS_SAVE ) GAME( 1982, timetunl, 0, nomcu, timetunl, taitosj, ROT0, "Taito Corporation", "Time Tunnel", GAME_SUPPORTS_SAVE )
GAME( 1982, wwestern, 0, nomcu, wwestern, 0, ROT270, "Taito Corporation", "Wild Western (set 1)", GAME_SUPPORTS_SAVE ) GAME( 1982, wwestern, 0, nomcu, wwestern, taitosj, ROT270, "Taito Corporation", "Wild Western (set 1)", GAME_SUPPORTS_SAVE )
GAME( 1982, wwester1, wwestern, nomcu, wwestern, 0, ROT270, "Taito Corporation", "Wild Western (set 2)", GAME_SUPPORTS_SAVE ) GAME( 1982, wwester1, wwestern, nomcu, wwestern, taitosj, ROT270, "Taito Corporation", "Wild Western (set 2)", GAME_SUPPORTS_SAVE )
GAME( 1982, frontlin, 0, mcu, frontlin, 0, ROT270, "Taito Corporation", "Front Line", GAME_SUPPORTS_SAVE ) GAME( 1982, frontlin, 0, mcu, frontlin, taitosj, ROT270, "Taito Corporation", "Front Line", GAME_SUPPORTS_SAVE )
GAME( 1983, elevator, 0, mcu, elevator, 0, ROT0, "Taito Corporation", "Elevator Action", GAME_SUPPORTS_SAVE ) GAME( 1983, elevator, 0, mcu, elevator, taitosj, ROT0, "Taito Corporation", "Elevator Action", GAME_SUPPORTS_SAVE )
GAME( 1983, elevatob, elevator, nomcu, elevator, 0, ROT0, "bootleg", "Elevator Action (bootleg)", GAME_SUPPORTS_SAVE ) GAME( 1983, elevatob, elevator, nomcu, elevator, taitosj, ROT0, "bootleg", "Elevator Action (bootleg)", GAME_SUPPORTS_SAVE )
GAME( 1983, tinstar, 0, mcu, tinstar, 0, ROT0, "Taito Corporation", "The Tin Star (set 1)", GAME_SUPPORTS_SAVE ) GAME( 1983, tinstar, 0, mcu, tinstar, taitosj, ROT0, "Taito Corporation", "The Tin Star (set 1)", GAME_SUPPORTS_SAVE )
GAME( 1983, tinstar2, tinstar, mcu, tinstar, 0, ROT0, "Taito Corporation", "The Tin Star (set 2)", GAME_SUPPORTS_SAVE ) GAME( 1983, tinstar2, tinstar, mcu, tinstar, taitosj, ROT0, "Taito Corporation", "The Tin Star (set 2)", GAME_SUPPORTS_SAVE )
GAME( 1983, waterski, 0, nomcu, waterski, 0, ROT270, "Taito Corporation", "Water Ski", GAME_SUPPORTS_SAVE ) GAME( 1983, waterski, 0, nomcu, waterski, taitosj, ROT270, "Taito Corporation", "Water Ski", GAME_SUPPORTS_SAVE )
GAME( 1983, bioatack, 0, nomcu, bioatack, 0, ROT270, "Taito Corporation (Fox Video Games license)", "Bio Attack", GAME_SUPPORTS_SAVE ) GAME( 1983, bioatack, 0, nomcu, bioatack, taitosj, ROT270, "Taito Corporation (Fox Video Games license)", "Bio Attack", GAME_SUPPORTS_SAVE )
GAME( 1984, sfposeid, 0, mcu, sfposeid, 0, ROT0, "Taito Corporation", "Sea Fighter Poseidon", GAME_SUPPORTS_SAVE ) GAME( 1984, sfposeid, 0, mcu, sfposeid, taitosj, ROT0, "Taito Corporation", "Sea Fighter Poseidon", GAME_SUPPORTS_SAVE )
GAME( 1983, hwrace, 0, nomcu, hwrace, 0, ROT270, "Taito Corporation", "High Way Race", GAME_SUPPORTS_SAVE ) GAME( 1983, hwrace, 0, nomcu, hwrace, taitosj, ROT270, "Taito Corporation", "High Way Race", GAME_SUPPORTS_SAVE )
GAME( 1984, kikstart, 0, kikstart, kikstart, kikstart,ROT0, "Taito Corporation", "Kick Start Wheelie King", GAME_SUPPORTS_SAVE ) GAME( 1984, kikstart, 0, kikstart, kikstart, taitosj, ROT0, "Taito Corporation", "Kick Start Wheelie King", GAME_SUPPORTS_SAVE )

View File

@ -18,6 +18,10 @@ Might be some priority glitches
#include "sound/msm5205.h" #include "sound/msm5205.h"
#include "rendlay.h" #include "rendlay.h"
static int adpcm_pos[2],adpcm_end[2];
static int adpcm_data[2];
static UINT8 *shared_ram;
/* in video/tbowl.c */ /* in video/tbowl.c */
extern UINT8 *tbowl_txvideoram, *tbowl_bgvideoram, *tbowl_bg2videoram; extern UINT8 *tbowl_txvideoram, *tbowl_bgvideoram, *tbowl_bg2videoram;
extern UINT8 *tbowl_spriteram; extern UINT8 *tbowl_spriteram;
@ -71,8 +75,6 @@ static WRITE8_HANDLER( tbowlc_bankswitch_w )
***/ ***/
static UINT8 *shared_ram;
static READ8_HANDLER( shared_r ) static READ8_HANDLER( shared_r )
{ {
return shared_ram[offset]; return shared_ram[offset];
@ -159,8 +161,6 @@ ADDRESS_MAP_END
/* Board A */ /* Board A */
static int adpcm_pos[2],adpcm_end[2];
static WRITE8_HANDLER( tbowl_adpcm_start_w ) static WRITE8_HANDLER( tbowl_adpcm_start_w )
{ {
adpcm_pos[offset & 1] = data << 8; adpcm_pos[offset & 1] = data << 8;
@ -179,8 +179,6 @@ static WRITE8_HANDLER( tbowl_adpcm_vol_w )
static void tbowl_adpcm_int(running_machine *machine, int num) static void tbowl_adpcm_int(running_machine *machine, int num)
{ {
static int adpcm_data[2] = { -1, -1 };
if (adpcm_pos[num] >= adpcm_end[num] || if (adpcm_pos[num] >= adpcm_end[num] ||
adpcm_pos[num] >= memory_region_length(machine, "adpcm")/2) adpcm_pos[num] >= memory_region_length(machine, "adpcm")/2)
msm5205_reset_w(num,1); msm5205_reset_w(num,1);
@ -559,6 +557,13 @@ The game is displayed on 2 monitors
***/ ***/
static MACHINE_RESET( tbowl )
{
adpcm_pos[0] = adpcm_pos[1] = 0;
adpcm_end[0] = adpcm_end[1] = 0;
adpcm_data[0] = adpcm_data[1] = -1;
}
static MACHINE_DRIVER_START( tbowl ) static MACHINE_DRIVER_START( tbowl )
/* CPU on Board '6206B' */ /* CPU on Board '6206B' */
@ -599,6 +604,8 @@ static MACHINE_DRIVER_START( tbowl )
MDRV_VIDEO_START(tbowl) MDRV_VIDEO_START(tbowl)
MDRV_VIDEO_UPDATE(tbowl) MDRV_VIDEO_UPDATE(tbowl)
MDRV_MACHINE_RESET( tbowl )
/* sound hardware */ /* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono") MDRV_SPEAKER_STANDARD_MONO("mono")

View File

@ -64,6 +64,8 @@ WRITE8_HANDLER( tecmo_flipscreen_w );
VIDEO_START( tecmo ); VIDEO_START( tecmo );
VIDEO_UPDATE( tecmo ); VIDEO_UPDATE( tecmo );
static int adpcm_pos,adpcm_end;
static int adpcm_data;
static WRITE8_HANDLER( tecmo_bankswitch_w ) static WRITE8_HANDLER( tecmo_bankswitch_w )
@ -82,8 +84,6 @@ static WRITE8_HANDLER( tecmo_sound_command_w )
cpunum_set_input_line(machine, 1,INPUT_LINE_NMI,PULSE_LINE); cpunum_set_input_line(machine, 1,INPUT_LINE_NMI,PULSE_LINE);
} }
static int adpcm_pos,adpcm_end;
static WRITE8_HANDLER( tecmo_adpcm_start_w ) static WRITE8_HANDLER( tecmo_adpcm_start_w )
{ {
adpcm_pos = data << 8; adpcm_pos = data << 8;
@ -99,8 +99,6 @@ static WRITE8_HANDLER( tecmo_adpcm_vol_w )
} }
static void tecmo_adpcm_int(running_machine *machine, int num) static void tecmo_adpcm_int(running_machine *machine, int num)
{ {
static int adpcm_data = -1;
if (adpcm_pos >= adpcm_end || if (adpcm_pos >= adpcm_end ||
adpcm_pos >= memory_region_length(machine, "adpcm")) adpcm_pos >= memory_region_length(machine, "adpcm"))
msm5205_reset_w(0,1); msm5205_reset_w(0,1);
@ -561,6 +559,12 @@ static const msm5205_interface msm5205_config =
}; };
static MACHINE_RESET( rygar )
{
adpcm_pos = 0;
adpcm_end = 0;
adpcm_data = -1;
}
static MACHINE_DRIVER_START( rygar ) static MACHINE_DRIVER_START( rygar )
@ -586,6 +590,8 @@ static MACHINE_DRIVER_START( rygar )
MDRV_VIDEO_START(tecmo) MDRV_VIDEO_START(tecmo)
MDRV_VIDEO_UPDATE(tecmo) MDRV_VIDEO_UPDATE(tecmo)
MDRV_MACHINE_RESET( rygar )
/* sound hardware */ /* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono") MDRV_SPEAKER_STANDARD_MONO("mono")

View File

@ -29,9 +29,9 @@ static int cop_data_latch_enable;
static UINT8 cop_l; static UINT8 cop_l;
static UINT8 cop_cmd_latch; static UINT8 cop_cmd_latch;
static int timer_int = 1; static int timer_int;
static int data_rdy_int = 1; static int data_rdy_int;
static int ssi_data_request = 1; static int ssi_data_request;
static int cart_present; static int cart_present;
static int pr7820_enter; static int pr7820_enter;
@ -724,7 +724,26 @@ static MACHINE_START( thayers )
static MACHINE_RESET( thayers ) static MACHINE_RESET( thayers )
{ {
int newtype = (input_port_read(machine, "DSWB") & 0x18) ? LASERDISC_TYPE_PIONEER_LDV1000 : LASERDISC_TYPE_PIONEER_PR7820; int newtype;
laserdisc_data = 0;
rx_bit = 0;
keylatch = 0;
cop_data_latch = 0;
cop_data_latch_enable = 0;
cop_l = 0;
cop_cmd_latch = 0;
timer_int = 1;
data_rdy_int = 1;
ssi_data_request = 1;
cart_present = 0;
pr7820_enter = 0;
newtype = (input_port_read(machine, "DSWB") & 0x18) ? LASERDISC_TYPE_PIONEER_LDV1000 : LASERDISC_TYPE_PIONEER_PR7820;
device_set_info_int(laserdisc, LDINFO_INT_TYPE, newtype); device_set_info_int(laserdisc, LDINFO_INT_TYPE, newtype);
} }

View File

@ -243,8 +243,11 @@ WRITE16_HANDLER( rastan_spriteflip_w );
VIDEO_START( topspeed ); VIDEO_START( topspeed );
VIDEO_UPDATE( topspeed ); VIDEO_UPDATE( topspeed );
static UINT16 cpua_ctrl = 0xff; static UINT16 cpua_ctrl;
static INT32 ioc220_port = 0; static INT32 ioc220_port = 0;
static INT32 banknum;
static int adpcm_pos;
static int adpcm_data;
extern UINT16 *topspeed_spritemap; extern UINT16 *topspeed_spritemap;
@ -400,8 +403,6 @@ logerror("CPU #0 PC %06x: warning - write %04x to motor cpu %03x\n",activecpu_ge
SOUND SOUND
*****************************************************/ *****************************************************/
static INT32 banknum = -1;
static void reset_sound_region(running_machine *machine) static void reset_sound_region(running_machine *machine)
{ {
memory_set_bankptr( 10, memory_region(machine, "audio") + (banknum * 0x4000) + 0x10000 ); memory_set_bankptr( 10, memory_region(machine, "audio") + (banknum * 0x4000) + 0x10000 );
@ -413,12 +414,8 @@ static WRITE8_HANDLER( sound_bankswitch_w ) /* assumes Z80 sandwiched between 68
reset_sound_region(machine); reset_sound_region(machine);
} }
static int adpcm_pos;
static void topspeed_msm5205_vck(running_machine *machine, int chip) static void topspeed_msm5205_vck(running_machine *machine, int chip)
{ {
static int adpcm_data = -1;
if (adpcm_data != -1) if (adpcm_data != -1)
{ {
msm5205_data_w(0, adpcm_data & 0x0f); msm5205_data_w(0, adpcm_data & 0x0f);
@ -692,6 +689,15 @@ static MACHINE_START( topspeed )
state_save_register_postload(machine, topspeed_postload, NULL); state_save_register_postload(machine, topspeed_postload, NULL);
} }
static MACHINE_RESET( topspeed )
{
cpua_ctrl = 0xff;
ioc220_port = 0;
banknum = -1;
adpcm_pos = 0;
adpcm_data = -1;
}
static MACHINE_DRIVER_START( topspeed ) static MACHINE_DRIVER_START( topspeed )
/* basic machine hardware */ /* basic machine hardware */
@ -707,6 +713,7 @@ static MACHINE_DRIVER_START( topspeed )
MDRV_CPU_VBLANK_INT("main", topspeed_cpub_interrupt) MDRV_CPU_VBLANK_INT("main", topspeed_cpub_interrupt)
MDRV_MACHINE_START(topspeed) MDRV_MACHINE_START(topspeed)
MDRV_MACHINE_RESET(topspeed)
/* video hardware */ /* video hardware */
MDRV_SCREEN_ADD("main", RASTER) MDRV_SCREEN_ADD("main", RASTER)

View File

@ -24,8 +24,8 @@ WRITE8_HANDLER( nitedrvr_steering_reset_w );
WRITE8_HANDLER( nitedrvr_out0_w ); WRITE8_HANDLER( nitedrvr_out0_w );
WRITE8_HANDLER( nitedrvr_out1_w ); WRITE8_HANDLER( nitedrvr_out1_w );
void nitedrvr_crash_toggle(running_machine *machine); MACHINE_RESET( nitedrvr );
void nitedrvr_register_machine_vars(void); MACHINE_START( nitedrvr );
/*----------- defined in audio/nitedrvr.c -----------*/ /*----------- defined in audio/nitedrvr.c -----------*/

View File

@ -8,12 +8,12 @@
#include "nitedrvr.h" #include "nitedrvr.h"
#include "sound/discrete.h" #include "sound/discrete.h"
static UINT8 nitedrvr_gear = 1; static UINT8 nitedrvr_gear;
static UINT8 nitedrvr_track; static UINT8 nitedrvr_track;
static INT32 nitedrvr_steering_buf; static INT32 nitedrvr_steering_buf;
static INT32 nitedrvr_steering_val; static INT32 nitedrvr_steering_val;
static UINT8 nitedrvr_crash_en; static UINT8 nitedrvr_crash_en;
static UINT8 nitedrvr_crash_data = 0x0f; static UINT8 nitedrvr_crash_data;
static UINT8 nitedrvr_crash_data_en; // IC D8 static UINT8 nitedrvr_crash_data_en; // IC D8
static UINT8 ac_line; static UINT8 ac_line;
static INT32 last_steering_val; static INT32 last_steering_val;
@ -247,7 +247,7 @@ WRITE8_HANDLER( nitedrvr_out1_w )
} }
void nitedrvr_crash_toggle(running_machine *machine) static TIMER_CALLBACK( nitedrvr_crash_toggle_callback )
{ {
if (nitedrvr_crash_en && nitedrvr_crash_data_en) if (nitedrvr_crash_en && nitedrvr_crash_data_en)
{ {
@ -269,8 +269,8 @@ void nitedrvr_crash_toggle(running_machine *machine)
} }
} }
void nitedrvr_register_machine_vars(void) MACHINE_START( nitedrvr )
{/* save all the statics in this file. */ {
state_save_register_global(nitedrvr_gear); state_save_register_global(nitedrvr_gear);
state_save_register_global(nitedrvr_track); state_save_register_global(nitedrvr_track);
state_save_register_global(nitedrvr_steering_buf); state_save_register_global(nitedrvr_steering_buf);
@ -281,3 +281,18 @@ void nitedrvr_register_machine_vars(void)
state_save_register_global(ac_line); state_save_register_global(ac_line);
state_save_register_global(last_steering_val); state_save_register_global(last_steering_val);
} }
MACHINE_RESET( nitedrvr )
{
nitedrvr_gear = 1;
nitedrvr_track = 0;
nitedrvr_steering_buf = 0;
nitedrvr_steering_val = 0;
nitedrvr_crash_en = 0;
nitedrvr_crash_data = 0x0f;
nitedrvr_crash_data_en = 0;
ac_line = 0;
last_steering_val = 0;
timer_pulse(PERIOD_OF_555_ASTABLE(RES_K(180), 330, CAP_U(1)), NULL, 0, nitedrvr_crash_toggle_callback);
}

View File

@ -36,6 +36,16 @@ Encryption PAL 16R4 on CPU board
*/ */
static UINT8 *decrypt; static UINT8 *decrypt;
static int adpcm_data_offs;
static int adpcm_data_end;
static int toggle;
static UINT8 fm_data;
static int coin_mech_latch[2];
static int stfight_coin_mech_query_active = 0;
static int stfight_coin_mech_query;
DRIVER_INIT( empcity ) DRIVER_INIT( empcity )
{ {
@ -82,6 +92,15 @@ DRIVER_INIT( stfight )
MACHINE_RESET( stfight ) MACHINE_RESET( stfight )
{ {
adpcm_data_offs = adpcm_data_end = 0;
toggle = 0;
fm_data = 0;
coin_mech_latch[0] = 0x02;
coin_mech_latch[1] = 0x01;
stfight_coin_mech_query_active = 0;
stfight_coin_mech_query = 0;
// initialise rom bank // initialise rom bank
stfight_bank_w( machine, 0, 0 ); stfight_bank_w( machine, 0, 0 );
} }
@ -122,13 +141,8 @@ READ8_HANDLER( stfight_dsw_r )
return( ~input_port_read(machine, offset ? "DSW1" : "DSW0") ); return( ~input_port_read(machine, offset ? "DSW1" : "DSW0") );
} }
static int stfight_coin_mech_query_active = 0;
static int stfight_coin_mech_query;
READ8_HANDLER( stfight_coin_r ) READ8_HANDLER( stfight_coin_r )
{ {
static int coin_mech_latch[2] = { 0x02, 0x01 };
int coin_mech_data; int coin_mech_data;
int i; int i;
@ -180,12 +194,9 @@ static const int sampleLimits[] =
0x5400, // girl getting shot 0x5400, // girl getting shot
0x7200 // (end of samples) 0x7200 // (end of samples)
}; };
static int adpcm_data_offs;
static int adpcm_data_end;
void stfight_adpcm_int( running_machine *machine, int data ) void stfight_adpcm_int( running_machine *machine, int data )
{ {
static int toggle;
UINT8 *SAMPLES = memory_region(machine, "adpcm"); UINT8 *SAMPLES = memory_region(machine, "adpcm");
int adpcm_data = SAMPLES[adpcm_data_offs & 0x7fff]; int adpcm_data = SAMPLES[adpcm_data_offs & 0x7fff];
@ -226,8 +237,6 @@ WRITE8_HANDLER( stfight_e800_w )
* Machine hardware for YM2303 fm sound control * Machine hardware for YM2303 fm sound control
*/ */
static UINT8 fm_data;
WRITE8_HANDLER( stfight_fm_w ) WRITE8_HANDLER( stfight_fm_w )
{ {
// the sound cpu ignores any fm data without bit 7 set // the sound cpu ignores any fm data without bit 7 set

View File

@ -24,15 +24,11 @@ static UINT8 spacecr_prot_value;
static UINT8 protection_value; static UINT8 protection_value;
static UINT32 address; static UINT32 address;
void taitosj_register_main_savestate(void);
MACHINE_START( taitosj ) MACHINE_START( taitosj )
{ {
memory_configure_bank(1, 0, 1, memory_region(machine, "main") + 0x6000, 0); memory_configure_bank(1, 0, 1, memory_region(machine, "main") + 0x6000, 0);
memory_configure_bank(1, 1, 1, memory_region(machine, "main") + 0x10000, 0); memory_configure_bank(1, 1, 1, memory_region(machine, "main") + 0x10000, 0);
taitosj_register_main_savestate();
state_save_register_global(fromz80); state_save_register_global(fromz80);
state_save_register_global(toz80); state_save_register_global(toz80);
state_save_register_global(zaccept); state_save_register_global(zaccept);

View File

@ -27,7 +27,7 @@ static UINT8 crtc_register;
static UINT8 crtc_data[0x10]; static UINT8 crtc_data[0x10];
static emu_timer *crtc_timer; static emu_timer *crtc_timer;
static UINT8 flipscreen_old = -1; static UINT8 flipscreen_old;
static tilemap *bg_tilemap, *fg_tilemap; static tilemap *bg_tilemap, *fg_tilemap;
@ -73,11 +73,9 @@ static TILE_GET_INFO( get_nekkyoku_fg_tile_info ) { get_nekkyoku_tile_info(machi
* *
*************************************/ *************************************/
VIDEO_START( fromance ) static void init_common(void)
{ {
/* allocate tilemaps */ flipscreen_old = -1;
bg_tilemap = tilemap_create(get_fromance_bg_tile_info, tilemap_scan_rows, 8,4, 64,64);
fg_tilemap = tilemap_create(get_fromance_fg_tile_info, tilemap_scan_rows, 8,4, 64,64);
/* allocate local videoram */ /* allocate local videoram */
local_videoram[0] = auto_malloc(0x1000 * 3); local_videoram[0] = auto_malloc(0x1000 * 3);
@ -112,43 +110,22 @@ VIDEO_START( fromance )
state_save_register_global_pointer(local_paletteram, 0x800 * 2); state_save_register_global_pointer(local_paletteram, 0x800 * 2);
} }
VIDEO_START( fromance )
{
/* allocate tilemaps */
bg_tilemap = tilemap_create(get_fromance_bg_tile_info, tilemap_scan_rows, 8,4, 64,64);
fg_tilemap = tilemap_create(get_fromance_fg_tile_info, tilemap_scan_rows, 8,4, 64,64);
init_common();
}
VIDEO_START( nekkyoku ) VIDEO_START( nekkyoku )
{ {
/* allocate tilemaps */ /* allocate tilemaps */
bg_tilemap = tilemap_create(get_nekkyoku_bg_tile_info, tilemap_scan_rows, 8,4, 64,64); bg_tilemap = tilemap_create(get_nekkyoku_bg_tile_info, tilemap_scan_rows, 8,4, 64,64);
fg_tilemap = tilemap_create(get_nekkyoku_fg_tile_info, tilemap_scan_rows, 8,4, 64,64); fg_tilemap = tilemap_create(get_nekkyoku_fg_tile_info, tilemap_scan_rows, 8,4, 64,64);
/* allocate local videoram */ init_common();
local_videoram[0] = auto_malloc(0x1000 * 3);
local_videoram[1] = auto_malloc(0x1000 * 3);
/* allocate local palette RAM */
local_paletteram = auto_malloc(0x800 * 2);
/* configure tilemaps */
tilemap_set_transparent_pen(fg_tilemap,15);
/* reset the timer */
crtc_timer = timer_alloc(crtc_interrupt_gen, NULL);
scrollx_ofs = 0x159;
scrolly_ofs = 0x10;
/* state save */
state_save_register_global(selected_videoram);
state_save_register_global_pointer(local_videoram[0], 0x1000 * 3);
state_save_register_global_pointer(local_videoram[1], 0x1000 * 3);
state_save_register_global(selected_paletteram);
state_save_register_global_array(scrollx);
state_save_register_global_array(scrolly);
state_save_register_global(gfxreg);
state_save_register_global(flipscreen);
state_save_register_global(flipscreen_old);
state_save_register_global(scrollx_ofs);
state_save_register_global(scrolly_ofs);
state_save_register_global(crtc_register);
state_save_register_global_array(crtc_data);
state_save_register_global_pointer(local_paletteram, 0x800 * 2);
} }
VIDEO_START( pipedrm ) VIDEO_START( pipedrm )

View File

@ -19,7 +19,7 @@ static tilemap *quizdna_fg_tilemap;
static UINT8 quizdna_bg_xscroll[2]; static UINT8 quizdna_bg_xscroll[2];
static int quizdna_flipscreen = -1; static int quizdna_flipscreen;
static int quizdna_video_enable; static int quizdna_video_enable;
@ -56,6 +56,11 @@ static TILE_GET_INFO( get_fg_tile_info )
VIDEO_START( quizdna ) VIDEO_START( quizdna )
{ {
quizdna_flipscreen = -1;
quizdna_video_enable = 0;
quizdna_bg_xscroll[0] = 0;
quizdna_bg_xscroll[1] = 0;
quizdna_bg_ram = auto_malloc(0x2000); quizdna_bg_ram = auto_malloc(0x2000);
quizdna_fg_ram = auto_malloc(0x1000); quizdna_fg_ram = auto_malloc(0x1000);

View File

@ -57,6 +57,7 @@ UINT16 *rocknms_sub_vram_rot, *rocknms_sub_rotregs;
UINT16 *rocknms_sub_priority; UINT16 *rocknms_sub_priority;
static int flipscreen_old;
/*************************************************************************** /***************************************************************************
@ -270,6 +271,8 @@ WRITE16_HANDLER( rocknms_sub_vram_rot_w )
VIDEO_START( tetrisp2 ) VIDEO_START( tetrisp2 )
{ {
flipscreen_old = -1;
tilemap_bg = tilemap_create( get_tile_info_bg,tilemap_scan_rows, tilemap_bg = tilemap_create( get_tile_info_bg,tilemap_scan_rows,
16,16,NX_0,NY_0); 16,16,NX_0,NY_0);
@ -295,6 +298,8 @@ VIDEO_START( nndmseal )
VIDEO_START( rockntread ) VIDEO_START( rockntread )
{ {
flipscreen_old = -1;
tilemap_bg = tilemap_create( get_tile_info_bg,tilemap_scan_rows, tilemap_bg = tilemap_create( get_tile_info_bg,tilemap_scan_rows,
16, 16, 256, 16); // rockn ms(main),1,2,3,4 16, 16, 256, 16); // rockn ms(main),1,2,3,4
@ -315,17 +320,7 @@ VIDEO_START( rockntread )
VIDEO_START( rocknms ) VIDEO_START( rocknms )
{ {
tilemap_bg = tilemap_create(get_tile_info_bg,tilemap_scan_rows, VIDEO_START_CALL( rockntread );
16, 16, 256, 16); // rockn ms(main),1,2,3,4
tilemap_fg = tilemap_create(get_tile_info_fg,tilemap_scan_rows,
8, 8, 64, 64);
tilemap_rot = tilemap_create(get_tile_info_rot,tilemap_scan_rows,
16, 16, 128, 128);
tilemap_sub_bg = tilemap_create(get_tile_info_rocknms_sub_bg,tilemap_scan_rows, tilemap_sub_bg = tilemap_create(get_tile_info_rocknms_sub_bg,tilemap_scan_rows,
@ -339,10 +334,6 @@ VIDEO_START( rocknms )
16, 16, 128, 128); 16, 16, 128, 128);
tilemap_set_transparent_pen(tilemap_bg, 0);
tilemap_set_transparent_pen(tilemap_fg, 0);
tilemap_set_transparent_pen(tilemap_rot, 0);
tilemap_set_transparent_pen(tilemap_sub_bg, 0); tilemap_set_transparent_pen(tilemap_sub_bg, 0);
tilemap_set_transparent_pen(tilemap_sub_fg, 0); tilemap_set_transparent_pen(tilemap_sub_fg, 0);
tilemap_set_transparent_pen(tilemap_sub_rot, 0); tilemap_set_transparent_pen(tilemap_sub_rot, 0);
@ -518,7 +509,6 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
VIDEO_UPDATE( tetrisp2 ) VIDEO_UPDATE( tetrisp2 )
{ {
static int flipscreen_old = -1;
int flipscreen; int flipscreen;
int asc_pri; int asc_pri;
int scr_pri; int scr_pri;
@ -603,7 +593,6 @@ VIDEO_UPDATE( tetrisp2 )
VIDEO_UPDATE( rockntread ) VIDEO_UPDATE( rockntread )
{ {
static int flipscreen_old = -1;
int flipscreen; int flipscreen;
int asc_pri; int asc_pri;
int scr_pri; int scr_pri;

View File

@ -544,7 +544,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
// sprites are always clipped to 512x512 // sprites are always clipped to 512x512
// - regardless of the visible display dimensions // - regardless of the visible display dimensions
static rectangle spriteClip = { 0, 512, 0, 512 }; rectangle spriteClip = { 0, 512, 0, 512 };
PSPRITE_ATTR sa; PSPRITE_ATTR sa;
int flipx = 0, flipy = 0; int flipx = 0, flipy = 0;