mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 11:26:18 -04:00
d5951c2b11
Normally, when they allocate a VagCmd, they do a bunch of stuff to clear all the status bits and reset things in particular the InitVAGCmd function does a lot ![image](https://github.com/open-goal/jak-project/assets/48171810/9b355020-ad37-496c-9438-2f8d34f24e0a) but for the stereo command, they do a lot less: ![image](https://github.com/open-goal/jak-project/assets/48171810/12a36712-0e68-4377-a6be-3bde82c2aa15) Which means that the new_stereo_command can just have random status bits left over from whatever the last user had. we seem to end up in a state where byte21 is set, and this causes everything else to be wrong and off-by-one dma transfer. My guess is that the original game avoided this bug due to lucky timing that I don't understand. I think the fix of just clearing byte21 is ok because there's no way that the old value of the byte is useful after the command is repurposed. |
||
---|---|---|
.. | ||
Interpreter.cpp | ||
Interpreter.h | ||
Object.cpp | ||
Object.h | ||
ParseHelpers.cpp | ||
ParseHelpers.h | ||
PrettyPrinter.cpp | ||
PrettyPrinter.h | ||
PrettyPrinter2.cpp | ||
PrettyPrinter2.h | ||
Printer.cpp | ||
Printer.h | ||
Reader.cpp | ||
Reader.h | ||
TextDB.cpp | ||
TextDB.h |