mirror of
https://github.com/holub/mame
synced 2025-06-05 12:26:35 +03:00
From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] Fix zr107 multisession issues Hi mamedev, The attached patch makes the initialization of various Konami PPC drivers consistent from run to run, hopefully fixing most multisession issues. I confirmed that this resolves running midnrun multisession, but it is possible other issues remain. The patch also moves some allocations from static to dynamic storage. ~aa
This commit is contained in:
parent
b00f50959d
commit
e6da336897
@ -232,8 +232,8 @@ Hang Pilot (uses an unknown but similar video board) 12W
|
||||
|
||||
static UINT32 *work_ram;
|
||||
|
||||
UINT8 gticlub_led_reg0 = 0x7f;
|
||||
UINT8 gticlub_led_reg1 = 0x7f;
|
||||
UINT8 gticlub_led_reg0;
|
||||
UINT8 gticlub_led_reg1;
|
||||
|
||||
int K001604_vh_start(running_machine *machine, int chip);
|
||||
void K001604_tile_update(running_machine *machine, int chip);
|
||||
@ -361,8 +361,21 @@ static int adc1038_adr;
|
||||
static int adc1038_data_in;
|
||||
static int adc1038_data_out;
|
||||
static int adc1038_adc_data;
|
||||
static int adc1038_sars = 1;
|
||||
static int adc1038_gticlub_hack = 0;
|
||||
static int adc1038_sars;
|
||||
static int adc1038_gticlub_hack;
|
||||
|
||||
static void adc1038_init(running_machine *machine)
|
||||
{
|
||||
adc1038_cycle = 0;
|
||||
adc1038_clk = 0;
|
||||
adc1038_adr = 0;
|
||||
adc1038_data_in = 0;
|
||||
adc1038_data_out = 0;
|
||||
adc1038_adc_data = 0;
|
||||
adc1038_sars = 1;
|
||||
adc1038_gticlub_hack = (mame_stricmp(machine->gamedrv->name, "gticlub") == 0 ||
|
||||
mame_stricmp(machine->gamedrv->name, "gticlubj") == 0) ? 1 : 0;
|
||||
}
|
||||
|
||||
static int adc1038_do_r(void)
|
||||
{
|
||||
@ -450,7 +463,7 @@ static int adc1038_sars_r(running_machine *machine)
|
||||
|
||||
static READ8_HANDLER( sysreg_r )
|
||||
{
|
||||
static const char *portnames[] = { "IN0", "IN1", "IN2", "IN3" };
|
||||
static const char *const portnames[] = { "IN0", "IN1", "IN2", "IN3" };
|
||||
|
||||
switch (offset)
|
||||
{
|
||||
@ -567,7 +580,7 @@ WRITE8_HANDLER( K056230_w )
|
||||
// mame_printf_debug("K056230_w: %d, %02X at %08X\n", offset, data, activecpu_get_pc());
|
||||
}
|
||||
|
||||
static UINT32 lanc_ram[0x2000/4];
|
||||
UINT32 *lanc_ram;
|
||||
READ32_HANDLER( lanc_ram_r )
|
||||
{
|
||||
// mame_printf_debug("LANC_RAM_r: %08X, %08X at %08X\n", offset, mem_mask, activecpu_get_pc());
|
||||
@ -607,7 +620,7 @@ static ADDRESS_MAP_START( gticlub_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x780c0000, 0x780c0003) AM_READWRITE(cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc)
|
||||
AM_RANGE(0x7e000000, 0x7e003fff) AM_READWRITE8(sysreg_r, sysreg_w, 0xffffffff)
|
||||
AM_RANGE(0x7e008000, 0x7e009fff) AM_READWRITE8(K056230_r, K056230_w, 0xffffffff)
|
||||
AM_RANGE(0x7e00a000, 0x7e00bfff) AM_READWRITE(lanc_ram_r, lanc_ram_w)
|
||||
AM_RANGE(0x7e00a000, 0x7e00bfff) AM_READWRITE(lanc_ram_r, lanc_ram_w) AM_BASE(&lanc_ram)
|
||||
AM_RANGE(0x7e00c000, 0x7e00c007) AM_WRITE(K056800_host_w)
|
||||
AM_RANGE(0x7e00c000, 0x7e00c007) AM_READ(K056800_host_r) // Hang Pilot
|
||||
AM_RANGE(0x7e00c008, 0x7e00c00f) AM_READ(K056800_host_r)
|
||||
@ -1156,18 +1169,15 @@ static void sound_irq_callback(running_machine *machine, int irq)
|
||||
static DRIVER_INIT(gticlub)
|
||||
{
|
||||
init_konami_cgboard(1, CGBOARD_TYPE_GTICLUB);
|
||||
|
||||
sharc_dataram_0 = auto_malloc(0x100000);
|
||||
gticlub_led_reg0 = gticlub_led_reg1 = 0x7f;
|
||||
|
||||
K001005_preprocess_texture_data(memory_region(machine, REGION_GFX1), memory_region_length(machine, REGION_GFX1), 1);
|
||||
|
||||
K056800_init(sound_irq_callback);
|
||||
|
||||
// we'll need this for now
|
||||
if (mame_stricmp(machine->gamedrv->name, "gticlub") == 0 ||
|
||||
mame_stricmp(machine->gamedrv->name, "gticlubj") == 0)
|
||||
{
|
||||
adc1038_gticlub_hack = 1;
|
||||
}
|
||||
adc1038_init(machine);
|
||||
}
|
||||
|
||||
static DRIVER_INIT(hangplt)
|
||||
@ -1178,14 +1188,12 @@ static DRIVER_INIT(hangplt)
|
||||
|
||||
sharc_dataram_0 = auto_malloc(0x100000);
|
||||
sharc_dataram_1 = auto_malloc(0x100000);
|
||||
gticlub_led_reg0 = gticlub_led_reg1 = 0x7f;
|
||||
|
||||
K056800_init(sound_irq_callback);
|
||||
K033906_init();
|
||||
}
|
||||
|
||||
static DRIVER_INIT(slrasslt)
|
||||
{
|
||||
DRIVER_INIT_CALL(gticlub);
|
||||
adc1038_init(machine);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
@ -1193,5 +1201,5 @@ static DRIVER_INIT(slrasslt)
|
||||
GAME( 1996, gticlub, 0, gticlub, gticlub, gticlub, ROT0, "Konami", "GTI Club (ver AAA)", GAME_NOT_WORKING|GAME_NO_SOUND )
|
||||
GAME( 1996, gticlubj, gticlub, gticlub, gticlub, gticlub, ROT0, "Konami", "GTI Club (ver JAA)", GAME_NOT_WORKING|GAME_NO_SOUND )
|
||||
GAME( 1996, thunderh, 0, gticlub, thunderh, gticlub, ROT0, "Konami", "Operation Thunder Hurricane (ver UAA)", GAME_NOT_WORKING|GAME_NO_SOUND )
|
||||
GAME( 1997, slrasslt, 0, gticlub, slrasslt, slrasslt, ROT0, "Konami", "Solar Assault (ver UAA)", GAME_NOT_WORKING|GAME_NO_SOUND )
|
||||
GAME( 1997, slrasslt, 0, gticlub, slrasslt, gticlub, ROT0, "Konami", "Solar Assault (ver UAA)", GAME_NOT_WORKING|GAME_NO_SOUND )
|
||||
GAMEL( 1997, hangplt, 0, hangplt, hangplt, hangplt, ROT0, "Konami", "Hang Pilot", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND, layout_dualhovu )
|
||||
|
@ -318,10 +318,10 @@
|
||||
#include "sound/rf5c400.h"
|
||||
#include "rendlay.h"
|
||||
|
||||
static UINT8 led_reg0 = 0x7f, led_reg1 = 0x7f;
|
||||
static UINT8 led_reg0, led_reg1;
|
||||
static UINT32 *workram;
|
||||
static UINT32 *sharc_dataram[2];
|
||||
static UINT8 jvs_sdata[1024];
|
||||
static UINT8 *jvs_sdata;
|
||||
static UINT32 jvs_sdata_ptr = 0;
|
||||
static UINT8 *backup_ram;
|
||||
|
||||
@ -335,7 +335,7 @@ static UINT32 *K037122_char_ram[MAX_K037122_CHIPS];
|
||||
static UINT8 *K037122_dirty_map[MAX_K037122_CHIPS];
|
||||
static int K037122_gfx_index[MAX_K037122_CHIPS], K037122_char_dirty[MAX_K037122_CHIPS];
|
||||
static tilemap *K037122_layer[MAX_K037122_CHIPS][2];
|
||||
static UINT32 K037122_reg[MAX_K037122_CHIPS][256];
|
||||
static UINT32 *K037122_reg[MAX_K037122_CHIPS];
|
||||
|
||||
#define K037122_NUM_TILES 16384
|
||||
|
||||
@ -431,6 +431,8 @@ static int K037122_vh_start(running_machine *machine, int chip)
|
||||
|
||||
K037122_dirty_map[chip] = auto_malloc(K037122_NUM_TILES);
|
||||
|
||||
K037122_reg[chip] = auto_malloc(0x400);
|
||||
|
||||
if (chip == 0)
|
||||
{
|
||||
K037122_layer[chip][0] = tilemap_create(K037122_0_tile_info_layer0, tilemap_scan_rows, 8, 8, 256, 64);
|
||||
@ -448,13 +450,14 @@ static int K037122_vh_start(running_machine *machine, int chip)
|
||||
memset(K037122_char_ram[chip], 0, 0x200000);
|
||||
memset(K037122_tile_ram[chip], 0, 0x20000);
|
||||
memset(K037122_dirty_map[chip], 0, K037122_NUM_TILES);
|
||||
memset(K037122_reg[chip], 0, 0x400);
|
||||
|
||||
machine->gfx[K037122_gfx_index[chip]] = allocgfx(&K037122_char_layout);
|
||||
decodegfx(machine->gfx[K037122_gfx_index[chip]], (UINT8*)K037122_char_ram[chip], 0, machine->gfx[K037122_gfx_index[chip]]->total_elements);
|
||||
|
||||
machine->gfx[K037122_gfx_index[chip]]->total_colors = machine->config->total_colors / 16;
|
||||
|
||||
state_save_register_item_array("K037122", chip, K037122_reg[chip]);
|
||||
state_save_register_item_pointer("K037122", chip, K037122_reg[chip], 0x400/sizeof(K037122_reg[chip][0]));
|
||||
state_save_register_item_pointer("K037122", chip, K037122_char_ram[chip], 0x200000/sizeof(K037122_char_ram[chip][0]));
|
||||
state_save_register_item_pointer("K037122", chip, K037122_tile_ram[chip], 0x20000/sizeof(K037122_tile_ram[chip][0]));
|
||||
state_save_register_postload(machine, K037122_postload, (void *)(FPTR)chip);
|
||||
@ -665,7 +668,7 @@ static VIDEO_UPDATE( hornet_2board )
|
||||
static READ8_HANDLER( sysreg_r )
|
||||
{
|
||||
UINT8 r = 0;
|
||||
static const char *portnames[] = { "IN0", "IN1", "IN2" };
|
||||
static const char *const portnames[] = { "IN0", "IN1", "IN2" };
|
||||
|
||||
switch (offset)
|
||||
{
|
||||
@ -987,7 +990,7 @@ static const struct RF5C400interface rf5c400_interface =
|
||||
REGION_SOUND1
|
||||
};
|
||||
|
||||
static sharc_config sharc_cfg =
|
||||
static const sharc_config sharc_cfg =
|
||||
{
|
||||
BOOT_MODE_EPROM
|
||||
};
|
||||
@ -1004,6 +1007,10 @@ static sharc_config sharc_cfg =
|
||||
|
||||
static MACHINE_START( hornet )
|
||||
{
|
||||
jvs_sdata_ptr = 0;
|
||||
jvs_sdata = auto_malloc(1024);
|
||||
memset(jvs_sdata, 0, 1024);
|
||||
|
||||
/* set conservative DRC options */
|
||||
cpunum_set_info_int(0, CPUINFO_INT_PPC_DRC_OPTIONS, PPCDRC_COMPATIBLE_OPTIONS);
|
||||
|
||||
@ -1016,7 +1023,7 @@ static MACHINE_START( hornet )
|
||||
|
||||
state_save_register_global(led_reg0);
|
||||
state_save_register_global(led_reg1);
|
||||
state_save_register_global_array(jvs_sdata);
|
||||
state_save_register_global_pointer(jvs_sdata, 1024);
|
||||
state_save_register_global(jvs_sdata_ptr);
|
||||
}
|
||||
|
||||
@ -1239,7 +1246,7 @@ static void jamma_jvs_cmd_exec(void)
|
||||
|
||||
length = jvs_decode_data(&jvs_sdata[3], data, byte_num-1);
|
||||
|
||||
/*
|
||||
#if 0
|
||||
printf("jvs input data:\n");
|
||||
for (i=0; i < byte_num; i++)
|
||||
{
|
||||
@ -1253,7 +1260,7 @@ static void jamma_jvs_cmd_exec(void)
|
||||
printf("%02X ", data[i]);
|
||||
}
|
||||
printf("\n\n");
|
||||
*/
|
||||
#endif
|
||||
|
||||
// clear return data
|
||||
memset(rdata, 0, sizeof(rdata));
|
||||
@ -1306,7 +1313,7 @@ static void sound_irq_callback(running_machine *machine, int irq)
|
||||
cpunum_set_input_line(machine, 1, INPUT_LINE_IRQ2, PULSE_LINE);
|
||||
}
|
||||
|
||||
static void init_hornet(running_machine *machine, const UINT8 *backupdef)
|
||||
static void init_hornet(running_machine *machine)
|
||||
{
|
||||
init_konami_cgboard(1, CGBOARD_TYPE_HORNET);
|
||||
set_cgboard_texture_bank(0, 5, memory_region(machine, REGION_USER5));
|
||||
@ -1314,14 +1321,13 @@ static void init_hornet(running_machine *machine, const UINT8 *backupdef)
|
||||
K056800_init(sound_irq_callback);
|
||||
K033906_init();
|
||||
|
||||
backup_ram = auto_malloc(0x2000);
|
||||
memcpy(backup_ram, backupdef, 0x2000);
|
||||
led_reg0 = led_reg1 = 0x7f;
|
||||
timekeeper_init(machine, 0, TIMEKEEPER_M48T58, backup_ram);
|
||||
|
||||
ppc4xx_spu_set_tx_handler(0, jamma_jvs_w);
|
||||
}
|
||||
|
||||
static void init_hornet_2board(running_machine *machine, const UINT8 *backupdef)
|
||||
static void init_hornet_2board(running_machine *machine)
|
||||
{
|
||||
init_konami_cgboard(2, CGBOARD_TYPE_HORNET);
|
||||
set_cgboard_texture_bank(0, 5, memory_region(machine, REGION_USER5));
|
||||
@ -1330,8 +1336,7 @@ static void init_hornet_2board(running_machine *machine, const UINT8 *backupdef)
|
||||
K056800_init(sound_irq_callback);
|
||||
K033906_init();
|
||||
|
||||
backup_ram = auto_malloc(0x2000);
|
||||
memcpy(backup_ram, backupdef, 0x2000);
|
||||
led_reg0 = led_reg1 = 0x7f;
|
||||
timekeeper_init(machine, 0, TIMEKEEPER_M48T58, backup_ram);
|
||||
|
||||
ppc4xx_spu_set_tx_handler(0, jamma_jvs_w);
|
||||
@ -1339,7 +1344,10 @@ static void init_hornet_2board(running_machine *machine, const UINT8 *backupdef)
|
||||
|
||||
static DRIVER_INIT(gradius4)
|
||||
{
|
||||
UINT8 backupdef[0x2000] = { 0 };
|
||||
UINT8 *backupdef;
|
||||
|
||||
backupdef = auto_malloc(0x2000);
|
||||
memset(backupdef, 0, 0x2000);
|
||||
|
||||
/* RTC data */
|
||||
backupdef[0x00] = 0x47; // 'G'
|
||||
@ -1359,15 +1367,19 @@ static DRIVER_INIT(gradius4)
|
||||
backupdef[0x0e] = 0x02; // checksum
|
||||
backupdef[0x0f] = 0xd7; // checksum
|
||||
|
||||
init_hornet(machine, backupdef);
|
||||
backup_ram = backupdef;
|
||||
init_hornet(machine);
|
||||
}
|
||||
|
||||
static DRIVER_INIT(nbapbp)
|
||||
{
|
||||
UINT8 backupdef[0x2000] = { 0 };
|
||||
UINT8 *backupdef;
|
||||
int i;
|
||||
UINT16 checksum;
|
||||
|
||||
backupdef = auto_malloc(0x2000);
|
||||
memset(backupdef, 0, 0x2000);
|
||||
|
||||
/* RTC data */
|
||||
backupdef[0x00] = 0x47; // 'G'
|
||||
backupdef[0x01] = 0x58; // 'X'
|
||||
@ -1393,15 +1405,19 @@ static DRIVER_INIT(nbapbp)
|
||||
backupdef[0x0e] = (checksum >> 8) & 0xff; // checksum
|
||||
backupdef[0x0f] = (checksum >> 0) & 0xff; // checksum
|
||||
|
||||
init_hornet(machine, backupdef);
|
||||
backup_ram = backupdef;
|
||||
init_hornet(machine);
|
||||
}
|
||||
|
||||
static DRIVER_INIT(terabrst)
|
||||
{
|
||||
UINT8 backupdef[0x2000] = { 0 };
|
||||
UINT8 *backupdef;
|
||||
int i;
|
||||
UINT16 checksum;
|
||||
|
||||
backupdef = auto_malloc(0x2000);
|
||||
memset(backupdef, 0, 0x2000);
|
||||
|
||||
/* RTC data */
|
||||
backupdef[0x00] = 0x47; // 'G'
|
||||
backupdef[0x01] = 0x4e; // 'N'
|
||||
@ -1427,15 +1443,19 @@ static DRIVER_INIT(terabrst)
|
||||
backupdef[0x0e] = (checksum >> 8) & 0xff; // checksum
|
||||
backupdef[0x0f] = (checksum >> 0) & 0xff; // checksum
|
||||
|
||||
init_hornet_2board(machine, backupdef);
|
||||
backup_ram = backupdef;
|
||||
init_hornet_2board(machine);
|
||||
}
|
||||
|
||||
static DRIVER_INIT(sscope)
|
||||
{
|
||||
UINT8 backupdef[0x2000] = { 0 };
|
||||
UINT8 *backupdef;
|
||||
int i;
|
||||
UINT16 checksum;
|
||||
|
||||
backupdef = auto_malloc(0x2000);
|
||||
memset(backupdef, 0, 0x2000);
|
||||
|
||||
/* RTC data */
|
||||
backupdef[0x00] = 0x47; // 'G'
|
||||
backupdef[0x01] = 0x51; // 'Q'
|
||||
@ -1461,15 +1481,19 @@ static DRIVER_INIT(sscope)
|
||||
backupdef[0x0e] = (checksum >> 8) & 0xff; // checksum
|
||||
backupdef[0x0f] = (checksum >> 0) & 0xff; // checksum
|
||||
|
||||
init_hornet_2board(machine, backupdef);
|
||||
backup_ram = backupdef;
|
||||
init_hornet_2board(machine);
|
||||
}
|
||||
|
||||
static DRIVER_INIT(sscope2)
|
||||
{
|
||||
UINT8 backupdef[0x2000] = { 0 };
|
||||
UINT8 *backupdef;
|
||||
int i;
|
||||
int checksum;
|
||||
|
||||
backupdef = auto_malloc(0x2000);
|
||||
memset(backupdef, 0, 0x2000);
|
||||
|
||||
/* RTC data */
|
||||
backupdef[0x00] = 0x47; // 'G'
|
||||
backupdef[0x01] = 0x4b; // 'K'
|
||||
@ -1523,7 +1547,8 @@ static DRIVER_INIT(sscope2)
|
||||
backupdef[0x1f4e] = (checksum >> 8) & 0xff; // checksum
|
||||
backupdef[0x1f4f] = (checksum >> 0) & 0xff; // checksum
|
||||
|
||||
init_hornet_2board(machine, backupdef);
|
||||
backup_ram = backupdef;
|
||||
init_hornet_2board(machine);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -223,10 +223,10 @@ Thrill Drive 713A13 - 713A14 -
|
||||
#include "video/voodoo.h"
|
||||
#include "machine/timekpr.h"
|
||||
|
||||
static UINT8 led_reg0 = 0x7f, led_reg1 = 0x7f;
|
||||
static UINT8 led_reg0, led_reg1;
|
||||
|
||||
static UINT32 *work_ram;
|
||||
static UINT8 backup_ram[0x2000];
|
||||
static UINT8 *backup_ram;
|
||||
|
||||
|
||||
static WRITE32_HANDLER( paletteram32_w )
|
||||
@ -251,7 +251,7 @@ static int K001604_tilemap_offset;
|
||||
static tilemap *K001604_layer_roz[MAX_K001604_CHIPS][2];
|
||||
static int K001604_roz_size[MAX_K001604_CHIPS];
|
||||
|
||||
static UINT32 K001604_reg[MAX_K001604_CHIPS][256];
|
||||
static UINT32 *K001604_reg[MAX_K001604_CHIPS];
|
||||
|
||||
static int K001604_layer_size;
|
||||
|
||||
@ -426,6 +426,7 @@ int K001604_vh_start(running_machine *machine, int chip)
|
||||
K001604_dirty_map[chip][0] = auto_malloc(K001604_NUM_TILES_LAYER0);
|
||||
K001604_dirty_map[chip][1] = auto_malloc(K001604_NUM_TILES_LAYER1);
|
||||
|
||||
K001604_reg[chip] = auto_malloc(0x400);
|
||||
|
||||
if (chip == 0)
|
||||
{
|
||||
@ -455,6 +456,7 @@ int K001604_vh_start(running_machine *machine, int chip)
|
||||
memset(K001604_tile_ram[chip], 0, 0x10000);
|
||||
memset(K001604_dirty_map[chip][0], 0, K001604_NUM_TILES_LAYER0);
|
||||
memset(K001604_dirty_map[chip][1], 0, K001604_NUM_TILES_LAYER1);
|
||||
memset(K001604_reg[chip], 0, 0x400);
|
||||
|
||||
|
||||
machine->gfx[K001604_gfx_index[chip][0]] = allocgfx(&K001604_char_layout_layer_8x8);
|
||||
@ -826,7 +828,15 @@ static WRITE32_HANDLER( sysreg_w )
|
||||
static int fpga_uploaded = 0;
|
||||
static int lanc2_ram_r = 0;
|
||||
static int lanc2_ram_w = 0;
|
||||
static UINT8 lanc2_ram[0x8000];
|
||||
static UINT8 *lanc2_ram;
|
||||
|
||||
static void lanc2_init(void)
|
||||
{
|
||||
fpga_uploaded = 0;
|
||||
lanc2_ram_r = 0;
|
||||
lanc2_ram_w = 0;
|
||||
lanc2_ram = auto_malloc(0x8000);
|
||||
}
|
||||
|
||||
static READ32_HANDLER( lanc1_r )
|
||||
{
|
||||
@ -1141,12 +1151,13 @@ static void sound_irq_callback(running_machine *machine, int irq)
|
||||
cpunum_set_input_line(machine, 1, INPUT_LINE_IRQ2, PULSE_LINE);
|
||||
}
|
||||
|
||||
static DRIVER_INIT( nwktr )
|
||||
static void init_nwktr(running_machine *machine)
|
||||
{
|
||||
init_konami_cgboard(1, CGBOARD_TYPE_NWKTR);
|
||||
set_cgboard_texture_bank(0, 5, memory_region(machine, REGION_USER5));
|
||||
|
||||
sharc_dataram = auto_malloc(0x100000);
|
||||
led_reg0 = led_reg1 = 0x7f;
|
||||
timekeeper_init(machine, 0, TIMEKEEPER_M48T58, backup_ram);
|
||||
|
||||
K056800_init(sound_irq_callback);
|
||||
@ -1156,12 +1167,16 @@ static DRIVER_INIT( nwktr )
|
||||
// cpunum_set_info_fct(0, CPUINFO_PTR_SPU_RX_HANDLER, (genf *)jamma_jvs_r);
|
||||
|
||||
adc1213x_init(0, adc12138_input_callback);
|
||||
lanc2_init();
|
||||
}
|
||||
|
||||
static DRIVER_INIT(thrilld)
|
||||
{
|
||||
int i;
|
||||
UINT16 checksum;
|
||||
|
||||
backup_ram = auto_malloc(0x2000);
|
||||
memset(backup_ram, 0, 0x2000);
|
||||
|
||||
/* RTC data */
|
||||
backup_ram[0x00] = 0x47; // 'G'
|
||||
@ -1190,7 +1205,7 @@ static DRIVER_INIT(thrilld)
|
||||
backup_ram[0x0e] = (checksum >> 8) & 0xff; // checksum
|
||||
backup_ram[0x0f] = (checksum >> 0) & 0xff; // checksum
|
||||
|
||||
DRIVER_INIT_CALL(nwktr);
|
||||
init_nwktr(machine);
|
||||
}
|
||||
|
||||
static DRIVER_INIT(racingj)
|
||||
@ -1198,6 +1213,9 @@ static DRIVER_INIT(racingj)
|
||||
int i;
|
||||
UINT32 checksum;
|
||||
|
||||
backup_ram = auto_malloc(0x2000);
|
||||
memset(backup_ram, 0, 0x2000);
|
||||
|
||||
/* RTC data */
|
||||
backup_ram[0x00] = 0x47; // 'G'
|
||||
backup_ram[0x01] = 0x6e; // 'n'
|
||||
@ -1215,16 +1233,16 @@ static DRIVER_INIT(racingj)
|
||||
backup_ram[0x0d] = 0x00; //
|
||||
|
||||
checksum = 0;
|
||||
for (i=0; i < 14; i+=2)
|
||||
{
|
||||
for (i=0; i < 14; i+=2)
|
||||
{
|
||||
checksum += (backup_ram[i] << 8) | (backup_ram[i+1]);
|
||||
checksum &= 0xffff;
|
||||
}
|
||||
checksum &= 0xffff;
|
||||
}
|
||||
checksum = -1 - checksum;
|
||||
backup_ram[0x0e] = (checksum >> 8) & 0xff; // checksum
|
||||
backup_ram[0x0f] = (checksum >> 0) & 0xff; // checksum
|
||||
|
||||
DRIVER_INIT_CALL(nwktr);
|
||||
init_nwktr(machine);
|
||||
}
|
||||
|
||||
static DRIVER_INIT(racingj2)
|
||||
@ -1232,6 +1250,9 @@ static DRIVER_INIT(racingj2)
|
||||
int i;
|
||||
UINT32 checksum;
|
||||
|
||||
backup_ram = auto_malloc(0x2000);
|
||||
memset(backup_ram, 0, 0x2000);
|
||||
|
||||
/* RTC data */
|
||||
backup_ram[0x00] = 0x47; // 'G'
|
||||
backup_ram[0x01] = 0x6e; // 'n'
|
||||
@ -1258,7 +1279,7 @@ static DRIVER_INIT(racingj2)
|
||||
backup_ram[0x0e] = (checksum >> 8) & 0xff; // checksum
|
||||
backup_ram[0x0f] = (checksum >> 0) & 0xff; // checksum
|
||||
|
||||
DRIVER_INIT_CALL(nwktr);
|
||||
init_nwktr(machine);
|
||||
}
|
||||
|
||||
|
||||
|
@ -186,12 +186,13 @@ Check gticlub.c for details on the bottom board.
|
||||
#include "video/gticlub.h"
|
||||
|
||||
|
||||
static UINT8 led_reg0 = 0x7f, led_reg1 = 0x7f;
|
||||
static UINT8 led_reg0, led_reg1;
|
||||
|
||||
|
||||
// defined in drivers/gticlub.c
|
||||
extern READ8_HANDLER(K056230_r);
|
||||
extern WRITE8_HANDLER(K056230_w);
|
||||
extern UINT32 *lanc_ram;
|
||||
extern READ32_HANDLER(lanc_ram_r);
|
||||
extern WRITE32_HANDLER(lanc_ram_w);
|
||||
|
||||
@ -219,6 +220,7 @@ READ32_HANDLER(K001604_reg_r);
|
||||
static VIDEO_START( jetwave )
|
||||
{
|
||||
K001005_init(machine);
|
||||
K001006_init(machine);
|
||||
K001604_vh_start(machine, 0);
|
||||
}
|
||||
|
||||
@ -267,6 +269,7 @@ static VIDEO_START( zr107 )
|
||||
};
|
||||
|
||||
K056832_vh_start(machine, REGION_GFX2, K056832_BPP_8, 1, scrolld, game_tile_callback, 0);
|
||||
K001006_init(machine);
|
||||
K001005_init(machine);
|
||||
}
|
||||
|
||||
@ -483,7 +486,7 @@ static ADDRESS_MAP_START( zr107_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x780c0000, 0x780c0007) AM_READWRITE(cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc)
|
||||
AM_RANGE(0x7e000000, 0x7e003fff) AM_READWRITE8(sysreg_r, sysreg_w, 0xffffffff)
|
||||
AM_RANGE(0x7e008000, 0x7e009fff) AM_READWRITE8(K056230_r, K056230_w, 0xffffffff) /* LANC registers */
|
||||
AM_RANGE(0x7e00a000, 0x7e00bfff) AM_READWRITE(lanc_ram_r, lanc_ram_w) /* LANC Buffer RAM (27E) */
|
||||
AM_RANGE(0x7e00a000, 0x7e00bfff) AM_READWRITE(lanc_ram_r, lanc_ram_w) AM_BASE(&lanc_ram) /* LANC Buffer RAM (27E) */
|
||||
AM_RANGE(0x7e00c000, 0x7e00c007) AM_WRITE(K056800_host_w)
|
||||
AM_RANGE(0x7e00c008, 0x7e00c00f) AM_READ(K056800_host_r)
|
||||
AM_RANGE(0x7f800000, 0x7f9fffff) AM_ROM AM_SHARE(2)
|
||||
@ -714,7 +717,7 @@ static INPUT_PORTS_START( jetwave )
|
||||
|
||||
INPUT_PORTS_END
|
||||
|
||||
static sharc_config sharc_cfg =
|
||||
static const sharc_config sharc_cfg =
|
||||
{
|
||||
BOOT_MODE_EPROM
|
||||
};
|
||||
@ -835,10 +838,11 @@ static void sound_irq_callback(running_machine *machine, int irq)
|
||||
cpunum_set_input_line(machine, 1, INPUT_LINE_IRQ2, PULSE_LINE);
|
||||
}
|
||||
|
||||
static DRIVER_INIT(zr107)
|
||||
static void init_zr107(running_machine *machine)
|
||||
{
|
||||
init_konami_cgboard(1, CGBOARD_TYPE_ZR107);
|
||||
sharc_dataram = auto_malloc(0x100000);
|
||||
led_reg0 = led_reg1 = 0x7f;
|
||||
ccu_vcth = ccu_vctl = 0;
|
||||
|
||||
K001005_preprocess_texture_data(memory_region(machine, REGION_GFX1), memory_region_length(machine, REGION_GFX1), 0);
|
||||
|
||||
@ -847,16 +851,16 @@ static DRIVER_INIT(zr107)
|
||||
adc083x_init(0, ADC0838, adc0838_callback);
|
||||
}
|
||||
|
||||
static DRIVER_INIT(zr107)
|
||||
{
|
||||
init_konami_cgboard(1, CGBOARD_TYPE_ZR107);
|
||||
init_zr107(machine);
|
||||
}
|
||||
|
||||
static DRIVER_INIT(jetwave)
|
||||
{
|
||||
init_konami_cgboard(1, CGBOARD_TYPE_GTICLUB);
|
||||
sharc_dataram = auto_malloc(0x100000);
|
||||
|
||||
K001005_preprocess_texture_data(memory_region(machine, REGION_GFX1), memory_region_length(machine, REGION_GFX1), 0);
|
||||
|
||||
K056800_init(sound_irq_callback);
|
||||
|
||||
adc083x_init(0, ADC0838, adc0838_callback);
|
||||
init_zr107(machine);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -27,8 +27,6 @@ void K001604_draw_back_layer(int chip, bitmap_t *bitmap, const rectangle *clipre
|
||||
extern UINT8 gticlub_led_reg0;
|
||||
extern UINT8 gticlub_led_reg1;
|
||||
|
||||
static poly_manager *poly;
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
@ -36,12 +34,28 @@ static poly_manager *poly;
|
||||
|
||||
#define MAX_K001006_CHIPS 2
|
||||
|
||||
static UINT16 K001006_pal_ram[MAX_K001006_CHIPS][0x800];
|
||||
static UINT16 K001006_unknown_ram[MAX_K001006_CHIPS][0x1000];
|
||||
static UINT16 *K001006_pal_ram[MAX_K001006_CHIPS];
|
||||
static UINT16 *K001006_unknown_ram[MAX_K001006_CHIPS];
|
||||
static UINT32 K001006_addr[MAX_K001006_CHIPS] = { 0, 0 };
|
||||
static int K001006_device_sel[MAX_K001006_CHIPS] = { 0, 0 };
|
||||
|
||||
static UINT32 K001006_palette[MAX_K001006_CHIPS][0x800];
|
||||
static UINT32 *K001006_palette[MAX_K001006_CHIPS];
|
||||
|
||||
void K001006_init(running_machine *machine)
|
||||
{
|
||||
int i;
|
||||
for (i=0; i<MAX_K001006_CHIPS; i++)
|
||||
{
|
||||
K001006_pal_ram[i] = auto_malloc(0x800*sizeof(UINT16));
|
||||
memset(K001006_pal_ram[i], 0, 0x800*sizeof(UINT16));
|
||||
K001006_unknown_ram[i] = auto_malloc(0x1000*sizeof(UINT16));
|
||||
memset(K001006_unknown_ram[i], 0, 0x1000*sizeof(UINT16));
|
||||
K001006_addr[i] = 0;
|
||||
K001006_device_sel[i] = 0;
|
||||
K001006_palette[i] = auto_malloc(0x800*sizeof(UINT32));
|
||||
memset(K001006_palette[i], 0, 0x800*sizeof(UINT32));
|
||||
}
|
||||
}
|
||||
|
||||
static UINT32 K001006_r(running_machine *machine, int chip, int offset, UINT32 mem_mask)
|
||||
{
|
||||
@ -176,6 +190,11 @@ static int tex_mirror_table[4][128];
|
||||
|
||||
static int K001005_bitmap_page = 0;
|
||||
|
||||
static poly_manager *poly;
|
||||
static poly_vertex prev_v[4];
|
||||
static int prev_poly_type;
|
||||
|
||||
|
||||
void K001005_swap_buffers(running_machine *machine);
|
||||
|
||||
static void K001005_exit(running_machine *machine)
|
||||
@ -213,6 +232,16 @@ void K001005_init(running_machine *machine)
|
||||
tex_mirror_table[2][i] = ((i & 0x3f) >= 0x20) ? (0x1f - (i & 0x1f)) : i & 0x1f;
|
||||
tex_mirror_table[3][i] = ((i & 0x7f) >= 0x40) ? (0x3f - (i & 0x3f)) : i & 0x3f;
|
||||
}
|
||||
|
||||
K001005_status = 0;
|
||||
K001005_ram_ptr = 0;
|
||||
K001005_fifo_read_ptr = 0;
|
||||
K001005_fifo_write_ptr = 0;
|
||||
K001005_3d_fifo_ptr = 0;
|
||||
K001005_bitmap_page = 0;
|
||||
|
||||
memset(prev_v, 0, sizeof(prev_v));
|
||||
prev_poly_type = 0;
|
||||
}
|
||||
|
||||
// rearranges the texture data to a more practical order
|
||||
@ -524,9 +553,6 @@ static void draw_scanline_tex(void *dest, INT32 scanline, const poly_extent *ext
|
||||
}
|
||||
}
|
||||
|
||||
static poly_vertex prev_v[4];
|
||||
static int prev_poly_type;
|
||||
|
||||
static void render_polygons(running_machine *machine)
|
||||
{
|
||||
int i, j;
|
||||
@ -955,16 +981,21 @@ void K001005_swap_buffers(running_machine *machine)
|
||||
}
|
||||
}
|
||||
|
||||
VIDEO_START( gticlub )
|
||||
{
|
||||
K001005_init(machine);
|
||||
K001604_vh_start(machine, 0);
|
||||
}
|
||||
|
||||
static int tick = 0;
|
||||
static int debug_tex_page = 0;
|
||||
static int debug_tex_palette = 0;
|
||||
|
||||
VIDEO_START( gticlub )
|
||||
{
|
||||
tick = 0;
|
||||
debug_tex_page = 0;
|
||||
debug_tex_palette = 0;
|
||||
|
||||
K001006_init(machine);
|
||||
K001005_init(machine);
|
||||
K001604_vh_start(machine, 0);
|
||||
}
|
||||
|
||||
VIDEO_UPDATE( gticlub )
|
||||
{
|
||||
K001604_tile_update(screen->machine, 0);
|
||||
@ -1000,7 +1031,7 @@ VIDEO_UPDATE( gticlub )
|
||||
debug_tex_palette = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
#if 0
|
||||
if (debug_tex_page > 0)
|
||||
{
|
||||
char string[200];
|
||||
@ -1022,7 +1053,7 @@ VIDEO_UPDATE( gticlub )
|
||||
sprintf(string, "Texture page %d\nPalette %d", debug_tex_page, debug_tex_palette);
|
||||
//popmessage("%s", string);
|
||||
}
|
||||
*/
|
||||
#endif
|
||||
|
||||
draw_7segment_led(bitmap, 3, 3, gticlub_led_reg0);
|
||||
draw_7segment_led(bitmap, 9, 3, gticlub_led_reg1);
|
||||
|
@ -6,6 +6,7 @@ void K001005_preprocess_texture_data(UINT8 *rom, int length, int gticlub);
|
||||
READ32_HANDLER(K001005_r);
|
||||
WRITE32_HANDLER(K001005_w);
|
||||
|
||||
void K001006_init(running_machine *machine);
|
||||
READ32_HANDLER(K001006_0_r);
|
||||
WRITE32_HANDLER(K001006_0_w);
|
||||
READ32_HANDLER(K001006_1_r);
|
||||
|
Loading…
Reference in New Issue
Block a user