What is Your Git Workflow When Reverse Engineering Games?
Posted: Sun Nov 15, 2020 1:20 pm
Once I've disassembled a game and successfully re-assembled it, I'm no longer sure what the best git workflow is. In an ordinary project taking the common "feature branch" approach makes sense once you've got the essence of your project committed to code. But, reverse engineering games to maintainable source code does not work that way in my experience.
If you're adding features you've already completed through disassembly of the game and understand its ins and outs. Fixing bugs or adding a feature the original designers didn't have time to implement before going to market, e.g, high scores is the tail end of the process.
At the point you have your initial re-assembly working it's likely that you still have whole segments of .byte $nn sleds because the exact boundary between data and instructions is not (yet) clear. The process of going from minimal re-assembly to fully commented code isn't exactly linear the way I thought it would be. Yes, you start with a known vector and work your way though it. You may not fully understand the code on first pass either due to (a) deficiencies in your understanding of assembly or, just as likely, (b) the code is incomprehensible without more context elsewhere in the code. There is also the dreaded option (c) non-obvious junk bytes that are neither data nor code that somehow make it into the final product.
None of this lends itself to an obvious git workflow. What is your approach?
If you're adding features you've already completed through disassembly of the game and understand its ins and outs. Fixing bugs or adding a feature the original designers didn't have time to implement before going to market, e.g, high scores is the tail end of the process.
At the point you have your initial re-assembly working it's likely that you still have whole segments of .byte $nn sleds because the exact boundary between data and instructions is not (yet) clear. The process of going from minimal re-assembly to fully commented code isn't exactly linear the way I thought it would be. Yes, you start with a known vector and work your way though it. You may not fully understand the code on first pass either due to (a) deficiencies in your understanding of assembly or, just as likely, (b) the code is incomprehensible without more context elsewhere in the code. There is also the dreaded option (c) non-obvious junk bytes that are neither data nor code that somehow make it into the final product.
None of this lends itself to an obvious git workflow. What is your approach?