Skip to content

Commit 05a1bd9

Browse files
committed
Update Zelda64Overlay.java
1 parent 7c254a0 commit 05a1bd9

1 file changed

Lines changed: 8 additions & 6 deletions

File tree

src/main/java/zelda64/Zelda64Overlay.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)