I don't know if Armalyser can - but it's probably worth a try. Someone on the ROOL forums might know.Ah, that makes sense, thanks. I don't suppose there are any tools out there for auto-identifying ARMv7 incompatibilities? I don't recall ARMalyser advertising it.I suspect these errors are down to the fact that while it's 32bit clean (in the sense of working on the Iyonix), it's probably not ARMv7-clean. There's a bit more about that here: https://www.riscosopen.org/wiki/documen ... y%20primer
If you have a look at the "Networks" file, there's a mention of a "full site licence" version which doesn't check the machine ID. I'm working on the assumption that it's just a change in the licence data on the install disk, and not a full rebuild. (wishful thinking?)If you try the two branch mods I mentioned (in the post before my previous one) I expect you'll find it runs fine when moved across machines and running from the network with or without id chip (I'm fairly sure I ran it off an SMB share mounted with LanMan98 on the RPC). Do let me know if it doesn't.It seems like if we want to do network installations, there's more work to be done (or the network version may have had different protection code to the standalone version).
I've been poking at Inst_Kill's Runimage some more and found what I think is the code which either checks or generates the data in !Killer.!Sprites22.
There are two calls to OS_ReadSysInfo -- at BEB4 and C06C.
Both functions get the machine ID then call into C178, which seems to calculate the data which goes at the end of the !Killer !Sprites22 file, based on a bunch of stuff passed in via r0 thru r6.
R6 is that mystery "MSB in the unprotected byte is set" flag.
There is some logic which skips the machine ID readout - it seems to rely on the output of the function at 85BC, applied to the value at R12+0x24C, being nonzero. I'm trying to figure out what creates that condition.
Here's an example data block and some Python to decrypt at least the Machine ID portion:
Code:
xdat= bytearray.fromhex("59 E5 33 83 3A C5 3A C5 E5 14 8B 3A 8F ED 00 00")xkey= bytearray.fromhex("5A A5 00 00 3A C5 3A C5 C5 3A C5 3A A5 5A 00 00")odat = bytearray([x^y for x,y in zip(xdat, xkey)])print(odat.hex(' '))###Output:03 40 33 83 / 00 00 00 00 20 2e 4e 00 / 2a b7 00 00?? ?? ?? ?? / Machine ID / Overall checksum?[r0]
Code:
Installed in HostFS::$.kill_instEncrypted: 5B 94 38 F9 3A C5 3A C5 C5 3A C5 3A 0D DB 00 00Decrypted: 01 31 38 f9 00 00 00 00 00 00 00 00 a8 81 00 00Installed in HostFS::$.kill_insuEncrypted: 5B 94 C5 3A 3A C5 3A C5 C5 3A C5 3A 00 4B 00 00Decrypted: 01 31 c5 3a 00 00 00 00 00 00 00 00 a5 11 00 00
Statistics: Posted by philpem — Tue Dec 10, 2024 5:35 pm