Log In  


just want to show my work of the last week /maybe I will start a dev blog here...

I am trying to create a complete super mario bros. remake in pico-8, with all the 32+levels.

Most of the functionality is already implemented:

  • custom tileEngine
  • loading compressed maps(thx for px8)
  • player physics
  • items (mushroom, flower, coin)
  • enemy classes(goomba, koopa_troopa_green, fire_bar)
  • movingPlatforms
  • ParticleEffects

Looking forward to put everything together and show a playable demo soon. Just a few little things for the first world are missing:)

Any feedback or criticism is highly appreciated!

Maybe someone can contributing sound effects/music..
That would be great, because midi to pico8 sounds weird: \

P#36871 2017-01-29 16:07 ( Edited 2018-08-24 19:33)

:: Scathe

Awesome! I can't wait to play this, it looks great! Nice work!

P#36879 2017-01-29 18:57 ( Edited 2017-01-29 23:57)

This looks amazing! Very inspiring! :D Keep it up!

P#36889 2017-01-29 21:07 ( Edited 2017-01-30 02:07)

Holy cow! :D
I like doing remakes, but this looks amazing!
Great effort!

P#36892 2017-01-30 00:57 ( Edited 2017-01-30 05:57)

Looks awesome! Really looking forward to this!

P#36896 2017-01-30 03:44 ( Edited 2017-01-30 08:44)

This looks genuinely amazing! The spritework is easily one of the best on PICO-8 I've seen! It's weird being hyped for a PICO-8 game!
As a suggestion, since the levels will be compressed (and I'm not familiar with the px8 library), how about publishing some kind of level editor & packager with developer mouse support like Super Mario Maker?
Keep up the good work!

P#36897 2017-01-30 05:15 ( Edited 2017-01-30 10:15)

Thank you for the comments, everyone!

>> how about publishing some kind of level editor & packager with developer
>> mouse support like Super Mario Maker?

I try to keep things simple. Currently I create one cartrige per level and using another that loads all the maps and compresses them to a single file.
Enemies are placed by hand in code, but I will encode this in strings, due to the token limit.

btw: added moving turtle shell collisions

P#36898 2017-01-30 06:57 ( Edited 2017-02-02 14:36)

I'm really excited to see this happen! Not only does it look completely kickass, but I have a design doc (for future work) that maps out 4 layouts and uses scripts to give them variation, and I'd like to see how it plays out on this engine.

Looks excellent!

P#36911 2017-01-30 14:30 ( Edited 2017-01-30 19:30)

looks great! Loving the animations and art. Btw that Mario Maker idea would be awesome even if you release it as a separate cart. Excited! :D

P#36913 2017-01-30 14:59 ( Edited 2017-01-30 19:59)
:: Scathe

Duuuude I want to play this so bad, hurry uuuuup! Just kidding (actually, no I'm not - hurry up :P)

P#36930 2017-01-30 17:54 ( Edited 2017-01-30 22:54)

missing tiles for level 3 added... it becomes tight :| everything needs to be more packed and the title screen needs to be moved to source.

P#36938 2017-01-30 20:38 ( Edited 2017-01-31 01:38)

How are you storing the levels? If it's just the normal map data, I'm assuming this is very shortened.

P#36939 2017-01-30 20:49 ( Edited 2017-01-31 01:49)

The maps are reproduced 1:1, that's why I store the data in tables.
Rendering is done manually:

function draw_map(scroll_x)
  local fx = scroll_x /8
  local startx = max(1,flr(fx))
  local endx = min(tilemap_width,startx+17)
  for iy = 1, 15 do 
    for ix = startx, endx do
      local i = tilemap[iy][ix]
      if i > 0 and i < 255 then 
        spr(i, ix*8-8, iy*8-8)

problem is the enormous size of all 32+ levels... I think overall there are ~500 screens. The plan was to use the whole 8kb of map memory , but now are only 4kb left... seems I have to use strings in the source code.

The size of the mapdata of all levels might be around 100kb, compressed are still ~18kb left

P#36940 2017-01-30 21:01 ( Edited 2017-01-31 13:45)
:: Scathe

He's using the px8 library for the level data. https://www.lexaloffle.com/bbs/?tid=3930

P#36941 2017-01-30 21:02 ( Edited 2017-01-31 02:02)
:: Oli414

You can probably remove about half of the tiles needed for the fnish castle. There're a lot of duplicates/very similair tiles in there.

P#36958 2017-01-31 06:19 ( Edited 2017-01-31 11:19)

yes... castle is a placeholder(snes rip).

just made a new one.
Only 10 of 24 tiles, and with modular design:

Hmm, the darkened areas above the entrance look wrong :\

last but not least

P#36961 2017-01-31 07:52 ( Edited 2017-01-31 15:16)

Looks very good! But isn't the big N very adamant with copyright control nowadays? I don't know if there is room for "fair use", like with Lucasfilm and Star Wars fan movies...

P#36973 2017-01-31 15:46 ( Edited 2017-01-31 20:46)


I think it's no problem as long as the game contains no ripped content....

P#36974 2017-01-31 16:30 ( Edited 2017-01-31 21:30)

I made a collage from the first world:

I'm starting to like to create pixel art with pico-8...
At the beginning the background looked like this, but I decided to remove the background, because of the restricted palette and because of performance

Someone told me that this would not look good.. can not judge that.
What do you think?

btw: I am a programmer, not an artist ;)

P#37029 2017-02-01 18:34 ( Edited 2017-02-02 14:37)

It is a very detailed background, but it's also noisy. Not saying you're bad at art (better than me XD), but Super Mario Bros. does benefit from a "clean" background.

As for any issues from the Nintenders (Nintendo Defenders? I'm bad at combining words), worst case scenario, you'd have to change the art/music.

P#37038 2017-02-01 21:52 ( Edited 2017-02-02 02:52)

yes, it's probably all the dithering that looks weird...A few more shades of blue would make it easier :\

P#37050 2017-02-02 04:57 ( Edited 2017-02-02 09:57)

Looking pretty sweet. I think the color choice is the odd thing; the magenta bleeds in with Mario, where golds would make him stand out better. Greens could too, but then there's Koopa Troopas.

P#37237 2017-02-06 20:58 ( Edited 2017-02-07 01:58)

A little update here:
I created a little map editor, which stores compressed levels using a custom RLE compression... I am using only the first 93 Tiles for mapdata, in order to save the data without overhead in strings... One level is compressed to ~500 from 2400 byte(4800 when using the whole byte range), for example.

~.!GH~:!GH~L!78~>!GH~,[email protected]!GH~,!~$B~=!GH~6!GH~.!GH~3!78~8!GH~,!~*B~$!~$BA~

The decompression routine consumes only 61 tokens.

P#37326 2017-02-10 10:05 ( Edited 2017-02-10 15:09)


P#37332 2017-02-10 18:04 ( Edited 2017-02-10 23:04)

Little update:

I am currently fighting against compressed code size. It's really annoying, that a lot code obfuscation is necessary in order to make space free.

Tokens: 6909/8192
Program chars: 4072/65536
Compressed: 15209/15360

I will add more levels the next days. You will prbably need a gamepad... at least I can only play with gamepad;)

Cart [#37668#] | Code | 2017-02-21 | No License | Embed

btw: how do I add a title??

P#37669 2017-02-20 20:27 ( Edited 2017-02-22 00:42)
:: Scathe

Looking good so far! Is it just the one level right now? To add a title, I think you can do that when you submit the cartridge, there's a textbox that asks about the title.

P#37682 2017-02-21 19:06 ( Edited 2017-02-22 00:06)

happens to me every time...
edit your post, then edit the cart name at the bottom and click "submit".

P#37683 2017-02-21 19:35 ( Edited 2017-02-22 00:35)

Thanks. Yes, just one level.... Compressed code size was exceeded :(

Before I add more levels, I have to remove all comments and rename all identifiers. Unfortunately picoTool's luamin does not work.

But I will implement the missing features first. Next points on todo:

  • pipes
  • paratrooper movement controller
  • pulley platforms

Apart from that, pretty much everything is implemented. Creating levels is really fast and straight forward, using my level editor.

P#37684 2017-02-21 19:41 ( Edited 2017-02-22 00:41)

This is really impressive for the Pico 8. And you're definitely right, I couldn't play it with my PC and a keyboard, or my PocketCHIP and the clicky keyboard...had to use a USB SNES controller to get anywhere.

Can't wait to see this go further.

P#37711 2017-02-22 15:04 ( Edited 2017-02-22 20:04)

Thanks for playing!
I am very interesting in feedback regarding the controls. I increased the gravity a little bit, and compared to super mario world it feels all a little more direct... the original is really very spongy.

I don't know whether I should recreate the SMW physics 100%, or a simplified custom one ??

btw: added crouch animation & pipes:

P#37718 2017-02-22 18:16 ( Edited 2017-02-22 23:37)

I'm cool with the simplified physics. They aren't 1:1, but this doesn't need to be perfect to be a valid engine.

There's also this thing called "cart linking;" so you can link up to 16 carts together. That said, you can take this (the first world), and use it as a template to construct the other worlds, and just "link" from one cart to the next. Now it's just levels, and even 6 of those are copypastes, right? Plus you can squeeze in Lost Levels.

P#37836 2017-02-25 20:48 ( Edited 2017-02-26 01:48)

Multiple carts do not work on BBS... There is enough memory for at least 10 levels, when using luamin.
Dont know what you mean with copypastes...

P#37839 2017-02-26 02:49 ( Edited 2017-02-26 07:49)

I think I've totally underestimated this. Always one more triviality needs to be implemented... looking forward to put everything together

token limit is very annoying.



instead of


and changing constants from

entity_type{item=1, enemy=2,...}


tentity_item = 1
tentity_enemy = 2 ...

this one is nice

local newAnim = mp.level == 0 and (e.vx  == 0 and mp.anim_stand_small or p.anim_walk_small) 
                or (mp.duck and mp.anim_duck 
                or (not e.grounded and mp.anim_jump_big 
                or (e.skidding and mp.anim_skidding_big 
                or (e.vx  == 0 and mp.anim_stand_big or mp.anim_walk_big))))

also had to remove running across narrow pits... saves ~150 tokens

P#37853 2017-02-26 13:53 ( Edited 2017-02-28 12:10)

10 levels sounds quite good actually. Love the artwork!

I noticed it's better to create your cart by first making the engine, creating the start and end and only then gradually filling all the sprites, levels, AI etc until you reached the limits of your cart.

What tool are you using there? Or is that custom?

P#39548 2017-04-11 16:15 ( Edited 2017-04-11 20:21)

What did you use to create that map editor? I've been interested in making one for a while and any information on yours would be helpful.

P#44129 2017-09-12 19:09 ( Edited 2017-09-12 23:09)

I used BlitzMax + MaxGui... Bad idea at all. If you are on Windows, I whould recommend c# + Winforms;

P#44153 2017-09-13 15:07 ( Edited 2017-09-14 06:56)
:: zlg

Dropping by to leave a word of encouragement. If Nintendo comes after you with a C&D (cease and desist), be sure to have backup assets to work from!

I like the smooth camera panning. Very slick. :D

P#51216 2018-04-02 16:21 ( Edited 2018-04-02 20:21)

This has been about as far as I've gotten on a thing before, when the token or code limit kills me. This is a VERY ANNOYING PLACE to get killed by the token/code limits.

It's unbelievably frustrating.

P#51226 2018-04-02 21:13 ( Edited 2018-04-03 01:13)
:: PHG

I think that instead of doing a recreation you should do your own levels. This way it's like the original, but it feels new.

P#55599 2018-08-24 12:16 ( Edited 2018-08-24 16:16)
:: dw817



Clicked the rocketman icon, brought up PICO, brought up the PICO initialization screen, then PICO said "Could not access cart."

And ... what happened to PHG user above ?

P#55609 2018-08-24 15:33 ( Edited 2018-08-24 19:36)

[Please log in to post a comment]

About | Contact | Updates | Terms of Use
Follow Lexaloffle:        
Generated 2019-08-20 14:57 | 0.058s | 4194k | Q:100