Galaxian DX (C64)
About
- The aim is to clear each swarm of aliens while maximising your score, dodging bombs and diving enemies in order to stay alive. You can only fire one bullet at a time so make them count, if you miss you'll have to wait until the bullet leaves the top of the screen to fire again.
- Joystick in Port 2. On web version above, left/right arrows to move, Z to fire.
- Player 2 uses Joystick in Port 1. Two player not supported on web version.
--------------------------------------------------------
Swarm
- The swarm moves from side to side, shooting enemies in formation is the easiest way to clear enemies but also scores a lot less points than hitting a diving enemy. Unlike Galaga, the swarm is able to sense incoming shots that they would otherwise move into and stop until they have passed.
- As time goes on and the swarm is cleared, the enemies will dive at a faster rate and more will attack at once. When a stage is completed the next stage will begin with a faster diving rate and higher number of simultaneous attacks/bombs than the last.
---------------------------------------------------------------------
- Blue enemies move the slowest and have less sweeping movements making them easily avoidable, but are nonetheless dangerous when attacking in groups or if you get trapped on one side of the screen. Enemies from the middle row move slightly quicker.
- Purple enemies move the fastest and have wide, sweeping movements, allowing them to target you from the opposite side of the screen.
- Red enemies will generally attack alongside a flagship, mimicking the flagship's movements and protecting it. However when they attack on their own their speed is faster than blue but slower than purple.
---------------------------------------------------------------------
- The yellow flagships are the key to both scoring large amounts of points, and to calming the swarm. As time passes and more enemies are killed, enemies attack in greater numbers and can drop more bombs. However, killing a flagship calms the swarm for a period, allowing you to pick them off in formation while they recover.
- To score maximum points from a flagship you must take out the red escort aliens first, and then the flagship. Taking out two escorts then the flagship will net 800 points, a large amount in a low-scoring and tricky game like Galaxian. However depending on their angle of attack it might be wise to allow the flagship and convoy to pass and wait for a better opportunity.
- Aliens that fly past you off the bottom of the screen (or abandon their attack off the side of the screen) will rejoin the swarm from the top. However an unaccompanied flagship will leave the stage and fill a gap in the top row on the next, meaning there could be up to four flagships at the start of a stage.
---------------------------------------------------------------------
- When the swarm is almost clear they will switch to ultra-aggressive mode and continually attack with erratic movements and loop-the-loops.
---------------------------------------------------------------------
- In two-player mode you play at the same time, sharing the three lives. You both work as a team to clear the level while competing for points. The last life can only be lost by the player who is losing at the time.
---------------------------------------------------------------------
Speedrun- Attempt to clear the first stage in the fastest time possible. Current record is 50.22 seconds by Eric Akeson.
---------------------------------------------------------------------
DevelopmentAfter finishing Galaga I intended to work on Robotron 2064 and Funfair Inc, however a post on the C64 Facebook group about Galaxian got me thinking whether it would be easy to convert Galaga to play like its older brother and improve on the existing, jerky character-based Atarisoft port.
It took just a couple of hours to getting it looking like Galaxian, but in playing the arcade version I realised the enemy movement is very different to Galaga. They have smooth sweeping movements that gradually change speed and direction, and are slightly different with each attack. The only way I could see to reproduce this authentically was to port the arcade code for enemy movements and timings directly.
Fortunately there is an excellent reverse-engineered disassembly of the Z80 arcade code by Scott Tunstall to work from. I don't much Z80 but I was able to learn just enough to convert it to 6502 for the C64. The algorithm that controls the main enemy attacks is a short but ingenious routine that Scott himself admits to not fully understanding (neither do I), but it results in varied and smooth attacks. In order for the PAL version to run at the same speed, parts of the game loop run at 60fps.
I also thought that as the formation does not spread out in Galaga, it might be possible to move them smoothly across the screen instead of in 8-pixel chunks. It turned out it was but it's pretty expensive in terms of CPU time, therefore the NTSC version will have a greatly reduced starfield to free up cycles.
With the skeleton code from Galaga to build around it's taken only two weeks to go from concept to the first release version, including several improvements borrowed from Galaga such as a high-score table, shot stats and the 2-player co-op mode.
With the help of testers Jay Bell, Eric Akeson and Stepz, I think we've got something that is pretty close to the arcade experience, arguably even more so than Galaga. I hadn't played much of Galaxian before the project but have really come to appreciate it. It's certainly a much harder game and requires patience, learning the right moments to attack or stay away from trouble.
Obviously this game is available for free, but if you want to support my C64 development in general you can name your own price for my game Oyup!
---------------------------------------------------------------------
- Sprites are being displayed in the top and bottom borders to give the same playable vertical space as the arcade. However this means enemies leaving the screen will pop out rather than fade smoothly once their Y position wraps around to 0.
- A sprite multiplexor is used to display a larger number of diving enemies and bombs. On occasion there will be unavoidable flicker when a large amount are within a small area on screen.
- The smooth swarm movement takes up a lot more CPU cycles than Galaga, therefore on NTSC there may be more sprite flicker, as well as fewer stars that will only be animated on a frame if there are cycles available to do so.
- C64 multicolour characters and sprites are limited to 'double-wide' horizontal pixels, and three of the four sprite colours must be shared between all, therefore it is not possible to achieve the same sprite detail as the arcade or some other ports. I chose to go for colourful, chunky sprites rather than hi-res in a single colour.
---------------------------------------------------------------------
- Jay Bell
- Eric Akeson
- Stepz
Arcade Z80 commented disassembly
C64 Source Code