All my code changes additions are between 338f28 - 340008. However these are dozens of changes in the rest of the firmware to branch the old code to run the new additions. You will need to diff the stock type C with v7.7 Type C, to see all these changes and do the equivalent. But this will be hard for D units, as the changes in the base firmware are more extensive.
This is the first code change in Type C. The is a replace a jal (jump) call with a nop. In type A-C "5800020C" is jal 0x80160 (console print), yet in type D the console print is "1803020C" jal 0x80c60. This first change is at 0x1d430. So everything has moved around.
The next big issue, some of my code additions was written directly in MIPS assembly, not C code. These change assumed things like the console print was jal 0x80160. I don't know what other assumptions I've have made. Otherwise I've attempted to make the added code device type aware.
At offset 0x340000 is the device type C=3, D will be 4, followed by the address of the NVM (you will have to find that.)
My code uses these fields.
Also attached are my incomplete firmware change notes. These has the offset for changes for A/B/C, and reason for the change. There are some really tricky changes regarding the framebuffer offsets, to support the large frames, done so long ago, I hope Type D is similar.
Do a bit a time, so when it breaks. Ask questions as needed.
This is the first code change in Type C. The is a replace a jal (jump) call with a nop. In type A-C "5800020C" is jal 0x80160 (console print), yet in type D the console print is "1803020C" jal 0x80c60. This first change is at 0x1d430. So everything has moved around.
The next big issue, some of my code additions was written directly in MIPS assembly, not C code. These change assumed things like the console print was jal 0x80160. I don't know what other assumptions I've have made. Otherwise I've attempted to make the added code device type aware.
At offset 0x340000 is the device type C=3, D will be 4, followed by the address of the NVM (you will have to find that.)
My code uses these fields.
Also attached are my incomplete firmware change notes. These has the offset for changes for A/B/C, and reason for the change. There are some really tricky changes regarding the framebuffer offsets, to support the large frames, done so long ago, I hope Type D is similar.
Do a bit a time, so when it breaks. Ask questions as needed.