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)
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
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.
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.
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
@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.
You should add a feature to set a byte to a specific value.
@chungus_is_gay Is there a way you'd like to change the value of a byte that is not already implemented?
Watched the video . Very cool. Keep up the great work you do.
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.
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...
@Krystman Are you aware that every known behavior (so far) of every memory byte is documented on the wiki?
@StinkerB06 LOL do you think I got the descriptions by somehow figuring it myself?! XD
[Please log in to post a comment]