Status update, sick as a dog with a bad cold so I've had nothing but time to play with this stuff.
I whipped up a perl script that analyses the stubs_entry.s files for an existing FW (103C) and a new FW(103B). It calculates any offset ranges and then iterates through the various files and updates any addresses it finds accordingly. Here's the output from an example run:
Analyzing 103c/stubs_entry.S and 103b/stubs_entry.S to determine offset ranges.
For addresses less than 0xFF87E5C8 no offset required
For addresses between 0xFF87E5C8 and 0xFF925848 add the offset: -80(0x50)
For addresses between 0xFF9358EC and 0xFFB0A224 add the offset: -444(0x1BC)
For addresses greater than 0xFFB0A224 use offset: -444 (0x1BC)
36 addresses updated in 103b/stubs_entry_2_with_offsets.S
24 addresses updated with offsets in 103b/boot.c_with_offsets
277 addresses updated with offsets in 103b/capt_seq.c_with_offsets
391 addresses updated with offsets in 103b/movie_rec.c_with_offsets
Compare these files to the originals in 103b/ and save as such if they look good
Looking at the modified addresses (including sub_ and loc_ tags) in my PRIMARY.BIN's dissassembly it seems to be working. If I'm on the right track I need to go through the offset files and find/fix any discrepancies.
You can see the script
here and the modified files (slightly renamed for easy diffing)
here. I also included my 103B PRIMARY.BIN with the modified files. waterwingz, you must have gotten that 103B file from somewhere else as I didn't upload mine until now. If someone could take a quick peek for a sanity check I'd be much obliged.
Hope everyone had/is having a great holiday!