Saturday, 16 July 2011

Let's Scroll It!

15th - 16th July 2011

Well, there's one kind of game I have not really done before, which my 16kb cartridge game will require. That is a block and map horizontal scroller. I have noticed that this type of technique is quite popular with shoot 'em ups. Anyway, I needed to learn some new stuff, so I decided to try and experiment with something. Before I started programming the map scroller. I loaded up SubChrist's CharPad64 V1.8 and I took a look at one of the examples which was ready made. It was a horizontal scrolling map, called "Sooperdooper". I extracted all of the data as raw binary files, into the ACME cross assembler sub folder. Then I took a look at a tutorial which was one of the rants on the Covertbitops web site. It was about the dissection of the C64 CGC 1999, game Escape from New York. I took a look at the tutorial and noticed that it was for the DASM cross assembler. I have always disliked using DASM, and converted the source to ACME cross assembler, then I implemented the routine into the ACME cross assembler.

The first thing I did was to initialise everything, by clearing the screen, and zero filling it. Once I did that, I set up the colours for the scroll. Those of which refer to the border and background colour, multicolour 1, multicolour 2 and actual char colour. After that was done, I initialised the interrupts and the music, then added a CLI and synchronised timer routine. Then I typed in the scroll routines, which included converting the 4x4 blocks on to the edge of the screen, and scrolling it across inside a loop. I also had to manually type in the low and high byte addresses for where the block data lies, to place into the map on to the screen. After testing, I ended up with some silly things happening.

It took a while for me to get the map placing and scrolling to work, as I had some silly thing going on - a miscalculation of the block size and map size. Once fixed, I got the map to scroll and display nice and smoothly. I tried implementing the mixed colour data tiles into the source, which did work, but sadly there was one problem - using charset tile colours and putting it into the colour RAM can cause major loss with raster time. There is a way out of this problem, to actually implement something to stop that from happening would require some more research.

After finishing my scroll experiment, I decided to draw some test graphics and import them into the source code. Then make a little video of what I have done with the scroller. The reason for making and testing a 4x4 block scroller is because I want to make a horizontal scrolling platform shoot 'em up called "Woolly Jumper" for the 16kb Cartridge compo, run by RGCD.

Maybe some time in the future I can implement the scrolling routine to support SEUCK tiled maps from Charpad, then I can do a remake of another classic crap game for the Masterchronic label :)

Here's the video of the map running:

Hunter's Moon ending music originally by Matt Gray, DMC V2.0 version by Richard/TND