Shoot ‘Em Up Game Builder for Commodore 64

Retro Game Coders

Creating games isn’t just for programmers, so I want to explore how the classic game creation tool for the Commodore 64, the Shoot ‘Em Up Construction Kit (SEUCK), functioned.

In 1987, a groundbreaking tool for the Commodore 64 was introduced: the Shoot ‘Em Up Construction Kit, commonly known as SEUCK.

Developed by Sensible Software and published by Outlaw (a division of Palace Software), SEUCK was revolutionary. It enabled children to create their own shoot ’em up video games without any coding knowledge.

  • Create and animate your own sprites and objects.
  • Design enemy bullets and explosions.
  • Craft background characters and group them into larger blocks (up to 128 different blocks).
  • Arrange blocks for long, scrolling levels, including side-scrolling options.
  • Incorporate sound effects.
  • Save your completed game to tape or disk for sharing.

SEUCK even included four demo games to showcase its potential.

This tool was remarkable for its time, allowing users to create entire games with graphics, sounds, and levels within the Commodore 64’s limited memory. Plus, the capability to save a finished game with a fast loader was a significant feat that helped many young developers grasp how tape loaders functioned.

However, not all SEUCK games were great:

  • Many games appeared visually and audibly similar.
  • Performance could lag when numerous elements were on-screen simultaneously.
  • Sprites often jumped slightly during screen transitions, giving an unpolished look.

Additionally, SEUCK typically stored a significant portion of the game editor code within the finished game’s data, consuming valuable memory. This meant that those with some technical knowledge could open a player’s game, access the SEUCK editor, modify it, and release their own version.

This involved using special commands like POKE (to change specific memory values) and SYS (to run a program from a set memory address). In the past, individuals with “freezer cartridges” (like the Action Replay) could pause games, view their memory, and uncover these secrets.

The Treasure Trove: Where SEUCK Keeps Its Goodies

Martin Piper reverse-engineered SEUCK to address these issues and enhance the gaming experience.

The motivation behind my endeavor relates closely to the technical functioning of the original SEUCK. When it was created, the developers lacked access to the modern advancements we have today for the C64. For instance, the original SEUCK’s multiplexor is less efficient compared to those today, with slow sorting and buggy collision detection routines that struggle with multiple sprites. Consequently, the game code isn’t highly optimized, partly due to some memory being allocated for the editor. While problems can often be solved with memory optimizations, I still appreciate the original SEUCK, which is shared by several others in the contemporary C64 community.

Here’s where SEUCK’s background and map data can be found in the C64 memory:

  • Characters (8×8 pixel designs):
    • Starting at memory address: $F800.
  • Background & Multicolor Screen Colors:
    • Starting at memory address: $4085.
  • Blocks (5×5 character groups, up to 128):
    • Starting at memory address: $1A00.
  • Map Data (how blocks are arranged, 8 blocks wide):
    • Starts at memory address: $0900.
    • Stored “backwards,” meaning the bottom row is at the beginning and the top row is at the end, which suits upward scrolling games.
  • Block Colors (main color for each block):
    • Starting at memory address: $1900.

This new code was organized into files:

  • scroller_data.asm: Details all vital C64 memory addresses (e.g., $F800 for characters, $0900 for the map), allowing the program to read the original SEUCK data.
  • scroller_single.asm: The core of the new engine featuring:
    • Optimized Routines: Efficiently written code for drawing blocks and scrolling.
    • New Memory Layout: Rearranged data for increased speed and efficiency, preventing old SEUCK cheats from working.
    • Fast Drawing: Special efficient loops for drawing, some written out long-hand for performance.
    • Double Buffering: A technique to draw the next screen “off-screen” and swap it in quickly, enhancing smooth scrolling.

The Result? A beautifully smooth and efficient scrolling experience, utilizing the original SEUCK graphics data but powered by a new, optimized engine.



Original article by retrogamecoders.com

Main Menu