A downloadable asset pack

Download NowName your own price


Made using GameMaker Studio, this is the prototype source code for a ZX Spectrum style flip-screen adventure. Example graphics are included, feel free to use or change them however you'd like.

This template contains the base code and art I used to create my game Higgy: A Speccy-ish Adventure

You will need:

  • GameMaker: Studio v1.4 or v2
  • A working knowledge of GameMaker Language (GML). This is NOT a drag and drop project.

The project file includes the following features:

  • Accurate ZX Spectrum resolution
  • Accurate ZX Spectrum colour palette
  • Flip screen (no scrolling)
  • Working location name
  • Working health bar
  • Working coin meter
  • Other characters to talk to/give items to
  • Puzzles (such as the unlockable chest)
  • Things that hurt the player character
  • Lives
  • Game over state
  • Sound
  • NO attribute clash (you'd have to figure it out via a shader I think)

You'll have to make a title screen and an end game sequence for yourself.

It's been a long while since I updated this project, but now I'm used to how GameMaker Studio 2 works I thought it was time I made use of it's features, so it's bye bye to all the auto-generated scripts that get created when importing the GMS1.4 code into GMS2. All code has been re-written to take advantage of the latest version of GMS. Here's a full list:

Changes from the GMS1.4 version to GMS2:

  • Properly set up layers for the rooms, since GMS2 uses them rather setting depth for each object.
  • Speaking of layers, the function "instance_create()" was replaced in GMS2 by instance_create_layer() and instance_create_depth(). I've gone through and made sure the function instance_create_layer() has been used throughout the code. This change makes handling objects a little easier, thanks YoYo Games!
  • Globalvars were removed from GMS2, so any variables defined using globalvar are now just global variables (global.variablename)
  • For some reason that I've forgotten, I used Draw End events to draw the messages on the screen. I've changed all objects to use Draw GUI events which is SO much easier as now the game doesn't need to work out where on the map you are before it draws the message. What was I thinking?
  • To that end, I totally re-wrote the draw_message(), draw_char_message() and draw_char_solved() scripts. 
    • The text boxes no longer need to be told how wide and high they should
      be - the script does that for you from the string it's given.
    • The draw_char_solved() script is gone, draw_char_message() now does the job for both.
    • You want a conversation with a character that's longer than two text boxes? Yep, the re-written code now supports this.
    • Naturally the puzzle text boxes, along with the "You got a coin" and
      "You lost a life"/"Game Over" messages benefit from these changes. Go wild with your writing
    Plus a few minor changes to make the code more readable. Nothing spectacular but I hope it helps!

See full change notes in the provided readme.txt file

All code is by me. I've created sound effects have been created using bfxr. The font used is from Kenney. Go check out Kenney's asset packs - they're fantastic!

You are free to use the source code for this project for whatever you wish, all I ask is if you create anything - show me. I'd love to see it.

Also, if you need to ask me any questions about my crazy code, you can find me on Twitter - @MrTom

Rated 4.8 out of 5 stars
(4 total ratings)
AuthorBee Bush
Made withGameMaker: Studio
Tags8-Bit, GameMaker, gamemaker-studio, gms2, Retro, sourcecode, Project template, ZX Spectrum


Download NowName your own price

Click download now to get access to the following files:

SpeccyAdventure.yyz (FOR GMS2) 813 kB
SpeccyAdventure.gmz (FOR GMS1.4) 478 kB
readme.txt 3 kB

Development log


Log in with itch.io to leave a comment.

(2 edits) (+1)

I've managed to get color clash working without having to futz with shaders, but it only works with 8x8 sprites right now. Instead of having the color on the sprites, I made the sprites transparent and put the color on a layer behind them. Then I had the player (and in theory, it would work with any object that can move) manipulate colored tiles on another layer (above the sprite color layer but below the sprites) using modulo so that they snap. (gif down below)

(1 edit)

That was a really good idea and it really looks the part in implementation! Really you want to be keeping your sprites to 8x8 (or a multiplication of that) anyway for authenticity's sake, so this seems like a great solution to it without diving into shaders.

Nicely done!

thank you! Btw, I didn't mean it only works on 8x8 sprites or multiples of 8x8. At the moment, it only works with configurations of one single 8x8 sprite. Larger configurations of 8x8 sprites (like the player in your project) have larger minimum and maximum numbers of tiles they could intersect with, requiring more calculations and more tiles to be spawned on the color layer. I haven't figured out a way to automate that, so I have to calculate and manually edit each object that would have to cause clash.