RPDak [Lexaloffle Blog Feed]https://www.lexaloffle.com/bbs/?uid=66637 Using MSET and MGET under certain circumstances can corrupt graphics data <p>In two separate projects I've used fetch() to grab a secondary map file, and then used mset/mget to get/set tiles on that file and the default 0.map file, which has caused the graphics and map data to corrupt permanently in some way.</p> <h3>1. Short Circuit</h3> <p>I used Picotron to make a game for the GMTK Game Jam called <a href="https://rpdak.itch.io/short-circuit">Short Circuit</a>. In it, I draw walls in the map editor with a basic sprite and then use a function during runtime to replace these sprites with ones that are shifted upward to look 3D:<br /> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/66637/map_1.png" alt="" /><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/66637/robocar_3.png" alt="" /><br /> Multiple times during this jam I would suddenly get an &quot;Out of Memory&quot; error when trying to run my cart even though it was fine for the past couple hours. I would reset Picotron, and suddenly all my sprite data for the cart would be empty (even if I opened it externally), and my map files would be empty and broken. Upon trying to launch the game I would get this error:</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/66637/picotron error.png" alt="" /> <p>I made new map files and redrew my sprites, and then I set up version control. This happened around 4-5 times during my 4 day development period, so I knew something was seriously wrong with my cart, but I didn't have time to diagnose it. I am now a bit more certain that the culprit is my use of MSET and MGET (or its Picotron equivalents) because of my other project.</p> <h3>2. Roguelike Map Generator</h3> <p>Currently I am working on a randomized map generator for a roguelike. I created two carts: </p> <ul> <li>One that generates a layout of connected rooms, storing their positions, height, and width.</li> <li>Another that takes that list of parameters and generates each room by taking pre-made layouts from an atlas map file (TILES.map) with MGET, and then using MSET to put them onto the main map file (0.map).</li> </ul> <p>Each of these carts work on their own individually, but when I integrated them together into the same cart and ran it a couple times, it corrupted something so that Picotron crashes when I open the Map workspace:</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/66637/picotronmapcrash.gif" alt="" /> <p>I investigated a bit and this is what I found:</p> <ul> <li>Loading the cart, closing the Map workspace, reopening it, and then opening JUST 0.map will NOT crash Picotron.</li> <li>Starting a new cart and then opening TILES.map by navigating to it through the file explorer will NOT crash Picotron (and the file is intact, all of the tiles are there).</li> <li>Loading the cart, closing the Map workspace, reopening it, and then opening TILES.map DOES crash Picotron.</li> </ul> <p>This would suggest that doing fetch(&quot;TILES.MAP&quot;) and then using MGET on that file is messing it up somehow. HOWEVER, there's a wrench this theory. Remember I said that the two halves of this Map generator worked on their own individual carts. I am using the EXACT same code to copy and paste tiles in both carts, and only one of them crashes. The only difference is that in the one that works, 0.map is set to 100x100 tiles so that I could test generating rooms of different sizes, whereas the other cart has the default 32x32 map size (and I accidentally tried to generate a map that was too big for that). THAT would suggest that trying to MSET tiles out of bounds is the issue instead. Although maybe that's just jumping to conclusions.</p> <p>Between that info and what happened with Short Circuit, I don't have much of a clue what's happening. All I know is that my use of MSET/MGET seems to be corrupting the graphics data of my cart somehow. It was suggested to me that the problem could be related to the known problem with FETCH/STORE in this version so I wanted to make sure to mention my use of it here, although I am not using STORE at all. Only FETCH.</p> <p>I can provide the corrupted roguelike cart if that is of interest. I don't have a corrupted version of Short Circuit since I kept reverting due to the deadline, but I could provide the working version if it would help.</p> https://www.lexaloffle.com/bbs/?tid=150930 https://www.lexaloffle.com/bbs/?tid=150930 Tue, 12 Aug 2025 21:19:53 UTC Dak's Simple Volume Changer <p> <table><tr><td> <a href="/bbs/?pid=171202#p"> <img src="/bbs/thumbs/pico8_volume_changer-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=171202#p"> volume_changer</a><br><br> by <a href="/bbs/?uid=66637"> RPDak</a> <br><br><br> <a href="/bbs/?pid=171202#p"> [Click to Play]</a> </td></tr></table> </p> <p>A simplistic program that can change the volumes of songs and sfx, so that you don't have to manually change each note.</p> <p>During my last project I found some of the pre-made music I chose was either too loud and conflicting with my sound effects, or too quiet. This was a tool I made for myself to help shift the volume of entire songs so that volume mixing was a bit easier. It's a very simple program, nothing special, but hopefully it helps someone else in the same way.</p> <p><strong>If you run into any glitches or issues, please do let me know!</strong></p> <p><img loading="lazy" style="margin-bottom:16px" border=0 src="/media/66637/daks simple volume changer_0.png" alt="" /> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/66637/daks simple volume changer_1.png" alt="" /></p> <h2>Instructions:</h2> <p>Download the cart, put it in the same folder as your other carts, and open it in the desktop Pico-8 client. In the code, type the name of the cartridge with the audio you're trying to edit (file extension included) as a string in the &quot;fn&quot; variable and run the cartridge.</p> <p><strong>Left and Right Arrow Keys: Change song/sound<br /> Up and Down Arrow: Increase/Decrease Volume<br /> Z(Hold): Export all songs/sfx<br /> X(In SFX Mode): Play sound</strong></p> <h3>Automatic Mode:</h3> <p>By default, just running the cart should automatically recognize your songs, divide them up, and play them. After you have adjusted the volume to your liking, holding Z will export the changes you made directly to the cartridge you are editing.<br /> If the program isn't making a song loud enough and you think increasing the maximum possible volume percentage would help, the UPPER_VOL_LIMIT variable controls that value, so feel free to mess with it.</p> <h2>DISCLAIMER</h2> <p>&quot;Exporting&quot; is pushing ALL the changes you made to every song, NOT just the currently selected song.<br /> Additionally, changes you make to the target cartridge can be permanent, so I advise you edit a copy of your target cartridge rather than the original!</p> <h3>Manual Mode:</h3> <p>Typing pattern IDs into the MUSIC_PATTERNS table before running the program will make it read only the songs starting at those IDs. You can use this to narrow down which songs are available for editing as a quality of life option, or use it to force a song to start from a certain pattern in the event that the automatic song finder is incorrect.<br /> Example: MUSIC_PATTERNS = {0,5,14,etc.}</p> <h3>SFX Mode:</h3> <p>Typing SFX IDs into the MUSIC_SFX table before running the program will put it into SFX Mode. In this mode you will be able to edit only the specific SFX that you typed into the table. Press the X key to play the selected sound and use the up and down arrow keys to shift its volume as usual.<br /> Example: MUSIC_SFX = {8,9,12,etc.}</p> <h3>Feel Free to Use This However You Want:</h3> <p>This ones under the default CC license as usual, so do with it as you please. I tried to comment what each function I wrote does, so hopefully that will help you pick it apart if need be. I don't currently plan on expanding this really at all. It was just something I already made for myself to use that I cleaned up and added a visual UI to. If, however, there are any other things you think a tool could help with, or an extra functionality I should add to this, let me know! No promises, but I might circle back around to it. I intended to include the ability to change the volume of pattern channels individually, but it got very messy and I would need to rewrite a lot of stuff so I put that on the back burner.<br /> Anyways, enough rambling, thanks for reading this and checking out the tool!</p> https://www.lexaloffle.com/bbs/?tid=150596 https://www.lexaloffle.com/bbs/?tid=150596 Tue, 29 Jul 2025 16:09:19 UTC Goldy Blocks Inc. <p> <table><tr><td> <a href="/bbs/?pid=169921#p"> <img src="/bbs/thumbs/pico8_goldyblocksinc-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=169921#p"> goldyblocksinc</a><br><br> by <a href="/bbs/?uid=66637"> RPDak</a> <br><br><br> <a href="/bbs/?pid=169921#p"> [Click to Play]</a> </td></tr></table> <br /> This salesman may be shady, but a deal's a deal. Help him create golems out of pure Living Gold! </p> <h3>Music by:</h3> <p><a href="https://packbat.itch.io/"><strong>- The Packbats</strong></a><br /> <a href="https://gruber99.bandcamp.com/"><strong>- Gruber</strong></a><br /> <a href="https://fettuccini.itch.io/"><strong>- Fettuccini</strong></a></p> <p>Check them out clicking their names!</p> <h3>Controls and Rules:</h3> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/66637/pico 8 control legend TRANS.png" alt="" /> <p>Builder:<br /> <strong>&uarr; &darr; &larr; &rarr;</strong> Move Block<br /> <strong>X</strong> Export Block<br /> <strong>Z</strong> View Map</p> <p>Stacker:<br /> <strong>&uarr; &darr; &larr; &rarr;</strong> Move Block</p> <p>Reset the current level and turn screen-shake on and off in the pause menu!</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/66637/PICO-8_6.gif" alt="" /> <h3>Build and Stack!</h3> <p>These babies are made to order, so pay close attention to that blueprint before ya start stackin'!<br /> You have 30 seconds to put together a piece. After that you must let it drop onto the truck bed, whether you're ready or not...<br /> You're ranked on your performance, so give it your all! Some say more... lucrative... opportunities open up if you get all S-Ranks... Getting an average of A or above will also give you the code to enter Overtime Mode, so pay attention!</p> <img loading="lazy" style="margin-bottom:16px" border=0 src="/media/66637/5_PICO-8_4.gif" alt="" /> <h3>Thanks for Playing!</h3> <p>I appreciate you checking out my second Pico-8 game! I put a lot of work into it, developed tools for it, and damn near made it too big to fit into a single cart, so I hope you enjoy!<br /> Speaking of tools: I ended up creating a cart that can change the volume of entire songs, which was a major pain. So if you're reading this and it seems like something you'd be interested in, let me know. It's relatively primitive, but if it'll save someone a lot of trouble volume-mixing their game, then I'll clean it up a bit and post it! Anyways, thank you for playing!</p> <h3>License Info:</h3> <p>I purposefully did not put this cart under a creative commons license because I intend to keep using my salesman character in other things and didn't want to put him under the same license. Outside of that, however, feel free to use or remix my sprites for your own project. If it is commercial I would appreciate if you ask first, but otherwise go for it!</p> <p>Music is the only thing in this project I did not make and is therefore subject to the licenses of the individual creators:</p> <p>The tracks made by the Packbats (Main Menu, Tutorial, World 1, World 2) are under the <a href="https://firstdonoharm.dev/version/3/0/eco-law-media-mil-sv.html">Hippocratic License 3.0-ECO-LAW-MEDIA-MIL-SV</a>.</p> <p>The tracks made by Gruber and Fettuccini (World 3, World 4, End Screen Variant 1, End Screen Variant 2) are under the Creative Commons CC BY-NC-SA 4.0 license.</p> https://www.lexaloffle.com/bbs/?tid=150132 https://www.lexaloffle.com/bbs/?tid=150132 Tue, 08 Jul 2025 05:26:43 UTC Tower of Medusa 1.0 <p> <table><tr><td> <a href="/bbs/?pid=112786#p"> <img src="/bbs/thumbs/pico8_towerofmedusa-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=112786#p"> Tower of Medusa 1.0</a><br><br> by <a href="/bbs/?uid=66637"> RPDak</a> <br><br><br> <a href="/bbs/?pid=112786#p"> [Click to Play]</a> </td></tr></table> </p> <p>My first pico-8 game:<br /> A mini block-based puzzle platformer!</p> <p>Music by Robby Duguay.</p> <p>Controls:<br /> Arrow Keys Left/Right: Move<br /> Z: Jump<br /> X (Hold): Shoot snake.</p> https://www.lexaloffle.com/bbs/?tid=48048 https://www.lexaloffle.com/bbs/?tid=48048 Mon, 06 Jun 2022 12:00:55 UTC