Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics


A member registered Jul 31, 2018 · View creator page →

Creator of

Recent community posts

February 2024 - Patch 7 - (0.7.1)

The first major patch of the year, fixes some balance issues and bugs as well as introducing some cool new features (See bottom of post for full patch notes):

This release will automatically update on all platforms. Please restart the game to begin the update.

Difficulty Progression 

  • Runs can now be started at increasing difficulty levels up to a current maximum of 10 levels (Up to Expert 5).
  • Each step up poses new challenges with stronger enemies, weaker ship and difficult modifiers. 
  • But the rewards are higher ore returns. 
  • Defeat bosses to unlock higher levels. Each boss has a minimum spawn difficulty.
  • We expect the modifiers for these levels to change over time as we analyse balance again
  • More difficulty levels beyond Expert 5 will be added in future


  • Blueprint pieces can now be found in rare instances on enemies.
  • Collect all the parts to unlock new ship pieces with various statistics for use in the Ship Workshop. 
  • Currently there are 8 new ship pieces to discover through the blueprint system with many more to be added as the game progresses.
  • Loadout stats such as Orbital or Deck loadout, as well as the systems for adjusting weapons and loadout are WIP and will follow shortly

Ship Workshop

  • The Ship Workshop allows players to edit their ships appearance by adjusting the position, size, rotation and color of parts. 
  • You can also change the exhaust color!
  • The Workshop also provides a way to use completed Blueprints to upgrade ship parts with better pieces with stronger stats and editable loadouts.

Full Patch Notes


  • Added a ship launch screen to allow changing of the difficulty level and viewing the current difficulty modifiers and ship configuration
  • Implemented 10 difficulty levels, progressively unlocked by killing bosses. 
  • Each world has a minimum diffuculty in order to spawn the boss
  • Implemented all difficulty modifiers up to Expert 5
  • Implemented auto self destruct when difficulty is below the world minimum and the boss level is reached
  • Added a news panel to the main title screen, this will allow us to update players with in game news without having to patch
  • Ship Workshop is now available to unlock and can be used to change the ship pieces around
  • Added the first 8 blueprint piece drops to enemies, these drops are rare and the only way to collect new parts. 
  • Auto blueprint salvage system added to convert duplicate parts to ore
  • Added Blueprint Compendium to the Ship Workshop


  • Ship Workshop has been moved from the officers quarters so that its available in World 1 for 125 emerite ore
  • Officers quarters has been slightly enlarged due to new ship workshop location
  • First pass at proper world 2 background shader using SDF Raymarching complete, performance testing across low end devices underway
  • Adjusted the warp intro effect to make it less intense and forgiving for lower fps systems
  • Adjusted in game background shader palettes for the nebula layers to enhance the overall color tone, saturation and variation
  • Added difficulty level modifiers information to in game pause menu
  • Asteroids and ore deposits now follow the exact same yield rules (albeit with different amounts), meaning they are affected by upgrades in the exact same ways
  •  Adjusted the fight with Kevin so he spends less time lost in the corners of the map!
  • Added scale and rotate to the ship editor
  •  Added color picker to ship editor
  • Added color change for exhaust in the ship editor
  • Added mouse and keyboard control to ship editor
  • Added layering to the ship editor to allow more variation and creativity
  • Blueprint pieces can now be crafted for a price via the ship workshop once all the parts have been found
  • Changed all UI button presses on gamepad to activate on releasing the button rather than just when the circle fills, this is to fix some issues with multiple menus and systems
  • Tutorial messaging is now queued so as not to let any messages slip through unseen


  • Asteradar range unlock will now cause the arrows to fade with distance, this should have the effect of reducing clutter with high ranged upgrades
  • Asteradar range has been reduced across all levels
  • Mining Laser range upgrades have been reduced in effect significantly
  • Ore in world2 and beyond is harder to mine with more damage needed per ore in both asteroids and rock deposits
  • Reduced the effect of the Mining Specialise card from +100% yield to +50%
  • Significantly reduced the  yield multipliers from having high mining skill to more reasonable levels
  • Reduced the effect of cannon cooldown upgrades by 50% across the board


  • Fixed aliasing artifacts in the title logo
  • Fixed an issue where entering the Officer Quarters terminal would cause ghost collisions in the quarters
  • Fixed a mothership UI issue when switching between mouse and gamepad where incorrect icons would display
  • Fixed an issue with Kevins spawns between waves causing lag spikes
  • Fixed the level 13 snake enemies so that excess damage done to any one piece is carried over to the remaining pieces, this should increase the usefulness of high damage weapons and explosives against it
  • Fixed another issue with online stats, these should be working no and any characters created during the outage should still upload their base stats

New update has been pushed with a few fixes including a fix for the Shield/Hull integrity issues:

Online saves should now be working again, although any runs that happened during its outage will not be recorded (at this time) online, they will however still be available locally and eventually we intend to have issues like this rectify themselves in the background once service is restored. Please let us know if there are any further issues with the online system, thanks :)

Hotfix Release: v0.6.37.x

This release will automatically update on all platforms. Please restart the game to begin the update.

This releases is just a small hotfix to address some critical issues that have arisen since the last patch. A larger content patch will follow in the next 1-2 weeks.


  • Enabled UI deck/ship/stats panel in shops
  • Reduced the overall strength and chromatic abberation of the screenspace-warp explosion effect to make it less distracting


  • Rebalanced the hull and shield integrity upgrade effects to prevent punishing new players with less health due to a bug fix (see below), and took the opportunity to reduce the overall effect of the cards for higher levels.


  • Fixed an issue where the players shield and hull integrity upgrades levels were always being treated as one higher than they actually were. This resulted in new players automatically having the effect of lvl1 upgrades and maxed out upgrades would bug and cause invincibility
  • Fixed an issue where you could not see your ore quantity while in shops
  • Fixed an issue where current player consumables and drones UI could also not be seen whilst in shops
  • Fixed some issues with the Lucky/Unlucky streak cards that were having the opposite effect and causing almost 100% perfect random rolls in some situations


Glad you are enjoying the game :)

Thank you for the report. We are looking into both issues which as you point out are separate. I hope we can release a hotfix very soon.

New Release: v0.6.30.x

This release will automatically update on all platforms. Please restart the game to begin the update.


  • Introducing loot caches - These heavily guarded areas can be found dotted throughout the map and contain 2-3 crates and 2-3 high level asteroids but are guarded by an invincible enemy spawning contraption and should be approached with care


  • Tweaked several tutorials to make things clearer
  • Adjusted the color and brightness of crates to make them slightly more easy to spot
  • Drone and consumable level tier is now displayed as a colored border in the top right display


  •  Mining Laser 1 is now awarded by default after the first run
  • Significantly increased (+600%) the amount of damage needed to open a crate
  • Bad cards should no longer appear as a choice at level up, why would anyone pick them?!
  • Drone damage will now scale correctly with card tier, mining drones will mine faster
  • Consumable damage will now scale with the card tier, also applies to the freeze mine duration, and nitrous duration and strength
  • Nitro Boosts now stay available for the whole duration and are no longer cancelled on releasing the button


  • Fixed several map regeneration issues caused by revisiting older areas that had been mined after moving a fair distance away from them
  • Restored the shockwave effect when killing enemies, for some reason this had been disabled weeks ago
  • Quitting a run by exiting the game will no longer allow the player to retain the clones consumables and drones on respawn
  • Fixed several issues with the asset preloading system to hopefully fix many of the initial frame drops on the first run

Hey! Glad you like it, there's a whole butt load more stuff coming as we work our way through the list of features and fill the game with content

New Release: v0.6.25.494

This release will automatically update on all platforms. Please restart the game to begin the update.


  • Added new clone quirks; Lucky, Unlucky, Diviner,  Warhawk, Pacifist, Tachophobe and Tachophile
  • New Quirk Card Searing Light
  • New Quirk Card Lucky Streak 
  • New Quirk Card Unlucky Streak
  • New Quirk Card Vampiric Familiar
  • New Quirk Card Mining Frenzy
  • New Quirk Card Reflective Shield


  • Reduced the effect of Agile, Clumsy, Resolute and  Hardened quirks slightly
  • Increased the radius of the Freeze Mine effect
  • Increased the splash radius of the Proximity Mines


  •  Fixed an issue where clone quirks were not showing in the pause menu panel during combat
  • Fixed an issue where Plasmarang damage upgrades were having little to no effect, they should now scale correctly with upgrades
(1 edit)

New Release: v0.6.18.x

This release will automatically update on all platforms. Please restart the game to begin the update.


  • Added epilepsy warning to game start up, thankyou to those who fed back to us about this. We will look to reduce the intensity of areas such as the warp in sequence to try to address this head on in a future update
  • NPC clones on the mothership will now occasionally take on the names of recently logged in players
  • NPC clones on the mothership will now prioritise warping before the players first run to help guide the player to the warp as part of the tutorial
  • Added link to view current user online in Mothership pause menu
  • Deck and Ship Upgrades info now sent to stats server and can be viewed on user profiles on the website


  • Added a new NPC Ore Trader merchant, trading ores at 50:1 ratio. He can be found in Corridor 3A


  • Fixed an issue where mouse and keyboard players would accidently click level up cards if they appeared while holding mouse to fire
  • Fixed the pixelated logo on splash screen and did some tidying of the transitions
  • Shops now correctly display all 6 ore tiers rather than just the first 3, also adjusted the font size of shop item prices to help with small screen visibility
(1 edit)

New Release: v0.6.14.x

This release will automatically update on all platforms. Please restart the game to begin the update.


  • Ore farmed per run statistics are now sent to the stats server
  • You can now select a new destination from the Bridge console using Button A or Left mouse to click the button


  • Increased the frequency of blue sappharite ore to make it more common, there was a definite issue with the speed and quantities at which players were finding it


  • Fixed an issue where the easier Kill Kevin Challenge was not registering as complete both on the stats server and the in game challenge lists
  • Tier 3 ore and beyond from World 2 onwards should now be correctly displayed in the end of run statistics
  • Fixed an issue with Kevin's pincer animation getting out of sync with his rotation when charging to and away from the player

Early Access to our little game  "Mining My Business" for PC and Steam Deck is now  released and for the next month its 33% off.

It's a work in progress twin stick shooter roguelite (vampire survivors style) for PC and Linux(tested on Steam deck). Mine ore and survive endless waves of enemies as your work to upgrade your ship with better weapons and capabilities. As you progress you'll unlock things like mining lasers, drones and new ways to get cards.

Early Access Info
The plan is to release a larger early access on Steam in the coming months (maybe 2-3 worlds), purchasers on itchio will receive Steam keys and both versions will continue to auto update. This release contains World 1 and over 200 cards to collect. We want to use this early access release to tweak our online stats system @ and use community feedback for improving and balancing the game as we work our way to our ultimate goal of 5 Worlds with hundreds more cards, ships and weapons to collect.

Please view our developer logs for more info

RIP buddy, will think of you every time I hear Xmas sid music now. You'll be missed by the whole community :(

The game is intentionally designed to be very very hard. Some players have been able to get to wave 80+ it just takes patience and some strategy :)

(1 edit)

This is an inline label. Allowing to reference the value of an instruction directly rather than having it before the instruction and using label+1

I guess it depends on how easy it is to complete. You could argue it affects the replayability if it's too short, and could slightly affect the level design scoring maybe. But nothing stopping you submitting at all.

There's an all versions drop down on that page where you can select that specific version asking others :)

Sorry you are correct, i will make that change. :)

Once you have node installed , navigate to the aseparse65 folder in a command prompt/terminal and type:

npm install

This will install the dependencies required to run the parser. Please not however the parser is very WIP I just shared to give a starting point for people, it may or may not suit your needs

Checkout the excellent scripts found here:

Or my less than excellent WIP script at:

At the very least theres will give you an insight of how to write exporting tools and convertors for Aseprite.

(4 edits)

Useful Links:

Mega65 Chipset Reference:



Setting up Xemu:

Asset export plugins/conversion:


(2 edits)

Going to keep this thread as sticky and update it as necessary, feel free to ask questions in the comments below and I'll do my best to add them to the list.


  • I'm using BASIC65. Which ROM will be used, can I specify a specific ROM for my entry?
    • In order to make life as easy as possible for the judges, and to ensure a fair level playing field for everyone,  we will be using the same ROM for all entries. This ROM will be the 920224.bin dated 7th Sept 2021. You can download this ROM from the filehost here,  follow the instructions on that link to patch the freely available 911001.bin file.
      It's worth noting that some of the memory layouts at $f700+ are different to some of the older ROM versions so even if you are not using BASIC65 you should still use this ROM to ensure there are no issues.
  • Which version of XEMU will be used?
    • As with the ROM version we will be using the same version of XEMU for all entries. However to allow the reporting of any emulator issues or missing features and any subsequent fixes, this will be the MASTER branch as it stands at 23:59 on November 19th. This will allow two weeks for entries to be adjusted should the version at that time cause any issues. Should the version on this date be deemed too unstable an alternative version will be selected and immediately communicated through this FAQ, Discord and Twitter. XEMU can be downloaded here.

Hi there,

Firstly thank you for taking part, it's always exciting to see people joining in the fun! Personally I use ASM although as organiser of the competition I obviously won't be taking part. You can check my Youtube channel (specifically the mega65 stream uploads) for some information on what I use and my Github for some potentially useful libraries.

As for tools I use:

  • Sublime Text 4
  • KickAssembler (Jespers KickC 45GS02 version) 
  • My own M65Debugger for deploying and inspecting - found in the Github repos below

I'm sure others who have worked more with Xemu or indeed other mid level languages can provide more information.




Mega65 stream playlist : 

The CLR ensures that all the variable space pointers are moved to match the end of basic pointer just set by POKE 56,16. Without it the program would seemingly run fine the first time and possibly be using memory >$1000. However a second run of such a program would correctly result in out of memory error

(1 edit)

Added another note about BASIC programs:

For BASIC programs to conform you must limit the memory available to BASIC by doing POKE 56,16 before running the program or before a CLR. You can include it as the first line like so:

1 POKE 56,16: CLR

Putting the games onto tape will be the responsibility of myself and the competition team. We of course will not be needing to follow the same rules, as they are just for the initial entries. Most likely we will load games into $1000+ and relocate them once loaded, for games that require special loading.
Also good note on the screen colors, I will add a note to the text to say as such. Thank you! :)

Fixed the first testing breakpoint, the original one was too early. The new one waits for file loading. (Thanks Docster for the heads up)

(7 edits)

Hey All!

I wanted to write this post to clarify the competitions technical rules as there seems to be a little confusion over them. Also to show how you can test your entries to see if they conform to the rules. And finally give some pointers to help you make the most of the space you have available.

Technical Rules

First up the technical rules. 

At first glance the rules may seem strict & confusing. But while they are somewhat strict they should hopefully become less confusing with some explanation. 

The most important thing to note is that you can enter this competition at various skill levels. Games in BASIC are perfectly valid as long as they conform to the memory limitations. Simple assembly programs with no memory trickery are of course allowed too. But if you want to take up the maximum challenge, see how close you can get to 4kb and how many tricks you can use to pull it off!

So here are some clarifications:

2. Final code must be in .PRG format that loads into memory below $1000 hex, giving 4,096 bytes of address space.

For all games we expect them to be in PRG format and be able to load and run from VICE. The PRG can load at any address below, and must not run past $1000. The idea here is to create limitations which force the creation of Cassette 50 style games, but to do something other than just saying "You have 4kb" in order to create some intrigue for the more technical coders. Some valid examples:

  •  Assembly program saved as PRG that loads at $0801 (As most using some form of Kick Assemblers BasicUpstart do) and contains $7ff bytes. This program therefore loads into $0801 - $0fff.
  • 20 line BASIC program saved as PRG. This will load in at $0801 and will be short enough to not run past $1000
  • Assembly program saved as PRG that loads at $0120 and uses $edf bytes. This program loads from $0120-$0fff

All of these examples are possible to have run in VICE, although the third example requires some trickery which I will explain in a later part of this post.

3. At no point can the code write to any location at or above $1000, however using IO normally at $D000-$DFFF is allowed, as is calling BASIC or KERNAL routines. BASIC programs are welcome too, just be sure to start your program with POKE 56,16 so it conforms to the memory limits.

This is the rule that seems to have caused the most confusion, but its actually quite simple. It simply means that you must keep all your memory writes below $1000, therefore:

  •  All your variables must be below $1000 and are probably best stored in zero page
  • Your screen ram cannot be moved beyond $1000 so is probably best left at $0400 
  • All your assets, should you choose to use custom font or sprites must also live below $1000
  • You cannot unpack or unroll anything into space at or above $1000
  • You cannot use $fffe/$ffff to set interrupts as this is writing above $1000. Use $0314/$0315 instead

The ONLY exception to this rule is accessing IO area, that is memory between $d000-$dfff when and ONLY when it is banked in as IO area ram (which it is by default). You CANNOT bank out IO area RAM and use the space underneath!! This means it is OK to:

  •  Write to any VIC registers such as border color $d020, sprite registers $d000, $d027  and so on
  • Write to any SID registers e.g. $d400+
  • Write to Color RAM at $d800+

This rule also does NOT prevent you from:

  • Reading memory at any addresses at or above $1000, if there's a set of values you can use that exist in the BASIC or Kernal, go for it! Just don't write there!!
  • Calling methods in BASIC or kernal. More on this later on!

If you are writing a BASIC program makes sure the very first line is POKE 56,16. This ensures that your program and variables can never go past the $1000 limit.


Testing your game against these rules should you wish to, is actually quite straightforward. I will be testing all games this way to ensure they conform. (Additionally I will be checking for any sneaky IO banking using $01!!!). I will be using VICE 3.4 for all testing and recommend that everyone should do the same.

Start VICE and open up the monitor (Alt-H in the latest v3.4) and type the following lines pressing ENTER after each:

w exec f5da      

This sets a breakpoint at the point when the machine is  ready to load (via virtual fs or copy to d64). Now drop your PRG onto the VICE window to load it and you should see the monitor reappear due to the breakpoint we set. Now we can apply the memory rules. Type the following lines into the monitor pressing ENTER after each:

w store 1000 cfff
w store e000 ffff

Your game should now load as normal, but if at any point you write to memory above $1000 it will bring up the monitor again and this will indicate the game breaks the rules.


#1 - BASIC programs are more than enough and definitely in the spirit of Cassette 50

If you take a look at some of the 10 liner C64 BASIC competitions, there are some great games there in only 10 lines!! The C64 can only fit 80 chars on a line, so these programs take less than 1Kb to store in memory. Variables do take a little bit of memory at runtime but as long as you use the POKE 56,16  to contain everything below $1000 you should be able to create some awesome results, just take a look at some of the 10 line competition winners over the years:

For BASIC programs to conform you must limit the memory available to BASIC by doing POKE 56,16 before running the program or before a CLR. You can include it as the first line like so:

1 POKE 56,16: CLR

#2 - Using routines from Kernal and BASIC

        Some things you might want to do already exist in BASIC and Kernal, though you usually have to sacrifice some of zero page and some of the area at$200-$2ff for them. Check out the ROM disassemblies at for more details and to work out what locations you need to sacrifice. But here are some examples:

Clearing the screen and fill color ram with RED, obviously you can preload 0286 and 0288 if you want:

 lda #$02
 sta $0286
 lda #$04
 sta $0288
 jsr $e544

Note: It has been pointed out that on older kernal the color is taken from $d021, so you would want to load the color value there instead. (thanks to kakefoni for this info!)

Shift screen contents up 1 row, again preload 0288 if necessary:

lda #$04
sta $0288
ldx #$19
jsr $e967

Load the accumulator with a random number 0-255:

lda #$01
jsr $e09a
lda $63

There are many more useful routines I suggest browsing through the disassemblies of the ROMs  linked above to see whats there and what you need to sacrifice to use them.

#3 - Using screen ram for code and other data:

One sneaky way to get more space for code is to reduce the size of your screen area. You could sacrifice a few lines at the top and bottom of the screen to put code into instead, filling color ram at that location to hide the resulting garbage. Remove 4 lines from top and bottom and you can save an extra 320 bytes. 
If you additionally squash horizontally by reducing the screen width by 8 on each side you have room for some predefined tables or even some custom fonts, a screen that's 18 high and 24 wide will give you enough room on the sides to hide an enough custom font for alphabet and numbers 0-9, while still providing 280 bytes of free space at the top and bottom too!

#4 - Using very low memory locations

    The following kick assembler snippet shows how you can utilise memory way below the usual $0801 area:

//Autostarting PRG code under $1000
// 3767 bytes free for code
// 254 zero page bytes free for variables
// 18 bytes at $1ed for variables
* = $120
    ldx #$1f 
    txs    //Push stack down to $100-$11f
    //Start your code HERE (205 bytes up to $1ec)
    inc $d020
    jmp *-3    
* = $1ed
    //This area can be used for runtime vars
    //Once prg is loaded (1ed-1ff = 18 bytes)
    //But is bashed by the loading process
* = $1f8  //Override return from load vector on stack         
    .byte <[Entry-1], >[Entry-1]
* = $200
    //143 free bytes here
    .fill $8f, 0
    .byte $48,$eb //Prevent keyboard jam
    //131 free bytes here
    .fill $83, 0 
* = $314 //IRQ, BRK and NMI Vectors
    .byte $31, $ea, $66, $fe, $47,$fe
    //Keep the following vectors also
    .byte $4a,$f3,$91,$f2,$0e,$f2
    .byte $50,$f2,$33,$f3,$57,$f1,$ca,$f1
    .byte $ed,$f6 //STOP vector - Essential to avoid JAM
    //3286 free bytes here for your pleasure!
    .fill $cd6, 0

This works by overriding the stack return pointer for the load routine, which can be found at $01f8 and pointing it instead to a new Entry point found in the lower end of the stack. This entry point then moves the stack pointer to $011f reducing the stack to 32 bytes (can of course be adjusted as need be). At this point you now have 3767 free bytes between $123 and $fff where you can place anything (currently just filled with zeros). Note I used VICE 3.4 for this and recommend that everyone should do the same (VICE 3.1 has been reported to crash with this code, thanks Docster for the info)

Hopefully that's helped to alleviate some of the fears some people had about the requirements and given a few useful pointers to those that wish to enter.


No the Laxity NTSC fix made the code entry extremely glitchy and almost unusable. But  I wouldn't expect  a cracker to know how to actually QA stuff. Re: the end sequence it appears to be ok for me on NTSC, but ill take a closer look  in the coming days, thanks :)

Can be done in 18 moves, just saying ... :)

(1 edit)

- Proper NTSC support unlike the terrible version  "cracked" by Laxity that broke the code entry, didn't slow the music properly and broke the completion screen

Currently PAL but look out for an NTSC update 1.1 in the next few days

It is though id recommend a usb keyboard as you will need for entering codes and spacebar for reset level.

I can give you one clue. Start by moving the first mirror the laser is hitting to the left. Hope that helps!

Unfortunately not sorry