Saturday, 24 September 2016

Let the Invasion Commence [Part 8]

18th - 24th September 2016

Earlier on this week, I did an upscroll for the high score table and also the end sequence. This time I wanted to add a little more code to make a much better ending. After all, I don't want the gamers to play the game to the end and be rewarded just an upward scrolling message, saying well done. Instead I wanted a scenario for the ending. So I drew two single screens, using CharPad, and then setup the attributes.I also drew some new sprites for the ending as well.

After the 2 screens were finished, it was time to code an ending, as a reward for the player to finish the game. I programmed the first scene, and set an interval before the next scene went on to the game. After the second scene was drawn on to the screen, I worked on getting the sprites animated and leave the screen, when required to do so. Then linked the overall thing before the end scroll.

I was very happy with the result so far, but noticed that the upscroll didn't work 100% on NTSC, although it worked will with PAL. After a quick fix, the game got submitted to two of my testers who tested and helped me with Honey Bee. :) One of the testers emailed me about the in game flashing feature. He suggested I should add a health and safety notice, like I did with Sheepoid. Also add an option to the notice to be able to disable the strobe effects. The front end also had a minor adjustment, where the squares around the logo was replaced by Asterisk stars, and flash. Apart from that, the game is now being tested.

Let's Invade is planned to be released in Autumn 2016, but not until it is 100% ready. The BETA testing is now in session. :)

Saturday, 17 September 2016

Let the Invasion Commence [Part 7] - Are we there yet?

12th - 17th September 2016

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:

Let's Invade!

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.

When I tried out the power ups, and set their timers, they all worked a treat and the result was quite rewarding. However, the player would have needed to know which power up is carried. In order to solve this issue. I created a timed text display over the score panel. Should an event occur, the text should display a message. As soon as this was working well, I worked on some extra tunes for the hi-score table and game ending.

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

Saturday, 10 September 2016

Let the Invasion Commence [Part 6]

5th September - 10th September 2016

Quite a lot of hard work has been done with Let's Invade during the week or so. Most of this week, I have been concentrating on getting the rest of the levels in place into the game code, and finally got that finished. I was very pleased with the result, but some more work needs to be done on the invaders.

The invaders were not being able to use the full screen to move across during each level. If 5 rows of aliens were shot at either end, the other aliens would NOT stop moving to the end. So I made loads of macros to get the aliens to move how the Space Invaders would have moved in the first place. Once they got to a certain stopping position. The invaders move down 4 pixels. Unfortunately, there were loads of flickers over the aliens, due to sprites being called inside a raster split. I then move the sprites up each raster about 20 pixels. That was much better. Although there were still flickering aliens.

Next I generated some macros for the collision for each alien sprite. An alien should get shot according to which position the player's bullet is located, and the raster beam of where the alien sits. It resulted quite nicely, but after so much code had been produced. While I was still tweaking bits of the code, an unknown bug had occurred. Sadly the player sprite and the bullets no longer use the ASL ROR $D010 sprite expansion. I couldn't work out why this happened, when the synchronized loop in the game code calls for Sprite0, 1 and 2 to expand its MSB X position. The aliens MSB expanded okay. Maybe one day I may find the solution. If not, then I'll have to just go back to the previous backup of the code, and just work on the power ups instead, and leave the invader's movement to how it was before. We'll just have to wait and see.

Sadly not a good result :(

Saturday, 3 September 2016

Let the Invasion Commence [PART 5]

3rd September 2016 - On a terribly rainy day

Yesterday I mainly worked on the title screen, and I got it working (apart from the hi-score table, which has not yet been implemented - that will be last thing). The game has got in game music working, and there are 23 levels. Making more levels will commence perhaps next week.

Today, I worked mainly on the 2x2 void effect inside the game. The feature only scrolled one direction, which was upwards. I decided to add a special feature to the void scrolling, so that it uses a timer which will scroll the void clockwise after a certain amount of time. The next trick I wanted to do was add the in game 'Trance' music's beat to flash the void. In order to do this, I had to hunt for the correct bytes in the Goat Tracker music player, using a native C64 tool. Who, in the demo scene remembers 'Music Wizard' by Faces?. I managed to find the byte that made the drums kick in. Then I implemented a value check equalizer subroutine. It checks for the drum sounds, and then flashes the grid through a timer. I was really pleased with this.

The result was quite pleasing, but there was still more to be done to the void. New colour tables were set for the levels, so that you don't get the same grey flashing scheme on all levels. After each level progresses, a different colour flash was called, and made things more interesting. That still wasn't all for this.

The game was missing a variety of different voids for each level. So I loaded up the charpad V1.8 , and generated some 2x2 void chars. After 10 different voids were done, I exported the chars to binary form, added some more tables and subroutines, then had a good result ... Well, sort of ... The void chars needed quite a bit of altering, to get right. I was happy with the final void chars. Only one problem came by with this. The colour flashing is TOO light, which made it hard for me to see the transparent invaders. So, in order to solve this problem I decided to mix mostly dark colours inside the flash. The result went quite well. I'm very happy with the scrolling void, and also the music kicking in to flash it as well.

Next week, I will be ready to implement some more levels, and maybe add some power up into the game next week as well.

Friday, 2 September 2016

Let the Invasion Commence [PART 4]

29th August - 2nd September 2016

This probably has been the most active week on this game project. So far now. Last week I managed to get 11 levels done so far in the game. Well this week, I wanted to do some more this week. I managed to get 23 levels done. However, most of this week I decided to take a little break from working on levels, and I decided to do some other things with this game, during my spare time.

First up, for a couple of days or so, I wanted a little break from game programming, so I decided to boot up Goat Tracker and compose some in game music. The music turned out very trance like, but when I imported the tune a day later into the game. Suits the theme quite well. I may have added a scrolling 2x2 tile behind the invaders, but I have another trick to add to it. Wouldn't it be better if the grid flashed any time the trance drums kicked in? Maybe next week.

For now ... I decided to re-design the character set for the game, and title, to make it slightly more modern. I was tempted to create a new front end for the game, as I was just bored with the game preview title screen. Well, I got carried away and made a more presentable title screen. It features a char-scroller inside the logo (Where 2 multicolours are mixed together), a scroll text and also the alien scoring. I also added an alien scoring display, and also the music/sfx options. (The charsets at the top of the front end will reveal those). I also created a new 2x2 charset for the main game, itself to make it look quite modern as well.

More work is to be done on the game project in the near future, but I am very happy with the work done on it so far. After adding all of the levels into the game, the power ups will be next on the agenda, and also the flashing grid for the trance music (and different grid tiles for each level). I also have the high-score table/name entry to add to the game as well.