HyperHacker wrote:
What I meant with the zero lines is can't you use a fill or slide instead?
They were there for memory spacing purposes, so putting them in a slider would defeat the purpose.
I rearranged the memory to get rid of that dependency, though.
Edit: apparently even the versions of the code tailored to be debugged in No$GBA, which ran perfectly fine, also don't work with the TT plugged in.
Fuck you Datel. I'm gonna go play Halo.
Edit: Here is the version made especially for Metroid Prime: Hunters that is tested and working. It's very inefficient space-wise, since it doesn't execute from the TT area. Executing from the TT area is not the problem, and the only other controversial difference between the codes is the hook used (one hooks from the game execution and the other hooks from the AR handler). I made sure both hooks were flawless, so really, I have no idea why this version is the only one that works.52000000 00000000
E2000000 00000348
EA000059 E59AB020
E59A8004 E59F0330
E9207FFE E59F10CC
E3510000 0A000008
E59F20DC E4923004
E5924000 E5935000
E59F60C4 E3C5520F
E1550006 05834000
EA000025 E59F1098
E2811001 E211103F
E58F108C 1A000020
E59F60A4 E4963004
E3530000 0A000007
E5964000 E3540000
0A000004 E5935000
E59F107C E3C5520F
E1550001 05834000
E59F105C E59F3060
E59F4060 E59F5054
E1510005 0A00000E
E4912004 E0022003
E1520004 1AFFFFF9
E2415004 E59F6048
E4865004 E58F1278
E5955000 E5865000
E59F602C E205520F
E0255006 E5015004
E58F100C E8B07FFE
E59FF018 00000000
00000000 0213EE80 //Replace 0x213EE80 with Search Start
02400000 0C500000 //Replace 0x2400000 with Search End and 0xC500000 with Instruction Mask
04100000 03A0F402 //Replace 0x4100000 with Instruction Check
020483A4 02000108
00000000 00000000
E353000F 05914000
02844008 0A000005
E3530000 059D4000
0A000002 E2433001
E1A03103 E7904003
E12FFF1E E2023A0F
E1A03623 E3530000
01A0600D 0A000005
E353000F 059F61E4
0A000002 E2433001
E1A06103 E0866000
E12FFF1E E92D0001
E59F01CC E9207FFE
E51F107C E5912004
E202380F E1A03823
EBFFFFE0 E2123301
0A000036 E2123401
0A000018 E2123402
03A05A01 02455001
00025005 0A000010
E202300F E1A05004
EBFFFFD4 E1A06005
E1A05004 E1A04006
E2023D3E E1A063A3
E2023060 E3530000
01A05615 E3530020
01A05635 E3530040
01A05655 E3530060
01A05675 E2123502
00444005 10844005
E59F5130 EBFFFFCC
E2123501 03C44003
03C55003 1A00000A
E51F3128 E2133601
15947000 15867000
1A000032 E5967000
E59F8108 E1560008
0287700C E5847000
EA00002C E51F3154
E2133601 15D47000
15C67000 1A000027
E5D67000 E59F80DC
E1560008 0287700C
E5C47000 EA000021
E2123401 0A000011
E2123501 13A05A01
12455001 13C550F0
10025005 11A06225
13C55C0F 10855006
1A000005 E202300F
E1A05004 EBFFFF99
E1A06005 E1A05004
E1A04006 E2123502
00444005 10844005
E59F5070 E3C44001
E3C55001 EBFFFF9A
E51F31E0 E2133601
11D470B0 11C670B0
1A000004 E1D670B0
E59F8050 E1560008
0287700C E1C470B0
E1540005 1A00000A
E3E06000 E50F6224
E59D1000 E5801038
E59F1024 E5801074
E8B07FFE E280003C
E28DD004 E9207FFE
E240003C E8B07FFE
E8BD0001 E59FF000
0214C7CC 00000000 //Replace 0x214C7CC with Access Address
0200033C 02000380
D2000000 00000000
520483A0 E59A8004
0204839C E51FF004
020483A0 02000004
D2000000 00000000
Edit: Apparently killing the write that stores over opcodes makes the program run fine, but then of course, its purpose is moot. The problem seems to lie in the debugging routine itself. The branch at 0x8800000 that is breached by the mov pc, #0x8800000 instructions cast throughout the RAM isn't causing the crash (I confirmed this just now), but the mov pc, #0x8800000 instruction itself might be the problem. It seems HyperHacker's mention about the legality of the execution in the TT had more substance to it than I thought. Since the AR hook is meant for the TT to begin with, of course it works for linking to the algorithm. However, the mov pc, #0x8800000 instructions don't seem to have that privilege, because algorithmically, accessing the TT for execution instead of RAM is the only difference between the code that works and the one that doesn't. It seems No$GBA isn't properly emulating the validation procedure that occurs when jumping to Slot 2.
So then, does anyone have any ideas?
Edit: I've confirmed that using mov pc, #0x8800000 just plain won't work. It may have access, but it might be considering 0x8800000 to be a mirror of 0x8000000 and then executing the wrong thing.
Isn't that just dandy. v_v