From: Vincent R. <vin...@fr...> - 2025-01-08 01:21:29
|
On 04/01/2025 at 11:55, Thorsten Otto via Freemint-discuss wrote: > While trying to identify some more functions from aes/desktop, i also > noticed that there are some strange differences if the location of > functions, for example gem_main: > > > - in fr: gem_main fd9362 > > - in de: gem_main fd902a > > - in us: gem_main fd9340 Oh. > In TOS 1.04 and later, such addresses typically only differ by a few bytes, > caused by different handling of alt-keys in the bios. But in this case, they > differ by more than 800 bytes. So, given the different dates of the ROMs, i > wonder whether language versions like de/fr were maybe already compiled from > slightly newer versions of the code? Possible. > Also, it seems that TOS 1.00 was more close to the original DRI sources. Eg. > the first thing in gem_main is a function call, which seems to be > "ini_dlong" from the DRI sources. In 1.04, that function was "inlined" into > gem_main. Indeed, I tried to understand gem_main(), but it didn't match the 1.04 source. You found the reason. > PS: even worse, addresses of some variables seem to be different: Oh. This is interesting to know, in case someone wants to do something with those private variables. Starting from debugging. > So maybe it would have been better to start with the US version? Certainly. But as I started with the French version, and I already had done some amount of work, then I continued. Note that Ghidra supports applying the disassembly markup (labels, etc...) to newer or older version of the target software. As I understood, it should be able automatically find code similarities. However, I haven't tested that feature. Without relocation table, I'm not sure if it could do that with different TOS ROMs. That feature is called "version tracking", and it can be enabled from the Ghidra Project Manager window (NOT the CodeBrowser). -- Vincent Rivière |