Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics


A member registered Apr 10, 2015 · View creator page →

Creator of

Recent community posts

(1 edit)

I'm not on Windows but you can try this:

1. Install Python.

2. Create a new folder for your project.
2a. Download the Win64 Tilengine release from itch, and copy Tilengine.dll into your project folder
2b. Download the PyTilengine repo as a zip file from and copy src/ to your project folder, as well as the assets folder from the examples.

3. Use a text editor to create which contains the following code:

from tilengine import Engine, Window, Tilemap
engine = Engine.create(400, 240, 1, 0, 20)
foreground = Tilemap.fromfile("sonic_md_fg1.tmx")
window = Window.create()
while window.process():

Your folder structure should look like this:

├── assets
│  └── sonic
│      ├── Base.png
│      ├── Base.tmx
│      ├── Base.tsx
│      ├── Sonic_md_bg1.png
│      ├── Sonic_md_bg1.tmx
│      ├── Sonic_md_bg1.tsx
│      ├── Sonic_md_fg1.png
│      ├── Sonic_md_fg1.tmx
│      ├── Sonic_md_fg1.tsx
│      └── Sonic_md_seq.sqx
└── Tilengine.dll

4. Open a cmd.exe or powershell window in your project folder.  (here's some ways to do that in Windows, it changes all the time) and type  python3  and hit enter to run your game.

it's not an engine in the sense of "comes with a full editing environment" like Unity, Godot, etc. It's more like a rendering engine. You have to bring your own text editor, pixel art software, map editor, and programming language (there's Python bindings which are probably the easiest way to get started).

You can use it to faithfully make games in the style of the 16-bit era, using sprites, tilemaps with animated tiles, palette tricks and per-scanline effects (including parallax, & mode 7 like you said).

You don't have to use it with another engine, because Tilengine is also capable of spawning its own window and handling user input. (But of course you could use it with another engine if you wanted to, as long as you were able to get it rendering to a texture.)

The GBA Jam 2022 results are now live! You can see them at:

Thank you for waiting, and huge congrats to everyone who entered!

(2 edits)

It sounds like you're on the right track, taking advantage of the GBA's wrapping BGs to avoid having to shift the whole tilemap. The bigmap example from (edit: updated repo at libtonc-examples) has a working implementation of large scrolling tilemaps which you may find useful. There's also an annotated version of the same code which is much more readable.

I think you may just have an oversight with your vertical scrolling (it needs to start from the X offset of the horizontal scroll, after horizontal scrolling has been done?), because I'm doing similar in my game and it works fine, can scroll diagonally with no problem. Here's my code in case that's helpful, but it's not C. This is a bit of a tangent but it's based on the approach described in the GBA Resource Management article, which uses reference counting to dynamically unload tile gfx that are not in use (may be overkill for smaller games?), but other than that the basic approach of looping over rows & columns to copy in new sections of map data is the same.

Anyways, hope some of this helps, please shout if you're still running into issues!

Hello! We have made an update to the Q&A to clarify the rules around asset reuse.

It should hopefully now be more clear that:

  • you are allowed to use assets you previously made.
  • if you're remaking an existing game, you can use its assets as long as you have permission from the creator.

Keep in mind that games using new & original assets are likely to score higher in the "Originality" category, so we would still encourage you to use new assets! But if your heart is telling you to make a faithful port or revive a dead project from another platform, it is now possible to do so.

Hi everyone,

We're pleased to announce that GBA Jam 2022 is now underway!

This thread will be used to post updates and announcements.

invitro by Jono, pmprog, GValiente, exelotl, avivace

Remember the jam is 3 months long to account for people's differing schedules & availability. So don't stress, pick a couple of free weekends and see how far you get. (But don't leave it to the last minute!)

I'm not sure I'll find time to enter this year myself, but I'll certainly be judging and I can't wait to see what everyone comes up with :)

Good luck and (most importantly) have fun!

For anyone who may be subscribed to this topic - the GBA Jam 2022 is starting soon over at, running from the 1st August to 1st November. gl;hf! :D

(1 edit)

Hi everyone!

The next instalment of the GBA Jam is starting very soon over at

I'm super excited to see what this year brings, and hope to see you there! :D

This is perfection! I have a feeling it'll be my go-to whenever I want to throw down some blocks from now on.

This is quite satisfying to play around with :D

Nice presentation and very cool spheres :D

(1 edit)

I just got around to giving this a try, it's a fun little racer! The opponent AI is really solid and you've packed in a good number of features already. I think there's some small changes that could go a long way to improve the car physics, e.g. angular velocity and partial cancelling of lateral velocity, to let the cars turn naturally and skid when doing so.

Best of luck if you're planning to keep working on it! :D

Nice one! It feels pretty robust already. I made it onto the block so I'll take that as a victory :P

Oh my word this is brilliant! Tons of potential here, great presentation, would love to play a story campaign with these mechanics.

This is amazing! I love rush hour, and this is such a charming and clever way to theme it. Tempest hit it out of the park with the music too.

I only wish there was a control scheme where holding A grabs the luggage, releasing A releases the luggage, and you can slide by holding a direction rather than repeatedly pressing the direction. To me this would be more natural and easier on my thumbs x)

Do you mean hiding specific games or hiding entire tags?  I'd personally like the latter a lot, as I hate when I click "browse" and see dozens of creepy horror thumbnails.

Thanks so much! We'll look into adding support for this, though it might be impossible without an update to the EZ Flash firmware itself (as I believe the patch is intended for games that used the official SDK from back in the day). I'll have to investigate some more. :)

Thanks! Map is definitely something we're planning for the full game :)

The save data allows up to 2321 shards, but the count will display incorrectly if you have more than 65,535, due to the optimised number-to-string conversion library that we're using.

it's a real GBA ROM, made with Nim (a language that can compile into C, C++ and others). See for resources!

Thanks for playing, I admire your persistence! It looks like there's still a few things in the demo that are definitely too punishing. Especially the hitboxes of the rhino enemies - they shouldn't be able to kill you when they're dazed!

And yes, you're on the right track! If you decide to come back to it, try talking to the purple robot near the end of each route (he's not reachable on the gunless route though).

Hey! To make the 'packed' version we followed the steps to build RetroArch from source using MSYS2. For many reasons we'd have preferred to use a standalone GBA emulator, but they're all missing dynamic rate control which is crucial for a smooth 60fps experience.

The goal was then to get it as small as possible (RA is usually hundreds of MB). Looking at the available ./configure options there's a ton of features that can be disabled. We also changed the app icon and removed any theme assets that weren't needed.

RA likes to create folders and update config on the fly, so I'd recommend to commit the whole tree to a git repo before running, so you can easily see what's changed and remove the junk before zipping it up.

Finally, the launcher is just a simple Win32 program made with wnim, which copies the correct ROM for your language and launches the game like so:

retroarch.exe -L path/to/mgba_libretro.dll goodboy.gba

With regards to Steam, I'm aware of other emulated titles being sold (e.g. Iridion II), so I'd be surprised if a game running in RetroArch was rejected, but couldn't say for certain.

They're playing the GBA version of the game, likely using GBARunner2.

On DSi you can do this with software mods, or using a flashcart (R4i, etc.)

On DS / DS Lite, softmod isn't an option, but you can also use a GBA flashcart such as the EZFlash Omega or EverDrive GBA X5.

Nice one! Really tempted to get a DSi XL now so I can experience those chunky pixels for myself 😅

For Goodboy we're using our own stuff in the Nim programming language, but the easiest way to get started with GBA dev nowadays is the Butano engine (requires some modern C++ skills).

Check out for a full list of resources!

Hey, sorry for the crash! We've just put out an update which fixes it ^^

(1 edit)

You can often find them in second-hand shops, or on ebay! Just don't get an original (AGS-001) without a backlit screen mod, else you'll hardly see a thing. 😭

Also note that you need a flashcart such as the EverDrive or EZFlash Omega to play this demo on a real GBA.

We're using the Nim programming language, here's a video I made about it last year :)

Yep, the link you found is what the judges used :)

But, it's worth checking the itch page for each entry, because some games have received updates after the jam (including Varooom 3D, Inheritors of the Oubliette, Skyland and Knight Owls)

(1 edit)

Hey, (on behalf of the winners) thanks and don't worry, everyone gets jealous sometimes - but look on the bright side: there's a ton of cool games to enjoy now!

There's many folks in the community who are striving to make easier & more accessible tools for GBA dev, so I'm hopeful that we can lower the barrier to entry by the time we hold the next jam :)

Hahaha, the truth is that I was totally zoned out when I got that score. When I tried hard, I did way worse :')

It's really cool that you found a way to use Lua for this, I wasn't aware of the BPCore-Engine before this entry came in. Enjoyed it a lot! My highest score so far is 462 :)

Haha I did consider it! But decided not to because the jam has rules against "projects you already worked on" and "assets you don't have the rights to use".

It will happen one day, I'm sorry for the wait!

Hey, yes probably! Goodboy takes priority, but we have a bit of downtime while waiting on all the kickstarter bits to fall into place... And I couldn't resist doing something for the Jam ^^

Nope, we decided from an early stage that wrapping a non-GBA game in an emulator would be against the spirit of the jam.

gbsenpai is allowed because it's an engine rather than an emulator - the games are compiled to native GBA code and run at native resolution.

Yes, but only if your game is compiled for GBA using gbsenpai.

(your submission must be a ".gba" file, not ".gb" or ".gbc")