re: g.i.joe: ugh. I spent nearly all day one this one. and a few hours the day before... gonna can it for now before I get burnt out.
What I learned though:
I think the problem is in k056832.cpp, and it seems like the same or similar problem to mtlchamp, where certain tilemaps are covering up things that shouldn't be covered up. like they aren't properly disabling, or being transparent. in gijoe, (K056832ReadRegister(0x14) == 2) when things get screwy. Seems like leftover tilemaps from the previous scene are being erraneously enabled on the next scene. (fast forward to the elevator scene and the 2nd one after it to see)
Regarding the lockups in gi.joe, there's probably a memory overwrite in k056832.cpp or something or one of the other konami customs, and it may even be related to the problem above. arm gets a freezeup, x86 gets screwy tilemaps. seems fair, eh?
If you have any tools to validate variables/memory etc, and think they might help, please try. I know this old p4 running winxp is probably no use for that kinda stuff. iirc there is a commandline for gcc on linux that does this, but I honestly can't remember what the name is/was. it had to do with checking memory overruns/out of bounds/mem validation. anyone remember this?
best regards,
- dink