FPGA compatible core of SNK M68000 (Ikari III based) arcade hardware for MiSTerFPGA written by [Erin 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 [Erin 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 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|