va7deo / zerowing

Toaplan V1 system for MiSTer FPGA
GNU General Public License v2.0
46 stars 13 forks source link

Toaplan (Zero Wing) FPGA Implementation

FPGA compatible core of Toaplan Version 1 arcade hardware for MiSTerFPGA written by Darren Olafson. Based on OutZone (TP-018) schematics and verified against OutZone (TP-015 Conversion / TP-018) and Tatsujin (TP-013B).

The intent is for this core to be a 1:1 game play FPGA implementation of Toaplan V1 hardware for the supported titles. This project was developed with assistance from atrac17 and š•“š•š•’š•”š•œš•Øš•šš•Ÿš•–.

Rally Bike (TP-012), Demon's World (TP-016), Fireshark (TP-017), and Vimana (TP-019) are also Toaplan V1 titles and have separate repositories located here.

zwcore_github

Supported Titles

Title PCB
Number
Status Released
Tatsujin / Truxton TP-013B Implemented Yes
Hellfire B90 (TP-014) Implemented Yes
Zero Wing TP-015 Implemented Yes
OutZone TP-018 Implemented Yes

External Modules

Module Function Author
fx68k Motorola 68000 CPU Jorge Cwik
t80 Zilog Z80 CPU Daniel Wallner
jtopl2 Yamaha OPL2 Jose Tejada
yc_out Y/C Video Module Mike Simone
mem SDRAM Controller / Rom Downloader Josh Bassett; modified by Darren Olafson
core_template MiSTer Framework Template sorgelig; modified by Darren Olafson / atrac17

Known Issues / Tasks

PCB Check List

Clock Information

H-Sync V-Sync Source PCB
Number
15.556938kHz 55.161153Hz DSLogic + TP-018
15.556938kHz 57.612182Hz DSLogic + TP-013B
TP-014
TP-015

Crystal Oscillators

Freq (MHz) Use
10.00 M68000 CLK (10 MHz)
28.000 Z80 CLK (3.5 MHz)
YM3812 CLK (3.5 MHz)
Pixel CLK (7 MHz)

Pixel clock: 7.00 MHz

Estimated geometry:

(OutZone)

450 pixels/line  

282 lines/frame  

(Tatsujin, Hellfire, Zero Wing)

450 pixels/line  

270 lines/frame  

Main Components

Chip Function
Motorola 68000 CPU Main CPU
Zilog Z80 CPU Sound CPU
Yamaha YM3812 OPL2 Audio

Custom Components

Chip Function
NEC D65081R077 Custom Gate-Array
FCU-02 Sprite RAM
FDA MN53007T0A / TOAPLAN-02 M70H005 / GXL-02 Sprite Counter
BCU-02 Tile Map Generator

Screen Flip / Cocktail Support

Title Screen Flip Cocktail Support Implemented
Tatsujin Dipswitch Yes Yes
Hellfire Dipswitch Hellfire (1P Set)
Hellfire (1P Set, Older)
Yes
Zero Wing Dipswitch Zero Wing (1P Set) Yes
OutZone Dipswitch No Yes

Core Options / Additional Features

Scroll Debug Options

Refresh Rate Compatibility Options

Refresh Rate Timing Parameter HTOTAL VTOTAL
15.56kHz / 55.2Hz TP-018 450 282
15.56kHz / 57.6Hz TP-013B, B90, TP-015 450 270
15.73kHz / 59.8Hz NTSC 445 264

P1/P2 Input Swap Options

Audio Options

Overclock Options

Native Y/C Output ( 15kHz Displays )

H/V Adjustments ( 15kHz Displays )

Scandoubler Options ( 31kHz Displays )

Scandoubler FxScanlines 25%Scanlines 50%Scanlines 75%Scanlines 100%






# PCB Information / Control Layout | Title | Joystick | Service Menu | Dip Switches | Shared Controls | Dip Default | PCB Information | |---------------|----------|-------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------|-----------------|-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **Tatsujin** | 8-Way | [**Service Menu**](https://github.com/va7deo/zerowing/assets/32810066/3cf757be-6514-4700-a2de-9e42723c703e) | [**Dip Sheet**](https://github.com/va7deo/zerowing/assets/32810066/f4745145-a31f-4152-98e1-a6fa315051a4) | Yes | **Upright** | There are **no known** differences between regional the variants; toggling the "Game Title" to "Table" enables turn based two player gameplay versus co-operative gameplay. For further information visit the [Tatsujin](https://shmups.wiki/library/Tatsujin) shmups wikipedia.

To access the service menu, toggle the "Test Mode" dipswitch; press P1 Start when the grid is displayed. To access sound test, press P2 Start when the grid is displayed.

Toggle the "Test Mode" dipswitch to on **in-game** for "No Death". For **in-game** pause, toggle the "Dip Switch Display" dipswitch on.

When the "Game Title" dipswitch is set to "Upright", controls for both players are accessible. | | **Hellfire** | 8-Way | [**Service Menu**](https://github.com/va7deo/zerowing/assets/32810066/e262e14f-6224-487d-9fd8-c6cffdca7ffe) | [**Dip Sheet**](https://github.com/va7deo/zerowing/assets/32810066/58c7dd68-05cc-419a-a62e-258a95754679) | No | **Upright** | There are differences between regional variants; the 1P Set features **higher difficulty** and **turn-based two player** gameplay versus co-operative gameplay.

**In-game**, toggle the "No Hit" dipswitch for invulnerability. For **in-game pause**, press P2 Start, press P1 Start to resume. There is a slow motion debug setting; press P1 and P2 Start simultaneously.

These are mappable inputs. For ease of use, these features are enabled when toggling "Scroll Debug" in the core settings; there is no need to toggle the dipswitch.

The "Slow Scroll" button (P1/P2 Button 3) is not on hardware; P1 and P2 Start are merged to button 3. | | **Zero Wing** | 8-Way | [**Service Menu**](https://github.com/va7deo/zerowing/assets/32810066/f3e6d951-cd02-40fd-a6a9-17db64bf0e94) | [**Dip Sheet**](https://github.com/va7deo/zerowing/assets/32810066/6e9e51fa-c695-480f-9f60-9bc828492f26) | No | **Upright** | There are differences between regional variants; the 1P Set features **higher difficulty** and **turn-based two player** gameplay versus co-operative gameplay. For further information visit the [Zero Wing](https://shmups.wiki/library/Zero_Wing) shmups wikipedia.

**In-game**, toggle the "No Hit" dipswitch for invulnerability. For **in-game pause**, press P2 Start, press P1 Start to resume. There is a slow motion debug setting; press P1 and P2 Start simultaneously.

These are mappable inputs. For ease of use, these features are enabled when toggling "Scroll Debug" in the core settings; there is no need to toggle the dipswitch.

The "Slow Scroll" button (P1/P2 Button 3) is not on hardware; P1 and P2 Start are merged to button 3. | | **OutZone** | 8-Way | [**Service Menu**](https://github.com/va7deo/zerowing/assets/32810066/8383054b-e7d4-470a-aaef-d6bd6f9dd71c) | [**Dip Sheet**](https://github.com/va7deo/zerowing/assets/32810066/4eec59fe-fc59-42ef-9d47-f55f5428c374) | No | **Upright** | There are **minimal** differences between regional variants; other than difficulty, there is additional text in the Japanese variants. For further information visit the [OutZone](https://shmups.wiki/library/OutZone) shmups wikipedia.

For in-game pause, press P2 Start, press P1 Start to resume. There is a slow motion debug setting; press P1 and P2 Start simultaneously.

These are mappable inputs. For ease of use, these features are enabled when toggling "Scroll Debug" in the core settings; there is no need to toggle the dipswitch.

The "Slow Scroll" button (P1/P2 Button 4) is not on hardware; P1 and P2 Start are merged to button 4.

The OutZone (Older Set) [outzoneb] has a unique feature; set both "Debug" dipswitches to on and reset in the OSD. Hold P2 Down during the boot sequence. Easiest to replicate with a keyboard.

The CRTC registers are programmed for a smaller VTOTAL, enabling a higher framerate by reducing the edges of the screen.

This changes the native refresh rate of OutZone from 55.2Hz to 58.5Hz and the resolution from 240p to 224p. Apart from the PCB, this is the only known **emulation** where this is possible. |
- Upright cabinets use a **2L3B** control panel layout. Cocktail cabinets use a **2L3B** control panel layout on opposite sides of the cabinet.

- If the cabinet type is set to table, the screen inverts for cocktail mode with turned based two player gameplay.

- Push button 3 may have no function in-game, but corresponds to the hardware service menu in OutZone. The "Scroll Debug" adds a button combination and is not tied to the keyboard handler.

### Keyboard Handler
- Keyboard inputs mapped to mame defaults for Player 1 / Player 2.
| Services | Coin/Start | |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
FunctionsKeymap
TestF2
ResetF3
Service9
PauseP
|
FunctionsKeymap
P1 Start1
P2 Start2
P1 Coin5
P2 Coin6
| | Player 1 | Player 2 | |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
FunctionsKeymap
P1 UpUp
P1 DownDown
P1 LeftLeft
P1 RightRight
P1 Bttn 1L-CTRL
P1 Bttn 2L-ALT
P1 Bttn 3Space
|
FunctionsKeymap
P2 UpR
P2 DownF
P2 LeftD
P2 RightG
P2 Bttn 1A
P2 Bttn 2S
P2 Bttn 3Q
| # Acknowledgments Special thanks to the following loaned hardware used during development of this project:
[**@owlnonymous**](https://twitter.com/owlnonymous) for loaning OutZone (TP-015 Conversion)
[**@cathoderaze**](https://twitter.com/cathoderaze) for loaning Tatsujin (TP-013B)
[**@90s_cyber_thriller**](https://www.instagram.com/90s_cyber_thriller/) for loaning Outzone (TP-018)
# Support Please consider showing support for this and future projects via [**Darren's Ko-fi**](https://ko-fi.com/darreno) and [**atrac17's Patreon**](https://www.patreon.com/atrac17). While it isn't necessary, it's greatly appreciated.
# Licensing Contact the author for special licensing needs. Otherwise follow the GPLv2 license attached.