Friday, 28 October 2016

RUN - RUN - THE INVASION HAS STARTED

28th October 2016

It is currently my second, but last day of my holiday, and things will start to quieten down even more from next week, due to even less free time. Although C64 activities will occasionally continue. Now today, you had better run (To the TND web site) as the invasion has just started.

Yes, indeed. The New Dimension finally launches 'Let's Invade'. A souped up Space Invaders style game with a major twist of audio and psychedelic visual. If you would like to check the full game out, in VICE, CCS64, Micro64 or your own C64 with 1541Ultimate, SDIEC or whatever. The game is best played on a CRT monitor, rather than an LED TV. Although I use an LED TV to save space, and no longer use a CRT. I set my C64 to a HDMI S-Video to HDMI convertor, and set my 19" TV to PC mode. That's where the best picture comes from my TV SET.

In this game, you have been transported into a vortex, where you will encounter some of the meanest invaders. In order to save planet Earth, you have to battle over 40 different waves of alien invasion. Luckily for you, you can pick up power ups, simply by blasting the orange aliens. However, power ups are timed, unless you have picked up a speed / firepower speed power up. Those of which only get lost if a mischievous invader gives you DEFAULT or you lose a life, by hitting their bomb, or an Invade occurs.

The game consists of psychedelic void scrolling visual effects, with strobe flashing and optional thumping in game trance SID music. The strobe effects also be disabled on the red startup screen. There's also assorted level setup, where more aliens will require more than 1 hit to be destroyed. The game is based on shaded colour, where the dark coloured aliens are weaker, compared to their counterparts. The brightest aliens will require even more hits before they can be eliminated. Alien behaviour is also different. The more aliens shot, the aliens will move a different way. Making this game slightly more original.

Full documentation on the game has also been included in the zip archive.

Should you wish to save the world from alien invasion, then why not DOWNLOAD "Let's Invade" for absolutely nothing, and then install it on your Commodore 64, VICE or whatever.

Let's Invade at The New Dimension


The game is produced on disk and tape.

Sadly there is no 16KB cartridge version of the game, due to the size of the overall production exceeding it.

Saturday, 15 October 2016

The Invasion is Coming

15th September 2016

Well finally the wait is nearly over. Over the past week ahead and myself and the rest of the testers have been testing through the whole game. There were only some tiny alterations that were needed to be make. Unfortunately, due to the size of the game being slightly over, the game doesn't fit on a 16KB cartridge image. So I have decided to leave that out for the time being.
 
A digital disk (with a brand new TND intro) and tape version (minus the intro) of the game has been built, and I have also worked hard on the instructions manual, final proof reading. Now everything is ready, I have set an official date of INVASION. That will be Friday 28th October 2016.



Let's Invade is now COMPLETE....Keep an eye out for news on the game release (and free download) at http://tnd64.unikat.sk in the late morning of the official release date :)




Saturday, 8 October 2016

Let The Invasion Commence [Part 10]

1st October - 8th October

The week was really quiet on the Let's Invade, project. Apart from the weekend, where a lot of activity has been made in this game. I was pondering for some handy information on generating random bullet firing for the aliens. Well, it turned out very bad last week, where I really got stuck. This week however was a completely different kettle of fish ... for better it was too :)

I was thinking in my head that the way I did the alien bullet random position subroutine shouldn't be based on wrapping in memory the low and hi-bytes of the alien colour, position, and sprite X position. Instead, it would have been better to generate a 256 byte table of values ranging from 1 to 25. So I generated a simple BASIC listing, to place a series of random tables in memory $1000-$1100. Then saved the table and then I extracted the random generated table file to the KickAssembler project folder. Next I created a command to open C64 the file (RandTable.PRG) for assembling.

The file imported into the source okay, however I needed to generate some more code, to set a looping value of 1 to 25. So a couple of subroutines were called in. One for moving to the NEXT value read from the random pointers (RandTable.PRG). Then store to the value of the actual pointer. Then a subroutine that calls the fetch table and check for which alien the bullet should be placed on. I also created a check in which commands an alien to not drop a bullet, if it is dead. I had a better result, but for some strange reason, the bullets appeared from the upper border. I played around with the subroutine, to work out what was causing this problem. Then set up a boundary for the bullet. Basically if the bullet tries to leave the top border and enter the screen, zero position the X + Y value of it. That helped me solve the problem.

Another small bug occurred in the game. After finishing playing the first game. I tested the pause/quit function to ensure the game works as it should. Unfortunately the game didn't quit, but made a CPU JAM in vice (A crash). So I did a little bug fix to sort out the problem. The game then seems to have been working okay. It looks as if now, the game could be finished. But I'll see what the testers find, that will cause problems to the game.

While I'm was waiting for a result. I have been composing some loading music for the game's tape loader system (Thunderload). Since the theme of the game is a 'Trance' based theme. The loading music ended up with pumping speed. The drums however didn't use the filtered kick and snare. Instead I set a different waveform to use a filter. The result turned out quite nicely. I have been working on making a tape master for the game. I am hoping that the result will turn out pretty good at the end. There was a slight error with the tape mastering, where I placed the loading text in the wrong place, but everything else worked quite nicely. That bug can easily be fixed no problem. :)

I'm not ready to release the game just yet. Hopefully SOON!



Saturday, 1 October 2016

Let the Invasion Commence [Part 9]

25th September - 1st October 2016

Let's Invade was currently in the testing phase. Unfortunately not everything is quite ready yet although I do feel confident about an Autumn release of this game. Parts of the game code needed to be tweaked, the Health and Safety notice needed to be updated, and also the game char set needed a quick change. So I fixed those, however, I came across another obstacle. The alien bullet firing isn't random enough, and it seems the same alien shoots the bullet. Sadly this is still the obstacle I haven't got over with this week.  

During that obstacle, I felt slightly demotivated, and decided to code a little something else. That was of course a mini music demo called 'Mix Box 1'. Featuring 5 new unreleased tunes, and some oldschool look, despite the raster timing issues. I've never really liked timing raster bars.

Thirdly a disk menu for Reset's Craptastic was programmed, near complete, but requires raster bar timing.

Today, I got back to Let's Invade and once again, it was another frustrating session. I did some how manage to get the enemies to drop bullets randomly, by creating the wrapping round routine, but after a while, the same aliens were dropping the bullets. Yet again, I didn't manage to get over this obstacle yet. One day climb over the wall that blocks me, but it is a matter of when....


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

video




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 :(