Permalink
Fetching contributors…
Cannot retrieve contributors at this time
9860 lines (8426 sloc) 593 KB
// license:BSD-3-Clause
// copyright-holders:Aaron Giles
/***************************************************************************
Sega System 16B hardware
****************************************************************************
Known bugs:
* none at this time
DIP locations verified from manual for:
* aceattac
* aliensyn
* altbeast
* atomicp
* aurail
* bayroute
* cotton
* ddux
* eswat
* fpoint
* goldnaxe
* mvp
* passsht
* shinobi
* sonicbom
* tetris
* timescan
* toryumon
* wb3
* wrestwar
****************************************************************************
Altered Beast 171-5521
country 68000 Z80 sound gfx
------- ----------- ----- ----------- -----------
altbeaj1: Japan 11669-11670 11671 11672-11673 11674-11684 (FD1094 317-0065)
altbeas2: english 11704-11705 11685 11672-11673 11674-11684 (MC-8123B 317-0066)
altbeaj3: Japan 11720-11721 11671 11672-11673 11717-11738 (FD1094 317-0068)
altbeas4: english 11739-11740 11686 11672-11673 11717-11738 (MC-8123B 317-0066)
altbeas5: english 11882-11883 11671 11672-11673 11717-11738 (8751 317-0076)
altbeasj: Japan 11884-11885 11671 11672-11673 11717-11738 (8751 317-0077)
altbeast: english 11906-11907 11671 11672-11673 11674-11684 (8751 317-0078)
Aurail 171-5704 a5-a8:13576,13445,13577,13447
Bay Route 171-5704 a5-a8:12516,12456,12517,12458,fd1094:317-0116
Cotton 171-5704 a5-a8:13919a-13922a,fd1094:317-0181a
Dynamite Dux 171-5521
E-Swat 171-5797 a1:12656,a2:12657,fd1094:317-0129
Flash Point 171-5704 a5:12590b,a8:12591b,fd1094:317-0127a
Golden Axe 171-5797 a1:12388,a2:12389,fd1094:317-0110
Heavyweight C. 171-5521 a5:11238,a7:11239
Passing shot 171-5358 a1:11870,a4:11871,fd1094:317-0080
Ryu Kyu 171-5521 a5:13347,a7:13348,fd1094:317-5023
Shinobi 171-5358 a1:11298,a2:11281,a4:11299,a5:11283
Sonic Boom 171-5358
Tetris 171-5521 a5:12192,a7:12193,fd1094:317-0092
Tetris 171-5358 317-0091
Tetris 171-5704 317-0092
Toryumon 171-5797 a1:17688,a2:17689
Tough Turf 171-5358 a1:12264,a2:12265,a4:12266,a5:12267,i8751:317-0099
Wonderboy III 171-5704 a5:12258,a7:12259,i8751:317-0098
Wonderboy III 171-5358 317-0085
Wrestle War 171-5704 a5-a8:12371,12144,12372,12146,i8751:317-0103
Wrestle War 171-5704 a5-a8:12143,12411,12145,12146,fd1094:317-0090
The 171-5521 board is identical to 171-5704 with the jumper difference I mentioned.
Some points for identifying ROM boards:
171-5358: Only 32K and 64K ROMs are supported for all sockets, no tile banking.
171-5704: Tile banking register in region #2 at offset $xx0001/3.
171-5797: Tile banking register in region #1 at offset $xx2001/3, only two program ROMs (A1 & A2) that are 128K or larger.
****************************************************************************
Sega System 16B Hardware Overview
---------------------------------
The games on this system include...
Ace Attacker (C) Sega/Jaleco, 1989
Alien Syndrome (C) Sega, 1987
Altered Beast / Jyuohki (C) Sega, 1988
Aurail (C) Sega/Westone, 1989
Bay Route (C) Sega, 1989
Bullet (C) Sega, 1987
Cotton (C) Sega/Success, 1989
Dunk Shot (C) Sega, 1987
Dynamite Dux (C) Sega, 1988
E-Swat (C) Sega, 1989
Excite League (C) Sega, 1989
Flash Point (C) Sega, 1989
Golden Axe (C) Sega, 1989
Heavyweight Champ (C) Sega, 1988
M.V.P. (C) Sega, 1989
Passing Shot (C) Sega, 1988
Riot City (C) Sega/Westone, 1989
Ryu Kyu (C) Sega, 1990
SDI (C) Sega, 1987
Shinobi (C) Sega, 1987
Sonic Boom (C) Sega, 1987
Sukeban Jansi Ryuko (C) Whiteboard, 1988
Super League (C) Sega, 1988
Tetris (C) Sega, 1988
Time Scanner (C) Sega, 1987
Toryumon (C) Sega, 1995
Tough Turf (C) Sega/Sunsoft, 1989
Wonderboy III Monster Lair (C) Sega/Westone, 1988
Wrestle War (C) Sega, 1989
The system consists of a main board and a ROM board. Many games are protected, either with a Hitachi FD1094
or an Intel 8751 MCU. The games can be swapped to any main board by exchanging ROM boards and protection chips.
The games are generally tied to their 'type' ROM board and can not be ROM swapped to other ROM boards, though
there are some games that are available on more than one type of ROM board.
PCB Layout
----------
Main PCB
171-5357 (SYSTEM 16 BTYPE) MADE IN JAPAN (C)SEGA 1986
|-----------------------------------------------------------|
|MB3733 uPC324 |
| VOL TL084 CN3 |--------| CN1 |
| |-| | | |-| |
| YM3012 | | |315-5197| | | |
|-| 640kHz | | | | | | |
| D7759 | | |--------| | | |
|-| Z80 | | | | |
| | | 2015 | | |
| 2015 | | 2015 | | |
| | | | | |
|S DSW2 YM2151 8MHz |-| 315-5214 |-| |
|E 5.5V_BAT 65256 65256 |
|G DSW1 |
|A |
|5 TC5565 2015 |
|6 TC5565 2015 |
| CN4 CN2 |
| |-| 315-5213 |-| |
| |---------------| | | | | |
| | 68000 | | | 2018 | | |
| |---------------| | | 2018 | | |
|-| | | 2018 | | |
| |--------| | | 2018 |--------| | | |
|-| | | | | 2018 | | | | |
| |315-5195| | | 2018 |315-5196| | | |
| D8751H | | |-| | | |-| |
| 20MHz |--------| |--------| |
|MB3771 CN5 25.1748MHz |
|-----------------------------------------------------------|
Notes:
68000 - Motorola MC68000P8 CPU (DIP40), running at 10.000MHz [20/2]. Is replaced with a Hitachi FD1094 in some games.
Z80 - Zilog Z80B CPU, running at 5.000MHz [10/2]
YM2151 - Yamaha YM2151 8-channel 4-operator FM sound chip, running at 4.000MHz [8/2]
D7759 - NEC uPD7759C ADPCM Speech Synthesizer LSI, clock input of 640kHz (DIP40)
65256 - Hitachi HM65256 32K x8 SRAM (DIP28)
TC5565 - Toshiba TC5565 8K x8 SRAM (DIP28)
2015 - Toshiba TMM2015 2K x8 SRAM (DIP24)
2018 - Toshiba TMM2018 2K x8 SRAM (DIP24)
D8751H - Intel D8751H Microcontroller, running at 8.000MHz. Used on some versions of some games.
315-5213 - National Semiconductor PAL16R6 stamped '315-5213' (DIP20)
315-5214 - Signetics CK2605 stamped '315-5214' (DIP20)
315-5195 - Custom Sega IC (PGA135)
315-5196 - Custom Sega IC Sprite Generator (PGA135)
315-5197 - Custom Sega IC Tilemap Generator (PGA135)
CN1/2/3/4- Connectors to join ROM board to main board
MB3771 - Fujitsu MB3771 Master Reset IC (DIP8)
MB3733 - Fujitsu MB3733 Power Amp IC
CN5 - 30 pin dual row male connetor
ROM Boards
----------
171-5521 (SYSTEM16B TYPE)
|-------------------------------|
|16 SCR03 SCR13 |
| |
|15 SCR02 SCR12 |
| CN3 CN1 |
|14|-| SCR01 SCR11 |-| |
| | | | | |
|13| | * OBJ7-E | | |
| | | | | |
|12| | SPEECH1 OBJ6-E | | |
| | | | | |
|11| | SPEECH0 OBJ5-E | | |
| | | | | |
|10|-| S-PROG OBJ4-E |-| |
| S2 74LS138|
|9 74F139 S1 315-5298 S6|
| S5|
|8 ROM1-E OBJ3-E S4|
| S3|
|7 CN4 ROM0-E OBJ2-E CN2 |
| |-| |-| |
|6 | | ROM1-O OBJ1-E | | |
| | | | | |
|5 | | ROM0-O OBJ0-E | | |
| | | | | |
|4 | | OBJ7-O OBJ3-O | | |
| | | | | |
|3 | | OBJ6-O OBJ2-O | | |
| |-| |-| |
|2 OBJ5-O OBJ1-O |
| S7 |
|1 OBJ4-O OBJ0-O |
| A B C |
|-------------------------------|
Notes:
* - Empty position, no socket
S1/S2 - Jumpers to configure 68k program ROM size
S1 shorted = 512K
S2 shorted = 1M
S3/4/5/6 - Jumpers to configure object ROM size
S3 + S6 + S7 shorted = 512K or 1M
S4 + S5 shorted = 2M
315-5298 - Signetics PLS153F Field Programmable Logic Array stamped '315-5298' (DIP20)
Games that use this ROM board...
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
Altered Beast |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - 68000 |--------------------------------------------------------------------------------------------------------------------------------------|
8751 - 317-0076 |EPR11717 EPR11718 EPR11719 - EPR11882 - EPR11883 - EPR11671 EPR11672 EPR11673 EPR11722 EPR11723 EPR11724|
|--------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
|--------------------------------------------------------------------------------------------------------------------------------------|
|EPR11725 EPR11726 EPR11727 EPR11728 EPR11729 EPR11730 EPR11731 EPR11732 EPR11733 EPR11734 EPR11735 - EPR11736 EPR11737 EPR11738|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
Altered Beast |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - |--------------------------------------------------------------------------------------------------------------------------------------|
8751 - |EPR11717 EPR11718 EPR11719 - EPR11739 - EPR11740 - EPR11671 EPR11672 EPR11673 EPR11722 EPR11723 EPR11724|
|--------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
|--------------------------------------------------------------------------------------------------------------------------------------|
|EPR11725 EPR11726 EPR11727 EPR11728 EPR11729 EPR11730 EPR11731 EPR11732 EPR11733 EPR11734 EPR11735 - EPR11736 EPR11737 EPR11738|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
Altered Beast |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - |--------------------------------------------------------------------------------------------------------------------------------------|
8751 - |EPR11717 EPR11718 EPR11719 - EPR11522 - EPR11523 - EPR11671 EPR11672 EPR11673 EPR11722 EPR11723 EPR11724|
|--------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
|--------------------------------------------------------------------------------------------------------------------------------------|
|EPR11725 EPR11726 EPR11727 EPR11728 EPR11729 EPR11730 EPR11731 EPR11732 EPR11733 EPR11734 EPR11735 - EPR11736 EPR11737 EPR11738|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
Golden Axe |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - 317-0121 |--------------------------------------------------------------------------------------------------------------------------------------|
8751 - |- - - - EPR12539 EPR12519 EPR12540 EPR12521 EPR12390 MPR12384 - MPR12385 MPR12386 MPR12387|
|--------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
|--------------------------------------------------------------------------------------------------------------------------------------|
|MPR12378 MPR12380 MPR12382 - MPR12379 MPR12381 MPR12383 - - - - - - - - |
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
Jyuohki |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - |--------------------------------------------------------------------------------------------------------------------------------------|
8751 - |EPR11717 EPR11718 EPR11719 - EPR11720 - EPR11721 - EPR11671 EPR11672 EPR11673 EPR11722 EPR11723 EPR11724|
|--------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
|--------------------------------------------------------------------------------------------------------------------------------------|
|EPR11725 EPR11726 EPR11727 EPR11728 EPR11729 EPR11730 EPR11731 EPR11732 EPR11733 EPR11734 EPR11735 - EPR11736 EPR11737 EPR11738|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
Heavyweight Champ|A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - 68000 |--------------------------------------------------------------------------------------------------------------------------------------|
8751 - |- - - - EPR11238 - EPR11239 - EPR EPR EPR EPR EPR EPR |
|--------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
|--------------------------------------------------------------------------------------------------------------------------------------|
|EPR EPR EPR EPR EPR EPR EPR EPR - - - - EPR EPR EPR |
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
Ryu Kyu |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - 317-5023 |--------------------------------------------------------------------------------------------------------------------------------------|
8751 - |- - - - EPR13347 - - EPR13348 EPR13349 EPR13350 - EPR13351 EPR13352 EPR13353|
|--------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
|--------------------------------------------------------------------------------------------------------------------------------------|
|EPR13354 EPR13355 - - EPR13356 EPR13357 - - - - - - - - - |
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
Tetris |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - 317-0092 |--------------------------------------------------------------------------------------------------------------------------------------|
8751 - |- - - - EPR12192 - EPR12193 - EPR12168 - - EPR12165 EPR12166 EPR12167|
|--------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
|--------------------------------------------------------------------------------------------------------------------------------------|
|EPR - - - EPR - - - - - - - - - - |
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
Dynamite Dux |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - 317-0096 |--------------------------------------------------------------------------------------------------------------------------------------|
8751 - |- - - - EPR11190 EPR11913 EPR11191 EPR11915 EPR11916 - - MPR11917 MPR11918 MPR11919|
|--------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
|--------------------------------------------------------------------------------------------------------------------------------------|
|MPR11920 MPR11921 - - MPR11922 MPR11923 - - - - - - - - - |
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
Golden Axe |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - |--------------------------------------------------------------------------------------------------------------------------------------|
8751 - |- - - - EPR12522 EPR12519 EPR12523 EPR12521 EPR12390 MPR12384 - MPR12385 MPR12386 MPR12387|
|--------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
|--------------------------------------------------------------------------------------------------------------------------------------|
|MPR12378 MPR12380 MPR12382 - MPR12379 MPR12381 MPR12383 - - - - - - - - |
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
171-5358 (SYSTEM16B TYPE)
|-------------------------------|
|11 S-PROG4 SCR03 |
| |
| |
|10CN3 S-PROG3 SCR02 CN1 |
| |-| |-| |
| | | | | |
|9 | | S-PROG2 SCR01 | | |
| | | | | |
| | | | | |
|8 | | S-PROG1 OBJ3-E | | |
| | | | | |
| | | | | |
|7 |-| S-PROG0 OBJ2-E |-| |
| J5|
| |
|6 ROM2-E OBJ1-E J2|
|J4 J1|
|J6 J3|
|5 CN4 ROM1-E OBJ0-E CN2 |
| |-| |-| |
| | | | | |
|4 | | ROM0-E OBJ3-O | | |
| | | | | |
| | | | | |
|3 | | ROM2-O OBJ2-O | | |
| | | | | |
| | | | | |
|2 |-| ROM1-O OBJ1-O |-| |
| |
| |
|1 ROM0-O OBJ0-O |
| A B |
|-------------------------------|
Notes:
J1/2/3/4/5/6 - Jumpers to configure ROM sizes //usage TODO
J1 - Configures ROM sizes for XX - XX
J2 - Configures ROM sizes for XX - XX
J3 - Configures ROM sizes for XX - XX
J4 - Configures ROM sizes for S-PROG0 to S-PROG4
J5 - Configures ROM sizes for XX - XX
J5 - Configures ROM sizes for XX - XX
J6 - Configures ROM sizes for XX - XX
Games that use this ROM board...
-----------------|--------------------------------------------------------------------------------------------------|
Shinobi |A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 |
CPU - 317-0049 |--------------------------------------------------------------------------------------------------|
8751 - n/a |EPR11280 EPR11281 - EPR11282 EPR11283 - EPR11287 EPR11288 EPR11289 - - |
|--------------------------------------------------------------------------------------------------|
| |
J1 O O J2 O-O |B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 |
J3 512 J4 256 |--------------------------------------------------------------------------------------------------|
J5 512 J6 512 |EPR11290 EPR11291 EPR11292 EPR11293 EPR11294 EPR11295 EPR11296 EPR11297 EPR11284 EPR11285 EPR11286|
-----------------|--------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------|
Shinobi |A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 |
CPU - |--------------------------------------------------------------------------------------------------|
8751 - |EPR11298 EPR11281 - EPR11299 EPR11283 - EPR11287 EPR11288 EPR11289 - - |
|--------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 |
|--------------------------------------------------------------------------------------------------|
|EPR11290 EPR11291 EPR11292 EPR11293 EPR11294 EPR11295 EPR11296 EPR11297 EPR11284 EPR11285 EPR11286|
-----------------|--------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------|
Ace Attacker |A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 |
CPU - |--------------------------------------------------------------------------------------------------|
8751 - |EPR11489 EPR11490 - EPR11491 EPR11492 - EPR11496 EPR11497 EPR11498 EPR11499 EPR11500|
|--------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 |
|--------------------------------------------------------------------------------------------------|
|EPR11501 EPR11502 EPR11503 EPR11504 EPR11505 EPR11506 EPR11507 EPR11508 EPR11493 EPR11494 EPR11495|
-----------------|--------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------|
Time Scanner |A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 |
CPU - |--------------------------------------------------------------------------------------------------|
8751 - |EPR10850 EPR10851 EPR10852 EPR10853 EPR10854 EPR10855 EPR10562 EPR10563 - - - |
|--------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 |
|--------------------------------------------------------------------------------------------------|
|EPR11290 EPR11291 EPR11292 EPR11293 EPR11294 EPR11295 EPR11296 EPR11297 EPR11284 EPR11285 EPR11286|
-----------------|--------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------|
Sonic Boom |A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 |
CPU - 317-0053 |--------------------------------------------------------------------------------------------------|
8751 - n/a |EPR11340 EPR11341 - EPR11342 EPR11343 - EPR11347 EPR11348 EPR11349 - - |
|--------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 |
|--------------------------------------------------------------------------------------------------|
|OPR11350 OPR11351 OPR11352 OPR11353 OPR11354 OPR11355 OPR11356 OPR11357 EPR11344 EPR11345 EPR11346|
-----------------|--------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------|
Passing Shot |A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 |
CPU - 317-0080 |--------------------------------------------------------------------------------------------------|
8751 - n/a |EPR11870 - - EPR11871 - - EPR11857 EPR11858 EPR11859 EPR11860 EPR11861|
|--------------------------------------------------------------------------------------------------|
| |
J1 O O J2 O-O |B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 |
J3 512 J4 256 |--------------------------------------------------------------------------------------------------|
J5 512 J6 512 |OPR11862 OPR11863 OPR11864 - OPR11865 OPR11866 OPR11867 - OPR11854 EPR11855 EPR11856|
-----------------|--------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------|
Bullet |A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 |
CPU - 317-0041 |--------------------------------------------------------------------------------------------------|
8751 - n/a |EPR11007 EPR11008 EPR11009 EPR11010 EPR11011 EPR11012 EPR10997 EPR10998 - - - |
|--------------------------------------------------------------------------------------------------|
| |
J1 O O J2 O-O |B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 |
J3 512 J4 256 |--------------------------------------------------------------------------------------------------|
J5 512 J6 256 |EPR10999 EPR11000 EPR11001 EPR11002 EPR11003 EPR11004 EPR11005 EPR11006 EPR10994 EPR10995 EPR10996|
-----------------|--------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------|
Tetris |A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 |
CPU - 317-0091 |--------------------------------------------------------------------------------------------------|
8751 - n/a |EPR12163 - - EPR12164 - - EPR12168 - - - - |
|--------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 |
|--------------------------------------------------------------------------------------------------|
|EPR12169 - - - EPR12170 - - - EPR12165 EPR12166 EPR12167|
-----------------|--------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------|
Wonder Boy III |A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 |
CPU - 317-0085 |--------------------------------------------------------------------------------------------------|
8751 - n/a |EPR12198 EPR12199 - EPR12100 EPR12101 - EPR12127 - - - - |
|--------------------------------------------------------------------------------------------------|
| |
J1 O O J2 O-O |B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 |
J3 512 J4 256 |--------------------------------------------------------------------------------------------------|
J5 512 J6 512 |EPR12190 EPR12191 EPR12192 EPR12193 EPR12194 EPR12195 EPR12196 EPR12197 EPR12124 EPR12125 EPR12126|
-----------------|--------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------|
Excite League |A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 |
CPU - 317-0079 |--------------------------------------------------------------------------------------------------|
8751 - |EPR11936 EPR11937 EPR11938 EPR11939 EPR11940 EPR11941 EPR11945 EPR11140 EPR11141 EPR11142 EPR11143|
|--------------------------------------------------------------------------------------------------|
| |
J1 O O J2 O-O |B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 |
J3 512 J4 256 |--------------------------------------------------------------------------------------------------|
J5 512 J6 256/512|EPR11950 EPR11951 EPR11952 EPR11953 EPR11954 EPR11955 EPR11956 EPR11957 EPR11942 EPR11943 EPR11944|
-----------------|--------------------------------------------------------------------------------------------------|
J6 jumper tied from lower left side of 256 jumper to upper right side of 512 jumper like this: /
-----------------|--------------------------------------------------------------------------------------------------|
Super League |A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 |
CPU - 317-0045 |--------------------------------------------------------------------------------------------------|
8751 - |EPR11130 EPR11131 EPR11132 EPR11133 EPR11134 EPR11135 EPR11139 EPR11140 EPR11141 EPR11142 EPR11143|
|--------------------------------------------------------------------------------------------------|
| |
J1 O O J2 O-O |B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 |
J3 512 J4 256 |--------------------------------------------------------------------------------------------------|
J5 512 J6 512 |EPR11144 EPR11145 EPR11146 EPR11147 EPR11148 EPR11149 EPR11150 EPR11151 EPR11136 EPR11137 EPR11138|
-----------------|--------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------|
Tough Turf |A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 |
CPU - 68000 |--------------------------------------------------------------------------------------------------|
8751 - 317-0099 |EPR12264 EPR12265 - EPR12266 EPR12267 EPR11135 EPR11139 EPR11140 EPR11141 EPR11142 EPR11143|
|--------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 |
|--------------------------------------------------------------------------------------------------|
|EPR11144 EPR11145 EPR11146 EPR11147 EPR11148 EPR11149 EPR11150 EPR11151 EPR11136 EPR11137 EPR11138|
-----------------|--------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------|
Dunk Shot |A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 |
CPU - 317-0022? |--------------------------------------------------------------------------------------------------|
8751 - |EPR10467 EPR10468 EPR10469 EPR10470 EPR10471 EPR10472 EPR10473 EPR10474 EPR10475 EPR10476 - |
|--------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 |
|--------------------------------------------------------------------------------------------------|
|EPR10477 EPR10478 EPR10479 EPR10480 EPR10481 EPR10482 EPR10483 EPR10484 EPR10485 EPR10486 EPR10487|
-----------------|--------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------|
Alien Syndrome |A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 |
CPU - |--------------------------------------------------------------------------------------------------|
8751 - |EPR11080 EPR11081 EPR11082 EPR11083 EPR11084 EPR11085 EPR10723 EPR10724 EPR10725 EPR10726 - |
|--------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 |
|--------------------------------------------------------------------------------------------------|
|EPR10709 EPR10710 EPR10711 EPR10712 EPR10713 EPR10714 EPR10715 EPR10716 EPR10702 EPR10703 EPR10704|
-----------------|--------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------|
SDI |A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 |
CPU - 68000 |--------------------------------------------------------------------------------------------------|
8751 - |EPR EPR EPR EPR EPR EPR EPR EPR EPR - - |
|--------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 |
|--------------------------------------------------------------------------------------------------|
|EPR EPR EPR - EPR EPR EPR - EPR EPR EPR |
-----------------|--------------------------------------------------------------------------------------------------|
Locations are correct but Sega part numbers unknown for this version!
171-5797 (SYSTEM 16B TYPE)
|-------------------------------|
| |
| |
| |
| CN3 CN1 |
|13|-| S-PROG0 SCR03 |-| |
| | | | | |
| | | | | |
|12| | SPEECH1 SCR02 | | |
| | | | | |
| | | | | |
|11| | S-PROG1 SCR01 | | |
| | | | | |
| | |S11 S12 S13 S1 S2 S3| | |
|10|-|S14 S15 S16 S4 S5 S6|-| |
| |
| 315-5298 |
|9 |-------| 74LS08 10MHz |
| |315- | 74LS14 74HC139 |
| | 5250| |
|8 | | OBJ3-E |
| |-------| |
|7 CN4 OBJ3-O CN2 |
| |-| |-| |
|6 | | 74HC139 OBJ2-E | | |
| | | | | |
|5 | | |-------| OBJ2-O | | |
| | | |*315- | | | |
|4 | | | 5248| OBJ1-E | | |
| | | | | | | |
|3 | | |-------| OBJ1-O | | |
| |-| |-| |
|2 ROM0-E OBJ0-E S7 |
| S8 |
|1 ROM0-O OBJ0-O S9 |
| A B S10|
|-------------------------------|
Notes:
* - This IC underneath the PCB
315-5298 - Signetics PLS153F Field Programmable Logic Array stamped '315-5298' (DIP20)
315-5248 - Custom Sega IC (QFP100)
315-5250 - Custom Sega IC (QFP120)
S1-S16 - Jumpers to configure ROM sizes
Jumpers are either shorted or not shorted.
In the tables below, the listed jumpers per game are the shorted ones, the unlisted ones are not shorted.
Games that use this ROM board...
-----------------|--------------------------------------------------------------------------------------------------|
Golden Axe |A1 A2 A11 A12 A13 |
CPU - 317-0110 |--------------------------------------------------------------------------------------------------|
8751 - |EPR12388 EPR12389 MPR12384 - EPR12390|
|--------------------------------------------------------------------------------------------------|
| |
S2 S3 S5 |B1 B2 B3 B4 B5 B6 B7 B8 B11 B12 B13 |
S7 S9 S12 |--------------------------------------------------------------------------------------------------|
S13 S15 |EPR11290 EPR11291 EPR11292 EPR11293 EPR11294 EPR11295 EPR11296 EPR11297 EPR12385 EPR12386 EPR12387|
-----------------|--------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------|
Golden Axe |A1 A2 A11 A12 A13 |
CPU - 317-0122 |--------------------------------------------------------------------------------------------------|
8751 - |EPR12542 EPR12543 MPR12384 - EPR12390|
|--------------------------------------------------------------------------------------------------|
| |
S2 S3 S5 |B1 B2 B3 B4 B5 B6 B7 B8 B11 B12 B13 |
S7 S9 S12 |--------------------------------------------------------------------------------------------------|
S13 S15 |EPR11290 EPR11291 EPR11292 EPR11293 EPR11294 EPR11295 EPR11296 EPR11297 EPR12385 EPR12386 EPR12387|
-----------------|--------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------|
Golden Axe |A1 A2 A11 A12 A13 |
CPU - 317-0123A |--------------------------------------------------------------------------------------------------|
8751 - |EPR12544 EPR12545 MPR12384 - EPR12390|
|--------------------------------------------------------------------------------------------------|
| |
S2 S3 S5 |B1 B2 B3 B4 B5 B6 B7 B8 B11 B12 B13 |
S7 S9 S12 |--------------------------------------------------------------------------------------------------|
S13 S15 |EPR11290 EPR11291 EPR11292 EPR11293 EPR11294 EPR11295 EPR11296 EPR11297 EPR12385 EPR12386 EPR12387|
-----------------|--------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------|
Toryumon |A1 A2 A11 A12 A13 |
CPU - 68000 |--------------------------------------------------------------------------------------------------|
8751 - |EPR17688 EPR17689 EPR17690 - EPR17691|
|--------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B11 B12 B13 |
|--------------------------------------------------------------------------------------------------|
|EPR17692 EPR17693 EPR17694 EPR17695 EPR17696 EPR17697 EPR17698 EPR17699 EPR17700 EPR17701 EPR17702|
-----------------|--------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------|
E-Swat |A1 A2 A11 A12 A13 |
CPU - 317-0129 |--------------------------------------------------------------------------------------------------|
8751 - |EPR12656 EPR12657 EPR12616 - EPR12617|
|--------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B11 B12 B13 |
|--------------------------------------------------------------------------------------------------|
|MPR12618 MPR12619 MPR12620 MPR12621 MPR12622 MPR12623 - - EPR12624 EPR12625 EPR12626|
-----------------|--------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------|
E-Swat |A1 A2 A11 A12 A13 |
CPU - 317-0130 |--------------------------------------------------------------------------------------------------|
8751 - |EPR12658 EPR12659 EPR12616 - EPR12617|
|--------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B11 B12 B13 |
|--------------------------------------------------------------------------------------------------|
|MPR12618 MPR12619 MPR12620 MPR12621 MPR12622 MPR12623 - - MPR12624 MPR12625 MPR12626|
-----------------|--------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------|
MVP |A1 A2 A11 A12 A13 |
CPU - 317-0143 |--------------------------------------------------------------------------------------------------|
8751 - none |EPR12999 EPR13000 EPR13001 - EPR13002|
|--------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B11 B12 B13 |
|--------------------------------------------------------------------------------------------------|
|MPR13003 MPR13004 MPR13005 MPR13006 MPR13007 MPR13008 MPR13009 MPR13010 MPR13011 MPR13012 MPR13013|
-----------------|--------------------------------------------------------------------------------------------------|
171-5704 (SYSTEM 16B TYPE)
|--------------------------------|
|16 SCR03 SCR13 |
| |
|15 SCR02 SCR12 |
| CN3 CN1 |
|14|-| SCR01 SCR11 |-| |
| | | | | |
|13| | * OBJ7-E | | |
| | | | | |
|12| | SPEECH1 OBJ6-E | | |
| | | | | |
|11| | SPEECH0 OBJ5-E | |S18|
| | | | |S17|
|10|-| S-PROG OBJ4-E |-|S14|
| S2 74LS138 S13|
|9 74F139 S1 315-5298 S4 |
| S12 S11 S10 S9 S3 |
|8 ROM1-E OBJ3-E S16|
| S15|
|7 CN4 ROM0-E OBJ2-E CN2 |
| |-| |-| |
|6 | | ROM1-O OBJ1-E | |S5 |
| | | | |S19|
|5 | | ROM0-O OBJ0-E | |S6 |
| | | | | |
|4 | | OBJ7-O OBJ3-O | | |
| | | | | |
|3 | | OBJ6-O OBJ2-O | | |
| |-| |-| |
|2 OBJ5-O OBJ1-O |
| S7 |
|1 OBJ4-O OBJ0-O S8 |
| A B C |
|--------------------------------|
Notes:
* - Empty position, no socket
315-5298 - Signetics PLS153F Field Programmable Logic Array stamped '315-5298' (DIP20)
S1-S18 - Jumpers to configure ROM sizes
Jumpers are either shorted or not shorted.
In the tables below, the listed jumpers per game are the shorted ones, the unlisted ones are not shorted.
S1/S2 - Jumpers to configure 68k program ROM size
S1 shorted = 512K
S2 shorted = 1M
Games that use this ROM board...
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
Bay Route |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - 317-0116 |--------------------------------------------------------------------------------------------------------------------------------------|
8751 - |- - - - - EPR12456 - EPR12458 EPR12459 MPR12460 MPR12461 OPR12462 OPR12463 OPR12464|
|--------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
S2 S3 S6 S7 S9 |--------------------------------------------------------------------------------------------------------------------------------------|
S11 S13 S15 S17 |MPR12465 MPR12466 - - MPR12467 MPR12468 - - - - - - - - - |
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
Golden Axe |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - 317-0121 |--------------------------------------------------------------------------------------------------------------------------------------|
8751 - n/a |- - - - EPR12539 EPR12519 EPR12540 EPR12521 EPR12390 MPR12384 - EPR12385 EPR12386 EPR12387|
|--------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
S2 S4 S5 S8 S10 |--------------------------------------------------------------------------------------------------------------------------------------|
S12 S13 S15 S17 |MPR12378 MPR12380 MPR12382 - MPR12379 MPR12381 MPR12383 - - - - - - - - |
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
MVP |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - 317-0142 |--------------------------------------------------------------------------------------------------------------------------------------|
8751 - |EPR12962 EPR12963 EPR12964 - EPR12965 EPR12966 EPR12967 EPR12968 EPR12969 EPR12970 - EPR12971 EPR12972 EPR12973|
|--------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
|--------------------------------------------------------------------------------------------------------------------------------------|
|EPR12974 EPR12975 EPR12976 - EPR12977 EPR12978 EPR12979 - EPR12980 EPR12981 EPR12982 - EPR12983 EPR12984 EPR12985|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
Aurail |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - 317-0168 |--------------------------------------------------------------------------------------------------------------------------------------|
8751 - |EPR13440 EPR13441 EPR13442 EPR13443 EPR13468 EPR13445 EPR13469 EPR13447 EPR13448 MPR13449 - EPR13450 EPR13451 EPR13452|
|--------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
S2 S3 S6 S7 S9 |--------------------------------------------------------------------------------------------------------------------------------------|
S11 S13 S15 S17 |EPR13453 EPR13454 EPR13455 EPR13456 EPR13457 EPR13458 EPR13459 EPR13460 EPR13461 EPR13462 EPR13463 EPR13464 EPR13465 EPR13466 EPR13467|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
-----------------|----------------------------------------------------------------------------------------------------------------------------------------|
Flash Point |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - 317-0127A |----------------------------------------------------------------------------------------------------------------------------------------|
8751 - |- - - - EPR12590B - EPR12591B - EPR12592 - - OPR12593 OPR12594 OPR12595|
|----------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
|----------------------------------------------------------------------------------------------------------------------------------------|
|OPR12596 - - - OPR12597 - - - - - - - - - - |
-----------------|----------------------------------------------------------------------------------------------------------------------------------------|
-----------------|------------------------------------------------------------------------------------------------------------------------------------------|
Cotton |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - |------------------------------------------------------------------------------------------------------------------------------------------|
8751 - |MPR13852 MPR13853 MPR13854 MPR13855 EPR13856A EPR13857A EPR13858A EPR13859A EPR13860 MPR13861 - MPR13862 MPR13863 MPR13864|
|------------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
S2 S3 S6 S7 S9 |------------------------------------------------------------------------------------------------------------------------------------------|
S11 S13 S15 S17 |MPR13865 MPR13866 MPR13867 MPR13868 MPR13869 MPR13870 MPR13871 MPR13872 MPR13873 MPR13874 MPR13875 MPR13876 MPR13877 MPR13878 MPR13879|
-----------------|------------------------------------------------------------------------------------------------------------------------------------------|
-----------------|------------------------------------------------------------------------------------------------------------------------------------------|
Cotton |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - 317-0181A |------------------------------------------------------------------------------------------------------------------------------------------|
8751 - |OPR13852 OPR13853 OPR13891 OPR13855 EPR13919A EPR13920A EPR13921A EPR13922A EPR13892 OPR13893 - OPR13862 OPR13863 OPR13864|
|------------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
S2 S3 S6 S7 S9 |------------------------------------------------------------------------------------------------------------------------------------------|
S11 S13 S15 S17 |OPR13865 OPR13866 OPR13867 OPR13868 OPR13869 OPR13870 OPR13871 OPR13872 OPR13873 OPR13874 OPR13894 OPR13876 OPR13877 OPR13878 OPR13879|
-----------------|------------------------------------------------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
Wonder Boy III |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - 317-0089 |--------------------------------------------------------------------------------------------------------------------------------------|
8751 - |- - - - EPR12136 - EPR12137 - EPR12127 - - EPR12124 EPR12125 EPR12126|
|--------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
S2 S3 S6 S7 S9 |--------------------------------------------------------------------------------------------------------------------------------------|
S11 S13 S15 S17 |EPR12090 EPR12091 EPR12092 EPR12093 EPR12094 EPR12095 EPR12096 EPR12097 - - - - - - - |
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
Altered Beast |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - 68000 |--------------------------------------------------------------------------------------------------------------------------------------|
8751 - 317-0078 |EPR11717 EPR11718 EPR11719 - EPR11884 - EPR11885 - EPR11671 EPR11672 EPR11673 EPR11722 EPR11723 EPR11724|
|--------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
|--------------------------------------------------------------------------------------------------------------------------------------|
|EPR11725 EPR11726 EPR11727 EPR11728 EPR11729 EPR11730 EPR11731 EPR11732 EPR11733 EPR11734 EPR11735 - EPR11736 EPR11737 EPR11738|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
Wrestle War |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - 68000 |--------------------------------------------------------------------------------------------------------------------------------------|
8751 - 317-0103 |OPR12141 OPR12142 - - EPR12371 EPR12144 EPR12372 EPR12146 EPR12147 MPR12148 MPR12149 MPR12150 MPR12151 MPR12152|
|--------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
S2 S3 S6 S7 S9 |--------------------------------------------------------------------------------------------------------------------------------------|
S11 S13 S15 S17 |MPR12153 MPR12154 MPR12155 OPR12156 MPR12157 MPR12158 MPR12159 OPR12160 OPR12161 OPR12162 - - - - - |
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
MVP |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - 317-0142 |--------------------------------------------------------------------------------------------------------------------------------------|
8751 - none |EPR12962 EPR12963 EPR12964 - EPR12965 EPR12966 EPR12967 EPR12968 EPR12969 EPR12970 - EPR12971 EPR12972 EPR12973|
|--------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
|--------------------------------------------------------------------------------------------------------------------------------------|
|EPR12974 EPR12975 EPR12976 - EPR12977 EPR12978 EPR12979 - EPR12980 EPR12981 EPR12982 - EPR12983 EPR12984 EPR12985|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
Riot City |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - 68000 |--------------------------------------------------------------------------------------------------------------------------------------|
8751 - |- - - - EPR14610 EPR14611 EPR14612 EPR14613 EPR14614 EPR14615 - EPR14616 EPR14617 EPR14618|
|--------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
|--------------------------------------------------------------------------------------------------------------------------------------|
|EPR14619 EPR14620 EPR14621 - EPR14622 EPR14623 EPR14624 - - - - - EPR14625 EPR14626 EPR14627|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
Tetris |A1 A2 A3 A4 A5 A6 A7 A8 A10 A11 A12 A14 A15 A16 |
CPU - 317-0092 |--------------------------------------------------------------------------------------------------------------------------------------|
8751 - n/a |- - - - EPR12192 - EPR12193 - EPR12168 - - EPR12165 EPR12166 EPR12167|
|--------------------------------------------------------------------------------------------------------------------------------------|
| |
|B1 B2 B3 B4 B5 B6 B7 B8 B10 B11 B12 B13 B14 B15 B16 |
S2 S3 S6 S7 S9 |--------------------------------------------------------------------------------------------------------------------------------------|
S11 S13 S15 S17 |EPR12194 - - - EPR12195 - - - - - - - - - - |
-----------------|--------------------------------------------------------------------------------------------------------------------------------------|
***************************************************************************/
#include "emu.h"
#include "includes/segas16b.h"
#include "includes/segaipt.h"
#include "machine/mc8123.h"
#include "sound/okim6295.h"
#include "speaker.h"
//**************************************************************************
// CONSTANTS
//**************************************************************************
#define MASTER_CLOCK_10MHz XTAL(20'000'000) / 2
#define MASTER_CLOCK_8MHz XTAL(8'000'000)
#define MASTER_CLOCK_25MHz XTAL(25'174'800)
//**************************************************************************
// MEMORY MAPPING
//**************************************************************************
//-------------------------------------------------
// memory_mapper - callback to handle mapping
// requests
//-------------------------------------------------
void segas16b_state::memory_mapper(sega_315_5195_mapper_device &mapper, uint8_t index)
{
switch (index)
{
case 7: // 16k of I/O space
mapper.map_as_handler(0x00000, 0x04000, 0xffc000, m_custom_io_r, m_custom_io_w);
break;
case 6: // 4k of paletteram
mapper.map_as_ram(0x00000, 0x01000, 0xfff000, "paletteram", write16_delegate(FUNC(segas16b_state::paletteram_w), this));
break;
case 5: // 64k of tileram + 4k of textram
mapper.map_as_ram(0x00000, 0x10000, 0xfe0000, "tileram", write16_delegate(FUNC(segas16b_state::tileram_w), this));
mapper.map_as_ram(0x10000, 0x01000, 0xfef000, "textram", write16_delegate(FUNC(segas16b_state::textram_w), this));
break;
case 4: // 2k of spriteram
mapper.map_as_ram(0x00000, 0x00800, 0xfff800, "sprites", write16_delegate());
break;
case 3: // 16k or 256k of work RAM
mapper.map_as_ram(0x00000, m_workram.bytes(), ~(m_workram.bytes() - 1), "workram", write16_delegate());
break;
case 2: // 3rd ROM base, or board-specific banking
switch (m_romboard)
{
case ROM_BOARD_171_5358_SMALL: mapper.map_as_rom(0x00000, 0x20000, 0xfe0000, "rom2base", "decrypted_rom2base", 0x20000, write16_delegate()); break;
case ROM_BOARD_171_5358: mapper.map_as_rom(0x00000, 0x20000, 0xfe0000, "rom2base", "decrypted_rom2base", 0x40000, write16_delegate()); break;
case ROM_BOARD_171_5521:
case ROM_BOARD_171_5704: mapper.map_as_handler(0x00000, 0x10000, 0xff0000, read16_delegate(), write16_delegate(FUNC(segas16b_state::rom_5704_bank_w), this)); break;
case ROM_BOARD_171_5797: mapper.map_as_handler(0x00000, 0x10000, 0xff0000, read16_delegate(FUNC(segas16b_state::unknown_rgn2_r), this), write16_delegate(FUNC(segas16b_state::unknown_rgn2_w), this)); break;
case ROM_BOARD_KOREAN: break;
default: assert(false);
}
break;
case 1: // 2nd ROM base, banking & math, or sound for Korean games
switch (m_romboard)
{
case ROM_BOARD_171_5358_SMALL: mapper.map_as_rom(0x00000, 0x20000, 0xfe0000, "rom1base", "decrypted_rom1base", 0x10000, write16_delegate()); break;
case ROM_BOARD_171_5358: mapper.map_as_rom(0x00000, 0x20000, 0xfe0000, "rom1base", "decrypted_rom1base", 0x20000, write16_delegate()); break;
case ROM_BOARD_171_5521:
case ROM_BOARD_171_5704: mapper.map_as_rom(0x00000, 0x40000, 0xfc0000, "rom1base", "decrypted_rom1base", 0x40000, write16_delegate()); break;
case ROM_BOARD_KOREAN: mapper.map_as_handler(0x00000, 0x10000, 0xff0000, read16_delegate(), write16_delegate(FUNC(segas16b_state::atomicp_sound_w), this)); break;
case ROM_BOARD_171_5797: mapper.map_as_handler(0x00000, 0x04000, 0xffc000, read16_delegate(FUNC(segas16b_state::rom_5797_bank_math_r), this), write16_delegate(FUNC(segas16b_state::rom_5797_bank_math_w), this)); break;
default: assert(false);
}
break;
case 0: // 1st ROM base
switch (m_romboard)
{
case ROM_BOARD_171_5358_SMALL: mapper.map_as_rom(0x00000, 0x20000, 0xfe0000, "rom0base", "decrypted_rom0base", 0x00000, write16_delegate()); break;
case ROM_BOARD_171_5358: mapper.map_as_rom(0x00000, 0x20000, 0xfe0000, "rom0base", "decrypted_rom0base", 0x00000, write16_delegate()); break;
case ROM_BOARD_171_5521:
case ROM_BOARD_171_5704: mapper.map_as_rom(0x00000, 0x40000, 0xfc0000, "rom0base", "decrypted_rom0base", 0000000, write16_delegate()); break;
case ROM_BOARD_KOREAN: mapper.map_as_rom(0x00000, 0x40000, 0xfc0000, "rom0base", "decrypted_rom0base", 0000000, write16_delegate()); break;
case ROM_BOARD_171_5797: mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom0base", "decrypted_rom0base", 0000000, write16_delegate()); break;
default: assert(false);
}
break;
}
}
WRITE16_MEMBER( segas16b_state::sound_w16 )
{
if (m_soundlatch != nullptr)
m_soundlatch->write(space, 0, data & 0xff);
if (m_soundcpu != nullptr)
m_soundcpu->set_input_line(0, HOLD_LINE);
}
//**************************************************************************
// MAIN CPU READ/WRITE HANDLERS
//**************************************************************************
//-------------------------------------------------
// rom_5704_bank_w - ROM board 5704 tile bank
// selection
//-------------------------------------------------
WRITE16_MEMBER( segas16b_state::rom_5704_bank_w )
{
if (ACCESSING_BITS_0_7)
m_segaic16vid->tilemap_set_bank(0, offset & 1, data & 7);
}
//-------------------------------------------------
// rom_5797_bank_math_r - ROM board 5797 custom
// math chip reads
//-------------------------------------------------
READ16_MEMBER( segas16b_state::rom_5797_bank_math_r )
{
offset &= 0x1fff;
switch (offset & (0x3000/2))
{
case 0x0000/2:
// multiply registers
return m_multiplier->read(space, offset, mem_mask);
case 0x1000/2:
// compare registers
return m_cmptimer_1->read(space, offset, mem_mask);
}
return open_bus_r(space, 0, mem_mask);
}
//-------------------------------------------------
// rom_5797_bank_math_r - ROM board 5797 custom
// math chip writes, plus tile bank selection
//-------------------------------------------------
WRITE16_MEMBER( segas16b_state::rom_5797_bank_math_w )
{
offset &= 0x1fff;
switch (offset & (0x3000/2))
{
case 0x0000/2:
// multiply registers
m_multiplier->write(space, offset, data, mem_mask);
break;
case 0x1000/2:
// compare registers
m_cmptimer_1->write(space, offset, data, mem_mask);
break;
case 0x2000/2:
if (ACCESSING_BITS_0_7)
m_segaic16vid->tilemap_set_bank(0, offset & 1, data & 7);
break;
}
}
//-------------------------------------------------
// unknown_rgn2_r - unknown region 2 reads;
// for now treat as a second compare/timer chip
//-------------------------------------------------
READ16_MEMBER( segas16b_state::unknown_rgn2_r )
{
logerror("Region 2: read from %04X\n", offset * 2);
return m_cmptimer_2->read(space, offset, mem_mask);
}
//-------------------------------------------------
// unknown_rgn2_w - unknown region 2 writes;
// for now treat as a second compare/timer chip
//-------------------------------------------------
WRITE16_MEMBER( segas16b_state::unknown_rgn2_w )
{
logerror("Region 2: write to %04X = %04X & %04X\n", offset * 2, data, mem_mask);
m_cmptimer_2->write(space, offset, data, mem_mask);
}
//-------------------------------------------------
// standard_io_r - default I/O handler for reads
//-------------------------------------------------
READ16_MEMBER( segas16b_state::standard_io_r )
{
offset &= 0x1fff;
switch (offset & (0x3000/2))
{
case 0x1000/2:
{
static const char *const sysports[] = { "SERVICE", "P1", "UNUSED", "P2" };
return ioport(sysports[offset & 3])->read();
}
case 0x2000/2:
return ioport((offset & 1) ? "DSW1" : "DSW2")->read();
}
logerror("%06X:standard_io_r - unknown read access to address %04X\n", m_maincpu->pc(), offset * 2);
return open_bus_r(space, 0, mem_mask);
}
//-------------------------------------------------
// standard_io_w - default I/O handler for writes
//-------------------------------------------------
WRITE16_MEMBER( segas16b_state::standard_io_w )
{
offset &= 0x1fff;
switch (offset & (0x3000/2))
{
case 0x0000/2:
//
// D7 : 1 for most games, 0 for ddux, sdi, wb3
// D6 : 1= Screen flip, 0= Normal screen display
// D5 : 1= Display on, 0= Display off
// D4 : 0 for most games, 1 for eswat
// D3 : Output to lamp 2 (1= On, 0= Off)
// D2 : Output to lamp 1 (1= On, 0= Off)
// D1 : (Output to coin counter 2?)
// D0 : Output to coin counter 1
//
m_segaic16vid->tilemap_set_flip(0, data & 0x40);
if (m_sprites.found())
m_sprites->set_flip(data & 0x40);
if (!m_disable_screen_blanking)
m_segaic16vid->set_display_enable(data & 0x20);
m_lamps[1] = BIT(data, 3);
m_lamps[0] = BIT(data, 2);
machine().bookkeeping().coin_counter_w(1, data & 0x02);
machine().bookkeeping().coin_counter_w(0, data & 0x01);
return;
}
logerror("%06X:standard_io_w - unknown write access to address %04X = %04X & %04X\n", m_maincpu->pc(), offset * 2, data, mem_mask);
}
//-------------------------------------------------
// atomicp_sound_w - write sound data to the
// YM2413 directly from the main CPU
//-------------------------------------------------
WRITE16_MEMBER( segas16b_state::atomicp_sound_w )
{
m_ym2413->write(space, offset, data >> 8);
}
//**************************************************************************
// SOUND CPU READ/WRITE HANDLERS
//**************************************************************************
//-------------------------------------------------
// upd7759_control_w - handle writes to the
// uPD7759 control register
//-------------------------------------------------
WRITE8_MEMBER( segas16b_state::upd7759_control_w )
{
int size = memregion("soundcpu")->bytes() - 0x10000;
if (size > 0)
{
// it is important to write in this order: if the /START line goes low
// at the same time /RESET goes low, no sample should be started
m_upd7759->start_w(BIT(data, 7));
m_upd7759->reset_w(BIT(data, 6));
// banking depends on the ROM board
int bankoffs = 0;
switch (m_romboard)
{
case ROM_BOARD_171_5358:
case ROM_BOARD_171_5358_SMALL:
//
// D5 : /CS for ROM at A11
// D4 : /CS for ROM at A10
// D3 : /CS for ROM at A9
// D2 : /CS for ROM at A8
// D1 : A15 for all ROMs (Or ignored for 27256's)
// D0 : A14 for all ROMs
//
if (!(data & 0x04)) bankoffs = 0x00000;
if (!(data & 0x08)) bankoffs = 0x10000;
if (!(data & 0x10)) bankoffs = 0x20000;
if (!(data & 0x20)) bankoffs = 0x30000;
bankoffs += (data & 0x03) * 0x4000;
break;
case ROM_BOARD_171_5521:
case ROM_BOARD_171_5704:
//
// D5 : Unused
// D4 : Unused
// D3 : ROM select 0=A11, 1=A12
// D2 : A16 for all ROMs
// D1 : A15 for all ROMs
// D0 : A14 for all ROMs
//
bankoffs = ((data & 0x08) >> 3) * 0x20000;
bankoffs += (data & 0x07) * 0x4000;
break;
case ROM_BOARD_171_5797:
//
// D5 : Unused
// D4 : A17 for all ROMs
// D3 : ROM select 0=A11, 1=A12
// D2 : A16 for all ROMs
// D1 : A15 for all ROMs
// D0 : A14 for all ROMs
//
bankoffs = ((data & 0x08) >> 3) * 0x40000;
bankoffs += ((data & 0x10) >> 4) * 0x20000;
bankoffs += (data & 0x07) * 0x04000;
break;
default:
assert(false);
}
// set the final bank
membank("soundbank")->set_base(memregion("soundcpu")->base() + 0x10000 + (bankoffs % size));
}
}
//-------------------------------------------------
// upd7759_status_r - return the uPD7759 busy
// bit in the top bit
//-------------------------------------------------
READ8_MEMBER( segas16b_state::upd7759_status_r )
{
return m_upd7759->busy_r() << 7;
}
//**************************************************************************
// OTHER CALLBACKS
//**************************************************************************
//-------------------------------------------------
// upd7759_generate_nmi - callback to signal an
// NMI to the sound CPU
//-------------------------------------------------
WRITE_LINE_MEMBER(segas16b_state::upd7759_generate_nmi)
{
if (state)
m_soundcpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
//-------------------------------------------------
// i8751_main_cpu_vblank - update the fake i8751
// state if we have a handler
//-------------------------------------------------
INTERRUPT_GEN_MEMBER( segas16b_state::i8751_main_cpu_vblank )
{
// if we have a fake 8751 handler, call it on VBLANK
if (!m_i8751_vblank_hook.isnull())
m_i8751_vblank_hook();
}
//**************************************************************************
// DRIVER OVERRIDES
//**************************************************************************
//-------------------------------------------------
// machine_reset - reset the state of the machine
//-------------------------------------------------
void segas16b_state::machine_reset()
{
// if we have a hard-coded mapping configuration, set it now
if (m_i8751_initial_config != nullptr)
m_mapper->configure_explicit(m_i8751_initial_config);
// queue up a timer to either boost interleave or disable the MCU
synchronize(TID_INIT_I8751);
// reset tilemap state
m_segaic16vid->tilemap_reset(*m_screen);
// configure sprite banks
if (m_sprites.found())
{
static const uint8_t default_banklist[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
static const uint8_t alternate_banklist[] = { 0,255,255,255, 255,255,255,3, 255,255,255,2, 255,1,0,255 };
const uint8_t *banklist = (m_romboard == ROM_BOARD_171_5358 || m_romboard == ROM_BOARD_171_5358_SMALL) ? alternate_banklist : default_banklist;
for (int banknum = 0; banknum < 16; banknum++)
m_sprites->set_bank(banknum, banklist[banknum]);
}
}
//-------------------------------------------------
// device_timer - handle device timers
//-------------------------------------------------
void segas16b_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
switch (id)
{
// if we have a fake i8751 handler, disable the actual 8751, otherwise crank the interleave
case TID_INIT_I8751:
if (!m_i8751_vblank_hook.isnull())
m_mcu->suspend(SUSPEND_REASON_DISABLE, 1);
else if (m_mcu != nullptr)
machine().scheduler().boost_interleave(attotime::zero, attotime::from_msec(10));
break;
// generate a periodic IRQ to the sound CPU
case TID_ATOMICP_SOUND_IRQ:
if (++m_atomicp_sound_count >= m_atomicp_sound_divisor)
{
m_maincpu->set_input_line(2, HOLD_LINE);
m_atomicp_sound_count = 0;
}
break;
}
}
//**************************************************************************
// I8751 SIMULATIONS
//**************************************************************************
//-------------------------------------------------
// altbeast_common_i8751_sim - simulate the I8751
// from Altered Beast
//-------------------------------------------------
void segas16b_state::altbeast_common_i8751_sim(offs_t soundoffs, offs_t inputoffs, int alt_bank)
{
// signal a VBLANK to the main CPU
m_maincpu->set_input_line(4, HOLD_LINE);
// set tile banks
address_space &space = m_maincpu->space(AS_PROGRAM);
int bank = m_workram[0x3094 / 2] & 0x00ff;
// alt_bank is used for the alt rom loading (where there are space between the ROMs)
// alternatively the rom loading could be changed, but the loading is correct for the non-mcu .b14/.a14 type
// board so presumably our MCU simulation should act accordingly.
if (alt_bank) bank = (bank & 0x1) | ((bank & 0xfe) << 1);
rom_5704_bank_w(space, 1, bank, 0x00ff);
// process any new sound data
uint16_t temp = m_workram[soundoffs];
if ((temp & 0xff00) != 0x0000)
{
m_mapper->write(space, 0x03, temp >> 8);
m_workram[soundoffs] = temp & 0x00ff;
}
// read inputs
m_workram[inputoffs] = ~ioport("SERVICE")->read() << 8;
}
void segas16b_state::altbeasj_i8751_sim()
{
altbeast_common_i8751_sim(0x30d4/2, 0x30d0/2, 1);
}
void segas16b_state::altbeas5_i8751_sim()
{
altbeast_common_i8751_sim(0x3098/2, 0x3096/2, 1);
}
//-------------------------------------------------
// ddux_i8751_sim - simulate the I8751
// from Dynamite Dux
//-------------------------------------------------
void segas16b_state::ddux_i8751_sim()
{
// signal a VBLANK to the main CPU
m_maincpu->set_input_line(4, HOLD_LINE);
// process any new sound data
uint16_t temp = m_workram[0x0bd0/2];
if ((temp & 0xff00) != 0x0000)
{
address_space &space = m_maincpu->space(AS_PROGRAM);
m_mapper->write(space, 0x03, temp >> 8);
m_workram[0x0bd0/2] = temp & 0x00ff;
}
}
//-------------------------------------------------
// tturf_i8751_sim - simulate the I8751
// from Tough Turf
//-------------------------------------------------
void segas16b_state::tturf_i8751_sim()
{
uint16_t temp;
// signal a VBLANK to the main CPU
m_maincpu->set_input_line(4, HOLD_LINE);
// process any new sound data
temp = m_workram[0x01d0/2];
if ((temp & 0xff00) != 0x0000)
{
address_space &space = m_maincpu->space(AS_PROGRAM);
m_mapper->write(space, 0x03, temp);
m_workram[0x01d0/2] = temp & 0x00ff;
}
// read inputs
m_workram[0x01e6/2] = ioport("SERVICE")->read() << 8;
m_workram[0x01e8/2] = ioport("P1")->read() << 8;
m_workram[0x01ea/2] = ioport("P2")->read() << 8;
}
//-------------------------------------------------
// wb3_i8751_sim - simulate the I8751
// from Wonderboy III
//-------------------------------------------------
void segas16b_state::wb3_i8751_sim()
{
// signal a VBLANK to the main CPU
m_maincpu->set_input_line(4, HOLD_LINE);
// process any new sound data
uint16_t temp = m_workram[0x0008/2];
if ((temp & 0x00ff) != 0x0000)
{
address_space &space = m_maincpu->space(AS_PROGRAM);
m_mapper->write(space, 0x03, temp >> 8);
m_workram[0x0008/2] = temp & 0xff00;
}
}
//**************************************************************************
// CUSTOM I/O SPACE HANDLERS
//**************************************************************************
//-------------------------------------------------
// aceattac_custom_io_r - custom I/O read handler
// for Ace Attacker
//-------------------------------------------------
READ16_MEMBER( segas16b_state::aceattac_custom_io_r )
{
switch (offset & (0x3000/2))
{
case 0x1000/2:
switch (offset & 3)
{
case 0x01:
return ioport("P1")->read();
case 0x02:
return ioport("DIAL1")->read() | (ioport("DIAL2")->read() << 4);
// low nibble: Sega 56pin Edge "16"-"19" // rotary switch 10positions 4bit-binary-pinout
// high nibble: Sega 56pin Edge "T"-"W" // ditto
case 0x03:
return ioport("P2")->read();
}
break;
case 0x3000/2:
if (BIT(offset, 4))
return m_cxdio->read(space, offset & 0x0f);
else // TODO: use uPD4701A device
switch (offset & 0x1b)
{
case 0x00: return ioport("TRACKX1")->read() & 0xff;
case 0x01: return (ioport("TRACKX1")->read() >> 8 & 0x0f) | (ioport("HANDY1")->read() << 4 & 0xf0);
case 0x02: return ioport("TRACKY1")->read();
case 0x03: return ioport("TRACKY1")->read() >> 8 & 0x0f;
case 0x08: return ioport("TRACKX2")->read() & 0xff;
case 0x09: return (ioport("TRACKX2")->read() >> 8 & 0x0f) | (ioport("HANDY2")->read() << 4 & 0xf0);
case 0x0a: return ioport("TRACKY2")->read();
case 0x0b: return ioport("TRACKY2")->read() >> 8 & 0xff;
}
break;
}
return standard_io_r(space, offset, mem_mask);
}
WRITE16_MEMBER( segas16b_state::aceattac_custom_io_w )
{
switch (offset & (0x3000/2))
{
case 0x3000/2:
if (BIT(offset, 4))
{
m_cxdio->write(space, offset & 0x0f, data);
return;
}
break;
}
standard_io_w(space, offset, data, mem_mask);
}
//-------------------------------------------------
// dunkshot_custom_io_r - custom I/O read handler
// for Dunk Shot
//-------------------------------------------------
READ16_MEMBER( segas16b_state::dunkshot_custom_io_r )
{
switch (offset & (0x3000/2))
{
case 0x3000/2:
switch ((offset/2) & 7)
{
case 0: return (ioport("ANALOGX1")->read() << 4) >> (8 * (offset & 1));
case 1: return (ioport("ANALOGY1")->read() << 4) >> (8 * (offset & 1));
case 2: return (ioport("ANALOGX2")->read() << 4) >> (8 * (offset & 1));
case 3: return (ioport("ANALOGY2")->read() << 4) >> (8 * (offset & 1));
case 4: return (ioport("ANALOGX3")->read() << 4) >> (8 * (offset & 1));
case 5: return (ioport("ANALOGY3")->read() << 4) >> (8 * (offset & 1));
case 6: return (ioport("ANALOGX4")->read() << 4) >> (8 * (offset & 1));
case 7: return (ioport("ANALOGY4")->read() << 4) >> (8 * (offset & 1));
}
break;
}
return standard_io_r(space, offset, mem_mask);
}
//-------------------------------------------------
// hwchamp_custom_io_r/w - custom I/O read/write
// handlers for Heavyweight Champ
//-------------------------------------------------
READ16_MEMBER( segas16b_state::hwchamp_custom_io_r )
{
uint16_t result;
switch (offset & (0x3000/2))
{
case 0x3000/2:
switch (offset & 0x30/2)
{
case 0x20/2:
result = (m_hwc_input_value & 0x80) >> 7;
m_hwc_input_value <<= 1;
return result;
}
break;
}
return standard_io_r(space, offset, mem_mask);
}
WRITE16_MEMBER( segas16b_state::hwchamp_custom_io_w )
{
switch (offset & (0x3000/2))
{
case 0x3000/2:
switch (offset & 0x30/2)
{
case 0x20/2:
switch (offset & 3)
{
case 0:
m_hwc_input_value = m_hwc_monitor->read();
break;
case 1:
m_hwc_input_value = m_hwc_left->read();
break;
case 2:
m_hwc_input_value = m_hwc_right->read();
break;
default:
m_hwc_input_value = 0xff;
break;
}
break;
case 0x30/2:
// bit 4 is GONG
// if (data & 0x10) popmessage("GONG");
// are the following really lamps?
// output().set_led_value(1,data & 0x20);
// output().set_led_value(2,data & 0x40);
// output().set_led_value(3,data & 0x80);
break;
}
break;
}
standard_io_w(space, offset, data, mem_mask);
}
//-------------------------------------------------
// passshtj_custom_io_r - custom I/O read handler
// for Passing Shot
//-------------------------------------------------
READ16_MEMBER( segas16b_state::passshtj_custom_io_r )
{
switch (offset & (0x3000/2))
{
case 0x3000/2:
switch (offset & 3)
{
case 0: return ioport("P1")->read();
case 1: return ioport("P2")->read();
case 2: return ioport("P3")->read();
case 3: return ioport("P4")->read();
}
break;
}
return standard_io_r(space, offset, mem_mask);
}
//-------------------------------------------------
// sdi_custom_io_r - custom I/O read handler
// for SDI
//-------------------------------------------------
READ16_MEMBER( segas16b_state::sdi_custom_io_r )
{
switch (offset & (0x3000/2))
{
case 0x3000/2:
switch ((offset/2) & 3)
{
case 0: return ioport("ANALOGX1")->read();
case 1: return ioport("ANALOGY1")->read();
case 2: return ioport("ANALOGX2")->read();
case 3: return ioport("ANALOGY2")->read();
}
break;
}
return standard_io_r(space, offset, mem_mask);
}
//-------------------------------------------------
// sdi_custom_io_r/w - custom I/O read/write
// handlers for Sukeban Jansi Ryuko
//-------------------------------------------------
READ16_MEMBER( segas16b_state::sjryuko_custom_io_r )
{
switch (offset & (0x3000/2))
{
case 0x1000/2:
switch (offset & 3)
{
case 1:
if (m_mj_inputs[m_mj_input_num].read_safe(0xff) != 0xff)
return 0xff & ~(1 << m_mj_input_num);
return 0xff;
case 2:
return m_mj_inputs[m_mj_input_num].read_safe(0xff);
}
break;
}
return standard_io_r(space, offset, mem_mask);
}
WRITE16_MEMBER( segas16b_state::sjryuko_custom_io_w )
{
switch (offset & (0x3000/2))
{
case 0x0000/2:
if (((m_mj_last_val ^ data) & 4) && (data & 4))
m_mj_input_num = (m_mj_input_num + 1) % 6;
m_mj_last_val = data;
break;
}
standard_io_w(space, offset, data, mem_mask);
}
//**************************************************************************
// MAIN CPU ADDRESS MAPS
//**************************************************************************
void segas16b_state::system16b_map(address_map &map)
{
map.unmap_value_high();
map(0x000000, 0xffffff).rw(m_mapper, FUNC(sega_315_5195_mapper_device::read), FUNC(sega_315_5195_mapper_device::write)).umask16(0x00ff);
// these get overwritten by the memory mapper above, but we put them here
// so they are properly allocated and tracked for saving
map(0x100000, 0x1007ff).ram().share("sprites");
map(0x200000, 0x200fff).ram().share("paletteram");
map(0x300000, 0x30ffff).ram().share("tileram");
map(0x400000, 0x400fff).ram().share("textram");
map(0x500000, 0x503fff).ram().share("workram");
}
void segas16b_state::decrypted_opcodes_map(address_map &map)
{
map(0x00000, 0xfffff).bankr("fd1094_decrypted_opcodes");
}
void segas16b_state::system16c_map(address_map &map)
{
map.unmap_value_high();
map(0x000000, 0xffffff).rw(m_mapper, FUNC(sega_315_5195_mapper_device::read), FUNC(sega_315_5195_mapper_device::write)).umask16(0x00ff);
// these get overwritten by the memory mapper above, but we put them here
// so they are properly allocated and tracked for saving
map(0x100000, 0x1007ff).ram().share("sprites");
map(0x200000, 0x200fff).ram().share("paletteram");
map(0x300000, 0x30ffff).ram().share("tileram");
map(0x400000, 0x400fff).ram().share("textram");
map(0x500000, 0x53ffff).ram().share("workram"); // only change from system16b_map
}
void segas16b_state::system16b_bootleg_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
map(0x200000, 0x23ffff).ram(); // used during startup for decompression
map(0x3f0000, 0x3fffff).w(FUNC(segas16b_state::rom_5704_bank_w));
map(0x400000, 0x40ffff).rw(m_segaic16vid, FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram");
map(0x410000, 0x410fff).rw(m_segaic16vid, FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram");
map(0x440000, 0x4407ff).ram().share("sprites");
map(0x840000, 0x840fff).ram().w(FUNC(segas16b_state::paletteram_w)).share("paletteram");
map(0xc40000, 0xc43fff).rw(FUNC(segas16b_state::bootleg_custom_io_r), FUNC(segas16b_state::bootleg_custom_io_w));
map(0x123406, 0x123407).w(FUNC(segas16b_state::sound_w16));
map(0xffc000, 0xffffff).ram().share("workram");
}
void segas16b_state::map_fpointbla(address_map &map)
{
map(0x000000, 0x01ffff).rom();
map(0x02000e, 0x02000f).portr("P2");
map(0x0a0000, 0x0a001f).ram().share("bootleg_scroll");
map(0x0a0020, 0x0a0027).ram().share("bootleg_page");
map(0x400000, 0x40ffff).rw(m_segaic16vid, FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram");
map(0x410000, 0x410fff).rw(m_segaic16vid, FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram");
map(0x440000, 0x4407ff).ram().share("sprites");
map(0x443002, 0x443003).portr("SERVICE");
map(0x840000, 0x840fff).ram().w(FUNC(segas16b_state::paletteram_w)).share("paletteram");
map(0x843018, 0x843019).portr("DSW1");
map(0xfe0005, 0xfe0005).w(m_soundlatch, FUNC(generic_latch_8_device::write));
map(0xfe000c, 0xfe000d).portr("P1");
map(0xffc000, 0xffffff).ram().share("workram");
}
void segas16b_state::decrypted_opcodes_map_x(address_map &map)
{
map.unmap_value_high();
map(0x000000, 0x03ffff).rom().share("decrypted_opcodes");
}
void segas16b_state::decrypted_opcodes_map_fpointbla(address_map &map)
{
map.unmap_value_high();
map(0x000000, 0x01ffff).rom().share("decrypted_opcodes");
}
void segas16b_state::lockonph_map(address_map &map)
{
// this still appears to have a mapper device, does the hardware use it? should we move this to all be configured by it?
map(0x000000, 0x0bffff).rom();
map(0x3f0000, 0x3fffff).w(FUNC(segas16b_state::rom_5704_bank_w));
map(0x400000, 0x40ffff).rw(m_segaic16vid, FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram");
map(0x410000, 0x410fff).rw(m_segaic16vid, FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram");
map(0x440000, 0x4407ff).ram().share("sprites");
map(0x840000, 0x841fff).ram().w(FUNC(segas16b_state::philko_paletteram_w)).share("paletteram");
map(0xC40000, 0xC40001).nopw(); // coin counters etc.?
map(0xC41000, 0xC41001).portr("P1");
map(0xC41002, 0xC41003).portr("P2");
map(0xC41004, 0xC41005).portr("SERVICE");
map(0xC42000, 0xC42001).portr("DSW1");
map(0xC42002, 0xC42003).portr("DSW2");
map(0x777707, 0x777707).w(m_soundlatch, FUNC(generic_latch_8_device::write));
map(0xff0000, 0xffffff).ram().share("workram");
}
void segas16b_state::fpointbl_map(address_map &map)
{
map(0x000000, 0x0bffff).rom();
map(0x400000, 0x40ffff).rw(m_segaic16vid, FUNC(segaic16_video_device::tileram_r), FUNC(segaic16_video_device::tileram_w)).share("tileram");
map(0x410000, 0x410fff).rw(m_segaic16vid, FUNC(segaic16_video_device::textram_r), FUNC(segaic16_video_device::textram_w)).share("textram");
map(0x440000, 0x440fff).ram().share("sprites");
map(0x600007, 0x600007).w(m_soundlatch, FUNC(generic_latch_8_device::write));
map(0x601000, 0x601001).portr("SERVICE");
map(0x601002, 0x601003).portr("P1");
map(0x601004, 0x601005).portr("P2");
map(0x600000, 0x600001).portr("DSW2");
map(0x600002, 0x600003).portr("DSW1");
map(0x840000, 0x840fff).ram().w(FUNC(segas16b_state::paletteram_w)).share("paletteram");
map(0x843000, 0x843001).nopw();
map(0xC46000, 0xC4601f).ram().share("bootleg_scroll");
map(0xC46020, 0xC46027).ram().share("bootleg_page");
map(0xffc000, 0xffffff).ram().share("workram");
}
/*
Flash Point (Datsu bootlegs = fpointbl, fpointbj)
Has sound latch at $E000 instead of I/O ports $C0-FF
*/
void segas16b_state::fpointbl_sound_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
map(0xf800, 0xffff).ram();
}
READ16_MEMBER(segas16b_state::bootleg_custom_io_r)
{
return m_custom_io_r(space, offset, mem_mask);
}
WRITE16_MEMBER(segas16b_state::bootleg_custom_io_w)
{
m_custom_io_w(space, offset, data,mem_mask);
}
//**************************************************************************
// SOUND CPU ADDRESS MAPS
//**************************************************************************
void segas16b_state::sound_map(address_map &map)
{
map.unmap_value_high();
map(0x0000, 0x7fff).rom();
map(0x8000, 0xdfff).bankr("soundbank");
map(0xe800, 0xe800).r(m_mapper, FUNC(sega_315_5195_mapper_device::pread));
map(0xf800, 0xffff).ram();
}
void segas16b_state::sound_decrypted_opcodes_map(address_map &map)
{
map.unmap_value_high();
map(0x0000, 0x7fff).rom().share("sound_decrypted_opcodes");
map(0x8000, 0xdfff).bankr("soundbank");
}
void segas16b_state::sound_portmap(address_map &map)
{
map.unmap_value_high();
map.global_mask(0xff);
map(0x00, 0x01).mirror(0x3e).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
map(0x40, 0x40).mirror(0x3f).w(FUNC(segas16b_state::upd7759_control_w));
map(0x80, 0x80).mirror(0x3f).r(FUNC(segas16b_state::upd7759_status_r)).w(m_upd7759, FUNC(upd7759_device::port_w));
map(0xc0, 0xc0).mirror(0x3f).r(m_mapper, FUNC(sega_315_5195_mapper_device::pread));
}
void segas16b_state::bootleg_sound_map(address_map &map)
{
map.unmap_value_high();
map(0x0000, 0x7fff).rom();
map(0x8000, 0xdfff).bankr("soundbank");
map(0xe800, 0xe800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
map(0xf800, 0xffff).ram();
}
void segas16b_state::bootleg_sound_portmap(address_map &map)
{
map.unmap_value_high();
map.global_mask(0xff);
map(0x00, 0x01).mirror(0x3e).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
map(0x40, 0x40).mirror(0x3f).w(FUNC(segas16b_state::upd7759_control_w));
map(0x80, 0x80).mirror(0x3f).r(FUNC(segas16b_state::upd7759_status_r)).w(m_upd7759, FUNC(upd7759_device::port_w));
map(0xc0, 0xc0).mirror(0x3f).r(m_soundlatch, FUNC(generic_latch_8_device::read));
}
// similar to whizz / other philko games in sidearms.cpp, but with the m6295
void segas16b_state::lockonph_sound_map(address_map &map)
{
map.unmap_value_high();
map(0x0000, 0xf7ff).rom();
map(0xf800, 0xffff).ram();
}
void segas16b_state::lockonph_sound_iomap(address_map &map)
{
map.global_mask(0xff);
map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
map(0x40, 0x40).nopw(); // ??
map(0x80, 0x80).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
map(0xc0, 0xc0).r(m_soundlatch, FUNC(generic_latch_8_device::read));
}
//**************************************************************************
// I8751 MCU ADDRESS MAPS
//**************************************************************************
WRITE8_MEMBER(segas16b_state::spin_68k_w)
{
// this is probably a hack but otherwise the 68k and i8751 end up fighting
// on 'goldnaxe' causing hangs in various places. maybe the interrupts
// should happen at different times, or there's some way to steal the bus?
m_maincpu->spin_until_time(m_maincpu->cycles_to_attotime(20000));
}
void segas16b_state::mcu_io_map(address_map &map)
{
map.unmap_value_high();
map.global_mask(0xff);
map(0x00, 0x1f).rw(m_mapper, FUNC(sega_315_5195_mapper_device::read), FUNC(sega_315_5195_mapper_device::write));
}
//**************************************************************************
// GENERIC PORT DEFINITIONS
//**************************************************************************
static INPUT_PORTS_START( system16b_generic )
PORT_START("SERVICE")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
PORT_START("UNUSED")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("P2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
PORT_START("DSW2")
PORT_DIPUNUSED_DIPLOC( 0x01, IP_ACTIVE_LOW, "SW2:1" )
PORT_DIPUNUSED_DIPLOC( 0x02, IP_ACTIVE_LOW, "SW2:2" )
PORT_DIPUNUSED_DIPLOC( 0x04, IP_ACTIVE_LOW, "SW2:3" )
PORT_DIPUNUSED_DIPLOC( 0x08, IP_ACTIVE_LOW, "SW2:4" )
PORT_DIPUNUSED_DIPLOC( 0x10, IP_ACTIVE_LOW, "SW2:5" )
PORT_DIPUNUSED_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW2:6" )
PORT_DIPUNUSED_DIPLOC( 0x40, IP_ACTIVE_LOW, "SW2:7" )
PORT_DIPUNUSED_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW2:8" )
PORT_START("DSW1")
SEGA_COINAGE_LOC(SW1)
INPUT_PORTS_END
//**************************************************************************
// GAME-SPECIFIC PORT DEFINITIONS
//**************************************************************************
static INPUT_PORTS_START( aceattac )
#define TMP_PL1HAND 2
#define TMP_PL1BALL 1
#define TMP_PL2HAND 4
#define TMP_PL2BALL 3
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("SERVICE")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) // Block Switch
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) // Block Switch
PORT_MODIFY("P1")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
// on System16A, "P1" reads 4 analog devices via multiplexer
// but on System16B, "P1" is connected nothing (analog devices are read via I/O sub-board)
PORT_MODIFY("P2")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
// on System16A, "P2" reads 4 analog devices via multiplexer
// but on System16B, "P2" is connected nothing (analog devices are read via I/O sub-board)
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0e, 0x0e, "Starting Points" ) PORT_DIPLOCATION("SW2:2,3,4")
PORT_DIPSETTING( 0x06, "2000" )
PORT_DIPSETTING( 0x0a, "3000" )
PORT_DIPSETTING( 0x0c, "4000" )
PORT_DIPSETTING( 0x0e, "5000" )
PORT_DIPSETTING( 0x08, "6000" )
PORT_DIPSETTING( 0x04, "7000" )
PORT_DIPSETTING( 0x02, "8000" )
PORT_DIPSETTING( 0x00, "9000" )
PORT_DIPNAME( 0x30, 0x30, "Point Table" ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x20, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x30, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:7,8")
PORT_DIPSETTING( 0x20, DEF_STR( Easy ) )
PORT_DIPSETTING( 0xc0, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_START("HANDX1") // direction of "hand" device
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(30) PORT_PLAYER(TMP_PL1HAND)
PORT_START("TRACKX1")
PORT_BIT( 0xfff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(30) PORT_PLAYER(TMP_PL1BALL) PORT_REVERSE
PORT_START("TRACKY1")
PORT_BIT( 0xfff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(100) PORT_KEYDELTA(30) PORT_PLAYER(TMP_PL1BALL)
PORT_START("HANDY1") // power of "hand" device
PORT_BIT( 0x07, 0x04, IPT_PEDAL2 ) PORT_SENSITIVITY(100) PORT_KEYDELTA(1) PORT_CENTERDELTA(2) PORT_PLAYER(TMP_PL1HAND)
PORT_START("DIAL1") // toss formation
PORT_BIT( 0x0f, 0x00, IPT_POSITIONAL ) PORT_POSITIONS(10) PORT_WRAPS PORT_SENSITIVITY(10) PORT_KEYDELTA(1) PORT_CODE_DEC(KEYCODE_Z) PORT_CODE_INC(KEYCODE_X) PORT_PLAYER(1) PORT_INVERT PORT_FULL_TURN_COUNT(10)
// AUTOMATIC 1 / 2 3 \ AUTOMATIC 2
// LEFT SIDE / 1 4 \ RIGHT SIDE // (out of range)
// B QUICK | 0 5 | D QUICK // 10 A QUICK 13 A QUICK
// A QUICK \ 9 6 / C QUICK // 11 (buggy blank) 14 B QUICK
// CENTER \ 8 7 / BACK ATTACK // 12 A QUICK 15 A QUICK
PORT_START("HANDX2") // direction of "hand" device
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(30) PORT_PLAYER(TMP_PL2HAND)
PORT_START("TRACKX2")
PORT_BIT( 0xfff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(100) PORT_KEYDELTA(30) PORT_PLAYER(TMP_PL2BALL) PORT_REVERSE
PORT_START("TRACKY2")
PORT_BIT( 0xfff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(100) PORT_KEYDELTA(30) PORT_PLAYER(TMP_PL2BALL)
PORT_START("HANDY2") // power of "hand" device
PORT_BIT( 0x07, 0x04, IPT_PEDAL2 ) PORT_SENSITIVITY(100) PORT_KEYDELTA(1) PORT_CENTERDELTA(2) PORT_PLAYER(TMP_PL2HAND)
PORT_START("DIAL2") // toss formation
PORT_BIT( 0x0f, 0x00, IPT_POSITIONAL ) PORT_POSITIONS(10) PORT_WRAPS PORT_SENSITIVITY(10) PORT_KEYDELTA(1) PORT_CODE_DEC(KEYCODE_N) PORT_CODE_INC(KEYCODE_M) PORT_PLAYER(2) PORT_INVERT PORT_FULL_TURN_COUNT(10)
#undef TMP_PL1HAND
#undef TMP_PL1BALL
#undef TMP_PL2HAND
#undef TMP_PL2BALL
INPUT_PORTS_END
static INPUT_PORTS_START( aliensyn )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("DSW2")
//"SW2:1" unused
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x08, "2" )
PORT_DIPSETTING( 0x0c, "3" )
PORT_DIPSETTING( 0x04, "4" )
PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
PORT_DIPNAME( 0x30, 0x30, "Timer" ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x00, "120" )
PORT_DIPSETTING( 0x10, "130" )
PORT_DIPSETTING( 0x20, "140" )
PORT_DIPSETTING( 0x30, "150" )
PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:7,8")
PORT_DIPSETTING( 0x80, DEF_STR( Easy ) )
PORT_DIPSETTING( 0xc0, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
INPUT_PORTS_END
static INPUT_PORTS_START( aliensynj )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("DSW2")
//"SW2:1" unused
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x08, "2" )
PORT_DIPSETTING( 0x0c, "3" )
PORT_DIPSETTING( 0x04, "4" )
PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
PORT_DIPNAME( 0x30, 0x30, "Timer" ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x00, "150" )
PORT_DIPSETTING( 0x10, "160" )
PORT_DIPSETTING( 0x20, "170" )
PORT_DIPSETTING( 0x30, "180" )
PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:7,8")
PORT_DIPSETTING( 0x80, DEF_STR( Easy ) )
PORT_DIPSETTING( 0xc0, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
INPUT_PORTS_END
static INPUT_PORTS_START( afighter )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x01, DEF_STR( Cocktail ) )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x08, "2" )
PORT_DIPSETTING( 0x0c, "3" )
PORT_DIPSETTING( 0x04, "4" )
PORT_DIPSETTING( 0x00, DEF_STR( Infinite ) )
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x30, "10000 - 20000" )
PORT_DIPSETTING( 0x20, "20000 - 40000" )
PORT_DIPSETTING( 0x10, "30000 - 60000" )
PORT_DIPSETTING( 0x00, "40000 - 80000" )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:7")
PORT_DIPSETTING( 0x40, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hard ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:8")
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
INPUT_PORTS_END
/* this is identical to the s16a implementation, maybe should be moved to common class */
CUSTOM_INPUT_MEMBER(afighter_16b_analog_state::afighter_accel_r)
{
int accel = m_accel->read();
switch ((accel & 0xc0) >> 4)
{
case 0x00: return 0;
case 0x04: return (1 << 0);
case 0x08: return (1 << 1);
case 0x0c: return (1 << 2);
}
return 0;
}
CUSTOM_INPUT_MEMBER(afighter_16b_analog_state::afighter_handl_left_r)
{
int steer = m_steer->read();
switch ((steer & 0xf0) >> 4)
{
case 0x00: return (1<<7);
case 0x01: return (1<<6);
case 0x02: return (1<<5);
case 0x03: return (1<<4);
case 0x04: return (1<<3);
case 0x05: return (1<<2);
case 0x06: return (1<<1);
case 0x07: return (1<<0);
}
return 0x00;
}
CUSTOM_INPUT_MEMBER(afighter_16b_analog_state::afighter_handl_right_r)
{
int steer = m_steer->read();
switch ((steer & 0xf0)>>4)
{
case 0x0f: return (1<<7);
case 0x0e: return (1<<6);
case 0x0d: return (1<<5);
case 0x0c: return (1<<4);
case 0x0b: return (1<<3);
case 0x0a: return (1<<2);
case 0x09: return (1<<1);
case 0x08: return (1<<0);
}
return 0x00;
}
static INPUT_PORTS_START( afighter_analog )
PORT_INCLUDE( afighter )
PORT_MODIFY("P1")
PORT_BIT( 0x07, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, afighter_16b_analog_state, afighter_accel_r, nullptr)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) // SHOT
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) // WEAPON1
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) // WEAPON2
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) // WEAPON3
PORT_MODIFY("P2")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, afighter_16b_analog_state, afighter_handl_left_r, nullptr)
PORT_MODIFY("UNUSED")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, afighter_16b_analog_state, afighter_handl_right_r, nullptr)
PORT_START("STEER") // steering
PORT_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_SENSITIVITY(100) PORT_KEYDELTA(4)
PORT_START("ACCEL") // gas pedal
PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(100) PORT_KEYDELTA(20)
INPUT_PORTS_END
static INPUT_PORTS_START( altbeast )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x01, 0x01, "Credits Needed" ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x01, "1 Credit To Start" )
PORT_DIPSETTING( 0x00, "2 Credit To Start" )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x08, "2" )
PORT_DIPSETTING( 0x0c, "3" )
PORT_DIPSETTING( 0x04, "4" )
PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
PORT_DIPNAME( 0x30, 0x30, "Player Meter" ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x20, "2" )
PORT_DIPSETTING( 0x30, "3" )
PORT_DIPSETTING( 0x10, "4" )
PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:7,8")
PORT_DIPSETTING( 0x80, DEF_STR( Easy ) )
PORT_DIPSETTING( 0xc0, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
INPUT_PORTS_END
static INPUT_PORTS_START( aurail )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x01, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPSETTING( 0x0c, "3" )
PORT_DIPSETTING( 0x08, "4" )
PORT_DIPSETTING( 0x04, "5" )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:5")
PORT_DIPSETTING( 0x10, "80K/200K/500K/1000K" )
PORT_DIPSETTING( 0x00, "100K/300K/700K/1000K" )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:6")
PORT_DIPSETTING( 0x20, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hard ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Controller ) ) PORT_DIPLOCATION("SW2:7")
PORT_DIPSETTING( 0x40, "1 Player Side" )
PORT_DIPSETTING( 0x00, "2 Players Side" )
PORT_DIPNAME( 0x80, 0x80, "Special Function Mode" ) PORT_DIPLOCATION("SW2:8")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( bayroute )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x04, "1" )
PORT_DIPSETTING( 0x0c, "3" )
PORT_DIPSETTING( 0x08, "5" )
PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x30, "100k" )
PORT_DIPSETTING( 0x20, "150k" )
PORT_DIPSETTING( 0x10, "200k" )
PORT_DIPSETTING( 0x00, DEF_STR( None ) )
PORT_DIPNAME( 0xc0, 0x80, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:7,8")
PORT_DIPSETTING( 0xc0, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x80, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
INPUT_PORTS_END
static INPUT_PORTS_START( bullet )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("SERVICE")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START3 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 )
PORT_MODIFY("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT ) PORT_8WAY PORT_PLAYER(1)
PORT_MODIFY("UNUSED")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN ) PORT_8WAY PORT_PLAYER(3)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP ) PORT_8WAY PORT_PLAYER(3)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT ) PORT_8WAY PORT_PLAYER(3)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT ) PORT_8WAY PORT_PLAYER(3)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN ) PORT_8WAY PORT_PLAYER(3)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP ) PORT_8WAY PORT_PLAYER(3)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT ) PORT_8WAY PORT_PLAYER(3)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT ) PORT_8WAY PORT_PLAYER(3)
PORT_MODIFY("P2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT ) PORT_8WAY PORT_PLAYER(2)
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Players ) ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x01, "2" )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPSETTING( 0x0c, "3" )
PORT_DIPSETTING( 0x08, "4" )
PORT_DIPSETTING( 0x04, "5" )
//"SW2:5" unused
//"SW2:6" unused
//"SW2:7" unused
//"SW2:8" unused
INPUT_PORTS_END
static INPUT_PORTS_START( cotton )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x06, 0x06, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:2,3")
PORT_DIPSETTING( 0x04, "2" )
PORT_DIPSETTING( 0x06, "3" )
PORT_DIPSETTING( 0x02, "4" )
PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x18, 0x18, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:4,5")
PORT_DIPSETTING( 0x10, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x18, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x08, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
//"SW2:6" unused
//"SW2:7" unused
//"SW2:8" unused
INPUT_PORTS_END
static INPUT_PORTS_START( ddux )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x06, 0x06, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:2,3")
PORT_DIPSETTING( 0x04, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x06, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x02, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x18, 0x18, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:4,5")
PORT_DIPSETTING( 0x10, "2" )
PORT_DIPSETTING( 0x18, "3" )
PORT_DIPSETTING( 0x08, "4" )
PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x60, 0x60, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:6,7")
PORT_DIPSETTING( 0x40, "150k" )
PORT_DIPSETTING( 0x60, "200k" )
PORT_DIPSETTING( 0x20, "300k" )
PORT_DIPSETTING( 0x00, "400k" )
//"SW2:8" unused
// Switch #8 is listed as "NOT USED" and "Always OFF"
INPUT_PORTS_END
static INPUT_PORTS_START( dunkshot )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("SERVICE")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START3 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START4 )
PORT_MODIFY("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
PORT_MODIFY("P2")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_MODIFY("DSW2")
//"SW2:1" unused
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, "VS Time" ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x08, "2P 1:30/ 3P 2:00/ 4P 2:30" )
PORT_DIPSETTING( 0x0c, "2P 2:00/ 3P 2:30/ 4P 3:00" )
PORT_DIPSETTING( 0x04, "2P 2:30/ 3P 3:00/ 4P 3:30" )
PORT_DIPSETTING( 0x00, "2P 3:00/ 3P 3:30/ 4P 4:00" )
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x20, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x30, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x40, 0x40, "CPU Starts With +6 Pts." ) PORT_DIPLOCATION("SW2:7")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
//"SW2:8" unused
PORT_START("ANALOGX1") // fake analog X
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(75) PORT_KEYDELTA(5) PORT_PLAYER(1) PORT_REVERSE
PORT_START("ANALOGY1") // fake analog Y
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(75) PORT_KEYDELTA(5) PORT_PLAYER(1)
PORT_START("ANALOGX2") // fake analog X
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(75) PORT_KEYDELTA(5) PORT_PLAYER(2)
PORT_START("ANALOGY2") // fake analog Y
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(75) PORT_KEYDELTA(5) PORT_PLAYER(2) PORT_REVERSE
PORT_START("ANALOGX3") // fake analog X
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(75) PORT_KEYDELTA(5) PORT_PLAYER(3) PORT_REVERSE
PORT_START("ANALOGY3") // fake analog Y
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(75) PORT_KEYDELTA(5) PORT_PLAYER(3)
PORT_START("ANALOGX4") // fake analog X
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(75) PORT_KEYDELTA(5) PORT_PLAYER(4)
PORT_START("ANALOGY4") // fake analog Y
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(75) PORT_KEYDELTA(5) PORT_PLAYER(4) PORT_REVERSE
INPUT_PORTS_END
static INPUT_PORTS_START( eswat )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x01, 0x01, "Credits To Start" ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x01, "1 Credit" )
PORT_DIPSETTING( 0x00, "2 Credits" )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:3")
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Timer" ) PORT_DIPLOCATION("SW2:4")
PORT_DIPSETTING( 0x08, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hard ) )
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x20, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x30, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:7,8")
PORT_DIPSETTING( 0x00, "1" )
PORT_DIPSETTING( 0x40, "2" )
PORT_DIPSETTING( 0xc0, "3" )
PORT_DIPSETTING( 0x80, "4" )
INPUT_PORTS_END
static const ioport_value exctleag_table[6] =
{
0x07, 0x06, 0x04, 0x05, 0x01, 0x03
};
static INPUT_PORTS_START( exctleag )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("P1")
PORT_BIT( 0x07, 0x00, IPT_POSITIONAL_V ) PORT_POSITIONS(6) PORT_REMAP_TABLE(exctleag_table) PORT_SENSITIVITY(5) PORT_KEYDELTA(10) PORT_CENTERDELTA(0) PORT_PLAYER(1) PORT_NAME("P1 Bant Position")
PORT_BIT( 0x18, 0x00, IPT_POSITIONAL_V ) PORT_POSITIONS(4) PORT_REMAP_TABLE(exctleag_table) PORT_SENSITIVITY(5) PORT_KEYDELTA(5) PORT_CENTERDELTA(5) PORT_PLAYER(1) PORT_NAME("P1 Swing Power")
PORT_BIT( 0xe0, 0x00, IPT_POSITIONAL_V ) PORT_POSITIONS(6) PORT_REMAP_TABLE(exctleag_table) PORT_SENSITIVITY(5) PORT_KEYDELTA(10) PORT_CENTERDELTA(0) PORT_PLAYER(1) PORT_NAME("P1 Swing Position")
PORT_MODIFY("UNUSED")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Chase Button") PORT_PLAYER(1) // CHASE
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Change Button") PORT_PLAYER(1) // CHANGE
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Select Button") PORT_PLAYER(1) // SELECT
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P2 Chase Button") PORT_PLAYER(2) // CHASE
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Change Button") PORT_PLAYER(2) // CHANGE
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2 Select Button") PORT_PLAYER(2) // SELECT
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_MODIFY("P2")
PORT_BIT( 0x07, 0x00, IPT_POSITIONAL_V ) PORT_POSITIONS(6) PORT_REMAP_TABLE(exctleag_table) PORT_SENSITIVITY(5) PORT_KEYDELTA(10) PORT_CENTERDELTA(0) PORT_PLAYER(2) PORT_NAME("P2 Bant Position")
PORT_BIT( 0x18, 0x00, IPT_POSITIONAL_V ) PORT_POSITIONS(4) PORT_REMAP_TABLE(exctleag_table) PORT_SENSITIVITY(5) PORT_KEYDELTA(5) PORT_CENTERDELTA(5) PORT_PLAYER(2) PORT_NAME("P2 Swing Power")
PORT_BIT( 0xe0, 0x00, IPT_POSITIONAL_V ) PORT_POSITIONS(6) PORT_REMAP_TABLE(exctleag_table) PORT_SENSITIVITY(5) PORT_KEYDELTA(10) PORT_CENTERDELTA(0) PORT_PLAYER(2) PORT_NAME("P2 Swing Position")
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0e, 0x0e, "Starting Points" ) PORT_DIPLOCATION("SW2:2,3,4")
PORT_DIPSETTING( 0x06, "2000" )
PORT_DIPSETTING( 0x0a, "3000" )
PORT_DIPSETTING( 0x0c, "4000" )
PORT_DIPSETTING( 0x0e, "5000" )
PORT_DIPSETTING( 0x08, "6000" )
PORT_DIPSETTING( 0x04, "7000" )
PORT_DIPSETTING( 0x02, "8000" )
PORT_DIPSETTING( 0x00, "9000" )
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x20, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x30, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0xc0, 0xc0, "Point Table" ) PORT_DIPLOCATION("SW2:7,8")
PORT_DIPSETTING( 0x80, DEF_STR( Easy ) )
PORT_DIPSETTING( 0xc0, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
//
// Point Table: difference compared to Normal
// Easy: you get more points by good play, and lose less points by bad play
// Hard: you get less points by good play
// Hardest: you get less points by good play, and lose more points by bad play
//
PORT_START("ANALOGX1") // fake analog X
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(75) PORT_KEYDELTA(5) PORT_REVERSE
PORT_START("ANALOGY1") // fake analog Y
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(75) PORT_KEYDELTA(5)
PORT_START("ANALOGX2") // fake analog X
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(75) PORT_KEYDELTA(5) PORT_PLAYER(2)
PORT_START("ANALOGY2") // fake analog Y
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(75) PORT_KEYDELTA(5) PORT_PLAYER(2)
INPUT_PORTS_END
static INPUT_PORTS_START( fpoint )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("DSW2")
//"SW2:1" unused
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
//"SW2:3" unused
//"SW2:4" unused
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x20, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x30, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x40, 0x40, "Clear Round Allowed" ) PORT_DIPLOCATION("SW2:7") // Use button 3
PORT_DIPSETTING( 0x00, "1" )
PORT_DIPSETTING( 0x40, "2" )
// SW2:8 The mode in which a block falls at twice [ usual ] speed as this when playing 25 minutes or more on one coin.
PORT_DIPNAME( 0x80, 0x80, "2 Cell Move" ) PORT_DIPLOCATION("SW2:8")
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
// Switches 1, 3, 4 & 7 are listed as "Always off"
INPUT_PORTS_END
static INPUT_PORTS_START( fpointbl )
PORT_START("SERVICE")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
PORT_START("P2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
PORT_START("DSW2")
PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW2:1" ) /* Listed as "Unused" */
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW2:3" ) /* Listed as "Unused" */
PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW2:4" ) /* Listed as "Unused" */
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x20, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x30, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x40, 0x40, "Clear Round Allowed" ) PORT_DIPLOCATION("SW2:7") /* Use button 3 */
PORT_DIPSETTING( 0x00, "1" )
PORT_DIPSETTING( 0x40, "2" )
/* SW2:8 The mode in which a block falls at twice [ usual ] speed as this when playing 25 minutes or more on one coin. */
PORT_DIPNAME( 0x80, 0x80, "2 Cell Move" ) PORT_DIPLOCATION("SW2:8")
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
PORT_START("DSW1")
PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
PORT_DIPSETTING( 0x07, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x09, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x05, "2 Coins/1 Credit 5/3 6/4" )
PORT_DIPSETTING( 0x04, "2 Coins/1 Credit 4/3" )
PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x01, "1 Coin/1 Credit 2/3" )
PORT_DIPSETTING( 0x02, "1 Coin/1 Credit 4/5" )
PORT_DIPSETTING( 0x03, "1 Coin/1 Credit 5/6" )
PORT_DIPSETTING( 0x06, DEF_STR( 2C_3C ) )
PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) )
PORT_DIPSETTING( 0x0b, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x0a, DEF_STR( 1C_6C ) )
PORT_DIPSETTING( 0x00, "Free Play (if Coin B too) or 1/1" )
PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:5,6,7,8")
PORT_DIPSETTING( 0x70, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x80, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x90, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x50, "2 Coins/1 Credit 5/3 6/4" )
PORT_DIPSETTING( 0x40, "2 Coins/1 Credit 4/3" )
PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x10, "1 Coin/1 Credit 2/3" )
PORT_DIPSETTING( 0x20, "1 Coin/1 Credit 4/5" )
PORT_DIPSETTING( 0x30, "1 Coin/1 Credit 5/6" )
PORT_DIPSETTING( 0x60, DEF_STR( 2C_3C ) )
PORT_DIPSETTING( 0xe0, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0xd0, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_4C ) )
PORT_DIPSETTING( 0xb0, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0xa0, DEF_STR( 1C_6C ) )
PORT_DIPSETTING( 0x00, "Free Play (if Coin A too) or 1/1" )
INPUT_PORTS_END
static INPUT_PORTS_START( goldnaxe )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x01, 0x01, "Credits Needed" ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x01, "1 Credit To Start" )
PORT_DIPSETTING( 0x00, "2 Credits To Start" )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x3c, 0x3c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:3,4,5,6") // Definition according to manual
PORT_DIPSETTING( 0x00, "Special" )
PORT_DIPSETTING( 0x14, DEF_STR( Easiest ) )
PORT_DIPSETTING( 0x1c, DEF_STR( Easier ) )
PORT_DIPSETTING( 0x34, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x3c, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x38, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x2c, DEF_STR( Harder ) )
PORT_DIPSETTING( 0x28, DEF_STR( Hardest ) )
/*
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x08, "1" )
PORT_DIPSETTING( 0x0c, "2" )
PORT_DIPSETTING( 0x04, "3" )
PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x30, 0x30, "Energy Meter" ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x20, "2" )
PORT_DIPSETTING( 0x30, "3" )
PORT_DIPSETTING( 0x10, "4" )
PORT_DIPSETTING( 0x00, "5" )
*/
//"SW2:7" unused
//"SW2:8" unused
INPUT_PORTS_END
static INPUT_PORTS_START( hwchamp )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("P1")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_MODIFY("P2")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_MODIFY("DSW2")
//"SW2:1" unused
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x00, "Start Level Select" ) PORT_DIPLOCATION("SW2:3")
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:4")
PORT_DIPSETTING( 0x08, DEF_STR( No ) )
PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x20, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x30, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0xc0, 0xc0, "Time Adjust" ) PORT_DIPLOCATION("SW2:7,8")
PORT_DIPSETTING( 0x80, DEF_STR( Easy ) )
PORT_DIPSETTING( 0xc0, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_START("MONITOR") // monitor
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(70) PORT_KEYDELTA(32)
PORT_START("RIGHT") // right handle
PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(70) PORT_KEYDELTA(32)
PORT_START("LEFT") // left handle
PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(70) PORT_KEYDELTA(32)
INPUT_PORTS_END
static INPUT_PORTS_START( mvp )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x01, 0x01, "Credits To Start" ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x01, "1 Credit" )
PORT_DIPSETTING( 0x00, "2 Credits" )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "Innings" ) PORT_DIPLOCATION("SW2:3")
PORT_DIPSETTING( 0x04, "1 Credit 1 Inning" )
PORT_DIPSETTING( 0x00, "2 Credits 3 Innings" )
PORT_DIPNAME( 0x38, 0x38, "Time Limits" ) PORT_DIPLOCATION("SW2:4,5,6")
PORT_DIPSETTING( 0x38, "1 Normal" )
PORT_DIPSETTING( 0x18, "2" )
PORT_DIPSETTING( 0x28, "3" )
PORT_DIPSETTING( 0x08, "4" )
PORT_DIPSETTING( 0x30, "5" )
PORT_DIPSETTING( 0x10, "6" )
PORT_DIPSETTING( 0x20, "7" )
PORT_DIPSETTING( 0x00, "8 Hardest" )
PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:7,8")
PORT_DIPSETTING( 0x80, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )
PORT_DIPSETTING( 0xc0, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
INPUT_PORTS_END
static INPUT_PORTS_START( passsht )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("P1")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 )
PORT_MODIFY("P2")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0e, 0x0e, "Initial Point" ) PORT_DIPLOCATION("SW2:2,3,4")
PORT_DIPSETTING( 0x06, "2000" )
PORT_DIPSETTING( 0x0a, "3000" )
PORT_DIPSETTING( 0x0c, "4000" )
PORT_DIPSETTING( 0x0e, "5000" )
PORT_DIPSETTING( 0x08, "6000" )
PORT_DIPSETTING( 0x04, "7000" )
PORT_DIPSETTING( 0x02, "8000" )
PORT_DIPSETTING( 0x00, "9000" )
PORT_DIPNAME( 0x30, 0x30, "Point Table" ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x20, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x30, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:7,8")
PORT_DIPSETTING( 0x80, DEF_STR( Easy ) )
PORT_DIPSETTING( 0xc0, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
INPUT_PORTS_END
static INPUT_PORTS_START( passshtj )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("SERVICE")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START3 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START4 )
PORT_MODIFY("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 )
PORT_MODIFY("P2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
PORT_START("P3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(3)
PORT_START("P4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(4)
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0e, 0x00, "Initial Point" ) PORT_DIPLOCATION("SW2:2,3,4")
PORT_DIPSETTING( 0x06, "2000" )
PORT_DIPSETTING( 0x0a, "3000" )
PORT_DIPSETTING( 0x0c, "4000" )
PORT_DIPSETTING( 0x0e, "5000" )
PORT_DIPSETTING( 0x08, "6000" )
PORT_DIPSETTING( 0x04, "7000" )
PORT_DIPSETTING( 0x02, "8000" )
PORT_DIPSETTING( 0x00, "9000" )
PORT_DIPNAME( 0x30, 0x30, "Point Table" ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x20, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x30, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:7,8")
PORT_DIPSETTING( 0x80, DEF_STR( Easy ) )
PORT_DIPSETTING( 0xc0, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
INPUT_PORTS_END
static INPUT_PORTS_START( cencourt )
PORT_INCLUDE( passshtj )
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x01, 0x01, "Debug Display" ) PORT_DIPLOCATION("SW2:1") // test mode still calls it Demo Sounds like other sets, but instead it enables a debug overlay here
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( riotcity )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x01, 0x01, "2 Credits to Start" ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x08, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x00, "1" )
PORT_DIPSETTING( 0x0c, "2" )
PORT_DIPSETTING( 0x08, "3" )
PORT_DIPSETTING( 0x04, "4" )
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x20, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x30, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:7")
PORT_DIPSETTING( 0x40, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hard ) )
PORT_DIPNAME( 0x80, 0x80, "Attack Button to Start" ) PORT_DIPLOCATION("SW2:8")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( ryukyu )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_MODIFY("P2")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, "Cancel per Credit" ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPSETTING( 0x02, "3" )
PORT_DIPNAME( 0x04, 0x00, "Timer Speed" ) PORT_DIPLOCATION("SW2:3")
PORT_DIPSETTING( 0x04, "20 seconds" )
PORT_DIPSETTING( 0x00, "30 seconds" )
PORT_DIPNAME( 0x08, 0x08, "PCM Voice" ) PORT_DIPLOCATION("SW2:4")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
PORT_DIPNAME( 0x30, 0x30, "Omikuji Difficulty" ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x20, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x30, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:7,8")
PORT_DIPSETTING( 0x80, DEF_STR( Easy ) )
PORT_DIPSETTING( 0xc0, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
INPUT_PORTS_END
static INPUT_PORTS_START( sdi )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("SERVICE")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_MODIFY("P1")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_MODIFY("UNUSED")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN ) PORT_8WAY
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP ) PORT_8WAY
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT ) PORT_8WAY
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT ) PORT_8WAY
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT ) PORT_8WAY PORT_PLAYER(2)
PORT_MODIFY("P2")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x08, "2" )
PORT_DIPSETTING( 0x0c, "3" )
PORT_DIPSETTING( 0x04, "4" )
PORT_DIPSETTING( 0x00, "Free")
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x20, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x30, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:7,8")
PORT_DIPSETTING( 0x80, "Every 50000" )
PORT_DIPSETTING( 0xc0, "50000" )
PORT_DIPSETTING( 0x40, "100000" )
PORT_DIPSETTING( 0x00, DEF_STR( None ) )
PORT_START("ANALOGX1") // fake analog X
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(75) PORT_KEYDELTA(5) PORT_REVERSE
PORT_START("ANALOGY1") // fake analog Y
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(75) PORT_KEYDELTA(5)
PORT_START("ANALOGX2") // fake analog X
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(75) PORT_KEYDELTA(5) PORT_PLAYER(2)
PORT_START("ANALOGY2") // fake analog Y
PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(75) PORT_KEYDELTA(5) PORT_PLAYER(2)
INPUT_PORTS_END
static INPUT_PORTS_START( shinobi )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x01, DEF_STR( Cocktail ) )
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x08, "2" )
PORT_DIPSETTING( 0x0c, "3" )
PORT_DIPSETTING( 0x04, "5" )
PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x20, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x30, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x40, 0x40, "Enemy's Bullet Speed" ) PORT_DIPLOCATION("SW2:7")
PORT_DIPSETTING( 0x40, "Slow" )
PORT_DIPSETTING( 0x00, "Fast" )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Language ) ) PORT_DIPLOCATION("SW2:8")
PORT_DIPSETTING( 0x80, DEF_STR( Japanese ) )
PORT_DIPSETTING( 0x00, DEF_STR( English ) )
INPUT_PORTS_END
static INPUT_PORTS_START( sjryuko )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("P1")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_MODIFY("P2")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_MODIFY("DSW1")
PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
PORT_DIPSETTING( 0x07, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x09, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x00, " 1 Coin/1 Credit" )
PORT_DIPSETTING( 0x06, DEF_STR( 2C_3C ) )
PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) )
PORT_DIPSETTING( 0x0b, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x0a, DEF_STR( 1C_6C ) )
PORT_DIPSETTING( 0x05, DEF_STR( None ) )
PORT_DIPSETTING( 0x04, DEF_STR( None ) )
PORT_DIPSETTING( 0x03, DEF_STR( None ) )
PORT_DIPSETTING( 0x02, DEF_STR( None ) )
PORT_DIPSETTING( 0x01, DEF_STR( None ) )
PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:5,6,7,8")
PORT_DIPSETTING( 0x70, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x80, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x90, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x00, " 1 Coin/1 Credit" )
PORT_DIPSETTING( 0x60, DEF_STR( 2C_3C ) )
PORT_DIPSETTING( 0xe0, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0xd0, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_4C ) )
PORT_DIPSETTING( 0xb0, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0xa0, DEF_STR( 1C_6C ) )
PORT_DIPSETTING( 0x50, DEF_STR( None ) )
PORT_DIPSETTING( 0x40, DEF_STR( None ) )
PORT_DIPSETTING( 0x30, DEF_STR( None ) )
PORT_DIPSETTING( 0x20, DEF_STR( None ) )
PORT_DIPSETTING( 0x10, DEF_STR( None ) )
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x03, 0x03, "CPU Level" ) PORT_DIPLOCATION("SW2:1,2")
PORT_DIPSETTING( 0x03, "Weak" )
PORT_DIPSETTING( 0x02, "Medium Weak" )
PORT_DIPSETTING( 0x01, "Medium Strong" )
PORT_DIPSETTING( 0x00, "Strong" )
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:3")
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
//"SW2:4" unused
//"SW2:5" unused
//"SW2:6" unused
//"SW2:7" unused
//"SW2:8" unused
PORT_START("MJ0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_B )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_C )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_D )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE )
PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("MJ1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_E )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_G )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_H )
PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("MJ2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_I )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_J )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_L )
PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("MJ3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_M )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_N )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP )
PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("MJ4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_BET )
PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("MJ5")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
static INPUT_PORTS_START( sonicbom )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2,3")
PORT_DIPSETTING( 0x06, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x07, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x05, "Hard 1" )
PORT_DIPSETTING( 0x04, "Hard 2" )
PORT_DIPSETTING( 0x03, "Hard 3" )
PORT_DIPSETTING( 0x02, "Hard 4" )
PORT_DIPSETTING( 0x01, "Hard 5" )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x18, 0x18, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:4,5")
PORT_DIPSETTING( 0x10, "2" )
PORT_DIPSETTING( 0x18, "3" )
PORT_DIPSETTING( 0x08, "4" )
PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x60, 0x60, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:6,7")
PORT_DIPSETTING( 0x40, "30k" )
PORT_DIPSETTING( 0x60, "40k" )
PORT_DIPSETTING( 0x20, "50k" )
PORT_DIPSETTING( 0x00, "80k" )
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:8")
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x80, DEF_STR( Cocktail ) )
INPUT_PORTS_END
static INPUT_PORTS_START( tetris )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("P1")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_MODIFY("P2")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_MODIFY("DSW2")
// SW2:1,3,4,7,8 Unused according to manual.
// From the code SW2:3,4 looks like some kind of difficulty level,
// but all 4 levels points to the same place so it doesn't actually change anything!!
//"SW2:1" unused
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
//"SW2:3" unused
//"SW2:4" unused
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x20, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x30, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
//"SW2:7" unused
//"SW2:8" unused
INPUT_PORTS_END
static INPUT_PORTS_START( timescan )
PORT_INCLUDE( system16b_generic )
PORT_MODIFY("P1")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_MODIFY("P2")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_MODIFY("UNUSED")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SWE:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, "Out Lane Pin" ) PORT_DIPLOCATION("SWE:2") // Distance between out-lane-pins
PORT_DIPSETTING( 0x02, "Near" )
PORT_DIPSETTING( 0x00, "Far" )
PORT_DIPNAME( 0x0c, 0x0c, "Special" ) PORT_DIPLOCATION("SWE:3,4") // SPECIAL-stage clear bonus
PORT_DIPSE