Passing a 0 returns a null value, passing a 2 would return an Attack's RestoreType, passing a 4 would return an Item's RestoreType. Well, the game never passes it a 2. Attacks' RestoreType is pointless. Here's how it breaks down:
Outside of function:
0x6D9A4E
if (getRestoreType(4, ItemIndex) != -1) call some_sub(-1, -1, 15h)
0x6D9D37
if (getRestoreType(0, "Something") != -1) call some_sub(-1, -1, 15h)
long getRestoreType(int constant, int Index) { int tempRestoreType = 255; long returnValue = -1; if (constant == 4) { if (Index < 127) { tempRestoreType = ItemData(Index).RestoreType; } } elseif (constant == 2) { tempRestoreType = AttackData(Index + 72).RestoreType; //E.Skill Attack Indexes } if (tempRestoreType != 255) returnValue = tempRestoreType; return returnValue; }Then, after the function calls mentioned above, the returned value is checked against -1 and a sub is called. Thing is, the one that passes a 0 will always return a -1 so that one's worthless. The one that passes a 4 returns the item's RestoreType just fine, but doesn't seem to do anything with it once it has it. The sub that is called is sub_6D0AF9(-1, -1, 15h) with an unknown function. This is its code:
some_sub (long val1, long val2, byte offset) { *[0xDC2068 + offset] = 1; if (!(val1 = -1 || val2 = -1)) { *[0xDC3630 + offset * 98h] = val1; *[0xDC3630 + offset * 98h + 2] = val2; } *[0xDC3630 + offset * 98h + 8] = (([0xDC3630 + offset * 98h + 4] - val1) >> 1); *[0xDC3630 + offset * 98h + 10] = (([0xDC3630 + offset * 98h + 6] - offset * 98h) >> 1); *[0xDC3630 + offset * 98h + 12] = 2; *[0xDC3630 + offset * 98h + 14] = 2; call off_91E638[offset*4]; }For items, the offset will always be 15h so we can fill in the blanks and simplify:
some_sub (-1, -1, 15h) { *[0xDC207D] = 1; *[0xDC42B0] = (([0xDC42BC] + 1) >> 1); *[0xDC42B2] = (([0xDC42BE] - C78h) >> 1); *[0xDC42B4] = 2; *[0xDC42B6] = 2; call off_91E68C; }
off_91E68C is labeled as some system function "__initp_misc_winxfltr_88". I have no idea what that means. Winxfltr looks like some kind of error message library. The other addresses are part of a large set that I don't see any significance to in the code, but I'm sure there is one once the game is running.
That's all I have on this.
No comments:
Post a Comment