/alpha68k

alpha denshi 68k

Primary LanguageVerilogGNU General Public License v2.0GPL-2.0

Alpha Denshi M68000 FPGA Implementation

FPGA compatible core of Alpha Denshi M68000 (ALPHA68K96V based) arcade hardware for MiSTerFPGA written by Darren Olafson.

FPGA implementation has been verified against schematics for Sky Adventure. PCB measurements taken from Gang Wars (ALPHA-68K96V) and Sky Soldiers (ALPHA-96KII).

Sky Adventure (bootleg) PCB purchased by Darren Olafson / atrac17. Gang Wars, Sky Soldiers, and The Next Space (authentic) PCBs purchased by atrac17.

The intent is for this core to be a 1:1 playable implementation of Alpha Denshi M68000 arcade hardware. Currently in beta state, this core is in active development with assistance from atrac17.


Supported Games

Title PCB
Number
Status Released ROM Set
Gang Wars ALPHA-68K96V (GW) Implemented Yes .249 merged set
Super Champion Baseball ALPHA-68K96V (GW) Implemented Yes .249 (sbasebalj only)
Sky Adventure ALPHA-68K96V (GW) Implemented Yes .249 merged set
バトル フィールド
Time Soldiers
ALPHA-68K96II (SS) Implemented Yes .249 merged set
Sky Soldiers ALPHA-68K96II (SS) Implemented Yes .249 merged set
Gold Medalist ALPHA-68K96II (SS) Implemented No .249 (goldmedl only)
Paddle Mania ALPHA-68K96I W.I.P No N/A
The Next Space A8004-1 Separate
Repository
No N/A
Super Stingray N/A W.I.P No N/A
Kyros no Yakata N/A W.I.P No N/A
Mahjong Block Jongbou ALPHA-68K96N W.I.P No N/A

External Modules

Name Purpose Author
fx68k Motorola 68000 CPU Jorge Cwik
t80 Zilog Z80 CPU Daniel Wallner
jt2413 Yamaha OPL-L Jose Tejada
jt03 Yamaha OPN Jose Tejada
yc_out Y/C Video Module Mike Simone

Known Issues / Tasks

  • Dump M68705 (SP85N / ALPHA-8511 ) MCU from Sky Adventure (Bootleg) [Task]
  • Dump ROMs from Sky Adventure Bootleg and submit to mamedev [Task]
  • Dump ROMs from Gold Medalist and submit to mamedev [Task]
  • Add P3/P4 inputs for Gold Medalist [Task]
  • Add rotary input for Time Soldiers [Task]
  • GFX decode and palette display for ALPHA-68K96II [Task]
  • Verify clocks on ALPHA-68K96II hardware; MAME is incorrect [Task]

  • Options removed currently until stability is checked, may be tied to RESET line [Issue]
  • Super Champion Baseball (sbasebal) freezes due to MCU ROM code (no dump) [Issue]
  • Awaiting Gold Medalist PCB to verify and release; submit new ROM dump for bad ROMs [Issue]

PCB Check List


FPGA implementation has been verified against schematics for Sky Adventure. The schematics are improperly labeled Prehistoric Isle (hand written), this was discovered during development of the Prehistoric Isle FPGA implementation. PCB measurements taken from Gang Wars (ALPHA-68K96V) and Sky Adventure (ALPHA-68K96II).

Clock Information

H-Sync V-Sync Source PCB
Number
15.625kHz 59.185606Hz DSLogic+ ALPHA-68K96V (GW)
15.625kHz 59.185606Hz DSLogic+ ALPHA-68K96II (SS)

Crystal Oscillators

  • MAME documentation for the Alpha96k.cpp states that ALPHA-68K96II hardware runs the M68000 at 8.00 MHZ. The actual frequency for the M68000 is 9.00 MHZ based on board readings from Sky Soldier.
Location PCB
Number
Freq (MHz) Use
X-1 (24 MHZ) ALPHA-68K96V (GW) 24.000 Z80 CLK (6MHZ)

YM2203 (CLK 3 MHZ)

Sprite CLK (12 MHZ)

Pixel CLK (6 MHZ)
X-2 (20 MHZ) ALPHA-68K96V (GW) 20.000 M68000 CLK (10 MHZ)
X-3 (3.579545 MHz) ALPHA-68K96V (GW) 3.579545 YM2413 CLK (3.579545 MHz)
X-1 (3.579545 MHz) ALPHA-68K96II (SS) 24.000 YM2413 CLK (3.579545 MHz)
X-2 (18 MHZ) ALPHA-68K96II (SS) 18.000 M68000 CLK (9 MHZ)
X-3 (24 MHZ) ALPHA-68K96II (SS) 3.579545 Z80 CLK (6MHZ)

YM2203 (CLK 3 MHZ)

Sprite CLK (12 MHZ)

Pixel CLK (6 MHZ)

Pixel clock: 6.00 MHz

Estimated geometry:

383 pixels/line

263 pixels/line

Main Components

Location PCB
Number
Chip Use
68000D ALPHA-68K96V (GW) Motorola 68000 CPU Main CPU
Z80B ALPHA-68K96V (GW) Zilog Z80 CPU Sound CPU
YM2203 ALPHA-68K96V (GW) Yamaha YM2203 OPN
YM2413 ALPHA-68K96V (GW) Yamaha YM2413 OPL-L
Location PCB
Number
Chip Use
68000-10 ALPHA-68K96II (SS) Motorola 68000 CPU Main CPU
Z80B ALPHA-68K96II (SS) Zilog Z80 CPU Sound CPU
YM2203 ALPHA-68K96II (SS) Yamaha YM2203 OPN
YM2413 ALPHA-68K96II (SS) Yamaha YM2413 OPL-L

Custom Components

Location PCB
Number
Chip Use
SP85

ALPHA-8511

ALPHA-8411
ALPHA-68K96V (GW)

ALPHA-68K96II (SS)

ALPHA-68K96V (SA)
SP85N Coin Handling

Dipswitch Handling

Screen Inversion Handling
SNKCLK ALPHA-68K96V (GW) SNK CLK Counter
INPUT 84 ALPHA-68K96II ALPHA-INPUT 84 Rotary Handling
INPUT 87 ALPHA-68K96V (GW) ALPHA-INPUT 87 Input Handling
ALPHA-8921 ALPHA-68K96V (GW) ALPHA-8921 GFX Muxing

SP85 / ALPHA-8511 / ALPHA-8411 Handling

The SP85N or ALPHA-8511/8411 utilized on Alpha Denshi M68000 hardware for I/O handling appears to be closely related to the Motorola M68705p5. Early Alpha Denshi M68000 hardware utilized the M68705 before SNK / Alpha Denshi moved to a custom component. It's possible this is a rebadged custom.

There is a known dump for the ALPHA-8511 (possibly a M68705 from a bootleg) used on Super Stingray and a dump of the M68705 used on the Kyros no Yakata bootleg. The program code from the Kyros no Yakata bootleg may match the original ALPHA-8511 program code according to mame documentation.

The Sky Adventure bootleg purchased also uses a M68705p5 which is dumpable and will be submitted to mame along with the ROMs. Disassembly of the program code will be done for analysis based on current MCU implementation.

Readings have been pulled from the Gang Wars SP85N revealed that the MCU pushes 15 interrupts per second, mame's driver for Alpha68k has this coded as 100 or 120 interrupts per second.

Core Features

Rotary Joystick Support


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 Output

H/V Adjustments

  • 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.

Scandoubler Options

  • 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 FxScanlines 25%Scanlines 50%Scanlines 75%Scanlines 100%





Gang Wars Options

  • There is a toggle to swap inputs from Player 1 to Player 2 in Debug Settings. This will enable you to play as Jackie in Gang Wars instead of Mike while only having one controller connected. Additionally, you can play as the additional time soldier in バトル フィールド / Time Soldiers. This only swaps inputs for the joystick and rotary control, it does not effect keyboard inputs.

  • There is a toggle to disable the laughter from enemies in Gang Wars located in Debug Settings. Enabling this will mute the laughter when an enemy knocks Mike or Jackie down.

Controls


  • Service menu is accessed by holding the F2 key on boot. The core may need to be reset by pressing F3 while holding F2 to access the service menu.

GameJoystickService MenuControl Type

Gang Wars

8-Way


Co-Op

Super Champion
Baseball

8-Way


Co-Op

Sky Adventure

8-Way


Co-Op

Time Soldiers

Rotary


Co-Op

Sky Soldiers

8-Way


Co-Op

Gold Medalist

N/A


V.S.



Rotary Joystick Support

  • 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 Handler

  • Keyboard inputs mapped to mame defaults for the following functions. Player 3 and Player 4 input keys are not mapped, only Player 3 / Player 4 start buttons.

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
Player 3 Player 4
FunctionsKeymap
P3 Bttn 1N/A
P3 Bttn 2N/A
P3 Bttn 3N/A
P3 Start3
FunctionsKeymap
P4 Bttn 1N/A
P4 Bttn 2N/A
P4 Bttn 3N/A
P4 Start4

  • 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
FunctionsKeymap
P1 Rotary 1Y
P1 Rotary 2U
P1 Rotary 3I
P1 Rotary 4O
P1 Rotary 5H
P1 Rotary 6J
P1 Rotary 7K
P1 Rotary 8L
P1 Rotary 9N
P1 Rotary 10M
P1 Rotary 11,
P1 Rotary 12.
FunctionsKeymap
P2 Rotary 1Z
P2 Rotary 2X
P2 Rotary 3C
P2 Rotary 4V
P2 Rotary 5B
P2 Rotary 6W
P2 Rotary 7E
P2 Rotary 8T
P2 Rotary 93
P2 Rotary 104
P2 Rotary 117
P2 Rotary 128

Support

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.

Licensing

Contact the author for special licensing needs. Otherwise follow the GPLv2 license attached.