/* Konami GTI Club System
Driver by Ville Linde
Hardware overview:
GN672 CPU board:
----------------
IBM PowerPC 403GA at 32MHz (main CPU)
Motorola MC68EC000 at 16MHz (sound CPU)
Konami K056800 (MIRAC), sound system interface
Konami K056230 (LANC), LAN interface
Ricoh RF5c400 sound chip
GN678 GFX board:
----------------
Analog Devices ADSP-21062 SHARC DSP at 36MHz
Konami K001604 (2D tilemaps + 2x ROZ)
2x KS10071 (custom 3D pixel unit)
2x KS10081 (custom 3D texel unit)
Hardware configurations:
Game | ID | CPU PCB | CG Board(s) | notes
-----------------------------------------------------------------------------------------------
GTI Club | GX688 | GN672(A) | GN678(B) |
Operation Thunder Hurricane | GX792 | GN672(A) | GN678(B) | extra board for gun controls(?)
Solar Assault | GX680 | GN672(A) | GN678(B) |
Hang Pilot | GN685 | ?? | 2x ?? | 3dfx-based CG boards
Konami 'GTI Club' Hardware
Konami, 1996-1998
Known games on this hardware include....
Game (C) Year
-----------------------------------------
GTI Club Konami 1996
Jet Wave / Wave Shark Konami 1996 (video board only)
Operation Thunder Hurricane Konami 1997
Solar Assault Konami 1997
Solar Assault : Revised Konami 1998
PCB Layouts
-----------
Top Board
GN672 PWB(A)3020088
Konami 1996
|--------------------------------------------------------------|
| DRAM1M MASKROM.2S |
|CN13 NJM5532 PAL(002616) |
| SM5877 MASKROM.5S |
| AN7395S NJM5532 |
| RF5C400 MASKROM.7S |
| |
| 056800 SRAM256K MASKROM.9S |
| 058232 SRAM256K |
| RESET_SW EPROM.13K MASKROM.12U|
|5 |
|6 MASKROM.14U|
|W TEST_SW 68EC000FN16 |
|A EPROM.19R EPROM.19U|
|Y EPROM.19R EPROM.19U|
| 33.868MHz |
| PAL(002248) |---------| |
| PAL(002249) |PPC403GA | |
| 93C56 | | |
|LED PAL(002247) DRAM4MX16 | | |
| |---------| |
| 056230 DRAM4MX16 |
|SRAM64K |
| 64MHz MACH111 |
|CN4 |
| PAL(056787A) |
|CN5 |
|DSW(4) CN12 |
|--------------------------------------------------------------|
Notes:
DRAM1M - OKI M514256 1Mx4 DRAM (SOJ26/20)
SRAM64K - 8kx8 SRAM (DIP28)
SRAM256K - Fujitsu 84256 32kx8 SRAM (DIP28)
DRAM4MX16 - Hitachi HM514260 4Mx16 DRAM (SOJ42)
RF5C400 - Ricoh RF5C400 PCM 32Ch, 44.1 kHz Stereo, 3D Effect Spatializer, clock input 16.934MHz (33.868/2)
056800 - Konami Custom (QFP80)
056230 - Konami Custom (QFP80)
058232 - Konami Custom Ceramic Package (SIL14, D/A filter?)
MACH111 - AMD MACH111 PLCC44 CPLD (stamped '002246')
68EC000 - Motorola MC68EC000, running at 16.0MHz (64/4)
93C56 - EEPROM (DIP8)
PPC403GA - IBM PowerPC 403GA CPU, clock input 32.0MHz (64/2) (QFP160)
SM5877AM - Nippon Precision Circuits 3rd Order 2-Channel D/A Converter (SOIC24)
NJM5532AN - Dual Low-Noise High-Speed Audio OP Amp (DIP8)
AN7395S - Panasonic AN7395S Spatializer Audio Processor IC for 3D surround (SOIC20)
CN4/5 - Network connectors
CN12 - DIN96 connector joining to lower PCB
CN13 - Audio OUT connector
LED - Alpha-numeric 7-segment LED
ROM Usage
---------
|--------------------------------------- ROM Locations --------------------------------------|
Game 13K 2S 5S 7S 9S 12U 14U 19R 19U 21R 21U
--------------------------------------------------------------------------------------------------------------------------
GTI Club 688A07 688A12 688A11 688A10 688A09 688A06 688A05 688AAA04 688AAA02 688AAA03 688AAA01
Jet Wave - see note -
Hang Pilot 685A07 - - 685A10 685A09 685A06 685A05 685JAB04 685JAB02 685JAB03 685JAB01
Operation Thunder Hurricane 680A07 680A12 680A11 680A10 680A09 680A06 680A05 680UAA04 680UAA02 680UAA03 680UAA01
Solar Assault 792A07 792A12 792A11 792A10 792A09 792A06 792A05 792UAA04 792UAA02 792UAA03 792UAA01
Solar Assault : Revised - N/A -
Note : Jet Wave uses the lower board (GN678) from GTI Club, but it uses a different top board (ZR107 PWB(A)300769A)
Check zr107.c for details on the top board.
Operation Thunder Hurricane uses an additional top board for sound, network and analog
control functions...
GN680 PWB(E)403381B
|------------------------------------------|
|CN11 CN12 CN8 CN9 CN10 DSW(4)|
| NRPS11 NRPS11 |
| |
| LM1881 LM1881 |
| |
|LED(x4) |
| |
| 68EC000FN16 8464 |
| RESET_SW 8464 |
|32MHz 680C22.20K|
|8464 PAL(002962) |
|CN4 056230 PAL(002961) |
| PAL(056787A) PAL(002960) |
|CN5 |
|------------------------------------------|
Notes:
68000 @ 16MHz (32/2)
CN11/12 - Power connectors
CN8/9 - 6-pin analog control connectors
CN10 - 4-pin sound output connector
NRPS11 - Idec NRPS11 PC Board circuit protector
LM1881 - Video sync separator (DIP8)
Bottom Board
GN678 PWB(B)302009A
Konami 1996
|-------------------------------------------------------------------------------------------|
|CN4 MASKROM.2D |--------| SDR4M16 SDR4M16 |--------| SDR4M16 SDR4M16 |
| |KS10081 | |KS10081 | |
| MASKROM.4D | | | | SDR4M16|
| |--------| |----------| |--------| |----------| |
|CN2 MASKROM.6D | KS10071 | SDR4M16 | KS10071 | |
| | | | | |
| MASKROM.9D | | SDR4M16 | | |
| |----------| |----------| |
| MASKROM.11D SDR4M16|
| SDR4M16 SDR4M16 |
| MASKROM.13D |
| MC88916 |
| MASKROM.16D PAL(002304) |
| MC44200 PAL(002303) |
| MASKROM.18D |
| |
| 36MHz |
| AM7203 AM7203 AM7203 AM7203 |-------------| |
| 256KSRAM 256KSRAM |ANALOG | |
| |DEVICES | |
| PAL(002305) 64KSRAM 64KSRAM 256KSRAM 256KSRAM |ADSP-21062 | |
| |SHARC | |
| |--------| MACH110 |KS-160X | |
|1MSRAM |KONAMI | |-------------| |
|1MSRAM |001604 | |
|1MSRAM | | 1MSRAM 1MSRAM |
|1MSRAM |--------| |
|1MSRAM 256KSRAM 1MSRAM 1MSRAM |
|1MSRAM 256KSRAM 256KSRAM CN1 |
|-------------------------------------------------------------------------------------------|
Notes:
SDR4M16 - Fujitsu 81141622-015 4M SDRAM (TSOP50)
1MSRAM - Sharp LH521007 128kx8 SRAM (SOJ32)
256KSRAM - Cypress CY7C199 32kx8 SRAM (SOJ28)
64KSRAM - Cypress CY7C185 8kx8 SRAM (DIP28)
KS10071 - Konami Custom video chip
KS10081 - Konami Custom video chip
001604 - Konami Custom (QFP208)
MC44200FT - Motorola MC44200FT 3 Channel Video D/A Converter (QFP44)
MACH110 - AMD MACH110 or MACH111 PLCC44 CPLD (Jet Wave stamped '002302')
(GTI Club stamped '003161')
(Thund.Hurr. stamped '003161')
AM7203 - AMD AM7203 FIFO (PLCC32)
MC88916 - Motorola MC88916 Low Skew CMOS PLL Clock Driver
CN1 - 96 Pin joining connector to upper PCB
CN2 - 8-Pin 24kHz RGB OUT
CN4 - 6-Pin Power Connector
ROM Usage
---------
|---------------------- ROM Locations -----------------------|
Game 2D 4D 6D 9D 11D 13D 16D 18D
------------------------------------------------------------------------------------------
GTI Club - 688A16 - 688A15 - 688A14 - 688A13
Jet Wave - 678A16 - 678A15 - 678A14 - 678A13
Operation Thunder Hurricane - 680A16 - 680A15 - 680A14 - 680A13
Solar Assault - 792A16 - 792A15 - 792A14 - 792A13
Solar Assault : Revised - N/A -
Hang Pilot (uses an unknown but similar video board) 12W 4W
- - - - - 678A14 - 678A13
*/
#include "driver.h"
#include "cpu/m68000/m68000.h"
#include "machine/eeprom.h"
#include "cpu/powerpc/ppc.h"
#include "cpu/sharc/sharc.h"
#include "machine/konppc.h"
#include "machine/konamiic.h"
#include "sound/rf5c400.h"
#include "video/voodoo.h"
#include "video/gticlub.h"
#include "rendlay.h"
static UINT32 *work_ram;
UINT8 gticlub_led_reg0;
UINT8 gticlub_led_reg1;
int K001604_vh_start(running_machine *machine, int chip);
void K001604_draw_front_layer(int chip, bitmap_t *bitmap, const rectangle *cliprect);
void K001604_draw_back_layer(int chip, bitmap_t *bitmap, const rectangle *cliprect);
READ32_HANDLER(K001604_tile_r);
READ32_HANDLER(K001604_char_r);
WRITE32_HANDLER(K001604_tile_w);
WRITE32_HANDLER(K001604_char_w);
WRITE32_HANDLER(K001604_reg_w);
READ32_HANDLER(K001604_reg_r);
static WRITE32_HANDLER( paletteram32_w )
{
COMBINE_DATA(&paletteram32[offset]);
data = paletteram32[offset];
palette_set_color_rgb(space->machine, offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
}
static void voodoo_vblank_0(const device_config *device, int param)
{
cpu_set_input_line(device->machine->cpu[0], INPUT_LINE_IRQ0, ASSERT_LINE);
}
static void voodoo_vblank_1(const device_config *device, int param)
{
cpu_set_input_line(device->machine->cpu[0], INPUT_LINE_IRQ1, ASSERT_LINE);
}
static VIDEO_START( hangplt )
{
K001604_vh_start(machine, 0);
K001604_vh_start(machine, 1);
}
static VIDEO_UPDATE( hangplt )
{
bitmap_fill(bitmap, cliprect, screen->machine->pens[0]);
if (strcmp(screen->tag, "lscreen") == 0)
{
const device_config *voodoo = devtag_get_device(screen->machine, "voodoo0");
// K001604_draw_back_layer(bitmap, cliprect);
voodoo_update(voodoo, bitmap, cliprect);
K001604_draw_front_layer(0, bitmap, cliprect);
}
else if (strcmp(screen->tag, "rscreen") == 0)
{
const device_config *voodoo = devtag_get_device(screen->machine, "voodoo1");
// K001604_draw_back_layer(bitmap, cliprect);
voodoo_update(voodoo, bitmap, cliprect);
K001604_draw_front_layer(1, bitmap, cliprect);
}
draw_7segment_led(bitmap, 3, 3, gticlub_led_reg0);
draw_7segment_led(bitmap, 9, 3, gticlub_led_reg1);
return 0;
}
/******************************************************************/
/* 93C56 EEPROM */
static const eeprom_interface eeprom_intf =
{
8, /* address bits */
16, /* data bits */
"*110", /* read command */
"*101", /* write command */
"*111", /* erase command */
"*10000xxxxxx", /* lock command */
"*10011xxxxxx", /* unlock command */
1, /* enable_multi_read */
0 /* reset_delay */
};
static void eeprom_handler(running_machine *machine, mame_file *file, int read_or_write)
{
if (read_or_write)
{
if (file)
{
eeprom_save(file);
}
}
else
{
eeprom_init(machine, &eeprom_intf);
if (file)
{
eeprom_load(file);
}
else
{
// set default eeprom
UINT8 eepdata[0x200];
memset(eepdata, 0xff, 0x200);
if (mame_stricmp(machine->gamedrv->name, "slrasslt") == 0)
{
// magic number
eepdata[0x4] = 0x96;
eepdata[0x5] = 0x72;
}
eeprom_set_data(eepdata, 0x200);
}
}
}
static int adc1038_cycle;
static int adc1038_clk;
static int adc1038_adr;
static int adc1038_data_in;
static int adc1038_data_out;
static int adc1038_adc_data;
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)
{
//printf("ADC DO\n");
return adc1038_data_out & 1;
}
static void adc1038_di_w(int bit)
{
adc1038_data_in = bit & 1;
}
static void adc1038_clk_w(running_machine *machine, int bit)
{
// GTI Club doesn't sync on SARS
if (adc1038_gticlub_hack)
{
if (adc1038_clk == 0 && bit == 0)
{
adc1038_cycle = 0;
switch (adc1038_adr)
{
case 0: adc1038_adc_data = input_port_read(machine, "AN0"); break;
case 1: adc1038_adc_data = input_port_read(machine, "AN1"); break;
case 2: adc1038_adc_data = input_port_read(machine, "AN2"); break;
case 3: adc1038_adc_data = input_port_read(machine, "AN3"); break;
case 4: adc1038_adc_data = 0x000; break;
case 5: adc1038_adc_data = 0x000; break;
case 6: adc1038_adc_data = 0x000; break;
case 7: adc1038_adc_data = 0x000; break;
}
}
}
if (bit == 1)
{
//printf("ADC CLK, DI = %d, cycle = %d\n", adc1038_data_in, adc1038_cycle);
if (adc1038_cycle == 0) // A2
{
adc1038_adr = 0;
adc1038_adr |= (adc1038_data_in << 2);
}
else if (adc1038_cycle == 1) // A1
{
adc1038_adr |= (adc1038_data_in << 1);
}
else if (adc1038_cycle == 2) // A0
{
adc1038_adr |= (adc1038_data_in << 0);
}
adc1038_data_out = (adc1038_adc_data & 0x200) ? 1 : 0;
adc1038_adc_data <<= 1;
adc1038_cycle++;
}
adc1038_clk = bit;
}
static int adc1038_sars_r(running_machine *machine)
{
adc1038_cycle = 0;
switch (adc1038_adr)
{
case 0: adc1038_adc_data = input_port_read(machine, "AN0"); break;
case 1: adc1038_adc_data = input_port_read(machine, "AN1"); break;
case 2: adc1038_adc_data = input_port_read(machine, "AN2"); break;
case 3: adc1038_adc_data = input_port_read(machine, "AN3"); break;
case 4: adc1038_adc_data = 0x000; break;
case 5: adc1038_adc_data = 0x000; break;
case 6: adc1038_adc_data = 0x000; break;
case 7: adc1038_adc_data = 0x000; break;
}
adc1038_data_out = (adc1038_adc_data & 0x200) ? 1 : 0;
adc1038_adc_data <<= 1;
adc1038_sars ^= 1;
return adc1038_sars;
}
static READ8_HANDLER( sysreg_r )
{
static const char *const portnames[] = { "IN0", "IN1", "IN2", "IN3" };
switch (offset)
{
case 0:
case 1:
case 3:
return input_port_read(space->machine, portnames[offset]);
case 2:
return adc1038_sars_r(space->machine) << 7;
case 4:
{
// 7 0
// |?????ae?|
//
// a = ADC readout
// e = EEPROM data out
UINT32 eeprom_bit = (eeprom_read_bit() << 1);
UINT32 adc_bit = (adc1038_do_r() << 2);
return (eeprom_bit | adc_bit);
}
default:
mame_printf_debug("sysreg_r %d\n", offset);
break;
}
return 0;
}
static WRITE8_HANDLER( sysreg_w )
{
switch (offset)
{
case 0:
gticlub_led_reg0 = data;
break;
case 1:
gticlub_led_reg1 = data;
break;
case 3:
eeprom_write_bit((data & 0x01) ? 1 : 0);
eeprom_set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
eeprom_set_cs_line((data & 0x04) ? CLEAR_LINE : ASSERT_LINE);
break;
case 4:
if (data & 0x80) /* CG Board 1 IRQ Ack */
cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_IRQ1, CLEAR_LINE);
if (data & 0x40) /* CG Board 0 IRQ Ack */
cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_IRQ0, CLEAR_LINE);
adc1038_di_w((data >> 0) & 1);
adc1038_clk_w(space->machine, (data >> 1) & 1);
set_cgboard_id((data >> 4) & 0x3);
break;
}
}
/* Konami K056230 (LANC) */
READ8_HANDLER( K056230_r )
{
switch (offset)
{
case 0: // Status register
{
return 0x08;
}
}
// mame_printf_debug("K056230_r: %d at %08X\n", offset, cpu_get_pc(space->cpu));
return 0;
}
static TIMER_CALLBACK( network_irq_clear )
{
cpu_set_input_line(machine->cpu[0], INPUT_LINE_IRQ2, CLEAR_LINE);
}
WRITE8_HANDLER( K056230_w )
{
switch (offset)
{
case 0: // Mode register
{
break;
}
case 1: // Control register
{
if (data & 0x20)
{
// Thunder Hurricane breaks otherwise...
if (mame_stricmp(space->machine->gamedrv->name, "thunderh") != 0)
{
cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_IRQ2, ASSERT_LINE);
timer_set(space->machine, ATTOTIME_IN_USEC(10), NULL, 0, network_irq_clear);
}
}
// else
// cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_IRQ2, CLEAR_LINE);
break;
}
case 2: // Sub ID register
{
break;
}
}
// mame_printf_debug("K056230_w: %d, %02X at %08X\n", offset, data, cpu_get_pc(space->cpu));
}
UINT32 *lanc_ram;
READ32_HANDLER( lanc_ram_r )
{
// mame_printf_debug("LANC_RAM_r: %08X, %08X at %08X\n", offset, mem_mask, cpu_get_pc(space->cpu));
return lanc_ram[offset & 0x7ff];
}
WRITE32_HANDLER( lanc_ram_w )
{
// mame_printf_debug("LANC_RAM_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, cpu_get_pc(space->cpu));
COMBINE_DATA(lanc_ram + (offset & 0x7ff));
}
/******************************************************************/
static MACHINE_START( gticlub )
{
/* set conservative DRC options */
device_set_info_int(machine->cpu[0], CPUINFO_INT_PPC_DRC_OPTIONS, PPCDRC_COMPATIBLE_OPTIONS);
/* configure fast RAM regions for DRC */
device_set_info_int(machine->cpu[0], CPUINFO_INT_PPC_FASTRAM_SELECT, 0);
device_set_info_int(machine->cpu[0], CPUINFO_INT_PPC_FASTRAM_START, 0x00000000);
device_set_info_int(machine->cpu[0], CPUINFO_INT_PPC_FASTRAM_END, 0x000fffff);
device_set_info_ptr(machine->cpu[0], CPUINFO_PTR_PPC_FASTRAM_BASE, work_ram);
device_set_info_int(machine->cpu[0], CPUINFO_INT_PPC_FASTRAM_READONLY, 0);
}
static ADDRESS_MAP_START( gticlub_map, ADDRESS_SPACE_PROGRAM, 32 )
AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_BASE(&work_ram) /* Work RAM */
AM_RANGE(0x74000000, 0x740000ff) AM_READWRITE(K001604_reg_r, K001604_reg_w)
AM_RANGE(0x74010000, 0x7401ffff) AM_RAM_WRITE(paletteram32_w) AM_BASE(&paletteram32)
AM_RANGE(0x74020000, 0x7403ffff) AM_READWRITE(K001604_tile_r, K001604_tile_w)
AM_RANGE(0x74040000, 0x7407ffff) AM_READWRITE(K001604_char_r, K001604_char_w)
AM_RANGE(0x78000000, 0x7800ffff) AM_READWRITE(cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc)
AM_RANGE(0x78040000, 0x7804000f) AM_READWRITE(K001006_0_r, K001006_0_w)
AM_RANGE(0x78080000, 0x7808000f) AM_READWRITE(K001006_1_r, K001006_1_w)
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_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)
AM_RANGE(0x7f000000, 0x7f3fffff) AM_ROM AM_REGION("user2", 0) /* Data ROM */
AM_RANGE(0x7f800000, 0x7f9fffff) AM_ROM AM_SHARE(2)
AM_RANGE(0x7fe00000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) AM_SHARE(2) /* Program ROM */
ADDRESS_MAP_END
/**********************************************************************/
static ADDRESS_MAP_START( sound_memmap, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x200000, 0x20ffff) AM_RAM
AM_RANGE(0x300000, 0x30000f) AM_READWRITE(K056800_sound_r, K056800_sound_w)
AM_RANGE(0x400000, 0x400fff) AM_DEVREADWRITE("rf", rf5c400_r, rf5c400_w) /* Ricoh RF5C400 */
AM_RANGE(0x580000, 0x580001) AM_WRITENOP
AM_RANGE(0x600000, 0x600001) AM_WRITENOP
ADDRESS_MAP_END
/*****************************************************************************/
static UINT32 *sharc_dataram_0;
static UINT32 *sharc_dataram_1;
static READ32_HANDLER( dsp_dataram0_r )
{
return sharc_dataram_0[offset] & 0xffff;
}
static WRITE32_HANDLER( dsp_dataram0_w )
{
sharc_dataram_0[offset] = data;
}
static READ32_HANDLER( dsp_dataram1_r )
{
return sharc_dataram_1[offset] & 0xffff;
}
static WRITE32_HANDLER( dsp_dataram1_w )
{
sharc_dataram_1[offset] = data;
}
static ADDRESS_MAP_START( sharc_map, ADDRESS_SPACE_DATA, 32 )
AM_RANGE(0x400000, 0x41ffff) AM_READWRITE(cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w)
AM_RANGE(0x500000, 0x5fffff) AM_READWRITE(dsp_dataram0_r, dsp_dataram0_w)
AM_RANGE(0x600000, 0x6fffff) AM_READWRITE(K001005_r, K001005_w)
AM_RANGE(0x700000, 0x7000ff) AM_READWRITE(cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( hangplt_sharc0_map, ADDRESS_SPACE_DATA, 32 )
AM_RANGE(0x0400000, 0x041ffff) AM_READWRITE(cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w)
AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram0_r, dsp_dataram0_w)
AM_RANGE(0x1400000, 0x14fffff) AM_RAM
AM_RANGE(0x2400000, 0x27fffff) AM_DEVREADWRITE("voodoo0", nwk_voodoo_0_r, voodoo_w)
AM_RANGE(0x3400000, 0x34000ff) AM_READWRITE(cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w)
AM_RANGE(0x3401000, 0x34fffff) AM_DEVWRITE("voodoo0", nwk_fifo_0_w)
AM_RANGE(0x3500000, 0x3507fff) AM_READWRITE(K033906_0_r, K033906_0_w)
AM_RANGE(0x3600000, 0x37fffff) AM_ROMBANK(5)
ADDRESS_MAP_END
static ADDRESS_MAP_START( hangplt_sharc1_map, ADDRESS_SPACE_DATA, 32 )
AM_RANGE(0x0400000, 0x041ffff) AM_READWRITE(cgboard_1_shared_sharc_r, cgboard_1_shared_sharc_w)
AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram1_r, dsp_dataram1_w)
AM_RANGE(0x1400000, 0x14fffff) AM_RAM
AM_RANGE(0x2400000, 0x27fffff) AM_DEVREADWRITE("voodoo1", nwk_voodoo_1_r, voodoo_w)
AM_RANGE(0x3400000, 0x34000ff) AM_READWRITE(cgboard_1_comm_sharc_r, cgboard_1_comm_sharc_w)
AM_RANGE(0x3401000, 0x34fffff) AM_DEVWRITE("voodoo1", nwk_fifo_1_w)
AM_RANGE(0x3500000, 0x3507fff) AM_READWRITE(K033906_1_r, K033906_1_w)
AM_RANGE(0x3600000, 0x37fffff) AM_ROMBANK(6)
ADDRESS_MAP_END
/*****************************************************************************/
static NVRAM_HANDLER(gticlub)
{
eeprom_handler(machine, file, read_or_write);
}
static INPUT_PORTS_START( gticlub )
PORT_START("IN0")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) // View switch
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) // Shift Down
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) // Shift Up
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) // AT/MT switch
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service Button") PORT_CODE(KEYCODE_8)
PORT_BIT( 0x0b, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN1")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN2")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN3")
PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_DIPNAME( 0x03, 0x03, "Network ID" )
PORT_DIPSETTING( 0x03, "1" )
PORT_DIPSETTING( 0x02, "2" )
PORT_DIPSETTING( 0x01, "3" )
PORT_DIPSETTING( 0x00, "4" )
PORT_DIPNAME( 0x04, 0x04, "DIP3" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "DIP4" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("AN0") /* mask default type sens delta min max */
PORT_BIT( 0x3ff, 0x200, IPT_PADDLE ) PORT_MINMAX(0x000,0x3ff) PORT_SENSITIVITY(35) PORT_KEYDELTA(5)
PORT_START("AN1")
PORT_BIT( 0x3ff, 0x000, IPT_PEDAL ) PORT_MINMAX(0x000,0x3ff) PORT_SENSITIVITY(35) PORT_KEYDELTA(5)
PORT_START("AN2")
PORT_BIT( 0x3ff, 0x000, IPT_PEDAL2 ) PORT_MINMAX(0x000,0x3ff) PORT_SENSITIVITY(35) PORT_KEYDELTA(5)
PORT_START("AN3")
PORT_BIT( 0x3ff, 0x000, IPT_PEDAL3 ) PORT_MINMAX(0x000,0x3ff) PORT_SENSITIVITY(35) PORT_KEYDELTA(5)
INPUT_PORTS_END
static INPUT_PORTS_START( slrasslt )
PORT_START("IN0")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) // View Shift
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) // Trigger
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) // Missile
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) // Power Up
PORT_START("IN1")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
PORT_START("IN2")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN3")
PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service Button") PORT_CODE(KEYCODE_8)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_DIPNAME( 0x01, 0x01, "DIP1" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, "DIP2" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "DIP3" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "DIP4" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("AN0")
PORT_BIT( 0x3ff, 0x000, IPT_AD_STICK_Y ) PORT_MINMAX(0x000,0x3ff) PORT_SENSITIVITY(35) PORT_KEYDELTA(5)
PORT_START("AN1")
PORT_BIT( 0x3ff, 0x000, IPT_AD_STICK_X ) PORT_MINMAX(0x000,0x3ff) PORT_SENSITIVITY(35) PORT_KEYDELTA(5) PORT_REVERSE
PORT_START("AN2")
PORT_BIT( 0x3ff, 0x000, IPT_UNUSED )
PORT_START("AN3")
PORT_BIT( 0x3ff, 0x000, IPT_UNUSED )
INPUT_PORTS_END
static INPUT_PORTS_START( thunderh )
PORT_START("IN0")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_START("IN1")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_START("IN2")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN3")
PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service Button") PORT_CODE(KEYCODE_8)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_DIPNAME( 0x01, 0x00, "DIP1" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, "DIP2" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "DIP3" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "DIP4" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( hangplt )
PORT_START("IN0")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x07, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN1")
PORT_BIT( 0x8f, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) // Push limit switch
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) // Pull limit switch
PORT_START("IN2")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN3")
PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service Button") PORT_CODE(KEYCODE_8)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_DIPNAME( 0x08, 0x08, "DIP4" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "DIP3" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x00, "Disable Test Mode" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x01, 0x00, "Disable Machine Init" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("AN0")
PORT_BIT( 0x3ff, 0x000, IPT_UNKNOWN )
PORT_START("AN1")
PORT_BIT( 0x3ff, 0x000, IPT_UNKNOWN )
PORT_START("AN2")
PORT_BIT( 0x3ff, 0x000, IPT_UNKNOWN )
PORT_START("AN3")
PORT_BIT( 0x3ff, 0x000, IPT_UNKNOWN )
INPUT_PORTS_END
/* PowerPC interrupts
IRQ0: Vblank
IRQ2: LANC
DMA0
*/
static INTERRUPT_GEN( gticlub_vblank )
{
cpu_set_input_line(device, INPUT_LINE_IRQ0, ASSERT_LINE);
}
static const sharc_config sharc_cfg =
{
BOOT_MODE_EPROM
};
static MACHINE_RESET( gticlub )
{
cpu_set_input_line(machine->cpu[2], INPUT_LINE_RESET, ASSERT_LINE);
}
static MACHINE_DRIVER_START( gticlub )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", PPC403GA, 64000000/2) /* PowerPC 403GA 32MHz */
MDRV_CPU_PROGRAM_MAP(gticlub_map, 0)
MDRV_CPU_VBLANK_INT("screen", gticlub_vblank)
MDRV_CPU_ADD("audiocpu", M68000, 64000000/4) /* 16MHz */
MDRV_CPU_PROGRAM_MAP(sound_memmap, 0)
MDRV_CPU_ADD("dsp", ADSP21062, 36000000)
MDRV_CPU_CONFIG(sharc_cfg)
MDRV_CPU_DATA_MAP(sharc_map, 0)
MDRV_QUANTUM_TIME(HZ(6000))
MDRV_NVRAM_HANDLER(gticlub)
MDRV_MACHINE_START(gticlub)
MDRV_MACHINE_RESET(gticlub)
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MDRV_SCREEN_SIZE(512, 384)
MDRV_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
MDRV_PALETTE_LENGTH(65536)
MDRV_VIDEO_START(gticlub)
MDRV_VIDEO_UPDATE(gticlub)
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MDRV_SOUND_ADD("rf", RF5C400, 64000000/4)
MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_DRIVER_END
static MACHINE_RESET( hangplt )
{
cpu_set_input_line(machine->cpu[2], INPUT_LINE_RESET, ASSERT_LINE);
cpu_set_input_line(machine->cpu[3], INPUT_LINE_RESET, ASSERT_LINE);
}
static MACHINE_DRIVER_START( hangplt )
/* basic machine hardware */
MDRV_CPU_ADD("maincpu", PPC403GA, 64000000/2) /* PowerPC 403GA 32MHz */
MDRV_CPU_PROGRAM_MAP(gticlub_map, 0)
MDRV_CPU_ADD("audiocpu", M68000, 64000000/4) /* 16MHz */
MDRV_CPU_PROGRAM_MAP(sound_memmap, 0)
MDRV_CPU_ADD("dsp1", ADSP21062, 36000000)
MDRV_CPU_CONFIG(sharc_cfg)
MDRV_CPU_DATA_MAP(hangplt_sharc0_map, 0)
MDRV_CPU_ADD("dsp2", ADSP21062, 36000000)
MDRV_CPU_CONFIG(sharc_cfg)
MDRV_CPU_DATA_MAP(hangplt_sharc1_map, 0)
MDRV_QUANTUM_TIME(HZ(6000))
MDRV_NVRAM_HANDLER(gticlub)
MDRV_MACHINE_START(gticlub)
MDRV_MACHINE_RESET(hangplt)
MDRV_3DFX_VOODOO_1_ADD("voodoo0", STD_VOODOO_1_CLOCK, 2, "lscreen")
MDRV_3DFX_VOODOO_CPU("dsp1")
MDRV_3DFX_VOODOO_TMU_MEMORY(0, 2)
MDRV_3DFX_VOODOO_TMU_MEMORY(1, 2)
MDRV_3DFX_VOODOO_VBLANK(voodoo_vblank_0)
MDRV_3DFX_VOODOO_1_ADD("voodoo1", STD_VOODOO_1_CLOCK, 2, "rscreen")
MDRV_3DFX_VOODOO_CPU("dsp2")
MDRV_3DFX_VOODOO_TMU_MEMORY(0, 2)
MDRV_3DFX_VOODOO_TMU_MEMORY(1, 2)
MDRV_3DFX_VOODOO_VBLANK(voodoo_vblank_1)
/* video hardware */
MDRV_PALETTE_LENGTH(65536)
MDRV_SCREEN_ADD("lscreen", RASTER)
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MDRV_SCREEN_REFRESH_RATE(60)
MDRV_SCREEN_SIZE(512, 384)
MDRV_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
MDRV_SCREEN_ADD("rscreen", RASTER)
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
MDRV_SCREEN_REFRESH_RATE(60)
MDRV_SCREEN_SIZE(512, 384)
MDRV_SCREEN_VISIBLE_AREA(0, 511, 0, 383)
MDRV_VIDEO_START(hangplt)
MDRV_VIDEO_UPDATE(hangplt)
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MDRV_SOUND_ADD("rf", RF5C400, 64000000/4)
MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
MACHINE_DRIVER_END
/*************************************************************************/
ROM_START(gticlub) /* Euro version EAA */
ROM_REGION(0x200000, "user1", 0) /* PowerPC program roms */
ROM_LOAD32_BYTE("688eaa01.21u", 0x000003, 0x80000, CRC(824944ad) SHA1(a7bb86a2495e0579f5d82808aeed4895be2dbe3b) )
ROM_LOAD32_BYTE("688eaa02.19u", 0x000002, 0x80000, CRC(88e7bfb9) SHA1(fc0e945291204ee0c82bbd2c81ff241e1565c6ae) )
ROM_LOAD32_BYTE("688eaa03.21r", 0x000001, 0x80000, CRC(ea1c696b) SHA1(fd778afaa1de3a35b38a67b8e4c9a08fe9cf1b9e) )
ROM_LOAD32_BYTE("688eaa04.19r", 0x000000, 0x80000, CRC(94fa2334) SHA1(04edf840f841b9713fa93e7ebb6aad2000b738c0) )
ROM_REGION32_BE(0x400000, "user2", 0) /* data roms */
ROM_LOAD32_WORD_SWAP("688a05.14u", 0x000000, 0x200000, CRC(7caa3f80) SHA1(28409dc17c4e010173396fdc069a409fbea0d58d) )
ROM_LOAD32_WORD_SWAP("688a06.12u", 0x000002, 0x200000, CRC(83e7ce0a) SHA1(afe185f6ed700baaf4c8affddc29f8afdfec4423) )
ROM_REGION(0x80000, "audiocpu", 0) /* 68k program */
ROM_LOAD16_WORD_SWAP( "688a07.13k", 0x000000, 0x040000, CRC(f0805f06) SHA1(4b87e02b89e7ea812454498603767668e4619025) )
ROM_REGION(0x800000, "rf", 0) /* sound roms */
ROM_LOAD( "688a09.9s", 0x000000, 0x200000, CRC(fb582963) SHA1(ce8fe6a4d7ac7d7f4b6591f9150b1d351e636354) )
ROM_LOAD( "688a10.7s", 0x200000, 0x200000, CRC(b3ddc5f1) SHA1(a3f76c86e85eb17f20efb037c1ad64e9cb8566c8) )
ROM_LOAD( "688a11.5s", 0x400000, 0x200000, CRC(fc706183) SHA1(c8ce6de0588be1023ef48577bc88a4e5effdcd25) )
ROM_LOAD( "688a12.2s", 0x600000, 0x200000, CRC(510c70e3) SHA1(5af77bc98772ab7961308c3af0a80cb1bca690e3) )
ROM_REGION(0x800000, "gfx1", 0) /* texture roms */
ROM_LOAD64_WORD( "688a13.18d", 0x000000, 0x200000, CRC(c8f04f91) SHA1(9da8cc3a94dbf0a1fce87c2bc9249df712ae0b0d) )
ROM_LOAD64_WORD( "688a14.13d", 0x000002, 0x200000, CRC(b9932735) SHA1(2492244d2acb350974202a6718bc7121325d2121) )
ROM_LOAD64_WORD( "688a15.9d", 0x000004, 0x200000, CRC(8aadee51) SHA1(be9020a47583da9d4ff586d227836dc5b7dc31f0) )
ROM_LOAD64_WORD( "688a16.4d", 0x000006, 0x200000, CRC(7f4e1893) SHA1(585be7b31ab7a48300c22b00443b00d631f4c49d) )
ROM_END
ROM_START(gticluba) /* Asia version AAA */
ROM_REGION(0x200000, "user1", 0) /* PowerPC program roms */
ROM_LOAD32_BYTE("688aaa01.21u", 0x000003, 0x80000, CRC(06a56474) SHA1(3a457b885a35e3ee030fd51d847bcf75fce46208) )
ROM_LOAD32_BYTE("688aaa02.19u", 0x000002, 0x80000, CRC(3c1e714a) SHA1(557f8542b855b2b35f242c8db7396017aca6dbd8) )
ROM_LOAD32_BYTE("688aaa03.21r", 0x000001, 0x80000, CRC(e060580b) SHA1(50242f3f3b949cc03082e4e75d9dcc89e17f0a75) )
ROM_LOAD32_BYTE("688aaa04.19r", 0x000000, 0x80000, CRC(928c23cd) SHA1(cce54398e1e5b98bfb717839cc422f1f60502788) )
ROM_REGION32_BE(0x400000, "user2", 0) /* data roms */
ROM_LOAD32_WORD_SWAP("688a05.14u", 0x000000, 0x200000, CRC(7caa3f80) SHA1(28409dc17c4e010173396fdc069a409fbea0d58d) )
ROM_LOAD32_WORD_SWAP("688a06.12u", 0x000002, 0x200000, CRC(83e7ce0a) SHA1(afe185f6ed700baaf4c8affddc29f8afdfec4423) )
ROM_REGION(0x80000, "audiocpu", 0) /* 68k program */
ROM_LOAD16_WORD_SWAP( "688a07.13k", 0x000000, 0x040000, CRC(f0805f06) SHA1(4b87e02b89e7ea812454498603767668e4619025) )
ROM_REGION(0x800000, "rf", 0) /* sound roms */
ROM_LOAD( "688a09.9s", 0x000000, 0x200000, CRC(fb582963) SHA1(ce8fe6a4d7ac7d7f4b6591f9150b1d351e636354) )
ROM_LOAD( "688a10.7s", 0x200000, 0x200000, CRC(b3ddc5f1) SHA1(a3f76c86e85eb17f20efb037c1ad64e9cb8566c8) )
ROM_LOAD( "688a11.5s", 0x400000, 0x200000, CRC(fc706183) SHA1(c8ce6de0588be1023ef48577bc88a4e5effdcd25) )
ROM_LOAD( "688a12.2s", 0x600000, 0x200000, CRC(510c70e3) SHA1(5af77bc98772ab7961308c3af0a80cb1bca690e3) )
ROM_REGION(0x800000, "gfx1", 0) /* texture roms */
ROM_LOAD64_WORD( "688a13.18d", 0x000000, 0x200000, CRC(c8f04f91) SHA1(9da8cc3a94dbf0a1fce87c2bc9249df712ae0b0d) )
ROM_LOAD64_WORD( "688a14.13d", 0x000002, 0x200000, CRC(b9932735) SHA1(2492244d2acb350974202a6718bc7121325d2121) )
ROM_LOAD64_WORD( "688a15.9d", 0x000004, 0x200000, CRC(8aadee51) SHA1(be9020a47583da9d4ff586d227836dc5b7dc31f0) )
ROM_LOAD64_WORD( "688a16.4d", 0x000006, 0x200000, CRC(7f4e1893) SHA1(585be7b31ab7a48300c22b00443b00d631f4c49d) )
ROM_END
ROM_START(gticlubj) /* Japan version JAA */
ROM_REGION(0x200000, "user1", 0) /* PowerPC program roms */
ROM_LOAD32_BYTE("688jaa01.21u", 0x000003, 0x80000, CRC(1492059c) SHA1(176dbd87f23f4cd8e1397e67da501738e20e5a57) )
ROM_LOAD32_BYTE("688jaa02.19u", 0x000002, 0x80000, CRC(7896dd69) SHA1(a3ab7b872132a5e66238e414f4b497cf7beb8b1c) )
ROM_LOAD32_BYTE("688jaa03.21r", 0x000001, 0x80000, CRC(94e2be50) SHA1(f206ac201903f3aae29196ab6fccdef104859346) )
ROM_LOAD32_BYTE("688jaa04.19r", 0x000000, 0x80000, CRC(ff539bb6) SHA1(1a225eca4377d82a2b6cb99c1d16580b9ccf2f08) )
ROM_REGION32_BE(0x400000, "user2", 0) /* data roms */
ROM_LOAD32_WORD_SWAP("688a05.14u", 0x000000, 0x200000, CRC(7caa3f80) SHA1(28409dc17c4e010173396fdc069a409fbea0d58d) )
ROM_LOAD32_WORD_SWAP("688a06.12u", 0x000002, 0x200000, CRC(83e7ce0a) SHA1(afe185f6ed700baaf4c8affddc29f8afdfec4423) )
ROM_REGION(0x80000, "audiocpu", 0) /* 68k program */
ROM_LOAD16_WORD_SWAP( "688a07.13k", 0x000000, 0x040000, CRC(f0805f06) SHA1(4b87e02b89e7ea812454498603767668e4619025) )
ROM_REGION(0x800000, "rf", 0) /* sound roms */
ROM_LOAD( "688a09.9s", 0x000000, 0x200000, CRC(fb582963) SHA1(ce8fe6a4d7ac7d7f4b6591f9150b1d351e636354) )
ROM_LOAD( "688a10.7s", 0x200000, 0x200000, CRC(b3ddc5f1) SHA1(a3f76c86e85eb17f20efb037c1ad64e9cb8566c8) )
ROM_LOAD( "688a11.5s", 0x400000, 0x200000, CRC(fc706183) SHA1(c8ce6de0588be1023ef48577bc88a4e5effdcd25) )
ROM_LOAD( "688a12.2s", 0x600000, 0x200000, CRC(510c70e3) SHA1(5af77bc98772ab7961308c3af0a80cb1bca690e3) )
ROM_REGION(0x800000, "gfx1", 0) /* texture roms */
ROM_LOAD64_WORD( "688a13.18d", 0x000000, 0x200000, CRC(c8f04f91) SHA1(9da8cc3a94dbf0a1fce87c2bc9249df712ae0b0d) )
ROM_LOAD64_WORD( "688a14.13d", 0x000002, 0x200000, CRC(b9932735) SHA1(2492244d2acb350974202a6718bc7121325d2121) )
ROM_LOAD64_WORD( "688a15.9d", 0x000004, 0x200000, CRC(8aadee51) SHA1(be9020a47583da9d4ff586d227836dc5b7dc31f0) )
ROM_LOAD64_WORD( "688a16.4d", 0x000006, 0x200000, CRC(7f4e1893) SHA1(585be7b31ab7a48300c22b00443b00d631f4c49d) )
ROM_END
ROM_START( thunderh ) /* Euro version EAA */
ROM_REGION(0x200000, "user1", 0) /* PowerPC program roms */
ROM_LOAD32_BYTE( "680eaa01.21u", 0x000003, 0x080000, CRC(796e2678) SHA1(8051a228aa6d1a3f1fef26de15f4fdb785c2c8ee) )
ROM_LOAD32_BYTE( "680eaa02.19u", 0x000002, 0x080000, CRC(767e6db0) SHA1(0f29f56fe485f30100ce54e64bda5d5a124c1d09) )
ROM_LOAD32_BYTE( "680eaa03.21r", 0x000001, 0x080000, CRC(5a5b59b5) SHA1(542c0722437f40829559b09120fde995246d52ae) )
ROM_LOAD32_BYTE( "680eaa04.19r", 0x000000, 0x080000, CRC(4a973a5c) SHA1(1d84f6416c3b5a85d7ebfbc15fc08e0dd8dc2414) )
ROM_REGION32_BE(0x400000, "user2", 0) /* data roms */
ROM_LOAD32_WORD_SWAP( "680a05.14u", 0x000000, 0x200000, CRC(0c9f334d) SHA1(99ac622a04a7140244d81031df69a796b6fd2657) )
ROM_LOAD32_WORD_SWAP( "680a06.12u", 0x000002, 0x200000, CRC(83074217) SHA1(bbf782ac125cd98d9147ef4e0373bf61f74726f7) )
ROM_REGION(0x80000, "audiocpu", 0) /* 68k program */
ROM_LOAD16_WORD_SWAP( "680a07.13k", 0x000000, 0x080000, CRC(12247a3e) SHA1(846cd9423efd3c9b17fce08393c6c83307d72f92) )
ROM_REGION(0x20000, "dsp", 0) /* 68k program for outboard sound? network? board */
ROM_LOAD16_WORD_SWAP( "680c22.20k", 0x000000, 0x020000, CRC(d93c0ee2) SHA1(4b58418cbb01b51e12d6e7c86b2c81cd35d86248) )
ROM_REGION(0x800000, "rf", 0) /* sound roms */
ROM_LOAD( "680a09.9s", 0x000000, 0x200000, CRC(71c2b049) SHA1(ce360172c8774b31edf16a80104c35b1caf26cd9) )
ROM_LOAD( "680a10.7s", 0x200000, 0x200000, CRC(19882bf3) SHA1(7287da58853c84cbadbfb42bed37f2b0032c4b4d) )
ROM_LOAD( "680a11.5s", 0x400000, 0x200000, CRC(0c74fe3f) SHA1(2e69f8d37552a74bbda65b134f747b4380ed33b0) )
ROM_LOAD( "680a12.2s", 0x600000, 0x200000, CRC(b052919d) SHA1(a61c8eaf378ab7d780478db61217302d1b9f8f73) )
ROM_REGION(0x800000, "gfx1", 0) /* texture roms */
ROM_LOAD64_WORD( "680a13.18d", 0x000000, 0x200000, CRC(233f9074) SHA1(78ce42c35407d61df37cc0d16cdee84f8de968fa) )
ROM_LOAD64_WORD( "680a14.13d", 0x000002, 0x200000, CRC(9ae15033) SHA1(12e291114629632b81f53811a6c8666aff4e92f3) )
ROM_LOAD64_WORD( "680a15.9d", 0x000004, 0x200000, CRC(dc47c86f) SHA1(71af9b21f1ecc063135f501b1561869ee910c236) )
ROM_LOAD64_WORD( "680a16.4d", 0x000006, 0x200000, CRC(ea388143) SHA1(3de5314a009d702186d5e285c8edefdd48139eab) )
ROM_END
ROM_START( thundrhu ) /* USA version UAA */
ROM_REGION(0x200000, "user1", 0) /* PowerPC program roms */
ROM_LOAD32_BYTE( "680uaa01.21u", 0x000003, 0x080000, CRC(f2bb2ba1) SHA1(311e88d63179486014376c4af4ff0ef28673ee5a) )
ROM_LOAD32_BYTE( "680uaa02.19u", 0x000002, 0x080000, CRC(52f617b5) SHA1(fda3133d3a7e04eb4432c69becdcf1872b3660d9) )
ROM_LOAD32_BYTE( "680uaa03.21r", 0x000001, 0x080000, CRC(086a0574) SHA1(32fb93dbb93d2fe6af743ea4310b50a6cd03647d) )
ROM_LOAD32_BYTE( "680uaa04.19r", 0x000000, 0x080000, CRC(85e1f8e3) SHA1(9172c54b6663f1bf390795068271198083a6860d) )
ROM_REGION32_BE(0x400000, "user2", 0) /* data roms */
ROM_LOAD32_WORD_SWAP( "680a05.14u", 0x000000, 0x200000, CRC(0c9f334d) SHA1(99ac622a04a7140244d81031df69a796b6fd2657) )
ROM_LOAD32_WORD_SWAP( "680a06.12u", 0x000002, 0x200000, CRC(83074217) SHA1(bbf782ac125cd98d9147ef4e0373bf61f74726f7) )
ROM_REGION(0x80000, "audiocpu", 0) /* 68k program */
ROM_LOAD16_WORD_SWAP( "680a07.13k", 0x000000, 0x080000, CRC(12247a3e) SHA1(846cd9423efd3c9b17fce08393c6c83307d72f92) )
ROM_REGION(0x20000, "dsp", 0) /* 68k program for outboard sound? network? board */
ROM_LOAD16_WORD_SWAP( "680c22.20k", 0x000000, 0x020000, CRC(d93c0ee2) SHA1(4b58418cbb01b51e12d6e7c86b2c81cd35d86248) )
ROM_REGION(0x800000, "rf", 0) /* sound roms */
ROM_LOAD( "680a09.9s", 0x000000, 0x200000, CRC(71c2b049) SHA1(ce360172c8774b31edf16a80104c35b1caf26cd9) )
ROM_LOAD( "680a10.7s", 0x200000, 0x200000, CRC(19882bf3) SHA1(7287da58853c84cbadbfb42bed37f2b0032c4b4d) )
ROM_LOAD( "680a11.5s", 0x400000, 0x200000, CRC(0c74fe3f) SHA1(2e69f8d37552a74bbda65b134f747b4380ed33b0) )
ROM_LOAD( "680a12.2s", 0x600000, 0x200000, CRC(b052919d) SHA1(a61c8eaf378ab7d780478db61217302d1b9f8f73) )
ROM_REGION(0x800000, "gfx1", 0) /* texture roms */
ROM_LOAD64_WORD( "680a13.18d", 0x000000, 0x200000, CRC(233f9074) SHA1(78ce42c35407d61df37cc0d16cdee84f8de968fa) )
ROM_LOAD64_WORD( "680a14.13d", 0x000002, 0x200000, CRC(9ae15033) SHA1(12e291114629632b81f53811a6c8666aff4e92f3) )
ROM_LOAD64_WORD( "680a15.9d", 0x000004, 0x200000, CRC(dc47c86f) SHA1(71af9b21f1ecc063135f501b1561869ee910c236) )
ROM_LOAD64_WORD( "680a16.4d", 0x000006, 0x200000, CRC(ea388143) SHA1(3de5314a009d702186d5e285c8edefdd48139eab) )
ROM_END
ROM_START( slrasslt ) /* USA version UAA */
ROM_REGION(0x200000, "user1", 0) /* PowerPC program roms */
ROM_LOAD32_BYTE( "792uaa01.21u", 0x000003, 0x080000, CRC(c73bf7fb) SHA1(ffe0fea155473827929339a9261a158287ce30a8) )
ROM_LOAD32_BYTE( "792uaa02.19u", 0x000002, 0x080000, CRC(a940bb9b) SHA1(65a60157697a21cc2485c02c689c9addb3ac91f1) )
ROM_LOAD32_BYTE( "792uaa03.21r", 0x000001, 0x080000, CRC(363e8411) SHA1(b9c70033d8e3de4b339b61a66172bfecb7c2b3ab) )
ROM_LOAD32_BYTE( "792uaa04.19r", 0x000000, 0x080000, CRC(7910d99c) SHA1(e2114d369060528998b58331d590c086d306f541) )
ROM_REGION32_BE(0x400000, "user2", 0) /* data roms */
ROM_LOAD32_WORD_SWAP( "792a05.14u", 0x000000, 0x200000, CRC(9a27edfc) SHA1(c028b6440eb1b0c814c4db45918e580662ac2d9a) )
ROM_LOAD32_WORD_SWAP( "792a06.12u", 0x000002, 0x200000, CRC(c272f171) SHA1(df492287eadc5e8668fe46cfa3ed3ca77c57feca) )
ROM_REGION(0x80000, "audiocpu", 0) /* 68k program */
ROM_LOAD16_WORD_SWAP( "792a07.10k", 0x000000, 0x080000, CRC(89a65ad1) SHA1(d814ef0b560c8e68da57ad5c6096e4fc05e9913e) )
ROM_REGION(0x800000, "rf", 0) /* sound roms */
ROM_LOAD( "792a09.9s", 0x000000, 0x200000, CRC(7d7ea427) SHA1(a9a311a7c17223cc87140fe2890e20a321464831) )
ROM_LOAD( "792a10.7s", 0x200000, 0x200000, CRC(e585e5d9) SHA1(ec44ad324a66eeea4c45933dda5a8a9a4398879d) )
ROM_LOAD( "792a11.5s", 0x400000, 0x200000, CRC(c9c3a04c) SHA1(f834659f67712c9fcd93b7407669d7f35517b790) )
ROM_LOAD( "792a12.2s", 0x600000, 0x200000, CRC(da8fcdd5) SHA1(daa7b3a086ada69e93c3d7cd9130befc79e422dc) )
ROM_REGION(0x800000, "gfx1", 0) /* texture roms */
ROM_LOAD64_WORD( "792a13.18d", 0x000000, 0x200000, CRC(16d6a134) SHA1(3f53f3c6759d7c5f40aa25a598df899fbac35a60) )
ROM_LOAD64_WORD( "792a14.13d", 0x000002, 0x200000, CRC(cf57e830) SHA1(607b4dec3b8180a63e29d9dab1ca28d7226dda1e) )
ROM_LOAD64_WORD( "792a15.9d", 0x000004, 0x200000, CRC(1c5531cb) SHA1(1b514f181c92e16d07bfe4719604f1e4caf15377) )
ROM_LOAD64_WORD( "792a16.4d", 0x000006, 0x200000, CRC(df89e392) SHA1(af37c5460d43bf8d8a1ab4213c4528083a7363c2) )
ROM_END
ROM_START( hangplt ) /* Japan version JAB */
ROM_REGION(0x200000, "user1", 0) /* PowerPC program roms */
ROM_LOAD32_BYTE( "685jab01.21u", 0x000003, 0x080000, CRC(f98a3e82) SHA1(94ebaa172b0e98c5cd08efaea5f56e707e5032b4) )
ROM_LOAD32_BYTE( "685jab02.19u", 0x000002, 0x080000, CRC(20730cdc) SHA1(71b2cf7077ab7db875f9030e21afd05905f57ce5) )
ROM_LOAD32_BYTE( "685jab03.21r", 0x000001, 0x080000, CRC(77fa2248) SHA1(a662b84945b3d268fed15952cc793d821233735e) )
ROM_LOAD32_BYTE( "685jab04.19r", 0x000000, 0x080000, CRC(ab6773df) SHA1(91d3f849a1cc5fa4b2fbd876d53402a548198c41) )
ROM_REGION32_BE(0x400000, "user2", 0) /* data roms */
ROM_LOAD32_WORD_SWAP( "685a05.14u", 0x000000, 0x200000, CRC(ba1c8f40) SHA1(ce4ed641c1d6d44447eaaada16f305f1d7fb9ee2) )
ROM_LOAD32_WORD_SWAP( "685a06.12u", 0x000002, 0x200000, CRC(2429935c) SHA1(4da9e169adcac81ea1bc135d727c2bd13ad372fa) )
ROM_REGION(0x80000, "audiocpu", 0) /* 68k program */
ROM_LOAD16_WORD_SWAP( "685a07.13k", 0x000000, 0x080000, CRC(5b72fd80) SHA1(a150837fa0d66dc0c3832495a4c8ce4f9b92cd98) )
ROM_REGION(0x1000000, "rf", 0) /* other roms */
ROM_LOAD( "685a09.9s", 0x000000, 0x200000, CRC(653821cf) SHA1(625abb7769a52c9ac61cfddaa084b9c9539f3b15) )
ROM_LOAD( "685a10.7s", 0x200000, 0x200000, CRC(71eb06e5) SHA1(3c5953e87df63fb7680d7a04267ff2208f49838f) )
ROM_REGION(0x800000, "user5", 0) /* texture roms */
ROM_LOAD32_WORD( "685a13.4w", 0x000002, 0x400000, CRC(06329af4) SHA1(76cad9db604751ce48bb67bfd29e57bac0ee9a16) )
ROM_LOAD32_WORD( "685a14.12w", 0x000000, 0x400000, CRC(87437739) SHA1(0d45637af40938a54d5efd29c125b0fafd55f9a4) )
ROM_END
static TIMER_CALLBACK( irq_off )
{
cpu_set_input_line(machine->cpu[1], param, CLEAR_LINE);
}
static void sound_irq_callback(running_machine *machine, int irq)
{
int line = (irq == 0) ? INPUT_LINE_IRQ1 : INPUT_LINE_IRQ2;
cpu_set_input_line(machine->cpu[1], line, ASSERT_LINE);
timer_set(machine, ATTOTIME_IN_USEC(1), NULL, line, irq_off);
}
static DRIVER_INIT(gticlub)
{
init_konami_cgboard(machine, 1, CGBOARD_TYPE_GTICLUB);
sharc_dataram_0 = auto_malloc(0x100000);
gticlub_led_reg0 = gticlub_led_reg1 = 0x7f;
K001005_preprocess_texture_data(memory_region(machine, "gfx1"), memory_region_length(machine, "gfx1"), 1);
K056800_init(machine, sound_irq_callback);
adc1038_init(machine);
}
static DRIVER_INIT(hangplt)
{
init_konami_cgboard(machine, 2, CGBOARD_TYPE_HANGPLT);
set_cgboard_texture_bank(machine, 0, 5, memory_region(machine, "user5"));
set_cgboard_texture_bank(machine, 1, 6, memory_region(machine, "user5"));
sharc_dataram_0 = auto_malloc(0x100000);
sharc_dataram_1 = auto_malloc(0x100000);
gticlub_led_reg0 = gticlub_led_reg1 = 0x7f;
K056800_init(machine, sound_irq_callback);
K033906_init(machine);
adc1038_init(machine);
}
/*************************************************************************/
GAME( 1996, gticlub, 0, gticlub, gticlub, gticlub, ROT0, "Konami", "GTI Club (ver EAA)", GAME_NOT_WORKING|GAME_NO_SOUND )
GAME( 1996, gticluba, gticlub, 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 EAA)", GAME_NOT_WORKING|GAME_NO_SOUND )
GAME( 1996, thundrhu, thunderh, gticlub, thunderh, gticlub, ROT0, "Konami", "Operation Thunder Hurricane (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 )