SUB HUNTER
page 4 of 6
Page 1 / Page 2 / Page 3 / Page 4
/ Page 5 / Page 6



Note: This game project has finally been finished and is now avaiable to download. Either visit the games page
 or download the full game, directly from this page.

To support, Psytronik Software, we have included an extra demo disk, which features playable previews of various games. Or if you wish to buy the game for your real C64 on tape or disk, visit the Psytronik Software web site.



7th January 2007 - A bit of bobbing and Level 5 should be ready. Lovely :o))

Well the new  year certain struck and I had a short Christmas break, apart from programming Brain Strain during new year's day, chortle. Anyway I have returned to this game project today, and read Frank's email, regarding making level 5. There were problems with the game play, where level 5 was just way too easy. So I decided to follow Franks email to make this game slightly harder.

The first thing which I had to do was change the colour of the player's ship, as it clashed with the sharks on level 5. So what I have done is made the player sub light blue. Looks nice and it does not even clash with the enemy sharks. Now this problem was sorted out. My next task is to get those fish bobbing.



To get the fish bobbing, I had to make some new data tables, and routines. The first of which was to calculate the delay of the sprite bob sinus. Secondly, to calculate the value of the bob sinus (from the data tables) and store into a variable. Then I created a small listing for the action to take place, where the enemy fish are bobbing. Now I tested it. Nothing happened, the sprites that were supposed to have gone up and down were off screen.

Well, to sort this problem out I realized what I have done wrong. I did a stupid routine, which looked something like this:

LDX BOB1
LDA SINUS1,X
STA OBJPOS+$03
INX
CPX #24
BEQ RESETBOB1
INC BOB1
RTS
RESETBOB1: LDX #$00
STX BOB1
RTS

What really should have been done was something like this:

JSR BOBTHEFISH
LDX BOB1
LDA SINUS1,X
STA SINESTORE1
INX
CPX #24
BEQ RESETBOB1
INC BOB1
RTS
RESETBOB1: LDX #$00
STX BOB1
RTS

BOBTHEFISH: LDA OBJPOS+$03
CLC
ADC SINESTORE1
STA OBJPOS+$03
RTS

When I corrected the routine, the enemy fish was bobbing up and down nicely. So I made three more routines and got all 3 small fish bobbing up and down. Hopefully level 5 is finally finished. I'll just mail it to Frank to see what he thinks, before I can hope and pray that I can work on level 6. :o))

8th January 2007 - Just an email. Nothing else ;o))

I have received an email from Frank Gasking, that Level 5 looks fantastic and that it plays well. Now my next task is to do level 6 which is a bonus round. This shall commence on 13th January 2007 :o))

27th January 2007 - 20 days later :)

I worked on with level 6 of the game. Level 6 is the bonus round, where the player has to collect as many gold bars. The trouble is that the player will be faced against the squids from level 3. This level is sort of based on level 4, using level 3's background but a different colour scheme is used. The idea of this bonus level  is to collect as many falling gold bars as you can within a time limit. If the player collides with the enemy squid then the bonus round is over. No life will be lost.



So how did I manage to do this round then? Well, I needed to make some more variables which included a bonus round routine detection, so I could set things up correctly for a perfect working bonus round. Secondly, stage 5's timer appears in this stage. I imported level 4's enemy movement routines to this round, using the usual JSR statements and I also adjusted the player death routine, to see if the bonus round is turned on. Finally I made new collisions and here we have a sort of perfect bonus round. I should hopefully soon be ready to work on level 7. Possibly next week or so.

5th February 2007 - Another quick coding/fixing session

I was unable to connect to the internet for a while as the router was unplugged due to some other appliance being used. So I worked slightly more on Sub Hunter. Today I altered some of the game's settings. First of which was to make level 6 use the lunar lander style controls, as it had done for level 3 (I had an email from Frank Gasking, regarding this issue). Secondly, there was something that had to be done for the game, itself which I had forgot to do all along, and probably was going to leave it until last. In general, the problem was related to the score panel. When a level is complete and you move on to the next stage, instead of having the score achieved the score panel is reset. This was because I did not do anything about it until today. So I created a routine that copies the score to the C64's memory and then paste it on to the screen for after you move on to the next level.

Things to do to get level 6 perfect are as follows:

14th March 2007 - Changes, changes, changes

Well it has been over a month of so now since I last did more work on the Sub Hunter project. I needed a break anyway, but thankfully because of the creative mood which I had recently, I got working with more Sub Hunter for over an hour or so. What have I done this time you may ask? Well, I had an email from Jaymz (ALifeInHell/WOW) at GameOver(view) regarding the game, which had some ideas on how to improve the first few levels of the game. Frank also agreed with some of the feedback which Jaymz and the Dark Prince/Protovision had mentioned about.. So today I put it to the test, and so far so successful. Here is what has been done :o)


Level 1:

1.  There was a bug which caused the player sprite to disappear if he/she is at the top of the screen. Other sprites could be seen. So I fixed this problem by altering the stop position for when the player moves up.


2. A cruel penalty of oxygen being taken if the player kills a diver with his/her bullet or, if an enemy eats the diver. Thankfully I tested level 1 and it is still easy enough to play but .....


3. Increased the speed of the player (by request) to make the first level slightly more easier.


4. Added delayed gravity to the sub, to make it look as if it is sinking to the bottom of the surface

Level 2:

This level required a couple of fixes, which are as follows:

1. The speed of the player bullet has been increased by one. Now this level is easier to play

2. There was also a bug in the diver indicator routine. When a diver is saved, instead of showing  the  whole diver . The diver's legs was in the wrong place. The only way for me to work out this problem was to view the charset in a char editor and work out the char no. Luckily I corrected this problem.

3. Added an indicator to show how many fish have to be killed to complete part of the level :o))

19th March 2007 - Level 7 at work

I spent 2 or 3 hours this evening working on more Sub Hunter. This time I was happy with all the work done so far, so I got started with adding routines to link and create level 7. So far I have got the level 7 screen to display, but looks a mess, so I need to tweak the raster splits to fix the horrible look of the rocky terrain for level 7. Now I have got working. Later on this week I'll work on the main level itself :o)

20th March 2007 - Rich's at it again and some fixes

Well yet more work had to be done for Level 7. I worked on the level's game engine and funnily enough think I've finished with this level. What has been done then? Well first of all I introduced some new enemies. Level 7 features an onslaught of sea horses and small green enemy subs. The idea for this level is same as level 1, but to make things more difficult and quite interesting I have made the sea horses move up and down the screen while moving to the right.. The enemy subs move across the screen. Once I done this, I worked on linking the same collision routine to level 4 and also I created new routines to show what enemies are to be animated and what sort of explosion should be used (colour, etc). Here's a snippet of level 7. Looks pretty nice eh? Nice result for me :o)

As well as level 7, I fixed up level 6 slightly where after a bar of gold is collected, the player starts again at top right corner with shield activated.



Hmm, later on this week or maybe next week, I'll work on level 8 of the game. Should be interesting. Wish me luck ;o))

1st April 2007 - It's NO April fool's joke

Level 7 was finally finished, I worked on with level 8, which uses level 1's background, but with a different colour ground surface. When I set up the settings for level 8. I had stumbled across a problem. The player was positioned off screen. I got a bit frustrated over the player positions, but then realized what my problem was. Apparently the problem was in a routine, to set up the starting position.

It read:

LDA #>L8POSITION
STA STARTPOSITION+1
LDA #<L8POSITION
STA STARTPOSITION+2

I finally altered the above problem and the routine worked correctly. Now this problem was fixed, my next task was to add a routine that will link level 8's attack waves to it. This time around I wanted to have a level that has *no* fish involved. Just enemy subs and mines. So I created some new frames, which then got included into  to the animation routine.  Once I fixed the frames, the next thing to do was add the collision routines and also get those enemy subs and mines moving. The mines move a very slow speed of $01 pixels, and enemy subs move at a speed of $02 pixels. I linked additional routines from level 1 to this level, to have the collision detection working. I tested the game and was pleased with the result. On to level 9 next (Another Sea Wolf stage, but with some other enemies).



6th April 2006 - Collision tricks and memory problems

After I received an email from Frank about the game, he was pleased with the result for level 8, but he made a couple of suggestions to how this level could be improved. Frank wanted the slow mines to be invincible so that this level in the game can be more interesting to play. The other thing which he wanted to see was the orange sub to move across the screen mighty fast compared to the other two subs. So I did some additional routines in the game code to make mines invincible and other enemy collisions. After the game assembly and linking was done with the usual cross platform tools, I tested the level. There were a few errors in the game.


So then what were the errors? Well, the first error which I made was, instead of taking the player's bullet sprite off screen after it hits something. I made the player disappear. It was a bit of a stupid move, but I knew what I done and fixed this problem. I used LDA #$00 STA OBJPOS+$01, instead of LDA #$00 STA OBJPOS+$03. So after fixing this, one problem was solved.


Next I cam across another problem. That problem this time round was the bullet to enemy collision. I messed up at parts of this, but managed to fix it. Everything works now, which is great.


There is one problem I have now. Memory problems. There is an ideal solution to this particular problem though and that is to relocate Drax's music from $8000 and position it to $8800 so that I have loads more memory to fill, when coding more of the game. Of course that would mean that I will have to alter the init and play address for the music.




Hopefully this weekend I shall work on level 9. Before I do though, I am going to have to relocate Drax's music to $8800 and also create a program/utility that will capture the Multi Screen Construction Kit screens and store the screen and colour data to an address for compression with the Exomizer utility, so that I have more room for other things, as the MSCK library is not really required now.

14th April 2007 - Memory saving and started level 9

I spent most of today's sub hunter coding session pruning loads of code, as last time, I was short in memory. Thankfully it was worth the effort. I just needed to delete some unwanted bits of code in the game, and altered a few routines to make them shorter.

Now that was sorted out, I manually extracted all MSCK library gfx and saved the libs as 6 separate screen+colour files, for use with the Exomizer cross platform cruncher.  The size makes a huge difference :)

Back to the code, and I got started on working on level 9. Once again, this stage is going to be another sea wolf style stage. Instead of the player bombing fish, the player shall bomb enemy subs. The subs will move at 3 different speeds. Therefore making it hard for the player to bomb 10 within 30 seconds (like with the fish). This stage is not finished, but hopefully when I next get to it, it should be finished.

24th April 2007 - 10 days later

Well I finally got motivated to get on with this project this evening. Last week I recieved some updated sprites which Frank Gasking drew and I was impressed with what I saw. No I'm going to have to make use with some of Frank's newest sprites for the later levels. Well, to be honest I need enemy subs that face two different directions for this particular level, because if you see a sub reversing, that'd be stupid.

So then what did I do? Well, level 9 is the same as level 2 except for that the colour scheme gets changed and you have to blast 15 enemy subs within 30 seconds. Well this may sound impossible, but to be honest it is NOT impossible at all, it is insanely possible as I have completed this level no problem. During working on this level I worked on some more routines, such as checking the level that is available. This is so that I can set the amount of enemies to kill for the particular level.

While I was in the process of working on the code for this level, I was using Stage2.asm's code, unfortunately for me I had messed things up in the game. The player's bullet kept exploding and all scores and stuff went haywire. Anyway I managed to fix this problem by overwiriting the Stage2.asm and started again, but this time with JSR statements. Well all of level 9 seems to be working nicely so here's a snippet of the level and touch wood, I shall work on level 10 soon.




25th April 2007 - Quick fix

Just as I thought that I could close level 9, I have some response about the level. It needed to be harder. So I was asked to increase the speed of one or two of the moving subs, so I made the smaller sub to go across the screen fast. There was also a little bug in the counter. Seems that instead of having to kill 15 enemy subs, the player had to kill 16. I managed to fix this problem. Finally the colour scheme of the sprites (The layout colour) was set as black, so that the sprites can been seen clearly on a real Commodore 64. I emailed the second preview to Frank and he was very happy with it. Now this weekend I'll work on level 10. Yet another luna lander type of stage, but with more harder gameplay and some new enemies.

29th April 2007 - Level 10 is born

After sucessfully completing level 9, I am ready for level 10, which is yet another Luna Lander mode. This time although I set it to do level 3's routines, I implemented a few other things. First thing's first, I wanted to change the enemies and introduce one or two of the new enemies. Thankfully I introduced one of Franks new fish sprites to add to the level. The funny looking orange one :o). Also the purple jellyfish (You may remember me talking about those that appeared on level 4 eh? Also to make this level more hard, I have increased the enemy speed for the orange fish. I play tested it all and all seems to work fine. I'm happy with the result of this level :o))



Well, I wont be doing any more Sub Hunter until next week (Saturday is a possibility). It is time for another little break. :o))