An RPG game
made by Bruno Oliveira
uploaded by btco
download cartridge


Shadow Over the Twelve Lands
By Bruno Oliveira (@btco_code)

** UPDATE: PDF manual is here:

This is a retro CRPG game where you control a party of adventurers through an epic quest that starts out with a small mistake where you essentially doom the entire world to a decade of disasters. But worry not, because you are going to fix things now and defeat the great evil you unleashed upon the world.

It's turn-based, so you have as long as you want to think things through and even in the heat of battle our monsters are well trained to wait, seemingly forever, until you have taken your turn.

You start at the shores of Riverside with barely no equipment, a laughable budget and a desire for fame, fortune and making the world a better place. Let's see how this works out for you.

Printable world map:

This project is open source. The source code is at:

*** SAVEGAME WARNING: Depending on your browser, the save game feature might not work (known issue on Chrome)! To test that it's working, reload the page after the intro screen. If you see "Save OK" on the top left, savegames are working. In any case, if you are playing this seriously, consider downloading the cart and playing in the TIC-80 program.

arrow keys: move
[Z]: menu / confirm
[X]: cancel / close

At any time while adventuring you can bring up the game menu by pressing [Z] to allow you to: rest, cast spell, manage inventory and see detailed party info.

[ TIPS ]
0. To interact with things, just walk into them (huts, fountains, doors, etc, etc).
1. To rest, use food rations: press Z to open menu, select ITEMS, select the food ration, press Z and select USE.
2. Always carry plenty of food. Buy them in General Stores.
3. Always carry plenty of torches to light dark caves and dungeons. Also found in General Stores.
4. Upgrade equipment! You won't go very far with just a dagger and no armor.
5. Save at every opportunity. Fountains and inns allow you to save.
6. Beware of unidentified items. They may be cursed, explode, release poison gas, and all sorts of other bad effects. Plus, if you equip a cursed item, you won't be able to remove it.
7. When you get enough XP, go to a town to train to level up. You will know you have enough XP because the XP meter on the bottom right will be highlighted with an up arrow.

The game engine is 64K of Lua code but the core of the game's logic is written in XL, an assembly-like language I created, which assembles to bytecode that gets put into the cart's Map memory banks (banks 6 and 7). You can look at the XL source code in . It looks something like this:

TEST GM_R_MYRA; JNZ .quest_r
TEST GM_C_MYRA; JNZ .quest_c
SND 251 .old_wiz .quest_msg
SND 251 .old_wiz .quest_msg2
SND 0 0 .quest_narr

The assembler that takes that and converts to bytecode is in . The VM that runs this is in



This is very cool, I love how well the 3D effect works. Reminds me of the first final fantasy, too


Thanks! Yeah, I made the 3D engine myself, it's very basic: just floors, walls and sprites. All textures are 16x16 pixels, which creates this retro look (and conserves the very limited texture memory).


Btco this game is awesome!


Thank you!


Just pushed a quick patch making the first dungeon a little bit easier.


This is actually pretty impressive, with story and all. The elder scrolls of tic80


Thank you! I never played Elder Scrolls, but my main sources of inspiration were the CRPGs of the early 90s, like Eye of the Beholder, Might and Magic, etc.


I played entirely too many of this kind of game back in the 90s. (Or at least, this was my mother's assessment.)

I love this game! I was hooked from the moment I read "Or perhaps you will just die pathetically on that first battle that was supposed to be easy".


wow this is a masterpiece among TIC80 games! Very well done!


Thank you! :)

Post comment