FPGA compatible core of SNK M68000 (Ikari III based) arcade hardware for MiSTerFPGA written by Darren Olafson. FPGA implementation has been verified against schematics for Ikari III (A7007). PCB measurements taken from Datsugoku: Prisoners of War (A7008), Street Smart (A8007), and Ikari III: The Rescue (A7007).
Ikari III PCB donated by atrac17 / DJ Hard Rich and verified by Darren Olafson. Other SNK68K PCB verification done by atrac17. The intent is for this core to be a 1:1 playable implementation of SNK M68000 (Ikari III) arcade hardware. Currently in beta state, this core is in active development with assistance from atrac17.
Title | PCB Number |
Status | Released | ROM Set |
---|---|---|---|---|
脱獄: Prisoners of War P.O.W.: Prisoners of War |
A7008 | Implemented | Yes | .245 merged |
怒III Ikari III: The Rescue |
A7007 | Implemented | Yes | .245 merged |
Street Smart | A7008 / A8007 | Implemented | Yes | .245 merged |
SAR: Search and Rescue | A8007 | Implemented | Yes | .245 merged |
Name | Purpose | Author |
---|---|---|
fx68k | Motorola 68000 CPU | Jorge Cwik |
t80 | Zilog Z80 CPU | Daniel Wallner |
jtopl2 | Yamaha OPL 2 | Jose Tejada |
jt7759 | NEC uPD7759 | Jose Tejada |
yc_out | Y/C Video Module | Mike Simone |
- GFX toggles for sprite layers [Task - Low Priority]
Measure full timings from PCB(s) for analog output[Task - Low Priority]- Minor screen tearing present in Ikari III, sprites updating midscreen / check int and memory access [Issue]
Correct colour palette in P.O.W. - Prisoners of War (US Version 1); dependent on sprite location / action[Issue]Correct text layer in 脱獄 / P.O.W. - Prisoners of War (US Version 1, Mask ROM Sprites)[Issue]Correct missing pixels during scrolling transitions for 脱獄 / P.O.W. - Prisoners of War (US Version 1, Mask ROM Sprites)[Issue]Audio issues known, may be an issue with the jtopl2 core or the current usage[Issue]
FPGA implementation has been verified against schematics schematics for Ikari III. PCB measurements taken from Datsugoku: Prisoners of War (A7008), Street Smart (A8007), and Ikari III: The Resucue (A7007).
H-Sync | V-Sync | Source | PCB Number |
---|---|---|---|
15.625kHz | 59.185606Hz | DSLogic+ | A7008 (P.O.W.) |
15.625kHz | 59.185606Hz | ADALM2000 | A7007 (IK3) |
15.625kHz | 59.185606Hz | DSLogic+ | A8007 (SS) |
Location | PCB Number |
Freq (MHz) | Use |
---|---|---|---|
X-4 (4MHZ) | A7008 (P.O.W.) / A8007 (SS) | 4.000 | Z80 / YM3812 / uPD7759 |
X-2 (18MHZ) | A7008 (P.O.W.) / A8007 (SS) | 18.000 | M68000 |
X-1 (24MHz) | A7008 (P.O.W.) / A8007 (SS) | 24.000 | Video / Pixel Clock |
Location | PCB Number |
Freq (MHz) | Use |
---|---|---|---|
F-18 (4MHZ) | A7007 (IK3) / A8007 (SAR) | 4.000 | Z80 / YM3812 / uPD7759 |
H-17 (18MHZ) | A7007 (IK3) / A8007 (SAR) | 18.000 | M68000 |
E-9 (24MHz) | A7007 (IK3) / A8007 (SAR) | 24.000 | Video / Pixel Clock |
Pixel clock: 6.00 MHz
Estimated geometry:
383 pixels/line
263 pixels/line
Location | PCB Number |
Chip | Use |
---|---|---|---|
68000 | A7008 (P.O.W.) / A8007 (SS) | Motorola 68000 CPU | Main CPU |
Z-80A | A7008 (P.O.W.) / A8007 (SS) | Zilog Z80 CPU | Sound CPU |
YM3812 | A7008 (P.O.W.) / A8007 (SS) | Yamaha YM3812 | OPL2 |
7759 | A7008 (P.O.W.) / A8007 (SS) | NEC uPD7759 | ADPCM Decoder |
Location | PCB Number |
Chip | Use |
---|---|---|---|
H-11/12 | A7007 (IK3) / A8007 (SAR) | Motorola 68000 CPU | Main CPU |
Z80 | A7007 (IK3) / A8007 (SAR) | Zilog Z80 CPU | Sound CPU |
YM3812 | A7007 (IK3) / A8007 (SAR) | Yamaha YM3812 | OPL2 |
C-18 | A7007 (IK3) / A8007 (SAR) | NEC uPD7759 | ADPCM Decoder |
Location | PCB Number |
Chip | Use |
---|---|---|---|
SNKCLK | A7007 (IK3) / A8007 (SAR) | SNK CLK | Counter |
SNKI/O | A7007 (IK3) / A8007 (SAR) | SNK I/O | Rotary |
- Rotary control is supported via gamepad or firmware written by atrac17 / DJ Hard Rich for LS-30 functionality using an RP2040. Latency verification done by misteraddons, for more information click here.
Model | Device | Connection | USB Polling Interval |
Sample Number |
Frame Probability |
Average Latency |
Joystick ID |
---|---|---|---|---|---|---|---|
LS-30 Rotary Encoder | RP2040 | Wired USB | 1ms | 2241 | 95.52% | 0.747 ms | 2e8a:000a |
- Native Y/C ouput is possible with the analog I/O rev 6.1 pcb. Using the following cables, HD-15 to BNC cable will transmit Y/C over the green and red lines. Choose an appropriate adapter to feed Y/C (S-Video) to your display.
- There are two H/V toggles, H/V-sync positioning adjust and H/V-sync width adjust. Positioning will move the display for centering on CRT display. The sync width adjust can be used to for sync issues (rolling) without modifying the video timings.
- Additional toggle to enable the scandoubler without changing ini settings and new scanline option for 100% is available, this draws a black line every other frame. Below is an example.
Scandoubler Fx | Scanlines 25% | Scanlines 50% | Scanlines 75% | Scanlines 100% |
---|---|---|---|---|
- Service menu is accessed by holding the F2 key on boot. Service dip is functional for Ikari III. P.O.W. and SAR: Search and Rescue require holding the F2 key on boot. Street Smarts requires the service dip to be toggled before resetting the core and holding F2.
Game | Joystick | Service Menu | Control Type |
---|---|---|---|
P.O.W. | 8-Way | Co-Op | |
Street Smart | 8-Way | Co-Op | |
Ikari III | 8-Way or Rotary | Co-Op | |
SAR | 8-Way or Rotary | Co-Op |
- Rotary control is supported via gamepad or firmware written by atrac17 / DJ Hard Rich for LS-30 functionality using an RP2040. There are toggles in the OSD under Debug Settings to select the rotary controller type per player.
When using a gamepad, enabling autofire and setting to 160ms for Rotate CW/CCW in the MiSTer framework allows for smooth rotation; adjust the rate to fit your preference. LS-30 firmware requires no mapping and is plug and play; it is player dependent and connected over USB to the DE10-Nano.
- Keyboard inputs mapped to mame defaults for the following functions.
Services | Coin/Start | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Player 1 | Player 2 | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Debug | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
- Custom keyboard inputs mapped for LS-30 RP2040 firmware functionality. The mapping is player dependent for the RP2040 firmware.
LS-30 Player 1 | LS-30 Player 2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Please consider showing support for this and future projects via Darren's Ko-fi and atrac17's Patreon. While it isn't necessary, it's greatly appreciated.
Contact the author for special licensing needs. Otherwise follow the GPLv2 license attached.