Saturday, 6 January 2024

2023 at a glance

2024 is here, and 2023 has been a really quiet year on the production front due to everything that had gone back to normality. The year has also been pretty memorable as I attended the Zzap! 64 Live 2023 and met a few C64 enthusiasts down there, including a few regulars. Anyway, some highlights of 2023 on the T.N.D productions front were as follows:~

What? No entry for the Intro Creation Compo 2022/2023?

You heard that right! I did not make any entries for the intro creation compo 2022/2023. The reason behind it was because I have been used to making intros that range from $0800-$4000 that allowed use of $0400-$07e8 as the screen RAM copy/to location. The intro compo had removed that category and made things more challenging. Also I had no time during the compo due to a few projects that were in the pipeline. I did code a new intro in 2023, but that was near to the end of 2023. It looked like this:

SEUCK

As usual I have been supporting the Shoot Em Up Construction Kit and ironically this year, I did not make any new SEUCK games. Instead, some friends/contacts contacted me and asked for one or two enhancements for their SEUCK productions. There were three SEUCK games which had support from me in 2023.

Yauzeras

This is the first of them. Yauzeras by GibRanx. Yauzeras featured a brand new front end, hi score table and even a brand new score panel and powerful music. It got featured free on the Zzap! 64 Micro Action magazine's cover mount. Both Gibranx and myself were very pleased with this production.


Synthia 2 and The Pure Sword

Another two SEUCK games, which more or less came after Yauzeras was submitted to me were Synthia 2 - Revenge of the ID and also The Pure Sword by Eleanor Burns. I was extremely impressed with how well both games turned out to be. There wasn't much for me to do apart from code a new front end and write music for both games. Although, The Pure Sword needed a new status panel implemented. It was very impressive that platform games can actually be made with SEUCK with *not much* code required. Eleanor was a superstar with this.


Synthia 2 starred a cybernetic heroine, who had save sleeping soldiers inside a massive complex. She had to solve puzzles by picking up the correct tools/equipment that will allow her to progress further inside the complex. The title screen featured a rendition of a tune that was originally composed by Flapsandwich, which was composed in Deflemask. The game music didn't fit so I re-did the same tune using GoatTracker V2 and credited the original composer for it. The in game music was my own composition.

The Pure Sword was another gem of a SEUCK platformer. This time however not a multi-flip screen adventure. Instead you had to progress past each screen blasting enemies. This was also the first flip screen SEUCK game that allows you to shoot and destroy enemies and use power ups. Eleanor did everything apart from the new score panel and music. 

Herisferix

Pinov Vox created a SEUCK game, in which was a vertical blaster called Herisferix. It featured some nice graphics, and plenty alien blasting fun. It was featured in issue 14 of Zzap! 64 Micro Action's covermount. The game was submitted to me first with a special request for enhancing his game using Martin Piper's SEUCK Redux framework. This was my final SEUCK Redux project for 2023 and the result turned out quite nice. The player was able to collect power ups and fight the bosses. Aliens were also able to target the player's position before firing stuff at it. Pinov had done a nice job with his game design - and it really was a good result at the end. Very smart.


SEUCK Title Screen Maker V1.6

SEUCK Enhancements ended with a brand new version of the SEUCK Title Screen Maker. It was a utility that allowed you to design and create a brand new front end for your SEUCK games, along with a scrolling text, optional hi score table, music, etc. However, there was something special I had in store for the title screen maker. You were able to make and install in game enhancements, such as power ups, new score panel, etc. This was done by loading in Turbo Assembler or Turbo Macro Pro, importing the code snippet, modify the settings (if required) and then saving the source file as an object file (using assemble to disk e.g. Back arrow and 5). Then after the enhancement was assemble to disk, it was up to the user to load in the SEUCK game, use an Action Replay Fastload /Machine Code monitor to then install the front end, enhancements (and execute the enhancement installation routines) and then execute and run the title screen code. 

Blazon in co-op with TND

My activity in Blazon was less active, due to time restrictions I had. However we did have a main project. My personal interest was continuing to make Blazon run like a c64 scene game development group. Well, this certainly did happen with only one release. Although I did code a few intros later in 2023, which I saved for future development projects. 

For Speed We Need 3

I wanted to write something for the Retro Programmers Inside game jam. It was a Racing Cars game jam. The game I was developing for the jam with the Blazon team as a co-op production was For Speed We Need 3. I remember the first two For Speed We Need games, and they were pretty basic. I wanted to make the third one a final in the series and make it more of a racing game with a twist. It was a push scrolling game in which you could drive a car on the road, and have to avoid dodging barriers and other obstacles. If opponents hit your car, some damage was set to it. There were no levels as it was intended to be a Le Mans style game. 

Hugues (Ax!s) helped develop the main game graphics, whereas Freeze/Blazon created sprites, title screen logo and loading bitmap for the game. I did the programming using KickAssembler. I also composed the music using Odie/Cosine's EMS V7.03, which personally is a great C64 music editor after you get the hang of it - and I am using it on a current game project. This could be my first ever C64 game in years to have used this nice composer. The Blazon team did the game testing. The game ended up featured on Zzap! 64 Micro Action's covermount, issue 13.



TND Games

There have been less new C64 games from TND in 2023, due to time issues (as mentioned earlier on). However three new games, and one re-visited game creation popped into the C64 scene. There was funny snake game, an arcade tribute and also a horizontal scrolling shoot 'em up revisited on the C64. Let's take a look at those three highlights.

Snake vs Bomb 2

The first Snake VS Bomb in 2022 was a success over the Christmas period, along with Cruiser-X 79. Now 2023 had something more fun and spectacular. Snake vs Bomb 2 was pitched to be an Easter release for the Retro Programmers Inside Snake game jam. Snake VS Bomb 2 was a horizontal scrolling eat 'em up and avoid game. You controlled a snake in which is slithering along the road beside a canyon. Your objective is to eat as much fruit as you can but avoid the bombs. You had to travel a specific distance until a level was completed. 

Just like with Snake vs Bomb, Hugues designed the game graphics and sprites for this production, while I programmed and compiled it in C64Studio. The music and sound effects were made using Goat Tracker Ultra (I cannot remember which version I used for it). I was very pleased with the overall result of this game.


Lunar City

This game was one of my tributes to the classic arcade game, Atlantis. However, much different. Lunar City was a simple shooting gallery game. The player had to target aliens by firing turrets at the evil aliens that try to destroy your radioactive pods. You had a set number of aliens to shoot before that location is saved. However, there was a slight catch. If your damage level resulted to one value below the number of aliens to shoot, all radioactive pods or your sentinel defence bases are destroyed, you lose the game. Lunar City had 16 levels, in which were challenging one level after another.

The game had some really nice presentation. Hugues helped me once again with the game graphics and sprites. I composed music using Graffity's DMC V5.0+ and sound effects were created using SFXEd V3.2 by Achim Volkers. The result of this game looked pretty good. It even appeared on Zzap! 64 Micro Action's covermount #15 in the summer of 2023.


Blastopia DX - Special Edition

The final full game of mine for 2023 was pitched for the Christmas Zzap! 64 Micro Action Covermount #17. It was a special edition of Blastopia DX. I wanted to make something for the covermount before Christmas, but I didn't have time to create anything new. I was so busy with my Lemon64 tutorial game Race 'N Smash, I decided to update the RGCD 16KB Cartridge Compo game, Blastopia. The update was a set of in game options and also including a hi score table. Apart from all of that. The game was still Blastopia DX, but you could play the game in one of three different game modes. I was happy with the result.


Retro Gaming Events

Usually I like to visit C64/Retro Gaming Events, when they hit my region in the UK. However, in late 2020 - 2022. I only managed to attend Revival 2020 part 1, before the pandemic hit the UK. It was a great event with many likeminded people, like myself. Anyway I did go to one specific event in 2023 which was:

Zzap! Live 2023

In mid August 2023, the Fusion and Revival Retro Events organized a charity event called "Zzap! Live 2023". This event was held at Kenilworth in the West Midlands. It was a fun filled convention that had a room full of Commodore 64s and AMIGAs, some of which allowed you to freely choose which game to play by loading it from devices such as the Ultimate 64, 1541Ultimate, SD2IEC, etc. I was mostly there playing some games, but I also got to talk to some likeminded enthusiasts, coders, SID musicians, etc. Not only that, we had a few laughs as well. We talked about how I currently made C64 games, why I still make C64 games today, and also about composing music, SEUCK etc. It was a nice event. The only memorabilia I bought from Zzap! live was a game from Psytronik, in memory of the late TMR/Cosine. I had fond memories playing a prototype version of Hammer Down when I visited Revival 2013 for the first time and it was a really good laugh. 

The biggest highlight of 2023: Snake VS Bomb 2

So then, I have revealed practically everything here about 2023. What was my biggest highlight of 2023? Zzap! 64 Live 2023 was fantastic. It brought back memories, and was a great event. However my biggest highlight for 2023 was  Snake vs Bomb 2. This was perhaps my all time favourite creation I wrote in 2023. It was one of those really crazy games which made many people really love its casual game play. I am really chuffed.

So what is happening in 2024?

Not much can be mentioned about what is happening in 2024. Except I do have three things in store for this year. The first is currently on top of my list (although started in 2023). Alpacalypse, is a co-op production I am working with Hugues, and the Blazon team. Also I aim to create Tape Master Pro V5. A new tape mastering tool, featuring Martin Piper's tape loader I regularly use. Some plans for it include support for hi-res bitmaps and music players with volume control fading after loading programs have loaded, as well as keep some of the old features. There is also Captain Ishtar 2. Surely there will be some new stuff coming.

Sunday, 20 August 2023

A dawn of a new game production: Alpacalypse

20th August 2023

It has been very quiet in this blog, but my C64 activity hasn't been quiet. It has been very busy in fact. I did a couple of SEUCK enhancements which were Cipher Patrol 2: The Pure Sword by Eleanor Burns, Yauzeras by Gibranx and a very special edition of VIOS by Mase. Other main game projects I made were For Speed We Need 3, a silly vertical scrolling racing Le-Mans style game I made with my C64 friends at Blazon and also with Ax!s, who kindly drew the in game graphics. Also I wrote the much loved and highly addictive Snake vs Bomb 2 and finally a fun Atlantis style game called Lunar City, where Ax!s kindly did the graphics for both of those two games. 

Finally, I visited Zzap! Live in Kenilworth last weekend. It was the first time I went to a computer event since the deadly Coronavirus pandemic stopped everything. I met great people down there, and not only was I playing games, I also shared fond memories about C64-related stuff and had a few laughs some of the people down there. However this blog is not about the Zzap! Live event. It is about my latest project. What is the project called? For a start off, it is going to be made with the group that helped me with For Speed We Need 3. That's right, it is going to be another Blazon game release. The game is called:

Alpacalypse

So then, what is the game all about? If you take a look at my photo edited rough design you will see. The game is a horizontal scrolling jump, run, collect and avoid game, based in a post-apocalyptic world on Planet Earth. You play an Alpaca, which is on a quest for survival. The problem is that it has to travel a very long distance along a dangerous path. Underneath your path is a deadly lava inferno, spitting out lava at random. Where as above the sky, it is also raining lava fireballs. Your Alpaca must dodge the fireballs, collect the fruit and avoid the traps (marked X). If the Alpaca gets hit by fireballs, its energy will be drained - but if it triggers a trap a giant 10 ton weight will fall onto the Alpaca instantly. Traps and full loss of energy results to losing a life.

Please note that the game mockup (featuring my graphics) will not be the final graphics, as Hagiler and Freeze has stepped into the graphics front. My main focus will be the programming and music and sound effects.

What about scoring points and bonuses?

The player will be able to score points. It can be done in various ways. First of all, for every few seconds, 10 points will be added to the player's score.  Also fruit will give Alpaca points in 100s, depending on what the fruit item scoffed is. It will also increase the energy for a while. There are also bonuses. After the player reaches its full distance, a level is completed it will score a bonus points of 1,000 plus an extra 100 points based on energy left. 

The levels - how will they differ?

The game will be using a wrap-around map, throughout the game. The map will consist of 256 blocks in width and 5 blocks in height, reserving the last 4 rows of blocks specially for the status panel. The levels will be varied with use of how rapidly fireballs will appear, and also how often traps will appear. The very first level intends to be easy, but the game will intensify as you progress further into the game.

How is the project being developed?

Alpacalypse is being programmed and compiled using Kick Assembler V5.25 and I am using CBMPRGStudio V4.1.0 as the main programming IDE for the production. The compression is currently being done using TS Crunch V1.3 for the time beingwhere testing will be done using VICE and of course my trusty Ultimate 64, which I aim to make the music in EMS V7.03 - like I did for For Speed We Need 3).

How and when will the game be released?

The game (like with many of my C64 games) aims be released as a free to download digital release from my TND website and itch.io pages (where there will also be an online version of my game) and possibly a few other places. The game will be formatted as D64 (digital disk) and also as TAP (digital tape) format, featuring a fast loader tape turbo. The game will not be a multi-load, as I find these to be a real headache. Everything will be put as a single file (except for the hi-score loader/saver active on the disk version).

Where it comes to the release date. That is not yet known. This is because my projects will depend on my wellbeing and motivation to get things completed. I am also between other hobby projects and real life commitments. I can give you an estimated duration of perhaps 2-3 months - but it is hoped that the game could be ready and released before then. I am done with making deadline projects, because of the stress of bug fixing very close to the release date. So there is no deadline.

Keep up to date with my C64 releases by visiting:
The New Dimension (on itch.io)
or
The New Dimension (main web site)

Update 13th October 2023

This project is still under development, and is still at an early stage, but progress intends to be pretty slow. The release date is most likely to be somewhere in the Winter months of 2024. T.N.D is most likely to develop some other small, but fun C64 projects in between this project. Any new productions finished will be announced in blog updates.

Sunday, 25 December 2022

2022 Reflections

It is that time, and for the very first time I thought it would be nice to reflect about the game-related releases of 2022, which I made. Warning – this is a very long post, but hopefully you should enjoy it and you may get some laughs out of it.

No SEUCK Compo in 2022

First of all, unlike previous years I did not launch the traditional Official C64 SEUCK Competition, this is because I decided to retire as host from the competition. A new organizer was found, and there was going to be one at the fall of 2022 but due to busy schedules and other reasons, the competition has been postponed to 2023. Merman is a good C64 enthusiast and a writer for Scene World and also runs the SEUCK Vault. He has been appointed as future host for the SEUCK Game development competition. When that will be we don't know, but if anything does happen then I'll post news about it on my TND web site.

SEUCK Enhancements

Looking back in 2022, I started the new year with a utility called the “SEUCK Title Screen Maker”. It was a fun utility that allowed you to create brand new title screens for standalone games that were constructed with the Shoot Em Up Construction Kit. Those who were bored with the old front ends were able to construct a game with an animated title screen full of colour, optional hi score table and also plenty of music. No code was needed to make a new front end, just access to a freezer cartridge like the Action Replay MK VI cartridge or VICE.



The easy part was developing the utility. The hardest part was writing the manual. I am usually not good at explaining things technical, etc. There was good feedback and improvement suggestions about the production, some of which got implemented (Multi tunes). I was really pleased with how the SEUCK Title Screen Maker turned out. A few people have actually used it. I know Vox Video Game used it for Diamond, and Mac of TUGCS used it to make his SEUCK creation, The SEUCK Camp.

The other SEUCK enhancement I did was a special tutorial of SEUCK School. A tutorial where you could make a new score panel for your SEUCK game, using 8 sprites in Rayfish. This was to be split into two parts, but unfortunately part 2 had to be postponed due to raster time issues and needing more investigation. Perhaps in the new year this will be solved.

That said, regarding enhancements. There was one unreleased game which was made for the delayed Reset 64, which I enhanced with a new front end and music. All will be revealed in issue 15 of Reset when it comes out.

... Now what about the games I have developed throughout 2022? Well, let's check them out!

Lane Crazy

The very first C64 game creation I wrote in 2022 (although I started it Christmas 2021) was a really fun creation. It is quite a memorable production. I know I had loads fun coding it in C64Studio, and for the game to appear on the Zzap! 64 Micro Action covermount was a real bonus.

I teamed up with Blazon and Friends to develop a really fun hi score survival challenge called Lane Crazy. The concept was quite original and turned out well amongst the crowd. You had four balls rolling down a vertical scrolling lane while holes appeared at random. You had to use either a joystick or keyboard to shift the balls left or right. If one ball fell through the hole, the game was over. There were 8 levels in which the player had to survive, where after two levels the game got much faster.



While developing this game, I was using some of the usual graphics tools, such as Charpad V2.7.6 free and Spritepad V2.0 BETA. Usually my graphics looked really rushed out. However the result of making the in game graphics turned out nice and smooth. There were separate void tiles specially made for each level. When I was programming the game, I made the code copy charsets that formed the void and placed it into the actual charset that formed the scrolling void. The rest of the scroll was a wrap-around scroll, apart from the holes that appeared on screen at random. The concept really worked. The hardest part was to get the smooth scroller working on NTSC, but at the end I managed it.

When I was composing music for this game, I decided to go oldschool and use DMC V4.0 on my Ultimate 64. The music for the game blended in quite nicely.

Lane Crazy was really great fun, and it was nice of Firelord, Logiker and Baracuda to have teamed up to help me bring out a quality production, which saw the light of day. A huge thank you to you all for helping me out with such a successful project. Maybe we can do another new game in the future.



Tasered in the Crotch

The next game (Ironically) I wrote was a little joke game. It was called Tasered in the Crotch. Despite the silly name, and it being inspired by Commodore Format Archive’s Twitter poll (Dick Tracey, Cisco Heat, Tasered in the Crotch). The majority of people voted to be Tasered in the Crotch. This gave me a funny idea for a game coded in C64Studio. It was a fun little shooting gallery style game.

You had police officers lined up on a high balcony (or maybe a scissor lift). They are armed with their new state of the art tasers. Your task was to command each officer to fire a taser at the bank robbers that were walking/running past. Some were armed with smoke bombs, and you had to defend your officers from being hit by a bomb. Also, you had to watch out for innocent civilians who were passing A bomb or tasering civilians resulted in a loss of a life. If the number of criminals escaped exceeded the quota set for each level, the game was lost.



The game design was yet again made in Charpad and Sprite Pad (Same version as before). I wanted to make a few different landscapes, but with the limited number of characters, I had to improvise. After importing into the game project in C64Studio. The code was in place, and the result looked really good.

It was great fun making this game, and the music (made in Goat Tracker V2.76), which was featured on the title screen sort of had an Ocean Loader inspired tune to it just after the introduction might sound quite familiar.

A game which was intended to be a joke turned out to be something much more playable and successful, compared to Dick Tracey and Cisco Heat - It also appeared on the Zzap! 64 Micro Action covermount and was quite popular amongst one particular video reviewer :)


Little Nippers and Little Nippers DX

Reset had launched a 4K game development competition. I wrote a fun little single button game in which later on become a full game production. Little Nippers was the game. It was a fun co-op production which I made in C64Studio. This was a single screen game, where naughty kids were running across the beach. There were buckets lined up and it was up to you to fire a crab out of the buckets in sequence, by using either the spacebar key or the fire button. The crabs then moved in a straight line and if you nipped a pesky kid, points would have been scored according to distance from the sea. If the crab entered the deep end of the water, it gets lost.




Although Little Nippers started as a 2022 4K game competition entry. However, with summer on its way, and the competition submission deadline had finished. I decided to team up with Hugues Poisseroux to make a full version specially for Zzap! Micro Action’s 9th covermount, before taking a break from it and focussing on finishing off one of my main game projects.

The new version of Little Nippers gave the player five different beach/seaside locations. Before you were able to complete each location, you had to complete eight levels. There were 40 levels in total. Also there was a fun incentive which was added to the game. You had a time limit to launch your crabs out of the buckets before they have enough and jump out. There was also an incentive where you could fling a jellyfish for more points. Little Nippers DX was a good highlight and it really turned out to be a fun and pretty much addictive game creation.

 
Hugues' loading bitmap really highlights how fun the game was to be, It highlights some of the elements that were featured in the game. A snappy crab, a jellyfish and also a bikini (or two). All of which blended into the all new version of TapeTool turbo loader.




TheC64 Coding Challenge - Poing Ultra

I joined the group, Retro Programmers Inside. It was a group of retro computing enthusiasts, who were learning to program games and other fun stuff. The group was run by Prince/Phaze101, and Retro Programmers Inside. They did weekly video casts which mainly involved coding tutorials and also run game jams. The challenge I participated in was the PONG challenge. The game was called Poing Ultra.

My challenge was to make a new retro game, which suited the PONG challenge. It was to mark 50 years of the classic arcade bat and ball game, PONG. I thought it would be fun to make my very own game using RGL’s theC64 full size computer. The game was constructed using various Public Domain utilities I owned back in the 1990s and also the previously commercial Multi-Screen Construction Kit, and Action Replay cartridge MKVI (plugin). Music was made in DMC V4.0, The music was mainly techno, trance style and it worked out pretty well in the music editor. The programming was done bare bones in Turbo Assembler / Turbo Macro Pro most of the time.




There were a few pitfalls I encountered while developing this game. Although the main game was fully complete and working well in the assembler. I should have programmed the title screen as a separate file. Instead, I used the same assembly file and run out of memory. It wasn’t a complete failure developing this game. I ported the code to 64TASS and finished off the production using the cross-development tool. The game graphics were then drawn in Face's FacePainter, and the result turned out quite nicely in the overall productions. Mastering was finished with Martin Piper's TapeTool V1.0.0.7




The game got submitted to Prince/Phaze101, who then later broadcasted the game live on his Twitch channel along with some other entries. He was very impressed with the game overall, especially the graphics and presentation. While I was watching the broadcast, I was very pleased with the overall result.

Slug VS Lettuce

I developed a new little game, as part of the Scene World feature “Let’s Make a C64 Game”. This time it was a 10 minutes survival challenge called Slug vs Lettuce. It was a little game in which was to teach the basics of making a single screen platform game using KickAssembler. You played a slug that has to jump from platform to platform, gobbling up the lettuce. The slug had to avoid getting washed out by the falling salt droplets.

The game graphics were designed using the usual cross-development platform tools. The music was made in Goat Tracker. The rest of the project was being made in VS Code, and KickAssembler via plugins. Although I liked KickAssembler, the one thing I least liked, during the development of this project were the nuisances that VS Code developed. Popup-tooltip, etc. Of course compiling the code was easy enough, a basic push of F6 on the compile target file, and then F5 to run it, but there were no possibilities of crunching it with Exomizer (or the brand new TS Crunch). Instead I had to just make a batch script file and execute that.

This game did not turn out too bad, and it was really fun to make in Kick Assembler. However, the hardest part was to get the jump and charset collision mechanics accurate. The good thing about it though, was that the game worked out really well.



My biggest C64 project - Cruiser-X 79 – finally finished and released

The majority of 2022 was spent on my main game project, Cruiser-X 79. I had waited too long for additional graphics and level maps. Unfortunately, I received nothing due to many busy periods which Saul had to go through. – That was until I thought about an alternative plan. I did promise to get Cruiser-X 79 finished in 2022 and I really wanted to do that. However, I wanted to try and make the job easier for Saul. So, I created some rough game graphics (which you saw in previous blog entries) and maps. Then I sent them over to Saul to improve. 

I also worked exceptionally hard on making level music in GoatTracker Ultra V1.2 and getting everything to work. Also, I was working to a deadline to get this game ready in time for the Christmas issue of Zzap! 64 Micro Action (Issue 11) and its covermount.



I did come across one major pitfall in getting the mighty big shoot ‘em up finished. That was handling the Covertbitops loader system and Exomizer level unpacking system. It took me quite a lot of attempts to finally get each level to unpack and run on the disk version of the game, and I managed it.  

I also wanted to do a multi-load tape version of the game. Martin Piper’s TapeTool was one option, but I chose Paul Hugues' Freeload at the end because it used less zero pages. Also, it did not affect the game code either. The overall result for both digital disk and tape version of Cruiser-X 79 turned out excellent. It felt like a full price commercial quality game production as you would have expected back in the late 1980s or early 1990s. It was also the very first time I ever made a huge multiload production - especially on tape as well as disk. I am really pleased with how Cruiser-X 79 turned out. The feedback was also good.




Snake VS Bomb

Now coming to the end of this year, I decided to end C64 development for 2022 with a bang. There was a competition that was run on CSDB called the “Snake Fun Compo”. The idea of the competition was to create and develop a demo, game or whatever was related to snake. Considering there have been many Snake clones launched (I specially did one as a theC64 challenge back in 2020 called the Forever Extending Hungry Snake). I wanted to make something completely different.



Hugues and I joined forces again to bring out a quality game production for the competition called Snake vs Bomb. Developed in CBMPRGStudio V4.0 with KickAssembler (and with less nuisances compared to VS Code), Snake vs Bomb was a vertical scrolling dodge and collect hi score challenge.

You played a snake that was slithering through a tunnel. Fruit and bombs appeared at random inside the tunnel. The snake had to eat the fruit but avoid the bombs – otherwise the game ends. As the game progressed, the speed of the game scroll increased levelling up in difficulty. The result turned out really nice, and no matter how simple the game was, it turned out great. The graphics and the loading screen artwork really polished the game. It was also my very last game for 2022.



… and that rounds up my productions I made in 2022. 2023 will be a tougher year, but I insist that new games will be made by me. There should be another theC64 programming challenge sometime (Where I make a production fully on RGL’s theC64), my SEUCK enhancements/tutorials and my editorial task of building Scene World will continue. Also, I aim to return to Unity and convert one of my year 2022 C64 games to the platform. Before I do that, I some books to go through. I look forward to seeing what can be achieved in 2023. Also 2022 is the year I finally realize how proud I am about myself, and my creativity - and may it continue throughout 2023.

If you would like to check out my releases (as mentioned in this lengthy blog) you can find these at:
https://richard-tnd.itch.io

I would like to wish you all a Merry Christmas and a Happy New Year

Friday, 5 August 2022

Cruiser-X 79: The Final Battle

 Just a short entry today. It is about level 16 of Cruiser-X 79. I decided to re-use the one of the earlier level designs as a rough design (I think it may have been level 10). The design of level 16 is supposed to be the alien pirate base. There are loads of flying over deadly background tricks to be achieved in this final battle stage. Luckily there are shields to collect - but response needs to be quick before the shield runs out. At the end of level 16, I made a HQ base (the home base for the player ship) . As for the music, I have gone for a moody military style tune (no trance this time). 


There is an ending intended for the game. However this will NOT be revealed in this blog.

Well that is it. All of my rough level designs finished. I will be awaiting Saul's magic touch to the game. However it is not the end of the game project yet. I have some code tweaking to do.

Update 24th December 2022!

The game with is finished and is now officially released. You can pick up the full game absolutely free or play the game online at https://richard-tnd.itch.io/cruiserx79 

Wednesday, 3 August 2022

Cruiser-X 79: More bubbles

 Because I liked level 4 so much, and the bubbles scene. I decided that level 15 should feature the bubbles once more, but this time much inside a much harder level. There are some more barriers in which the ship should avoid crashing into, but as usual shields should be easy enough for the player to pick up. The shield allows the player to fly over deadly background for a temporary amount of time. 

On the music front, it is another fast paced tune, but not trance. The music sort of feels very oldschool like something you may have heard in the late 1980s or early 1990s. The idea for the music for this level was intended to sound a bit like Maniacs of Noise, but the tune plays too fast. I had to make the music fast due to the level finishing before the music loops back. The result is pretty good.

I exported Level 15 graphics into the game source. Re-configured and compiled the game to put everything in place. Then I set the game code to play level 15 after loading from disk and played the game with infinite lives. This rough level design has turned out quite well. I am really pleased with how it has turned out.




There is only one more level to design this week, before I go full on into the game code next week fixing the game bugs and adding additional elements like 'continue game', 'hi score/name entry', etc. There is one thing I am most certain about. That is completing the project in time for a Christmas release. There is still plenty of time for improvement and finishing everything off. - Unless of course circumstances beyond my control holds things back, which I hope will not be the case. :)

Sunday, 31 July 2022

Cruiser-X 79: A touch of glass

I am back in action working on Cruiser-X 79. The next level is once again based in space. I wanted to make another ice-themed level for this game. I loaded up level 6's map in Charpad V2, and created a brand new map from it before adjusting the character sets to make a rough design.

Well, Level 14 is still ice themed, but this time round, it is based in space, rather than inside the original base. I wanted to make some glass windows for the base, so that it looks as if it is some kind of glass-ice base. Also I adjusted some of the background charsets to make the base look slightly different. Yet again some more deadly obstacles with an incentive have been added. This time the obstacles/full blockade is a further distance than the shield. It is up to the player to pick up the shield and try to fly over the blockade otherwise the player will die.

After completing my rough design of the game map and altered the character graphics. I went onto working some music. This time, I decided to do a spacey themed tune. It is still up-tempo, but quite moody. In some parts of the tune, there is one part which reminds me of the theme tune to the 1980s TV show, Street Hawk. But of course the music in the game is definitely not that.

After finishing the music I exported all of the charset, tiles and map data into the project source code, and then compiled and run a new D64 with level 14 added. I am very pleased with how the music turned out during play of the game build. As for the game graphics, it is just temporary until they have been given the magic touch by Saul.



There are only 2 more levels for me to design before I go back to the game code and make some minor improvements. The project is shaping up really well. I am confident that this game will be finished and released some time this year.

Friday, 15 July 2022

Cruiser-X 79 vs Spore

 Well then, another week nearly over, and the rough graphics designs and maps I have been making are close to completion. Today I focused the mid morning - afternoon developing level 13 for Cruiser-X 79. The idea this time is based inside another base, which contains spore. The spore will not be deadly for the player ship, but there are to be quite a lot of obstacles for the player to watch out for, such as the usual high walls.

There isn't really much I can talk about, where it comes to this level. Except for that things look a bit messy at the moment. However S.C should hopefully be able to tidy things up with my rough level map design.

More music has been done for this game, and yet again another up tempo soundtrack, but this time more moody, but still trance like. 



Thursday, 14 July 2022

Cruiser-X 79 - Ultra Violet

 Wow, there has been quite a delay since I last did my last level design on Cruiser-X 79. Well, it was due to working between other game projects. I had the PONG jam, also Alf Yngve's Captain Ishtar project (Which is nearing to completion). Finally a secret game project I was working on for an upcoming covermount for Zzap! 64. Unfortunately the game project has been very problematic so close to the deadline. 

Anyway, moving on forward to Cruiser-X 79. This time it is level 12. It is also the return of the vegetation zone, but this time, I called it "Ultra Violet". This is because the game uses an ultra violet blue scheme instead of green. The idea sounds quite weird but the colour scheme has actually turned out quite good. Also yet again, the music for the game is trance music, similar to the style of level 5. I have added less walls for this level, as the enemies for this stage are getting quite harder and faster.





Sunday, 26 June 2022

Cruiser-X 79 - Mosaics

The blog entries for this project are going to be shorter now. 

My rough design for Level 11 of Cruiser-X 79 was done this weekend. The design currently uses level 4's original graphics design, but I altered some of the game chars to make the base look different, and possibly quite smart as well. Level 11 is to (later on) contain some nice square+L shaped mosaic tiles patterns around it painted by Saul. I replaced the bubbles characters with stars and asteroids The screen shot below is my rough design for the level. 


Next I worked on the in game music. It is less trance like, compared to some of the older levels. The music is pretty moody, and has a good punch to it. Very industrial in fact.

Well, that's this level out the way. More updates to come next week, with level 12.


Friday, 17 June 2022

Cruiser-X 79: Enter the Block

 A hot sunny week, plenty of walks, except for today due to excessive heat. What better to do but relax and work on a new level for Cruiser-X 79. That is exactly what has happened on Thursday and Friday this week. I wanted to come up with a new idea for level 10 onwards for Cruiser-X 79. It is quite a deadly plot of mine. You'll see as you read on a little bit more. :)

I load up Charpad V2 and then load up level 1's graphics data. Then I save it as level 10. I saved it as Level_10-JaggedBase.ctm, which later gets renamed by myself as Level_10-BlockyBase.ctm. You will see the reason why I did this later on in this entry. The next paragraph in fact. As usual I filled the whole screen with the space background data. I then set the colour settings to a crystal blue, purple and light grey. It looks pretty nice.

The next step was to construct and design the base for level 10. I went down further to level 1's tiles and edited the base which had the jagged edges (Which were used for Level 3). The characters that form the jagged edges were transformed into nice brick like mosaics. This looks perfect for the edges. The scrolling void inside the enemy base is filled with black and blue waves. It looks really nice. Now what about the new feature in the game? Basically it is a deadly new feature, which requires skill. Some bases on level 10 (which will also feature on the remaining five levels to be done) feature a long wall across the whole base. The only way to get over that structure is by collecting a temporary shield and fly over them as quickly as you possibly can. The alternative solution will be to lose a life. There is a helpful clue in level 10 however. A skull with an up arrow warning there is danger ahead. - This will feature on another one or two levels, but the last set of levels it will not be used. It will be a test of memory.


After completing my map and scanning through the whole base inside level 10 I was very pleased with how the level looks and how it has turned out. I think with the extra touch Saul makes to the level, it will look even more marvellous. I must confess that there isn't much to be done for the charsets of level 10. They look good as they are already :)

Next I load up Goat Tracker Ultra V1.2.0 to compose some music for level 10. I decided to make this tune very upbeat and quite enjoyable. Although it is my typical style, I think it would fit very well in a space shoot 'em up. After composing the music, I tested everything on SIDPlay and then exported the music file to the binary folder in the project.

Finally I went back to Charpad and exported level 10's charset, tiles and map data into the game project. The source code gets edited to set the correct table value for the colour of the map. Also I altered the level counter routines so that the status panel can display the correct panel for each level loaded, according to the level pointer. I compile everything and test the level, and here's the result.


This is my very last WIP video for the main game as I honestly do not wish to give too much away.

I will be taking a look at the memory available inside the main game code, and see if it is possible to add a fast disk loader system into the game project, where no data gets overwritten by Exomizer's level memory packed data or other code. The disk loader I aim to use is Lasse's Covertbitops Fast Loader system, which I used for my brand new Reset Mix I Disk Menu, reserved for issue #15 of Reset. I tested the fast loader to see what would happen if I tried to load a program in VICE without true drive emulation. The loader worked nicely without fail.

Stay tuned next week.

Saturday, 28 May 2022

Cruiser-X 79: Let's Rock !!!

Wow, am I really on to level 9 already? You betcha :). After completing level 8 last week. I worked on with designing level 9 on Thursday. I thought that for level 9, it would be nice to add a some new theme to the game. So an idea had come into my mind. The first half of the levels have been quite simple and involved shooting aliens and flying through bases, and hoping to avoid the enemy bases highest points.

Well, level 9's idea is similar to the first few levels, but I came up with an idea to implement even more deadly background. So that the player can easily crash into deadly terrain like rocks or similar - unless the player is carrying a protective shield (simply by hovering over the 'S' tiles). I started the level where there power ups are in place at the start of the game. Then I designed some of the background to make it look a bit like rocky terrain. It sort of uses some of the base's background character sets, and the deadly high building. I painted the blocks a little to make the deadly terrain look a bit like rocks. 

Although the graphics data that was being used for level 9 was based on level 4's Bubble World. This time round, I didn't want the bases to be bubbles based. I also didn't want the space background to become bubbles either. Instead, I chose to edit those character sets and turn those into steel saw disks. The colour scheme for the level are red, grey and light grey. The shoot-able blocks and other bits got transformed into different charset objects. After finishing the map and the design layout of level 9. I packed up everything ready for the next day.

The next day came, but sadly nothing happened that Friday. I was going to do some more work on the project on Friday, which was to work on some game music for the project. Sadly I felt unwell to be productive. Maybe tomorrow.

Saturday came by, I loaded up GoatTracker Ultra V1.2.0 to first work on some more in game music for Alf Yngve's Captain Ishtar project. Then I worked on level 9's music. It is sort of a dark, moody and industrial tune, which I felt would suit Level 9 of Cruiser-X 79. The tune is not trance this time (unlike levels 5, 7 and 8). I edited my instruments to make it sound right, then I exported the tune as SID and tested the tune. 

Once I was happy with the music, I exported it to PRG format into the game project's source code. Then I loaded up Charpad, and exported my Level 9 graphics and crunched them with Exomizer. I loaded up the source code, edited the settings and then compiled and built the project and tested the game in cheat mode. It looks pretty good. However, after Saul's magic touch to the graphics, it will look even better.

I am now going to take a short break on the level development of Cruiser-X 79. It is set to continue in about 2-3 week's time, unless theC64 challenge for Retro Programmers Inside's PONG challenge is finished and submitted to the compo. Stay tuned!!

To find out more about my progress with theC64 challenge #7 PONG 50th Anniversary game, please check out the link below:


https://tnd64.blogspot.com/2022/05/thec64-challenge-7-celebrating-50th.html



Wednesday, 25 May 2022

Cruiser-X 79: Lava hard work

 Last weekend I have been working on level 8, which is yet again based in space. However, I wanted to give the game a sort of a hot feeling. That's right. Level 8 is a lava base. I loaded up Charpad. I loaded up the graphics from Level 2. Then I cleared the whole screen and re-drawn the space background. Afterwards I placed in the tiles that formed the enemy base.

The next thing for me to do was to make sure that the level did not look too much like Level 2. So I edited the charset graphics and replaced some of those as new charsets. I tried experimenting with different looks for the enemy base. I decided to try and give it some hot look. I turned a few of the unused chars into plain chars, so that I could create a checkerboard effect. Also I altered the two scrolling charsets to represent the lava, which should parallax scroll with the game scene. A floor mosaic of an invader (with two high pillars) were implemented for the eyes. 

After completing my base, I worked on some music. This time, using the GoatTracker Ultra V1.2.0. Like with level 5, I thought it would be good to do an atmospheric fast thumping trance style tune for that level. I went for a traditional exotic mood inside the sound track. 

After finishing the music I exported all of the graphics data, and also imported the music into the game project source. I loaded up C64Studio and edited the level table and set the colour to match the level. The D64 building batch file got edited Then I compiled the project once more and run it to only load that level (I says level 1 on the status panel, but this is only test mode). The level loaded nicely, and the map turned out quite well.




Like with level 7, I have passed the graphics file to Saul to alter to make it look even more improved. I am very pleased with how things have turned out so far, and there is another level of Cruiser-X 79 (Level 9) I have in mind. It will be slightly easier on the game front, but there are harder aliens to come.


Saturday, 21 May 2022

theC64 Challenge #7: Celebrating the 50th anniversary of the all time classic PONG (95% theC64, 5% 64TASS, Exomizer)

 This year does not only mark the 40th anniversary of the Commodore 64, but it also marks the 50th anniversary of the cult classic two player arcade game PONG (The screenshot below is a PONG V1.0 by TND contributor Matteo Angelini. Quite recently, Retro Programmers Inside launched a programming challenge on their Facebook page in which is to make a PONG style game to celebrate the 50th anniversary. 

To mark the celebration of the 50th anniversary of PONG (and ironically celebrating the 20th anniversary of POING). I will be doing a lucky 7th theC64 challenge on my theC64 full size computer, with aid of an Action Replay plugin and a few utilities. This type of game should be suitable enough to create and design on RGLs computer, unlike a couple of games I had failed on, due to memory issues.  After project is finished, I will also be including the source code.

I remember back in 2002 I wrote a C64 game called POING, which ironically had a second sequel. To celebrate the 50th anniversary of PONG and also my 20th anniversary of POING, there is going to be just one more POING. I remember someone contacting me a few years back suggesting I should re-master Matteo Angelini's game to give it background effects, and stuff like that. I didn't quite get round to doing that. However, as I'm not all that familiar with CC65, and don't like scripting languages like C, C# and Java. I have decided to just make my own version instead.

I do remember POING being written back in 2002 completely in Turbo Assembler, and Action Replay, but the game had many bugs left inside. After I released the game, it crashed at times. So a second version was released.

Three years later, I created a sequel, which was called MEGA POING. (Renamed from Poing 2). The game graphics design was slightly improved but felt too much the same as the original POING.  There was also a 1 player mode, which only had the player moving up/down constantly. There was no AI programming involved in this version of the game. The game had no sound effects, and had only music. There were also 4 different screens, but the size of the game field was way too small. The same problem was with the original POING.

Moving on to 2022, I have decided to make at least one more sequel to POING, but with the more better skills I have in C64 game development, compared to back in the early 2000s. I am aiming to make POING 3 look more modern. It will feature a colourful presentation, and also (as suggested years ago by another C64 coder) will feature full animated background and some up-tempo music (unless sound effects has been selected). The only difference is that the project will be developed with a modern look on my theC64, without use of PC cross development tools for graphics design, sound, and programming. I will be doing all this on theC64. Then the finished production will be mastered to a digital tape image using "Tape Master Pro V4.0" via my 1541 Ultimate (Since VICE in current theC64 firmware doesn't support tape writing support).

I have already picked out a selection of utilities from the Public Domain C64 scene. The CSDB has so many scene-related utilities, but I have only picked out my favourite tools for this project. They are as follows:

Graphics:
Multi-Screen Construction Kit V2 by Jon Wells (previously commercial, owned)
Char Machine char size converter by Sub Zero (public domain)
Sprite Editor V1.3 by Faces (public domain)
Face Painter by Faces (public domain)

Sound and music:
DMC V4.0 (Demo Music Creator) by Graffity (public domain) 
All Round Relocator (for just incase I need to move music) by the Syndrom (public domain)

Programming and development:
Action Replay MK VI by Datel (previously commercial, owned)
Retro Replay V3.8Q by Cyberpunx  (Public domain)

Programming, compression and linking
Turbo Assembler by Omikron (public domain) 
64TASS (Cross-development compiler by Singular)
Exomizer (I don't want to spend ages packing and crunching, unlike what I used to do back in the 1990s-very early 2000s :)
Mastering
TND branded Presentation intro by Richard/TND
Tape Master Pro V4.0 by Martin Piper and Richard/TND

I have until 20th June 2022 to develop and produce this game project, but with all the free time I currently have at the moment in the evenings during poor quality TV shows (Let us put it this way, prime time on a weekday is over-run by extended news programmes and soap operas.

It is most likely my project is to be completed before that specific date unless things change. Of course, I will also be continuing with my Reset 64 mix-i-disk game project and also Cruiser-X 79. Which a new blog will be posted about the project next week. Wish me good luck :)

Please note: screen shots featured in this blog are screenshots taken from VICE - although the game project is *officially* being programmed on theC64 full size. 

Sunday 22nd May 2022
The in game graphics scene

It was quite an easy task for the first part of this challenge. During Sunday night, I booted up theC64 and loaded up the Multi Screen Construction Kit and I drew out the game graphics scene. If you look at the screenshot below. You can see that the game screen has been designed like a traditional PONG court, but there is a bit of modern design implemented into the graphics. 

I didn't want the game to look very basic like the traditional PONG, but instead I wanted to make something more colourful and quite attractive. There could be a possibility that later on the background graphics might be tidied up a little more. We'll have to wait and see how time goes with this. Then again, my text charset has always looked the same, but that will of course be for the title screen (along with a nifty bitmap logo). I take a look at the value of each charset, and take notes of which chars represent the scoring number chars, also the lasers and blue tiles. These have been noted on paper for a good purpose. I need to keep those as reference for when I am actually coding the game.




Although the game screen has been designed and stored and saved to a finished library. For the main game project I will not be using the finished library file. This is because for a game simple as this, the library file is too big, and perhaps not compatible with the Turbo Assembler when loaded. I tried this a few times, when I created Balloonacy and a few older games back in the very early 2000s. There were plenty of pitfalls.

Instead, I push the freeze button on the Action Replay and then I code a subroutine which extracts the screen and colour RAM and place it into memory, where I can just save it out as a whole chunk of data. The routine then jumps to $FCE2 which soft resets the C64. However the charset, object and object colour files all have to be saved first before I can add the routine and perform the action. At the end of the day, I don't want to lose everything if it all goes wrong. I can be a clumsy coder at times. The routine used was this:


Monday 23rd May 2022
The sprites

The next task was to draw some sprites for the game. I wanted only a few sprites (for now). I loaded up the Sprite Editor V1.3 and setup some colours to test the look of the sprites. I chose brown, white and cyan. Unlike some sprite editors, the changeable sprite multi-colour stays that same colour all the way through. Of course, when I work on coding the game, the sprite colours will be different. The ball intends to be silver, player 1 intends to be light blue, and player 2 intends to be light red. We'll have to wait and see. 

I drew the bat (a single sprite, but this can change later on in the project), using 3 colours, also I drew the ball and also an explosion animation. The explosion animation should more or less cater for the size of the bat, to give a good effect. To be honest, I am not all that happy with my explosion animation frames, and feel that something could be changed. I can do that later on in the project. There is plenty of time - and I currently have it at the moment. 

Sprite 00: Bat
Sprite 01: Ball
Sprite 02-06: Explosion
(Will be improved later in the project!!!)


Coding - Session #1

Now it is time to code the main game. No title screen, yet. The main game will be the most important aspect of coding. First the Action Replay cartridge has to be set and completely initialise all of the data in memory. Pressing F1 (Configure memory) usually does the trick. Next, a soft reset to the Action Replay menu and into fastload. As I don't need accurate disk (_AD ) for the software which I am using for my theC64 game development challenge.

The next task is to load the graphics data, and other work data. I also extracted an old tune from a note writer to use as a test soundtrack for the game project. I will be doing music and sound effects in DMC V4.0 later on during the project.  I chose the layout for where to put everything so far in the project:

$0800-$0fff - Game screen and colour data
$1000-$1xxx - Game music and sound effects
$2000-$2400 - Game sprite data (There only needs to be a small number of sprites AFAIK)
$2800-$2fff  - Game character set data
$3000+ - Game code

I load up the Turbo Assembler and then enter SYS26880 (This version of TASS used was shortened and modified by Samar and has $9600 as the jump address in order to make more memory for code listings). Then I did another soft reset on theC64 and type OFF in the fastload option. F8 is then pressed to enter the machine code monitor. I load the game graphics, test music, sprites, and charset data into the chosen locations, and then I save the whole set of data as a big chunk. 


Next I enter G 9600 to enter the Turbo Assembler and I got started with coding. The first part was to get the game screen onto to the main screen. Then after I successfully got that on display, I got to play some music in the background, via an IRQ raster interrupt. The music player has not yet been used to play in PAL/NTSC speed. That could be done in my next coding session. The main idea is to get the game graphics to display on screen, and ensure that my IRQ raster interrupts are working. Brilliant.




You may remember earlier on when I designed the blue tiles inside the game arena, and I also added some lasers. Well, these I don't want to be just static, I want all of those to be able to scroll. The laser beam on the left should scroll upwards, and the laser on the right should scroll downwards. Before I am able to get those to scroll. Pointers (worth single bytes) must be entered to time the speed of the scroll. Also I need a pointer to the synchronize with raster interrupts. Also to scroll the lasers I have to set the scroll time to a delay value. Then reset the delay value, and then scroll laser characters. character 40  represented the laser up, and character 41 represented the laser down character.

How do I scroll the characters? Well a whole character consists of 8 bytes in memory. To scroll a character upwards, I would have to grab the very first byte of the character, store it to a pointer or zeropage, and then call a loop that pulls the remaining characters back. After that is performed, I simply load and store the zeropage into the last bit value of the character. Scrolling lasers downwards is a reverse operation. I prefer to use zeropages or pointers to collect and store the bytes instead of using the pha and pla command in order to avoid confusion. 

An example for scrolling chars upwards:

lda charset+(40*8)
sta chartemp1
ldx #$00
scrollchar
lda charset+(40*8)+1,x
sta  charset+(40*8),x
inx
cpx #7
bne scrollchar
lda chartemp1
sta charset+(40*8)+7

Also char scrolling backwards

lda charset+(41*8)+7
sta chartemp2
ldx #$06
scrollchar2
lda charset+(41*8),x
sta charset+(41*8)+1,x
dex
bpl scrollchar2
lda chartemp2
sta charset+(41*8)

After assembling the source code done so far, the screen displayed, music plays and also the left and right lasers are scrolling perfectly.

The next thing I want to do is make the blue tiles scroll in eight different directions via a timer. A new routine has been programmed to perform this operation. After assembly and running the program, the tile scrolling routine worked, but for some strange reason there was a big split/tearing in one of the bytes between the characters. I think I will have to re-program that scrolling routine. I am sure I did the code correctly, but perhaps there is something else interfering with it. I'll see what I can do tomorrow.



Tuesday 24th May 2022
Coding Session #2

Yesterday, I came across the problem with the moving grid inside the game screen, where a row of the charset was chopped away. Today I decided to forget about this feature and delete the routine, in Turbo Assembler and just keep the lasers (for now). Today's session has been cut short, because I only had some small things to do today.

After deleting the moving grid code (it will be implemented later on in the project, so I haven't axed it completely). My main goal for today is to get the sprites positioned on screen and moving. I place a nice shiny blue bat at the left of the screen, and I also put a pink (light red) bat on the right of the screen. A ball is then placed in the middle. I assemble the source and run the code. It looks much nicer, but wouldn't be much better if the sprites could actually move?

The next part is to have the ball moving. However the ball needs to move according to the direction of the X / Y axis. A couple of pointers have been made to make in order to process the X / Y direction the ball should move. Also boundaries have been set to ensure that the ball does not leave the screen. I tried to make it possible for the ball to hit the laser chars without using any sprite to charset collision routines. The trick seems to work nicely. 

Now that the ball is bouncing happily around the screen. I must get the correct player to score  points, as the ball hits the goal behind the opponent. Well, how do I work this out? First I freeze the game screen using the Action Replay freezer. Then I go into the text editor, and note down the screen character area where the scoring characters are. I note these into my notebook, and then get back into the game and into the Turbo Assembler. Some variables are added at the start of the code, then some scoring routines are added. The scoring routines are slightly more complex compared to how I am usually used to doing those. This is because I used custom characters that form the numbers. A set table was made yesterday. So I will need to read the table and store those characters to the screen. It is a bit like putting a jigsaw together. After a few minutes adding some more code to the source. It is time to test the result. Superb, it is working nicely.

My next step is now to both players working via joystick control. Player 1 (the blue bat) should be controlled with a joystick in port 2, and Player 2 (the pink bat) should be controlled with a joystick in port 1. Normally to code routines for a two player game it is easier to write macros and link those to each player. Sadly Turbo Assembler V5.F does not support macro commands, unlike cross-assemblers. So I just have to re-type the same routines again for player 2. 



Now both players are now moving quite nicely. There is only one more thing for me to do today. This time it is maximum scoring detection. When I make the title screen (Which is highly likely to fit complete with the game code source), I will want to add some in game options where a maximum number of points is set in order to win the game. So I create two maximum score pointers where one represents tens and and the other as units. Then I do a comparison of the player score and whether it has reached the maximum score set for that game. I added a border flash to test player 1 winning and a background flash to test player 2 winning. Brilliant, Result, it all works !!! 

It is now time for me to call it a day for today. However the bats cannot hit the ball. There is no sprite/sprite collision detection or animation. That will have to wait until my next session.

Wednesday 25th May 2022
Coding session #3

I don't have any more screen shots to show you at the moment, but there is some good progress. Yesterday I left the project where the players are able to score points when the ball hits the laser. Now what about allowing the bat to hit the ball? Today this is my task for the day, along with a couple of tasks. 

First the speed of both ball and bats are a bit too fast. The speed value has been reduced and now the player bats and the ball moves just about right. There needs to be a collision detection between the ball and the two bats. I made a one size fits all sprites collision detection, which appears to work quite nicely in the game. Also the ball can rebound from the bat as well as the two lasers. 

I am very happy with the sprite to sprite collision detection. It seems to be working quite nicely on my theC64. Now it is time to try add a bit of AI code into player 2 (should the player select to play against the computer by choosing 1 player mode). I want to make the computer as smart as possible to be able to hit the ball and make it harder for the player to score a goal, unless it is possible. In AI mode, the value of player 2's vertical position is set to match the ball's vertical position. However the ball is faster. I test run the code and the bat in AI mode is hitting the ball quite nicely. There might need to be some more work to be done in this feature. Perhaps when I next get back onto it this weekend.

You may remember a couple of days ago, I mentioned about the scrolling tiles having an issue. That issue of course was where there was some tearing around the charsets. It turns out that I was close to being correct with the moving tile effect, but I grabbed the chars too and stored the chars too late. Today this issue has been solved.

Well that is enough for today. My next session with this project is most likely to be on Saturday (the project continues on Sunday instead), where I move both players closer to the laser beams, and also try and improve the graphics, sprites and perhaps implement some power ups/features to enhance game play. Tomorrow night and Friday night have been reserved for Captain Ishtar and Cruiser-X 79 level 9.

Sunday 29th May 2022
Coding session #4:

This continues from the last coding session of this game. The player is active, and also AI control has been added as well, but the AI just keeps on following the ball and appears to be rough. I might have to solve this issue later on in the project, since I haven't done AI programming before. It is slightly harder than I thought. It has also made the game a lot harder. 

Today I load in the source code and then work on the explosion. The explosion should take effect whenever the the ball leaves the opponent's goal. Then a point should be scored. The first thing to do is to locate the code that jumps to the scoring, then add a jump subroutine that calls a loop to read an exploding sprites table, and make the player explode - then restore the player's sprite after the exploding routine has finished. Perfect, the explosion work but I still don't like the explosion sprites very much. 

Next I notice how the bat and ball collision detection is quite clumsy at times. The ball is bouncing around the bat too often. The collision register is just too big and the co-ordinates need to be reduced in order to fit the bat. After a test the ball bounces back. There is still another problem, which I shall deal with. The ball's X direction rebounds correctly, but the ball's Y direction appears to stick to the same direction after the bat hits it. The Y direction of the ball only rebounds after it has hit the minimum or maximum vertical position set on screen. 

To solve the issue with the ball rebound, I can add a new pointer, which detects whether  or not player 1 or player 2 can bounce  the ball upwards or downwards after hitting the ball. Basically, if the player shifts up, the ball will bounce up, if the player shifts down, the ball will bounce that direction. If the ball stays idle, then the last Y position read from the joystick is automatically stored to the ball and it will rebound that direction.

Problem solved, now to make things harder and quite funnier, the bats can hit the ball, and the ball bounces against the walls. This makes it pretty much too easy and boring to play. However I have come up with a cunning plan. Wouldn't it be more fun, and crazy to have the ball increasing the speed after a specific number of rebounds? I have now placed in a rebound counter and set it to 10 rebounds. After 10 rebounds have expired, the ball will bounce faster, and make the game slightly more frantic than before. This affects both the X and the Y speed of the ball. After testing, this is looking much better. I shall now save the game code to my work disk image on USB (plugged into theC64), and do a backup of it on my dev system, ready for my next task. More graphics.

I can take a little break from the code and now work a bit more on the graphics. There's going to be an improved explosion for the bat and some new sprites. I have some ideas what those could be. Still  no screenshots to show you, but hopefully the next session should have one or two more.

One more thing to add. The game will not be called "POING 3", I have renamed it as POING Ultra instead. The deadline for the PONG compo is coming closer. About 3 weeks in fact, so I'd better get my skates on !!!

Tuesday 31st May 2022
More game graphics and a tiny bit of code.

I am mainly focussed doing some more game graphics today. I will be doing the game sprites, then afterwards I will be improving the in game character set graphics slightly, so that the game looks much better. Okay, I shall start with loading up theC64 and setting everything up. Action Replay cartridge... ready ... PD Utilities disk image ... ready ... Sprite editor ... ready ... previous sprites ... ready.

I think you have worked out what I am making right now. That's right, the game sprites. Using the cursor keys and the * key on theC64, I removed all of the frames that built the explosion effect. The reason for that was because I wasn't very happy with it. I then draw some new explosion sprite frames. They look much better. I'm happy with that. 

POING Ultra shouldn't just be all about player 1 and player 2 in court, bashing the ball and attempting to reach their opponent's goal. I want to add some kind of fun additional features to the game. The court needs an alien. That's right, a ball and power up spawning alien. The alien can consist of 4 frames for animation. It will cycle the existing colours inside it, and also animate lasers above and beside it. Afterwards I will draw the power ups. They are slow ball (ball with two chevrons pointing to the left), fast ball (ball with two chevrons pointing to the right), freeze bat (bat in ice), speed bat (bat with two chevrons pointing to the right), slow bat (bat with two chevrons pointing to the left), reverse bat (bat with a double-sided arrow underneath), lose 2 points (warning sign with -2 underneath) and instant death (skull and crossbones). 

The power up sprites are finished, I'm very happy with those, so now it is just draw 1 UP WINS and 2 UP WINS sprites and I'm done with the game sprites. Brilliant, I am very happy with the result and the sprites are all done. I'm running out of space on workdisk 001, so I have moved onto workdisk 002 to save the sprites. Below is a video (recorded from VICE) of all of the game sprites I have made for POING Ultra. There are not many sprites there, but I think that there is enough of those for this game anyway. Also I have to keep my memory well managed.


You may remember that a few days I worked on the game graphics. I was pleased with how they looked, but I felt that something really needs to be done with the scoring objects. I now load up the Multi Screen Construction Kit and insert disk 001, to load in the charset graphics, object and screen data and colour data. Then the charsets get edited. The letter characters have been reduced a little, and the scoring characters have been tweaked to look a bit like a digital clock. No colour has been changed because there was no need for me to do that. I adjust the characters that form the blue tiles, and they look a lot better. I attach work disk 002 and save the graphics to that disk image.

Next it is time to tweak the main program. I load up Turbo Assembler, then I zero fill memory $0800-$95ff. Then I load in the old game graphics data file from disk 001. Disk 002 then gets attached and I load the new sprites and charset data. Then the complete data file gets saved as gamedata2. Next I go into the Turbo Assembler, and load in the game code from Disk 001. I do a test run. The new explosion sprites were sort of working, but were missing some sprites. So I expanded the explosion sprite frame table, and then saved everything to Disk 002. One more test and great, the new sprites and graphics are working fine. Here's a second video in today's featuring the new game graphics.



Wednesday 1st June 2022
Coding #5 and a bit of a change

Last night I watched Phaze101's stream announcing the PONG 50th Anniversary and the Towel Day feature. Sadly I could not watch the whole of the stream due to it getting late. I also learned that there is one specific feature that is missing in my game. Basically two major flaws I did with the original POING and POING 2 was that the player could only whack the ball diagonally and only the X-Axis of the ball was altered. Although POING ULTRA has a diagonal change in direction when the bat is moving up or down. When moving idle, the ball should move horizontally. 

It is time for me to load up the Turbo Assembler and work on some code to fix the problem with the ball angle changes. It is easily solved. When I was programming a routine 3 or 4 days ago of the player moving. I added a labelled pointer known as player1dir (or was it bat1dir?), and player2dir (or was it bat2dir?). If the value of the player direction = 0, it means the ball's Y-Axis goes up, if however the player direction = 1 the Y-Axis of the ball goes down. What if the bat is still. Previously there were only two directions for the ball. Now if I add a values of 2 to the player1dir and player2dir, and add a check where no joystick control takes place. It should work. ... It does.

Now my next task is to add the power ups and the power up spawning alien (Sprite 3). First I add the code to place it in the middle centre of the screen. That's good it's there, and it is green. Next, I shall animate the sprite to use its four frames. That looks even better. Now let's colour cycle it with a blue/purple pulsating colour. Nice, it fits perfectly. There is just one more trick to do to animate the sprite. I need the alien to move up and down. After a label pointer for the spawn direction, and a bit of code, it works nicely. At the moment the ball spawns from out of nowhere. I want it to spawn out of the power up spawning alien. The value of the X, Y position of the ball sprite is now stored onto the X, Y position of the spawning alien. A quick test, and YES! It is working great. The ball spawns out of the alien every time the game starts, or the ball moves out of the screen.

The spawning alien spawns the balls no problem, but I now have to work on the random power ups generation. Each power up should generate after a set time period, and also the direction selected should also be chosen at random. I create a label pointer for the spawn direction. Then I call a routine to test the directional movement of the power up sprite (Sprite 4). First the routine is tested with the pointer set to 0 (left). Great, the sprite is moving to the left. Next a routine is tested with the pointer set to 1 (right). Yes, that also works nicely. Now it is time to create a pointer of the power up, and then call a subroutine which selects one of eight different power ups at random, then store it to the power up pointer. The code listing gets saved, and I test the game code. The bats are hitting the balls, the balls are working how they should, and the alien is spitting out power ups. Brilliant I'm happy with that.

Before I call it a day, there is at least one more thing I want to do today. That is to add a sprite to sprite collision detection routine for the players and the power up. Unfortunately that did not go according to plan, as the version of Turbo Assembler I chose for this project didn't allow me to type in any more code. It spat out a label overflow error message. I might have to find another assembler. I don't want to fail my challenge like I did with the past 3. All was going really well with this game project until I encountered this problem.

I loaded one of my old PD disks, which had an older version of Turbo Assembler (V5.2 improved by The Beast/The Ancient Temple), and I loaded the sequential file containing my source code. Although it has less memory for long listings, the program I was writing did not exceed its limitations. I am now able to finish off the collision test subroutine. Great, the collision routine works, and the test is complete. Now I can save the file and then tomorrow, I shall add the actual power up routines and put them in to action. 



I shall now call it for the day and continue with the project some time tomorrow. Then hopefully on Saturday, I could be ready to make sound effects and music for the game. I'm still well on track for the submission deadline for RPI's PONG 50th Anniversary game jam.

Thursday 2nd June 2022
Coding #6

You may have read that yesterday's session of POING Ultra had power ups added to the game code, but no effects were taking place, due to time. Today I have decided to put the power ups into action. First of all some labels are created to make the value of the sprite frames that form the power ups. Then at the bottom of the code, the numbered bytes are renamed into the sprite frame labels. We could actually call those variables.

Next I edit the game code player to power up collision routine so that instead of changing the colour of the player, the  power up gives some kind of effect. The routines check the frame value of the hardware sprite type 4. If the value of the sprite = the sprite frame read from the table (selected at random) the effect should take place on the player who collects it. Of course I have to alter some of the player's code so that some of the power ups take affect. For example the bat in ice should freeze the player permanently and ignores control (or computer AI mode) until a ball reaches the goal. Also the $DC00 and $DC01 values have to be swapped if the player collects the bat icon with an arrow pointing both directions. Also the bat should use fastest or slowest speed during game play until the ball passes it. There is also a power up which sets the speed of the ball, subtract 2 points from the player who collects the power up and also a power up, which just jumps to the player's death subroutine. I assemble the game and test the power ups in action. Great!!! they are working. 

There is just one more thing I will need to do now. A week ago, players were able to score points and after a maximum score has reached. Player 1 winning called a loop that flashed the border, and player 2  winning called a loop that flashed. A couple of days ago I drew a single sprite to represent which player has won the match. All I need to do is add those correct sprites in place, and a copy of the synchronized timer loop, with expanded sprites msb and background animation. Job done. I assemble test the game once more. I give it a play. Well, I have to admit it is looking good. The only downside is that it is lacking music and sound effects and a title screen with in game options. Not to worry, this will be next on my list. This weekend in fact. Anyway, enjoy this little video of the work done so far. 


Oh, okay, I spotted a bug in the ball speed reduction. I'll fix that this weekend before I code the sound effects and then work on the game music.

Saturday 4th June 2022
Coding #7 

I will be programming in game sound effects today. First, I will create some pointers for PAL/NTSC video detection. Next, I will make some tables to make my very own in game sound effects. I will need to create a sound option point. Then create some tables to represent the sound effects. Unfortunately now, I can't add anymore code or bytes, because the Turbo Assembler has thrown a wobbly at me on theC64. I received another "LABEL OVERLOAD". Just as I thought the main game was close to completion, a problem like this happens. I write the code to the work disk as a sequential file and I will continue with the code later on. I honestly want to finish this project on theC64 full size. Unfortunately the version of Turbo Assembler blocked me from producing any more code. My last hope will be the Turbo Action ROM by Dekadence. 

Sunday 5th June 2022
Bitmap graphics and music #1

After yesterday's major disappointment and Turbo Assembler blocking me from adding any more labels/pointers (which I dearly need to include in the project). I have decided to relax and work on making some music and also some graphics. First I load up DMC V4.0 and compose the title music. Hmm, yes, the music is very upbeat - and feels like one of those Happy Hardcore soundtracks. I like the composition. I will include it in the title screen. The music will need to be relocated. Next I compose the in game music. The music is slightly less happy hardcore, but more like early 90s techno or something like that. That tune doesn't need to be relocated. 

Next I load Face Painter into my theC64 and draw some graphics. I am drawing a colourful logo for the title screen. This actually took more time than I expected because of not being very happy with the design of my previous logos and  scrapping the ideas. Now this logo (Pictured below) looks ever so nice. I may be no graphics artist, but I am really happy with this logo. 


Next I start a loading bitmap for the game. It should be based on the actual game. The picture should have two lasers, two bats, a ball, and possibly a few other things. The picture is not yet finished, but I have been enjoying working on Face Painter. It is likely that in the future I could be drawing more logos on the C64 - mainly for stuff like intros, game projects, and of course Scene World. This is actually quite an achievement. Tomorrow, I shall search for a better Turbo Assembler, and pop it onto theC64. I'm thinking about SounDemon's TASM/CODENET,which I enhanced a whole SEUCK game (Rocket and Roll) with. If the cartridge image works on theC64.

Monday 6th June 2022
More coding #8 and headaches

During the weekend I came across some very awkward programming pitfalls. Turbo Assembler blocking me from adding any more code, etc. I was unable to finish the sound effects off for the game code. That was until I had some helpful advice from Robin, regarding the Turbo Assembler. It is best to save the code to a sequential file and the load it up into the assembler once more. I tried a few versions of Turbo Assembler. The trick did work, but I thought I try TASM/CODENET first. Unfortunately, I made a bad choice. This is because the assembler was operating very slow on theC64 (it also lags in VICE, so not recommended unless using on the Ultimate64 or a stock C64 with 1541Ultimate 2). I even tried it on my Ultimate 64. Nah, Turbo Action Replay by Dekadence keyboard input lags too much. 

I decided to change the cartridge image, and tried Cyberpunx's Retro Replay V3.8Q. It also has a built in Turbo Assembler. I load up the sequential file that was saved. It loads up, and I continue with the sound effects tables. After setting up sound effects table and implementing it into the SFX player (and setting values to the SFX). I get really good results. The sounds are all working perfectly. 

The game is working out really well, there are sound effects in place. I just need to add one more trick to the game code. The alien that spawns the balls and power ups. It would be interesting to add a rebound X whenever the ball hits the spawning alien. So if the player hits the ball, and it hits the alien, the ball's vertical position should reflect towards the player's goal. Of course, that was a quick and easy fix. I test the game once more and watch everything in action. Absolutely brilliant. All is working nicely.

Before I start working on the title screen (game options), I load up the new in game music and try it out in the game. Also I move the screen and colour data $0800-$0fff to $4800-$4cff as $0800-$0fff is now replaced by the 2x2 character set which I have made for the scroll text. I save all of the new game data, and then I start coding the title screen. 

First I switch off all of the IRQ raster interrupts and switch the screen off in order to initialise the routines. I prepare the logo data and copy from estimated Koalapaint colour RAM and video RAM memory and paste it to BANK 2 screen RAM ($4400-$45b8) and the colour RAM data goes directily to the $D800-$D5B8 memory. Drawing of each colour and video RAM data uses 40 columns and 9 rows. Then I set up three IRQ raster interrupts, where the top raster represents a a bitmap logo, the second IRQ represents the 1x1 character set text and the last IRQ represents the smooth 2x2 scroll text, synchronized timer value of 1, and PAL/NTSC music player. Of course I code the PAL/NTSC music speed player and run it. Hmm, yes, it looks okay, but a bit messy. The logo isn't loaded in place yet, but I can leave it as that.

Next I go to the Retro Replay fast load BASIC and then I edit the text to add names of all of the in game objects. Including the bat, ball, spawning alien and power ups. Then I capture the text lines using the Machine Code monitor's Transfer subroutine. Afterwards, I edit the game options menu text for the front end. I grab the text and put that into place. Finally I write a scroll text inside the machine code monitor, where free space is available. Then I save everything as GAMEDATA5.

Back to the Turbo Assembler, I first code the sprite displayer and text underneath to represent the sprite. The text displayer is controlled by a simple delay subroutine, which will count 256 cycles before it switches to the next text in line. I test run the title screen. Nice, it is working. Next I work on the 2x2 scroll text. I test the title code. Good, the scroll is working, but I must store the pointer value to $D016 to have it move more smoothly. I did that. Great. It is all working. I still have more to do on this, but I'll do that tomorrow. I save the text to disk ready for the next session.

Tuesday 7th June 2022
Coding #8 and extra headaches

I continue programming the title screen. All has been going really well, until "LABEL OVERFLOW" constantly popped by on the screen. I made several attempts at saving the source code using the -W function and re-loading everything, but the problem still occurred. I was so close, close to the coding side end of the game project. I will have to cheat the very last part of the coding phase. The source code sequential file is exported to PC assembler format, for use in 64TASS. I also create a separate folder to put all the program files in  place. - After finishing the code for the title screen. Hopefully, I can re-convert to Turbo Assembler, and then edit the last bit of code. Sadly it cannot be today. 

Wednesday 8th June 2022
Coding #9 and I'm nearly there. 

I have been finishing off the title screen code today in 64TASS also I have made some new scrolling voids and colour table. I tried to convert the complete source code to Turbo Assembler. Unfortunately I have produced too much code and the Turbo Assembler has crashed. The reason for this problem is because I also included the title code as the same file as the game code and hoped that I would get away with it. WRONG MOVE!!! 

Now, the code is going to be split into two separate source files. One for the title screen and one game options, and the other for the game. I think that is more or less a sensible choice. Of course I will have to check where the pointers are for the game menu settings.

I also had a go at converting the 64TASS code back to Turbo Assembler for the final production. Unfortunately things did not go according to plan. I used Holy Moses' 64TASS to Turbo Assembler converter which converted 64TASS code into Turbo Assembler. I load up the title screen assembly source and edited it to work in Turbo Assembler source. However when it came to editing the game source code to work in Turbo Assembler - a lot of labels and stuff had gone missing. It looks as if 64TASS to Turbo Assembler is limited with its file size.

Thursday 9th June 2022
Tweaking and fixing

I have been tweaking the graphics for the main title screen. The character sets to be honest. They looked too much like the character set you would have seen in the SEUCK menu. Instead, I decided to make a minor adjustment to my character set and make it look more chunky and fun. I have used Cunieform to edit the chars. Next I load up Sprite Pad. The game sprites look pretty messy and ugly. Especially the power up spawning alien, and the power ups. I make some tidier sprites, then assemble and run the game. Great, it looks so much better. Check out the new front end :)




Now there is still one thing that bugs me in the main game. There is a case where the player spawns straight away and picks up a power up, it goes into effect. That is not really a fair way on the player to collect something like a frozen player power up or instant death. So I have decided to add one more feature to the game. A short term shield every time the player spawns into the game field. The power ups can sail past the player while it is in shield mode. I fixed these in place and finally the game is finished. Well, not quite - I have the final loader picture to finish off, and also a loading tune. That will take place tomorrow.

I know this is a lengthy blog entry, but you will be pleased to hear that you have nearly reached the end of it.

Friday 10th June + Saturday 11th June 2022
A bit of drawing, more music, tweaking and final mastering

Finally this is my very last entry to this very lengthy blog. I start this weekend's session by typing a longer scroll text, as I found memory to fit a larger one on Thursday. After doing that, I transfer the new scroll to the source code and compile the code in 64TASS. It fits nicely. 

The next thing for me to do is to finish off the loading picture. I load up Face Painter and draw more stuff onto the screen. Those included score and the ball and power up spawning alien. The picture looks quite funny, but I am really happy with how I progressed drawing the picture. I am no artist, but it was good fun. 

After finishing off the loading bitmap, I needed to have something for it. A loading tune. I load up the DMC V4.0 and compose a tune. Unfortunately my loader tune didn't really suit the theme for the game, and I saved the tune for a future production. So I worked on something more happy, like with the rest of the game. It was 90s techno/trance/happy hardcore, you name it :) 

The tune is finished, I now have to port all the data to my 64TASS and generate a picture linker, before I do the last bit of the project, the disk and digital tape mastering. After building the raw versions of the game project and the picture linker. I built everything with 64TASS and crunched all of the necessary files with the Exomizer, with no decrunch effect option.

Next I prepare the files for the tape mastering stage. I load up my fun Tape Master Pro V4.0, edit the loading scroll text, and then made a tape mastering D64 (just in case people want to make their own free physical copies of the game onto a tape or something like that). I then prepare the tape master. My master tape for recording on threw red border load errors. Mind you, it is a very old C90 tape, which I used many times. As an alternative I used the "capture save to tape" option instead. The loader worked.



Finally the game production is finished and ready to be submitted to Retro Programmer's Inside. The game will be publicly available after the deadline of the PONG 50th Anniversary challenge, on 20th June 2022.The web site is https://richard-tnd.itch.io/poingultra

2023 at a glance

2024 is here, and 2023 has been a really quiet year on the production front due to everything that had gone back to normality. The year has ...