From db86be935face855fa7bde117e17692a9fa005d0 Mon Sep 17 00:00:00 2001 From: Brian Troha Date: Wed, 9 Dec 2009 19:31:02 +0000 Subject: [PATCH] new games added: Rapid Fire Adds Rapid Fire v1.0 & v1.1 revert if needed No whatsnew please --- src/mame/drivers/tickee.c | 369 ++++++++++++++++++++++++++++++++++++-- src/mame/mamedriv.c | 2 + 2 files changed, 357 insertions(+), 14 deletions(-) diff --git a/src/mame/drivers/tickee.c b/src/mame/drivers/tickee.c index 649465008e4..89c3c6c711e 100644 --- a/src/mame/drivers/tickee.c +++ b/src/mame/drivers/tickee.c @@ -1,6 +1,7 @@ /*************************************************************************** Raster Elite Tickee Tickats hardware + + variations driver by Aaron Giles @@ -8,6 +9,7 @@ * Tickee Tickats * Ghost Hunter * Tuts Tomb + * Rapid Fire Known bugs: * (Tickee) gun sometimes misfires @@ -19,11 +21,11 @@ #include "machine/ticket.h" #include "video/tlc34076.h" #include "sound/ay8910.h" - +#include "sound/okim6295.h" #define CPU_CLOCK XTAL_40MHz #define VIDEO_CLOCK XTAL_14_31818MHz - +#define OKI_CLOCK XTAL_1MHz /* local variables */ @@ -31,7 +33,10 @@ static UINT16 *tickee_control; static UINT16 *tickee_vram; static emu_timer *setup_gun_timer; - +static int beamxadd; +static int beamyadd; +static int palette_bank; +static UINT8 gunx[2]; /************************************* * @@ -57,11 +62,20 @@ INLINE void get_crosshair_xy(running_machine *machine, int player, int *x, int * static TIMER_CALLBACK( trigger_gun_interrupt ) { + int which = param & 1; + int beamx = (video_screen_get_hpos(machine->primary_screen)/2)-58; + + /* once we're ready to fire, set the X coordinate and assert the line */ + gunx[which] = beamx; + /* fire the IRQ at the correct moment */ cputag_set_input_line(machine, "maincpu", param, ASSERT_LINE); } + + + static TIMER_CALLBACK( clear_gun_interrupt ) { /* clear the IRQ on the next scanline? */ @@ -77,22 +91,24 @@ static TIMER_CALLBACK( setup_gun_interrupts ) timer_adjust_oneshot(setup_gun_timer, video_screen_get_time_until_pos(machine->primary_screen, 0, 0), 0); /* only do work if the palette is flashed */ - if (!tickee_control[2]) - return; + if (tickee_control) + if (!tickee_control[2]) + return; /* generate interrupts for player 1's gun */ get_crosshair_xy(machine, 0, &beamx, &beamy); - timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, beamy, beamx + 50), NULL, 0, trigger_gun_interrupt); - timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, beamy + 1, beamx + 50), NULL, 0, clear_gun_interrupt); + timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, beamy + beamyadd, beamx + beamxadd), NULL, 0, trigger_gun_interrupt); + timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, beamy + beamyadd + 1, beamx + beamxadd), NULL, 0, clear_gun_interrupt); /* generate interrupts for player 2's gun */ get_crosshair_xy(machine, 1, &beamx, &beamy); - timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, beamy, beamx + 50), NULL, 1, trigger_gun_interrupt); - timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, beamy + 1, beamx + 50), NULL, 1, clear_gun_interrupt); + timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, beamy + beamyadd, beamx + beamxadd), NULL, 1, trigger_gun_interrupt); + timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, beamy + beamyadd + 1, beamx + beamxadd), NULL, 1, clear_gun_interrupt); } + /************************************* * * Video startup @@ -107,7 +123,6 @@ static VIDEO_START( tickee ) } - /************************************* * * Video update @@ -139,6 +154,38 @@ static void scanline_update(const device_config *screen, bitmap_t *bitmap, int s } +static void rapidfir_scanline_update(const device_config *screen, bitmap_t *bitmap, int scanline, const tms34010_display_params *params) +{ + UINT16 *src = &tickee_vram[(params->rowaddr << 8) & 0x3ff00]; + UINT32 *dest = BITMAP_ADDR32(bitmap, scanline, 0); + const rgb_t *pens = tlc34076_get_pens(); + int coladdr = params->coladdr << 1; + int x; + + if (palette_bank) + { + /* blank palette: fill with pen 255 */ + for (x = params->heblnk; x < params->hsblnk; x += 2) + { + dest[x + 0] = pens[0xff]; + dest[x + 1] = pens[0xff]; + } + } + else + { + + /* copy the non-blanked portions of this scanline */ + for (x = params->heblnk; x < params->hsblnk; x += 2) + { + UINT16 pixels = src[coladdr++ & 0xff]; + dest[x + 0] = pens[pixels & 0xff]; + dest[x + 1] = pens[pixels >> 8]; + } + + } +} + + /************************************* * * Machine init @@ -147,12 +194,52 @@ static void scanline_update(const device_config *screen, bitmap_t *bitmap, int s static MACHINE_RESET( tickee ) { + beamxadd = 50; + beamyadd = 0; ticket_dispenser_init(machine, 100, 0, 1); tlc34076_reset(6); } +static MACHINE_RESET( rapidfir ) +{ + beamxadd = 0; + beamyadd = -5; + tlc34076_reset(6); +} +/************************************* + * + * Video related + * + *************************************/ + +static WRITE16_HANDLER( rapidfir_transparent_w ) +{ + if (!(data & 0xff00)) mem_mask &= 0x00ff; + if (!(data & 0x00ff)) mem_mask &= 0xff00; + COMBINE_DATA(&tickee_vram[offset]); +} + + +static READ16_HANDLER( rapidfir_transparent_r ) +{ + return tickee_vram[offset]; +} + +void rapidfir_to_shiftreg(const address_space *space, UINT32 address, UINT16 *shiftreg) +{ + if (address < 0x800000) + memcpy(shiftreg, &tickee_vram[TOWORD(address)], TOBYTE(0x2000)); +} + + +void rapidfir_from_shiftreg(const address_space *space, UINT32 address, UINT16 *shiftreg) +{ + if (address < 0x800000) + memcpy(&tickee_vram[TOWORD(address)], shiftreg, TOBYTE(0x2000)); +} + /************************************* * * Miscellaneous control bits @@ -204,6 +291,74 @@ static WRITE16_HANDLER( tickee_control_w ) + +/************************************* + * + * Unknowns + * + *************************************/ + +static READ16_HANDLER( ffff_r ) +{ + return 0xffff; +} + +static READ16_HANDLER( rapidfir_gun1_r ) +{ + return gunx[0]; +} + + +static READ16_HANDLER( rapidfir_gun2_r ) +{ + return gunx[1]; +} + + +static READ16_HANDLER( ff7f_r ) +{ + return 0xff7f; +} + +static WRITE16_HANDLER( rapidfir_control_w ) +{ + /* other bits like control on tickee? */ + if (ACCESSING_BITS_0_7) + palette_bank = data & 1; +} + +/************************************* + * + * Sound + * + *************************************/ + +static WRITE16_DEVICE_HANDLER( sound_bank_w ) +{ + switch (data & 0xff) + { + case 0x2c: + okim6295_set_bank_base(device, 0x00000); + break; + + case 0x2d: + okim6295_set_bank_base(device, 0x50000); + break; + + case 0x1c: + okim6295_set_bank_base(device, 0x80000); + break; + + case 0x1d: + okim6295_set_bank_base(device, 0xc0000); + break; + + default: + logerror("sound_bank_w %04X %04X\n", data, mem_mask); + break; + } +} + /************************************* * * Memory maps @@ -243,6 +398,29 @@ static ADDRESS_MAP_START( ghoshunt_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0xff000000, 0xffffffff) AM_ROM AM_REGION("user1", 0) ADDRESS_MAP_END +/* newer hardware */ +static ADDRESS_MAP_START( rapidfir_map, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_BASE(&tickee_vram) + AM_RANGE(0x02000000, 0x027fffff) AM_READWRITE(rapidfir_transparent_r, rapidfir_transparent_w) + AM_RANGE(0xc0000000, 0xc00001ff) AM_READWRITE(tms34010_io_register_r, tms34010_io_register_w) + AM_RANGE(0xfc000000, 0xfc00000f) AM_READ(rapidfir_gun1_r) + AM_RANGE(0xfc000100, 0xfc00010f) AM_READ(rapidfir_gun2_r) + AM_RANGE(0xfc000400, 0xfc00040f) AM_READ(ffff_r) + AM_RANGE(0xfc000500, 0xfc00050f) AM_NOP + AM_RANGE(0xfc000600, 0xfc00060f) AM_WRITE(rapidfir_control_w) + AM_RANGE(0xfc000700, 0xfc00070f) AM_DEVWRITE("oki", sound_bank_w) + AM_RANGE(0xfc000800, 0xfc00080f) AM_READ_PORT("IN0") + AM_RANGE(0xfc000900, 0xfc00090f) AM_READ_PORT("IN1") + AM_RANGE(0xfc000a00, 0xfc000a0f) AM_READ_PORT("IN2") + AM_RANGE(0xfc000b00, 0xfc000b0f) AM_READ_PORT("DSW0") + AM_RANGE(0xfc000c00, 0xfc000c1f) AM_READ_PORT("DSW1") + AM_RANGE(0xfc000e00, 0xfc000e1f) AM_READ(watchdog_reset16_r) + AM_RANGE(0xfc100000, 0xfc1000ff) AM_READWRITE(tlc34076_lsb_r, tlc34076_lsb_w) + AM_RANGE(0xfc200000, 0xfc207fff) AM_RAM AM_BASE_SIZE_GENERIC(nvram) + AM_RANGE(0xfc300000, 0xfc30000f) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff) + AM_RANGE(0xfc400010, 0xfc40001f) AM_READ(ff7f_r) + AM_RANGE(0xfe000000, 0xffffffff) AM_ROM AM_REGION("user1", 0) +ADDRESS_MAP_END /************************************* @@ -368,6 +546,65 @@ static INPUT_PORTS_START( ghoshunt ) PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(70) PORT_KEYDELTA(10) PORT_PLAYER(2) INPUT_PORTS_END +static INPUT_PORTS_START( rapidfir ) + PORT_START("IN0") + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SERVICE ) + PORT_SERVICE_NO_TOGGLE( 0x0020, IP_ACTIVE_LOW ) + PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN1") + PORT_BIT( 0x000f, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0xffe0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN2") + PORT_BIT( 0x000f, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0xffe0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("DSW0") + PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown )) + PORT_DIPSETTING( 0x0000, DEF_STR( Off )) + PORT_DIPSETTING( 0x0001, DEF_STR( On )) + PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown )) + PORT_DIPSETTING( 0x0000, DEF_STR( Off )) + PORT_DIPSETTING( 0x0002, DEF_STR( On )) + PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown )) + PORT_DIPSETTING( 0x0000, DEF_STR( Off )) + PORT_DIPSETTING( 0x0004, DEF_STR( On )) + PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown )) + PORT_DIPSETTING( 0x0000, DEF_STR( Off )) + PORT_DIPSETTING( 0x0008, DEF_STR( On )) + PORT_BIT( 0x0070, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown )) + PORT_DIPSETTING( 0x0000, DEF_STR( Off )) + PORT_DIPSETTING( 0x0080, DEF_STR( On )) + PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("DSW1") + PORT_BIT( 0x003f, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_DIPNAME( 0x0040, 0x0000, "Reset NVRAM" ) + PORT_DIPSETTING( 0x0000, DEF_STR( No )) + PORT_DIPSETTING( 0x0040, DEF_STR( Yes )) + PORT_BIT( 0xff80, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("GUNX1") /* fake analog X */ + PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) + + PORT_START("GUNY1") /* fake analog Y */ + PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(70) PORT_KEYDELTA(10) + + PORT_START("GUNX2") /* fake analog X */ + PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_PLAYER(2) + + PORT_START("GUNY2") /* fake analog Y */ + PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(70) PORT_KEYDELTA(10) PORT_PLAYER(2) +INPUT_PORTS_END + /************************************* @@ -417,6 +654,18 @@ static const tms34010_config tms_config = }; +static const tms34010_config rapidfir_tms_config = +{ + FALSE, /* halt on reset */ + "screen", /* the screen operated on */ + VIDEO_CLOCK/2, /* pixel clock */ + 1, /* pixels per clock */ + rapidfir_scanline_update, /* scanline callback */ + NULL, /* generate interrupt */ + rapidfir_to_shiftreg, /* write to shiftreg function */ + rapidfir_from_shiftreg /* read from shiftreg function */ +}; + /************************************* * @@ -454,7 +703,6 @@ static MACHINE_DRIVER_START( tickee ) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_DRIVER_END - static MACHINE_DRIVER_START( ghoshunt ) MDRV_IMPORT_FROM(tickee) @@ -463,7 +711,31 @@ static MACHINE_DRIVER_START( ghoshunt ) MDRV_CPU_PROGRAM_MAP(ghoshunt_map) MACHINE_DRIVER_END +static MACHINE_DRIVER_START( rapidfir ) + /* basic machine hardware */ + MDRV_CPU_ADD("maincpu", TMS34010, XTAL_50MHz) + MDRV_CPU_CONFIG(rapidfir_tms_config) + MDRV_CPU_PROGRAM_MAP(rapidfir_map) + + MDRV_MACHINE_RESET(rapidfir) + MDRV_NVRAM_HANDLER(generic_1fill) + + /* video hardware */ + MDRV_VIDEO_START(tickee) + MDRV_VIDEO_UPDATE(tms340x0) + + MDRV_SCREEN_ADD("screen", RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_RGB32) + MDRV_SCREEN_RAW_PARAMS(VIDEO_CLOCK/2, 444, 0, 320, 233, 0, 200) + + /* sound hardware */ + MDRV_SPEAKER_STANDARD_MONO("mono") + + MDRV_SOUND_ADD("oki", OKIM6295, OKI_CLOCK) + MDRV_SOUND_CONFIG(okim6295_interface_pin7high) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) +MACHINE_DRIVER_END /************************************* * @@ -579,6 +851,73 @@ ROM_START( tutstomb ) ROM_LOAD16_BYTE( "tutstomb.7k", 0x100000, 0x80000, CRC(bc362df8) SHA1(7b15c646e99c916d850629e4e758b1dbb329639a) ) ROM_END +/* + +Rapid Fire (v1.1) +Hanaho Games, 1998 + +PCB No: BE 1V-0 VER3: 7/30/98 (Sticker says PVG/SEMCO) +CPU : TMS34010FNL-50 +SND : BS901 + CA5102 (YM2151 + YM3012), AD-65 (OKI M6295) +OSC : 50.000MHz, 3.5795MHz, 8.000MHz, 18.000MHz +RAM : Toshiba TC528267J-70 (x 4, surface mounted) +DIPs : 8 position (x2) +OTHER : MACH110 (x1, CPLD) + MACH210 (x2, CPLD) + DS1232 (Dallas Semi, MicroMonitor Chip / Watchdog timer) + ADV476KN50 (28 Pin DIP, Analog Devices CMOS Monolithic 256x18 color palette RAM-DAC @ 50MHz) + DALLAS DS1220Y-200 (NONVOLATILE SRAM) + +On the back of the PCB is a 25 pin female D-Type connector (looks like Parallel connector) + +ROMs : RF11.U2 27C040 \ + RF11.U3 " | + RF10.U4 " | + RF10.U5 " | + RF10.U6 " | GROUPED TOGETHER, PRG/GFX + RF10.U7 " | + RF11.U8 " | + RF11.U9 " | + DS1220Y.U504 *1 / + + RF11.U507 27C040 \ + RF11.U510 " / GROUPED TOGETHER, SND/OKI SAMPLES + +*1: Contents of Dallas DS1220 NVRAM (2K) +*/ + +ROM_START( rapidfir ) /* Version 1.1, test menu shows "Build 239" */ + ROM_REGION16_LE( 0x400000, "user1", 0 ) /* 34010 code */ + ROM_LOAD16_BYTE( "rf11.u8", 0x000000, 0x80000, CRC(f7d8df33) SHA1(0abd54bbccfa90d830cbbdbcf2058197af980981) ) + ROM_LOAD16_BYTE( "rf11.u9", 0x000001, 0x80000, CRC(a72af935) SHA1(ed0deb6f51681f70e07ad7c05a92f6a0f2063f7a) ) + ROM_LOAD16_BYTE( "rf10.u6", 0x100000, 0x80000, CRC(e8d2e5d2) SHA1(db93014598f7b76785e0fd5c0ac8808a3be06435) ) + ROM_LOAD16_BYTE( "rf10.u7", 0x100001, 0x80000, CRC(0e33f2ed) SHA1(9b2533e001b94ccc97b95e31762186f59d5a3b9c) ) + ROM_LOAD16_BYTE( "rf10.u4", 0x200000, 0x80000, CRC(8a088468) SHA1(f94dc78158e5656657d3b26c5b0ca88f39eb5ff4) ) + ROM_LOAD16_BYTE( "rf10.u5", 0x200001, 0x80000, CRC(593b3df2) SHA1(301fa06031eff54fb2d9e08f80fc3c26e5c51da9) ) + ROM_LOAD16_BYTE( "rf11.u2", 0x300000, 0x80000, CRC(ffa0c695) SHA1(bccdefe7cee15999c416fdcb16a65b1bc6e12d13) ) + ROM_LOAD16_BYTE( "rf11.u3", 0x300001, 0x80000, CRC(ac63b863) SHA1(c9160aec6179d1f550279b80fd4c2a14ce94fdab) ) + + ROM_REGION( 0x100000, "oki", 0 ) + ROM_LOAD( "rf11.507", 0x000000, 0x80000, CRC(899d1e15) SHA1(ca22b4ad714a5212bc9347eb3a5b660c02bad7e5) ) + ROM_LOAD( "rf11.510", 0x080000, 0x80000, CRC(6209c8fe) SHA1(bfbd63445b4ac2d4253c4b5354e1058070290084) ) +ROM_END + + +ROM_START( rapidfire ) /* Version 1.0, test menu shows "Build 236" */ + ROM_REGION16_LE( 0x400000, "user1", 0 ) /* 34010 code */ + ROM_LOAD16_BYTE( "rf10.u8", 0x000000, 0x80000, CRC(71d42125) SHA1(e34bdb08aa1b85ba4dd219b7f6de6f99a1ed8758) ) + ROM_LOAD16_BYTE( "rf10.u9", 0x000001, 0x80000, CRC(d70e67c2) SHA1(e0876027f58584dae949a4f3c9391bd013912ee8) ) + ROM_LOAD16_BYTE( "rf10.u6", 0x100000, 0x80000, CRC(e8d2e5d2) SHA1(db93014598f7b76785e0fd5c0ac8808a3be06435) ) + ROM_LOAD16_BYTE( "rf10.u7", 0x100001, 0x80000, CRC(0e33f2ed) SHA1(9b2533e001b94ccc97b95e31762186f59d5a3b9c) ) + ROM_LOAD16_BYTE( "rf10.u4", 0x200000, 0x80000, CRC(8a088468) SHA1(f94dc78158e5656657d3b26c5b0ca88f39eb5ff4) ) + ROM_LOAD16_BYTE( "rf10.u5", 0x200001, 0x80000, CRC(593b3df2) SHA1(301fa06031eff54fb2d9e08f80fc3c26e5c51da9) ) + ROM_LOAD16_BYTE( "rf10.u2", 0x300000, 0x80000, CRC(5ef404dd) SHA1(cf060567822c4c02baf4b1948d6e50b480bfb7da) ) + ROM_LOAD16_BYTE( "rf10.u3", 0x300001, 0x80000, CRC(d8d664db) SHA1(cd63fdc6fe4beb68ced57a2547f8302c1d2544dc) ) + + ROM_REGION( 0x100000, "oki", 0 ) + ROM_LOAD( "rf10.507", 0x000000, 0x80000, CRC(7eab2af4) SHA1(bbb4b2b9f96add56c26f334a7242cdc81a64ce2d) ) + ROM_LOAD( "rf10.510", 0x080000, 0x80000, CRC(ecd70be6) SHA1(5a26703e822776fecb3f6d729bf91e76db7a7141) ) +ROM_END /************************************* @@ -587,6 +926,8 @@ ROM_END * *************************************/ -GAME( 1994, tickee, 0, tickee, tickee, 0, ROT0, "Raster Elite", "Tickee Tickats", 0 ) -GAME( 1996, ghoshunt, 0, ghoshunt, ghoshunt, 0, ROT0, "Hanaho Games", "Ghost Hunter", 0 ) -GAME( 1996, tutstomb, 0, ghoshunt, ghoshunt, 0, ROT0, "Island Design", "Tut's Tomb", 0 ) +GAME( 1994, tickee, 0, tickee, tickee, 0, ROT0, "Raster Elite", "Tickee Tickats", 0 ) +GAME( 1996, ghoshunt, 0, ghoshunt, ghoshunt, 0, ROT0, "Hanaho Games", "Ghost Hunter", 0 ) +GAME( 1996, tutstomb, 0, ghoshunt, ghoshunt, 0, ROT0, "Island Design", "Tut's Tomb", 0 ) +GAME( 1998, rapidfir, 0, rapidfir, rapidfir, 0, ROT0, "Hanaho Games", "Rapid Fire v1.1", 0 ) +GAME( 1998, rapidfire, rapidfir, rapidfir, rapidfir, 0, ROT0, "Hanaho Games", "Rapid Fire v1.0", 0 ) diff --git a/src/mame/mamedriv.c b/src/mame/mamedriv.c index 6f4927c014d..7c003634134 100644 --- a/src/mame/mamedriv.c +++ b/src/mame/mamedriv.c @@ -8750,6 +8750,8 @@ Other Sun games DRIVER( tickee ) /* (c) 1994 Raster Elite */ DRIVER( ghoshunt ) /* (c) 1995? Hanaho Games */ DRIVER( tutstomb ) /* (c) 199?? Island Design */ + DRIVER( rapidfir ) /* (c) 1998 Hanaho Games */ + DRIVER( rapidfire ) /* (c) 1998 Hanaho Games */ DRIVER( crgolf ) /* (c) 1984 Nasco Japan */ DRIVER( crgolfa ) /* (c) 1984 Nasco Japan */ DRIVER( crgolfb ) /* (c) 1984 Nasco Japan */