Last week ended in disaster. It was time to pick up the pieces and continue from the previous source which was backed up. If you may have remembered, I managed to get the aliens move the full screen, like normal space invaders would, using sprites. Unfortunately that also caused major problems with the movement of the player.The code then got unstable. Since I had major difficulties with this last week. I decided to roll back to the previous source code and have aliens moving their limited position. This actually makes this Space Invaders style game unique. Get yourself for a bumpy ride as it is episode 7 of:
Earlier on this week, I had a bit of a surprise from Errazking. He worked on a loading picture for the game. I didn't really expect to have a loading picture, since I was originally going to create a unique tape loader system which animated aliens and had both border and background loading stripes using the EOR 2-coloured loader with loading noise. Although a loading picture was done. It doesn't mean I cannot use the loading picture, for the sake of the tape loader idea. I can easily implement a subroutine to blank out the flashing $D021 stripes then play loading music. The disk loader will just be what I usually do. Display a picture, load via IRQ turbo or non IRQ kernal loader and display the 'Press Space' flashing sprites. ... but I'm not quite ready for that part of the project yet :)
This week however, after restoring a previous save of the game (before the mess was made last week). I had to re-copy/paste the rest of the levels into the source code. I was very lucky to have had the new source with the 40 levels also stored on the hard disk drive. As soon as this was done, I decided to work on something else... Power Ups. Yes, most of this week was based on in game power ups.Before I did that however, I created a subroutine that morphed the player bullet into an explosion for every alien killed.
I started creating and testing power ups manually. The power ups should take place when an alien has been shot. The power ups should also be random. This took me a few days to sort out some power ups for the game, but it sure was worth the effort. I made some power ups to be quite special, and some power ups timed. I implemented subroutines that gave the player ability to fire faster bullets, or move at a faster pace. Unless a life was lost.There's also a feature called DEFAULT, which the player loses all power ups.
Orange aliens could also award the player SPECIAL limited features, such as:
- Alien Trance - Freezes the aliens for a short period of time - except for their bombs, they can still drop those respectably.
- Super Shield - Protects the player from alien bullets for a short period of time. Although the player can be protected from bullets, it should not be protected from the aliens themselves.
- Smart Bomb - Allows the player to destroy the whole group of aliens, by pressing DOWN on the joystick. It fades out all of the aliens and moves on to the next level. Just like with the Super Shield. I have decided to make this power up very limited against time.
- Blackout - Sometimes having a rotating grid behind the aliens can be quite distracting, so as a special power up (like with the smart bomb feature), a timed Blackout feature removes the rotating background and makes the screen black. It also removes the trance beats from the score panel at times.
After being very happy with the result with the music. I worked on the high score table. Unlike a normal 5 list high score table. I decided to use a list of 20 names. I had this idea in my head, which was to generate a 2x2 char upscroller for displaying the list. I programmed a new routine that would do exactly that job. I also added the hi-score trance music into the code, and tested it. Looks great, but wouldn't it be better if I actually added the invaders going down on the hi-score list?. This now got implemented.
The next task was to actually getting the high-score position detected. In the hi-score listing source file. I added some more code, in which allows the user to enter his/her initials for a place in the high score table, and then get the score and name placed into the hi-score hall of fame. Finally, I implemented a hi-score saver subroutine, in order to write the high scores on to a .d64 should the game be running through a disk image. A hi-score loader on boot-up also got implemented.
Next I wasn't too happy with some of the in game sound effects, so I made some major tweaks to the sound effects to make then sound more 8-bit Commodore 64 arcade style. Although I was happy with alien movement sound. Which of course that stays. Some new sound effects were created for alien destroyed, alien hit (and changes colour), and also the player death.
Finally to end the day with the project. I created an ending. Once again an up scroll with well done text. There is still room for some more sprites and code for the ending, so maybe next week I could implement something quite special.
Overall this week was probably the BEST week for me on this project so far. A lot of work has been done on the game. I have been really impressed with the results of the game so far. I look forward to next week to create an additional ending to accompany the end up scroll. After all I don't think people would want just a simple up scroll for an ending, straight after completing the game. There should be a scenario for the end after all. Besides I don't think I'd want a very low score for a game ending. Heheheheh. :)
You won't be able to play the game yet. However to tease you, here's a video of the latest progress (minus the end screen) - Well, I am not that good at playing C64 games, never mind programming them. :D