From Richard's C64 blog!
Well things sure are turning out quite nicely. Although this week hasn’t been a very nice week on a personal side. Still, the weekend arrived yesterday and I decided to plod on with my shoot ’em up project.
So what has happened recently? Well, I have found a C64 graphics designer to design and create the level background graphics and sprites. The speed of the graphics and sprites developed was really fast. The result was very impressive. Saul Cross has joined this game project. The game sprites were pretty awesome, and some of the game sprites were improved versions of some of my original sprites. The game background was very breath-taking. Much better than what I originally created. 🙂 Absolutely stunning.
I implemented the new graphics into the game project, but I also had to re-write the sequence table for the game sprites. That didn’t really cause any trouble. The animation for all of the aliens and explosion turned out how I expected. Excellent.
The next task was to re-write some of the sprite/background collision. I asked Saul if he could send me a snippet of which tiles should be shot and which tiles should represent the killer chars. He e-mailed me back the amended charpad file, which revealed the killer chars and shootable chars. These were marked with material values in charpad. Now that was much helpful. However, I had to add the markers for the collectable tiles, so that when the ship flies over that tile, it should get a power up or activate.
3rd June 2017
Today’s session has been only a morning session. Yesterday I was fixing up the new sprite animation tables. Today was something else. Working on the sprite to background collision. There were a lot of killer chars indicated in the Char Pad material char. Writing a very long routine to compare the sprite to background collision could write up a lot of memory. So in order to fix this problem, I decided to cheat a bit. There are 32 chars that represent killer chars. To make the collision code shorter for the killer chars, I decided to put the 32 values into 8 tables, and call a loop which rolls each value at a very fast pace. This is so that every time a collision char is read and the player is anywhere on it, the player will explode. I called a continuous loop that cycles 8 tables, which consist of 4 bytes (32 bytes overall), and added a compare value of the player’s X/Y hit co-ordinates to check for a collision. After the 4th byte has been read, the subroutine resets the killer character pointer and cycles through the process again. The IRQ control is very fast, and a collision to the player worked out quite nicely.
The next task was to implement the new power up tiles to the sprite/background collision subroutine. At first I had problems where I tried to read the correct value characters to disappear and reward the player. Unfortunately that didn’t quite work. Why was that? Simple, I extracted the incorrect background charset, tile and map data. So I corrected that one.