13th + 14th July 2012
Now that the main game engine, has been finished. I have been busy working on enhancing the front end last week. This week I have been working on the high score name entry routine. First the player's score had to be checked after game was over. Then I had to compare values to the final score. If the score was higher than any of the top 10 scores. The player could enter their name for the high score table. If however no high score has been detected the routine jumped straight to the front end. The easiest part was programming and testing the name entry routine. Obviously most games tend to use a simple joystick option in which up/down increments / decrements a character. Pressing fire takes the player to the next column, unless a certain character has been detected. I did exactly that for this game as well if an arrow pointing left was detected, it would rub a character from the name entry. If an up arrow was detected, I used it to represent 'finished' name entry.
The hardest part was to get 10 high scores checked, and moving the names to the CORRECT ranks. I used probably one of the most easiest, but longest approaches of them all, which was repeating each routine checking the player's score per high score. Then jump to a subroutine to allow the player to enter his/her name for the high score table. I found a green high score name entry to be pretty boring, so I jazzed things up and flashed the character sets of the well done message (and the character being used to enter the player's name). Then moved the names and scores down a row so that the player's name and score is in the correct position.
The front end required a lot of tweaking, so I fixed the sprites that were covering the last row of characters of upward scroll, so that the upwards scroll masked correctly. I also worked on a new help screen. Captured the screen in MSCK then I imported it directly into the project source code, and did a little more programming. So that the front end will flip to the next page and then after a short period of time, it switches back to the main page again.
The front end's virtually finished now. I think an end sequence will be the next on my list - then redesign all of the game levels.
Saturday, 14 July 2012
Sunday, 8 July 2012
Onward and upwards.
8th July 2012
It took me a few hours just for me to try and figure out how I could get the upward scrolling correct for the front end. I came up with a few experiments, which sadly didn't work. Then I tried changing the AND value to #$06. The upscroll moved upwards smoothly. I created a fake multiplexor for the sprite scroll and also to mask the top part of the upward scrolling message - which thankfully did the trick nicely. A couple of things I need to add to the front end, are routines to change interrupts and display the help screen for a short period of time. Then back to the up scroll interrupts again. There's also the high score name entry to work on (carefully) as well.
Saturday, 7 July 2012
Push it up
7th July 2012
Now the main game engine seems to be out of the way (I hope). It was time for me to do some more work on the front end. Well for a start off, I could do with recreating the raster interrupts by making some more. Now I updated the rough delayed up scroll to move upwards in a smooth scroll. For some strange reason, the up scroll seems to jitter a lot. I tried many times today to try and get that blighter working, but it seems as if the upwards scroll still won't work properly. Troubleshooting time :)
Friday, 6 July 2012
It's time to grab that ball.
6th July 2012
I have been doing more work on the bonus ball today. Nothing too big. It has been suggested that I should allow the player to collect the bonus ball while it is bouncing around the screen. So I changed the routine to allow the player to collect it. I also noticed that the smart bomb feature (last item in the ball cycle) wasn't available. So I altered the code so that it can cycle to the last object before de-spawning again.
There were some issues with the E-X-T-R-A highlighting routine. It seems I had missed out some important operators to allow the player to highlight ONE of the above. Where before when the player collected the 'T' on its own. The bug displayed T-R-A in white, when it shouldn't have. I fixed this issue by updating the code slightly. I also made the E-X-T-R-A (after highlighting) reward the player an extra life.
While playing the game in cheat mode, I also discovered a silly tile bug, where a tile appeared in the incorrect place after the player moves on to it. This was only taking effect on the Panic Switches. I should have made the switch tiles turn to standard tiles - before any other operations/subroutines were called, otherwise some strange effect happened. After moving the subroutines, the panic switch worked 100%. I was pleased with the result so far.
I think literally the main game code's finished, my next task (possibly tomorrow) will be to do a high score/name entry routine. Then update the title screen slightly, followed by ending, followed by redesigning all 64 levels using Delight by Color7.
Here's a test video I made to ensure everything was working how I hoped it would, after the modifications to parts of the game code :)
I have been doing more work on the bonus ball today. Nothing too big. It has been suggested that I should allow the player to collect the bonus ball while it is bouncing around the screen. So I changed the routine to allow the player to collect it. I also noticed that the smart bomb feature (last item in the ball cycle) wasn't available. So I altered the code so that it can cycle to the last object before de-spawning again.
There were some issues with the E-X-T-R-A highlighting routine. It seems I had missed out some important operators to allow the player to highlight ONE of the above. Where before when the player collected the 'T' on its own. The bug displayed T-R-A in white, when it shouldn't have. I fixed this issue by updating the code slightly. I also made the E-X-T-R-A (after highlighting) reward the player an extra life.
While playing the game in cheat mode, I also discovered a silly tile bug, where a tile appeared in the incorrect place after the player moves on to it. This was only taking effect on the Panic Switches. I should have made the switch tiles turn to standard tiles - before any other operations/subroutines were called, otherwise some strange effect happened. After moving the subroutines, the panic switch worked 100%. I was pleased with the result so far.
I think literally the main game code's finished, my next task (possibly tomorrow) will be to do a high score/name entry routine. Then update the title screen slightly, followed by ending, followed by redesigning all 64 levels using Delight by Color7.
Here's a test video I made to ensure everything was working how I hoped it would, after the modifications to parts of the game code :)
Saturday, 30 June 2012
Lucky strike
30th June 2012
Slightly late than never :). Today more work has been done to the Trance Sector bouncing bonus ball. A few days ago, I got the ball to bounce around the screen. Today I did some more work on it. I created some subroutines which sets the counter of the ball to appear. Then it spawns in. After a full cycle of some of the features, I made it spawn out again.
As well as this feature, I added a subroutine to test the collision of a rocket and the bouncing ball. If the rocket hit the ball (depending on what the ball has) the player gets rewarded either 100 points, 200 points, 500 points, Lighting of letters E,X,T,R,A (To indicate and extra life) or a smart bomb, which will destroy all rockets on screen. I also made it that if a rocket hits the ball, the ball disappears and the rockets explode. Here's a video of the work done so far. I still have the E,X,T,R,A routine to bug fix - and award extra lives properly. That can wait some other time later on this week ;)
Thursday, 28 June 2012
... And the bonus ball is ...
27th June 2012
I only had 2 hours spare, which gave me some time to work a little more on Trance Sector, since finishing Escape from Zaphod using the 3D construction kit last week (Hard work).. I took a look at the sprite data to work out what the ball's value should be, and created a frame table in which would indicate the colour for the particular bonus object. I created a few values to check the direction of which direction the ball should be bouncing. A few subroutines were also programmed in to get that ball moving according to direction. Yep, it bounced around the screen how I hoped, but was a bit too fast. So I slowed it down by adding a speed delay to it. I also created a sub routine that could cycle the colour of the bonus ball. The same was done for the frame type. Since I didn't want the ball colour and frame cycle to go too fast, I just had to sort something out to stop this. So I created a delay. Now the objects and colours are cycling to how I hoped they would.
... and here's the result so far. :)
As you can see, I have a ball bouncing around the screen, but what use is it where there's no way of being able to touch the object to destroy it? Well, because of being short of time I had because of work. This will be resolved hopefully some time this Friday, if I don't get called or text into work that is :) The plan in general will be to get the bouncing ball to disappear if one of the seekers/missiles hits the ball. Whatever frame the ball last had will result 100 points, 200 points, 500 points, an automatic bomb to destroy all seekers or a lit up E-X-T-R-A (In which, when fully lit will award the player an extra life). I better work on the collision and checks for what's resulted from the ball.
Monday, 11 June 2012
Let's make some noise
11th June 2012
I don't tend to get much free time on a weekday, but I got up early to make up the free time, because of working a 12pm-8pm work shift at a 24 hour Distribution Centre. Anyway, glad to have found time to get sound effects in action. On Saturday, I was thinking about using the Sub Hunter unused in game sound effects for this game. The sound effects were originally created by me using the Maniacs of Noise SFX Editor by Roland Hermans. On Saturday I had problems getting the sounds to work correctly, and yesterday I almost reprogrammed sound effects - but was fed up and gave up at the end.
Anyway this morning I got back to the source code, to work out why (on Saturday) the SFX was playing with buzzing noises in the background. It turned out to be the case that in game music was also trying to play as well. So to fix this problem, I created a little switch routine, to switch between music and sound effects. If the music option = 0 then the music could play, otherwise if it was = 1 then play only sfx until after a level's complete. This trick worked quite well. After testing the SFX, they worked out pretty well. Love the explosion sounds of the seekers, and also the player collect sound works quite well. So far so good.
Just one more thing to do quickly before I had to set off and catch the bus to work. This was a small thing to do. I drew two extra sprites - one for the music (a music note icon was drawn for that one) and also a sprite for sfx (a speaker with waves coming out). I imported the sprites into the source code and also added a pointer which can detect whether music or sfx is selected, according to whether the player pushes left or right on the joystick in port 2.
Here's a video of the game with Sound Effects for you ;)
Sunday, 3 June 2012
A disappearing act
3rd June 2012
I thought I'd be losing some free time today, but I have one way or another. Today I felt like doing more work on Trance Sector, as last week I sort of missed out on it, for some reason. So then, what has happened today then? Well, let's continue yakking away ;)
First of all, I loaded up the SpritePad editor, because my next task is to do a spawn and disappearance of all game sprites. So I drew another 4 frames for the sprites. Then I worked on some sound effects to make a similar sound to Bulldog (Where the player appears and disappears). It worked out quite well, and I was pretty much pleased with it. I also made a sound for another idea I had (level complete explosion effect). Then I imported both updated sounds and sprites into the source code. I had to relocate the game sprites to $3000 and change the value of the animation / sprite type values. This was because of the sound effects/music taking over the memory at $2000. I also had to alter the variables that were pointed to $3xxx and make them point to $2xxx instead.
Now I programmed a few additional routines. The first of which was to spawn all of the sprites on to the game screen. I made them appear by using an expanding '+' type of sprite. I set the frames and pointers for the animation, and added the 'ding' style sound to make the player appear. Well, it turned out quite well. Then in the Level Complete routine, I got all of the sprites to disappear by using the same '+' sprite, but disappearing in reverse.
Next I wanted to add some effect to the level screen. So I decided to make the level's background multicolour colours, use the panic colours in high speed mode. I added a sound effect to this as well. Then I added a simple exploding screen and used the player's death sound for the quick explosion. Then the main Level Complete message + jingle comes on. Feels quite great. Check out the video:
I thought I'd be losing some free time today, but I have one way or another. Today I felt like doing more work on Trance Sector, as last week I sort of missed out on it, for some reason. So then, what has happened today then? Well, let's continue yakking away ;)
First of all, I loaded up the SpritePad editor, because my next task is to do a spawn and disappearance of all game sprites. So I drew another 4 frames for the sprites. Then I worked on some sound effects to make a similar sound to Bulldog (Where the player appears and disappears). It worked out quite well, and I was pretty much pleased with it. I also made a sound for another idea I had (level complete explosion effect). Then I imported both updated sounds and sprites into the source code. I had to relocate the game sprites to $3000 and change the value of the animation / sprite type values. This was because of the sound effects/music taking over the memory at $2000. I also had to alter the variables that were pointed to $3xxx and make them point to $2xxx instead.
Now I programmed a few additional routines. The first of which was to spawn all of the sprites on to the game screen. I made them appear by using an expanding '+' type of sprite. I set the frames and pointers for the animation, and added the 'ding' style sound to make the player appear. Well, it turned out quite well. Then in the Level Complete routine, I got all of the sprites to disappear by using the same '+' sprite, but disappearing in reverse.
Next I wanted to add some effect to the level screen. So I decided to make the level's background multicolour colours, use the panic colours in high speed mode. I added a sound effect to this as well. Then I added a simple exploding screen and used the player's death sound for the quick explosion. Then the main Level Complete message + jingle comes on. Feels quite great. Check out the video:
Sunday, 20 May 2012
Engage Shield, Panic Stations
19th May 2012
Well, this is where the fun begins :). I worked on a 1 screen test level (To get the tiles working) and imported the test level library from the Multi Screen Construction Kit. Then I started working on some more programming aspects to the game engine.
There were two new tiles for the game. One which was a temporary shield, and the other which was the switch. I loaded up VICE and the game's graphics work files to work out which character indicated the shield, the switch (on) and also the switch (off). Then I added more to the sprite/background collision register routine. Some of the routines check for the value of the character. If it was the shield tile then to test this was working I added INC $D020 to increment the border colour (test). Then I did exactly the same thing for the panic switch, but DEC $D020 to decrement the border colour (test 2) instead. I also got the tiles to change. The shield tile turns into a standard tile (Shield disappears). The switch on tile turns into the switch off tile. I assembled and executed the new code and tested the test level. The increment/decrement of the border worked. Now it was time to add some more routines to make the code work how it should have.
Some more variables and timers were added for the shield routine. The idea was to create a timer that will give the player a temporary invincibility mode. I also created a table which should flash the player (silver/grey flash scheme). A routine to time the shield counter was also added. I also created a routine to check whether the timer equals 0, indicating that the shield has been disabled. Otherwise the sprite/sprite collision would be bypassed. After I assembled and tested the routine. I had the player flashing for some time (after collecting the shield) which was perfect. Especially for the harder stages of the game, where there will be tiles with panic buttons surrounding the pods.
Now the invincibility mode was sorted out. It was time to add some interesting features into the panic switch routine. I decided to make it look as if the alarms were going off - and the seekers speed up during a short period of time as well. This was to make game play more frustrating and fun. Like with the shield routine, I created a timer and also two colour tables for the background multicolour. Yes that's right, the background multi colours flash on panic mode. The effect turned out nicely, and also the background restores to its normal colours after the panic alarm's switched off (automatically). :)
20th May 2012 More level designs ... and the master of disaster strikes ...
I have been doing some more levels using Multi Screen Construction Kit today, and have 25 working levels done so far, but the bad news is that after level 26 was stored to the MSCK library and I wanted to view all of the levels through MSCK, the program crashed (CPU JAM at $C107). It was very complicated to look at the code. So I'm not sure whether or not it will be possible for me to recover the level. If it is not recoverable, I will have to redesign the same levels using a different utility (I might try Delight by Color7 productions), but it will be a longer process in designing all of my levels (Using 2x2 tiles). Here's a snapshot of what Level 26 could have looked like (if I'm accurate enough).
It looks as if there will be no more work on Trance Sector until the end of this week because my week's holiday finished on Friday. Unfortunately now I'll have less free time to do what I enjoy doing the most (C64 activities), due to working 12pm-8pm shifts again. I can put my mind off this game for a few days or so, until Friday/Saturday morning. :)
Well, this is where the fun begins :). I worked on a 1 screen test level (To get the tiles working) and imported the test level library from the Multi Screen Construction Kit. Then I started working on some more programming aspects to the game engine.
There were two new tiles for the game. One which was a temporary shield, and the other which was the switch. I loaded up VICE and the game's graphics work files to work out which character indicated the shield, the switch (on) and also the switch (off). Then I added more to the sprite/background collision register routine. Some of the routines check for the value of the character. If it was the shield tile then to test this was working I added INC $D020 to increment the border colour (test). Then I did exactly the same thing for the panic switch, but DEC $D020 to decrement the border colour (test 2) instead. I also got the tiles to change. The shield tile turns into a standard tile (Shield disappears). The switch on tile turns into the switch off tile. I assembled and executed the new code and tested the test level. The increment/decrement of the border worked. Now it was time to add some more routines to make the code work how it should have.
Some more variables and timers were added for the shield routine. The idea was to create a timer that will give the player a temporary invincibility mode. I also created a table which should flash the player (silver/grey flash scheme). A routine to time the shield counter was also added. I also created a routine to check whether the timer equals 0, indicating that the shield has been disabled. Otherwise the sprite/sprite collision would be bypassed. After I assembled and tested the routine. I had the player flashing for some time (after collecting the shield) which was perfect. Especially for the harder stages of the game, where there will be tiles with panic buttons surrounding the pods.
Now the invincibility mode was sorted out. It was time to add some interesting features into the panic switch routine. I decided to make it look as if the alarms were going off - and the seekers speed up during a short period of time as well. This was to make game play more frustrating and fun. Like with the shield routine, I created a timer and also two colour tables for the background multicolour. Yes that's right, the background multi colours flash on panic mode. The effect turned out nicely, and also the background restores to its normal colours after the panic alarm's switched off (automatically). :)
20th May 2012 More level designs ... and the master of disaster strikes ...
I have been doing some more levels using Multi Screen Construction Kit today, and have 25 working levels done so far, but the bad news is that after level 26 was stored to the MSCK library and I wanted to view all of the levels through MSCK, the program crashed (CPU JAM at $C107). It was very complicated to look at the code. So I'm not sure whether or not it will be possible for me to recover the level. If it is not recoverable, I will have to redesign the same levels using a different utility (I might try Delight by Color7 productions), but it will be a longer process in designing all of my levels (Using 2x2 tiles). Here's a snapshot of what Level 26 could have looked like (if I'm accurate enough).
Friday, 18 May 2012
Scroll it the hard way
18th May 2012
Something more interesting to be added to Trance Sector. A 4-directional scrolling field. Well, that's what I have spent most of today's Trance Sector session with. I wanted to get the scrolling movement to move according to the direction the player uses with the joystick. I created a new counter which can check which value will indicate the direction for scrolling background field. Then I stored values of 0 - 3 into the scroll counter. Where 0 = Up, 1 = Down, 2 = Left, 3 = Right, then I added a routine that could check for what value the counter is and added subroutines, which would scroll the characters that formed the background field, according to direction. This took quite a lot of programming to get implemented into the game, but I still have plenty of memory of additional code, since sacrificing the logo to build a new title screen. (The logo will be used for the intro instead). My next task (Possibly tomorrow) will be to activate the shield for the player, for any time it hits a shield tile. (On later levels), then hyperspace (Warping) to a different area on the same level screen.
Tuesday, 15 May 2012
Trance Sector - Continues
15th May 2012
This week I decided to work more on the game graphics for Trance Sector I wasn't too sure what to draw the game levels with as I didn't want to experience another crash with MSCK. Funnily enough, I found that Charpad was unsuitable to build the levels, because putting the level objects (as single screens) was more difficult. Plus the type of tiles would have been too limited. So instead, I worked on MSCK V2.0 and hoping this time the program won't crash. I managed to rebuild the objects, opened my mind, and built 20 levels. That was Yesterday of course.I even did a new title screen, according to what was written on my little note pad, when I attended RetroVision 2012 Saturday, last week.
Today I worked on installing the new game graphics library into the game's source code, and updated the amount of pods for the player to collect. I even tested the whole game, hoping the library source wouldn't crash. Thankfully it didn't crash. After the 20 levels were fitted in to the code, nicely (Apart from some shield tiles which haven't been programmed yet) I tested through the whole game and found no problems. After I was happy with this, I worked on an ending tune using GoatTracker. Then I ported the music data to the game again. I tried to do some in game sound effects for Trance Sector using GoatTracker, but there were delays before a sound effect played. I think I should program my own sound effects instead, like I did with Sub Hunter and Sheepoid instead. It might be more helpful ;)
The last part of the day was programming the new title screen for the game. In which looks completely different to how I normally program a front end. I usually program a front end using a plain black screen with a logo on the top of the screen, with flashing text, and a scroll text at the bottom. That's nothing unusual. Instead, I decided to work on a more epic title screen, in which displays 1x1 char bricks forming the name Trance Sector on the screen, an upward scrolling ticker tape routine (Like Monty on the Run) inside the window, and also a sprite scrolling message at the bottom of the screen. I was unable to open the borders because for some reason, it kept flickering and delaying when the sprite was there ... So I left it out for the time being. The new title screen looks retro and hopefully the gamers will like it as well. :)
More work on the game tomorrow or Wednesday. Well I have another 44 levels to build up, and probably add some brand new tiles as well, such as seeker switches. Also to get the shield working as well ;)
Sunday, 29 April 2012
Trance Sector Preview :)
29th April 2012
Well finally I have a playable preview of Trance Sector for the Commodore 64. Last Friday evening and Saturday morning, I updated several routines so that the player's background collision was more accurate. I didn't even need a char row/column table for the new sprite/background collision routine. Also got the player to be trapped in a prison for a short period of time. The prison turns into a normal tile after the player steps on it, which was intended. I also got the player to move along the magnetic conveyor belts. Finally I added (for the first time ever with my game projects) a keyboard option. This is so that if a player hasn't got a joystick to plug into port 2, they can use Q (Up), A (Down), O (Left), P (Right), Spacebar (Fire).
I sent a build of the preview to a few of my C64 fans/friends and they were pretty much impressed with the work that was done so far. Alas, I had bugs reported which were silly ones. One of which I forgot to restart the game on the very first level after the game was over, and also the playable demo crashed after completing it. Also the player moved automatically after being released by the prison tiles.
Today I worked on making some vast improvements and amendments to the game. First of all I fixed the major bugs/issues which were spotty last night. I also made some graphical updates to the game sprites. I could not resist programming a little objects display routine, so the gamers know what the objects are - before moving on to the front end. I also added a pause/unpause and quit game function. Then sent the final build (I hope it is the final build of the preview) of the game to my C64 friends/fans to test the preview. So far it seems to be working great. I am really looking forward to showing this preview at RetroVision 2012's retrogaming, beer drinking meeting. :)
Friday, 13 April 2012
Unlucky for some

13th April 2012
13 is an unlucky number. Not really :) Trance Sector's progressing pretty well, as I have had spent time working on it during my 2 hour spare time in the morning. I got the collision with the blockers to work correctly, and also got the score in action. The only problem I seem to get is where the player hits the conveyor belt chars. If the player hits the belt, the belt routine pushes the player the direction it moves ... Good ... BUT, the full sprite is not moving on the actual belt chars ... BAD. The new sprite/background collision routine's even LESS complex compared to the one I used to keep using.
While I am still trying to find a solution to this problem, I got all background animated, and also I built 8 levels for a playable preview of the game, which seems to be working okay - except for the game is really difficult. Oh well, tweaking this weekend I guess :)
Monday, 9 April 2012
Blackout!
9th April 2012
Quite a lucky day today. I had a little trick up my sleeve, which worked a treat. On Saturday I was struggling to get the whole set of lights go out in TranceSector, where the player could switch off the lights, but when moving across the screen. The lights are all switched on (Oh dear). . However, I came up with a clever little trick to solve this problem. I had 3 sprites spare, so I decided to use one as a ghost sprite (Trivia: A ghost sprite is a sprite which is being used, but is not visible in the game.).The ghost sprite was set at exactly the same position of the player's ship, but the Y-axis of the ghost sprite was positioned 8 sprites above the player's sprite. This was used to make it look as if the player is extinguishing all of the lights wherever it gets positions. Next. I copied and pasted the sprite/background collision routine to get the ghost sprite correcting the mistakes that were left to the player. Tested everything. It seems to working pretty good now.
Well, I got all of the lights to eliminate, but there is something missing. The concept of this game is simply to eliminate all of the lights in each level, without getting hit by the rockets that zoom towards you when you're spotted. There seems to be no detection of all lights being eliminated. So I added a routine that will check the whole game screen for any lights visible. At first it didn't work, but I found out why :). I made a silly mistake. After correcting it, I got the routine to work. Here's a little video of the game WIP 2 :)
I will be making some changes for the additional objects. :)
Blockers - They can destroy the player if the player crashes into those.
Compactors - These shall be converted into temporary forcefield prison cells. If the player touches the cell. It will be stuck there for a short period of time until it has been released again
Conveyor belt's ... Erm, well, they will be moving the player, although the player will be able to move over those.
Subscribe to:
Posts (Atom)
Fredrik the Ball is Back: Spider Maze 2 in progress
11th January 2026 First of all, a belated Happy New Year to all C64 and retro kind. At last, a new blog update and a new C64 project is ...
-
Saturday 11th October 2014 (Work still in Progress) Poor old Wayne . He designs a new game, creates loads of graphics for it and then awa...
-
11th January 2026 First of all, a belated Happy New Year to all C64 and retro kind. At last, a new blog update and a new C64 project is ...
-
10th March 2015 My week's HOLIDAY started Sunday this week. It's going to end soon, but I have not only been out and about places ...







