diff options
Diffstat (limited to 'src/mame/drivers/expro02.c')
-rw-r--r-- | src/mame/drivers/expro02.c | 490 |
1 files changed, 490 insertions, 0 deletions
diff --git a/src/mame/drivers/expro02.c b/src/mame/drivers/expro02.c new file mode 100644 index 00000000000..27554ab2420 --- /dev/null +++ b/src/mame/drivers/expro02.c @@ -0,0 +1,490 @@ +/* Kaneko EXPRO-02 board + - used by the newer revisions of Gals Panic + + Notes: + Tile GFX seem to be encrypted / scrambled? I can't decode them + Dipswitches are wrong for these sets + + +Gals Panic +Kaneko, 1990 + +PCB Layout +---------- + +EXPRO-02 +|-------------------------------------------------------------------------| +| M6295 PM007E.U47 12MHz PM000E.U74 PM004E.U86 | +| VOL PM008E.U46 16MHz 62256 PM002E.U76 PM109U_U88-01.U88| +|LA4460 | +| PAL PAL PAL | +| PAL PAL PAL PM001E.U73 PM005E.U85 | +| PAL 62256 PM003E.U75 PM110U_U87-01.U87| +| |--------------------| | +| | 68000 | | +| | | 41464 | +| |--------------------| 41464 PM017E.U84 | +| GP-U27 PAL 41464 |---------| | +|J PAL GP-U41 41464 |KANEKO | | +|A MC-8282 PAL 41464 |VU-002 | PM006E.U83 PM018E.U94 | +|M 6116 41464 | | | +|M | | PM019U_U93-01.U93| +|A 6116 |---------| PM206E.U82 | +| HM53461 | +| PAL HM53461 PAL |-------| CALC1-CHIP | +| HM53461 PAL |KANEKO | PM016E.U92 | +| PAL HM53461 PAL |VIEW2- | 6264 | +| HM53461 PAL | CHIP| PM015E.U91 | +| PAL HM53461 PAL |-------| 6264 | +|DSW2 6116 PAL PAL PM014E.U90 | +| PAL PAL | +|DSW1 6116 PAL PM013E.U89 | +|-------------------------------------------------------------------------| + + Notes + ----- + 68000 clock - 12.0MHz + CALC1-CHIP clock - 16.0MHz + GP-U41 clocks - pins 21 & 22 - 12.0MHz, pins 1 & 2 - 6.0MHz, pins 8 & 9 - 15.6249kHz (HSync?) + GP-U27 clock - none (so it's not an MCU) + OKI M6295 clock - 2.0MHz (12/6). pin7 = low + VSync - 60Hz + HSync - 15.68kHz + MC-8282 - Kaneko custom I/O JAMMA ceramic module + 41464 - 64k x4 DRAM + HM53461 - 64k x4 Multiport CMOS VRAM + 6116 - 2k x8 SRAM + 6264 - 8k x8 SRAM + 62256 - 32k x8 SRAM + +************************************************************************************************** + +Gals Panic (Japan) +(C)1990 Kaneko + +EXPRO-02 PCB +M6100575A GALS PANIC (PCB manufactured by Taito) + +CPU: MC68000 +Sound: M6295 +OSC: 12.0000MHz, 16.0000MHz +Custom: VU-002, VIEW2, CACL1 + +ROMs: +PM109J.U88 (OKI M271000ZB) - Main programs +PM110J.U87 (OKI M271000ZB) +PM004E.U86 +PM005E.U85 +PM-002E.U76 +PM-003E.U75 +PM-000E.U74 +PM-001E.U73 + +PM006E.U83 - Sprites +PM206E.U82 +PM018E.U94 + +PM-013E.U89 (40pin mask) +PM-014E.U90 +PM-015E.U91 +PM-016E.U92 + +GP-U41.U41 (40pin mask?) +GP-U27.U27 + + +PAL/GALs: +U10 (18CV8) +U11 (18CV8) +U12 (18CV8) +U15 (22CV10) +GP-U28 (16V8) +U29 (18CV8) +U32 (18CV8) +U33 (18CV8) +U34 (18CV8) +U35 (18CV8) +U36 (22CV10) +U37 (22CV10) +U38 (18CV8) +U42 (18CV8) +GP-U44 (16V8) +U45 (18CV8) +U48 (18CV8) +GP-U57 (16V8) +GP-U58 (16V8) +GP-U60 (16V8) +U77 (22CV10) +U78 (22CV10) +*/ + +#include "driver.h" +#include "includes/kaneko16.h" +#include "sound/okim6295.h" + +//extern DRIVER_INIT(berlwall); +extern VIDEO_START(galsnew); +extern VIDEO_UPDATE(galsnew); +extern PALETTE_INIT(berlwall); +extern UINT16* galsnew_bg_pixram; +extern UINT16* galsnew_fg_pixram; + +static INPUT_PORTS_START( galsnew ) + PORT_START_TAG("DSW1") + PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) /* flip screen? */ + PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_SERVICE( 0x0004, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + /* Coinage - World (0x03ffff.b = 03) */ + PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x0010, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x0020, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0030, DEF_STR( 1C_1C ) ) + PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) ) + PORT_DIPSETTING( 0x00c0, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x0080, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x0040, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( 1C_6C ) ) + /* Coinage - Japan (0x03ffff.b = 01) and US (0x03ffff.b = 02) + PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) ) + PORT_DIPSETTING( 0x0010, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0030, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x0020, DEF_STR( 1C_2C ) ) + PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) ) + PORT_DIPSETTING( 0x0040, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x00c0, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x0080, DEF_STR( 1C_2C ) ) + */ + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(1) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* "Shot2" in "test mode" */ + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START + PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x0002, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x0003, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x0001, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) ) + PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x0010, "2" ) + PORT_DIPSETTING( 0x0030, "3" ) + PORT_DIPSETTING( 0x0020, "4" ) + PORT_DIPSETTING( 0x0000, "5" ) + PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) /* demo sounds? - see notes */ + PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0080, 0x0080, "Character Test" ) + PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* "Shot2" in "test mode" */ + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START + PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_TILT ) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + + +static WRITE16_HANDLER( galsnew_paletteram_w ) +{ + data = COMBINE_DATA(&paletteram16[offset]); + palette_set_color_rgb(Machine,offset,pal5bit(data >> 6),pal5bit(data >> 11),pal5bit(data >> 1)); +} + +static WRITE16_HANDLER( galsnew_6295_bankswitch_w ) +{ + if (ACCESSING_MSB) + { + UINT8 *rom = memory_region(REGION_SOUND1); + memcpy(&rom[0x30000],&rom[0x40000 + ((data >> 8) & 0x0f) * 0x10000],0x10000); + } +} + +static ADDRESS_MAP_START( galsnew, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_ROM // main program + AM_RANGE(0x080000, 0x0fffff) AM_ROM AM_REGION(REGION_USER2,0) // other data + AM_RANGE(0x100000, 0x3fffff) AM_ROM AM_REGION(REGION_USER1,0) // main data + AM_RANGE(0x400000, 0x400001) AM_READWRITE(OKIM6295_status_0_lsb_r,OKIM6295_data_0_lsb_w) + + + AM_RANGE(0x500000, 0x51ffff) AM_RAM AM_BASE(&galsnew_bg_pixram) + AM_RANGE(0x520000, 0x53ffff) AM_RAM AM_BASE(&galsnew_fg_pixram) + + AM_RANGE(0x580000, 0x580fff) AM_READWRITE(MRA16_RAM,kaneko16_vram_1_w) AM_BASE(&kaneko16_vram_1) // Layers 0 + AM_RANGE(0x581000, 0x581fff) AM_READWRITE(MRA16_RAM,kaneko16_vram_0_w) AM_BASE(&kaneko16_vram_0) // + AM_RANGE(0x582000, 0x582fff) AM_RAM AM_BASE(&kaneko16_vscroll_1) // + AM_RANGE(0x583000, 0x583fff) AM_RAM AM_BASE(&kaneko16_vscroll_0) // + + AM_RANGE(0x600000, 0x600fff) AM_READWRITE(MRA16_RAM,galsnew_paletteram_w) AM_BASE(&paletteram16) // palette? + + AM_RANGE(0x680000, 0x68001f) AM_READWRITE(MRA16_RAM,kaneko16_layers_0_regs_w) AM_BASE(&kaneko16_layers_0_regs) // sprite regs? tileregs? + + AM_RANGE(0x700000, 0x700fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // sprites? 0x72f words tested + + AM_RANGE(0x780000, 0x78001f) AM_READWRITE(MRA16_RAM,kaneko16_sprites_regs_w) AM_BASE(&kaneko16_sprites_regs ) // sprite regs? tileregs? + + AM_RANGE(0x800000, 0x800001) AM_READ(input_port_0_word_r) + AM_RANGE(0x800002, 0x800003) AM_READ(input_port_1_word_r) + AM_RANGE(0x800004, 0x800005) AM_READ(input_port_2_word_r) + + AM_RANGE(0x900000, 0x900001) AM_WRITE(galsnew_6295_bankswitch_w) + + AM_RANGE(0xa00000, 0xa00001) AM_WRITE(MWA16_NOP) /* ??? */ + + AM_RANGE(0xc80000, 0xc8ffff) AM_RAM + + AM_RANGE(0xd80000, 0xd80001) AM_WRITE(MWA16_NOP) /* ??? */ + + AM_RANGE(0xe00000, 0xe00015) AM_READWRITE(galpanib_calc_r,galpanib_calc_w) /* CALC1 MCU interaction (simulated) */ + + AM_RANGE(0xe80000, 0xe80001) AM_WRITE(MWA16_NOP) /* ??? */ +ADDRESS_MAP_END + + +static INTERRUPT_GEN( galsnew_interrupt ) +{ + cpunum_set_input_line(0, cpu_getiloops() + 3, HOLD_LINE); /* IRQs 5, 4, and 3 */ +} + +static MACHINE_RESET( galsnew ) +{ + kaneko16_sprite_type = 0; + + kaneko16_sprite_xoffs = 0; + kaneko16_sprite_yoffs = -1*0x40; // align testgrid with bitmap in service mode + + // priorities not verified + kaneko16_priority.sprite[0] = 8; // above all + kaneko16_priority.sprite[1] = 8; // above all + kaneko16_priority.sprite[2] = 8; // above all + kaneko16_priority.sprite[3] = 8; // above all +} + +static const gfx_layout layout_16x16x4 = +{ + 16,16, + RGN_FRAC(1,1), + 4, + { STEP4(0,1) }, + { STEP8(8*8*4*0,4), STEP8(8*8*4*1,4) }, + { STEP8(8*8*4*0,8*4), STEP8(8*8*4*2,8*4) }, + 16*16*4 +}; + + +static GFXDECODE_START( 1x4bit_1x4bit ) + GFXDECODE_ENTRY( REGION_GFX1, 0, layout_16x16x4, 0x100, 0x40 ) // [0] Sprites + GFXDECODE_ENTRY( REGION_GFX2, 0, layout_16x16x4, 0, 0x40 ) // [0] bg tiles +GFXDECODE_END + +static MACHINE_DRIVER_START( galsnew ) + + /* basic machine hardware */ + MDRV_CPU_ADD_TAG("main", M68000, 12000000) + MDRV_CPU_PROGRAM_MAP(galsnew,0) + MDRV_CPU_VBLANK_INT(galsnew_interrupt,3) + + /* CALC01 MCU @ 16Mhz (unknown type, simulated) */ + + MDRV_SCREEN_REFRESH_RATE(60) + MDRV_SCREEN_VBLANK_TIME(DEFAULT_REAL_60HZ_VBLANK_DURATION) + + /* video hardware */ + MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(256, 256) + MDRV_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-32-1) + MDRV_GFXDECODE(1x4bit_1x4bit) + MDRV_PALETTE_LENGTH(2048 + 32768) + MDRV_MACHINE_RESET( galsnew ) + + MDRV_VIDEO_START(galsnew) + MDRV_VIDEO_UPDATE(galsnew) + MDRV_PALETTE_INIT(berlwall) + + /* arm watchdog */ + MDRV_WATCHDOG_VBLANK_INIT(DEFAULT_60HZ_3S_VBLANK_WATCHDOG) + + /* sound hardware */ + MDRV_SPEAKER_STANDARD_MONO("mono") + + MDRV_SOUND_ADD_TAG("oki", OKIM6295, 12000000/6) + MDRV_SOUND_CONFIG(okim6295_interface_region_1_pin7low) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) +MACHINE_DRIVER_END + +/* the tile roms seem lineswapped.. but I don't know how to descramble them yet */ +static DRIVER_INIT(galsnew) +{ + UINT8 *src = memory_region ( REGION_GFX3 ); + UINT8 *dst = memory_region ( REGION_GFX2 ); + int x; + + for (x=0; x<0x200000;x++) + { + UINT32 y; + + y = BITSWAP24(x, 23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 ); + y = x ^ 12; + dst[y] = src[x]; + + } + +} + + +ROM_START( galsnew ) /* EXPRO-02 PCB */ + ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 68000 code */ + ROM_LOAD16_BYTE( "pm110u_u87-01.u87", 0x000000, 0x20000, CRC(b793a57d) SHA1(12d57b2b4add532f0d0453c25b30d34b3449d717) ) /* US region */ + ROM_LOAD16_BYTE( "pm109u_u88-01.u88", 0x000001, 0x20000, CRC(35b936f8) SHA1(d272067f10542d511a777802cafa4d72b93fa5e8) ) + + ROM_REGION16_BE( 0x300000, REGION_USER1, 0 ) /* 68000 data */ + ROM_LOAD16_BYTE( "pm004e.u86", 0x000001, 0x80000, CRC(d3af52bc) SHA1(46be057106388578defecab1cdd1793ec76ebe92) ) + ROM_LOAD16_BYTE( "pm005e.u85", 0x000000, 0x80000, CRC(d7ec650c) SHA1(6c2250c74381497154bf516e0cf1db6bb56bb446) ) + ROM_LOAD16_BYTE( "pm000e.u74", 0x100001, 0x80000, CRC(5d220f3f) SHA1(7ff373e01027c8832712f7a2d732f8e49b875878) ) + ROM_LOAD16_BYTE( "pm001e.u73", 0x100000, 0x80000, CRC(90433eb1) SHA1(8688a85747ad9ecac395d782f130baa64fb9d12b) ) + ROM_LOAD16_BYTE( "pm002e.u76", 0x200001, 0x80000, CRC(713ee898) SHA1(c9f608a57fb90e5ee15eb76a74a7afcc406d5b4e) ) + ROM_LOAD16_BYTE( "pm003e.u75", 0x200000, 0x80000, CRC(6bb060fd) SHA1(4fc3946866c5a55e8340b62b5ad9beae723ce0da) ) + + ROM_REGION16_BE( 0x80000, REGION_USER2, 0 ) /* contains real (non-cartoon) women, used after each 3rd round */ + ROM_LOAD16_WORD_SWAP( "pm017e.u84", 0x00000, 0x80000, CRC(bc41b6ca) SHA1(0aeaf024dd7c84550e7df27230a1d4f04cc1d61c) ) + + ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_ERASEFF ) /* sprites */ + /* the 06e rom from the other type gals panic board ends up split across 2 roms here */ + ROM_LOAD( "pm006e.u83", 0x000000, 0x080000, CRC(a7555d9a) SHA1(f95821b3358d9ab03ca9ead38fd358062259d89d) ) + ROM_LOAD( "pm206e.u82", 0x080000, 0x080000, CRC(cc978baa) SHA1(59a95bcbaeca9d356f61ea42af4da116afbb1491) ) + ROM_LOAD( "pm018e.u94", 0x100000, 0x080000, CRC(f542d708) SHA1(f515cca9e96401303ed45b4372f6079f29b7a999) ) + ROM_LOAD( "pm019u_u93-01.u93", 0x180000, 0x010000, CRC(3cb79005) SHA1(05a0b993b9071467265067c3762644f46343d8de) ) // ?? seems to be an extra / replacement enemy?, not sure where it maps, or when it's used, it might load over another rom + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ + + ROM_REGION( 0x200000, REGION_GFX3, ROMREGION_DISPOSE ) /* sprites - encrypted? */ + ROM_LOAD( "pm013e.u89", 0x180000, 0x080000, CRC(10f27b05) SHA1(0f8ade713f6b430b5a23370a17326d53229951de) ) + ROM_LOAD( "pm014e.u90", 0x100000, 0x080000, CRC(2f367106) SHA1(1cd16e286e77e8e1b7668bbb6f2978101656b720) ) + ROM_LOAD( "pm015e.u91", 0x080000, 0x080000, CRC(a563f8ef) SHA1(6e4171746e4d401992bf3a7619d5bed0063d57e5) ) + ROM_LOAD( "pm016e.u92", 0x000000, 0x080000, CRC(c0b9494c) SHA1(f0b066dd78eb9fcf947da90ddb6c7b62299c5743) ) + + + ROM_REGION( 0x140000, REGION_SOUND1, 0 ) /* OKIM6295 samples */ + /* 00000-2ffff is fixed, 30000-3ffff is bank switched from all the ROMs */ + ROM_LOAD( "pm008e.u46", 0x00000, 0x80000, CRC(d9379ba8) SHA1(5ae7c743319b1a12f2b101a9f0f8fe0728ed1476) ) + ROM_RELOAD( 0x40000, 0x80000 ) + ROM_LOAD( "pm007e.u47", 0xc0000, 0x80000, CRC(c7ed7950) SHA1(133258b058d3c562208d0d00b9fac71202647c32) ) +ROM_END + +ROM_START( galsnewa ) /* EXPRO-02 PCB */ + ROM_REGION( 0x40000, REGION_CPU1, 0 ) + /* 68000 code */ + ROM_LOAD16_BYTE( "pm110e.u87-01", 0x000000, 0x20000, CRC(34e1ee0d) SHA1(567df65b04667a6d35725c4a131fb174acb3ad0a) ) /* Export region */ + ROM_LOAD16_BYTE( "pm109e.u88-01", 0x000001, 0x20000, CRC(c694255a) SHA1(16faf5ea5ff69a0e7a981021ea5fc09a0aefd7cf) ) + + ROM_REGION16_BE( 0x300000, REGION_USER1, 0 ) /* 68000 data */ + ROM_LOAD16_BYTE( "pm004e.u86", 0x000001, 0x80000, CRC(d3af52bc) SHA1(46be057106388578defecab1cdd1793ec76ebe92) ) + ROM_LOAD16_BYTE( "pm005e.u85", 0x000000, 0x80000, CRC(d7ec650c) SHA1(6c2250c74381497154bf516e0cf1db6bb56bb446) ) + ROM_LOAD16_BYTE( "pm000e.u74", 0x100001, 0x80000, CRC(5d220f3f) SHA1(7ff373e01027c8832712f7a2d732f8e49b875878) ) + ROM_LOAD16_BYTE( "pm001e.u73", 0x100000, 0x80000, CRC(90433eb1) SHA1(8688a85747ad9ecac395d782f130baa64fb9d12b) ) + ROM_LOAD16_BYTE( "pm002e.u76", 0x200001, 0x80000, CRC(713ee898) SHA1(c9f608a57fb90e5ee15eb76a74a7afcc406d5b4e) ) + ROM_LOAD16_BYTE( "pm003e.u75", 0x200000, 0x80000, CRC(6bb060fd) SHA1(4fc3946866c5a55e8340b62b5ad9beae723ce0da) ) + + ROM_REGION16_BE( 0x80000, REGION_USER2, 0 ) /* contains real (non-cartoon) women, used after each 3rd round */ + ROM_LOAD16_WORD_SWAP( "pm017e.u84", 0x00000, 0x80000, CRC(bc41b6ca) SHA1(0aeaf024dd7c84550e7df27230a1d4f04cc1d61c) ) + + ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_ERASEFF ) /* sprites */ + /* the 06e rom from the other type gals panic board ends up split across 2 roms here */ + ROM_LOAD( "pm006e.u83", 0x000000, 0x080000, CRC(a7555d9a) SHA1(f95821b3358d9ab03ca9ead38fd358062259d89d) ) + ROM_LOAD( "pm206e.u82", 0x080000, 0x080000, CRC(cc978baa) SHA1(59a95bcbaeca9d356f61ea42af4da116afbb1491) ) + ROM_LOAD( "pm018e.u94", 0x100000, 0x080000, CRC(f542d708) SHA1(f515cca9e96401303ed45b4372f6079f29b7a999) ) + /* U93 is an empty socket and not used with this set */ + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ + + ROM_REGION( 0x200000, REGION_GFX3, ROMREGION_DISPOSE ) /* tiles - encrypted? */ + ROM_LOAD( "pm013e.u89", 0x180000, 0x080000, CRC(10f27b05) SHA1(0f8ade713f6b430b5a23370a17326d53229951de) ) + ROM_LOAD( "pm014e.u90", 0x100000, 0x080000, CRC(2f367106) SHA1(1cd16e286e77e8e1b7668bbb6f2978101656b720) ) + ROM_LOAD( "pm015e.u91", 0x080000, 0x080000, CRC(a563f8ef) SHA1(6e4171746e4d401992bf3a7619d5bed0063d57e5) ) + ROM_LOAD( "pm016e.u92", 0x000000, 0x080000, CRC(c0b9494c) SHA1(f0b066dd78eb9fcf947da90ddb6c7b62299c5743) ) + + ROM_REGION( 0x140000, REGION_SOUND1, 0 ) /* OKIM6295 samples */ + /* 00000-2ffff is fixed, 30000-3ffff is bank switched from all the ROMs */ + ROM_LOAD( "pm008e.u46", 0x00000, 0x80000, CRC(d9379ba8) SHA1(5ae7c743319b1a12f2b101a9f0f8fe0728ed1476) ) + ROM_RELOAD( 0x40000, 0x80000 ) + ROM_LOAD( "pm007e.u47", 0xc0000, 0x80000, CRC(c7ed7950) SHA1(133258b058d3c562208d0d00b9fac71202647c32) ) +ROM_END + +ROM_START( galsnewj ) /* EXPRO-02 PCB */ + ROM_REGION( 0x40000, REGION_CPU1, 0 ) + /* 68000 code */ + ROM_LOAD16_BYTE( "pm110j.u87", 0x000000, 0x20000, CRC(220b6df5) SHA1(d653b67bc66ca341bc660c2bb39b05dcf186fcb7) ) /* Japan region */ + ROM_LOAD16_BYTE( "pm109j.u88", 0x000001, 0x20000, CRC(17721444) SHA1(9d97fe1ddac99105798fc22375a0b89ab316459a) ) + + ROM_REGION16_BE( 0x300000, REGION_USER1, 0 ) /* 68000 data */ + ROM_LOAD16_BYTE( "pm004e.u86", 0x000001, 0x80000, CRC(d3af52bc) SHA1(46be057106388578defecab1cdd1793ec76ebe92) ) + ROM_LOAD16_BYTE( "pm005e.u85", 0x000000, 0x80000, CRC(d7ec650c) SHA1(6c2250c74381497154bf516e0cf1db6bb56bb446) ) + ROM_LOAD16_BYTE( "pm000e.u74", 0x100001, 0x80000, CRC(5d220f3f) SHA1(7ff373e01027c8832712f7a2d732f8e49b875878) ) + ROM_LOAD16_BYTE( "pm001e.u73", 0x100000, 0x80000, CRC(90433eb1) SHA1(8688a85747ad9ecac395d782f130baa64fb9d12b) ) + ROM_LOAD16_BYTE( "pm002e.u76", 0x200001, 0x80000, CRC(713ee898) SHA1(c9f608a57fb90e5ee15eb76a74a7afcc406d5b4e) ) + ROM_LOAD16_BYTE( "pm003e.u75", 0x200000, 0x80000, CRC(6bb060fd) SHA1(4fc3946866c5a55e8340b62b5ad9beae723ce0da) ) + + ROM_REGION16_BE( 0x80000, REGION_USER2, ROMREGION_ERASEFF ) /* contains real (non-cartoon) women, used after each 3rd round */ + /* U84 is an empty socket and not used with this set */ + + ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_ERASEFF ) /* sprites */ + /* the 06e rom from the other type gals panic board ends up split across 2 roms here */ + ROM_LOAD( "pm006e.u83", 0x000000, 0x080000, CRC(a7555d9a) SHA1(f95821b3358d9ab03ca9ead38fd358062259d89d) ) + ROM_LOAD( "pm206e.u82", 0x080000, 0x080000, CRC(cc978baa) SHA1(59a95bcbaeca9d356f61ea42af4da116afbb1491) ) + ROM_LOAD( "pm018e.u94", 0x100000, 0x080000, CRC(f542d708) SHA1(f515cca9e96401303ed45b4372f6079f29b7a999) ) + /* U93 is an empty socket and not used with this set */ + + ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ + + ROM_REGION( 0x200000, REGION_GFX3, ROMREGION_DISPOSE ) /* tiles - encrypted? */ + ROM_LOAD( "pm013e.u89", 0x180000, 0x080000, CRC(10f27b05) SHA1(0f8ade713f6b430b5a23370a17326d53229951de) ) + ROM_LOAD( "pm014e.u90", 0x100000, 0x080000, CRC(2f367106) SHA1(1cd16e286e77e8e1b7668bbb6f2978101656b720) ) + ROM_LOAD( "pm015e.u91", 0x080000, 0x080000, CRC(a563f8ef) SHA1(6e4171746e4d401992bf3a7619d5bed0063d57e5) ) + ROM_LOAD( "pm016e.u92", 0x000000, 0x080000, CRC(c0b9494c) SHA1(f0b066dd78eb9fcf947da90ddb6c7b62299c5743) ) + + ROM_REGION( 0x140000, REGION_SOUND1, 0 ) /* OKIM6295 samples */ + /* 00000-2ffff is fixed, 30000-3ffff is bank switched from all the ROMs */ + ROM_LOAD( "pm008j.u46", 0x00000, 0x80000, CRC(f394670e) SHA1(171f8dc519a13f352e6440aaadebe490c82361f0) ) + ROM_RELOAD( 0x40000, 0x80000 ) + ROM_LOAD( "pm007j.u47", 0xc0000, 0x80000, CRC(06780287) SHA1(8b9b57f6604b86d6dff42e5e51cd59a7111e1e79) ) +ROM_END + + +GAME( 1990, galsnew, 0, galsnew, galsnew, galsnew, ROT90, "Kaneko", "Gals Panic (US, EXPRO-02 PCB)", GAME_NOT_WORKING ) +GAME( 1990, galsnewa, galsnew, galsnew, galsnew, galsnew, ROT90, "Kaneko", "Gals Panic (Export, EXPRO-02 PCB)", GAME_NOT_WORKING ) +GAME( 1990, galsnewj, galsnew, galsnew, galsnew, galsnew, ROT90, "Kaneko (Taito license)", "Gals Panic (Japan, EXPRO-02 PCB)", GAME_NOT_WORKING ) |