3rd February 2010
Do any of you remember back in the late 1980's or early 1990's, you inserted a tape and loaded it up to be presented with a little game like Micro Painter, Invade-A-Load, and Load 'N Play. Well, Interceptor Software and Mastertronic may have done this back in the days, but a new kid is in town. Moo-tilation (also known a Moo-tiload) :)
I came up with this little game idea after someone contacted me to ask me if I am able to implement a game into Martin Piper's IRQ Turbo Tape loader source (available from http://codebase64.org) that I always have used to master tapes for Psytronik Software and for my personal collection for the TND web site. After finishing Mutilator on Saturday last week. I originally drew a silly loading picture for the tape loader of this game, but it was complete and utter pants. Well after all I am no artist :o). I thought to myself. Why should I present this game with a duff and stupid loading picture when there could be a possibility of adding something slightly better? So, let's mutilate some cows :)
1st February 2010
I decided that I should give making a loader game a try and also attempt to link it through to the IRQ Turbo Tape loader. So I got designing (using the Multi Screen Construction Kit) to get the game background design. As soon as I was very happy with the final screen design, I captured the screen data, colour data and char set data by using the WinVice Monitor and also Action Replay cartridge. I saved each part separately and then composed some music for the game, using Music Assembler V1.1. I fancied composing something in a sort of Italo disco remix style and ended up with a pretty neat, which the main beat reminds me of the introduction bass line to Around the Planet by Laserdance although the tune isn't like the original cover. I know that FCS of Finnish Gold did a really good C64 remix of the tune using Future Composer. Because I really liked the tune that I composed. I used Goat Tracker V2.26 to do a remix of the same tune I did, but because the instruments were example instruments. I decided to stick to the version which I used.
After finishing the music, it was time for me to head off to the programming stage. So I got started with the main code. Unlike how I normally program games (by SYNCing outside of the IRQ interrupt) I had a simple theory in which is to put the main game subroutines inside the interrupt of a tape loader (Where music usually plays). Because I wasn't that ready for importing this work into the tape loader. I programmed the usual IRQ raster interrupt routine. You know which one I mean? The JMP $EA31 type of thing? :) Yes that's right.
The first thing I did to programming the game was to get the graphics to display, and then get those enemies moving around the screen. My first idea was to have the player as a cross hair, but sadly it did not work out. So the player became a tank instead. Now although the main part of the game was finished, I had some problems, which I will have to resolve tomorrow, as it is getting late now. Night, night.
2nd February 2010
Man, what a blasted annoying morning I had. I was pestered too much by the family dog, and I have been rather poorly as well. Still I was able to continue with this loader game project. The main body of the game was finished, I just had a problem - The Mutilation. It took me a few hours to work out and correct, as what I wanted was an alien to charge down and mutilate a cow. So I programmed a routine which will use a timer to pick an alien (from the mutilation table ) to charge down and mutilate a cow. Well, that sort of worked, but my major problem was collision. When a sprite was moving down and it was shot. The sprite still moves downwards or upwards during the explosion process. I managed to fix this problem, by comparing whether or not the alien was hit during movement. Well, seems that the alien stops when dying, so that worked fine. Now the final part of programming the game. To check if both cows on the ground have been mutilated. If so, then bring back the credits text.
Finalising the data was quite a challenge. Well, it wasn't much of one. I created a routine to initialise the the game data, so that the background, etc is shown. Then afterwards removed the standard JMP $EA31 irq routine, and used the game loop as a JSR play routine. I estimated the initialise and play addresses of the game data and then linked it to the loader source. Oh dear, too many blocks to count (50 something odd blocks of data, included wasted memory). After I linked this and altered the IRQ tape source, it sort of worked, but the long loading time would not be worth it for a loader game. So I decided to try and use Exomizer's level packing method and then link the decruncher at the end of the packed data. Then I put the packed data into the IRQ turbo tape source. Altered the INIT/PLAY routine again and I successfully got a loading game. Bloomin' fantastic, 21 blocks instead :) Time to show this loader off to some of my contacts, who might be interested to see it running.
3rd Februrary 2010
I had some emails back from my contacts/friends about the loader. They thought it was pretty cool. I'm very happy with the overall result, however I really could do with updating the source, so that the loader looks more professional. So I decided to remove the annoying loading noise, alter the colour bars to make them a black border with thin lines. After each block counted, the loader cycles backwards through the colours of the thin lines. You might have also noticed that when I use the Turbo tape routine. And below, specially for you is the Moo-tilation video. Expect to see this loader game appear some time in the near future on C64 productions by The New Dimension :)
Mootilation (Moo-tiload final version of loader, tested on Mutilator)
At the moment, the loader will not yet be available from the TND web site, until after the release of Mutilator (Which will be shortly after Digital Talk #90 has been released). There may be a chance that I might create a little tool which will master Moo-tilation on to a tape along with your game in the near future.
Tips on making a tape loading game:
If you are a C64 programmer and feel like tape mastering your own games, demos or other work and you are unsure how you could make a loading game? Well, there's a simple theory to it. If you take a look at the IRQ Tape loader source by Martin Piper (published in www.codebase64.com) then you will notice that an IRQ tape loader uses INIT and PLAY addresses for music. What you need to do is set up the correct raster positions (as we don't want bugged sprites during a loader game do we?) and also change INIT and PLAY address to initialise the game (not music) and then play the game (not music). The whole of your in game routines MUST be inside the PLAY address inside the IRQ's interrupt of the tape loader. Both INIT and PLAY must use RTS as the end/loop for your game. That's how it worked for me. :)