Uncompressed Source Code: https://paste.ee/p/5KOG5 (warning: it's pretty gross)
Late last year (2017) I started work on a port of Super Mario Bros [NES] to Pico-8. The goal was to be authentic as possible to the original game, while working within the Pico-8 limitations. Something like Super Mario Bros Deluxe [GBC] (https://www.mariowiki.com/Super_Mario_Bros._Deluxe).
In the end I was able to get 1-1 and 1-2 mostly complete before starting to hit serious memory limits which make it seem near impossible to ship the full game.
With that in mind, I'm releasing it as-is for now so that people can check it out and see where it was headed.
If you are curious, the biggest factor for memory is the level data which is quite huge. At some point I'd like to document how my level authoring process worked, but for now you can check out this twitter thread of me slowly wittling down the level data size:
https://twitter.com/matthughson/status/929194247202340864
Update: I have managed to squeeze in all for World 1 now!
Music by: https://twitter.com/gruber_music
Why was this cart hidden for so long? Like... it didn't even come up in search results before.
@StinkerB06 I had it in the WIP section for a long time cause I had planned to finish the rest of the worlds. When it started to seem like that is never going to happen I moved it to "Complete". I'm guessing that affects the search results.
@BrightBlackHole That's pretty cool. I haven't see that before!
Nice job on the graphics and gameplay here. If at some point you're interested in revisiting the project to fill in the rest of the levels, I've managed to get a good level compression system going using metatiles. A while ago I made an interactive demo with it that included all SMB level maps, and they fit in just 3.9KB. https://www.lexaloffle.com/bbs/?tid=39469
Since then I've released a graphical editor using a newer, more versatile version of the system: https://www.lexaloffle.com/bbs/?tid=42848
Storing levels made of 16x16 tiles instead of the 8x8 ones in the demo would actually be very easy, too, just requiring adjustment of some math and a bit more space to hold the reference tile patterns. Fitting the full-size NES sprite graphics should also be feasible with the system's built-in sprite compression. Nintendo's pretty touchy about their IP so you probably wouldn't want to promote it a lot, but using metatiles it's definitely possible to fit the game on a Pico-8 cart.
This is really well done! The best version of Mario on Pico-8. Thanks for updating this.
i had made a expressive mod of this. i think i did good
@JadeLombax thanks for sharing! That's really cool. I don't think I'll work on this much more at this point though.
@Gameboi64 I like your ? block sprite a lot!
Why do things get the white circle when they're just off the edge of the screen? Is that in the actual game?
@ooooggll The "off screen" indicators accommodate the fact that PICO-8's screen can only show a portion of the original viewable area at a time. They're specific to this version, not in the original.
As far as fitting more level data in, the original game uses sprites to control the height of the floor and ceiling. For example, in World 1-1, the floor is initially set at 2, then 0 to make the bottomless pits.
floors = { [0] = [2, 0], [20] = [0, 0], [24] = [2, 0] -- and so on... } |
I might play around with it when I get some time off at Christmas.
As far as improving the music, I've made a demo with how it can be achieved.
remember what you said?
I had it in the WIP section for a long time cause I had planned to finish the rest of the worlds. When it started to seem like that is never going to happen I moved it to "Complete". I'm guessing that affects the search results
if you are the user of the project you can use edit to update
learned
from @Verb
NOOOOOOOOOOOOOO what happened to Toad at the end? I wanted him to say the princess was in another castle. Still 10/10.
Awesome work!! Don't know if you've seen it, but here there is a link to a very nice explanation on how the original cartdridge store levels (and is very tricky)! https://www.youtube.com/watch?v=1ysdUajrhL8
[Please log in to post a comment]