alpine9000 |
07 June 2016 02:25 |
Blocky Skies - My first Amiga game
I am getting close to finishing my first Amiga game and I thought I would post some details here for other newbies thinking of doing something similar.
TLDR - download demo from blockyskies.com. Full game/tools source code https://github.com/alpine9000/blockyskies.
@nobody came up with the idea for doing this game and he did all of the artwork. @saimon69 is the musician.
The game is 100% assembler/hardware. It is cross compiled on a mac using vasm/vlink and a handful of tools that I wrote in C to convert the graphics assets into Amiga format data.
In order to actually get something finished in a reasonable timeframe, I banned refactoring unless the frame rate fell below 50fps or the code compromised the game. This rule has resulted in some quite hard to understand routines :) but I did get something finished. In around 8 weeks of working a handful of hours a week a basic game was ready.
It uses quite a lot of the Amiga hardware features including:
- Two Independently scrolling play-fields (foreground/background).
- The copper switches screen modes mid-screen for the status/message panels.
- The copper switches palettes many times each frame.
- The blitter is used for all drawing (probably in some cases where it should not be :) ).
- Hardware sprites are used for all of the items that appear on the board. Sprites are re-used vertically (not horizontally).
- Three audio channels are used for the P61 music player, the other channel is used for sound effects.
- A hardware track loader (thanks Photon) is used to load data directly from the floppy.
The build creates both a trackloaded ADF and a Workbench launch-able executable. At the moment the trackloaded version runs with 512kb of ram and the Workbench version requires about 650kb of free chip ram.
I used FS-UAE and WINUAE extensively to debug the game. This saved me a lot of time. Learning the full power of the UAE debugger would be my #1 recommendation for anyone thinking of developing a trackloaded hardware game. My hacked version of FS-UAE makes this even easier by giving me debug symbols and command line history/completion.
The other slightly different thing I did was to use a vlink linker script to keep track of ram usage, making it very easy to know when I had blown the 512kb chip ram limit.
I found coding asm on Amiga hardware to be super fun and surprisingly painless, so I can't wait to get started on the next game.:D
|