pico sonic
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.
Announcements
My next Sonic fan game, Super Sonic Heroes, is currently in development! Check the trailer on its game page.
Disclaimers
Fan game
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.
PICO-8
The game runs on a patched version of PICO-8 that doesn't have the original token count limitation. Therefore, the .p8 and .p8.png carts cannot run on a vanilla PICO-8 binary. However, I do respect the (compressed) characters limit for each cartridge.
Distribution
This game is only meant for distribution on itch.io, SAGE forums and the repository’s GitHub (see links below). If you find a copy (generally the embedded web version) on a different website, this is an unauthorized redistribution of the game. Make sure to play the latest version on itch.io.
External links
Features
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.
Content
Title menu
- Splash screen
- Attract mode (wait until end of music)
- Credits
- Cinematic + stage intro before stage starts
In-game
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
Controls
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 |
Alt+Enter | 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 game cannot run on a vanilla PICO-8 because it relies on several custom binary patches
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
Releases
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".
Changelog
Full devlog on itch.io (contains summarized changes)
Full changelog on GitHub (contains detailed changes)
Credits
- Sonic Team - Original games
- danooct1 - 8-bit remixes of Sonic 3 BGMs for famitracker
- Leyn (komehara) - Programming, Sprite/SFX/jingle adaptation, BGM adjustments
Tools
- 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
References
- Sonic Physics Guide for physics
- TASVideos Resources for Sonic the Hedgehog for physics
- The Spriters Resource for original sprites
Special thanks
- BoneVolt aka Slow the Snail for their own tech demo of Sonic on PICO-8, “Sonic 2.5” (PICO-8 forum post and SAGE 2020 entry), which motivated me to finish my prototype and enter SAGE myself
Similar games
- Knuckles' Emerald Hunt Mania (SAGE 2020) (itself inspired by MainMemory's Knuckles Emerald Hunt), where you play as Knuckles to collect emeralds directly in the level, using a radar as in Sonic Adventure 2
Updated | 19 days ago |
Status | Released |
Platforms | HTML5, Windows, macOS, Linux |
Rating | Rated 4.6 out of 5 stars (132 total ratings) |
Author | komehara |
Genre | Platformer |
Made with | PICO-8, Audacity, Aseprite, Sublime Text |
Tags | 2D, Demake, PICO-8, Pixel Art, Retro |
Code license | MIT License |
Asset license | Creative Commons Attribution_NonCommercial v4.0 International |
Average session | A few minutes |
Languages | English |
Inputs | Keyboard, Gamepad (any) |
Links | Source code |
Download
Development log
- pico sonic v7.0 release changelogFeb 05, 2023
- Releasing pico sonic v6.2 with stage introJun 13, 2022
- pico sonic v6.1 releaseAug 30, 2021
- pico sonic v6.0 release! (out of alpha)Aug 21, 2021
- v5.4 release - ceiling landing and physics fixesApr 17, 2021
- v5.3 release - horizontal springs!Feb 01, 2021
Comments
Log in with itch.io to leave a comment.
Awesome! I'm just starting doing a 2D-platformer inspired on Sonic 2D games physics and wow I see you have really achieved. The player's movement really feels super similar to sonic games. Congratulations! :-)
Great exhibit for some lovely pixelart, music, and the coolest hedgehog I know.
Thanks!
If you fancy Sonic fan events, I’ll try to have some demo of my next fan game (Super Sonic Heroes) ready for SAGE 2025.
I was stuck on the home screen B4 I realized that z was enter just like every other game
its not bad it's just boring after the main game. Maybe add some more things to do after the main game? (it's ok if you cant do that.)
3 stars.
The 2 of em is from the gameplay
The other is from the goal of the game.
Yeah, I wanted to add speedrunning with/without rings for more variations, but I got caught up in technical stuff. I’m currently focusing on cutting the game code and level memory usage to make it work in a native PICO-8 cart.
I don’t know how much time it will take though, so at the same time I’m setting up my next fan game which should have more room for tunable difficulty and speedrunning.
Yeah maybe cut some Game Code/Level Memory so can add more things.
Pro Tip: You could try cutting the games looks in half.
how do i play this? it's got multiple p8 files. I want the p8 (or else png) to run in an emulator for a linux handheld, so plz don't mention browser or buying pico8
As explained in the Disclaimers, the game currently doesn’t run on a native PICO-8 (mostly due to my custom patch to remove token limitation)… but I haven’t tested it on unofficial emulators (fake-08, zepto8) - I also use a Linux handheld, it uses ArkOS and zepto8 as fallback, but since I already own PICO-8 I just installed it instead and never got to try the emulator. So if your emulator has an option to ignore token limitation, it may be able to run it. Otherwise it will fail as soon as you enter in-game, with a token limit error message (but you should be able to see the title menu and maybe the stage intro).
I don’t have my handheld at the moment, but I suppose it would play multi-carts the same way as single carts: put all the .p8 files together in the usual carts folder, at the same level (in ArkOS each console has a dedicated folder, but they apparently keep the pico-8 folder itself for the official binary if you have it, so instead carts go to a sub-folder /roms/pico-8/carts). Alternatively, the .p8.png should also work.
Unfortunately, I cannot give you more information without knowing your specific setup, and the doc for your platform/emulator will probably be more useful to you. There is nothing special with the game itself so if you can run a single-cart game, you can probably run a multi-cart game the same way. The token limitation break is your biggest issue and it’s not specific to Linux/emulator.
I’m curious if some emulators can run the carts so tell me if you can make it work!
P.S.: and obviously there is the solution to run the Linux binary, I have done it myself but it was a hassle on a GameBoy-style handheld: I had to plug a keyboard via USB, press a combination of keys to enter Terminal mode, use the keyboard with command line to navigate to the game’s Linux binary and run it… And I’m not even sure input mapping was correct. So I didn’t recommend it to you. I wish ArkOS had some “Other” category where you can run arbirary binaries and it still provides you with some input remapping overlay, like Steam Big Picture + add external games to your library. But I get it’s not really it’s original purpose.
Awesome job! I no joke would love to see more levels.
Nice game! :D
wow this game is actually cool
its funny watching the game crash when you hit reset cart (dont fix it please)
Are you talking about PICO-8 intentional visual glitch effect on reset? Yeah I find it cool too. If there’s an actual issue with reset though, it’s much more problematic.
The gray gems just isnt there
i found it but how was I supposed to figure that out? I just jumped randomly and got it.
Sorry, I have yet to add the shiny particles effect that was supposed to hint at the location of the emerald behind the leaves (it’s still visible but only by a few pixels). Same thing for the green emerald. I’m busy with other projects at the moment so I don’t have an ETA on this, but I’m glad you could find it!
finally finished it! the second one took me embarrassingly long to find hehe. really enjoyed the game tho!
Played a lot of Sonic on Game Gear. Takes me back!
Thanks! I never got a Game Gear, so I played most of the titles inside Sonic Adventure DX (also read they’d be put back in Origins). I admit it was harder to appreciate them so many years in the future, and after playing Sonic 1-3&K many times, but I had a few favorites. Oddly enough, my favorite, Tails Adventure, was not a speed platformer, but I really liked how Tails would auto-climb higher ground! I wanted to make a pixel art game with carefully crafted animations like that! (which… pico sonic doesn’t really have, but hopefully my future games will!)
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 :(
Thanks!
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
Actually I got the same issue with my Anbernic on ArkOS. I eventually managed to run some PICO-8 games as executable binaries by switching to the terminal. It’s not really convenient and I don’t remember if all inputs were working, though.
On Batocera it seems that you can display it on the interface by adding a launcher script: https://www.reddit.com/r/batocera/comments/mrpx2o/native_linux_games/
For my game, a native PICO-8 version will be better eventually. However I’m still interested in running Linux games on portable consoles in general, I’d be able to add standalone indie games that run at lower res!
Hi, thanks for your answer, for sure i know we can launch linux games on Batocera, i do it some times, and without script, it is already ready to use in ports games that can launch a .sh file.
But it is not my goal, my pico8 games are all in pico8 directory, ready to launch with the readl pico8 exec. It is the best way to play them, and have all of them in the same place. It's why i always ask creators to share a PNG game format and use the real engine :(
I understand you use a modified one, but i don't really understand why ... when i see Doom on VRRacing or so many other games that tric the official pico 8 engine to work... and it works :) But maybe it is hardest to release, i don't know ... ?
Got all 8 Emeralds on my first try, really nice game too.
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.
hmmmm
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
I GOT ALL EMERALS (:
wowee me too
Good job!
thank you
А я все собрала, кроме зелёного
I've got all emeralds except the green
:((
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
Congrats!
bro thats acrually sick
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.
I LOVE YOUR GAME !!!
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!
Thanks!
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
Thanks!
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!
o
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