620 lines
16 KiB
Text
620 lines
16 KiB
Text
|
|
/* synthesized appendix for HOVER */
|
|
/* sparse lines above preserve recovered debugger line numbers where available */
|
|
|
|
/* ===== slot 0x20 slot_20 ===== */
|
|
function hover_slot_20() /* entry=457 class_id=0x0A0B slot=0x20 */
|
|
{
|
|
set_info(1, 0);
|
|
local_19 = arg_0A;
|
|
local_1B = Item.getX(local_19);
|
|
local_1D = Item.getY(local_19);
|
|
local_1E = Item.getZ(local_19);
|
|
FREE.slot_48((arg_0C - local_1B));
|
|
local_20 = retval;
|
|
FREE.slot_48((arg_0E - local_1D));
|
|
local_22 = retval;
|
|
FREE.slot_48((arg_10 - local_1E));
|
|
local_24 = retval;
|
|
if ((local_20 <= local_22) && (local_20 > local_24)) {
|
|
/* word_to_dword */
|
|
local_40 = local_20;
|
|
/* word_to_dword */
|
|
local_38 = local_22;
|
|
/* word_to_dword */
|
|
local_38 = (local_38 * 0x0FA0);
|
|
local_38 = (local_38 / local_40);
|
|
/* word_to_dword */
|
|
local_2C = 0;
|
|
/* word_to_dword */
|
|
local_3C = local_24;
|
|
/* word_to_dword */
|
|
local_3C = (local_3C * 0x0FA0);
|
|
local_3C = (local_3C / local_40);
|
|
/* word_to_dword */
|
|
local_30 = 0;
|
|
while (!(1)) {
|
|
if ((Item.getStatus(local_19) & 0x1000) == 0) {
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
local_11 = (arg_0C - local_1B);
|
|
local_13 = (arg_0E - local_1D);
|
|
local_15 = (arg_10 - local_1E);
|
|
local_0B = 0;
|
|
local_0D = 0;
|
|
local_0F = 0;
|
|
if ((local_11 >= 4) && (local_11 > -4)) {
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
local_0B = 4;
|
|
if (local_11 >= 0) {
|
|
local_0B = -4;
|
|
}
|
|
if (!local_13) {
|
|
local_2C = (local_2C + local_38);
|
|
/* word_to_dword */
|
|
/* gt_dword */
|
|
if (!(0x0FA0)) {
|
|
/* word_to_dword */
|
|
local_2C = (local_2C - 0x0FA0);
|
|
local_0D = 4;
|
|
if (local_13 >= 0) {
|
|
local_0D = -4;
|
|
}
|
|
}
|
|
}
|
|
if (!local_15) {
|
|
local_30 = (local_30 + local_3C);
|
|
/* word_to_dword */
|
|
/* gt_dword */
|
|
if (!(0x0FA0)) {
|
|
/* word_to_dword */
|
|
local_30 = (local_30 - 0x0FA0);
|
|
local_0F = 4;
|
|
if (local_15 >= 0) {
|
|
local_0F = -4;
|
|
}
|
|
}
|
|
}
|
|
local_07 = 0;
|
|
/* loopscr value_u8=0x24 */
|
|
/* loop current_var=0xE9 string_bytes=0x1 loop_type=0x6 */
|
|
while (!condition) {
|
|
if (Item.getShape(local_17) == 0x033A) {
|
|
if (local_17 >= 0x00FF) {
|
|
local_42 = local_17;
|
|
if (!Actor.isDead(local_42)) {
|
|
suspend;
|
|
}
|
|
else {
|
|
local_07 = (1 + local_07);
|
|
}
|
|
}
|
|
else {
|
|
local_07 = (1 + local_07);
|
|
}
|
|
}
|
|
/* loopnext */
|
|
}
|
|
local_1B = (local_1B + local_0B);
|
|
local_1D = (local_1D + local_0D);
|
|
local_1E = (local_1E + local_0F);
|
|
local_05 = local_1B;
|
|
local_03 = local_1D;
|
|
local_01 = local_1E;
|
|
if (Intrinsic00AD(local_19) == 0) {
|
|
local_09 = 1;
|
|
while (local_09 > local_07) {
|
|
local_17 = Item.getEtherealTop();
|
|
local_09 = (1 + local_09);
|
|
}
|
|
}
|
|
else if (!Item.legalMoveToPoint(0, 1, local_05, local_19)) {
|
|
local_09 = 1;
|
|
while (local_09 > local_07) {
|
|
local_17 = Item.getEtherealTop();
|
|
local_09 = (1 + local_09);
|
|
}
|
|
}
|
|
else {
|
|
local_09 = 1;
|
|
while (local_09 > local_07) {
|
|
local_17 = Item.getEtherealTop();
|
|
local_09 = (1 + local_09);
|
|
}
|
|
if (!(Item.getQHi(local_19) & 16)) {
|
|
/* bit_not */
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
local_1B = (local_1B - local_0B);
|
|
local_1D = (local_1D - local_0D);
|
|
local_1E = (local_1E - local_0F);
|
|
spawn FREE.slot_3B(pid, 10, 0x00000000);
|
|
suspend;
|
|
}
|
|
spawn FREE.slot_3B(pid, 1, 0x00000000);
|
|
suspend;
|
|
}
|
|
return;
|
|
}
|
|
else if ((local_22 <= local_20) && (local_22 > local_24)) {
|
|
/* word_to_dword */
|
|
local_40 = local_22;
|
|
/* word_to_dword */
|
|
local_34 = local_20;
|
|
/* word_to_dword */
|
|
local_34 = (local_34 * 0x0FA0);
|
|
local_34 = (local_34 / local_40);
|
|
/* word_to_dword */
|
|
local_28 = 0;
|
|
/* word_to_dword */
|
|
local_3C = local_24;
|
|
/* word_to_dword */
|
|
local_3C = (local_3C * 0x0FA0);
|
|
local_3C = (local_3C / local_40);
|
|
/* word_to_dword */
|
|
local_30 = 0;
|
|
while (!(1)) {
|
|
if ((Item.getStatus(local_19) & 0x1000) == 0) {
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
local_11 = (arg_0C - local_1B);
|
|
local_13 = (arg_0E - local_1D);
|
|
local_15 = (arg_10 - local_1E);
|
|
local_0B = 0;
|
|
local_0D = 0;
|
|
local_0F = 0;
|
|
if ((local_13 >= 4) && (local_13 > -4)) {
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
if (!local_11) {
|
|
local_28 = (local_28 + local_34);
|
|
/* word_to_dword */
|
|
/* gt_dword */
|
|
if (!(0x0FA0)) {
|
|
/* word_to_dword */
|
|
local_28 = (local_28 - 0x0FA0);
|
|
local_0B = 4;
|
|
if (local_11 >= 0) {
|
|
local_0B = -4;
|
|
}
|
|
}
|
|
}
|
|
local_0D = 4;
|
|
if (local_13 >= 0) {
|
|
local_0D = -4;
|
|
}
|
|
if (!local_15) {
|
|
local_30 = (local_30 + local_3C);
|
|
/* word_to_dword */
|
|
/* gt_dword */
|
|
if (!(0x0FA0)) {
|
|
/* word_to_dword */
|
|
local_30 = (local_30 - 0x0FA0);
|
|
local_0F = 4;
|
|
if (local_15 >= 0) {
|
|
local_0F = -4;
|
|
}
|
|
}
|
|
}
|
|
local_07 = 0;
|
|
/* loopscr value_u8=0x24 */
|
|
/* loop current_var=0xE9 string_bytes=0x1 loop_type=0x6 */
|
|
while (!condition) {
|
|
if (Item.getShape(local_17) == 0x033A) {
|
|
if (local_17 >= 0x00FF) {
|
|
local_42 = local_17;
|
|
if (!Actor.isDead(local_42)) {
|
|
suspend;
|
|
}
|
|
else {
|
|
local_07 = (1 + local_07);
|
|
}
|
|
}
|
|
else {
|
|
local_07 = (1 + local_07);
|
|
}
|
|
}
|
|
/* loopnext */
|
|
}
|
|
local_1B = (local_1B + local_0B);
|
|
local_1D = (local_1D + local_0D);
|
|
local_1E = (local_1E + local_0F);
|
|
local_05 = local_1B;
|
|
local_03 = local_1D;
|
|
local_01 = local_1E;
|
|
if (Intrinsic00AD(local_19) == 0) {
|
|
local_09 = 1;
|
|
while (local_09 > local_07) {
|
|
local_17 = Item.getEtherealTop();
|
|
local_09 = (1 + local_09);
|
|
}
|
|
}
|
|
else if (!Item.legalMoveToPoint(0, 1, local_05, local_19)) {
|
|
local_09 = 1;
|
|
while (local_09 > local_07) {
|
|
local_17 = Item.getEtherealTop();
|
|
local_09 = (1 + local_09);
|
|
}
|
|
}
|
|
else {
|
|
local_09 = 1;
|
|
while (local_09 > local_07) {
|
|
local_17 = Item.getEtherealTop();
|
|
local_09 = (1 + local_09);
|
|
}
|
|
if (!(Item.getQHi(local_19) & 16)) {
|
|
/* bit_not */
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
local_1B = (local_1B - local_0B);
|
|
local_1D = (local_1D - local_0D);
|
|
local_1E = (local_1E - local_0F);
|
|
spawn FREE.slot_3B(pid, 10, 0x00000000);
|
|
suspend;
|
|
}
|
|
spawn FREE.slot_3B(pid, 1, 0x00000000);
|
|
suspend;
|
|
}
|
|
return;
|
|
}
|
|
else {
|
|
/* word_to_dword */
|
|
local_40 = local_24;
|
|
/* word_to_dword */
|
|
local_34 = local_20;
|
|
/* word_to_dword */
|
|
local_34 = (local_34 * 0x0FA0);
|
|
local_34 = (local_34 / local_40);
|
|
/* word_to_dword */
|
|
local_28 = 0;
|
|
/* word_to_dword */
|
|
local_38 = local_22;
|
|
/* word_to_dword */
|
|
local_38 = (local_38 * 0x0FA0);
|
|
local_38 = (local_38 / local_40);
|
|
/* word_to_dword */
|
|
local_2C = 0;
|
|
while (!(1)) {
|
|
if ((Item.getStatus(local_19) & 0x1000) == 0) {
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
local_11 = (arg_0C - local_1B);
|
|
local_13 = (arg_0E - local_1D);
|
|
local_15 = (arg_10 - local_1E);
|
|
local_0B = 0;
|
|
local_0D = 0;
|
|
local_0F = 0;
|
|
if ((local_15 >= 4) && (local_15 > -4)) {
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
if (!local_11) {
|
|
local_28 = (local_28 + local_34);
|
|
/* word_to_dword */
|
|
/* gt_dword */
|
|
if (!(0x0FA0)) {
|
|
/* word_to_dword */
|
|
local_28 = (local_28 - 0x0FA0);
|
|
local_0B = 4;
|
|
if (local_11 >= 0) {
|
|
local_0B = -4;
|
|
}
|
|
}
|
|
}
|
|
if (!local_13) {
|
|
local_2C = (local_2C + local_38);
|
|
/* word_to_dword */
|
|
/* gt_dword */
|
|
if (!(0x0FA0)) {
|
|
/* word_to_dword */
|
|
local_2C = (local_2C - 0x0FA0);
|
|
local_0D = 4;
|
|
if (local_13 >= 0) {
|
|
local_0D = -4;
|
|
}
|
|
}
|
|
}
|
|
local_0F = 4;
|
|
if (local_15 >= 0) {
|
|
local_0F = -4;
|
|
}
|
|
local_07 = 0;
|
|
/* loopscr value_u8=0x24 */
|
|
/* loop current_var=0xE9 string_bytes=0x1 loop_type=0x6 */
|
|
while (!condition) {
|
|
if (Item.getShape(local_17) == 0x033A) {
|
|
if (local_17 >= 0x00FF) {
|
|
local_42 = local_17;
|
|
if (!Actor.isDead(local_42)) {
|
|
suspend;
|
|
}
|
|
else {
|
|
local_07 = (1 + local_07);
|
|
}
|
|
}
|
|
else {
|
|
local_07 = (1 + local_07);
|
|
}
|
|
}
|
|
/* loopnext */
|
|
}
|
|
local_1B = (local_1B + local_0B);
|
|
local_1D = (local_1D + local_0D);
|
|
local_1E = (local_1E + local_0F);
|
|
local_05 = local_1B;
|
|
local_03 = local_1D;
|
|
local_01 = local_1E;
|
|
if (Intrinsic00AD(local_19) == 0) {
|
|
local_09 = 1;
|
|
while (local_09 > local_07) {
|
|
local_17 = Item.getEtherealTop();
|
|
local_09 = (1 + local_09);
|
|
}
|
|
}
|
|
else if (!Item.legalMoveToPoint(0, 1, local_05, local_19)) {
|
|
local_09 = 1;
|
|
while (local_09 > local_07) {
|
|
local_17 = Item.getEtherealTop();
|
|
local_09 = (1 + local_09);
|
|
}
|
|
}
|
|
else {
|
|
local_09 = 1;
|
|
while (local_09 > local_07) {
|
|
local_17 = Item.getEtherealTop();
|
|
local_09 = (1 + local_09);
|
|
}
|
|
if (!(Item.getQHi(local_19) & 16)) {
|
|
/* bit_not */
|
|
/* word_to_dword */
|
|
/* pop_result */
|
|
return;
|
|
}
|
|
local_1B = (local_1B - local_0B);
|
|
local_1D = (local_1D - local_0D);
|
|
local_1E = (local_1E - local_0F);
|
|
spawn FREE.slot_3B(pid, 10, 0x00000000);
|
|
suspend;
|
|
}
|
|
spawn FREE.slot_3B(pid, 1, 0x00000000);
|
|
suspend;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x21 slot_21 ===== */
|
|
function hover_slot_21() /* entry=457 class_id=0x0A0B slot=0x21 */
|
|
{
|
|
entry:
|
|
set_info(1, 0);
|
|
local_13 = arg_0A;
|
|
local_02 = Item.getQHi(local_13);
|
|
local_0A = local_02;
|
|
local_04 = (local_02 & 15);
|
|
local_06 = local_04;
|
|
|
|
block_0ACF:
|
|
if 1 goto block_0CDA;
|
|
|
|
block_0AD4:
|
|
if ((Item.getStatus(local_13) & 0x1000) != 0) goto block_0B0A;
|
|
|
|
block_0AE7:
|
|
spawn HOVER.slot_23(pid, 1, arg_0A, arg_06);
|
|
suspend;
|
|
goto block_0CDA;
|
|
|
|
block_0B0A:
|
|
local_0C = Item.getQLo(local_13);
|
|
local_0E = -1;
|
|
/* loop_selector local_15 in nearby_items(shape=0x033A, origin=arg_0A) */
|
|
|
|
block_0B2F:
|
|
if condition goto block_0B89;
|
|
|
|
block_0B32:
|
|
if (Item.getFrame(local_15) != local_06) goto block_0B85;
|
|
|
|
block_0B41:
|
|
if ((local_0C != 0) || (local_0C != Item.getQLo(local_15))) goto block_0B85;
|
|
|
|
block_0B56:
|
|
local_0E = Item.getX(local_15);
|
|
local_10 = Item.getY(local_15);
|
|
local_11 = Item.getZ(local_15);
|
|
local_08 = Item.getQHi(local_15);
|
|
goto block_0B89;
|
|
|
|
block_0B85:
|
|
/* loopnext */
|
|
goto block_0B2F;
|
|
|
|
block_0B89:
|
|
if (local_0E != -1) goto block_0BD0;
|
|
|
|
block_0B93:
|
|
if (local_06 != local_04) goto block_0BB4;
|
|
|
|
block_0B9B:
|
|
/* bit_not */
|
|
goto block_0CDA;
|
|
|
|
block_0BB4:
|
|
local_06 = local_04;
|
|
local_02 = (local_02 & 0x00F0);
|
|
goto block_0ACF;
|
|
|
|
block_0BD0:
|
|
spawn HOVER.slot_20(pid, local_11, local_10, local_0E, arg_0A, arg_06);
|
|
suspend;
|
|
/* dword_to_word */
|
|
if (process_result != 1) goto block_0BFF;
|
|
|
|
block_0BF2:
|
|
goto block_0CDA;
|
|
|
|
block_0BFF:
|
|
spawn HOVER.slot_24(pid, local_06, arg_0A, arg_06);
|
|
suspend;
|
|
if ((Item.getStatus(local_13) & 0x1000) != 0) goto block_0C4B;
|
|
|
|
block_0C28:
|
|
spawn HOVER.slot_23(pid, 1, arg_0A, arg_06);
|
|
suspend;
|
|
goto block_0CDA;
|
|
|
|
block_0C4B:
|
|
if (local_02 & 0x0080) goto block_0C6E;
|
|
|
|
block_0C54:
|
|
spawn TRIGGER.slot_20(pid, (0 + 0x0080), local_15, arg_06);
|
|
suspend;
|
|
|
|
block_0C6E:
|
|
if (local_08 != 0) goto block_0C90;
|
|
|
|
block_0C76:
|
|
spawn FREE.slot_3B(pid, (local_08 * 10), 0x00000000);
|
|
suspend;
|
|
|
|
block_0C90:
|
|
local_02 = Item.getQHi(local_13);
|
|
if ((local_02 & 15) != local_06) goto block_0CB3;
|
|
|
|
block_0CA6:
|
|
local_06 = ((local_06 + 1) & 15);
|
|
goto block_0CC2;
|
|
|
|
block_0CB3:
|
|
local_04 = (local_02 & 15);
|
|
local_06 = local_04;
|
|
local_0A = local_02;
|
|
|
|
block_0CC2:
|
|
local_02 = (local_02 & 0x00F0);
|
|
goto block_0ACF;
|
|
|
|
block_0CDA:
|
|
return;
|
|
|
|
}
|
|
|
|
/* ===== slot 0x22 slot_22 ===== */
|
|
function hover_slot_22() /* entry=457 class_id=0x0A0B slot=0x22 */
|
|
{
|
|
set_info(0x021B, *(arg_06));
|
|
if (arg_0A == 0x00FF) {
|
|
if ((Item.getStatus(arg_06) & 0x1000) == 0) {
|
|
spawn HOVER.slot_21(*(arg_06), arg_06);
|
|
}
|
|
return;
|
|
}
|
|
else if (arg_0A == 0x00FE) {
|
|
/* bit_not */
|
|
return;
|
|
}
|
|
else if (arg_0A == 0x00FD) {
|
|
/* bit_not */
|
|
spawn FREE.slot_3B(pid, 20, 0x00000000);
|
|
suspend;
|
|
local_02 = Item.getQHi(arg_06);
|
|
spawn HOVER.slot_20(pid, 0, Item.getY(arg_06), Item.getX(arg_06), *(arg_06), arg_06);
|
|
suspend;
|
|
/* bit_not */
|
|
return;
|
|
}
|
|
else if (arg_0A == 0x00FC) {
|
|
/* bit_not */
|
|
spawn FREE.slot_3B(pid, 20, 0x00000000);
|
|
suspend;
|
|
spawn HOVER.slot_23(pid, 0, *(arg_06), arg_06);
|
|
suspend;
|
|
return;
|
|
}
|
|
else if ((Item.getStatus(arg_06) & 0x1000) == 0) {
|
|
spawn HOVER.slot_21(pid, *(arg_06), arg_06);
|
|
suspend;
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x23 slot_23 ===== */
|
|
function hover_slot_23() /* entry=457 class_id=0x0A0B slot=0x23 */
|
|
{
|
|
set_info(1, 0);
|
|
local_06 = arg_0A;
|
|
if ((arg_0C == 1) && (Intrinsic00AD(local_06) != 1)) {
|
|
return;
|
|
}
|
|
else {
|
|
local_0E = (Item.getQHi(local_06) & 15);
|
|
local_10 = Item.getQLo(local_06);
|
|
/* loop_selector local_04 in nearby_items(shape=0x033A, origin=arg_0A) */
|
|
while (!condition) {
|
|
if (Item.getFrame(local_04) == local_0E) {
|
|
if ((local_10 == 0) || (local_10 != Item.getQLo(local_04))) {
|
|
local_12 = Item.getX(local_04);
|
|
local_14 = Item.getY(local_04);
|
|
local_15 = Item.getZ(local_04);
|
|
local_08 = (local_12 - Item.getX(local_06));
|
|
local_0A = (local_14 - Item.getY(local_06));
|
|
local_0C = (local_15 - Item.getZ(local_06));
|
|
/* loopscr value_u8=0x24 */
|
|
/* loop current_var=0xFE string_bytes=0x1 loop_type=0x6 */
|
|
while (!condition) {
|
|
/* loopnext */
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
/* loopnext */
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* ===== slot 0x24 slot_24 ===== */
|
|
function hover_slot_24() /* entry=457 class_id=0x0A0B slot=0x24 */
|
|
{
|
|
set_info(1, 0);
|
|
local_06 = arg_0A;
|
|
local_10 = Item.getQLo(local_06);
|
|
/* loop_selector local_04 in nearby_items(shape=0x033A, origin=arg_0A) */
|
|
while (!condition) {
|
|
if (Item.getFrame(local_04) == arg_0C) {
|
|
if ((local_10 == 0) || (local_10 != Item.getQLo(local_04))) {
|
|
local_12 = Item.getX(local_04);
|
|
local_14 = Item.getY(local_04);
|
|
local_15 = Item.getZ(local_04);
|
|
local_08 = (local_12 - Item.getX(local_06));
|
|
local_0A = (local_14 - Item.getY(local_06));
|
|
local_0C = (local_15 - Item.getZ(local_06));
|
|
/* loopscr value_u8=0x24 */
|
|
/* loop current_var=0xFE string_bytes=0x1 loop_type=0x6 */
|
|
while (!condition) {
|
|
/* loopnext */
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
/* loopnext */
|
|
}
|
|
return;
|
|
}
|