7th May
2008: Smash Zone
Oh no, you're
kidding right? Since when had a space game been for Sub Hunter? Well
this was just a fast experiment where I needed to work out how to make
better and more accurate random sprite routines. Since I was bored on
this Wednesday evening, I decided to try and do a little experiment
and ended up making a funny little game called "Smash Zone" in ACME
cross assembler. This is not really a real game, it was just to make
sure a random routine was working correctly. The whole purpose of the
routine was to make sure that after a sprite leaves the game screen, a
new Position is set to the enemy sprite. Therefore we don't want
sprites appearing on the same line to overlap another sprite.
Before I coded the game, I drew the sprites in Sprite Pad and then
imported those to the directory. I added a music to the same directory
and then I programmed the source code. The source code's purpose was to
read the sprites moving across to the right. Once offset the sprite is
to appear in a new position, where no visible sprite is at that
position. I added an IRAQ (Well, I wanted more things to happen once)
and also some usual typical bayliss-game style routines and then added
a routine to check the positions of the sprites. The routine checks
whether or not a sprite position (read from the random table) reads on
the same line of any of the other existing enemy sprites. If it does,
then the routine reads the next position and continues searching for a
newer position, according to the data table. Then once a spare place is
found, the sprite will be repositioned to that new position and appear.
This was one hell of a fun way to learn to code certain routines. You
can download the actual game + source below too.
Any crackers who download this and release
it on to CSDB with intro link etc. - Why do that? It just some
experiment I have done. If you try and crack/intro link this, you're a
real loser :oP
All I will need to do now is implement the same routine into Sub Hunter
and things should hopefully be much better. When that will be done, I
don't really know :o)
11th May 2008 - Random subs and fish
Well after a nice afternoon out to a park in Tamworth. I returned home
and while there was an hour and a half free, I thought that I should
use that time to tidy up the randomize routine. So I had to remove some
of the routines to get this to work properly. Now once I removed the
not needed routines, I created a new routine that did exactly the same
as what I did with Smash Zone. I tested the random routine. Seemed
there were some small errors here. When sprites move off screen, the
routine crashed.
I worked out what was causing the problem. I did the comparing values,
and loops incorrectly therefore that cause the program to freeze, while
music was still playing in the background. I found a solution to the
problem by taking a good look at the Smash Zone randomizer and position
comparing routine and implemented the same type of routine into Sub
Hunter's source. I tested the level once again. It was sort of working
okay until I come across a silly mistake where sprites were visibly
moving to a random position. Seems that when I used the copy and paste
method in Relaunch64. I had forgotten to alter the values for each
sprite pointer. So I made some corrections and now it works nicely.
All I will need to do now is to implement the routine into the rest of
the save the diver levels and then hopefully after this. I should be
ready to implement the same or maybe another routine into the Sea Wolf
and Shark Attack style levels. Then some last minute tidying
up/improvements for presentation. Then hopefully if all goes to plan
(Fingers crossed) the game should be ready in time for September 2008
(Or maybe before then).
17th May 2008 - Another Random tweak
There still seemed to have been something missing in the first level.
So I altered the randomizer slightly more and now we have enemy subs
and more fish coming on screen more frequent. Now that's cool! :o))
31st May 2008 - Blow up those fish and
memory problems
I have been altering some more code today. This time the level complete
part. The level complete stages had some odd bugs in there, as the
exploding enemies routine did not work properly. So I rewritten the
level complete explosion routine from scratch and implemented it into
levels 1,4,5 and 7. Seems to work like a dream.
I wanted to update level 2's timer part where after the clock strikes
00 seconds the enemies explode and then an interlude (where enough
fish/subs killed or the player failed to kill enough fish/subs). So I
had to code another explosion generator routine for that.
Other problems that I noticed was that during an interlude or after a
stage was complete, the player ship had stopped animating. I discovered
what the problem was. The routine was not calling JSR ANIMATE. So I
made some changes to this routine and the player sub animates nicely
during the interludes and stage complete interludes.
Now for the bad news :( Unfortunately due to changes in the code, for
some reason after level 5, the randomizer stops working. Not only that,
Level 9 is messed up (The game keeps going after clock is zero) The
other bad thing is that game code is virtually *out of memory*.
Therefore tomorrow I shall try and find a way to solve this problem as
well as fix the randomizer. Maybe shorten some routines as well.
1st June 2008 - Problem found
Well seems I do have enough memory to do some fixing. If you
remember about what happened yesterday (Please read above) you would
have noticed that I had problems with the randomizing routines. Seems
that the reason for this was because I changed the labels from RANDPOS1
to RANDSTORE. So all I have to do is change all RANDPOS1 to RANDSTORE
so that then we have proper randomizing. I also noticed that I have
left a silly bug in level 9 after time is up, nothing happens. The game
keeps going, but I have managed to fix this problem though. This has
been fixed by putting the exact routine from level 2's engine in to the
correct area of level 9's engine. So now there is no trouble.
Secondly, I noticed something which Frank had also pointed out about
level 12. Level 12's Shark Attack stage had some pretty amusing bug
where one of the baby sharks was going the right direction, but the
animation was incorrect. Therefore it looked as if the baby shark that
was going to the left was actually moving backwards. So I set the
correct animation frame store value to the baby shark and it is now
swimming and facing the correct direction. It is something you have to
laugh at eh?. I certainly laughed when I saw this error :D
8th June 2008 - 7 days later the
divers gone and never came back
I took a look at the google docs, as I had an email from Frank letting
me know about the old/new glitches made in the game. Seems I made some
new glitches in the game that were not deliberate. It was nothing too
drastic or not able to repair. They seemed easy enough to fix and
repair, to have a perfect working level.
First of all there was a problem with the swimmer/diver. The first
problem which I thought that I solved last week. Seems that I did not
do a good enough job with it. Especially when I overwritten the source
code with the earlier source code on the same day. Anyway, it was
nothing for me to worry about because this glitch was very easy to
find. There was a problem with the randomizer routine and therefore the
diver would not come on screen. Seems that the routine reads something
like this
LDA RANDPOS1
STA OBJPOS+$0F
LDA #00
STA OBJPOS+$0E
It seemed to me that I used the incorrect label. I should have used
RANDSTORE again as value of RANDPOS1 was always zero. After a fast
change of the code the diver routine was working fine again.
I come across the next goof of level 1, where the player's sub seems to
be very restrictive when it is moving upwards or downwards. Frank
suggested to me that I should alter the minimum Y position and the
maximum Y position for the player on all the save the swimmer levels. I
managed to fix this problem simply by changing the stop value for the
player's sub movement. The same for the gravity routine too, else the
player ship would have been bouncing in a silly fashion :o)

This
is level 1 - Blast those fish and save the divers :o)
Another thing, well, not really a bug but a kind of request was for me
to get the swimmers moving across the screen slightly fast. Well, the
solution to this problem was of course to remove the delay routine that
slows the swimmer down. I have now corrected this problem. The swimmer
now swims at the same speed of the slowest fish. Seems to work fine
now.
Now I got back to the documents to see what other problems are in the
game. Seems that there is a problem with the bouncing jellyfish, after
they get shot, the enemies seem to appear at the same line. This is
something I shall look at next week.
Level 5 and level 6 had a slight glitch, where the clock is. For some
reason, a funny char bug appears in the status bar below. Well,
thankfully it was something easy for me to fix, which did not take 5
minutes or so. I had to add a routine that would copy one correct char
to the bugged char. That now fixed the problem.
Finally, to help Frank with his testing, I added a keyboard routine
where Frank could press certain keys to be able to enable infinite
lives, turn the cheat off, skip a level, pause the game or abandon game
(using the space bar).
More work to do on this game next week folks :o)
22nd June 2008 - Countdown to meltdown
(Classic game that was)
Not related to the Durrel classic, but more related to Sub Hunter. Well
you would not really want me to blog about Countdown to Meltdown eh?
Anyway more Sub Hunter work was done today, but not much of it because
I was busy adding the final
touches to Psykozone for Games That Weren't and Binary Zone PD.
Anyway I browsed through the google docs and Frank had pointed out some
new bugs and also some ideas for improvement. And the good news is that
it can be done. I only fixed 2 things today, due to the time (It is
getting late and I have to be up for work tomorrow morning. Weekends
don't last all that long do they? Ah, racked off. Yeah, well racked
off. Okay, enough of my silliness here are the things I have been
fixing today.
First of all the first fix was very simple. Frank wanted a routine
where after enough enemies are killed, the game interlude (Where the
diver goes straight across the screen) comes on straight after the last
fish killed. Well, all I had to do was alter a routine by faking a time
is up routine. This is because the time is up routine triggers an
interlude after time is up. This worked nicely.
Finally a major bug was spotted. For some reason after the first shot
instead of the hit counter going down from 10 to 09, it went from 10 to
07. Very strange bug. I realized what I did. The routine was calling
the value of char #$53 instead of char #$55 where char #$53 is the
value for the counter no. 7 and #$55 is the counter 9. This got fixed,
and I decided to remove the invisible fish kill limit routine as I no
longer needed that. This is because I can easily use the counter value
chars and if they are 00 then the diver saved interlude comes on.
There is still a tiny thing to to to improve level 2, but I will work
on that later on this week.
25th June 2008 - Level 2, is it ready
now? I hope so!
Well, I have been doing some more work fixing level 2 today.
There were a couple of things that were required for me to deal with.
The first of which is to update the the total number of enemy fish to
be killed, up to 14 instead of 10. Before I could actually do this, I
had to alter various routines in the game's code. I noticed that parts
of the game's code was actually unnecessary so I deleted the old
routines and built a new routine, so that setting a number of enemies
to be killed on Sea Wolf style stages is set according to the level the
player is taking part with.
The second improvement that I had to make, probably was one of the most
easiest things I have done today. Frank suggested that the number of
divers saved in this game equals 5 instead of 3. Well, saving 3 divers
instead of 5 makes this kind of stage too easy.
Hopefully that is level 2 finished but I better not jump over the moon
about it yet. You heard of Sod's law eh? If not, then where have you
been? Now I do major backups of this project :)
26th July 2008 - Sub Hunter preview
Something slightly different to bug fixing because I just could not
resist to create a 4 level demo of the game, so people can actually try
it out if they wanted to while more work is being done to the
production. I made a copy of the main game code and scanned through
various routines. I searched for the level parameters and deleted a
load of those so that there were 4 levels. Once I did this, I also
fixed the collision routine for the swimmer. The swimmer can't die
before reaching X-position of 12 pixels ($0C), that way it makes the
game fairer.
Finally to touch things up, I typed a new scroll text, screen text
relocated the Sub Hunter Trance tune and programmed a small intro
screen with credits and instructions. Assembled everything, and got a
working demo. All I need to do now is upload it and then make another
backup of my Sub Hunter project.
27th July 2008 - A bit of a trim
Earlier on in the week I had an email from Frank from another
person saying that there are too many levels in this game. So he
suggested that I should cut some levels out so that instead of 29
levels, we have 25. So I browsed through the code to make a load of
changes to the level parameters. The levels I had to take out were
level 5, 25,27 and 28. It took a while, but I got there at the end :o)
While I tested the game, there were still some settings that were
incorrect during each level. Basically the game timers/counters showed
the incorrect things. Sometimes you could see OXYGEN in stages that
should have not displayed this kind of text. So I corrected the problem
and tested it. Well, the game is nearly finished now :o)
Another idea had hit me for the Luna Lander stages, so I decided to
change the music for this stage by using the title music.

3rd August 2008 - Fairer collision and
additional game tweaks
Some more high priority bugs had been reported on Lemon64 and
elsewhere, which Frank added to the bug fix documentation. In the
documentation was a link to the video of one person play testing
the game. I downloaded the video and watched it in a movie player. The
video showed that the collision in the game was very unfair because of
something which we call "Unfair Game Death Syndrome". When enemies are
killed, during the explosion sequence, it appears that the player dies.
Unfortunately this is unfair for a game like this, so today I updated
the player/enemy collision routines. Something sure was missing there.
So now, to get a collision much fairer, I entered the following in
DASM.
PLAYERCOLLISION
LDA OBJPOS+$04
CMP COLLISION+0
BCC ENEMY2CHECK
CMP COLLISION+1
BCS ENEMY2CHECK
LDA OBJPOS+$05
CMP COLLISION+2
BCC ENEMY2CHECK
CMP COLLISION+3
BCS ENEMY2CHECK
LDA ENEMY1_DEAD
CMP #$01
BEQ ENEMY2CHECK
LDA #$01
STA PLAYER_IS_DEAD
RTS
;REST OF PROGRAM
After doing this kind of routine for all the enemies, (and alter the
values of the object position) the collision was much fairer. The only
time where the player will die when the enemy explodes is if it hits
the enemy first after shooting. So collision is much fairer now.
I checked the docs and there was a report of level 2 where it shows
that fish are moving faster after the first swimmer is saved. I checked
both the preview and the game and I could not see any difference in
game speed. So nothing was needed to be fixed here.
Now on to level 3. Someone suggested that rather than use the fire
button for me to release the player's sub in all luna lander stages,
they thought it would be better for the player to use down when they
feel that they are at the correct position. So what I did was update
the level 3 joystick settings so that the player can move down at the
start of the round. I simply done this by cutting routines from the
fire button control and pasting to the down control. I also altered
where the routines should jump to so that the release sub routine
worked correctly :o)
4th August 2008 - Disabling control
and a quick flash
I got an email back from
Frank. There was something that was needed to be done for level 3, and
that was to disable the 'down' control when the player's sub is moving
up (After a diver was collected). I added a small routine to disable
this control.
Secondly I was fiddling around to try and avoid the colour fading bug,
where visible black square chars are amongst the sea beds during the
fade in and fade out process for levels 3, 4 and 6. Sadly I was unable
to fix this problem. It was way impossible for me to do such a task, so
I decided to leave the colour fade how it is for now. I contacted Frank
to let him know of this problem. I found it impossible to mask the char
colours along with $D021, $D022, $D023 colours.
One more thing which I done is fix the clock in level 15 (Sea Wolf) so
that the time is actually 20 seconds instead of 90 seconds. Seems that
here I sort of turned the clock value into a REM statement in the
assembler, which is why I had 90 seconds instead. So I removed the ';'
symbols by the commands and that fixed the problem nicely.
6th August - Let's free some more
space for the code
Well seems that after doing some of the fixing in this game
project, I was running out of space for tweaking the code. Which is bad
really because I do need a little more space to free up. So I activated
the M/C monitor on my Action Replay cartridge and I browsed through to
see where some wasted memory could be used for the data. So that more
source code can be added to the project. Just take a look at this image
below. I have way less than 1K left to use for the main game
code/tweaks. That means that after $9168, the code would
overwrite the colour data for the title screen char set and scroll.

Not good eh? We need to free this
space. :o(
While I was browsing through the M/C monitor, I noticed some more
wasted data full of zeroed memory. This wasted data was located at
$AD68-$B000. That meant I had some space for the title screen colour
data (The colour data for the moving clusters). So I moved the colour
data through to $AD68 and altered the title screen code, so that the
data at $AD68 is pasted to the colour RAM. The fantastic news is that
it worked and now I have just enough memory that can be used for the
additional code for the tweaks and improvements for the bug fixing.
Look at all that memory below :) The '@' represents empty byte. :) Much
better.

That is probably enough memory I need
to use :o)
10th August 2008 - Get in line Jellyfish
and more bonuses!
Today I have mainly been working on fixing the level 4 stage.
There was one problem which was very important with this level. It was
mainly to do with the positions of the jellyfish after they left the
screen or get shot. The jellyfish still acted strangely as they got
bunched over each other. Well I spent just up to two hours to try and
solve this problem. For this game we wanted jellyfish to form in a
proper line than get bunched together. I fixed the problem. It seems
that I should have compared the value of the enemy's position and
disable the 'Y' movement for the enemy after it got shot by the player.
I should have thought about that ages ago. I also updated the default
'Y' position table values for the enemy jellyfish. I tested it and it
worked nicely. I'm pleased with the result for this level. Hopefully
Level 4's jellyfish attack stage is finally ready. We'll have to wait
and see what Frank says.

Now
rather than stop here. I thought I should do a bit more
tweaking/fixing. This time it was time for the bonus stages. The bonus
stage was way too hard because the mines move way too fast. Instead of
going up to 8x speed, I set the final speed for the mines to 4x. That
should make things more simple. Another problem which this stage has is
that the mines' y position seems to go overboard into the status bar
and also if they go too high. they will end up going off screen. I
needed to restrict the positions for those mines. So I set the top
position as $48 min and bottom position $d2 max, so that those mines
will not exceed the limit.
The random tables needed adjusting a little, because of the mines
overlapping each other all the time. Well, it cannot really be helped
much because avoiding this from happening when mines bounce up and down
is extremely difficult, but I altered the randomizer routine to link it
with level 1's randomizer routine and sorted the problem out slightly.
Unfortunately the mines are still overlapping, but it cannot really be
helped.
The final task this time was to add a routine for where the player
survives each bonus round. The player should get a reward. So I added a
routine which will give the player an extra life if it has less than 4
lives, else no extra life will be given. I tested the routine, but it
seemed to have reversed the print extra life sub on screen. So I
reversed the position of the routine that does the extra sub display.
Now I'll do a major backup of the project and call it a day with this.
Will do some more work on the project later on this week or next week.
13th August 2008 - It takes 2 baby!
Now that level 4 is now
finished, and the bonus round is sort of finished, I decided to work on
level 6, the sea horses stage. There was a suggestion in the google
docs which was to make 2 hits for the sea horses before they could die.
So I altered the enemy collision routine slightly, which is something
like this:
IF STAGE
= 7 (Stage 7 = level 6 and 20)
THEN
NO OF HITS TO KILL ENEMIES 1,2,5= 2
ELSE
NO OF HITS TO KILL ENEMIES 1,3,5 =
1
END IF
As well as altering the collision routine, I also had to add 3 new
labels that correspond to the sea horses, so that they get 2 shots. I
named those:
ENEMY1_LIFE
ENEMY2_LIFE
ENEMY3_LIFE
and used
DEC
ENEMY1_LIFE
LDA
ENEMY 1_LIFE
CMP #$00
BEQ
KILLENEMY1
RTS
KILLENEMY1:
LDA #$01
STA
ENEMY1_DEAD
RTS
and I used the same method for the other three sea horses.
The next thing to fix was the max Y positions for sea horses because
the sprites were also going over the status panel. It seemed that I did
not set the correct Maximum Y=position. Seems I used #$D8, which was
too close to the panel, so I used #$CE instead, which was much better.
Nothing else to do on this level now. So I'm off to bed. Until next
time :o)
16th August 2008 - More and more hard
work
Quite a big chunk of the project has been done today. Some major
bugs fixed and also some game tweaks. Quite a bit to mention here
today. Still it should be worth the read anyway.
First of all, I decided to update the counters for the levels from 1 -
14 to the new counter settings. The timers mainly required time
increases for the first 12 levels, and a bit of timer decreasing for
the other levels. I shall alter the oxygen settings to levels 15-25
either tomorrow or some other time. Once the timers are done I should
hopefully have most of the game finished. Just the randomizer bugs to
fix and also the guardian stage.
Level 2 and level 8 had problems with the animation. What seemed to
have happened is that after the player drops a depth charge on to an
enemy sub or an enemy fish, the explosion animation does animate
properly. So I had to browse through the code to find out what was
causing the problem for those two sea wolf style stages. Seems that the
problem was that I accidentally homed the sprite which was being
animated as explosion by setting zero to sprite 2's Y-position. So I
removed the zero sprite routine from where it should not have been and
then compiled the game again. This time the animation worked
excellently well. I was overjoyed now that major bug has finally been
fixed. It was bugging me for a long time :)
Now's the time to move on to the next problem. Seems that the enemy
fish in level 9 was animating badly, so I had to alter the data tables
for the fish, so I browsed at the sprite animation which Frank had
prepared for me using Sensible Software's Shoot 'em Up Construction Kit
(SEUCK). After taking a look at the SEUCK sprite animation I altered
the data table in my code for the game's sprite animation. I recompiled
the source, and tested it in WinVice again. The animation was still not
correct, so I made some more alterations to the data table for that
enemy fish. Now it works slightly accurate enough.
Still on level 9's updates. The next thing which I read about this
level (In the Google documents) is that Frank suggests that the jelly
fish enemy should be replaced with a different enemy, due to the
direction it is moving. So I changed this enemy into an octopus. A pink
octopus in fact. I tried purple at first, but sort of clashed with the
game background.
Now on to level 13. Seems there was a problem with the background
colour scheme. The level used a pink/red mix, which clashed with the
swimmer's colour. So I altered the colour of the background. At first I
tried the green scheme, but unfortunately the background clashed with
the enemy fish's colour so I changed the colour scheme to an orange and
brown colour scheme. It suits this level quite nicely. Secondly, I got
the enemy fish bobbing in this stage, to make things more interesting.
Looks a very nice level now!

Now I
shall do a couple of backups of this project and continue with this
project's fixing stages some other time. When I feel like it that is.
17th August 2008 - Something a bit different
I felt like doing something a bit different yesterday. A front
end for the Sub Hunt (Vic 20 style) preview, which I fixed. It sure was
a bit of fun there, but this will be for the Sub Hunter goodies disk.
The front end looks like the same front end as the original Vic 20
version, but I called the game "Sub Hunt 20" because it was a tribute
to the Vic 20's original version of the game. Sadly the overall
result - the Vic 20 tribute game has to be reprogrammed from scratch
because it was made about 3 years ago and I had lost the source code
for the main game. The collision was poor, and the randomizer was
tacky, but I could not resist doing something on it.
18th August 2008 - Oops, that was
stupid .... Stupid!
Time for you all to laugh at this crazy clumsy programmer. Yes, there
has always been a disadvantage to using cross assembly inside the MSDOS
command prompt. Well seems I forgotten to backup what I had done
yesterday. I wanted to update one or two of the program filenames, by
removing the scrolltext.prg and do a new one for the title screen. I
wanted to delete the old prg file. Because I was half asleep, tired
from work, but wanted to do a little something else for the project. I
typed in a command that deleted every single file in the Sub Hunter
diary. The stupidest thing was that the prompt asked me "Are you sure
(Y/N)". I should have pressed 'n' but pressed 'y' instead. That was a
bit of a stupid mistake. Especially that I forgot to update the backup
file when I was doing more on the project on Saturday. A really stupid
move. So unfortunately I had to roll back to the sources from 10th
August 2008 (Which was thankfully on the CD ROM) and start from after
10th August. So I started fixing some parts of the game.
19th August 2008 - Here we go again
....
Well,
because of that stupid mistake yesterday I pushed myself hard to do the
fixing from the past few days (or week) and I was pleased that I
managed to get most of the backlog work (from previous days) done. The
main things that I done (Backlogs) were as follows:
- Sea wolf stage explosion
animation - now correct
- The check that fish been killed
just as clock strikes 00 in sea wolf stages
- Level 4's Jelly fish correctly
in line
- Level 9's orange fish animating
correctly
- Update time and oxygen counters
for all the levels
- Updated the number of hits to
kill the sea horse before it dies to 2 hits
- Updated the background colour
for level 13 to orange.
I still need to fix level 6's stage
and also 13, and then I'm back on track again. I'll do the level 6 and
13 fixes tomorrow or Thursday evening, but rest assured I definitely
have remembered to do a backup of today's update. Now if I can get 6
and 13 done again, I should hopefully be back on track again. Which
would be good news.
20th August 2008 - Level 6 - again!
Well, I have been trying
to fix level 6 but the bad news is that I forgot how I fixed it
properly. I got the sea horses positioning after killed fixed. I have
been trying to fix the octopus bounce, but at the moment it looks off.
Maybe I can get those fixed tomorrow. Then level 13 again. Bah!
23rd August 2008 - Level 6 and level
13 fixed and a better randomizer created
Well, on with the Sub Hunter project and this time I done some
fixes for level 6 and also level 13. I also worked on a new
randomizer and position compare routine, according to the level that
the player is taking part in. Looks as if I am getting closer and
closer to the end once the new randomizer routine was updated, I linked
the randomizer routine to the rest of the remaining levels that
required i, except for the Shark Attack stages, which did not really
need it.
Now that the updated randomizer routine has been added and sort of
correct the next thing I done was checked on the google docs to
see what things I needed to fix. Seems that the Shark Attack stages are
all right, apart from level 18. I have also been working on some major
update to all the harder levels, to make things more tougher to play.
Well now, most of the game is finally finished (I think) but of course
there are still one or two things that I will need to fix, including
the game's bonus stage. But that can wait until some other day.
For the final trick before I call it a day I done the following:
- Fixed randomizer routine for
most levels (Except for the Shark Attack stages)
- Updated the enemy colours
(Level 6 uses cyan octopus and grey sea horses and colours are
different
for a later level)
- Made a new bob sinus for the
octopus in level 6
- Triggered later stages to make
them harder (i.e. Level 1's fish is slow and recycled level 1's stage
where level 14's fish is faster)
- Killed the enemy fish bobbing
for level 14 - one sacrifice due to lack of memory left in the code.
- Boss shark stage now in the
shark attack caves.
- Fixed collision for Shark
Attack stages
And basically that's the fixes done
today.
24th August 2008 - Game and title
screen now Finished, I think ;o)
I have been working really hard today to get as much fixed as
possible (Those of which needed a major fix up). Seems I have succeeded
- I think. First of all there was a problem related to level 1's
randomizer. It seemed that there were no enemy subs coming on screen. I
realized what happened. Seems that I had put a REM command next to a
routine that randomizes the positions of the enemy subs.
Once that was repaired I worked on with the sea wolf stage. Seems that
when a phase is done in this stage, the second sprite does not go off
screen. So I fixed that one nice and easy.
Thirdly there was a major problem with the bonus stages. The mines had
a mind of their own and they did not randomize, so I fixed this problem
by updating the bonus stage to randomize well like with previous
levels. The mines were still bunched together, so I altered the default
start positions so that when they are on screen, they are more spaced
out. I had removed the mine's bounce routine before I done that. Seems
I managed to fix the mines randomizer quite nicely. So now I brought
back the bouncing mine routine. Looks a lot better now.
Now it was time for the shark attack fixing stage. First of all, the
red colour scheme looked crap for this stage, so I turned it into a
nice blue cave instead. When playing the level itself It seems that
this stage was way too easy to play, so I decided to make some
alterations to it. First of all I adjusted the minimum x-stop position
for the player's sub. That was to make things slightly harder.
Secondly, there was something else missing for this stage. The shark
needed some protection by the fish. At first when the player is
shooting, the player's bullet goes right past the enemy fish. So I
quickly added a routine, which checks for a collision with all enemy
fish. So if the player's bullet hits the enemy fish, the enemy fish
will eat it, instead of the bullet going across the screen. Now that
made this stage much harder, but not impossible, because I still manage
to defeat the shark without a life being lost.
Just some minor tweaks
now. The sprite animation. I took a look at the animation frames from
the SEUCK animation snapshot which Frank had sent me. Seems that in the
game the animation needed some tweaking, so I altered the sprite's
animation tables so that the animation for some of the enemies matched
the SEUCK animation. First of all, I animated the Jellyfish, as the
main animation for the jellyfish was not good in the main game. So I
altered the table and animation routine. I managed to get the right
sprite animation for this stage. That was great. Now I altered the
animation frames to the other enemies that required better animation,
and also succeeded there too. Then I finalized points for the enemies
shot. Now (fingers crossed) the game is finished.
Now it was time for me to finish off the scroll text and update the
title screen. First of all, I entered a new scroll text, then converted
it for use with the game project. I slowed the scroll text down a
little. My next step was to redesign the presentation lines. I had to
make some new clusters for the title screen. So I used the Action
Replay screen editor to alter the text, colours and also added some
more animated chars to the screen. I saved the colour and screen data
and replaced the original colour and screen data files with new
colours. I then tested the front end and the game. Looks fantastic and
there seems to be no problems. I think the main part of the project is
finally finished and that I'll be ready to work on the intro/story line
of the game. Should make things interesting :o)
Just
to let you know. When I work on the intro stage, I won't show any
pictures of the story line. You'll just get text :o)
26th
August 2008 - Nope, not finished yet, new bugs to fix!
Seems that there are still bugs and some other improvements to
have been made. Frank has done a new Google document which is the Sub
Hunter Final fixes/improvements. I went through the docs and seems that
lots of high priority fixes to be made. Oh no :o( Heheheh. Anyway I
didn't do much today, just fixed the first top priority problem.
Level 1 had a problem where enemies were placed in random Y positions.
That was good, but the problem was that the bobbing enemy fish appeared
at the very top of the sea surface and then disappeared into the raster
split which turns them off. So it looks as if enemy fish are vanishing
and coming back again. Not good. Not good at all. It took me about a
couple of hours to try and work out what was causing this problem. I
got really frustrated because the code was correct and there was
nothing wrong with the randomizer routine. Finally I discovered my
problem. Nothing wrong with the code whatsoever. It seems that my major
error was one of the bytes in the random positions data table. I used
$40, which puts sprites at the top above the raster split. So I
replaced it with $50 and it solved the problem.
28th
August 2008 - Slower, Faster
This evening was another interesting fun evening with the
project. Well, creative I suppose. It has been said that the Sea Wolf
style stages seem to lack in random speed for the enemy fishes or enemy
subs, depending on the current Sea Wolf stage which the player is on.
So I created a few routines to randomize the enemy speed and then
implemented the new speed into the the stages. This will work after an
enemy leaves the screen. Not only will it appear at a newer position,
but it will either zoom across at a fast speed or a slow speed. It will
depend on the calculation for each fish or sub.
The speed of the fish and also the subs were successful but there was
still another problem. It seems that in the Sea Wolf stages, the random
Y positions seem to have looked a mess for this stage. So I had to
create an exclusive new stage random data table and also a new position
randomizer that was exclusive for the Sea Wolf stages. This did not
take too long to update and fix. So that was good news.
Finally, I did not like the Get Ready bouncer much and I wanted to save
some memory, so I removed the bounce sinus data and also the bounce
sinus routine from the code. Much better now.
30th August 2008 - A full day of more
high priority fixes
Well seems I have been very busy with this Sub Hunter
project today. I have been browsing through the high priority section
in the final fixes to see what needed to be done. Well, a very bugged
game would not be good for a player. Especially if they could end up
with a random crash or something stupidly unexpected would cause
problems for the player. Anyway let's not gabble on with this paragraph
and just jump on to the next paragraph which consists of more bug fix
banter.
First of all, on top of the list was something which I never done
before with any of my 6502 programmed games, and that is rewarding the
player an extra life for a certain amount of points scored. Frank
suggested this to be a high priority so I took a look at his
formula/hint to make a high score. It reads something like:
REM
*** INITIALIZE
VARIABLE AT THE START OF EACH NEW GAME
NEXTLIFEAT
= 50000
REM ***
CHECK IF EXTRA LIFE
SHOULD BE AWARDED EACH TIME CURRENTSCORE IS INCREASED WITH POINTS ETC
REM ***
MAKE THIS A SUB
ROUTINE CALLED JUST AFTER A SCORE INCREASE OCCURS.
IF
CURRENTSCORE >=
NEXTLIFEAT THEN
NEXTLIFEAT = NEXTLIFEAT + 50000
LIVES
= LIVES + 1
END IF
Now then
how was I to turn this into 6502 assembly code? The second question was
how am I to work out the routine. I was spending about 10 minutes
thinking about how I could come up with this routine? Well after the 10
minutes thinking time, I come up with a perfect solution. An invisible
scoring routine, which will read the score and if the second char in
the six chars is read as 5, I call a routine that will award the player
an extra life (If number of lives is below 4 else the routine ignored.
Maybe I should make it that if lives = 4 then player gets awarded a
temporary shield, but I'll have to wait and see what Frank thinks about
this ingenious little idea of mine :o)
My second fix which I had to do was update the swimmer's immunity.
Seems that when playing level 13 of the game, the swimmer gets killed
by the subs and fish too frequent before it even reaches a certain
position on screen. So I altered the routine where after the swimmer
passes $2C pixels, the immunity is turned off. This makes level 13
slightly easier and fun.
The third fix was to do with the oxygen status. When the player loses
oxygen, a life is lost but the oxygen counter does not freeze while the
player dies. It is always a good idea for the oxygen counter to reset
the current level's default value after the death sequence for the
player has finished. So I had to create a new routine that will check
if the player is dead and whether or not the player had run out of
oxygen. I tested this feature and it worked nicely. There was still
another problem with the oxygen counter. It seems that the counter
gives 99 points extra to it instead of resetting as default. I found
the silly problem and I fixed by changing the two 99 digits to 00. I
tested it, and now it seems present and correct.
Now it was time for me to take a look at the bugs in level 2, where
there was no baby shark coming on screen. Seems there was nothing wrong
with the code apart from that I forgotten to randomize the shark's
position. I also cut the routine from level 8 shorter to use level 2's
code, because I did not need level 8's longish routines, so I cut those
down a bit. Another bug in level 2 is that the explosion/bubble
animation were not correct after time runs out or after the last fish
or sub is killed. The colour was incorrect and it required looking at.
Seems I was trying to activate more than one animation on the same
sprite, where explosions mucked up. I fixed this problem now the
animation seem to work nicely.
There was also another problem with level 8. There was an unnecessary
bug where the player is constantly exploding and losing lives when a
certain enemy sub goes past. There was a weird problem with the
collision routine, so with a quick fix it is done. The second problem
was that anytime the player is killed the player was still able to drop
bullets. So I tweaked the routine that was causing the problems, so
that the player will not be able to drop bullets when it is going
through the explosion death sequence.
Now on to the bonus stage. It looked as if it could do with some
improvements where the player collects a gem to score 1000 points. Well
it seems to me that this collectable item in the game lacks animation,
so I decided to add a new sprite animation frame table for the game and
an standalone animation routine. Now when the player collects the gem,
the gem will use the player sub's explosion frame and then display the
1000 points sprite for a short time, then all is offset. Now the bonus
stage is (hopefully) finally finished.
Finally, the title screen text go realigned so that everything is
centred.
31st August 2008 - Twice the effect,
twice the sound
Frank suggested that the game would need some sound
effects for it, so I dug out the MONASE V1.0 sound effects editor and I
created some sound effects for the game. The sounds sounded really cool
and MON style. I saved the built player to $9700 and then implemented
the sound effects into the game's code. Sadly the SFX player wasn't
compatible with my code, so all I could do with the cool SFX is produce
a demo featuring those effects, for the Sub Hunter goodies disk.
However that did not stop me from putting sound effects on to the game.
I dug out the Cult SFX editor and created some new sound effects and
then I added those in to the game code. However before I could do
exactly that, I had to update the positions for the title screen code
and also the end screen code. Unfortunately I was very limited for
memory, because most of it got used up around the whole M/C addresses.
So for now, I removed the title code and also the end screen code. Now
I added the sound effects which I made using the Cult SFX editor and
relocated the player to $9700, added routines to play sound effects -
the smallest way where possible. Then I tested the sound effects. Seems
to work, despite the sounds sound nothing like MON style sounds, but
they will have to do for now, because space is very limited. Plus the
sound effects player is compatible with my code.
Now that the sound effects are working (I can improve my new SFX to
something better later on this week with the editor as I still have to
SFX source). Now it was time for me to add the end screen and title
screen code back into the program. I had to move the routines around. A
bit of brainstorming was required, but I finally succeeded this problem
with thanks to adding some relocator routines for the end screen code,
that will transfer data from an illegal address ($D800) and then
pasting it to $1600-$1A00.
Finally, I added a routine that will allow the player to chose between
sound effects or music, using left/right on the joystick in the title
screen. The routine works nicely and now hopefully the majority of this
main game is finished, just some small minor tweaks which wont be
memory consuming. :o)
1st September 2008 - New look front
end and making sounds
Frank saw the new title
screen with no scroll text, but sadly it looked pretty boring as there
was no scroll text, so he created a new mock-up of the title screen
design. So I redesigned the title screen and added a blue border at the
bottom of the screen with some Cyan text and added a double lined
separator at the top and the bottom of the border. I also added the
Psykozone Music and SFX sprites into the title screen, for the
availability of allowing the player to choose between music or game
sound effects. I showed (what I thought was) the finished front end. He
liked what he saw, but found a small mistake in the title screen. The
lines were too thick. Seemed that I copied the plan when the screen
shot
which Frank designed was not drawn to scale. Still that is an easy
enough job. I can correct the lines in Cuneiform, but I'll do that some
other time.
Although it was getting pretty late and I have to get up early for work
at the busy warehouse, I have come across a perfect idea to create some
sound effects. I wasn't all that impressed with the SFX editor, so I
decided to recreate the game sound effects by programming my own sound
effects player and data tables. So I started programming a simple fast
interrupt routine (IRAQ) and then built my own routines to initialize
and play the sound effects that I'm programming right now. First of all
I was looking up some information to make filters because for the
player shooting, I wanted to use a filter sweep. After experimenting
a little, I ended up doing a good filter sweep sound for the
Commodore 64. This was a perfect sound for the player sub shooting
depth charges.
The next sound which I wanted to do was the explosion sound for the
player's sub. Well, an echoed drum-beat style sound would suit the
explosion sound and I did exactly that. I set the low and high pulse
rate as 88, so I had a perfect sound for the drum style explosion
effect. Brilliant result.
Now before I go to bed I decide to make two more sounds, which are
related to the swimmer rescued and also another sound the swimmer's
death. I mixed wave forms and the arpeggios for the sound of the
swimmer saved and tried a little scream effect for the swimmer's death.
The sounds turned out pretty cool. I would have programmed some more
sounds, but sadly time for bed. Maybe tomorrow or Wednesday.
Night, night!
2nd September 2008 - More blips and
bloops
It is a late session today. Only spent half an hour to 45 minutes to
finish off my sound effects for Sub Hunter. I worked on the
sounds for gem collected (Bonus stage), which was using a sort of
arpeggio score. The extra life sound, which is a simple 'ting ' sound.
I also worked on the enemy explosions. The enemy subs explosions sound
the same as the player's sub explosion, except for that the enemies use
a lower pitch to it. Now most interesting of them all is probably the
explosion sound effects for the sea creatures. As those sounds are m
mixed pitches with some mixed effects. Now the sound effects for the
game are finished.
3rd September 2008 - A little more fixing
I only done a a couple of tiny jobs today. First of all, I fixed the
lines in the blue border for the Sub Hunter title screen. The char was
meant to have 2 thin lines, not one thin and one thick. So I corrected
the charset in Cuneiform then replaced the charset file. Looks much
better now. One task done, on to another quick task.
Now that my sound effects were finished, I decided to add the new
sounds into the game. So now, I had to assemble my SFX player (Minus
IRAQ interrupt) to $9700. Well, that was easily done. The second thing
which I had to do was alter the parameters of the player/swimmer
collision as it still wasn't quite right. (See what I said earlier). So
I updated the collision co-ordinates so that I had an accurate reading
for player/swimmer collision.
Well, I shall now take a couple days rest and do some more
fixing/updates this weekend and hope that it will be all finished and
ready for testing so that I can work on the intro/storyline. Which will
be somewhat different. Tomorrow + Friday, Time to play some C64 games.
6th September 2008 - Could this finally be
the end of fixing?
Yet a lot more fixing has been done today. So hopefully the final
fixing stage of the main game is finished. (Fingers crossed).
First of all the sound effects were required to be updated. There was a
problem with the filter sweep effect, so I updated this effect so that
instead of using a filter glide, it uses a standard filter. I updated
the filter effect and imported it back into the game project file. Once
that was done, I had to create some routines that will play sound
effects depending on the type of enemy that is being shot. So I updated
the routines so that they could play effects.
- Player shoot
- Player explode
- Level start
- Enemy subs explode
- Enemy fish explode
- Swimmer rescued
- Swimmer killed
- Extra life
- Bonus stage gem collected
One major problem that I had when I implemented those sound effects
into the game, were some silly interruptions occurring continuously. So
I altered the INITFX routine, so that all sounds are set to zero. That
way I could have nice clean sounds playing in the background. Much
perfect .I'm happy with this.
The next part of the bug fixing/improvements phase was improving the
boss shark. It has been reported that the shark's collision was not
good as the collision could not read the whole shark. So I added a new
calculation to the shark collision and it worked a treat. My next step
was to update the boss shark's spitting fish timer. So I created some
new routines to make the timers more interesting. The rapid firing of
the enemy fish was updated according to the big boss shark's behaviour.
The first part, is where the baby sharks will be spat out less
frequently. After 10 hits, the behaviour of the shark changes. The fish
get spat out slightly more frequently and faster, and after another
several hits, the sharks get spat out more frequently and faster.
Finally the final part, the boss shark starts moving towards the
player's sub, and still spitting the fish at a fast and frequent speed.
Now the boss shark stage is finally fixed I had some minor updates to
do to the game. One of which had a major bug that could lose points in
the game. On level 6 the player's bullet seems to appear in a strange
Y-position when it hit an enemy. I found what was causing this problem.
It seems that level 6's bullet collision routine was missing a poke so
that the player's bullet was homed off screen after it had hit a sea
horse. The routine is now fixed.
Now some other routines, which I also fixed:
- Move the PRESS FIRE chars to a correct position for the end sequence.
- Fix the jump address from the end screen back to the title screen
- Update the clocks and oxygen counters in the game according to the
testing documentation issue by Frank
- Fixed the charset for the title screen's presentation.
I am very pleased with the overall result. Hopefully now, the game is
finally finished and ready for play testing.
7th September - Intro time
Finally I have nothing else to do to the main game. So now I
worked on with the intro story line. First of all, I had to create a
new folder, because this time round I wanted to work on the intro using
a much more easier cross assembler known as ACME. The first thing I had
to do was to extract screens and bitmaps to specific load address to
the project folder. Once I done that. I exported the graphics, charset
and the rest of the data to the project folder. Next I had to compress
all 3 bitmaps, by using the Exomizer level cruncher mode. This reduced
the bitmaps to size and I assembled the Exomizer decruncher routine for
use with the intro (Magnus will be credited in the final release) to
$3800. Then I started programming.
The first thing which I had to do was program a double IRAQ interrupt
for the first part. At first I did not get it to do much except to play
"Sinful" by Drax (This is a tune which Frank selected for this intro).
Now I created a few routines that will decrunch the picture and display
it on screen. Seems to work okay.
Now this looked a bit boring, so I checked through the text Frank gave
me, and I added some transitions and texts on to the screen for each
picture. Then worked on the intro animation sequence. Finally added at
TO BE CONTINUED at the end. That's all for today.
13th September 2008 -
Back to the game tweaks again
I was browsing the Sub Hunter
testing forum and I noticed that some improvements were required to be
added to the game, itself. Thankfully not too much. Before I could
actually do that I had only $02 bytes free. It seems that I would have
been unable to do any more additional code/tweaks for this game unless
I had spare memory. Well, how do I get out of this awkward situation? I
had to come up with a plan.
Well the good news is that I did come
up with a plan to spare memory. First of all, I decided to merge all
source code for the title screen, end screen code relocator, sound
effects and game code together. As the SFX code was taking up certain
areas of memory which I desperately needed for further tweaking. After
all of the merged source code assembled I had more than $02 bytes of
memory stored. There was still one problem which I had to sort out.
Freeing a little more memory (For just in case). Well, I managed to
free some more memory by reprogramming the multiple IRAQ interrupts for
all the save the swimmer stages.
Now that memory saving was done, I
done some further final fixes. The Sea Wolf stages needed to be tweaked
slightly as the game was really difficult, due to the speed of the fish
or enemy subs. So I followed one of the comments from one of the
testers who suggested that I should have a fast speed for level 2's
depth charge, medium for level 8, slow(ish) for level 15 and slow(ish)
for level 22. He also pointed out that the number of swimmers to be
saved should be according to the level played. So I added a couple of
new routines that will count the number of swimmers saved and also
calculate the speed of the depth charge. It sort of worked, but one
problem which I had was the time and amount of enemies to be killed. So
I set up the time (for all Sea Wolf levels) to 30 seconds and done as
follows:
Level 2:
Time
limit: 30 seconds
Fish to
kill: 15
Swimmers
to save: 1
Depth
charge
speed: 4
Difficulty: Easy
Level 8:
Time limit: 30 seconds
Subs to kill: 15
Swimmers to save: 2
Depth charge speed: 3
Difficulty: Easy
Level 15:
Time limit: 30 seconds
Subs to kill: 10
Swimmers to save: 3
Depth charge speed: 2
Difficulty: Adequate
Level 22:
Time limit: 30 seconds
Subs to kill: 15
Swimmers to save: 3
Depth charge speed: 2
Difficulty:
Hard
Now that was done, I fixed some Luna Lander stage bugs (Which I noticed
myself). The joystick control was still in use while the player was
moving off screen. So I put a stop to this problem. Secondly the player
could still move while it is exploding. I disabled the joystick control
for this. Also for some funny reason the swimmer stranded on level 3's
animation stopped when the player was dying. I fixed this problem also.
Finally for the game code tweaks, I restored the Get Ready and Well
Done bouncing sprites as I now had enough memory for those. Then I
updated the title screen layout by centring the text and reducing the
gaps between each letter. Also I made a black screen decruncher for
before the game decruncher, you get a plain black screen. Professional
decrunch was necessary! No text or effects whatsoever. Hopefully the
second BETA version for our BETA testers is finally ready. S**t! It's
still buggy. Must take a look at some more tomorrow.
14th September 2008 - More major bug
fixing
Seems that there were still some major/minor bugs in the game that
required to have been fixed. First of all there was a silly error in
the code, where the end screen comes on, but after you press fire to go
back to the title screen, you get some stupid crash happening. This was
plain stupid as I forgot to set the *correct* jump address (As the jump
address changed to $4000, and the code originally used $9a20). Lol.
What a pilchard I was forgetting this simple mistake.
Secondly I decided to play through the whole game to see what changes
should be made. It seems that level 22 was impossible to play. The
player had to shoot 15 enemy subs in 30 seconds, but that was way too
hard. So I added 5 seconds extra for this level. Now all is possible
for this stage. Also in the Sea Wolf stages, at a certain time (funnily
enough) the bullet explosion appeared behind the player. This was not
meant to have happened. I browsed through the code to find out what was
causing the problem. It appears that the problem was caused in the
enemy collision read routine. I forgot to add an RTS to the end of the
routine. So an RTS got added and finally that problem got fixed.
Another bug in the game was found. Well, it wasn't anything too serious
really, just a char colour bug. This only took effect in all of the
Shark Attack stages. The bug was fixed by setting black as the char
colours. I only did this over the clock and skull with crossbones chars
so that they were clear enough to see. Apart from this, hopefully the
main game bugs have been fixed now.
The sound effects got altered again. I fixed the $D418 bug (where the
player could hear a buzz sound when the bullet is fired).
Level 17's jelly fish y-direction was way too fast which made this
level impossible to play without cheat mode, so I updated the speed of
the jellyfish where they will only move up and down at a fast speed.
The level is still challenging though. So it should bring fun into this
stage.
Now for a final test of the game. Should be okay now. I'm happy with
the result. Now it is time to send the game to the beta testers.
21st September 2008 - Intro
It seems that the beta
testing (and overall conclusion) went well. There were only a couple of
minor fixes to have been made. First of all I fixed the no.of hits to
kill the sea horse. This is because one of the sea horses died after
one hit instead of 2. It seems that I forgotten to zero the player's
bullet position for this stage. Another issue which got fixed was that
the enemy fish were difficult to see on level 1. So I added a simple
routine that will change the outline of the sprites to black for any
time they are at the seabed position. To finish off the game fixing, I
killed the filter sounds of the player firing, because I cannot handle
filtered sounds properly. The game kept buzzing at times. So all filter
values were turned off, but the sound effects still sound good in the
game, despite filters removed.
Now I moved on to the intro and added some routines where the text
fades instead of disappear straight away. The text fade fades from
cyan, light blue, medium grey, purple, dark blue then black. The fade
was too slow, so I had to upspeed it by updating the delay value to a
smaller value. The fader was just about right.
The next thing that I done was update the directions of the moving
clouds and changed their speed. Hope Frank likes those. Then the to be
continued routine needed a colour shade through it. So I programmed a
simple colour wash routine with data that is 256 bytes long. Looks nice
yet again.
22nd September 2008 - Hair raising
stress, up and away and some Freeload of fun
I did not really sleep very well last night, but when I took a look at
the updated docs/fixes, it shows some new low priority fixes in the
game which sadly are things I just could not do. I groaned and pulled
at my hair at the sight of those impossible fix ups. So I marked those
red to say that those fixes (changing the position of the black outline
sprites inside a char) are impossible, due to memory issues. And also I
decided to not update the blue bar in the title screen. It looked okay
to me.
Anyway, I created a new BETA for the testers as I forgot to do one last
night before I called it a day. I emailed the beta to Frank to pass on
to the other play testers along with a note/fix update which I typed in
Suasive Noter V2.0. Then I got myself stuck in with more of the Sub
Hunter intro sequence. I made some updates to what was said in the
docs. For example the tweaking of the sub that comes along the screen
and dives into the water. I also slowed down the clouds and also slowed
down the colour wash routine for the "TO BE CONTINUED" screen. Also I
added a 1x2 charset and up scroll which will come on screen after the
"TO BE CONTINUED" screen. The up scroll was originally using a 1x1
mode, but I managed to update it to the 1x2 mode with some very quick
and dirty code. It still needed something interesting, so I shaded 3
char lines with 3 different shades, which were black, dark grey, medium
grey and light grey at the top and bottom of the screen. Looks much
better now. Then I linked the freeload turbo clock tape loader to the
end of the intro. Then finally I packed the intro with a fast packer
(Fast pack by Faces).

The up scroll for the intro. (I did
not want to show you too much there eh?)
For the final part of today's Sub Hunter session, I just could NOT
resist to do a prototype tape master of the game. So I dug out all the
files that I needed, relocated a tune by Drax to $A000-$B418 and split
a load of files into parts. Then I dug out the Freeload source and
updated it to do the mastering for Sub Hunter. After assembling the
tape loader source and tape mastering. I used the FinaTAP tool to clean
my .tap image of the game prototype master. After cleaning the .tap
image, I managed to get the ball rolling (Erm, program loading) and it
worked first time. So now this game has a tribute to the OCEAN loader
in the late 1980's and early 1990's.
The loader after the intro screen. (I
don't want to show too much there as that would spoil the surprises.
Heheheheh!)
23rd September 2008 - Monday. Back to work
- On Sub Hunter - The final hour!
I have been sent back an email about Sub Hunter game quick fixes that
could be made. It seems that the title screen's blue bar was still
incorrect, so Frank sent me the correct charset for this and I added it
to the game's source. The blue bar looks better, but there was still
something missing. It seems that anytime the player selects SFX and
game is over, the title screen automatically puts it back as music.
Well, this little bug thing is easy to fix. All I have to do is add a
very small routine to compare if the music is switched on or whether or
not SFX is switched on. I also made a different JMP start for anytime
game is over or the game is complete, so that the game goes back to its
option which was used in the first place. I removed the trainer keys
and I assembled and crunched the game together and thankfully the game
is finished. It is just time for people to playtest this finished piece
before it is safe for the tape mastering process to commence.
Now the game is finished I decided to move on to the intro's source
code. Most of the things were finished. All I had to do was reverse the
colour wash routine over the TO BE CONTINUED text. Once I done that, I
added a nifty transition routine that will clear the text if the user
presses the space bar. I also added a routine that fade's Drax's music
and then jumps to the clock loader. I tested the intro. There was still
something wrong, but only something very small. The wrong coloured
clouds were moving across the screen at the wrong speed. So I updated
the speed of the clouds to something correct. Brilliant, the intro is
finished. Now I can rest while the testers check it out for any
mistakes and stuff then maybe next week I am ready for the tape
mastering.
27th September 2008 - Some minor game
bugs on luna lander stage and a loader fix
Before I took a look at the game again I decided to update the
clock loader for the tape version of the game. It seems to me that the
loading was boring and someone suggested that I added the loading music
(Winter Bird) on the clock load. I added a small routine that will play
music and display a scroll text. Finally to make this loader even cool,
I added blue flashing colours and put it over the text. Of course I
kept the cyberload style colour bars for the loading.
There were some very
minor bugs in the luna lander stage. After the player had lost all its
oxygen when a swimmer was on board the submarine, another swimmer does
not drop on to the bottom of the surface. I fixed this problem by
adding a very small routine. Seems fixed now. Another problem spotted
was the behaviour of the enemy subs in level 1. One of the subs did not
come back into the game after it got shot. Also level one of 8's subs
never got killed when shot. I corrected those then went to bed.
28th September 2008 - Final fix ups
and final tape mastering
This morning I mainly been working on playing through the game in whole
many times and I noticed some very minor bugs, which eventually got
fixed. The first minor bug was the buzzing at the start of the game
(Where the player chosen SFX before starting the game), that finally
got fixed. There was also some silly bug where in the luna lander
levels, the bullet/diver collision seems to have been active. I
deactivated this routine, so that oxygen wasn't swiped off during those
stages. A silly error of course. Secondly another error, probably would
have called it a major one was where one of the octopus on level 16 and
21 had placed itself in the wrong position. It seems that what I done
was called the wrong sprite to reposition another sprite. Now fixed,
there was a sound issue. One of the enemies on that stage was missing
sound effects. So I added the sounds in. I had a major play at the game
for a while and spotted nothing else, and nothing serious. The good
news now is that I have finally finished the game after 2 hard working
hours of testing with infinite lives and without. Great that this has
been done. This game is definitely 100% finished!
Now that the game was finished. I prepared the tape mastering by
getting all files together and updating the Freesave/Freeload source to
prepare a tape master of the game. So after a few minutes of mastering.
I got started loading, cyberload colours on, scroll text on, music on
then picture comes on after a moment of loading all bitmap and colour
data, then screen goes blank, music turns off. After a short moment the
loader decrunches the intro part. Then the intro comes on. After
pressing the space bar on the intro screen. The tape started loading
the main game part. Success, after the clock struck zero. The screen
blanked and the game loaded and decrunch successfully. Finally the tape
version of this game is finished. Disk version will be easy enough. All
I'll do is add an IRQ disk loader to load the game with music in the
background. Then after the intro activate another IRQ loader with
loader music again then activate the game.