Log In  

Cart #memsplore-4 | 2022-12-21 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA


I made this little tool to visualize and edit PICO-8's memory. The app has 3 modes

(From Right to Left)

  • LIST MODE - Shows addresses in a list. Parses the content of the memory as decimal, hexadecimal and binary numbers. Also renders the value as a character.
  • HEX MODE - Shows addresses as hexadecimal numbers with 6 entries in each row. Also renders the values as a line of pixels.
  • DOT MODE - Shows addresses as sequence of dots with 8 entries in each row. Unlike the other two modes this doesn't allow you to edit the numbers and is only for visualization purposes.

In addition each mode has two tools to find a specific address:

  • MAP - Shows a simplified map of the memory. It's a pattern of boxes. Each box represents 32 bytes. Clicking on a box will jump to that address. The shortcut is M.
  • JUMP - Allows you to enter a hexadecimal address directly. The shortcut is J.

Let me know if there are some errors. Let me also know if there are any features that you'd really love to have.

(Tilemap contains a partial artwork originally by @johanvinet)

Change Log:

0.0.1 - Initial Release
0.0.2 - Added description to button mapping (0x5F4C - 0x5F53). Tweaked description to 0x5F33 and 0x5F34.
0.0.3 - Added new addresses for the 0.2.2 release - Custom Font and Print Attributes. Fixed a bug where random beeps would be heard in list mode. Splash screen now only shows up once a day.
0.0.4 - Updated for 0.2.4
0.2.5e - Changed Version numbering to match the Pico-8 version

P#80908 2020-08-18 08:13 ( Edited 2022-12-21 12:59)


P#80934 2020-08-18 22:20

Actually, the fill-pattern transparency is at 0x5F33, and 0x5F34 is a switch for enabling extended fill-pattern bits within the color value (which is documented in the manual). Also, 0x5F4C...0x5F53 holds the button states for the 8 players.

P#80946 2020-08-19 07:42

@StinkerB06 Thanks! Updated the description.

P#80953 2020-08-19 14:35

Cool 👍

P#80981 2020-08-20 18:09

Looks pretty good! I'd have an use for your tool. Actually, I have an idea for a feature for your viewer. If there's a way to have a resident program in the pause menu or to make a light version to easily bundle your tool in another one for debugging process, that'd be pretty cool.

P#81090 2020-08-23 19:38

Im actually pretty new to here and programming in general, so im sorry if this sounds stupid, but i dont really get how this works or what is its purpose. Does it actually modify your pico 8? if so, then how long do the effects last? until you reboot it? Btw im loving the community :D

P#81358 2020-08-30 05:29 ( Edited 2020-08-30 05:30)

@Eiyeron It's not really in the cards to make it that portable, I think.

@Mr. Human Working on a tutorial. But to answer you questions: Modifying memory modifies your current cart. Things like sprirtes, sound effects or screen content. The effect lasts only until you quit the program. With this tool you can explore and experiment in a convenient and visually transparent way.

P#81395 2020-08-31 13:17

@Krystman Thanks! :D

P#81406 2020-08-31 17:52

P#81438 2020-09-02 09:08

Nice video and great job on the tool

P#81441 2020-09-02 11:23

You should add a feature to set a byte to a specific value.

P#82401 2020-09-28 15:11

@chungus_is_gay Is there a way you'd like to change the value of a byte that is not already implemented?

P#82403 2020-09-28 16:50

Watched the video . Very cool. Keep up the great work you do.

P#86484 2021-01-15 14:18

New version for the 0.2.2 release. Added new addresses. Fixed some issues.

P#88561 2021-03-05 03:17

0x5F36 is a byte that controls miscellaneous "chipset features" such as disabling sprite 0's transparency in map/tline, and switching in a normally-hidden 32K RAM block at 0x8000 to 0xFFFF.

0x5F2E now contains additional bits for persisting more things than just the draw and display palettes, such as fill pattern settings, print attributes, etc.

P#90929 2021-04-22 09:40

Updated for 0.2.4!

@StinkerB06 The addresses are flagged in the current version. But your descriptions are more detailed. I guess I should maybe consider some kind of Wikipedia feature for more in-depth descriptions. Hm...

P#104705 2022-01-10 02:26 ( Edited 2022-01-10 02:26)

@Krystman Are you aware that every known behavior (so far) of every memory byte is documented on the wiki?

P#104708 2022-01-10 02:46

@StinkerB06 LOL do you think I got the descriptions by somehow figuring it myself?! XD

P#104712 2022-01-10 03:04

i tried poking values into 0x5f2c and found these screen effects:
(i tried every number from 0 to 255)

1/65: wide pixels
2/66: tall pixels
3/67: chunky pixels (wide and tall)
5/69: horizontal mirror
6/70: vertical mirror
7/71: horizontal and vertical mirror
129/193: flip horizontal
130/194: flip vertical
131/195: flip horizontal and vertical
133/197: rotate 90 degrees
134/198: rotate 180 degrees
135/199: rotate 270 degrees

other values do not affect the screen

and dot mode in the editor is quite slow

P#129533 2023-05-08 19:45 ( Edited 2023-10-11 13:20)

I found an unused game scene in the spritesheet.
Why is it there?

P#131276 2023-06-23 18:51
P#131277 2023-06-23 19:12 ( Edited 2023-06-23 19:12)

How about adding a new video view where the entire memory is represented as a 512x128 image ? (icon a 2x8 pixels rectangle, or a less accurate 2x6 to keep the interface clean) You'd be able to view the sprite sheet at the top, and the screen at the bottom (might be a little trippy). The actual drawing of the data window would be done in just a single memcpy.
Instead of having a scroll bar that would obscure a part of the screen, simply drag the four screens tall image with the mouse.

P#137426 2023-11-14 14:17

[Please log in to post a comment]