UPDATE: The AGA version is available now ... https://neilericson.itch.io/starwinder-amiga
Starwinder: My old Amiga shooter comes home. Free AGA version (A1200 / A4000 / CD32) out Nov 24, with the OCS/ECS version (A500 / A600 / A2000 / A3000) *hopefully* alongside it. I'm still trying to get the 12.5 Hz steady on it (AGA is 25Hz) without dropping anything or changing gameplay (logic runs at full speed.. only picture may slow down). Hopefully I'll get it done in time. Hand optimizing is time consuming (but interesting.. I love 68k assembly.) When it's overloaded, drawing is cut by a deadline in the pass. Effects go first; the ship, enemies, shots and pickups are never cut. Even so, the heaviest ACE and co-op moments still dip below 12.5 Hz. I'm investigating further speed-up of the per-player code.
Starwinder started life on the Amiga back in the day. It's since grown into a modern PC shoot 'em up (on Steam Nov 24), and now it's coming back to the Amiga in two versions, both free on itch.io (pay what you like).
AGA: A1200 / A4000 / CD32 (ready)
- Runs on a stock A1200: 2 MB chip, no fast RAM needed. Steady (mostly) 25 Hz, with dips on the final boss with weapon 4, leeches and power shots about 2% of the time.. I did that instead of reducing or changing the gameplay (no less objects on screen, etc.)
- 14 worlds, 14 mini bosses plus a final boss, and 16 original ProTracker-style tunes playing on Paula alongside the sound effects
- 1 or 2 players (taking turns or co-op), Boss Rush, Practice, achievements, a high-score table
- Three releases:
- 9 standard ADFs: work with Gotek / FlashFloppy and the A500 Mini (.m3u included)
- A hard-drive installer: Kickstart 3.0+; the game reads the internal IDE itself
- A CD32 ISO: saves to NVRAM
OCS/ECS: A500 / A600 / A2000 / A3000 (in the works, aiming for the same day)
- The same game, same rules: not a cut-down spin-off
- Needs 1 MB (an A500 with a 512K expansion is enough)
- Fewer colors than the AGA version, same worlds and bosses
Bare metal: all assembler, with its own trackloader, drive and CD code. No OS once it's running.
Footage captured in WinUAE on a stock A1200.
Testing note: so far it's the AGA version I've tested most, as I test-compare it to the PC, then I compare the OCS/ECS version to the AGA version, but less often. If you try it on your Amiga (or emulator) and have any issues, please let me know!
Technical details, for the curious
The screen
- Resolution: PAL lores, 320x256: a 320x208 playfield plus a 48-line panel, in 256 colors (8 bitplanes, FMODE 3)
- The palette is split four ways: 64 colors for the ground, 160 for the objects, 16 for the sprite layer and 16 for the panel
- No tiles: each world's ground is one tall painted bitmap (World 1 is 320x2806). It's packed with a custom 2-D pixel coder (a context model with ANS entropy coding), streamed off the disk during play and unpacked into a ring buffer just ahead of the scroll.
- Two screens: double-buffered, 448 pixels wide with hidden margins so things can fly off the sides. The copper handles the buffer wrap and the split to the panel.
Objects
- Ship, enemies, bosses and explosions are 8-plane BOBs, one cookie-cut blit each. An interrupt-driven blit queue keeps the blitter busy while the CPU runs the game logic.
- All the bullets (enemy shots, your shots, beams, sparks) live in a separate layer made of hardware sprites. Sprites 0-4 are 64 pixels wide each, side by side, forming a full-width 3-colour overlay in front of everything, which the CPU draws into. That's how it carries a screen full of bullets without the blitter.
- The mini bosses are animated from drawn frames, blitted a plane at a time straight from memory. The final boss bends its 13 legs, and its hitboxes follow them.
Speed
- Frame rate: a steady 25 fps on a stock A1200. The game logic runs at the PC version's rates in fixed point (60 Hz for the ship, 30 Hz for everything else), so the game never slows down. In a very heavy moment a picture is shown one frame longer, but the logic catches up.
- CPU: everything is 68020 specific assembler. On a stock machine the chip bus is the real limit, since the CPU and the blitter share it.
Sound
- The music is a ProTracker-style player on a CIA timer. The 16 tunes were written for the Amiga version.
- "3+1": the song plays on all four Paula channels. One sound effect at a time borrows a channel. A new effect takes the other side from the last one, alternating left and right, while the same effect restarting stays where it is. The borrowed voice picks the song back up at exactly the right spot, and every song doubles its melody across both of those channels, so no part is ever lost. Drums are on one channel, bass on another, and the melody plays on both channels an effect can borrow.
Loading: no OS anywhere
- Floppy: 9 standard AmigaDOS-format ADFs, read by its own trackloader (a whole track per DMA, sectors decoded in whatever order they arrive).
- It uses DF0-DF3 and only asks for a disk when no drive has it.
- The title screen loads first (about 10 s after the bootblock), and the first world loads behind it.
- A bad track gets retried and you get a DISK ERROR message instead of a crash.
- Hard drive: the AGA installer runs on Workbench 3.0+ and copies the floppies into one data file. The game then reads that file with its own A1200/A4000 IDE driver and saves your scores into it. Other controllers get an OS-swap loader. It runs on 68030/040/060/080(? maybe) too.
- CD32: reads the disc through Akiko itself, saves to NVRAM and supports the CD32 pad.
- Memory: everything fits in 2 MB of chip RAM. Fast RAM or a faster CPU changes nothing: it's the same game on every AGA machine.
Content: 14 worlds, 40 enemy AI types, 96 enemy attack patterns, 14 mini bosses with their own signature moves, and a three-phase final boss. Two players can take turns or play co-op.
A few notes:
- No exact code size: the last figure I have is (about 87 K) is from before the 14 worlds went in.
- ECS details kept out on purpose: its engine isn't finished - the AGA version is optimized for 68020 code, so have to reoptimize for the 68000, so a number given today could change by the 24th. If you want a line, the safe version is: "The OCS/ECS version is a separate engine for a 7 MHz 68000 with 1 MB: fewer colors, the same game logic."
Only the hard-drive install ever needs AmigaOS or extra RAM. The floppies and the CD32 never do.
Version: Floppy (9 ADFs)
AmigaOS: Never. The Kickstart only loads the bootblock, then the game takes over the machine.
Extra RAM required: None: Works on a stock 2 MB AGA machine
────────────────────────────────────────
Version: CD32 ISO
AmigaOS: Never. The CD32's ROM boots the disc, then the game reads the CD itself through Akiko.
Extra RAM required: None
────────────────────────────────────────
Version: Hard drive, on the internal IDE port, FFS partition (A1200 / A4000)
AmigaOS: Only for the installer and the launcher: Workbench / Kickstart 3.0 or newer. The game itself
then reads its data file with its own IDE driver; no OS used during gameplay.
Extra RAM required: None
────────────────────────────────────────
Version: Hard drive, anything else (SCSI, an accelerator card's IDE, PFS / SFS or another filesystem)
AmigaOS: The installer and launcher as above, plus the 'OS-swap loader': AmigaOS is parked in fast RAM
while you play and brought back only to load a world and to save the scores.
Extra RAM REQUIRED: About 3.2 MB of free fast RAM (more with Workbench open). The installer says how much it
needs before it copies anything.
Other things to know:
- Disk space: the hard-drive install needs about 8 MB free (the data file is about 7-ish MB).
- How the installer decides: it checks whether the drawer you pick is on FFS on the internal IDE port by actually reading it back through the game's own IDE code. So an unusual setup (an IDE adapter with a different numbering, a translated geometry) safely falls back to the OS swap rather than failing.
- No way back to Workbench: once the game is running you leave by resetting, in all versions.
To Sum Up Minimum Requirements:
- Amiga AGA Floppy and CD32: a stock AGA machine (A1200, A4000 or CD32, 2 MB chip). No OS, no fast RAM.
- Hard drive on an AGA A1200/A4000 internal IDE (FFS partition): Workbench 3.0+ to install and launch. The game then reads the drive itself, so it still runs on a stock 2 MB machine.
- Any other drive or filesystem (SCSI, accelerator IDE, PFS/SFS...): it parks AmigaOS in fast RAM while you play and brings it back only to load and save. That needs about 3.2 MB of free fast RAM; the installer tells you up front.
- Disk space: about 8 MB for the hard-drive install.
AI usage:
- I made the graphics myself, then had them 'polished' with AI (ComfyUI), then hand-tweaked them. this process was repeated multiple times until I got the look I wanted for everything.
- The music and sound effects was also me but also AI fixing things to make them actually sound good ;) then me tweaking them again over and over
- Code was me on the Amiga, then me in C/SDL3 with Claude helping me port to the PC, then continuing on between both of them (PC/Steam and Amiga), trying to keep everything in sync and playing the same. No C++ or OO for me ;)
- NOTE: A big thanx to Petri Häkkinen, the maker of the AWESOME game Legend of Grimrock for the great advice to use ansi C, never C++/OO as it slows everything down and increases complexity for zero good reason. I agree 100000%
- Also, I use Claude for playtesting, finding bugs and optimization help and profiling where I can optimize best. Honestly, without his help I couldn't have done this. At least it would have taken longer (and it's already been a long time ;) If you don't like the game because AI helped, sorry but it really did help me. Like figuring out how to get the game working with the CD32 working properly, etc. was super helpful!
Any comments, questions or bug reports, please let me know.
Also, if anyone has any other Amiga configurations not listed here, could you try it and see if it works correctly and let me know? If you've got enough RAM I'm fairly certain it can be made to work on it :)
Neil