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:

COLOURBASE: LDA #$06
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.

Saturday, 11 April 2009

Enter the choppers


Saturday 11th April 2009

Yesterday I mentioned about the Ultimate Stunt Boat Challenge game. Well, today I have been doing a little bit more on the project. Before I could do any more to the project I converted the test run file on to a C64 tape using the WAV/PRG program and loaded the test file in to my Commodore 64. Damn, there was a major problem. The player's boat (when expanded MSB for the sprites) screwed up the scrolling engine. So now I have to work out what was causing the problem. Fortunately I figured out what was causing such a disturbance to the scrolling engine. It appeared that I used an insufficient area for the artificial sprite positions. So I altered the OBJPOS label to a different memory location. Crunched it all with the Exomizer and tested it on my real C64. RESULT!

Now that I was happy with everything, It was time for me to add some data tables and program some additional routines. I created some data tables for the sprites, and programmed a sprite animation routine. After that I worked on a small, but very easy routine, where the player can now shoot bullets. Then I started working on getting the enemies to move. At the moment they are the same enemies moving across the screen in the same place. However I can work more on making better movements and behaviour of the enemies next time I go on to this project. Which probably might be tomorrow morning.

So far, so good. Player can move and shoot, scroller is working fine (It uses DMA delay routines) and also the enemies can move - but more work is needed on this part of the project.

Friday, 10 April 2009

A new game in the works - Ultimate Stunt Boat Challenge



Friday 10th April 2009

What a boring day today was so far. So I decided to make a new C64 game. Well, I got started on it really. Earlier on in the week I asked Frank if he could send me the Real Speed We Need graphics data for this game project. As I thought there may have been some boats and other action movie style enemies and obstacles. I sure was right.

Most of this morning I worked on the map graphics using Charpad V1.0 to build the level map and then later on I dug out the old Real Speed We Need source code and modified it a little, and got the new map working nicely with the scroller. One major problem for me was that the map scrolling was just too fast. So I slowed it down a touch and it looked fine.

My next task was to sort out some sprites. So I copied some of the old RSWN sprites which Frank had done before, and I paste them. For this game I wanted enemy air craft, boats and also some ramps, that the player could jump over to try and get over the bridges on later levels. I also grabbed some other sprites that I thought would suit the game.

Although in its early stages yet, and more work to be done. I was dead chuffed with the work done so far. I added some routines to get the player's sprite on to the screen, and also get the player moving as well.

Hopefully tomorrow or Sunday, I should be ready to add some additional routines to get the player shooting and also the enemies starting to take action.

Wednesday, 8 April 2009

Another Last Amazon front end

Tuesday 7th April 2009 + Wednesday 8th April 2009

Bah, TV sucks. Well that doesn't surprise me. I had nothing else too exciting to do, so I decided to work on a new front end for Last Amazon 2. This time it was a bit of a challenge, but I knew that it should be possible. I prepared a work disk .D64 and transferred all the C64 files into the cross-assembly directory for use with ACME, the same way as I did with The Last Amazon.

Kenz had shown me the mock up screen shot of what he would like me to do for the front end. Oh no ... raster splits :( Seriously, I hate doing raster bars, due to having to get those blasted things timed correctly inside $D012 splits. Ah well, it has to be done, and I shall do that.

I loaded up the Relaunch64 tool and then I created a main source file which will link all the c64 program files (including the game) and got started on the programming side of things. I started off with the IRQ interrupt player routine to see if it will run. The good news was that the player routine did play the music after assembled and crunched with PuCrunch. Now it was time for the serious part of the programming. Getting the bitmap logo and all chars displaying. To do this, I changed the background colour ($D021) so that all small text was white and all large text was yellow. So I built 10 raster splits in total. Everything displayed successfully.

Now it was time to add those raster bars into the text. Well, this I must stress was one of the worse parts of the front end programming. So I built a colour table and a raster timing table for each raster split. It took a lot of time to time out the raster splits so that the text chars looked much more tidier. As soon as I was happy with the result, I worked on the scroll text routine (Which uses raster splits as well) and then added a routine for which the player can press fire in either joystick port to play a 1 or 2 player game. Those worked okay, but sadly timing had altered again. So I moved the raster timing table and also moved the scroll text to a higher location and got everything working. Looks perfect now. Hope Alf and Kenz likes this one.

Tuesday, 31 March 2009

A Last Amazon master

Monday + Tuesday 31st March 2009

After tea this evening, I decided to work on a loading tune for the first Last Amazon game. So I dug out the DMC V5.0+ music editor and loaded in one of my old work tunes. Kenz fancied a Matt Gray(esque) style tune for the tape loading music. So I loaded in one of my tunes that I done for Last Amazon 2, and then I made a new atmospheric Matt Gray(esque) tune for the loader. Once I was very happy with it I worked on the main tape mastering for the game.

But there was something I just could not resist for the tape loader. Because Martin Piper had done a turbo tape loader routine with a flashing/pulsating sprite. I thought to myself, hmm. I could do a tribute to the classic Cyberload tape loader, but without the CYBERLOAD NOW LOADING GAMENAME thing and draw my own flashing square sprite (But make it look different to the original Cyberload sprite). I positioned the sprite at the bottom and in the middle of the screen and then linked the game music, loading picture and game files into the source code of my version of Martin's loader and then compressed the assembled source and data using the Exomizer, and tested the tape master. Magnificent. I was very pleased with the loader result. I will send this off to Kenz to check out to see what he thinks of it.

Monday, 30 March 2009

DIY Slang :)

Sunday 29th March 2009

Ah. There is nothing quite like a Sunday playing around with SLANG. Well, XLANG really from http://www.ffd2.com/fridge/slang/. What is it precisely? Well, it is a cross-platform programming language that combines sort of BASIC commands with assembly language. Pretty okay stuff if you want to build simple programs to help you do things.

Well, that is what happened this morning. I was writing some commands in the Relaunch 64 text editor, to program some XLANG routines as well as assembly code routines to create a little program that could help me convert pictures that were saved in Vidcom Paint format into one of my own picture formats, so that I could make a much easier tape loader using the Auto boot IRQ Turbo Tape loader source from www.codebase64.com. But I wanted to make a few simple routines that will display the tape loading picture, along with music in the background. After I compiled and compressed the utility. The size it fit was 1K, after Exomizer. A 4 block program? What a result.

I tested the little utility that I made on the C64 and the utility worked fine. So I took one of my old C64 games, repacked it and then I modified the public domain IRQ turbo tape loader source so that it could do the following:

Optional flashing/loading sprite at $0200-$0280
Loading music at $1000-$1fff
Picture data (All bitmap, colour RAM and video RAM in one single load) - $2000-$47e8
Game data $4800-$ffff ;Smaller size is usually preferred.

Of course the game data would not be able to run straight away. So I added a transfer/relocator routine, so that the game that uses a BASIC SYS 2061 address will move from $4800-$xxxx to
$0801-$yyyy and then execute Exomizer's decrunch routine. Loading speed was fast. I sure will use this source for The Last Amazon tape mastering when it is time. :)

Wednesday, 25 March 2009

Another trip to the Amazon

24th+25th March 2009

Yesterday, I managed to create a new front end for The Last Amazon - Special Edition. Pretty good result. However I felt that I should add an ending message to the game instead of the game looping. Well, it sort of worked, but I found it to be boring to have still text, so for the ending part I programmed a FLD routine, and the text moves up and down. Much better :o) There was still something missing. Waz did a couple of tunes that was exclusive for The Last Amazon, but we changed the music for the new version of the first game where title music was by me and in game music by Tonka. So we used Waz's tunes specially for this game. There was one tune I noticed in the HVSC which was originally for the first Last Amazon game, but it never appeared on the game, so I decided to use it for the end part of the game.

Later on, Kenz sent me a scroll text for me to add to the game. So I tried to import the scroll text into the cross-assembly project. Scroll text came in, but sadly there was not enough room for me to place the scroll text. I thought that I had to sacrifice the end tune as it had overlapped the scroll text message. Thankfully there was a lot of space in memory $1300-$18FF, as there was nothing there (As Sideways SEUCK scroll map data was originally at a different area). So I placed Kenz's scroll text at $1300 and it did not overlap anything else.

I wanted to do one more thing to the game before I classed it to be a finished piece. And that was to animate the waterfall background chars. First of all I had to dig out the Action Replay Graphics Support Disk and use the E.SS program to rip out the character set, and then load the character set into the Megaunit Char editor. This was so that I could work out where the waterfall background chars were.

Well, when I tried to animate the waterfall's background, I had a very bad result. Some of the chars that were used for the waterfall were also used for parts of the jungle's background. Sadly that meant I had to sacrifice the background animation for the water fall as the char rolling even happened with the green jungle background, as it used the same chars for it. Still, it should be alright without the animation.

Fredrik the Ball is Back: Spider Maze 2 in progress

  11th January 2026 First of all, a belated Happy New Year to all C64 and retro kind.   At last, a new blog update and a new C64 project is ...