I've had a very hard time reproducing the exact minimal steps to cause this crash, so I'm just going to post the cart and steps to cause the crash and hope this is useful enough to track it down.
The bug does not occur on PICO-8 desktop, only on the BBS/webplayer.
It seems to be tied to remapping draw ops / spritesheet to highmem with either of the two lines:
poke(0x5f55,0x80) poke(0x5f54,0x80) |
But these alone do not seem to be enough to cause the crash. Here it is occurring in a cart I am currently working on:
Steps:
-
Either:
-- Press Z/C to attack right as the cart has loaded
-- Crash -
Or:
-- Move a full screen or two rightward (X is jump, press twice to doublejump)
-- Press Z/C to attack
-- Witness graphical glitch (background changes) but no crash
-- Break a crate by jumping on top, into bottom, or attacking into side
-- Crash
@pancelor helped me reduce much of the code that doesn't seem to be related to the crash.
The steps to produce the crash are slightly different for his version (listed below).
Here are his notes:
I ran some experiments; see https://www.lexaloffle.com/bbs/cart_info.php?cid=wesefahesi-10 (the smallest one I found) I don't have any grand conclusions, but here are some things I noticed: the background suddenly changes when its about to crash (only visible on web - doesn't happen locally (0.2.6b linux)) the extcmd("rec") seems not relevant to the bug getting rid of the icles array makes the bug present differently -- a crash with a stack trace versus a forever hang. very odd the behavior of the various versions I uploaded, all of these on firefox: 5 - Z, enable, Z => crash (overflow in ffox console) 6 - enable, Z, disable, Z => hang forever (no stack trace) 7 - same as 6 8 - same as 6 9 - same as 6 10 - same as 5 11 - same as 6 (they all acted normally on my local machine) |
Steps:
-- Press P/Enter to open pause menu
-- Select "Remap: false" and press any button to toggle and close menu
-- Press Z/C to attack
-- Crash
Interestingly in his version, the crash may not occur right away and indeed seems to occur after some amount of time directly related to overall runtime has passed. That is to say, if you do it right away you should get a crash on the first attack, but if the cart has been running for some time already, the crash may not occur for some time.
I hope this is enough to go on to dig into this bug. I'm ready to prepare an alpha version of my project to share with others and I would love to do so via the BBS!
Thanks for reading!
[Please log in to post a comment]