@@ -35,12 +35,13 @@ public Zelda64Overlay(byte[] data) {
3535 mEntries [i ] = buff .getInt () & 0xFFFFFFFFl ;
3636 }
3737
38- private void AddRelocEntry (FlatProgramAPI api , ByteBuffer buff , int type , long relocAddr , long ram , long fixed ) {
38+ private void AddRelocEntry (FlatProgramAPI api , ByteBuffer buff , int type , long relocAddr , long ram , long fixed ,
39+ long entry ) {
3940 int off = (int ) (relocAddr - ram );
4041 buff .position (off );
4142 byte origBytes [] = new byte [4 ];
4243 buff .get (origBytes );
43- api .getCurrentProgram ().getRelocationTable ().add (api .toAddr (relocAddr ), type , new long [] { fixed }, origBytes ,
44+ api .getCurrentProgram ().getRelocationTable ().add (api .toAddr (relocAddr ), type , new long [] { entry }, origBytes ,
4445 null );
4546
4647 buff .position (off );
@@ -74,12 +75,12 @@ public void PerformRelocation(FlatProgramAPI api, long ram, long vram) {
7475 if (type == 2 ) // raw pointers
7576 {
7677 if ((ins & 0xf000000 ) == 0 ) {
77- AddRelocEntry (api , buff , type , relocAddr , ram , (ins - vram ) + ram );
78+ AddRelocEntry (api , buff , type , relocAddr , ram , (ins - vram ) + ram , mEntries [ i ] );
7879 }
7980 } else if (type == 4 ) // e.g. jal
8081 {
8182 var reloc = ins & 0xfc000000 | (ram + (((ins & 0x3ffffff ) << 2 | 0x80000000 ) - vram ) & 0xfffffff ) >> 2 ;
82- AddRelocEntry (api , buff , type , relocAddr , ram , reloc );
83+ AddRelocEntry (api , buff , type , relocAddr , ram , reloc , mEntries [ i ] );
8384
8485 } else if (type == 5 ) // e.g. lui at, 0x8080 | (0x3C01 8080)
8586 {
@@ -97,8 +98,9 @@ public void PerformRelocation(FlatProgramAPI api, long ram, long vram) {
9798 var reloc = (ptr - vram ) + ram ;
9899
99100 AddRelocEntry (api , buff , 5 , prevAddr , ram ,
100- ((prevIns & 0xFFFF0000 ) | (reloc >> 0x10 )) + (((reloc & 0x8000 ) != 0 ) ? 1 : 0 ));
101- AddRelocEntry (api , buff , 6 , relocAddr , ram , ins & 0xFFFF0000 | reloc & 0xFFFF );
101+ ((prevIns & 0xFFFF0000 ) | (reloc >> 0x10 )) + (((reloc & 0x8000 ) != 0 ) ? 1 : 0 ),
102+ mEntries [i ]);
103+ AddRelocEntry (api , buff , 6 , relocAddr , ram , ins & 0xFFFF0000 | reloc & 0xFFFF , mEntries [i ]);
102104 }
103105 }
104106 }
0 commit comments