diff options
| author | 2011-04-23 19:02:29 +0000 | |
|---|---|---|
| committer | 2011-04-23 19:02:29 +0000 | |
| commit | 647862de3a62b4a98ec006a54d052cc7ab2100f3 (patch) | |
| tree | ddfe6f32c25e96a730d3003aa4b1adeac62dc9d9 /src | |
| parent | 86680b22bfc82b322cfdaa6bde22483ab2475f91 (diff) | |
Merged Tatakae Big Fighter into Armed F driver [Angelo Salese]
Diffstat (limited to 'src')
| -rw-r--r-- | src/mame/drivers/armedf.c | 495 | ||||
| -rw-r--r-- | src/mame/drivers/bigfghtr.c | 796 | ||||
| -rw-r--r-- | src/mame/includes/armedf.h | 13 | ||||
| -rw-r--r-- | src/mame/mame.mak | 1 |
4 files changed, 508 insertions, 797 deletions
diff --git a/src/mame/drivers/armedf.c b/src/mame/drivers/armedf.c index 161a0c5cda8..13365a42796 100644 --- a/src/mame/drivers/armedf.c +++ b/src/mame/drivers/armedf.c @@ -23,6 +23,8 @@ actually bootlegs. TODO: - identify and decap the NB1414M4 chip, it could be either a MCU or a fancy blitter chip; - time over doesn't kill the player in Kozure Ookami, check (1) note; +- Fix Armed F and Tatakae Big Fighter text tilemap usage, they both doesn't use the NB1414M4 + (as shown by the per-game kludge) Notes: - the initial level color fade in effect in Armed F is confirmed on real HW, i.e. goes from @@ -170,6 +172,116 @@ Stephh's notes (based on the games M68000 code and some tests) : -legion -terraf +======================================================================== + +Tatakae! Big Fighter (c)1989 Nichibutsu + + based on armedf.c + + TODO: + - scroll + - controls + - dips + + $80600($80000 ?? ) - $80fff = shared ram with 8751 MCU + + controls : + + 02E3E8: move.w $8c000.l, $8064a.l + 02E3F2: move.w $8c002.l, $8064c.l + 02E3FC: move.b #$1, $80640.l + 02E404: move.w $400000.l, D0 + 02E40A: tst.b $80640.l + 02E410: bne 2e3fc + 02E412: move.w $80642.l, $8064e.l + 02E41C: move.w $80644.l, $80650.l + 02E426: move.w $80646.l, $80652.l - input 1 (80646) + 02E430: move.w $80648.l, $80654.l + 02E43A: rts + + +------------------------------------------------------------------------ +Tatakae! Big Fighter +Nichibutsu, 1989 + +This is a horizontal shoot'em-up similar to R-Type. + +It appears this PCB is re-used? Sticker says PCB number is 1706 and (C) 1989 +On the PCB under the sticker is written 1605 and (C) 1988 + + +PCB Layout +---------- + + +1605A-1 (1706-1) +------------------------------------------------------------------- +| 2018 | +| 6.15F 2018 | +| PROM.13H 5.13F | +| | +| | +| 5814 | +| 5814 | +| | +| 5814 | +| 5814 | +| 7.11C | +| | +| 6264 6264 | +| 6264 6264 | +| ---------------- | +| |1706-3 | | +| | | PAL | +| | PAL 8751 | | +| | PAL | | +| | | | +| | | PAL | +| | 2.IC4 4.IC5 | | +| | 1.IC2 3.IC3 | | +| DSW2 | | | +| DSW1 | 68000 | 16MHz PAL | +| ---------------- | +------------------------------------------------------------------- + + +1605B (1706-2) +------------------------------------------------------------------- +| | +| 8.17K Z80A 2018 | +| 2018 | +| YM3812 2018 2018 | +| Y3014B | +| | +| | +| | +| | +| | +| | +| | +| 2018 | +| 10.9D 2018 | +| 9.8D 12.8A | +| PAL 11.6A | +| | +| | +| | +| | +| 2018 2018 | +| 2018 2018 | +| | +| 24MHz | +| | +------------------------------------------------------------------- + + +Notes: + Horizontal Sync: 15.08kHz + Vertical Sync: 60Hz + 68K Clock: 7.998MHz + Z80 Clock: ? (unstable, probably 6MHz or less) + + ***********************************************************************/ @@ -411,6 +523,184 @@ static ADDRESS_MAP_START( armedf_map, AS_PROGRAM, 16 ) AM_RANGE(0x06d00e, 0x06d00f) AM_WRITE(irq_lv1_ack_w) ADDRESS_MAP_END +static READ16_HANDLER( latch_r ) +{ + bigfghtr_state *state = space->machine().driver_data<bigfghtr_state>(); + + state->m_read_latch = 1; + return 0; +} + +static WRITE16_HANDLER( sharedram_w ) +{ + bigfghtr_state *state = space->machine().driver_data<bigfghtr_state>(); + COMBINE_DATA(&state->m_sharedram[offset]); + + switch(offset) + { + case 0x40/2: + state->m_mcu_input_snippet = (data == 0x100); + state->m_mcu_jsr_snippet = (data == 0x300); + break; + } +} + +static READ16_HANDLER(sharedram_r) +{ + bigfghtr_state *state = space->machine().driver_data<bigfghtr_state>(); + + if(state->m_mcu_input_snippet) + { + switch(offset+0x600/2) + { + case 0x640/2: + if(state->m_read_latch) + { + state->m_read_latch = 0; + return space->machine().rand(); // TODO + } + break; + + case 0x642/2: + return (input_port_read(space->machine(), "DSW0") & 0xffff) ^ 0xffff; + + case 0x644/2: + return (input_port_read(space->machine(), "DSW1") & 0xffff) ^ 0xffff; + + case 0x646/2: + return (input_port_read(space->machine(), "P1") & 0xffff) ^ 0xffff; + + case 0x648/2: + return (input_port_read(space->machine(), "P2") & 0xffff) ^ 0xffff; + } + } + + if(state->m_mcu_jsr_snippet) + { + switch(offset+0x600/2) + { + case 0x640/2: + if(state->m_read_latch) + { + state->m_read_latch = 0; + return space->machine().rand(); // TODO + } + break; + case 0x642/2: + return (input_port_read(space->machine(), "DSW0") & 0xffff) ^ 0xffff; + + case 0x644/2: + return (input_port_read(space->machine(), "DSW1") & 0xffff) ^ 0xffff; + + case 0x646/2: + return (input_port_read(space->machine(), "P1") & 0xffff) ^ 0xffff; + + case 0x648/2: + return (input_port_read(space->machine(), "P2") & 0xffff) ^ 0xffff; + + /* + protection controls where the program code should jump to. + + example snippet: + 00DB2A: 41FA FE86 lea (-$17a,PC), A0; ($d9b2) ;base program vector + 00DB2E: 4DF9 0008 0E2A lea $80e2a.l, A6 ;base RAM vector, used by the i8751 to send the value, this value is added to the above A0 + 00DB34: 3039 0008 0E62 move.w $80e62.l, D0 ;number of snippets to execute + 00DB3A: 6100 00F0 bsr $dc2c + */ + + /* bp daee, A0 = 0xdd02, A6 = 0x808ca, D0 = 0x80902 */ + //case 0x902/2: + // return 0x0001; + //case (0x90a+0x24)/2: + // return 0x0001; + //case (0x902+8)/2: + // return 0x0004; // 0xf86a + + /* bp db02, A0 = 0xdc2e, A6 = 0x80912, D0 = 0x8094a */ + //case 0x94a/2: + // return 1; + //case (0x94a+8)/2: + // return 0x00dc; // 0xd62e + + /* bp db16, A0 = 0xda86, A6 = 0x80c22, D0 = 0x80c5a */ + //case 0xc5a/2: + // return 1; + //case (0xc5a+8)/2: + // return 0x0288; // 0x345f4 + + /* bp db2a, A0 = 0xd9b2, A6 = 0x80e2a, D0 = 0x80e62 */ + + /* bp db3e, A0 = 0xd8da, A6 = 0x81132, D0 = 0x8116a */ + + /* bp db52, A0 = 0xd806, A6 = 0x8133a, D0 = 0x81372 */ + + /* bp db66, A0 = 0xd7aa, A6 = 0x81742, D0 = 0x8177a */ + + /* bp db7a, A0 = 0xd746, A6 = 0x81b4a, D0 = 0x81b82 */ + + /* bp db8e, A0 = 0xd672, A6 = 0x81f52, D0 = 0x81f8a */ + + /* bp dba4, A0 = 0xd5ae, A6 = 0x8205a, D0 = 0x82092 */ + + /* bp dbba, A0 = 0xd5be, A6 = 0x82862, D0 = 0x8289a */ + + /* bp dbd0, A0 = 0xd512, A6 = 0x8296a, D0 = 0x829a2 */ + + /* bp dbe6, A0 = 0xd466, A6 = 0x82d72, D0 = 0x82daa */ + + /* bp dbfc, A0 = 0xd43e, A6 = 0x8357a, D0 = 0x835b2 */ + + /* following is separated from the others, dunno why ... */ + /* bp dc14, A0 = 0xd3aa, A6 = 0x835a2, D0 = 0x835b2 */ + + + /*case 0x + case 0x94a/2: + return 0x0002*4; + case (0x90a+2*0x40)/2: + case (0x90a+3*0x40)/2: + return 0x0003*4; + case (0x90a+4*0x40)/2: + return 0x000c*4; // 0x13d74 + case (0x90a+5*0x40)/2: + return 0x000d*4; // 0x130f6 + case (0x90a+6*0x40)/2: + return 0x000e*4; // 0x1817e + case (0x90a+7*0x40)/2: + return 0x0010*4; // 0x15924 + //case (0x90a+0x25)/2: + // return 2;*/ + } + } + + return state->m_sharedram[offset]; +} + +static ADDRESS_MAP_START( bigfghtr_map, AS_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_ROM + AM_RANGE(0x080000, 0x0805ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) + AM_RANGE(0x080600, 0x083fff) AM_READWRITE(sharedram_r, sharedram_w) AM_BASE_MEMBER(bigfghtr_state, m_sharedram) + AM_RANGE(0x084000, 0x085fff) AM_RAM //work ram + AM_RANGE(0x086000, 0x086fff) AM_RAM_WRITE(armedf_bg_videoram_w) AM_BASE_MEMBER(armedf_state, m_bg_videoram) + AM_RANGE(0x087000, 0x087fff) AM_RAM_WRITE(armedf_fg_videoram_w) AM_BASE_MEMBER(armedf_state, m_fg_videoram) + AM_RANGE(0x088000, 0x089fff) AM_RAM_WRITE(armedf_text_videoram_w) AM_BASE_MEMBER(armedf_state, m_text_videoram) + AM_RANGE(0x08a000, 0x08afff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE_GENERIC(paletteram) + AM_RANGE(0x08b000, 0x08bfff) AM_RAM AM_BASE_MEMBER(armedf_state, m_spr_pal_clut) + AM_RANGE(0x08c000, 0x08c001) AM_READ_PORT("P1") + AM_RANGE(0x08c002, 0x08c003) AM_READ_PORT("P2") + AM_RANGE(0x08c004, 0x08c005) AM_READ_PORT("DSW0") + AM_RANGE(0x08c006, 0x08c007) AM_READ_PORT("DSW1") + AM_RANGE(0x08d000, 0x08d001) AM_WRITE(terraf_io_w) //807b0 + AM_RANGE(0x08d002, 0x08d003) AM_WRITE(armedf_bg_scrollx_w) + AM_RANGE(0x08d004, 0x08d005) AM_WRITE(armedf_bg_scrolly_w) + AM_RANGE(0x08d006, 0x08d007) AM_WRITE(armedf_fg_scrollx_w) + AM_RANGE(0x08d008, 0x08d009) AM_WRITE(armedf_fg_scrolly_w) + AM_RANGE(0x08d00a, 0x08d00b) AM_WRITE(sound_command_w) + AM_RANGE(0x08d00c, 0x08d00d) AM_WRITENOP //watchdog + AM_RANGE(0x08d00e, 0x08d00f) AM_WRITE(irq_lv1_ack_w) + + AM_RANGE(0x400000, 0x400001) AM_READ(latch_r) +ADDRESS_MAP_END static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0xf7ff) AM_ROM @@ -732,6 +1022,82 @@ static INPUT_PORTS_START( cclimbr2 ) PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW2:8" ) /* Listed as "Unused" */ INPUT_PORTS_END +static INPUT_PORTS_START( bigfghtr ) + PORT_START("P1") + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x0080, 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( 0xf000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("P2") + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_SERVICE_NO_TOGGLE( 0x0200, IP_ACTIVE_LOW ) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_TILT ) + PORT_BIT( 0xf800, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("DSW0") + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x03, "3" ) + PORT_DIPSETTING( 0x02, "4" ) + PORT_DIPSETTING( 0x01, "5" ) + PORT_DIPSETTING( 0x00, "6" ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) ) + PORT_DIPSETTING( 0x0c, "20k then every 60k" ) + PORT_DIPSETTING( 0x04, "20k then every 80k" ) + PORT_DIPSETTING( 0x08, "40k then every 60k" ) + PORT_DIPSETTING( 0x00, "40k then every 80k" ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Cocktail ) ) + PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0xc0, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) + + PORT_START("DSW1") + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) + PORT_DIPNAME( 0x30, 0x00, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x30, DEF_STR( No ) ) + PORT_DIPSETTING( 0x20, "3 Times" ) + PORT_DIPSETTING( 0x10, "5 Times" ) + PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +INPUT_PORTS_END /************************************* @@ -1141,6 +1507,65 @@ static MACHINE_CONFIG_START( legiono, armedf_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MACHINE_CONFIG_END +static MACHINE_START( bigfghtr ) +{ + bigfghtr_state *state = machine.driver_data<bigfghtr_state>(); + + MACHINE_START_CALL(armedf); + state->save_item(NAME(state->m_read_latch)); +} + +static MACHINE_RESET( bigfghtr ) +{ + bigfghtr_state *state = machine.driver_data<bigfghtr_state>(); + + MACHINE_RESET_CALL(armedf); + state->m_read_latch = 0; +} + +static MACHINE_CONFIG_START( bigfghtr, bigfghtr_state ) + + MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // verified + MCFG_CPU_PROGRAM_MAP(bigfghtr_map) + MCFG_CPU_VBLANK_INT("screen", irq1_line_assert) + + MCFG_CPU_ADD("audiocpu", Z80, XTAL_8MHz/2) // 4mhz? + MCFG_CPU_PROGRAM_MAP(sound_map) + MCFG_CPU_IO_MAP(sound_portmap) + MCFG_CPU_PERIODIC_INT(irq0_line_hold, XTAL_8MHz/2/512) // ? + + MCFG_MACHINE_START(bigfghtr) + MCFG_MACHINE_RESET(bigfghtr) + + /* video hardware */ + MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) + + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(57) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) + MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MCFG_SCREEN_SIZE(64*8, 32*8) + MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 ) + MCFG_SCREEN_UPDATE(armedf) + MCFG_SCREEN_EOF(armedf) + + MCFG_GFXDECODE(armedf) + MCFG_PALETTE_LENGTH(2048) + + MCFG_VIDEO_START(armedf) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + + MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_8MHz/2) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + + MCFG_SOUND_ADD("dac1", DAC, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + + MCFG_SOUND_ADD("dac2", DAC, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) +MACHINE_CONFIG_END /************************************* * @@ -1528,6 +1953,69 @@ ROM_START( armedff ) ROM_LOAD( "af_12.rom", 0x20000, 0x20000, CRC(23cb6bfe) SHA1(34cb013827206bea71f5336b308ba92bee688506) ) ROM_END +ROM_START( skyrobo ) + ROM_REGION( 0x80000, "maincpu", 0 ) + ROM_LOAD16_BYTE( "3", 0x00000, 0x20000, CRC(02d8ba9f) SHA1(7622cc17561e5d1c069341b5f412f732f901d4a8) ) /* Rom location IC3 */ + ROM_LOAD16_BYTE( "1", 0x00001, 0x20000, CRC(fcfd9e2e) SHA1(c69b34653f04af8d488e323bc2db89656f76c332) ) /* Rom location IC2 */ + ROM_LOAD16_BYTE( "4", 0x40000, 0x20000, CRC(37ced4b7) SHA1(9ded66f795d3c0886f48e52de632e6edb8c57e84) ) /* Rom location IC5 */ + ROM_LOAD16_BYTE( "2", 0x40001, 0x20000, CRC(88d52f8e) SHA1(33b0d2b3cd38a13d8580694e7c50c059914eebe2) ) /* Rom location IC4 */ + + ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound) */ + ROM_LOAD( "8.17k", 0x00000, 0x10000, CRC(0aeab61e) SHA1(165e0ad58542b65383fef714578da21f62df7b74) ) + + ROM_REGION( 0x10000, "mcu", 0 ) /* Intel C8751 read protected MCU */ + ROM_LOAD( "i8751.mcu", 0x00000, 0x1000, NO_DUMP ) + + ROM_REGION( 0x08000, "gfx1", 0 ) + ROM_LOAD( "7", 0x00000, 0x08000, CRC(f556ef28) SHA1(2acb83cdf23356091056f2cfbbc2b9828ee25b6f) ) /* Rom location 11C */ + + ROM_REGION( 0x30000, "gfx2", 0 ) + ROM_LOAD( "5.13f", 0x00000, 0x20000, CRC(d440a29f) SHA1(9e6ea7c9903e5e3e8e10ac7680c6120e1aa27250) ) + ROM_LOAD( "6.15f", 0x20000, 0x10000, CRC(27469a76) SHA1(ebf2c60e1f70a589680c05adf10771ac2097b9d0) ) + + ROM_REGION( 0x20000, "gfx3", 0 ) + ROM_LOAD( "12.8a", 0x00000, 0x10000, CRC(a5694ea9) SHA1(ea94174495b3a65b3797932074a94df3b55fa0a2) ) + ROM_LOAD( "11.6a", 0x10000, 0x10000, CRC(10b74e2c) SHA1(e3ec68726e7f277dc2043424f2e4d863eb01b3dc) ) + + ROM_REGION( 0x40000, "gfx4", 0 ) + ROM_LOAD( "9.8d", 0x00000, 0x20000, CRC(fe67800e) SHA1(0d3c4c3cb185270260fa691a97cddf082d6a056e) ) + ROM_LOAD( "10.9d", 0x20000, 0x20000, CRC(dcb828c4) SHA1(607bc86580a6fe6e15e91131532b0eecd8b7a0cb) ) + + ROM_REGION( 0x0100, "proms", 0 ) + ROM_LOAD( "tf.13h", 0x0000, 0x0100, CRC(81244757) SHA1(6324f63e571f0f7a0bb9eb97f9994809db79493f) ) /* Prom is a N82S129AN type */ +ROM_END + +ROM_START( bigfghtr ) + ROM_REGION( 0x80000, "maincpu", 0 ) + ROM_LOAD16_BYTE( "3.ic3", 0x00000, 0x20000, CRC(e1e1f291) SHA1(dbbd707be6250d9ffcba3fee265869b72f790e26) ) + ROM_LOAD16_BYTE( "1.ic2", 0x00001, 0x20000, CRC(1100d991) SHA1(3c79398804b3a26b3df0c5734b270c37e1ba6a60) ) + ROM_LOAD16_BYTE( "4.ic5", 0x40000, 0x20000, CRC(2464a83b) SHA1(00f5ac81bc33148daafeab757647b63894e0e0ca) ) + ROM_LOAD16_BYTE( "2.ic4", 0x40001, 0x20000, CRC(b47bbcd5) SHA1(811bd4bc8fb662abf4734ab51e24c863d5cc3df3) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound) */ + ROM_LOAD( "8.17k", 0x00000, 0x10000, CRC(0aeab61e) SHA1(165e0ad58542b65383fef714578da21f62df7b74) ) + + ROM_REGION( 0x10000, "mcu", 0 ) /* Intel C8751 read protected MCU */ + ROM_LOAD( "i8751.mcu", 0x00000, 0x1000, NO_DUMP ) + + ROM_REGION( 0x08000, "gfx1", 0 ) + ROM_LOAD( "7.11c", 0x00000, 0x08000, CRC(1809e79f) SHA1(730547771f803857acb552a84a8bc21bd3bda33f) ) + + ROM_REGION( 0x30000, "gfx2", 0 ) + ROM_LOAD( "5.13f", 0x00000, 0x20000, CRC(d440a29f) SHA1(9e6ea7c9903e5e3e8e10ac7680c6120e1aa27250) ) + ROM_LOAD( "6.15f", 0x20000, 0x10000, CRC(27469a76) SHA1(ebf2c60e1f70a589680c05adf10771ac2097b9d0) ) + + ROM_REGION( 0x20000, "gfx3", 0 ) + ROM_LOAD( "12.8a", 0x00000, 0x10000, CRC(a5694ea9) SHA1(ea94174495b3a65b3797932074a94df3b55fa0a2) ) + ROM_LOAD( "11.6a", 0x10000, 0x10000, CRC(10b74e2c) SHA1(e3ec68726e7f277dc2043424f2e4d863eb01b3dc) ) + + ROM_REGION( 0x40000, "gfx4", 0 ) + ROM_LOAD( "9.8d", 0x00000, 0x20000, CRC(fe67800e) SHA1(0d3c4c3cb185270260fa691a97cddf082d6a056e) ) + ROM_LOAD( "10.9d", 0x20000, 0x20000, CRC(dcb828c4) SHA1(607bc86580a6fe6e15e91131532b0eecd8b7a0cb) ) + + ROM_REGION( 0x0100, "proms", 0 ) + ROM_LOAD( "tf.13h", 0x0000, 0x0100, CRC(81244757) SHA1(6324f63e571f0f7a0bb9eb97f9994809db79493f) ) /* Prom is a N82S129AN type */ +ROM_END /************************************* * @@ -1626,6 +2114,11 @@ static DRIVER_INIT( cclimbr2 ) state->m_scroll_type = 3; } +static DRIVER_INIT( bigfghtr ) +{ + armedf_state *state = machine.driver_data<armedf_state>(); + state->m_scroll_type = 1; +} /************************************* * @@ -1645,3 +2138,5 @@ GAME( 1988, cclimbr2, 0, cclimbr2, cclimbr2, cclimbr2, ROT0, "Nichibuts GAME( 1988, cclimbr2a,cclimbr2, cclimbr2, cclimbr2, cclimbr2, ROT0, "Nichibutsu", "Crazy Climber 2 (Japan, Harder)", GAME_SUPPORTS_SAVE ) GAME( 1988, armedf, 0, armedf, armedf, armedf, ROT270, "Nichibutsu", "Armed Formation", GAME_SUPPORTS_SAVE ) GAME( 1988, armedff, armedf, armedf, armedf, armedf, ROT270, "Nichibutsu (Fillmore license)", "Armed Formation (Fillmore license)", GAME_SUPPORTS_SAVE ) +GAME( 1989, skyrobo, 0, bigfghtr, bigfghtr, bigfghtr, ROT0, "Nichibutsu", "Sky Robo", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE ) +GAME( 1989, bigfghtr, skyrobo, bigfghtr, bigfghtr, bigfghtr, ROT0, "Nichibutsu", "Tatakae! Big Fighter (Japan)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/bigfghtr.c b/src/mame/drivers/bigfghtr.c deleted file mode 100644 index c72e6f470e4..00000000000 --- a/src/mame/drivers/bigfghtr.c +++ /dev/null @@ -1,796 +0,0 @@ -/********************************************************************** -Tatakae! Big Fighter (c)1989 Nichibutsu - - based on armedf.c - - TODO: - - scroll - - controls - - dips - - $80600($80000 ?? ) - $80fff = shared ram with 8751 MCU - - controls : - - 02E3E8: move.w $8c000.l, $8064a.l - 02E3F2: move.w $8c002.l, $8064c.l - 02E3FC: move.b #$1, $80640.l - 02E404: move.w $400000.l, D0 - 02E40A: tst.b $80640.l - 02E410: bne 2e3fc - 02E412: move.w $80642.l, $8064e.l - 02E41C: move.w $80644.l, $80650.l - 02E426: move.w $80646.l, $80652.l - input 1 (80646) - 02E430: move.w $80648.l, $80654.l - 02E43A: rts - - ------------------------------------------------------------------------- -Tatakae! Big Fighter -Nichibutsu, 1989 - -This is a horizontal shoot'em-up similar to R-Type. - -It appears this PCB is re-used? Sticker says PCB number is 1706 and (C) 1989 -On the PCB under the sticker is written 1605 and (C) 1988 - - -PCB Layout ----------- - - -1605A-1 (1706-1) -------------------------------------------------------------------- -| 2018 | -| 6.15F 2018 | -| PROM.13H 5.13F | -| | -| | -| 5814 | -| 5814 | -| | -| 5814 | -| 5814 | -| 7.11C | -| | -| 6264 6264 | -| 6264 6264 | -| ---------------- | -| |1706-3 | | -| | | PAL | -| | PAL 8751 | | -| | PAL | | -| | | | -| | | PAL | -| | 2.IC4 4.IC5 | | -| | 1.IC2 3.IC3 | | -| DSW2 | | | -| DSW1 | 68000 | 16MHz PAL | -| ---------------- | -------------------------------------------------------------------- - - -1605B (1706-2) -------------------------------------------------------------------- -| | -| 8.17K Z80A 2018 | -| 2018 | -| YM3812 2018 2018 | -| Y3014B | -| | -| | -| | -| | -| | -| | -| | -| 2018 | -| 10.9D 2018 | -| 9.8D 12.8A | -| PAL 11.6A | -| | -| | -| | -| | -| 2018 2018 | -| 2018 2018 | -| | -| 24MHz | -| | -------------------------------------------------------------------- - - -Notes: - Horizontal Sync: 15.08kHz - Vertical Sync: 60Hz - 68K Clock: 7.998MHz - Z80 Clock: ? (unstable, probably 6MHz or less) - - -**********************************************************************/ -#include "emu.h" -#include "cpu/z80/z80.h" -#include "cpu/m68000/m68000.h" -#include "deprecat.h" -#include "sound/dac.h" -#include "sound/okim6295.h" -#include "sound/3812intf.h" - - -class bigfghtr_state : public driver_device -{ -public: - bigfghtr_state(running_machine &machine, const driver_device_config_base &config) - : driver_device(machine, config) { } - - /* video-related */ - UINT16 * m_text_videoram; - UINT16 * m_bg_videoram; - UINT16 * m_fg_videoram; - UINT16 * m_sharedram; -// UINT16 * m_spriteram; // currently this uses generic buffer_spriteram_w -// UINT16 * m_paletteram; // currently this uses generic palette handling - - /* video-related */ - tilemap_t *m_bg_tilemap; - tilemap_t *m_fg_tilemap; - tilemap_t *m_tx_tilemap; - UINT16 m_fg_scrollx; - UINT16 m_fg_scrolly; - UINT16 m_vreg; - UINT16 m_scroll_x; - UINT16 m_scroll_y; - - /* misc */ - int m_read_latch; - UINT8 m_mcu_input_snippet; - UINT8 m_mcu_jsr_snippet; -}; - - -static TILE_GET_INFO( get_fg_tile_info ) -{ - bigfghtr_state *state = machine.driver_data<bigfghtr_state>(); - int data = state->m_fg_videoram[tile_index]; - SET_TILE_INFO( - 1, - (data & 0x7ff), - data >> 11, - 0); -} - - -static TILE_GET_INFO( get_bg_tile_info ) -{ - bigfghtr_state *state = machine.driver_data<bigfghtr_state>(); - int data = state->m_bg_videoram[tile_index]; - SET_TILE_INFO( - 2, - (data & 0x3ff), - data >> 11, - 0); -} - -static TILE_GET_INFO( get_tx_tile_info ) -{ - bigfghtr_state *state = machine.driver_data<bigfghtr_state>(); - int tile_number = state->m_text_videoram[tile_index] & 0xff; - int attributes; - - attributes = state->m_text_videoram[tile_index + 0x800] & 0xff; - - SET_TILE_INFO( - 0, - tile_number + 256 * (attributes & 0x3), - attributes >> 4, - 0); -} - -static VIDEO_START( bigfghtr ) -{ - bigfghtr_state *state = machine.driver_data<bigfghtr_state>(); - - state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_cols, 16, 16, 64, 32); - state->m_fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_cols, 16, 16, 64, 32); - state->m_tx_tilemap = tilemap_create(machine, get_tx_tile_info, tilemap_scan_cols, 8, 8, 64, 32); - - tilemap_set_transparent_pen(state->m_fg_tilemap, 0xf); - tilemap_set_transparent_pen(state->m_tx_tilemap, 0xf); -} - -static WRITE16_HANDLER(text_videoram_w ) -{ - bigfghtr_state *state = space->machine().driver_data<bigfghtr_state>(); - - COMBINE_DATA(&state->m_text_videoram[offset]); - tilemap_mark_tile_dirty(state->m_tx_tilemap, offset & 0x7ff); -} - -static WRITE16_HANDLER( fg_videoram_w ) -{ - bigfghtr_state *state = space->machine().driver_data<bigfghtr_state>(); - - COMBINE_DATA(&state->m_fg_videoram[offset]); - tilemap_mark_tile_dirty(state->m_fg_tilemap, offset); -} - -static WRITE16_HANDLER( bg_videoram_w ) -{ - bigfghtr_state *state = space->machine().driver_data<bigfghtr_state>(); - - COMBINE_DATA(&state->m_bg_videoram[offset]); - tilemap_mark_tile_dirty(state->m_bg_tilemap, offset); -} - -static WRITE16_HANDLER( fg_scrollx_w ) -{ - bigfghtr_state *state = space->machine().driver_data<bigfghtr_state>(); - COMBINE_DATA(&state->m_fg_scrollx); -} - -static WRITE16_HANDLER( fg_scrolly_w ) -{ - bigfghtr_state *state = space->machine().driver_data<bigfghtr_state>(); - COMBINE_DATA(&state->m_fg_scrolly); -} - -static WRITE16_HANDLER( bg_scrollx_w ) -{ - bigfghtr_state *state = space->machine().driver_data<bigfghtr_state>(); - - COMBINE_DATA(&state->m_scroll_x); - tilemap_set_scrollx(state->m_bg_tilemap, 0, state->m_scroll_x); -} - -static WRITE16_HANDLER( bg_scrolly_w ) -{ - bigfghtr_state *state = space->machine().driver_data<bigfghtr_state>(); - - COMBINE_DATA(&state->m_scroll_y); - tilemap_set_scrolly(state->m_bg_tilemap, 0, state->m_scroll_y); -} - -static void draw_sprites( running_machine &machine, bitmap_t *bitmap, const rectangle *cliprect, int priority ) -{ - UINT16 *buffered_spriteram = machine.generic.buffered_spriteram.u16; - int offs; - for (offs = 0; offs < machine.generic.spriteram_size / 2; offs += 4) - { - int code = buffered_spriteram[offs + 1]; /* ??YX?TTTTTTTTTTT */ - int flipx = code & 0x2000; - int flipy = code & 0x1000; - int color = (buffered_spriteram[offs + 2] >> 8) & 0x1f; - int sx = buffered_spriteram[offs + 3]; - int sy = 240 - (buffered_spriteram[offs + 0] & 0x1ff); - - if (((buffered_spriteram[offs + 0] & 0x3000) >> 12) == priority) - { - drawgfx_transpen(bitmap,cliprect,machine.gfx[3], - code & 0xfff, - color, - flipx,flipy, - sx,sy,15); - } - } -} - - -static SCREEN_UPDATE( bigfghtr ) -{ - bigfghtr_state *state = screen->machine().driver_data<bigfghtr_state>(); - int sprite_enable = state->m_vreg & 0x200; - - tilemap_set_enable(state->m_bg_tilemap, state->m_vreg & 0x800); - tilemap_set_enable(state->m_fg_tilemap, state->m_vreg & 0x400); - tilemap_set_enable(state->m_tx_tilemap, state->m_vreg & 0x100); - - tilemap_set_scrollx(state->m_fg_tilemap, 0, state->m_fg_scrollx); - tilemap_set_scrolly(state->m_fg_tilemap, 0, state->m_fg_scrolly); - - if (state->m_vreg & 0x0800) - tilemap_draw(bitmap, cliprect, state->m_bg_tilemap, 0, 0); - else - bitmap_fill(bitmap, cliprect, get_black_pen(screen->machine())); - - if(sprite_enable) - draw_sprites(screen->machine(), bitmap, cliprect, 2); - - tilemap_draw(bitmap, cliprect, state->m_fg_tilemap, 0, 0); - - if(sprite_enable) - draw_sprites(screen->machine(), bitmap, cliprect, 1); - - tilemap_draw(bitmap, cliprect, state->m_tx_tilemap, 0, 0); - - if (sprite_enable) - draw_sprites(screen->machine(), bitmap, cliprect, 0); - - return 0; -} - - - -static SCREEN_EOF( bigfghtr ) -{ - address_space *space = machine.device("maincpu")->memory().space(AS_PROGRAM); - buffer_spriteram16_w(space, 0, 0, 0xffff); -} - - -static WRITE16_HANDLER( sound_command_w ) -{ - if (ACCESSING_BITS_0_7) - soundlatch_w(space, 0, ((data & 0x7f) << 1) | 1); -} - -static WRITE16_HANDLER( io_w ) -{ - bigfghtr_state *state = space->machine().driver_data<bigfghtr_state>(); - - COMBINE_DATA(&state->m_vreg); - flip_screen_set(space->machine(), state->m_vreg & 0x1000); -} - - -static WRITE16_HANDLER( sharedram_w ) -{ - bigfghtr_state *state = space->machine().driver_data<bigfghtr_state>(); - COMBINE_DATA(&state->m_sharedram[offset]); - - switch(offset) - { - case 0x40/2: - state->m_mcu_input_snippet = (data == 0x100); - state->m_mcu_jsr_snippet = (data == 0x300); - break; - } -} - -static READ16_HANDLER(sharedram_r) -{ - bigfghtr_state *state = space->machine().driver_data<bigfghtr_state>(); - - if(state->m_mcu_input_snippet) - { - switch(offset+0x600/2) - { - case 0x640/2: - if(state->m_read_latch) - { - state->m_read_latch = 0; - return space->machine().rand(); // TODO - } - break; - - case 0x642/2: - return (input_port_read(space->machine(), "DSW0") & 0xffff) ^ 0xffff; - - case 0x644/2: - return (input_port_read(space->machine(), "DSW1") & 0xffff) ^ 0xffff; - - case 0x646/2: - return (input_port_read(space->machine(), "P1") & 0xffff) ^ 0xffff; - - case 0x648/2: - return (input_port_read(space->machine(), "P2") & 0xffff) ^ 0xffff; - } - } - - if(state->m_mcu_jsr_snippet) - { - switch(offset+0x600/2) - { - case 0x640/2: - if(state->m_read_latch) - { - state->m_read_latch = 0; - return space->machine().rand(); // TODO - } - break; - case 0x642/2: - return (input_port_read(space->machine(), "DSW0") & 0xffff) ^ 0xffff; - - case 0x644/2: - return (input_port_read(space->machine(), "DSW1") & 0xffff) ^ 0xffff; - - case 0x646/2: - return (input_port_read(space->machine(), "P1") & 0xffff) ^ 0xffff; - - case 0x648/2: - return (input_port_read(space->machine(), "P2") & 0xffff) ^ 0xffff; - - /* - protection controls where the program code should jump to. - - example snippet: - 00DB2A: 41FA FE86 lea (-$17a,PC), A0; ($d9b2) ;base program vector - 00DB2E: 4DF9 0008 0E2A lea $80e2a.l, A6 ;base RAM vector, used by the i8751 to send the value, this value is added to the above A0 - 00DB34: 3039 0008 0E62 move.w $80e62.l, D0 ;number of snippets to execute - 00DB3A: 6100 00F0 bsr $dc2c - */ - - /* bp daee, A0 = 0xdd02, A6 = 0x808ca, D0 = 0x80902 */ - //case 0x902/2: - // return 0x0001; - //case (0x90a+0x24)/2: - // return 0x0001; - //case (0x902+8)/2: - // return 0x0004; // 0xf86a - - /* bp db02, A0 = 0xdc2e, A6 = 0x80912, D0 = 0x8094a */ - //case 0x94a/2: - // return 1; - //case (0x94a+8)/2: - // return 0x00dc; // 0xd62e - - /* bp db16, A0 = 0xda86, A6 = 0x80c22, D0 = 0x80c5a */ - //case 0xc5a/2: - // return 1; - //case (0xc5a+8)/2: - // return 0x0288; // 0x345f4 - - /* bp db2a, A0 = 0xd9b2, A6 = 0x80e2a, D0 = 0x80e62 */ - - /* bp db3e, A0 = 0xd8da, A6 = 0x81132, D0 = 0x8116a */ - - /* bp db52, A0 = 0xd806, A6 = 0x8133a, D0 = 0x81372 */ - - /* bp db66, A0 = 0xd7aa, A6 = 0x81742, D0 = 0x8177a */ - - /* bp db7a, A0 = 0xd746, A6 = 0x81b4a, D0 = 0x81b82 */ - - /* bp db8e, A0 = 0xd672, A6 = 0x81f52, D0 = 0x81f8a */ - - /* bp dba4, A0 = 0xd5ae, A6 = 0x8205a, D0 = 0x82092 */ - - /* bp dbba, A0 = 0xd5be, A6 = 0x82862, D0 = 0x8289a */ - - /* bp dbd0, A0 = 0xd512, A6 = 0x8296a, D0 = 0x829a2 */ - - /* bp dbe6, A0 = 0xd466, A6 = 0x82d72, D0 = 0x82daa */ - - /* bp dbfc, A0 = 0xd43e, A6 = 0x8357a, D0 = 0x835b2 */ - - /* following is separated from the others, dunno why ... */ - /* bp dc14, A0 = 0xd3aa, A6 = 0x835a2, D0 = 0x835b2 */ - - - /*case 0x - case 0x94a/2: - return 0x0002*4; - case (0x90a+2*0x40)/2: - case (0x90a+3*0x40)/2: - return 0x0003*4; - case (0x90a+4*0x40)/2: - return 0x000c*4; // 0x13d74 - case (0x90a+5*0x40)/2: - return 0x000d*4; // 0x130f6 - case (0x90a+6*0x40)/2: - return 0x000e*4; // 0x1817e - case (0x90a+7*0x40)/2: - return 0x0010*4; // 0x15924 - //case (0x90a+0x25)/2: - // return 2;*/ - } - } - - return state->m_sharedram[offset]; -} - -static READ16_HANDLER( latch_r ) -{ - bigfghtr_state *state = space->machine().driver_data<bigfghtr_state>(); - - state->m_read_latch = 1; - return 0; -} - -static READ8_HANDLER( soundlatch_clear_r ) -{ - soundlatch_clear_w(space, 0, 0); - return 0; -} - -static ADDRESS_MAP_START( mainmem, AS_PROGRAM, 16 ) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x0805ff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram) - AM_RANGE(0x080600, 0x083fff) AM_READWRITE(sharedram_r, sharedram_w) AM_BASE_MEMBER(bigfghtr_state, m_sharedram) - AM_RANGE(0x084000, 0x085fff) AM_RAM //?? - AM_RANGE(0x086000, 0x086fff) AM_RAM_WRITE(bg_videoram_w) AM_BASE_MEMBER(bigfghtr_state, m_bg_videoram) - AM_RANGE(0x087000, 0x087fff) AM_RAM_WRITE(fg_videoram_w) AM_BASE_MEMBER(bigfghtr_state, m_fg_videoram) - AM_RANGE(0x088000, 0x089fff) AM_RAM_WRITE(text_videoram_w) AM_BASE_MEMBER(bigfghtr_state, m_text_videoram) - AM_RANGE(0x08a000, 0x08afff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE_GENERIC(paletteram) - AM_RANGE(0x08b000, 0x08bfff) AM_RAM //?? - AM_RANGE(0x08c000, 0x08c001) AM_READ_PORT("P1") - AM_RANGE(0x08c002, 0x08c003) AM_READ_PORT("P2") - AM_RANGE(0x08c004, 0x08c005) AM_READ_PORT("DSW0") - AM_RANGE(0x08c006, 0x08c007) AM_READ_PORT("DSW1") - - AM_RANGE(0x08d000, 0x08d001) AM_WRITE(io_w) //807b0 - - AM_RANGE(0x08d002, 0x08d003) AM_WRITE(bg_scrollx_w) //8069a - AM_RANGE(0x08d004, 0x08d005) AM_WRITE(bg_scrolly_w) //80696 - AM_RANGE(0x08d006, 0x08d007) AM_WRITE(fg_scrollx_w) //80692 - AM_RANGE(0x08d008, 0x08d009) AM_WRITE(fg_scrolly_w) //8068e - - AM_RANGE(0x08d00a, 0x08d00b) AM_WRITE(sound_command_w) - AM_RANGE(0x400000, 0x400001) AM_READ(latch_r) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( soundmem, AS_PROGRAM, 8 ) - AM_RANGE(0x0000, 0xf7ff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -static ADDRESS_MAP_START( soundport, AS_IO, 8 ) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x0, 0x1) AM_DEVWRITE("ymsnd", ym3812_w) - AM_RANGE(0x2, 0x2) AM_DEVWRITE("dac1", dac_signed_w) - AM_RANGE(0x3, 0x3) AM_DEVWRITE("dac2", dac_signed_w) - AM_RANGE(0x4, 0x4) AM_READ(soundlatch_clear_r) - AM_RANGE(0x6, 0x6) AM_READ(soundlatch_r) -ADDRESS_MAP_END - - - -static INPUT_PORTS_START( bigfghtr ) - PORT_START("P1") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) - PORT_BIT( 0x0080, 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( 0xf000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("P2") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_SERVICE_NO_TOGGLE( 0x0200, IP_ACTIVE_LOW ) - PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_TILT ) - PORT_BIT( 0xf800, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("DSW0") - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x03, "3" ) - PORT_DIPSETTING( 0x02, "4" ) - PORT_DIPSETTING( 0x01, "5" ) - PORT_DIPSETTING( 0x00, "6" ) - PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) ) - PORT_DIPSETTING( 0x0c, "20k then every 60k" ) - PORT_DIPSETTING( 0x04, "20k then every 80k" ) - PORT_DIPSETTING( 0x08, "40k then every 60k" ) - PORT_DIPSETTING( 0x00, "40k then every 80k" ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x10, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Cocktail ) ) - PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) ) - PORT_DIPSETTING( 0xc0, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Hard ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) - - PORT_START("DSW1") - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) ) - PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) - PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x30, 0x00, DEF_STR( Allow_Continue ) ) - PORT_DIPSETTING( 0x30, DEF_STR( No ) ) - PORT_DIPSETTING( 0x20, "3 Times" ) - PORT_DIPSETTING( 0x10, "5 Times" ) - PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) -INPUT_PORTS_END - - -static const gfx_layout char_layout = -{ - 8,8, - RGN_FRAC(1,1), - 4, - { 0, 1, 2, 3 }, - { 4, 0, 12, 8, 20, 16, 28, 24}, - { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, - 32*8 -}; - -static const gfx_layout tile_layout = -{ - 16,16, - RGN_FRAC(1,1), - 4, - { 0, 1, 2, 3 }, - { 4, 0, 12, 8, 20, 16, 28, 24, - 32+4, 32+0, 32+12, 32+8, 32+20, 32+16, 32+28, 32+24 }, - { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, - 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 }, - 128*8 -}; - -static const gfx_layout sprite_layout = -{ - 16,16, - RGN_FRAC(1,2), - 4, - { 0, 1, 2, 3 }, - { 4, 0, RGN_FRAC(1,2)+4, RGN_FRAC(1,2)+0, 12, 8, RGN_FRAC(1,2)+12, RGN_FRAC(1,2)+8, - 20, 16, RGN_FRAC(1,2)+20, RGN_FRAC(1,2)+16, 28, 24, RGN_FRAC(1,2)+28, RGN_FRAC(1,2)+24 }, - { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, - 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 }, - 64*8 -}; - -static GFXDECODE_START( bigfghtr ) - GFXDECODE_ENTRY( "gfx1", 0, char_layout, 0*16, 32 ) - GFXDECODE_ENTRY( "gfx2", 0, tile_layout, 64*16, 32 ) - GFXDECODE_ENTRY( "gfx3", 0, tile_layout, 96*16, 32 ) - GFXDECODE_ENTRY( "gfx4", 0, sprite_layout, 32*16, 32 ) -GFXDECODE_END - - - -static MACHINE_START( bigfghtr ) -{ - bigfghtr_state *state = machine.driver_data<bigfghtr_state>(); - - state->save_item(NAME(state->m_fg_scrollx)); - state->save_item(NAME(state->m_fg_scrolly)); - state->save_item(NAME(state->m_scroll_x)); - state->save_item(NAME(state->m_scroll_y)); - state->save_item(NAME(state->m_vreg)); - state->save_item(NAME(state->m_read_latch)); -} - -static MACHINE_RESET( bigfghtr ) -{ - bigfghtr_state *state = machine.driver_data<bigfghtr_state>(); - - state->m_fg_scrollx = 0; - state->m_fg_scrolly = 0; - state->m_scroll_x = 0; - state->m_scroll_y = 0; - state->m_vreg = 0; - state->m_read_latch = 0; -} - - -static MACHINE_CONFIG_START( bigfghtr, bigfghtr_state ) - - MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // verified - MCFG_CPU_PROGRAM_MAP(mainmem) - - MCFG_CPU_VBLANK_INT("screen", irq1_line_hold) - - MCFG_CPU_ADD("audiocpu", Z80, XTAL_8MHz/2) // 4mhz? - MCFG_CPU_PROGRAM_MAP(soundmem) - MCFG_CPU_IO_MAP(soundport) - MCFG_CPU_PERIODIC_INT(irq0_line_hold, XTAL_8MHz/2/512) // ? - - MCFG_MACHINE_START(bigfghtr) - MCFG_MACHINE_RESET(bigfghtr ) - - /* video hardware */ - MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM) - - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(57) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(12*8, (64-12)*8-1, 1*8, 31*8-1 ) - MCFG_SCREEN_UPDATE(bigfghtr) - MCFG_SCREEN_EOF(bigfghtr) - - MCFG_GFXDECODE(bigfghtr) - MCFG_PALETTE_LENGTH(2048) - - MCFG_VIDEO_START(bigfghtr) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_MONO("mono") - - MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_8MHz/2) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - - MCFG_SOUND_ADD("dac1", DAC, 0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - - MCFG_SOUND_ADD("dac2", DAC, 0) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END - - -ROM_START( skyrobo ) - ROM_REGION( 0x80000, "maincpu", 0 ) - ROM_LOAD16_BYTE( "3", 0x00000, 0x20000, CRC(02d8ba9f) SHA1(7622cc17561e5d1c069341b5f412f732f901d4a8) ) /* Rom location IC3 */ - ROM_LOAD16_BYTE( "1", 0x00001, 0x20000, CRC(fcfd9e2e) SHA1(c69b34653f04af8d488e323bc2db89656f76c332) ) /* Rom location IC2 */ - ROM_LOAD16_BYTE( "4", 0x40000, 0x20000, CRC(37ced4b7) SHA1(9ded66f795d3c0886f48e52de632e6edb8c57e84) ) /* Rom location IC5 */ - ROM_LOAD16_BYTE( "2", 0x40001, 0x20000, CRC(88d52f8e) SHA1(33b0d2b3cd38a13d8580694e7c50c059914eebe2) ) /* Rom location IC4 */ - - ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound) */ - ROM_LOAD( "8.17k", 0x00000, 0x10000, CRC(0aeab61e) SHA1(165e0ad58542b65383fef714578da21f62df7b74) ) - - ROM_REGION( 0x10000, "mcu", 0 ) /* Intel C8751 read protected MCU */ - ROM_LOAD( "i8751.mcu", 0x00000, 0x1000, NO_DUMP ) - - ROM_REGION( 0x08000, "gfx1", 0 ) - ROM_LOAD( "7", 0x00000, 0x08000, CRC(f556ef28) SHA1(2acb83cdf23356091056f2cfbbc2b9828ee25b6f) ) /* Rom location 11C */ - - ROM_REGION( 0x30000, "gfx2", 0 ) - ROM_LOAD( "5.13f", 0x00000, 0x20000, CRC(d440a29f) SHA1(9e6ea7c9903e5e3e8e10ac7680c6120e1aa27250) ) - ROM_LOAD( "6.15f", 0x20000, 0x10000, CRC(27469a76) SHA1(ebf2c60e1f70a589680c05adf10771ac2097b9d0) ) - - ROM_REGION( 0x20000, "gfx3", 0 ) - ROM_LOAD( "12.8a", 0x00000, 0x10000, CRC(a5694ea9) SHA1(ea94174495b3a65b3797932074a94df3b55fa0a2) ) - ROM_LOAD( "11.6a", 0x10000, 0x10000, CRC(10b74e2c) SHA1(e3ec68726e7f277dc2043424f2e4d863eb01b3dc) ) - - ROM_REGION( 0x40000, "gfx4", 0 ) - ROM_LOAD( "9.8d", 0x00000, 0x20000, CRC(fe67800e) SHA1(0d3c4c3cb185270260fa691a97cddf082d6a056e) ) - ROM_LOAD( "10.9d", 0x20000, 0x20000, CRC(dcb828c4) SHA1(607bc86580a6fe6e15e91131532b0eecd8b7a0cb) ) - - ROM_REGION( 0x0100, "proms", 0 ) - ROM_LOAD( "tf.13h", 0x0000, 0x0100, CRC(81244757) SHA1(6324f63e571f0f7a0bb9eb97f9994809db79493f) ) /* Prom is a N82S129AN type */ -ROM_END - -ROM_START( bigfghtr ) - ROM_REGION( 0x80000, "maincpu", 0 ) - ROM_LOAD16_BYTE( "3.ic3", 0x00000, 0x20000, CRC(e1e1f291) SHA1(dbbd707be6250d9ffcba3fee265869b72f790e26) ) - ROM_LOAD16_BYTE( "1.ic2", 0x00001, 0x20000, CRC(1100d991) SHA1(3c79398804b3a26b3df0c5734b270c37e1ba6a60) ) - ROM_LOAD16_BYTE( "4.ic5", 0x40000, 0x20000, CRC(2464a83b) SHA1(00f5ac81bc33148daafeab757647b63894e0e0ca) ) - ROM_LOAD16_BYTE( "2.ic4", 0x40001, 0x20000, CRC(b47bbcd5) SHA1(811bd4bc8fb662abf4734ab51e24c863d5cc3df3) ) - - ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound) */ - ROM_LOAD( "8.17k", 0x00000, 0x10000, CRC(0aeab61e) SHA1(165e0ad58542b65383fef714578da21f62df7b74) ) - - ROM_REGION( 0x10000, "mcu", 0 ) /* Intel C8751 read protected MCU */ - ROM_LOAD( "i8751.mcu", 0x00000, 0x1000, NO_DUMP ) - - ROM_REGION( 0x08000, "gfx1", 0 ) - ROM_LOAD( "7.11c", 0x00000, 0x08000, CRC(1809e79f) SHA1(730547771f803857acb552a84a8bc21bd3bda33f) ) - - ROM_REGION( 0x30000, "gfx2", 0 ) - ROM_LOAD( "5.13f", 0x00000, 0x20000, CRC(d440a29f) SHA1(9e6ea7c9903e5e3e8e10ac7680c6120e1aa27250) ) - ROM_LOAD( "6.15f", 0x20000, 0x10000, CRC(27469a76) SHA1(ebf2c60e1f70a589680c05adf10771ac2097b9d0) ) - - ROM_REGION( 0x20000, "gfx3", 0 ) - ROM_LOAD( "12.8a", 0x00000, 0x10000, CRC(a5694ea9) SHA1(ea94174495b3a65b3797932074a94df3b55fa0a2) ) - ROM_LOAD( "11.6a", 0x10000, 0x10000, CRC(10b74e2c) SHA1(e3ec68726e7f277dc2043424f2e4d863eb01b3dc) ) - - ROM_REGION( 0x40000, "gfx4", 0 ) - ROM_LOAD( "9.8d", 0x00000, 0x20000, CRC(fe67800e) SHA1(0d3c4c3cb185270260fa691a97cddf082d6a056e) ) - ROM_LOAD( "10.9d", 0x20000, 0x20000, CRC(dcb828c4) SHA1(607bc86580a6fe6e15e91131532b0eecd8b7a0cb) ) - - ROM_REGION( 0x0100, "proms", 0 ) - ROM_LOAD( "tf.13h", 0x0000, 0x0100, CRC(81244757) SHA1(6324f63e571f0f7a0bb9eb97f9994809db79493f) ) /* Prom is a N82S129AN type */ -ROM_END - -GAME( 1989, skyrobo, 0, bigfghtr, bigfghtr, 0, ROT0, "Nichibutsu", "Sky Robo", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE ) -GAME( 1989, bigfghtr, skyrobo, bigfghtr, bigfghtr, 0, ROT0, "Nichibutsu", "Tatakae! Big Fighter (Japan)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/armedf.h b/src/mame/includes/armedf.h index de68f322209..3b73a732b8c 100644 --- a/src/mame/includes/armedf.h +++ b/src/mame/includes/armedf.h @@ -30,6 +30,19 @@ public: int m_waiting_msb; }; +class bigfghtr_state : public armedf_state +{ +public: + bigfghtr_state(running_machine &machine, const driver_device_config_base &config) + : armedf_state(machine, config) { } + + UINT16 * m_sharedram; + + /* misc */ + int m_read_latch; + UINT8 m_mcu_input_snippet; + UINT8 m_mcu_jsr_snippet; +}; /*----------- defined in video/armedf.c -----------*/ diff --git a/src/mame/mame.mak b/src/mame/mame.mak index aec47c806e9..df436fa8c44 100644 --- a/src/mame/mame.mak +++ b/src/mame/mame.mak @@ -1018,7 +1018,6 @@ $(MAMEOBJ)/neogeo.a: \ $(MAMEOBJ)/nichibut.a: \ $(DRIVERS)/armedf.o $(VIDEO)/armedf.o $(MACHINE)/armedf.o \ - $(DRIVERS)/bigfghtr.o \ $(DRIVERS)/cclimber.o $(MACHINE)/cclimber.o $(AUDIO)/cclimber.o $(VIDEO)/cclimber.o \ $(DRIVERS)/clshroad.o $(VIDEO)/clshroad.o \ $(DRIVERS)/csplayh5.o \ |
