As you may know from personal experience SEUCK (The Shoot-em-up Construction Kit) is an awesome tool for game construction. In fact, some people use it’s graphic and sfx editors for other game projects. But unfortunately it can be quite limiting and many games for the platform can suffer from being quite similar.
Enter SEUCK Redux, written by Martin Piper in 2008; an entirely new SEUCK engine, written from scratch, with full source code, and allowing you to use a remastered version of the SEUCK engine with new scroll code and sprite multiplexor, or alternatively the new Sideways SEUCK engine. Several games have already been released with enhanced features of SEUCK Redux, including Super Tau Zeta 2 Redux, The Adventures of Alain, Another Day, Another Zombie, Final and the technically brilliant Nuclear Strike Force all with new title screens and enhancements such as power-ups.
The engine can also be used to create other forms of c64 games; as it has a multi-directionally scrolling engine, a powerful new sprite multiplexer, as well as the SEUCK routines for attack waves and sound effects.
I chatted with Martin recently about the SEUCK Redux project, and about his C64 coding career, read the interview below.
When did you first use a c64? What is your first memory?
I think my first C64 was around 1987 (so 14 years old) when I upgraded from a VIC20. I think the first game I bought with the computer was Wizball. I remember the John Lewis store in Bath (UK) selling a bundle at the time.
So what games inspired you to get into design and development?
Coin-op arcade games were a great inspiration, like After Burner, because their hardware was way beyond anything a mere home computer had. They gave me something to try to emulate on the trusty old C64 and other previous machines. These ambitious targets kept on making me strive to improve my coding.
Which coders inspired you to become a coder?
I suppose the coders that inspired me back in the early 1980’s were those who wrote type-in listings printed in magazines and the numerous series of short books with listings of simple BASIC games.
But when I got the C64 the world of great games using machine code was just beginning to open up before me. Andrew Braybrook’s diary of a game for Morpheus really started me off with wanting to learn much more about machine code. Then Martin Walker’s Citadel diary really helped with honing my knowledge about design and attention to detail.
When did you start programming and on what platform?
I actually started coding back in 1981 (8 years old) when my dad bought a ZX81 and quickly gave up trying to use it. So it quickly ended up in my bedroom where I could use my childhood perseverance and focus to learn BASIC. I learnt a little bit about machine code back then, but not enough to be that useful. Then came the VIC20, which I think had a busted VIC chip (or memory timing) as the graphics were very glitchy. Then the C64.
What was your first piece of code on the c64?
Some BASIC demos, where I used compiled BASIC to try to get some speed. Also some BASIC text adventures.
My first real program which is when I had that real eureka moment was when I got a 6502 assembly reference guide and using pen and paper wrote my first bit assembly. I used the opcode lookup table in the book to convert to hex, which I then entered as BASIC pokes and started it with a SYS statement. The code was something like:
I wanted to see how much faster this machine code was compared to doing something similar in BASIC. I nearly fell off my chair with surprise when I saw how tiny the narrow strips of colour were compared to BASIC. I then twigged that using this style of code I could use the raster register much more quickly than ever before. My next bit of assembly code was like this:
All the opcodes and branch offsets were calculated by hand and laboriously poked into memory. But in the end I had a split screen scroll with the other part of the screen static.
Ideas kind of very quickly exploded from there as I wrote my own assembler in BASIC at that point and really started on writing larger assembly projects. The game Tusari happened shortly afterwards and was my first real finished 100% assembly game.
Have you ever coded an intro or a demo?
Yes several, that are not very good. 🙂 Somewhere in the archive of all my old work disks ( http://www.gamesthatwerent.com/2015/02/martin-piper-assets/ ) there are various unfinished demo ideas for wireframe 3D plotters, or scrollers etc. There is even somewhere in there a graphical demo creator application that allows graphics, music and colours bars to be setup with customised text and screen positioning.
Who are your favourite demo scene coders?
Back in the day I have to say Triangle inspired me mostly because they did bigger demos with great design.
These days Booze Design and Censor Design have to be right up there at the top of my list. These are groups, not just coders, because code needs the whole package or music/graphics/design to be really great.
OK, OK, if you really twist my arm to choose a specific coder then it would be The Human Code Machine, he seems like a nice chap and I respect his work.
SEUCK Redux is a revelation, did you plan to integrate SEUCK into your engine from the beginning?
It wasn’t planned as such. I was working on resurrecting my old work disk projects and enjoying tidying them up and exploring the old code. But it struck me how decades of knowledge in the console games dev industry that followed the C64 times kept on making me see massive improvements in my old teenage code. It was at this point I saw the enthusiasm that some people, Richard Bayliss mostly, had for SEUCK games. Back in the day I liked SEUCK but I saw that it had rather glitchy code. So I started poking around looking for the graphics file format, reverse engineering it by tweaking things in the editor and finding the changed bytes in memory. I thought to myself that maybe it would be useful to try writing some code to play these SEUCK files but using entirely new code with modern algorithms and ideas instead. Which lead to this post on CSDB: http://csdb.dk/forums/?roomid=11&topicid=60233&showallposts=1
At this point I had just found the graphics, blocks and map data for the levels in memory and got the scroller working.
The c64 scene wasn’t initially receptive to your project, did you find that discouraging?
After writing that first post and before replying to the thread again I think I had already managed to figure out most of the animation code and enemy attack wave triggering and had it tied into the multiplexer and scroller code. So the few naysayers really didn’t dissuade me, actually on the contrary their lack of vision encouraged me because it highlighted how the C64 scene really needed a good quality entirely open source game engine available for others to learn from.
I think now the large number of redux games with really good extra bespoke code that expand the game way beyond what SEUCK could do is a great vindication of the idea of sharing and reusing code when possible. It shows a generic open source game engine for the C64 is really feasible.
What is your favourite SEUCK Redux game?
Richard Bayliss and Alf Yngve are prodigious when it comes to producing games. It’s great that Richard really took onboard the idea of reusing the redux code.
I think for me the favourite has to be “Legion of the Damned” because it contains the special spell effects that make it obvious that it’s obviously a lot more than just a horizontal scrolling SEUCK game.
Closely followed by “Nuclear Strike Force” because it really pushes the multiplexor quite hard, something the original SEUCK could not do.
Your engine can also be used to make multi directional scrolling games, how hard would it be to create such a game with your engine?
The game engine is quite generic. So enabling the 8-way scrolling code (using Scroller_MultiDirection = 1 inScrollEntry.a) shows how to scroll the screen with 4×4 map blocks, full colour scroll and multiplexed sprites moving with the background.
This code can be expanded to include animations from SEUCK or other sources.
Have you considered creating a level editor for the Redux multi-directional scrolling engine?
I tend to use CharPad and SpritePad these days and just import the data. I used to make map editors out of a mixture of assembly and BASIC that were bespoke for each game idea.
Tell me about the other game projects you have planned for the future?
Look through my old work disks and you’ll probably see repeating themes and attempts at certain types of game. For example racing games ( http://www.gamesthatwerent.com/gtw64/racing-game/ ) and paradroid/citadel style games ( http://www.gamesthatwerent.com/gtw64/citadel-2/ ).
I’ve spent most of my time recently honing various things to do with animation (http://csdb.dk/release/?id=117482&show=notes#notes), data compression, music/sfx players, tape/disk loaders, Behaviour Driven Development (Cucumber driven testing for 6502 https://github.com/martinpiper/BDD6502 ), source level remote debugging (https://github.com/martinpiper/ACME/tree/master/VICEPDBMonitor) and some AI algorithms for the C64. These side projects are basically working towards something to do with the repeated themes in my old work disks. I feel this itch has not yet been scratched. But I’ve learned now never to promise anything specific until it is practically done, so I’m staying quiet.
Whatever happens, I know the code will eventually be made open source for everyone to enjoy. Just like the Berzerk redux port was open sourced.
Thanks for taking the time to talk to us, and thanks for your coding efforts with SEUCK Redux, we look forward to your future releases!
You’re welcome, and thank you for the interview invitation. I’ve enjoyed the trip down memory lane.