Saturday, 24 June 2017

Cruiser X-79 - Update #8

20th-24th June 2017

It has been too hot this week, apart from yesterday and today. Despite the really hot UK weather I had recently, still that hasn't stopped  me from doing more on this game project. Quite a big update as well.

So then what has been happening this time round. For a start off I continued from a couple of weeks ago. This was where code was based on sprite / background collision. I originally worked on a subroutine where the player crashed should it hit a deadly character. Now this time I focused on the player bullet shooting to deadly background. I tried doing the bullet/background table read method, but that didn't quite work out. There were times where the player bullet kept on missing the deadly background and the bullet just flew over. A bit of additional hard work was required to this. I created a large listing to compare to a certain character to the bullet object position. If the central bullet reaches the deadly background, the bullet will disappear. Thus allowing the player to fire again. After testing this phase, things looked much better.

The next step was to do a little something different. I worked on the new title music for the game, using GoatTracker. I was unable to combine the title music with the other sounds, as there was a memory overlap. So I trimmed out the title music and placed it into a separate position and put it in the temporary preview title screen. I also programmed built in option where using a joystick in port 2 selects the sound mode (Music + SFX, Music Only, SFX Only, Silence).

Today I have been working on fixing some of the bugs in the game, and also adding some additional sprites. The sprites which represented Game Over and Stage Complete. In the stage complete phase, the player ship is automatically central before the Level Complete message appears on screen. During the player moving or the game over scene, all sprites get switched off, then after fitting the Game Over, Well Done screen, only 2 sprites are switched on.

The main game had some problems with the alien formation test. There were aliens that appeared incorrectly on screen while moving. I had forgotten to update offset code to reset the formation counter, so that aliens started in the correct position. After trying the game out, things looked very promising indeed. That was until, I came across the camel head aliens. They were flickering everywhere instead of using a proper formation. I managed to fix this problem by updating the low+hi byte tables for alien formation and properties. I tested the whole thing again and things looked a whole lot better.

As my final task today. I took a look at IRQ source code and tried to implement some subroutines. Reason being - The aliens and laser sprites were still visible over the black raster, that covers the scrolling background. In order to fix this problem, I altered the background colour to black (So no grey raster line could be seen). Then after that, a new subroutine was added to mask existing sprites as blank sprites. The trick worked, and the result was pretty good - although there is a minor glitch inside the score panel raster. It flickers for a split millisecond, but all in all, the game is playable.

Still no selected alien formation for each level yet, but that will be happening some time soon. Enjoy the latest video of what has been resulted this week.


Sunday, 11 June 2017

Cruiser X-79 Update #7

11th June 2017

Not much time has been spent on this project this week, due to other things, but at least I did put some of my commitment into this game project today. I did have a long weekend, but I have been working on some stuff for the demo scene, also been learning a bit of Unity PC Game development . This won't stop me from continuing C64 game projects. Anyway what has been happening today.

Although it doesn't really sound like much. In fact a lot of work was put into the game code. A new sprite/background collision had to be made, which corresponded to the player's bullet. The idea is basically to allow the player to shoot certain background objects in order to destroy them and score a few more points.

I used a similar approach to the player/background collision, but this time assigned the player bullet's central area to the background object. Should the centre of the player's bullet hit the background object, it should destroy it. I added a few JSR statements to check which background the bullet sprite should read, and then generated a subroutine which transformed the 4 chars of the background into a destroyed object. The player can shoot and destroy shutters, parked ships, stripey buildings and also the glass domes.

This is called by assigning a row+column into a zeropage, check the char co-ords and the char value of the zero page, then modify the charset to an actual new value.

See you Saturday next week (Hopefully) with another blog update to this project, where I update the bullet sprite/background settings to remove the bullet every time it fires at a high deadly background, and maybe setup the first level attack waves.

Saturday, 3 June 2017

Cruiser X-64 Update 6

2nd June 2017

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.

Over the next week or so, I will be restoring the player bullet to background collision. Should  the player shoot some of the background, it should get destroyed. Here's a snapshot of the game's new graphics. This really is looking nice. Time for me to backup the data and source code.