If you experience audio lag when playing the web version on PC with Firefox, please try another browser like Chrome/Opera/Vivaldi, or download the standalone version.

If you experience audio crackling when playing the web version on mobile with Chrome/Opera/Vivaldi, please try another browser like Firefox or download the standalone version.

The 8 Pico Emeralds have been scattered! Sonic arrives on Pico Island, ready to collect them all!

pico sonic is a partial demake of Sonic the Hedgehog 3 made with PICO-8. It features a simplified version of Angel Island Act 1 with some tweaks. Various classic Sonic games were used as reference, including the 8-bit games (Game Gear and Master System), which have sprites closer to PICO-8's resolution and color palette, and the GBA titles, which have more clear-cut graphics.

The project was started as a personal challenge and was meant to be a fully-fledged fan game, but I eventually dropped many features to focus on Sonic's main movements and the exploration of the stage. Consider it a technical demo with some exploration challenge.

Disclaimer: the game runs on a patched version of PICO-8 that doesn't have the original token count limitation. However, I do respect the (compressed) characters limit for each cartridge.

pico sonic is a fan game distributed for free and is not endorsed by Sega. Sega Games Co., Ltd owns the Sonic the Hedgehog trademark and copyrights on the original assets.

Code repository (GitHub)


Version: 7.0

Sonic has all basic movements from Sonic 1 but lacks look up and double-jump powers (there are no item boxes for shields anyway).

There is also no timer (sorry speedrunners!).

More info on the repository page.


Title menu
  • Splash screen
  • Attract mode (wait until end of music)
  • Credits
  • Cinematic + stage intro before stage starts

There is a single demo stage which covers the first part of Angel Island Act 1. Scale is close to 1:1, but Sonic is slightly smaller (relatively to the environment) than in the original game.

The game uses a custom map "streaming" system to allow a bigger map than PICO-8's standard tilemap. There are no enemies, hazards, rings nor item boxes. Rocks are not destructible.

Some enemies have been replaced by static obstacles, and most importantly some items have been replaced by emeralds that can be collected to make the stage more interesting.

Stage gimmicks:

  • Spring
  • Loop
  • Launch ramp


You can play with keyboard or gamepad. If you're playing the web version, you can click on the gamepad icon on the right of the frame to see the virtual gamepad input mapping.

Here is the full input/action mapping:

Keyboard Gamepad Action
Left/right arrows D-pad left/right Move
Down arrow D-pad down Crouch, Roll (during run)
Z/C/N Face button up/down (PICO-8 button O) Jump, Spin Dash (during Crouch)
X/V/M Face button left/right (PICO-8 button X) Cancel (menu)
Enter Start Open pause menu
Toggle fullscreen
Ctrl+R (standalone only)
Restart current cartridge (title, intro, stage or stage clear sequence)

If you gamepad mapping is not correct when playing with the native PC binaries, you can customize it with SDL2 Gamepad Tool and copy-paste the configuration line into sdl_controllers.txt in PICO-8's configuration directory. For instance, the Logicool Gamepad F310 had Open PICO-8 menu mapped to Right Trigger, so I remapped it to Start instead.

Pause menu

In the pause menu (toggled with Enter/Start), if you are in-game, you can select the following options:

  • Warp to start: restart stage from beginning keeping collected emeralds
  • Retry from zero: restart stage losing emeralds collected so far
  • Back to title: go back to title menu

Known bugs

  • Character can get stuck inside ground when landing on curves and inside loops (fixed)

Known technical issues

  • The player cannot control the character until the stage intro is over (player can now skip stage intro by pressing O or X)
  • The game pauses to switch to another cartridge, esp. at the end of the stage intro (only memory reload has been patched on PICO-8 to be instant)
  • Web version: audio lag on Firefox on PC, audio crackling on Chrome (and other WebKit/Blink browsers) on Android
  • Web version: high-pitched sounds in BGM do not convey the same as in desktop/cartridge versions

Known design issues

  • The stage feels a bit empty and too big due to the lack of items, enemies and hazards
  • Scaling is slightly inconsistent as the tilemap is 1:1, but the Sonic sprites are slightly smaller than they should be (rocks in particular look very big)
  • Some ugly sprite / sprite transitions and SFX too far from the original sounds


You can download the latest release below, and any released version on the repository Releases page. If you own PICO-8 and want to run the .p8 or .p8.png cartridges directly, download the pico-sonic-p8.zip or pico-sonic-png.zip respectively. However, please note that you will need a patched version of PICO-8, and must extract the cartridge files under your local PICO-8 carts folder (see README).

In addition, you can download the background of the itch.io page below as "picosonic itch.io page background 4x.gif".


Full devlog on itch.io (contains summarized changes)

Full changelog on GitHub (contains detailed changes)


  • Sonic Team - Original games
  • danooct1 - 8-bit remixes of Sonic 3 BGMs for famitracker
  • Leyn (komehara) - Programming, Sprite/SFX/jingle adaptation, BGM adjustments


  • Game engine: PICO-8 (also used for tilemap and chiptune editing)
  • Code editor: Sublime Text
  • Pixel art editor: Aseprite
  • BGM conversion: ftm2mid by hertzdevil and midi2pico by gamax92


Please ask me before redistributing this game on a free game online platform! (linking to this page is OK, embedding is not)


pico-sonic-windows.zip 1 MB
Version 7.0 Feb 05, 2023
pico-sonic-osx.zip 3 MB
Version 7.0 Feb 05, 2023
pico-sonic-linux.zip 845 kB
Version 7.0 Feb 05, 2023
pico-sonic-png.zip 329 kB
Version 7.0 Feb 05, 2023
pico-sonic-p8.zip 144 kB
Version 7.0 Feb 05, 2023
picosonic itch.io page background 4x.gif 565 kB
picosonic sonic spritesheet (arranged) - pink background v6.0.png 4 kB
picosonic sonic spritesheet (arranged) - transparent background v6.0.png 3 kB

Development log


Log in with itch.io to leave a comment.

Viewing most recent comments 1 to 40 of 73 · Next page · Last page

Thits so Nostalgic, i love it!

So cool to see a new update of this great :)
But like ever i can't play it because you are not using the official engine and i can't launch it in Batocera :(


For vanilla PICO-8, my last hope is to use PicoMap to reduce token/character count as explained in the last devlog. I’ll post a major update devlog if I manage to do this.

For Batocera, I have yet to upgrade the project to the more recent PICO-8 versions for 64-bit support (I assume it’s the reason for incompatibility according to https://forum.batocera.org/blog/6891-pico-8-official-becomes-64-bit), in fact code should be completely compatible, but patching a new version of PICO-8 is what takes time… and with PicoMap, I may not need patching anymore (or just the first patch to unlock token count, which is trivial compared to fast reloading patch, required by my custom multi-tilemap system), so it may not be worth the effort and I prefer waiting for PicoMap integration before upgrading PICO-8 once more.

Ok i understand, it's really not easy ...
But if you think Pico-8 will add PicoMap later, for sure it can be a good idea to stand for it and use it. In Batocera i use every time the last engine. To me the best compatible possible. Thanks a lot for your answer

(1 edit)

Got all 8 Emeralds on my first try, really nice game too.

at least i got 6 emeralds

You can do it! But I admit green on green is easy to miss, I’ll think about ways to make them stand out a little more.



but is a video at me not works :(


i got them all! :>


you couldnt add tails and other things because of some limits that the system has. but there *is* a way that you can bypass the limit. if you open up the p8 file using an code editor you can write any code without thinking of the limts pico 8 has.

its gooder than orginal 8 bit sonic games

awesome game I hope to see more in the future


Thanks! I’m working on a cosmetic update.

Nice I hope to see it and wish you the very best

we need more (or a dlc)

Best game I have played today


(1 edit)

А я все собрала, кроме зелёного

I've got all emeralds except the green


(1 edit)

That was beyond stellar. I couldnt find the grey, but got the others. Is there a music conversion program you use or did you manually recreate it in the pico8 music maker? And is this the default pico8 mapspace or did u use some kind of extended memory method? Is this going to go up on splore? Curious how u madeout with the sprite editor etc.


Very good question!

I explained the audio conversion process here: https://github.com/hsandt/sonic-pico8#audio-1

Sum-up: I worked from 8-bit remixes made by danooct1, then used FamiTracker to export source files to midi, followed by midi2pico. I still had to manually edit notes a lot, because I had to put everything on 4 channels to leave the 4th channel free for SFX.

For the level, I coded my own map streaming system: the level is made of sub-maps, each one being a standard PICO-8 map. When the camera gets close to a sub-map’s edge, the game automatically load the neighboring sub-map (combining half-maps when crossing horizontally or vertically, and quarter-maps when crossing diagonally). I use the general memory as a “buffer” for the copy-paste operations. However, this still requires a reload from cartridge operation when reaching new regions, so I had to patch PICO-8 binary to hide that extra loading time (with the new general memory at 0x8000 it may be possible to store more maps in live memory, I haven’t tried it yet). It also means that I did nothing special with the sprite editor (although I have multiple cartridges to store extra spritesheet, e.g. one dedicated to the title menu, one to Sonic, etc.)

For a future version, I’m considering using PicoMap (https://www.lexaloffle.com/bbs/?pid=91798) which handles everything from map data stored in runtime Lua memory. However, it is not compatible with the existing tilemap, which means I’d have to redraw the full map in PicoMap, and I don’t know how much time that would take… But something to keep in mind for future projects.

It’s not on splore for the reasons above, that it requires many cartridges for the title menu, intro/ending sequence, and above all the level data; and also that it requires binary patches to work. If I can make PicoMap work, we could have a single cartridge version running on vanilla PICO-8 with just the in-game (level) part.

Another PICO-8 game called “Dungeon Witches” did it, but I’m unsure whether or not it’s possible for this one yet. As an alternative, I could make a small demo level like bonevolt’s Sonic 2.5, which was also running on a single cartridge.

This is a really good recreation of Angel Island, even with more limited color pallets than that of the Genesis, this is visually great and a blast to play. I can't wait for more of this!

Thanks! I can’t promise more content on this specific game, but I intend to work on more platform games one day!

I'll be looking forward to it then!


   I've got them all




bro thats acrually sick

(1 edit)

This is great, also my favorite emerald is the yellow one, you see it when you go on the jump ramp, but you have to drop from above to get it. Or you could hold right while spindashing off the ramp which isn't obvious, but feels better.


THIS IS AMAZING!!!!!!!!!!!!!


This is really cool! I did find a bug (I think it's a bug but there's always that small chance it's intentional) that allows the player to screen warp all the way to the end of the stage, it happened at the ramp after collecting the brown/8th emerald. again this demo is really cool and I'm glad it was made!



Wow, okay, I just fixed the bug that allowed you to fall below the ground and move to the end of the stage, but I didn’t know about this one. How do you do it?

You’re talking about the curved wall after the spring after the 8th/brown emerald right? (not the launch ramp before the yellow emerald)

Is it similar to the “wall escape” technique used by speedrunners on the Genesis games, which consist in entering a wall and running toward the left to get projected toward the right?

Yes I am talking about the curved wall after the brown/8th emerald, and yeah it was exactly like screen warp/ wall escape technique, it was the first thing I thought when I understood what happened and that's why I was unsure if it was intentional or not. The bug only happened on my first playthrough and unfortunately I haven't been able to recreate it since, I'll let you know if I do it again. but I remember using a spin dash while holding towards the right of the wall, I hope this works

is there some type of way to go super sonic if you restard the game with all emeralds?

That was the super nice-to-have feature on the list, but got dropped… Data change (increase speed) would probably be cheap, and it’s super cheap to recolor Sonic’s blue in yellow (as in the original game), but in reality you’d need dedicated sprites for most poses due to hair spikes change, and that would go out of budget (unless it was distributed on a separate cartridge!)

that seperate cartridge thing is actually a good idea

Time for some "Lock-on Technology"

In fact, PICO-8 uses that (almost), you can grab data from other cartridges, just not code! In fact, I’m already at the limit, using all 16 cartridges… But I guess I could merge a few of them.

This is such a good demake! Fantastic job


(1 edit)

we need a tails version (not saying you have to)

It was in the original plan, but dropped when I hit PICO-8’s code limit and realized the Fly mechanic would go over the limit (also I’d have to adjust levels to make emeralds harder to get, unless I make playing with Tails the “easy” mode).


where green


Look up!



Sega vs. Nintendo: Fan games : r/gaming


How did you know about my secret plan?! It turns out that after Sonic Mania, both Sonic Team and Evening Star will be working on 3D platformers, and I won’t be applying to them any time soon… But I’m glad that what started as a “tech demo for my portfolio” ended up as a proper experience with an actual level to play through.

Good! But there is no full screen


There is! Just click on the rectangle on the bottom-right


Is not there. Im on mobile

where is the  red white and black emerald.

Red should be near the start of the level, but there is no black and white emerald, just a grey one.

Deleted post

Thanks! Hm… I remember hearing this kind of sentence, but I don’t have a particular reference in mind.

Deleted post

The sprites are ADORABLE- If I had the skill, I'd want to swap the ones in Sonic Mania for Sonic's sprites from this

Well, Sonic Mania went the opposite direction, increasing color palette and sprites count, but it also give it its charm.

In fact, I’m still jealous of Sonic Mania walk and run cycle sprites count, which is 2x of Sonic Master System, 1, 2 and pico sonic, and 1.5x of Sonic 3! PICO-8 having limited resolution and color palette, most games stand out thanks to leveled-up animation.

But due to limitations of spritesheet (and my own ability to draw many sprites), I had to stick to Sonic 1 run cycle and art style; which ended up quite nice in the end.

bro my teacher played this

o_O in which context?

played with a controller

a sega genesis one

Oh, I meant in a casual event or as part of a class, e.g. “retrogaming history” or “introduction to PICO-8”

Wow I didn't know you could make something this cool in PICO-8 !! Amazing work! 

Thank you!

Wow, this is so freaking impressive!

I love it. Amazing job


i wanna do games like you... but looks like i will never be able to make a game...

There are many resources available for that, and also schools if you want to go professional. I was doing web programming before, but I started working on standalone games 10 years ago with resources like Game From Scratch (https://www.youtube.com/c/gamefromscratch/) and later, Brackeys (https://www.youtube.com/c/Brackeys/). I’m on the code side of things but you can find your own field(s) of speciality. But more importantly, stay with the community: in the case of PICO-8, looking at other devs’ work and talking with them about how they do it is very instructional.

thank you!

1: no badnik

2: masterpiece

I LOVE IT. I really hope for a fully fledged game. :)


i wanna die.


Ummmmm ok?



You can't release pico games as executable ? right ?

I definitely can, with the EXPORT command. The Windows, OSX and Linux executables you see have been produced like that.

In reality, they are just a common PICO-8 runtime executable (+ some shared library e.g. DLL depending on the platform) + a .dat file which contains the compressed Lua script + assets data.

So it’s just the .dat file that characterizes the game, while the pico8 runtime binary is just a common file for all games exported on a given platform, with a certain version of PICO-8.

(1 edit)

Nice work.

WOAW your demake is so fantastic, i love it :)
But i'm really so sad ... i can't play it with my real PICO8 engine on my Batocera PC :(
If i understand fine i must use your modified version, but i can't ... i can only use the real engine :(
Is it really impossible to make a version working fine on the real engine please ?
Thanks a lot

(1 edit)

(Note: some technical stuff below, I don’t know if you’re a PICO-8 programmer or just using it from the player side, but I put them in case you’re interested)

Ah, an enthusiast!

Let’s see… The biggest issue is the token limit. The most direct way to cut that is to remove all the backgrounds and foregrounds… I can try, but I’m fearing for the visuals.

The second issue is the “fast reload” patch. Unlike the token limit, it will not prevent you from running the game, but the game will freeze for up to 1s every time you change region (128x32 tiles). A true fix would be to store all the regions in Lua tables, and copy them myself instead of relying on PICO-8 reload. I believe it would be faster, not because of the implementation (Lua iteration may be slower than the engine’s C code even adding I/O operations).

An alternative could be to make a special reduced version of the level for vanilla PICO-8. This would fix the complex background code and the region loading issue (Bonevolt did it on Sonic 2.5 so I know it can be done, with the slight difference that my OOP code tends to be bigger).

For better results and in the spirit of PICO-8 I’d go with the second solution. Unfortunately I’m working 1 day/week on the project now (spending other days on new projects), mainly to complete the intro sequence, so I don’t think I’ll be able to make that happen any time soon.

Thanks a lot for your answer. I m not a développer. But i will stand for your update. Take your Time ... 😉

Ah, sorry for the long explanation then. I can’t guarantee an update after the last things I was already planning, but I’ll see if I find a nice solution!

Ok thanks a lot for the answer :)

Viewing most recent comments 1 to 40 of 73 · Next page · Last page