Sunday, 24 May 2009

Menu Please

Sunday 24th May 2009

It was another programming session for me today. But I can take a break from it tomorrow :) This time it was for me to program a disk menu for the disk version of The Last Amazon trilogy. The first thing I had to do was import all of the data which I was supplied, into the cross-assembly project. Before I could do that, I had to invert the 2x2 font, as the letters are going to be using raster colour bars.

As soon as all of the data was converted to the ACME cross assembler project folder. I started working on the code. The first thing I did was a simple test, which was to display 2 splits. One of which was for the bitmap and the other which was for the 2x2 charset. I put those inside an IRQ interrupt and then assembled those. The split worked.

Now my next job was to put all the raster bars over the 2x2 text. Which I managed to do. So now my next job was to get those raster bars straight by using timing tables. This took some time to do because when I tried to time the rasters, I ended up with the flickering moving all over the place. Once all the rasters were timed, I could add a scroll text routine in to the code and get it scrolling across smoothly.

Then I added a subroutine to read the keyboard, then routines for turning off the IRQ loader, etc and loading in the game, using a black screen and thin blue stripes - to show the disk loading. I was happy with the final result.

Update: I got an email about this menu and Psytronik Software was impressed with the work I done with this menu. I bet they were surprised at how fast such a menu project was. Just a few hours or so :)

Saturday, 23 May 2009

Bang, Bang, they shot me down.

Tuesday 19th May 2009 - Thursday 19th May 2009

I have been working on the Game Over sequence and also updating The Last Amazon 2, because I recieved the final version of the original SEUCK game with additional enhancements. I played through the whole game in cheat mode. I like it. Amazing new weapons, and even shields.

Now it was time for me to work on the game over routine. I was given a mockup and idea of what the game over sequence should be. So I worked on the gun shot idea which Kenz + Alf came up with. First I drew sprites, then I made some new music..

I programmed the Game Over routine by using 3 IRQ routines (Two for different sized chars and three for colours inside text) and then I created delay routines that will delay game and then delay over. Then the bullet holes come on screen one by one using a faster delay. Then we got a good result.

Friday 22nd May 2009

Back from the pub this evening - 3 pints. When I got online to check my email I was asked if I could put final scores on to the game over sequence for Last Amazon 2. So I converted SEUCK score data into text data and added the scores to the Game Over screen.

Last Amazon - Tape Mastering+Linking

Saturday 23rd May 2009

Weather is ever so nice today, but I had nothing to do, nowhere to go to meet people. So I decided to do some more of The Last Amazon trilogy project. This time something completely different. I took a look at the latest IRQ tape loader source code by Martin Piper and decided to alter it to make the loader slightly shorter and also base the loader on the same loader I used for Joe Gunn tape version.

I dug out the ACME cross assembler and first of all, I altered the loader's flashing border methods. Rather than have the classic cyber load colours, I wanted something much different. So I changed the Cyber load colours to something like this:

STA $D020
LDA #$00
STA $D020

then I changed the INC $D020 where the check sum counts, to INC COLOURBASE+1 so that after each check sum, the loader will change the colour of the thin stripes per load.

Once I done this, I decided to make some additional features to the routine. Starting with altering the speed of the tape loader to medium/fast speed, because duplication can be a problem if the speed of the loader is too fast. Secondly I updated the scroll text routine, and removed the on screen messages "NOW LOADING LEGION OF THE DAMNED" to shorten the loader in size.

Also to shorten the size, I deleted the routines that saves and loads the loader's flashing sprite, and the counter routine. Both of those were not required for this TND/Psytronik loader. I linked the program files of the music, picture data and then game data and assembled the source to get a tape master.

Now I test the assembled tape master file and assembled it to a .prg file and run it in WinVice. I created a test .tap (or tape image as you would prefer to call it) and started to extract all the data on to the .tap image. I tested the loader, and it worked nicely. So I did the same mastering for different games. Then created a disk menu for the master.

The other job which I did was linked all the loader pics (With press space message) to each Last Amazon game. So I created my very own Picture Linker program, which will link pictures made with the Vidcom to TNDPic converter (Only for my personal use :o)). Then I inserted all the TNDPic files into the directory of my Picture Linker source. Then I added all the C64 files (Music, the games, etc) to the source. I assembled the source and linked the picture to each file successfully. Those featuring the linked pictures (With the press space message) will only be for the disk version.

This Last Amazon Trilogy project is nearly finished, all I need to do is program a special disk menu for the disk version of the game and then that's it :)

Saturday, 16 May 2009

Trash Course - Finished at last (I think)

Saturday 17th May 2009

Man, what a mammoth of a programming session I had today. First of all I decided to update the second page of the front end for Trash Course. I done this by changing the top 10 ranks into the top 5 ranks. Then I added the end screen message and linked the end screen text to the end screen message display routine. Then linked the Game Over routine to the end message routine (Because even if the game is complete, the player should get a high score if achieved).

Now my next task was to program in the high score routine. So straight after the Game Over screen, I decided to add jump routine that will jump straight to the high score detection routine. Nice!

Now it was time for me to program in the actual high score check routine. I programmed a check routine for each of the 5 positions for the player's high score. If the player reached a high score, according to the rank position. The player's score will be placed there and so will the player's name. Just to make sure this routine was working. I did a test name (As there was no name entry routine added yet). I played the game to try and get a high score and it worked. The test name "PLAYER 1" score hit the high score position along with the high score. Now it was time for me to add a name entry routine.

The name entry routine gave me a bit of a headache, because for some reason after programming all joystick control, etc. I seem to have had no action happening whatsoever. It appeared that where I was trying to reset the default char/screen position for the first char, I poked the low byte twice. So instead of pasting the new char to $7E90 +, it pasted it to $8F8F. And that was completely wrong. After correcting the joystick controlled name entry routine, all worked quite nicely. So now I can update the routines so that it will work with player 2 if he/she scores a high score. After a bit of fiddling around with the code, I got it all to work. Fantastic!

My final job was to update the graphics, as the options screen looked too plain. So using SpritePad V1.5, I drew new sprites for the game options and also I drew a 4 sprite logo for Inferior Software and then I added the logo in to the bottom border, and positioned all the sprites. This looked miles much better than my previous version of the front end.

Now the game production's programming has finally finished (I think). It is time for me to send this final production to Thorsten and Stefan for testing.

Tuesday, 12 May 2009

Playing with SEUCK Redux

Sunday 10th May 2009

Martin Piper had updated his SEUCK Redux source code, and it worked pretty nicely with Legion of the Damned. No flickers or SEUCK slowdown syndrome, and sprite/sprite collisions were pixel perfect. So this morning I have been busy updating the game a bit. First by working on the in game music for the game. I used the original LOTD title music work tune in DMC V5.0+ and then I worked on the second song of the same LOTD music and worked on with the in game music. The in game music starts off sounding sort of a bit like the introduction of a Metallica sound track, but it's not. Then the Matt Gray style drums and beats come one. Making the tune pretty atmospheric. After I done the tune, I packed it with the DMC V5.0 packer.

Now music was done, I worked on the LOTD front end. I felt that it needed a good rework, so I redesigned the front end character set from scratch. Some of the characters form swords and others formed bones. So I built the logo using swords and bones, while the rest of the stuff was done as plain text. Then I saved the final game work file and imported it into the SEUCK redux source. The front end came with a nice result. I was happy with what I done. With all music and working collision/improvements, which Martin spent a long time trying to solve. I was really pleased with the final result.

Now that was done, before I uploaded the game on to my TND web site. I decided to program a brand new TND intro. So I prepared the the source files (Char set, TND Logo bitmap data, Music, etc) and put it all together with source code. My intro looked ever so nice and quite professional (although plain) and I bolted it to the LOTD game and then uploaded on to my web site.

Trashing through more code

Saturday 9th May 2009

I decided to do some more programming with the front end for Trash Course. Things needed to be sorted out. First of all the front end required an options selection. So I decided to add an extra IRQ interrupt so that I could open the bottom border and put the game options sprites into that border. Seems to have been no problem.

Secondly I programmed in the functions for the game options sprites. Not bad. Seems to work fine, except for when I tried to play the game with sound effects the WinVice C64 emulator had crashed. I realized what went wrong. I had forgotten to poke the correct place in memory. LOL. So I fixed the problem and got the sound effects working. The player modes worked nicely.

My next step was to program a Get Ready and Game Over screen for the game. I did not do anything exciting for the Get Ready and Game Over screen, because it wasn't really worth the effort. All I did was create a new IRQ and also got the routines to play the Get Ready and Game Over jingle and linked those to the front end and the game. Now that was working, I had another idea which was to get the Game Over screen to display the final score for the players. To do that I had to convert the SEUCK score plot data into raw screen data. That was easily done by adding the accumulator by $30 and pasting the data to the screen. It worked nicely.

I was working on the high score entry/table routine, but unfortunately I did not do all that good with this, due to the fact that my code was way too big as I was copying the same routine time and time again for each rank position on the high score table. I gave up at the end as I could not figure out a way to do a shorter version of high score ranks. Well, sort of. I sent a message to Martin Piper to ask if he can help me work out how I can do a high score detection using as less code as possible (Optimization).

Wednesday, 6 May 2009

More Trash

Wednesday 6th May 2009

I felt like doing a bit more Trash Course enhancements, so I decided to add a couple more routines that would show Get Ready and Game Over. I also fixed the title screen to execute the sideways SEUCK game after fire is pressed. I also linked the Game Over part to the game after all lives are lost straight away.

Maybe some other time I shall add the game options sprites. My plan is to be crafty and turn off the sideborders and place the options sprites at the bottom left and bottom right hand corner, due to the page flipping from credits text to high score table. Once options done, my final job will be to do the high score table. - Then I can go back to Up in the Air and my Stunt Boat Challenge project.

Sunday, 3 May 2009

Trashing time.

Sunday 3rd May 2009

I have been a bit busy today preparing some stuff for Trash Course, now that Thorsten (Sledgie) has showed me the final BETA of the game. It was time for me to do some sideways SEUCK enhancements. Well, not quite. I booted up DMC V5.0+ to make the in-game and title screen music a bit longer first, and sound better. Seems to have worked fine. Now that I was happy with the music, I decided to use the DMC V5.0 packer and relocate the music to $9000. How lucky I was that although 4 or 5 tunes were in the same music file that the compressed music file did not go over $2000. Brilliant.

The next thing I done was loaded in Thorsten's snap shot of the SEUCK game, and then I saved the SEUCK game as a finished game from the SEUCK menu. Then I loaded the finished game from BASIC and did the usual SEUCK cleaning and hacking technique (So that the menu was completely wiped away and that there was more room for spare memory. Especially when I get round to working on the new front end for the game.)

As soon as memory was filled with zeroes, I took a look at the Gold Quest 4 waterfall animation hack that I did, and used the same technique to get the game's waterfall animated. Then I saved bits of the 2 SEUCK data (Memory $0900-$6600 and also memory $b6c0 - $ffff as those were compulsory for the game, especially that at $6580 I added the background animation routine).

Now that was done, I needed to sort out a new char set and also D-Flame/Blazon/Crypt's logo. So first of all, I took my font from my old Square Pit 64 game, which I wrote in 2007 for the Forever party. Then I used GangED to convert D-Flame's picture into 3 files (Bitmap, colour RAM and Video RAM). Then I painted sprites for the game options section for my new front end.

After the graphics were sorted out. I created a folder on the PC and converted the C64 files (SEUCK, music, graphics data, etc) into the new folder. After that was done, I copied the cross-assembly and compression .exe files into the project file and got started with programming.

The first thing I had done was a simple test file. Basically, test SEUCK to see if it will decompress and run with a hacked routine that adds the in music to the game. First, this did not work because the first half of the SEUCK game data file was at $0800 instead of $0900. Doh, very silly of me! After correcting this, and crunching again the game started fine with music in the background and also animated background. Brilliant. I am glad that worked.

Now it was time for me to program the main front end. First of all I did the text data (Presentation lines, scroll text and high scores) and then worked on with the main code for the new front end. I imported all C64 files into the source files, then I programmed routines to display the colours of the logo. I also programmed 3 different splits. The first split was for the bitmap logo, which is about 6 or 7 chars high. Then another split for the still text and the last split for the scroll text. Once that was done, I worked on routines that will do the usual Richard Bayliss colour washing technique and also I programmed a routine that will change page after a certain amount of time. One page for the main credits and the other page for the high score table. Colour washing routines change per page as well. I was very happy with this result although still unfinished, because I have a Get Ready, Game Over, High Score entry and also end screen to do.

Tomorrow is a bank holiday, but I wont be doing any programming tomorrow. I'm thinking about digging out some old C64 tapes and playing those. Like, Armalyte, Blazing Thunder, etc.