I've told you more reverts ...

This commit is contained in:
Angelo Salese 2011-10-23 14:33:01 +00:00
parent db68c2d2dd
commit 6947461982
4 changed files with 1587 additions and 2219 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -54,25 +54,23 @@ Stephh's notes (based on the games M68000 and Z80 code and some tests) :
- There is no real "test mode" : only a grid with colors ("Cross Hatch Pattern") - There is no real "test mode" : only a grid with colors ("Cross Hatch Pattern")
is displayed. There is a specific "Show Dip Switches Settings". is displayed. There is a specific "Show Dip Switches Settings".
- Test switch on JAMMA connector works to enter "Cross Hatch Pattern".
- "Service 1" uses COIN A coinage
1a) 'twincobr' 1a) 'twincobr'
- No notice screen. - No notice screen.
- Game uses TOAPLAN_COINAGE_EUROPE (code at 0x0bfd in CPU1). - Game uses TOAPLAN_COINAGE_WORLD (code at 0x0bfd in CPU1).
- Press any players buttons on startup to skip some tests (code at 0x025ed8). - Press any players buttons on startup to skip some tests (code at 0x025ed8).
1b) 'twincobru' 1b) 'twincobru'
- "FOR USE IN U.S.A. ONLY" notice screen. - "FOR USE IN U.S.A. ONLY" notice screen.
- Game uses TOAPLAN_COINAGE_JAPAN (code at 0x0bfd in CPU1). - Game uses TOAPLAN_COINAGE_JAPAN_OLD (code at 0x0bfd in CPU1).
- Press any players buttons on startup to skip some tests (code at 0x025ed6). - Press any players buttons on startup to skip some tests (code at 0x025ed6).
1c) 'ktiger' 1c) 'ktiger'
- "FOR USE IN JAPAN ONLY" notice screen. - "FOR USE IN JAPAN ONLY" notice screen.
- Game uses TOAPLAN_COINAGE_JAPAN (code at 0x0bfd in CPU1 - same as in 'twincobru'). - Game uses TOAPLAN_COINAGE_JAPAN_OLD (code at 0x0bfd in CPU1 - same as in 'twincobru').
- Press any players buttons on startup to skip some tests (code at 0x0259d0). - Press any players buttons on startup to skip some tests (code at 0x0259d0).
- "Bonus Lives" settings are different than the ones in the other sets. - "Bonus Lives" settings are different than the ones in the other sets.
- See other differences with 'twincobr' and 'twincobru' above. - See other differences with 'twincobr' and 'twincobru' above.
@ -80,8 +78,8 @@ Stephh's notes (based on the games M68000 and Z80 code and some tests) :
1d) 'gulfwar2' 1d) 'gulfwar2'
- No notice screen. - No notice screen.
- Game uses TOAPLAN_COINAGE_JAPAN (code at 0x0bfd in CPU1 - same as in 'twincobru'). - Game uses TOAPLAN_COINAGE_JAPAN_OLD (code at 0x0bfd in CPU1 - same as in 'twincobru').
Surprisingly, when Dip Switches are displayed, it shows TOAPLAN_COINAGE_EUROPE. Surprisingly, when Dip Switches are displayed, it shows TOAPLAN_COINAGE_WORLD.
- Press any players buttons on startup to skip some tests (code at 0x025ed8). - Press any players buttons on startup to skip some tests (code at 0x025ed8).
- VBLANK bit is inverted (ACTIVE_LOW instead of ACTIVE_HIGH). - VBLANK bit is inverted (ACTIVE_LOW instead of ACTIVE_HIGH).
@ -90,13 +88,11 @@ Stephh's notes (based on the games M68000 and Z80 code and some tests) :
- There is no real "test mode" : only a grid with colors ("Cross Hatch Pattern") - There is no real "test mode" : only a grid with colors ("Cross Hatch Pattern")
is displayed. There is a specific "Show Dip Switches Settings". is displayed. There is a specific "Show Dip Switches Settings".
- Test switch on JAMMA connector doesn't work to enter "test mode", but works to reset CPU.
- "Service 1" uses COIN A coinage
2a) 'fshark' 2a) 'fshark'
- No notice screen. - No notice screen.
- Game uses TOAPLAN_COINAGE_EUROPE. - Game uses TOAPLAN_COINAGE_WORLD.
- When cabinet set to "Upright", you can use joystick and buttons from both players - When cabinet set to "Upright", you can use joystick and buttons from both players
(code at 0x002434). (code at 0x002434).
@ -110,7 +106,7 @@ Stephh's notes (based on the games M68000 and Z80 code and some tests) :
2c) 'hishouza' 2c) 'hishouza'
- "FOR USE IN JAPAN ONLY" notice screen. - "FOR USE IN JAPAN ONLY" notice screen.
- Game uses TOAPLAN_COINAGE_JAPAN. - Game uses TOAPLAN_COINAGE_JAPAN_OLD.
- When cabinet set to "Upright", you can use joystick and buttons from both players - When cabinet set to "Upright", you can use joystick and buttons from both players
(code at 0x002456). (code at 0x002456).
@ -137,11 +133,13 @@ read:
78005 Player 1 Joystick and Buttons input port 78005 Player 1 Joystick and Buttons input port
78007 Player 2 Joystick and Buttons input port 78007 Player 2 Joystick and Buttons input port
78009 bit 7 vblank, coin and control/service inputs (Flying shark) 78009 bit 7 vblank, coin and control/service inputs (Flying shark)
Flying Shark implements Tilt as 'freeze system' and also has
a reset button, but its not implelemted here (not needed)
7e000-7e005 read data from video RAM (see below) 7e000-7e005 read data from video RAM (see below)
write: write:
60000-60003 CRTC HD6845 or UM6845B. 0 = register offset, 2 = register data 60000-60003 CRTC HD6845 or UM6845B. 0 = register offset , 2 = register data
70000-70001 scroll y for character page (centre normally 0x01c9) 70000-70001 scroll y for character page (centre normally 0x01c9)
70002-70003 scroll < x > for character page (centre normally 0x00e2) 70002-70003 scroll < x > for character page (centre normally 0x00e2)
70004-70005 offset in character page to write character (7e000) 70004-70005 offset in character page to write character (7e000)
@ -269,16 +267,6 @@ Shark Zame
#include "sound/3812intf.h" #include "sound/3812intf.h"
/***************************** debugging flags ******************************/
#define DEBUG_FREE_ALL_DIPSW FALSE
#define DEBUG_DONT_HIDE_DUP_DIPSETTING TRUE
/* Set TRUE and you may find unknown easter eggs */
/**************************** customizing flags *****************************/
/* nothing */
/***************************** 68000 Memory Map *****************************/ /***************************** 68000 Memory Map *****************************/
@ -358,140 +346,74 @@ ADDRESS_MAP_END
Input Port definitions Input Port definitions
*****************************************************************************/ *****************************************************************************/
static INPUT_PORTS_START( fshark_generic )
PORT_START("DSWA") /* in 0x078001(M68000) */ /* DIP SW 1 */
TOAPLAN_DIP_1_SPARE(SW1)
TOAPLAN_DIP_2_SPARE(SW1)
TOAPLAN_DIP_3_SPARE(SW1)
TOAPLAN_DIP_4_SPARE(SW1)
TOAPLAN_DIP_5_SPARE(SW1)
TOAPLAN_DIP_6_SPARE(SW1)
TOAPLAN_DIP_7_SPARE(SW1)
TOAPLAN_DIP_8_SPARE(SW1)
PORT_START("DSWB") /* in 0x078003(M68000) */ /* DIP SW 2 */
TOAPLAN_DIP_1_SPARE(SW2)
TOAPLAN_DIP_2_SPARE(SW2)
TOAPLAN_DIP_3_SPARE(SW2)
TOAPLAN_DIP_4_SPARE(SW2)
TOAPLAN_DIP_5_SPARE(SW2)
TOAPLAN_DIP_6_SPARE(SW2)
TOAPLAN_DIP_7_SPARE(SW2)
TOAPLAN_DIP_8_SPARE(SW2)
PORT_START("P1") /* in 0x078005(M68000) */ /* Player 1 controls */
TOAPLAN_JOY_UDLR_2_BUTTONS(1)
PORT_START("P2") /* in 0x078007(M68000) */ /* Player 2 controls */
TOAPLAN_JOY_UDLR_2_BUTTONS(2)
PORT_START("SYSTEM")
/* Port name kept to fit other games in the driver - it doesn't even exist */
PORT_BIT(0xff, TOAPLAN_IP_ACTIVE_LEVEL, IPT_UNUSED)
PORT_START("VBLANK") /* in 0x078009(M68000) */ /* VBlank and coin-in/start inputs */
/* Port name kept to fit other games in the driver - it shall be "SYSTEM" */
TOAPLAN_SYSTEM_INPUT_WITH_VBLANK
PORT_MODIFY("VBLANK")
TOAPLAN_TEST_SWITCH_RENAME("Test (Reset CPU)")
/* When some users see "reset", they may think that is a bug of MAME.
To avoid the doubt, describe the function "Reset CPU" */
INPUT_PORTS_END
static INPUT_PORTS_START( twincobr_generic )
PORT_START("DSWA") /* in 0x40(Z80) */ /* DIP SW 1 */
TOAPLAN_DIP_1_SPARE(SW1)
TOAPLAN_DIP_2_SPARE(SW1)
TOAPLAN_DIP_3_SPARE(SW1)
TOAPLAN_DIP_4_SPARE(SW1)
TOAPLAN_DIP_5_SPARE(SW1)
TOAPLAN_DIP_6_SPARE(SW1)
TOAPLAN_DIP_7_SPARE(SW1)
TOAPLAN_DIP_8_SPARE(SW1)
PORT_START("DSWB") /* in 0x50(Z80) */ /* DIP SW 2 */
TOAPLAN_DIP_1_SPARE(SW2)
TOAPLAN_DIP_2_SPARE(SW2)
TOAPLAN_DIP_3_SPARE(SW2)
TOAPLAN_DIP_4_SPARE(SW2)
TOAPLAN_DIP_5_SPARE(SW2)
TOAPLAN_DIP_6_SPARE(SW2)
TOAPLAN_DIP_7_SPARE(SW2)
TOAPLAN_DIP_8_SPARE(SW2)
PORT_START("P1") /* in 0x078005(M68000) */ /* Player 1 controls */
TOAPLAN_JOY_UDLR_2_BUTTONS(1)
PORT_START("P2") /* in 0x078007(M68000) */ /* Player 2 controls */
TOAPLAN_JOY_UDLR_2_BUTTONS(2)
PORT_START("SYSTEM") /* in 0x10(Z80) */ /* coin-in/start inputs */
TOAPLAN_SYSTEM_INPUT_WITHOUT_VBLANK
PORT_START("VBLANK") /* in 0x078009(M68000) */ /* VBlank */
TOAPLAN_VBLANK_INPUT_8BITS
INPUT_PORTS_END
/* verified from M68000 and Z80 code */ /* verified from M68000 and Z80 code */
static INPUT_PORTS_START( twincobr ) static INPUT_PORTS_START( twincobr )
PORT_INCLUDE( twincobr_generic ) PORT_START("DSWA")
TOAPLAN_MACHINE_NO_COCKTAIL
TOAPLAN_COINAGE_WORLD /* tables at 0x0c30 (COIN1) and 0x0c38 (COIN2) in CPU1 */
#if ! DEBUG_FREE_ALL_DIPSW PORT_START("DSWB")
PORT_MODIFY("DSWA") TOAPLAN_DIFFICULTY
//DIP_A1_SPARE (divert from 'twincobr_generic') PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) /* table at 0x020988 ('twincobr' and 'twincobru') */
TOAPLAN_DIP_A2_FLIP_SCREEN(SW1) PORT_DIPSETTING( 0x00, "50k 200k 150k+" )
TOAPLAN_DIP_A3_SERVICE_MODE(SW1) PORT_DIPSETTING( 0x04, "70k 270k 200k+" )
TOAPLAN_DIP_A4_DEMO_SOUNDS(SW1) PORT_DIPSETTING( 0x08, "50k Only" )
TOAPLAN_DIP_A5678_COINAGE_EUROPE(SW1) /* tables at 0x0c30 (COIN1) and 0x0c38 (COIN2) in CPU1 */ PORT_DIPSETTING( 0x0c, "100k Only" )
PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
PORT_DIPSETTING( 0x30, "2" )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPSETTING( 0x20, "4" )
PORT_DIPSETTING( 0x10, "5" )
PORT_DIPNAME( 0x40, 0x00, "Show Dip Switches Settings" )
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
PORT_DIPUNUSED( 0x80, IP_ACTIVE_HIGH )
PORT_MODIFY("DSWB") PORT_START("P1")
TOAPLAN_DIP_B12_DIFFICULTY(SW2) TOAPLAN_JOY_UDLR_2_BUTTONS( 1 )
PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:!3,!4") /* table at 0x020988 ('twincobr' and 'twincobru') */
PORT_DIPSETTING( 0x00, "50k 200k 150k+" ) PORT_START("P2")
PORT_DIPSETTING( 0x04, "70k 270k 200k+" ) TOAPLAN_JOY_UDLR_2_BUTTONS( 2 )
PORT_DIPSETTING( 0x08, "50k Only" )
PORT_DIPSETTING( 0x0c, "100k Only" ) PORT_START("SYSTEM")
PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:!5,!6") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) /* uses COIN1 coinage */
PORT_DIPSETTING( 0x30, "2" ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_TILT )
PORT_DIPSETTING( 0x00, "3" ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) /* same effect as the DSWA bit 2 */
PORT_DIPSETTING( 0x20, "4" ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_DIPSETTING( 0x10, "5" ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 )
TOAPLAN_DIP_B7_SHOW_DIPSW_SETTINGS(SW2) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
//DIP_B8_SPARE (divert from 'twincobr_generic') PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
#endif PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("VBLANK")
PORT_BIT( 0x7f, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )
INPUT_PORTS_END INPUT_PORTS_END
/* verified from M68000 and Z80 code */ /* verified from M68000 and Z80 code */
static INPUT_PORTS_START( twincobru ) static INPUT_PORTS_START( twincobru )
PORT_INCLUDE( twincobr ) PORT_INCLUDE( twincobr )
#if ! DEBUG_FREE_ALL_DIPSW PORT_MODIFY("DSWA")
PORT_MODIFY("DSWA") TOAPLAN_COINAGE_JAPAN_OLD /* table at 0x0c20 (COIN1 AND COIN2) in CPU1 */
TOAPLAN_DIP_A5678_COINAGE_JAPAN(SW1) /* table at 0x0c20 (COIN1 AND COIN2) in CPU1 */
#endif
INPUT_PORTS_END INPUT_PORTS_END
/* verified from M68000 and Z80 code */ /* verified from M68000 and Z80 code */
static INPUT_PORTS_START( ktiger ) static INPUT_PORTS_START( ktiger )
PORT_INCLUDE( twincobru ) PORT_INCLUDE( twincobru )
#if ! DEBUG_FREE_ALL_DIPSW PORT_MODIFY("DSWA")
PORT_MODIFY("DSWA") TOAPLAN_MACHINE_COCKTAIL
TOAPLAN_DIP_A1_CABINET(SW1)
PORT_MODIFY("DSWB") PORT_MODIFY("DSWB")
PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:!3,!4") /* table at 0x0208d0 */ PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) /* table at 0x0208d0 */
PORT_DIPSETTING( 0x04, "50k 200k 150k+" ) PORT_DIPSETTING( 0x04, "50k 200k 150k+" )
PORT_DIPSETTING( 0x00, "70k 270k 200k+" ) PORT_DIPSETTING( 0x00, "70k 270k 200k+" )
PORT_DIPSETTING( 0x08, "100k Only" ) PORT_DIPSETTING( 0x08, "100k Only" )
PORT_DIPSETTING( 0x0c, DEF_STR( None ) ) PORT_DIPSETTING( 0x0c, DEF_STR( None ) )
TWINCOBR_DIP_B8_ALLOW_CONTINUE_OFF_NO(SW2) /* additional code at 0x020b3c */ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Allow_Continue ) ) /* additional code at 0x020b3c */
/* Many TOAPLAN "Allow Continue" = OFF YES PORT_DIPSETTING( 0x00, DEF_STR( No ) )
but TWINCOBR = ON YES */ PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
#endif
INPUT_PORTS_END INPUT_PORTS_END
/* verified from M68000 and Z80 code */ /* verified from M68000 and Z80 code */
@ -499,87 +421,79 @@ static INPUT_PORTS_START( gulfwar2 )
PORT_INCLUDE( twincobru ) PORT_INCLUDE( twincobru )
PORT_MODIFY("VBLANK") PORT_MODIFY("VBLANK")
PORT_BIT( 0x7f, TOAPLAN_IP_INVERTED_ACTIVE_LEVEL, IPT_UNKNOWN ) PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, TOAPLAN_IP_INVERTED_ACTIVE_LEVEL, IPT_VBLANK ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
INPUT_PORTS_END INPUT_PORTS_END
/* verified from M68000 code */ /* verified from M68000 code */
static INPUT_PORTS_START( fshark ) static INPUT_PORTS_START( fshark )
PORT_INCLUDE( fshark_generic ) PORT_START("DSWA")
TOAPLAN_MACHINE_COCKTAIL
TOAPLAN_COINAGE_WORLD /* tables at 0x00031c (COIN1) and 0x00032c (COIN2) */
#if ! DEBUG_FREE_ALL_DIPSW PORT_START("DSWB")
PORT_MODIFY("DSWA") TOAPLAN_DIFFICULTY
TOAPLAN_DIP_A1_CABINET(SW1) PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) /* table at 0x000b96 (fshark), 0x000b80 (skyshark) or 0x000b7e (hishouza) */
TOAPLAN_DIP_A2_FLIP_SCREEN(SW1) PORT_DIPSETTING( 0x00, "50k 200k 150k+" )
TOAPLAN_DIP_A3_SERVICE_MODE(SW1) PORT_DIPSETTING( 0x04, "70k 270k 200k+" )
TOAPLAN_DIP_A4_DEMO_SOUNDS(SW1) PORT_DIPSETTING( 0x08, "50k Only" )
TOAPLAN_DIP_A5678_COINAGE_EUROPE(SW1) /* tables at 0x00031c (COIN1) and 0x00032c (COIN2) */ PORT_DIPSETTING( 0x0c, "100k Only" )
PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
PORT_DIPSETTING( 0x20, "1" )
PORT_DIPSETTING( 0x30, "2" )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPSETTING( 0x10, "5" )
PORT_DIPNAME( 0x40, 0x00, "Show Dip Switches Settings" )
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Allow_Continue ) )
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
PORT_MODIFY("DSWB") PORT_START("P1")
TOAPLAN_DIP_B12_DIFFICULTY(SW2) TOAPLAN_JOY_UDLR_2_BUTTONS( 1 )
PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:!3,!4") /* table at 0x000b96 (fshark), 0x000b80 (skyshark) or 0x000b7e (hishouza) */
PORT_DIPSETTING( 0x00, "50k 200k 150k+" ) PORT_START("P2")
PORT_DIPSETTING( 0x04, "70k 270k 200k+" ) TOAPLAN_JOY_UDLR_2_BUTTONS( 2 )
PORT_DIPSETTING( 0x08, "50k Only" )
PORT_DIPSETTING( 0x0c, "100k Only" ) PORT_START("SYSTEM") /* Port name kept to fit other games in the driver - it doesn't even exist */
PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:!5,!6") PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_DIPSETTING( 0x20, "1" )
PORT_DIPSETTING( 0x30, "2" ) PORT_START("VBLANK") /* Port name kept to fit other games in the driver - it shall be "SYSTEM" */
PORT_DIPSETTING( 0x00, "3" ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 ) /* uses COIN1 coinage */
PORT_DIPSETTING( 0x10, "5" ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_TILT )
TOAPLAN_DIP_B7_SHOW_DIPSW_SETTINGS(SW2) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) /* reset button */
TWINCOBR_DIP_B8_ALLOW_CONTINUE_OFF_NO(SW2) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
/* Many TOAPLAN "Allow Continue" = OFF YES PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 )
but FSHARK = ON YES */ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
#endif PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )
INPUT_PORTS_END INPUT_PORTS_END
/* verified from M68000 code */ /* verified from M68000 code */
static INPUT_PORTS_START( skyshark ) static INPUT_PORTS_START( skyshark )
PORT_INCLUDE( fshark ) PORT_INCLUDE( fshark )
#if ! DEBUG_FREE_ALL_DIPSW PORT_MODIFY("DSWA")
PORT_MODIFY("DSWA") PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) ) /* table at 0x000316 */
#if ! DEBUG_DONT_HIDE_DUP_DIPSETTING PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) )
PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:!5,!6") /* table at 0x000316 */ PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) // PORT_DIPSETTING( 0x30, DEF_STR( 1C_2C ) ) /* duplicated setting */
PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) ) /* table at 0x000316 */
//PORT_DIPSETTING( 0x30, DEF_STR( 1C_2C ) ) /* duplicated setting */ PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) )
PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:!7,!8") /* table at 0x000316 */ PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) // PORT_DIPSETTING( 0xc0, DEF_STR( 1C_2C ) ) /* duplicated setting */
PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) )
//PORT_DIPSETTING( 0xc0, DEF_STR( 1C_2C ) ) /* duplicated setting */
#else
/* Current(0.143) MAME doesn't allow duplicated settins about coinage
(see function "validate_dip_settings()" in file "src\emu\validity.c")
We can not write "PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )"
But we can write "PORT_DIPSETTING( 0x00, " 1 Coin/1 Credit" )" */
PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:!5,!6") /* table at 0x000316 */
PORT_DIPSETTING( 0x10, " 2 Coins/1 Credit" )
PORT_DIPSETTING( 0x00, " 1 Coin/1 Credit" )
PORT_DIPSETTING( 0x20, " 1 Coin/2 Credits" )
PORT_DIPSETTING( 0x30, " 1 Coin/2 Credits" ) /* duplicated setting */
PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:!7,!8") /* table at 0x000316 */
PORT_DIPSETTING( 0x40, " 2 Coins/1 Credit" )
PORT_DIPSETTING( 0x00, " 1 Coin/1 Credit" )
PORT_DIPSETTING( 0x80, " 1 Coin/2 Credits" )
PORT_DIPSETTING( 0xc0, " 1 Coin/2 Credits" ) /* duplicated setting */
/* ^ Don't delete these spaces (to pass function "get_defstr_index()") */
#endif
#endif
INPUT_PORTS_END INPUT_PORTS_END
/* verified from M68000 code */ /* verified from M68000 code */
static INPUT_PORTS_START( hishouza ) static INPUT_PORTS_START( hishouza )
PORT_INCLUDE( fshark ) PORT_INCLUDE( fshark )
#if ! DEBUG_FREE_ALL_DIPSW PORT_MODIFY("DSWA")
PORT_MODIFY("DSWA") TOAPLAN_COINAGE_JAPAN_OLD /* table at 0x000316 (COIN1 AND COIN2) */
TOAPLAN_DIP_A5678_COINAGE_JAPAN(SW1) /* table at 0x000316 (COIN1 AND COIN2) */
#endif
INPUT_PORTS_END INPUT_PORTS_END
@ -1101,7 +1015,6 @@ static DRIVER_INIT( twincobr )
} }
// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS
GAME( 1987, fshark, 0, twincobr, fshark, twincobr, ROT270, "Toaplan / Taito Corporation", "Flying Shark (World)", 0 ) GAME( 1987, fshark, 0, twincobr, fshark, twincobr, ROT270, "Toaplan / Taito Corporation", "Flying Shark (World)", 0 )
GAME( 1987, skyshark, fshark, twincobr, skyshark, twincobr, ROT270, "Toaplan / Taito America Corporation (Romstar license)", "Sky Shark (US)", 0 ) GAME( 1987, skyshark, fshark, twincobr, skyshark, twincobr, ROT270, "Toaplan / Taito America Corporation (Romstar license)", "Sky Shark (US)", 0 )
GAME( 1987, hishouza, fshark, twincobr, hishouza, twincobr, ROT270, "Toaplan / Taito Corporation", "Hishou Zame (Japan)", 0 ) GAME( 1987, hishouza, fshark, twincobr, hishouza, twincobr, ROT270, "Toaplan / Taito Corporation", "Hishou Zame (Japan)", 0 )

View File

@ -11,7 +11,7 @@ Supported games:
Taito Game Number: B25 Taito Game Number: B25
Wardners Forest (World) Wardners Forest (World)
Pyros (USA) Pyros (USA)
Wardner no Mori (Japan) Wardna no Mori (Japan)
Notes: Notes:
Basically the same video and machine hardware as Flying shark, Basically the same video and machine hardware as Flying shark,
@ -19,7 +19,7 @@ Notes:
See twincobr.c machine and video drivers to complete the See twincobr.c machine and video drivers to complete the
hardware setup. hardware setup.
To enter the "test mode", press START1 when the grid is displayed. To enter the "test mode", press START1 when the grid is displayed.
Press unused P1 button 3 on startup to skip some video RAM tests Press F1 (initially P1 button 3) on startup to skip some video RAM tests
(code at 0x6d25 in 'wardner', 0x6d2f in 'wardnerj' or 0x6d2c in 'pyros'). (code at 0x6d25 in 'wardner', 0x6d2f in 'wardnerj' or 0x6d2c in 'pyros').
**************************** Memory & I/O Maps ***************************** **************************** Memory & I/O Maps *****************************
@ -132,26 +132,6 @@ out:
#include "includes/twincobr.h" #include "includes/twincobr.h"
/***************************** debugging flags ******************************/
#define DEBUG_FREE_ALL_DIPSW FALSE
/* Set TRUE and you may find unknown easter eggs */
/**************************** customizing flags *****************************/
#define WARDNER_P1_BUTTON_3_DESCRIBE_LEVEL FALSE
/* Wardner's "P1 Button 3" has an easter egg. */
/* If you want to rename it, set 1 or 2.
0 = "Spare (P1 Button 3)"
1 = "Spare (P1 Button 3) (Skip Video RAM Tests)"
2 = "(Skip Video RAM Tests)" */
#define WARDNER_P1_BUTTON_3_MOVE_TO_F1 FALSE
/* If you want to move it to "F1", set TRUE. */
/****************************************************************************/
class wardner_state : public twincobr_state class wardner_state : public twincobr_state
{ {
public: public:
@ -293,110 +273,78 @@ ADDRESS_MAP_END
*****************************************************************************/ *****************************************************************************/
/* verified from Z80 code */
static INPUT_PORTS_START( wardner_generic ) static INPUT_PORTS_START( wardner_generic )
PORT_START("DSWA") /* in 0x50 */ /* DIP SW A */ PORT_START("DSWA")
TOAPLAN_DIP_1_SPARE(SWA) TOAPLAN_MACHINE_COCKTAIL
TOAPLAN_DIP_2_SPARE(SWA) TOAPLAN_COINAGE_WORLD
TOAPLAN_DIP_3_SPARE(SWA)
TOAPLAN_DIP_4_SPARE(SWA)
TOAPLAN_DIP_5_SPARE(SWA)
TOAPLAN_DIP_6_SPARE(SWA)
TOAPLAN_DIP_7_SPARE(SWA)
TOAPLAN_DIP_8_SPARE(SWA)
PORT_START("DSWB") /* in 0x52 */ /* DIP SW B */ PORT_START("DSWB")
TOAPLAN_DIP_1_SPARE(SWB) TOAPLAN_DIFFICULTY
TOAPLAN_DIP_2_SPARE(SWB) PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) /* table at 0x13ce ('wardner') or 0x13de ('wardnerj') */
TOAPLAN_DIP_3_SPARE(SWB) PORT_DIPSETTING( 0x00, "30k 80k 50k+" )
TOAPLAN_DIP_4_SPARE(SWB) PORT_DIPSETTING( 0x04, "50k 100k 50k+" )
TOAPLAN_DIP_5_SPARE(SWB) PORT_DIPSETTING( 0x08, "30k Only" )
TOAPLAN_DIP_6_SPARE(SWB) PORT_DIPSETTING( 0x0c, "50k Only" )
TOAPLAN_DIP_7_SPARE(SWB) PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
TOAPLAN_DIP_8_SPARE(SWB) PORT_DIPSETTING( 0x30, "1" )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPSETTING( 0x10, "4" )
PORT_DIPSETTING( 0x20, "5" )
PORT_DIPUNUSED( 0x40, IP_ACTIVE_HIGH )
PORT_DIPUNUSED( 0x80, IP_ACTIVE_HIGH )
PORT_START("P1") /* in 0x54 */ /* Player 1 controls */ PORT_START("P1")
TOAPLAN_JOY_UDLR_2_BUTTONS(1) TOAPLAN_JOY_UDLR_2_BUTTONS( 1 ) /* buttons 3 & 4 named "SHOTC" and "SHOTD" in "test mode" */
PORT_START("P2") /* in 0x56 */ /* Player 2 controls */ PORT_START("P2")
TOAPLAN_JOY_UDLR_2_BUTTONS(2) TOAPLAN_JOY_UDLR_2_BUTTONS( 2 ) /* buttons 3 & 4 named "SHOTC" and "SHOTD" in "test mode" */
PORT_START("SYSTEM") /* in 0x58 */ /* VBlank and coin-in/start inputs */ PORT_START("SYSTEM")
TOAPLAN_SYSTEM_INPUT_WITH_VBLANK PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_TILT )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) /* "TEST" in "test mode" - no effect outside */
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK ) /* "V-BLANKING" in "test mode" */
INPUT_PORTS_END INPUT_PORTS_END
/* verified from Z80 code */ /* verified from Z80 code */
static INPUT_PORTS_START( wardner ) static INPUT_PORTS_START( wardner )
PORT_INCLUDE( wardner_generic ) PORT_INCLUDE( wardner_generic )
#if ! DEBUG_FREE_ALL_DIPSW
PORT_MODIFY("DSWA")
TOAPLAN_DIP_A1_CABINET(SWA)
TOAPLAN_DIP_A2_FLIP_SCREEN(SWA)
TOAPLAN_DIP_A3_SERVICE_MODE(SWA)
TOAPLAN_DIP_A4_DEMO_SOUNDS(SWA)
TOAPLAN_DIP_A5678_COINAGE_EUROPE(SWA)
PORT_MODIFY("DSWB")
TOAPLAN_DIP_B12_DIFFICULTY(SWB)
PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SWB:!3,!4") /* table at 0x13ce ('wardner') or 0x13de ('wardnerj') */
PORT_DIPSETTING( 0x00, "30k 80k 50k+" )
PORT_DIPSETTING( 0x04, "50k 100k 50k+" )
PORT_DIPSETTING( 0x08, "30k Only" )
PORT_DIPSETTING( 0x0c, "50k Only" )
PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SWB:!5,!6")
PORT_DIPSETTING( 0x30, "1" )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPSETTING( 0x10, "4" )
PORT_DIPSETTING( 0x20, "5" )
//DIP_B78_SPARE
#endif
PORT_MODIFY("P1") PORT_MODIFY("P1")
#if WARDNER_P1_BUTTON_3_DESCRIBE_LEVEL == 1 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Skip Video RAM Tests") PORT_CODE(KEYCODE_F1)
PORT_BIT(0x40, TOAPLAN_IP_ACTIVE_LEVEL, IPT_BUTTON3) PORT_PLAYER(1) PORT_NAME("Spare (P1 Button 3) (Skip Video RAM Tests)") /* JAMMA "P1 button 3" */
#elif WARDNER_P1_BUTTON_3_DESCRIBE_LEVEL == 2
PORT_BIT(0x40, TOAPLAN_IP_ACTIVE_LEVEL, IPT_BUTTON3) PORT_PLAYER(1) PORT_NAME("(Skip Video RAM Tests)")
#endif
#if WARDNER_P1_BUTTON_3_MOVE_TO_F1
PORT_CODE(KEYCODE_F1)
#endif
/* code at 0x6d25 ('wardner'), 0x6d2f ('wardnerj') or 0x6d2c ('pyros') */ /* code at 0x6d25 ('wardner'), 0x6d2f ('wardnerj') or 0x6d2c ('pyros') */
PORT_MODIFY("SYSTEM")
TOAPLAN_TEST_SWITCH_SPARE
INPUT_PORTS_END INPUT_PORTS_END
/* verified from Z80 code */ /* verified from Z80 code */
static INPUT_PORTS_START( wardnerj ) static INPUT_PORTS_START( wardnerj )
PORT_INCLUDE( wardner ) PORT_INCLUDE( wardner )
#if ! DEBUG_FREE_ALL_DIPSW PORT_MODIFY("DSWA")
PORT_MODIFY("DSWA") TOAPLAN_COINAGE_JAPAN_OLD
TOAPLAN_DIP_A5678_COINAGE_JAPAN(SWA)
#endif
INPUT_PORTS_END INPUT_PORTS_END
/* verified from Z80 code */ /* verified from Z80 code */
static INPUT_PORTS_START( pyros ) static INPUT_PORTS_START( pyros )
PORT_INCLUDE( wardnerj ) PORT_INCLUDE( wardnerj )
#if ! DEBUG_FREE_ALL_DIPSW PORT_MODIFY("DSWB")
PORT_MODIFY("DSWB") PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) /* table at 0x13ce */
PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SWB:!3,!4") /* table at 0x13ce */ PORT_DIPSETTING( 0x00, "30k 80k 50k+" )
PORT_DIPSETTING( 0x00, "30k 80k 50k+" ) PORT_DIPSETTING( 0x04, "50k 100k 50k+" )
PORT_DIPSETTING( 0x04, "50k 100k 50k+" ) PORT_DIPSETTING( 0x08, "50k Only" )
PORT_DIPSETTING( 0x08, "50k Only" ) PORT_DIPSETTING( 0x0c, "100k Only" )
PORT_DIPSETTING( 0x0c, "100k Only" ) PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) /* additional code at 0x6037 */
WARDNER_DIP_B7_ALLOW_CONTINUE_OFF_YES(SWB) /* additional code at 0x6037 */ PORT_DIPSETTING( 0x40, DEF_STR( No ) )
/* Many TOAPLAN "Allow Continue" = B:8 PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
but WARDNER = B:7 */
#endif
INPUT_PORTS_END INPUT_PORTS_END
static const gfx_layout charlayout = static const gfx_layout charlayout =
{ {
8,8, /* 8*8 characters */ 8,8, /* 8*8 characters */
@ -670,7 +618,6 @@ static DRIVER_INIT( wardner )
// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS GAME( 1987, wardner, 0, wardner, wardner, wardner, ROT0, "Toaplan / Taito Corporation Japan", "Wardner (World)", GAME_SUPPORTS_SAVE )
GAME( 1987, wardner, 0, wardner, wardner, wardner, ROT0, "Toaplan / Taito Corporation Japan", "Wardner (World)", GAME_SUPPORTS_SAVE ) GAME( 1987, pyros, wardner, wardner, pyros, wardner, ROT0, "Toaplan / Taito America Corporation", "Pyros (US)", GAME_SUPPORTS_SAVE )
GAME( 1987, pyros, wardner, wardner, pyros, wardner, ROT0, "Toaplan / Taito America Corporation", "Pyros (US)", GAME_SUPPORTS_SAVE ) GAME( 1987, wardnerj, wardner, wardner, wardnerj, wardner, ROT0, "Toaplan / Taito Corporation", "Wardner no Mori (Japan)", GAME_SUPPORTS_SAVE )
GAME( 1987, wardnerj, wardner, wardner, wardnerj, wardner, ROT0, "Toaplan / Taito Corporation", "Wardner no Mori (Japan)", GAME_SUPPORTS_SAVE )