06-22-2014, 04:49 PM
So I came upon the TCRF article about SMB1. One section in particular claimed that Lakitu is supposed to thrown Spinies diagonally depending on various variables, but due to a bug, this never happens. They also included a patch that "fixes" the issue.
I've tested the patch, and it changes a total of 12 bytes in ROM without touching anything else. At least in world 4-1, Lakitu does end up throwing Spinies diagonally when Mario runs to the right.
However, I am not able to verify what the patch actually does. The discussion subpage suggest that it's supposed to swap some assembly instructions so that one of variables isn't overwritten before use. The bytes themselves are definitely not "swapped", but this could be caused by instructions depending on instruction position relative addressing - and instructions shown seem to rely on labels a lot.
Even if I had verified that patch does what it says it does, I have no idea how to source it - since open wikis are apparently prohibited.
Note: if the patch breaks level design (and it does seem to make 4-1 easier), this does not mean it doesn't restore initially intended behavior. Devs could just make levels with the bug in mind.
I've tested the patch, and it changes a total of 12 bytes in ROM without touching anything else. At least in world 4-1, Lakitu does end up throwing Spinies diagonally when Mario runs to the right.
However, I am not able to verify what the patch actually does. The discussion subpage suggest that it's supposed to swap some assembly instructions so that one of variables isn't overwritten before use. The bytes themselves are definitely not "swapped", but this could be caused by instructions depending on instruction position relative addressing - and instructions shown seem to rely on labels a lot.
Even if I had verified that patch does what it says it does, I have no idea how to source it - since open wikis are apparently prohibited.
Note: if the patch breaks level design (and it does seem to make 4-1 easier), this does not mean it doesn't restore initially intended behavior. Devs could just make levels with the bug in mind.