Monday, 25 December 2017

It's Christmas ... Time to Follow that Starfysh

25th December 2017
 
First of all, Merry Christmas (Happy Birthday to me ;o)) and a Happy New Year. This will be my final Blog for 2017, and I have decided to talk about the production of my LATEST game release Starfysh. This is basically a horizontal scrolling shoot 'em up - which is not a SEUCK game, although I have released some enhanced SEUCK titles as well today.



Starfysh is a simple 4-level scrolling game, in which Earth has been severly damaged by an alien battle. Humans and dogs have been transported on to rescue stations. The stations are now being attacked by aliens. You are a commander of the Starfysh Elite. Your mission is simply to battle through 4 different zones, fighting the aliens. After you reach the end of one stage, you'll move on to the next. This game has no particular power ups, but it was inspired a little on some classic games like Hewson's Subterranea, and Mastertronic's Star Slayer. The player can be controlled using a joystick plugged into port 2. That's the fun part. Now for the production notes:

Programming

The game was programmed using C64Studio, while I had a lot of free time spare between October - November in the evenings, and weekends (Excluding Sundays). The game consists of only 4 different maps which are quite large and caused me to play around with moving data to different areas of memory. 256 tiles in fact. All levels were transformed from bitmap format to charpad, using the map importing option. At first there were some technical problems. There were too many tiles and chars. I wanted a limit of 256 tiles/chars. The tile + charset compression option was a very good help.

Graphics and Design
 
I managed to fit 3 levels in, but adding the fourth stage was really challenging.  Each level was squeezed down using the Exomizer level/memory compression mode (exomizer.exe -l mem $xxxx source.prg -o dest.prg. The example decompression source was used to extract the compressed graphics source. (Charset, tile set and map).

Before I had the game sprites by Shaun, I created some test sprites of my own (Which were created in Sprite Pad, and then imported into the C64Studio source code). The sprites later got imported into my little weekend SEUCK project 'Space Crumpets' (Along with test sprites for Cruiser X-79, which I also drew ages ago). Creating the sprites wasn't much of a problem, but moving them was quite a challenge. I could have used the Alien Formation maker, which I wrote about a year ago, but I didn't want to make this another X-Force type of game. Instead, I worked hard on programming sprite movement patterns, based on timing and sense of direction. Some aliens will just move across the screen, but some aliens will move in a different formation. Also, unlike X-Force, I added alien firing. I also wanted to do something different to the game. The player should have a shield at the start of the game, or every time a life is lost. Shaun came up with an idea, which was to create a damage count before the penultimate death for the player.

Shaun did some new sprites for the game. The sprites were designed and created using the Shoot Em Up Construction Kit. Shaun used this editor for sense of a purpose (Not for creating a SEUCK game this time). The sprites were imported inside sprite pad. Sprite animation had separate subroutines to animate at different speed. Shaun's sprite example in SEUCK had to be followed. This was so that I could match the actual speed of the alien sprites.

Designing the front end with logo and scroll text was pretty much straight forward. Shaun sent me some bitmap mockups, and I was able to port them to C64 charset and screen format, using CharPad. This helped me a lot, however the title screen data had to be split into two separate charsets. The reason being was that manually creating the HUD design was a really difficult and painful task. I had to find a way to cheat and save time doing this. So I captured first the text charset snapshot, which included the HUD design. Then I capatured the main title screen presentation mockup. I imported all of the graphics assets into the source code, and programmed a new front end, and a working score panel, which uses the HUD. EXCELLENT!



Music

Sound and Music was done using GoatTracker V2.7. The in game music style was slightly inspired by some tunes from the demo scene in the very late 1980's - early 1990's (The Dutch USA Music Assembler/Voicetracker era). This time round I didn't want to make any techno/trance music. I wanted to try a different style. The title music was a slight remix of one of my older tracks, I originally composed in the 2000 year. (Space Techno I think it may have been called). I made the remixed title tune sound more disco style, rather than techno. For the up scroll ending music, I went for an epic space ending theme.  Sound effects were also created using Goat Tracker.


Mastering (Tape+Disk)

The final mastering of the production. Before I could do that I asked Shaun if he was able to make a loading picture. He suggested that I contacted JonEgg. I spoken to JonEgg and asked if he was interested to draw the loading pic, JonEgg was. However Shaun drew me a temporary loading picture for the mastering - also just in case there was no loading picture at all.



I decided to do the first master, using my pre-built C64 tool 'Tape Master Pro V3.0'. Before I could do that I imported the assets 'Loading music', 'Shaun's picture' and game, and used a black screen with thin dark blue loading stripes scheme. This was Shaun's suggestion. A good result. However, when I was on the 1541Ultimate 2 page, I discovered that someone else used Tape Master Pro V3.0, on a C64 game, but the loader caused a few problems. I contacted Martin Piper to find out, and he introduced me to a new version of TapeToolBuild.

I had to recreate the tape loader using the TapeToolBuild source in scrollermusicloader.a as the source code had no ability to display a loading picture or use any additional code I would have wanted it. So I re-programmed some of the features from the Tape Master Pro V3.0 tape loader (The flashing text, scroll text, picture display and PRESS SPACE option). I also created my own source files to import/relocate the game and picture data through a PC. Also a custom loading stripes scheme. The result turned out how I wanted it.

The disk loader was pretty much straightforward. I used the exact same loader as I did for Let's Invade (A Space Invaders game, which I wrote last year). I placed a loading picture and music for Starfysh into the game. Bolted a TND intro before the loader. I chosen the latest intro I created earlier on this year (Rippled Dreams), and added a brand new tune to the intro. I imported the main game and used Excess' Dir Master V7.1 in VICE to change the load address of the main game to $2000.


Eventually I received an email from JonEgg, which he attached a new loading picture for the game. I loved it. :). This replaced Shaun's loading picture, but I felt that Shaun's pic should still be used. So I made a timed splash screen which quickly display's Shaun's pic and run i through the Exomizer.  Not a bad result.



I showed the Disk + Tape version of the game. He suggested that the disk version should have loading stripes. He wanted dark blue loading stripes. I tried implementing this feature into the .D64 version of the game. Sadly adding the function to the IRQ loading code LDA #$06 : STA $D020 : LDA #$00 : STA $D020 caused the Exomizer decruncher to crash instead of decrunch. Instead I replaced the border flash with INC $D020 and DEC $D020. That made a huge difference and the program worked absolutely fine. :)


Starfysh can be found and downloaded on to your C64 1541Ultimate2, Turbo Chameleon, CCS64, VICE or whatever at:

THE NEW DIMENSION - GAMES PAGE - STARFYSH

other presents (new releases) can be found at:

 THE NEW DIMENSION




Also, to support SDIEC users, the game has a kernal loading option (With stripes), but you still will be able to listen to the loading music after loading has finished.

MERRY CHRISTMAS, Enjoy the presents, see you in 2018 and have a HAPPY NEW YEAR!