Monday, 11 July 2016

Let the INVASION Commence [PART 2]

8th-12th July 2016

Last time when I was working on this little game project I was working on the main game framework. Well, now, a little more work has been done over the previous 2 or 3 days during my spare time. Unfortunately things will go pretty much quiet for just over 2 weeks or so (That cannot really be helped!). Anyway, here's what has happened this time round.

After testing the main game engine, and felt much more happier with it. I decided to do a spot of music and SFX composing. So in order to do this. I used Goat Tracker. As the music editor can also support sound effects with music. Considering that when I produce the title screen in the near future. I will want 3 different options, the player can choose for sound (and music). They are: Music, Music + SFX, or SFX Only. It took me a couple of hours or so to think and compose a tune I wanted to make for the game. I decided to stick to the melodic trance type of theme, and ended up with a pretty stunning result. Sound effects were created and converted to source code. Then I generated the byte tables for each sound effect in order to implement into the game's code.
The next job was to sort out the scoring system. So I implemented the score in a multiple of 10 points. Aliens of a certain type will score 10 points, some 20, and also some 30 points. I also been working on subroutines, in which will fade alien colours to a darker RGB, before it can be killed. This will be taking effect on later levels. Earlier levels will start with the basics, from having less aliens, to having them all on screen. The idea for each level is to eventually have alien colours lighter on some aliens - Making the player have to shoot more than just one shot at the alien. I am also considering to so something like a 'Special Power Up' alien. In which an alien appears in an unusual colour. Should it get shot, the player could have faster firepower, or even faster movement. This idea is currently on the drawing board, but should it happen. Then it would probably make things a whole lot better. Levels should have varied alien speed - where later levels are much more faster. I will also need to vary the bullet speed.

Finally, graphics ... A background has been designed and created, although it isn't really a final background design. There are still some minor issues, but yet again, it is still just for testing. The score charset also has some minor pixel bugs, which will be fixed at the end of the main game. Here is a preview snapshot of the game's progress.



Things to do next:

Probably in about just over 2 weeks time, I intend to tidy up the code, and get those aliens moving the full screen, rather than part screen (Although sprites are being used for this). The trick will be to check if an alien at each end is alive or not. If an alien on the very left or right on all 5 rows dead, then the next alien sprite should be able to reach the edge of the screen before moving downwards.

Also there is the front end with game options to work on. The idea for the new front end will be to do something pretty much spectacular. Also give out the scoring system for each alien shot.

Then there are also the levels to setup as well. In which the invaders will appear on different lines, and perhaps as different colours as well. This idea is to give some variety into this game.

I might even do an option where the player can choose between a solid sprites, or checkered sprites. 

Saturday, 9 July 2016

Let the INVASION commence [PART 1]

4th July 2016 - 9th July 2016

This week, has been quite an active week. Especially after wondering what to do for a small future game project. During my childhood, through to now. I always enjoyed Retro Games, and 'Space Invaders' was one of my all time favourite games in the arcades. Well, that's it. I'll code my own 'Space Invaders' type of game. ... BUT WITH A DIFFERENCE. :).

Many C64 Space invaders games used either 1X2 or 2X2 char sets.  There were some great classic remakes of this game. Take for example 'Invaders 64' by LiveWire, for example. It used 1x2 char sets for the invaders, but the game was pretty much slow and too easy. There was also Firebird Software's "Arcade Classics". Another stunning collection of simple arcade classics, by Ubik. The Space Invaders game was great. It used 3x2 charsets (if I worked that out right). What about my Space Invaders? ... I always hated coding charset movements and got into loads of scrapes with it. So, as an alternative. I decided to go with SPRITES.

Behold the beginning of a new C64 project called:

LET'S INVADE

First steps: Sprites

For the first part of the little project, I booted up Sprite Pad. I drew some sprites for the player ship, the player's bullet, 2 frames for the aliens and also the player and alien explosion sprites. I also created the GAME OVER text using sprites as well. I generated .PRG files for the game project.




Next step: Charsets

For the main game, I want to be able to use a 2x2 charset for the text and scoring panel. So, I loaded up Cuneiform, and designed a hires-character set.




Big leap: Coding

The next step was to program the game. For this little project, I decided to use Notepad++ with KickAssembler and Exomizer plugins. This would make my game development a whole lot easier. The user of MACRO commands inside KickAssembler, also makes my C64 coding life a whole lot better as well. I programmed the game by generating multiple interrupts that can display 1 sprite for the player, bullet and alien bullets. As you know the Commodore 64 can limit itself to 8 sprites by default. If I had just 8 sprites in this game, it would have been too boring :). I wanted 25 sprites for the aliens. In order to do this, I had to use multiple rasters through an interrupt. Basically the so-called 'Fake-Multiplexor'.

After getting all of the sprites to display, the next task was to get the aliens moving. In order to get the aliens moving, I created a timer in which controls a delay of the alien movement. Then after the delay timer has reached a set interval, a subroutine is called to flip the alien sprite animation. Once an alien reaches the end of the screen area, a raster position moves down 8 pixels, forcing the aliens to move down. Then alien movement swaps direction.

Now aliens were able to move left/right and drop down a row, etc. The next step was to have an active player and bullet moving. The player gets controlled using a joystick plugged into port 2. Eventually, I might also add a keyboard control for player controls. Pressing fire tests the player's bullet. If the player bullet is still active, then another bullet cannot be shot until after the bullet has left the screen.



The tricky bit was setting up the collision for aliens to player bullet. I needed to set the sprite/alien collision, according to the sprite position, raster position, and check whether or not the alien is dead or not. I didn't want to type in the same code for collision checks 25 times (1 listing per object). So in order to solve this problem, I generated a macro command. After assembling, and running the collision code, it did sort of work, but for some strange reason I had two rows of aliens hit at the same time. It turned out to be a problem with the raster position, and wrong rows set. This problem eventually got solved and the bullets hit the aliens respectively.

The next step was to set the alien bullet drop. For the aliens to be able to drop the bullets, we don't want the aliens to be dead. That would be silly. To solve this problem a small routine was generated in order to check whether or not the alien on a certain raster line is dead. If it is, then keep on randomizing the timer until an active alien is available to drop a bullet.

Nearly getting the main engine of the game sorted out. The aliens need to be able to hit the player ship. Should the aliens hit the player, a life should be lost. At the moment, I just set an infinite loop to completely flash the border while destroying the aliens. There's a bit more work to be done, but here's the first video of the work done so far on this little summer game project.



video
Note: This version of the game test has player/alien collision disabled. The music featured in this game isn't the final tune either. Since I originally wrote it for the ending of a previous game. The game will have music of the the same style. As well as a charset background behind the aliens in the near future. I think a shadowed city background might be quite nice. Or perhaps a 2x2 tiled style animation? ... Since the game is using 2x2 charsets for text. There should be enough space for some additional characters not needed.

Other things intended for the game and ideas how it could be implemented?

-The player death sequence needs to be implemented into the code.

-Alien death (Remove visible alien sprite). Use bullet sprite for the SPLAT animation, to destroy the alien

- Active scoring and lives system. Aliens should give out different scores, according to the type. (Ranging from 100 - 500 points). Lives should be lost per player hit by alien or bullet

- Levels and variety. Each level will use the standard alien formations, but each level should differ. The concept will be quite different to a standard Space Invaders game. I intend to have aliens use colours in order from LIGHT (Strong aliens) to DARK (Weak Aliens). If an alien turns into a darker colour, it will get destroyed.

- A nice backdrop or animation. It would be nice to add some in game graphics, which could represent a city or maybe some cool effects behind the aliens (2x2 moving tile background animation).


- New music and SFX. Could be trance music. Who knows?

Watch this space for more progress updates and videos.

When is the final game intended to be release?

Since KickAssembler really helps me well with a lot of the code (Generating macros, etc) then it could be possible that this game could be finished BEFORE the end of August. It will be available FREE from the TND web site as soon as the program is finished.

Friday, 22 January 2016

2016, into The future of THE NEW DIMENSION and C64 productions

22nd January 2016

Over the past 25 years or so. I have been a very keen Commodore 64 user. I liked to play many Commodore 64 games,  played quite well in some as a teen. I also enjoyed watching C64 demos, and checking out the classic C64 utilities. I also ended up composing music for myself - then did tunes for other people in the C64 community as well as for just myself. In the past you saw many games from my C64 label 'THE NEW DIMENSION'. Many of my worthy titles were:

* Sub Hunter
* Bionik Granny Returns
* Sheepoid DX
* X-Force
* Blap 'n Bash
* Invert
* Woolly Jumper
* Tape Master Pro V1.0
* Tape Master Pro V2.0
* Loadergame Tape Master Kit
* Loadergame Tape Master Kit 2

Also was involved with SEUCK enhancements to many SEUCK Compo winners of the past.

2015 saw the launch of a new special feature on the TND web site called "SEUCK School", in which gives the BASICS on how to enhance your own SEUCK games, by giving it some features of your own. There are some explanations on how to do certain features. A framework for use with ACME cross assembler has also been provided.

http://tnd64.unikat.sk/Seuck_School.html


Are there any more C64 releases coming in to the future?

YES


Although my motivation was quite low during the busy productive era in my job. Now things have gone quiet, and some more holidays have been booked. (Currently one the last day of one right now) motivation has been pretty strong to get projects out the way. There will be some more new Commodore 64 games coming in the future. There is to be the launch of the long awaited Honey Bee (Full game), soon to be available on the TND web site for you to download. The game is finished and has been fixed to work on NTSC versions of the C64 as well as PAL.


Commodore 64 Utilities

Soon to be released will be a TAPE MASTER PRO 3.  A fun tape mastering tool. A tool which will allow you to create loading scroll text with picture and music and run programs that use a BASIC SYS start address. The loader system's turbo was made by Martin Piper. However it features additional programming, which I implemented into the loader. So it is a mixture of both Martin and my own piece of work.

I cannot get it to work on BASIC programs on the fly, but it seems to work great on programs that use BASIC SYS addresses (without having to type in any hex addresses), and not screw up zeropages, with thanks to Martin's zeropage, INIT and stack destroyer routine (Will clear the tape loader from memory after loading).

Due to the extra features implemented into the loader system size is slightly bigger, compared to the previous TMP builds.Other new features implemented in the latest loader (NEW: Loading stripes cycle table feature), a choice to whether or not draw the picture like the old ocean loader, or wait until the full picture has loaded.  There is also the all new Loading 1-liner bar. The Press SPACEBAR to exit loader (So you can listen to music featured in the loader). In V2.1 The LOAD ERROR feature didn't display a red border in the IRQ tape loader, prompting the user to REWIND tape, any time an error occurs. Maybe some other things in the future as well :)

 Another plan is that It should still feature the loading stripes selector, featured from V2.1, should the cycle table option not be selected.. . No editor has been made yet, but I will be working on this soon. This version was tested on Retro Reto Pan :)

A brand new TND loader tune has also been composed. You'll be hearing this tune in ALL 3 of the enhanced Sideways SEUCK compo entries of yesteryear. A really powerful tune it is as well :)






Commodore 64 Games

In February 2016 will be the launch of the Sideways SEUCK Compo 2015 prizes (New front ends and enhancements) of Retro Reto Pan, Eidothea, and Edge of Time. Here's a preview snapshot of one of the 3 compo entries new front ends to look forward to. :)






Also in April 2016, you should hopefully see two 16KB cartridge compo entries from me. Vortex Crystals and Blap 'n Bash Revisted.

Vortex Crystals 
 
Vortex Crystals is a fun platform game, in which was inspired by some of the classic single screen platform shoot 'em ups. I also liked 'Impossible Mission', but this is NOT another Impossible Mission style game. You play the role of a hero, who must collect all of the crystals from each storage facility. Shoot aliens, pick up the exit card and get out of each zone alive. The 16KB is missing features, such as warp gate animation (Where aliens appear on to the screen). Also some other additional features I would have loved to have added, but due to the 16KB limitation for the compo. I couldn't add these ideas. Good news however is that AFTER the cartridge compo. I will be implementing more features into the game. Including a new front end, an intro sequence, hi-score table, warp gates, maybe smoother animations for some of the aliens.



Blap 'n Bash - Revisited

Blap 'n Bash Revisited is a (and will only be) special 16KB cartridge version of the original 'Blap 'n Bash'. It features 16 brand new re-designed levels. Smart graphics and brand new music. The power up features are exactly the same as they were before, including the 'Trance Feature'. There is a new feature implemented 'today' into the barrier power up. Should the ball hit it once. The barrier will disappear straight away. Like with Vortex Crystals, this game is currently getting NTSC fixed by probably one of the best C64 NTSC fixers around today, Dirk :)



Shoot Em Up Destruction Set 4 - The final edition

Alf Yngve has been making many great SEUCK games in the past, and he is still going strong with those today, with fresh new ideas. He's been sending me some demos of some of the games.  There is a 4th SEUDS still under development, for Psytronik which features some great new games. Tau Zero Reloaded, a stunning vertical scrolling futuristic blaster. Spy Rider 2, a SEUCK Overlander style game, with a bit of Operation Wolf . Big Gun No. 1 (One of my favorites in this compilation), a colossal robot style game, featuring HUGE GAME GRAPHICS. Two games (Streets of Fury and Operation Metal Storm) had to be replaced, due to problematic issues. So as an alternative, Edge of Time (Final non compo version - which is under development) and a really nice commando style game called  'Unexpanded Army', a game which wears the shades of cops. 3 games will be SEUCK  redux titles. The other two won't be able to fit into this category.


... that's a taster of games... Now ...

Music and the demo scene.

I also have some music projects in the pipeline. Quite recently I composed a brand new TND loader tune. This will be featured on many TND productions / contributors releases, which consist of a taape loading picture. I also intend to restart the in game music for Aviator arcade from scratch. So that the music would suit the game. Not too sure when that will be.

Saturday, 19 December 2015

The end is near - Can we me make it? ...

18th + 19th December 2015

Wow. Some more free time at last. Well, more work on Vortex Crystals then. Before any more programming had taken place in the game project. I asked Alf if he'd like flashing lights animation added to the background. After he suggested that it was a great idea. I worked on mapping the values of the char colours for the flashing lights. After compiling the code, the animation turned out quite nice. I sent the new build to Alf and he liked it.

The next step was to work on the end screen (since the whole game engine is finished right now) . A couple of months back, I designed the end screen using the example background, and crunched it - but didn't actually test it until yesterday. The result turned out pretty well. So I worked on the animation scenes. It involves the player attempting to make an escape from the V-Tex complex (After completing room 16). What happens next, I will not tell you, but the ending turned out GREAT. I even had ENOUGH memory to fit the ending into the code and compile a 16KB cartridge.

After finishing the end screen, I worked on doing a phase of bug fixing. I felt the player was jumping too high in the game, so I halved the jump duration on the player. Unfortunately that didn't work out that well. The jumping height was too little. It made things more impossible for the player to be able to jump high enough on to some platforms and conveyor belts. So I increased the jump height by a quarter. It looked and felt much better.

I wanted to add some bonus scoring to the game code, so that the player gains a bonus number of points, according to the number of bullets the player carries. Of course if the player dies - default bullet amount will be 40. Only at the start of each level, the player starts with 50 bullets. I also had enough space to add a flashing text routine. After finishing with the project (for today) and email Alf the latest build. I ported the game on to my USB dongle, and play tested it on my C64, via the 1541Ultimate 2. Really happy with the result so far. ... but is the game finished yet? ...

Not quite. Although I can say it is probably  99% finished, it needs a little bit more bug fixing, a pause+quit game function, and then pass it over to one of my C64 scene buddies to NTSC fix it before the final compiling and submission. :)

After the compo - I intend to extend the code a bit more, to give out more frames for the in game animation. Add additional in game options, a better looking front end presentation, hi-score table, etc. Apart from those - the main game stays the same.


Monday, 16 November 2015

Alien Invasion

13th November 2015

Just to let you know that progress for Vortex Crystals is still under development. However, on Friday 13th November. Disaster struck on my HDD. When I tried to load the assembly source file of the Vortex Crystals, I ended up with a blank file as the main file. This happened after an update was installed, and the PC HDD was undergoing repairs by the Op System boot up. I tried copying the file from the backup drive, and sadly it was the older source file and incorrect. Damn, all is lost ... Well not exactly, here's what happened.

When I'm working physically, and feel tired, I can get myself lost in places, and the same with file organisation. I spent most of my time searching for the correct backup source of the missing code on that day. Thankfully, it got found, and I was able to continue doing more levels for the game. (grin). 7 levels were already complete, so I worked on levels 8 and 9. Level 9 introduces 'I-Droid', the eye type of alien.

16th November 2015

More progress with the level setup, but I came across a small problem with level 10. Alf forgot to add a door on to the stage. So in order to resolve this problem. I decided to disguise one of the alien spawn gates as an exit. Therefore making this level more challenging. Then I started on doing level 11. This level introduces two new and harder aliens, which are the Squidroid (10 hits to kill) and Robot (8 hits to kill). These later levels are planned to frustrate the player more, as the player only has a limited amount of ammo to fire. Shooting 3 aliens will give the player 10 extra ammo, if the power up box is picked up straight away. Later levels are also intending to get even more frustrating, when the simple aliens (from levels 1 - 10) will not be appearing on the later levels. :)


The deadline is about 2 months and a half away for this game to be entered to the compo, and I'm quite confident that it will be finished in time. :)

Stay tuned ...

Saturday, 31 October 2015

Level it up

25th - 31st October 2015

Another week has flown past, and yet more progress on the project 'Vortex Crystals' has risen. Alf Yngve has mailed me seven brand new levels, and another 3 aliens for me to play around with. Most of the hard work was done today (Since I have been doing more SEUDS 4 work in between).  Last time I got the player to be able to pick up objects that was spawned from aliens. What now? Well, a bit on level setup and some sprite/character collision.

Last night I captured each level screen from the SEUCK workfile in VICE, and compressed each level separately using Exomizer V2.09. I also imported Alf's new sprites into the game sprite data as well (These will start to appear on levels 5-16, but I have 7 levels at the moment and Alf hopes to finish those over the weekend.).

First of all today, I imported the new game sprites into the source, and also setup some more subroutines to form three new enemies, which I have called:

Squidroid: The Squidroid is a robotic squid like alien, which will be able to move left/right, up/down at a 2x the original enemy speed. It will also be a hard alien to battle, since it will have 10 lives. The airborne enemy will appear in later levels.

I-Droid: An alien droid, which is armed with an eye camera. This alien will be moving at 2x the original enemy speed, but will have 5 lives to kill it.

Robot: The robot is ground based, and will walk left/right at 2x the enemy speed. It will have 8 lives to kill it. The enemy will appear in later levels.

I was very happy with the result of the first level and the framework, in general, so now it is time to setup some more levels. Before I did that, I added a Level Complete tune and well done text on to the central panel. Then called for the next level to increment one byte and jump straight back to the main game loop code (Which sets up the level data and decompresses the next screen).

Most of today I have been working on some byte tables to setup each sprite type, sprite position, colour, background colour settings and low + high bytes of addresses where to de-compress the level data. Then I programmed a simple timer loop, which will setup the current table position, and setup the actual level. Unfortunately not all levels displayed correctly. I was scratching my head to find out what may have caused this. Each screen did de-crunch, but the display for each EVEN level was exactly the same as the previous ODD level. I carried out a little investigation to find out why this happened when running the game maps workfile, saved as Sideways SEUCK 'Finished Game State'. It turned out that double-buffering was used. So I recaptured each screen in VICE, exported the colour + screen data and then compressed the level screen data again. Then I imported the data into the game's source code folder. Assembled, compiled, and executed the game project again ... It worked much better.

Now the level screens were correct it was time for me to add a little more code to the conveyor belt chars. If the player moves (or jumps) on to a conveyor belt. It should travel. So I added a subroutine which pulled the player backwards or forwards on the belt. ROR + ROL charset animation was also added to the conveyor-belt chars to give the same sort of effect, pushing/pulling the player as it tries to move.

Finally, I played around with the level tables, for levels 1 - 3, I setup the enemy sprite type, re-spawn position, background+multicolour and a few other things. Now I have 3 working levels, and the result is quite pleasing :)

I still have other levels to setup, but that can be done from Monday - next week. Stay tuned to hear more progress with this platform Shoot 'Em Up.

Thursday, 22 October 2015

Blast those aliens

22nd October 2015

After yesterday's infestation of aliens. I have been working on more of Vortex Crystals this morning, and later in the afternoon. Well, I am still on my holiday leave until this weekend - so what should you expect? ... Yesterday, I worked on positioning the aliens and getting them to move around. Today is a completely different task.

Since the game allowed the player to shoot bullets, let the aliens walk about and the player move around the game area. I thought I was done with this stage. Not yet ... I received an email from Alf Yngve, indicating that the last WIP preview I showed him had a major restriction with the player's jumping on the very top platform. So I decided to alter the interrupts routine and open the top and bottom borders - but NOT allow any sprites to display at the very bottom or the very top of the border. The trick worked.

Now came the fun part of the game's framework. We have already had the running and jumping phase, so now it is the 'shooting' phase. The player can shoot already, but there was no specific collision set where a bullet hits an alien. A few routines were programmed so that according to each alien, a collision detection routine gets called. The first test was to allow the player to fire the bullet and detect the collision. Simply by flashing the border (inc $d020). After I tested the bullet on each alien, it was time to make an alien explosion.

To make the alien explosion, I could choose two different methods. The longest method is to create a morph alien sprite to explosion animation for each alien sprite. Or the alternative method is to stop the bullet sprite from moving, offset the alien sprite and then morph it into an explosion. I took the second option, as it saved me time - and since there's under 3 months to get the compo entry finished, it probably is a brave move.

After testing the alien explosion routine, to see how well it works. I was very happy with the result, and decided to add lives to each alien. This will give the aliens a certain number of hits from the player's bullet, before they explode. After generating the code, and having a little play around with the source to get things right. The program worked a treat - but there is still one more thing before I close down the project for the day.

The next was to get the aliens to re-spawn after a period of time. This should occur after a few seconds the alien last died. When the timer had reached its position per alien, the alien sprite re-appeared on the platform and it was able to move its usual movement afterwards.

My final task before I closed the project down for the day (and backup my work) was to add a score to the player. I made it that only 100 points are scored for draining an amount of lives for the aliens, and 500 points for destroying one. I am pretty pleased with the result of the game's framework so far, and look forward to finishing it in the near future as well :)

The next task will be to add power ups, which might be some time this weekend.