Releases: plasticbugs/analogue-pocket-stunrunner
Release list
0.2.1
S.T.U.N. Runner for the Analogue Pocket, 0.2.1.
Fixes since 0.2.0, all confirmed on hardware:
- Level-end tally screen: the score text no longer shimmers or loses pixels while the repair arms animate. Short blits (font glyphs, polygon spans, small fills) now complete atomically before a pending display interrupt is taken, which is the order the original code assumes; a long blit still yields early enough for the buffer flip.
- Level-end tally screen: the picture no longer bounces down for a frame. When the flip lands after the top of the picture, behind the tally-box copy, the display continues at the right rows instead of restarting from the top.
- Blit row fast path: 8-bit copy and fill rows go through the SDRAM burst port (about 2 clocks a word instead of 50), with transparency handled by per-byte write enables.
- Smaller fit: 16,568 of 18,480 ALMs, all timing corners met.
Install: copy Cores/, Platforms/ and Assets/ from the zip onto the SD card root, then build the ROM image from your own stunrun romset with python3 mra_build.py stunrun.mra stunrun.zip and place it at Assets/stunrun/common/stunrun.rom (instructions are also in the zip). No ROMs are included.
Verification details and the mechanisms behind each fix are in docs/verification.md.
S.T.U.N. Runner for Analogue Pocket 0.2.0
S.T.U.N. Runner for Analogue Pocket 0.2.0
The 3D scenes now render at the arcade's 20 frames per second (0.1.x ran them at 15), and the boot and attract sequence runs within 18 frames of MAME's timeline instead of about 150.
The cause of both was one piece of the graphics processor's memory glue: the TMS34010 clears the screen with VRAM shift-register row transfers, and the core moved each row through SDRAM a word at a time, freezing the graphics processor for most of every fourth frame. Rows now go through SDRAM burst writes, copying the source row's current contents exactly as MAME does.
Also in this release (from 0.1.0): GSP host-port accesses are served between the chip's memory cycles (the attract demo's starfield band), and the 68k's sound commands are paced past the 6502's NMI dead spot (the mid-level sound drone).
Installing
-
Copy
Cores/,Platforms/andAssets/from the zip onto the root of the Pocket's SD card. -
Build the ROM image from your own MAME
stunrunromset and copy it toAssets/stunrun/common/stunrun.rom:python3 mra_build.py stunrun.mra stunrun.zip
Python 3 only; the script checks every ROM's CRC32 and the finished image's md5.
Assets/stunrun/common/README.txton the card explains the same steps. No ROMs are included.
Controls
D-pad or left stick: steer and pitch (the yoke; a centred yoke is the arcade's "lowered" position). A / X / R: fire. B / Y / L: boost. Select: coin. Start: start.
Known differences from the arcade
- For a few seconds while the core loads, before the game clears its frame buffer, the picture shows whatever the previous core left in memory.
S.T.U.N. Runner for Analogue Pocket 0.1.1
S.T.U.N. Runner for Analogue Pocket 0.1.1
Same core as 0.1.0 (the bitstream is byte-identical); this release only adds the platform artwork the Pocket shows in its platform list (Platforms/_images/stunrun.bin).
Installing, ROM building and known differences are as in 0.1.0: copy Cores/, Platforms/ and Assets/ to the SD card root, build stunrun.rom from your own MAME stunrun romset with python3 mra_build.py stunrun.mra stunrun.zip, and place it in Assets/stunrun/common/ (the README.txt there explains it). No ROMs are included.
S.T.U.N. Runner for Analogue Pocket 0.1.0
S.T.U.N. Runner for Analogue Pocket 0.1.0
First release that plays: boot, the attract sequence with its 3D demo, coin and Start, level select, and gameplay with sound.
An openFPGA reimplementation of Atari's Hard Drivin' "multisync" hardware: 68010 main board, TMS34010 graphics processor, ADSP-2100 DSP, JSA II sound board (6502, YM2151, OKI6295). All gateware, verified against MAME as the oracle (see docs/verification.md in the repository).
Installing
-
Copy
Cores/,Platforms/andAssets/from the zip onto the root of the Pocket's SD card. -
Build the ROM image from your own MAME
stunrunromset and copy it toAssets/stunrun/common/stunrun.rom:python3 mra_build.py stunrun.mra stunrun.zip
Python 3 only; the script checks every ROM's CRC32 and the finished image's md5.
Assets/stunrun/common/README.txton the card explains the same steps. No ROMs are included.
Controls
D-pad or left stick: steer and pitch (the yoke; a centred yoke is the arcade's "lowered" position). A / X / R: fire. B / Y / L: boost. Select: coin. Start: start.
Known differences from the arcade
- The 3D scenes render at 15 frames per second where the arcade does 20; game speed and logic are unaffected.
- The attract sequence runs about 2.5 seconds behind MAME's timeline.
- For a few seconds while the core loads, before the game clears its frame buffer, the picture shows whatever the previous core left in memory.
Fixed since the earlier test builds
- Mid-level sound drone: the 68k's sound commands are paced past the 6502's one-cycle NMI dead spot (the command latch no longer sticks full).
- Attract-demo band of title-screen pixels: the GSP now serves host-port accesses between its memory cycles, so the starfield backdrop is painted in time.
- Half-width picture, level-select flicker, steering polarity, D-pad ramp (from the earlier builds).