diff --git a/Crusader.rep/idata/01/00000015.prp b/Crusader.rep/idata/01/00000015.prp index 90165f7..04a0922 100644 --- a/Crusader.rep/idata/01/00000015.prp +++ b/Crusader.rep/idata/01/00000015.prp @@ -2,12 +2,12 @@ - + - + diff --git a/Crusader.rep/idata/01/~00000015.db/change.data.gbf b/Crusader.rep/idata/01/~00000015.db/change.data.gbf index 5f31ba0..69a1053 100644 Binary files a/Crusader.rep/idata/01/~00000015.db/change.data.gbf and b/Crusader.rep/idata/01/~00000015.db/change.data.gbf differ diff --git a/Crusader.rep/idata/01/~00000015.db/change.map.gbf b/Crusader.rep/idata/01/~00000015.db/change.map.gbf index aa53ba2..f80d267 100644 Binary files a/Crusader.rep/idata/01/~00000015.db/change.map.gbf and b/Crusader.rep/idata/01/~00000015.db/change.map.gbf differ diff --git a/Crusader.rep/idata/01/~00000015.db/db.17.gbf b/Crusader.rep/idata/01/~00000015.db/db.25.gbf similarity index 99% rename from Crusader.rep/idata/01/~00000015.db/db.17.gbf rename to Crusader.rep/idata/01/~00000015.db/db.25.gbf index fb078a7..df95275 100644 Binary files a/Crusader.rep/idata/01/~00000015.db/db.17.gbf and b/Crusader.rep/idata/01/~00000015.db/db.25.gbf differ diff --git a/Crusader.rep/versioned/00/~00000000.db/db.2.gbf b/Crusader.rep/idata/01/~00000015.db/db.26.gbf similarity index 98% rename from Crusader.rep/versioned/00/~00000000.db/db.2.gbf rename to Crusader.rep/idata/01/~00000015.db/db.26.gbf index 4821392..d4ff470 100644 Binary files a/Crusader.rep/versioned/00/~00000000.db/db.2.gbf and b/Crusader.rep/idata/01/~00000015.db/db.26.gbf differ diff --git a/Crusader.rep/user/00/~00000008.db/db.12.gbf b/Crusader.rep/user/00/~00000008.db/db.14.gbf similarity index 99% rename from Crusader.rep/user/00/~00000008.db/db.12.gbf rename to Crusader.rep/user/00/~00000008.db/db.14.gbf index 82ff047..254d9e4 100644 Binary files a/Crusader.rep/user/00/~00000008.db/db.12.gbf and b/Crusader.rep/user/00/~00000008.db/db.14.gbf differ diff --git a/Crusader.rep/versioned/00/~00000000.db/change.2.gbf b/Crusader.rep/versioned/00/~00000000.db/change.2.gbf new file mode 100644 index 0000000..5e6ff35 Binary files /dev/null and b/Crusader.rep/versioned/00/~00000000.db/change.2.gbf differ diff --git a/Crusader.rep/versioned/00/~00000000.db/checkout.dat b/Crusader.rep/versioned/00/~00000000.db/checkout.dat index 68672b5..b7d7d85 100644 --- a/Crusader.rep/versioned/00/~00000000.db/checkout.dat +++ b/Crusader.rep/versioned/00/~00000000.db/checkout.dat @@ -1,5 +1,5 @@ - + diff --git a/Crusader.rep/idata/01/~00000015.db/db.16.gbf b/Crusader.rep/versioned/00/~00000000.db/db.3.gbf similarity index 99% rename from Crusader.rep/idata/01/~00000015.db/db.16.gbf rename to Crusader.rep/versioned/00/~00000000.db/db.3.gbf index bd678cf..bc56208 100644 Binary files a/Crusader.rep/idata/01/~00000015.db/db.16.gbf and b/Crusader.rep/versioned/00/~00000000.db/db.3.gbf differ diff --git a/Crusader.rep/versioned/00/~00000000.db/history.dat b/Crusader.rep/versioned/00/~00000000.db/history.dat index ec0209b..07a020e 100644 --- a/Crusader.rep/versioned/00/~00000000.db/history.dat +++ b/Crusader.rep/versioned/00/~00000000.db/history.dat @@ -1,2 +1,3 @@ 1;Maddo;1774376667876;Base before edits 2;Maddo;1774389005800;Computer Gump +3;Maddo;1774476736765;Big disasm pass diff --git a/Crusader.rep/versioned/00/~00000000.db/ver.2.gbf b/Crusader.rep/versioned/00/~00000000.db/ver.2.gbf new file mode 100644 index 0000000..6b80c2f Binary files /dev/null and b/Crusader.rep/versioned/00/~00000000.db/ver.2.gbf differ diff --git a/USECODE/EUSECODE_extracted/pseudocode/ALARMBOX/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/ALARMBOX/slot_01_use.txt new file mode 100644 index 0000000..6f1b455 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ALARMBOX/slot_01_use.txt @@ -0,0 +1,35 @@ +function alarmbox_use() /* entry=256 class_id=0x0477 slot=0x01 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + item; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if Intrinsic0000() goto block_0232; + + block_01AA: + if (Item.getFrame(arg_06) != 2) goto block_01C9; + + block_01B9: + goto block_01E8; + + block_01C9: + if (Item.getFrame(arg_06) != 3) goto block_01E8; + + block_01D8: + goto block_01E8; + + block_01E8: + spawn class_0A0C_slot_3C(0x00000000); + if (Item.getMapNum(arg_06) != 0) goto block_0232; + + block_020B: + spawn class_0A18_slot_20(pid, 1, *(arg_06), arg_06); + suspend; + + block_0232: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ALARMBOX/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/ALARMBOX/slot_0A_equip.txt new file mode 100644 index 0000000..3edc195 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ALARMBOX/slot_0A_equip.txt @@ -0,0 +1,32 @@ +function alarmbox_equip() /* entry=256 class_id=0x0477 slot=0x0A */ +{ + var + referent, /* [BP+00h] type=0x69 */ + var, /* [BP+0Ah] type=0x69 */ + a; /* [BP-02h] type=0x69 */ + + set_info(0x0211, *(arg_06)); + process_exclude(); + if (!var) { + if (Intrinsic0000()) { + spawn class_0A0C_slot_3B(0x00000000); + } + a = Item.getStatus(arg_06); + if ((a & 4) == 0) { + if (Item.getMapNum(arg_06) == 0) { + spawn class_0A18_slot_20(pid, 0, *(arg_06), arg_06); + suspend; + } + } + return; + } + if (!Intrinsic0000()) { + spawn class_0A0C_slot_3C(0x00000000); + if (Item.getMapNum(arg_06) == 0) { + spawn class_0A18_slot_20(pid, 1, *(arg_06), arg_06); + suspend; + } + } + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ALARMBOX/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/ALARMBOX/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..5ba50ac --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ALARMBOX/slot_0F_enterFastArea.txt @@ -0,0 +1,38 @@ +function alarmbox_enterFastArea() /* entry=256 class_id=0x0477 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if Intrinsic0000() goto block_0137; + + block_00F6: + if (Item.getFrame(arg_06) != 0) goto block_0115; + + block_0105: + goto block_0134; + + block_0115: + if (Item.getFrame(arg_06) != 1) goto block_0134; + + block_0124: + goto block_0134; + + block_0134: + goto block_0175; + + block_0137: + if (Item.getFrame(arg_06) != 2) goto block_0156; + + block_0146: + goto block_0175; + + block_0156: + if (Item.getFrame(arg_06) != 3) goto block_0175; + + block_0165: + goto block_0175; + + block_0175: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ALARMHAT/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/ALARMHAT/slot_0A_equip.txt new file mode 100644 index 0000000..8d82a16 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ALARMHAT/slot_0A_equip.txt @@ -0,0 +1,88 @@ +function alarmhat_equip() /* entry=321 class_id=0x0561 slot=0x0A */ +{ + var + referent, /* [BP+00h] type=0x69 */ + var, /* [BP+0Ah] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + npc; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if Item.getFrame(arg_06) goto block_0156; + + block_00FA: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0118: + if condition goto block_0151; + + block_011B: + if (Item.getFrame(item) != 0) goto block_014D; + + block_012D: + suspend; + + block_014D: + /* loopnext */ + goto block_0118; + + block_0151: + goto block_0233; + + block_0156: + if (!Intrinsic0007(arg_06)) goto block_0233; + + block_0169: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x3A */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */ + + block_0186: + if condition goto block_01D8; + + block_0189: + if Item.isNpc(npc) goto block_01D4; + + block_0198: + if ((Item.getZ(npc) > (Item.getZ(arg_06) - 10)) && (Item.getZ(npc) < (Item.getZ(arg_06) + 10))) goto block_01D4; + + block_01CE: + goto block_0233; + + block_01D4: + /* loopnext */ + goto block_0186; + + block_01D8: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_01F8: + if condition goto block_0231; + + block_01FB: + if (Item.getFrame(item) != 0) goto block_022D; + + block_020D: + suspend; + + block_022D: + /* loopnext */ + goto block_01F8; + + block_0231: + + block_0233: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ALARM_EW/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/ALARM_EW/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..145b4d1 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ALARM_EW/slot_0F_enterFastArea.txt @@ -0,0 +1,16 @@ +function alarm_ew_enterFastArea() /* entry=4 class_id=0x0021 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if Intrinsic0000() goto block_0106; + + block_00F6: + goto block_0113; + + block_0106: + + block_0113: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ALARM_NS/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/ALARM_NS/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..effef1a --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ALARM_NS/slot_0F_enterFastArea.txt @@ -0,0 +1,16 @@ +function alarm_ns_enterFastArea() /* entry=8 class_id=0x0049 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if Intrinsic0000() goto block_0106; + + block_00F6: + goto block_0113; + + block_0106: + + block_0113: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ALRMTRIG/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/ALRMTRIG/slot_0A_equip.txt new file mode 100644 index 0000000..f690ab0 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ALRMTRIG/slot_0A_equip.txt @@ -0,0 +1,43 @@ +function alrmtrig_equip() /* entry=328 class_id=0x0581 slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (Item.getMapNum(arg_06) != 0) goto block_015C; + + block_00FD: + if Intrinsic0000() goto block_0132; + + block_0108: + spawn class_0A18_slot_20(pid, 0, *(arg_06), arg_06); + suspend; + goto block_0159; + + block_0132: + spawn class_0A18_slot_20(pid, 1, *(arg_06), arg_06); + suspend; + + block_0159: + goto block_01C0; + + block_015C: + if Intrinsic0000() goto block_0195; + + block_0167: + spawn class_0A18_slot_20(pid, (0 + 0x0080), *(arg_06), arg_06); + suspend; + goto block_01C0; + + block_0195: + spawn class_0A18_slot_20(pid, (1 + 0x0080), *(arg_06), arg_06); + suspend; + + block_01C0: + if (arg_0A != 1) goto block_01D9; + + block_01CE: + + block_01D9: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ANDROID/slot_0E_calledFromAnim.txt b/USECODE/EUSECODE_extracted/pseudocode/ANDROID/slot_0E_calledFromAnim.txt new file mode 100644 index 0000000..b704ecf --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ANDROID/slot_0E_calledFromAnim.txt @@ -0,0 +1,9 @@ +function android_calledFromAnim() /* entry=200 class_id=0x0383 slot=0x0E */ +{ + entry: + set_info(0x021A, *(arg_06)); + process_exclude(); + spawn class_0A1C_slot_20(Item.getQLo(arg_06), *(arg_06), arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/AND_BOOT/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/AND_BOOT/slot_0A_equip.txt new file mode 100644 index 0000000..88ab0f8 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/AND_BOOT/slot_0A_equip.txt @@ -0,0 +1,81 @@ +function and_boot_equip() /* entry=171 class_id=0x0314 slot=0x0A */ +{ + var + referent, /* [BP+00h] type=0x69 */ + event, /* [BP+0Ah] type=0x69 */ + counter; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (Item.getFrame(arg_06) != 12) goto block_0106; + + block_0100: + goto block_02FE; + + block_0106: + class_0A0C_slot_33(0x021B, *(arg_06)); + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + + block_0140: + if (Item.getFrame(arg_06) != 11) goto block_0192; + + block_0152: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + goto block_0140; + + block_0192: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + if (global[0x001F] != 2) goto block_01F2; + + block_01C2: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0293; + + block_01F2: + if (global[0x001F] != 3) goto block_022C; + + block_01FC: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0293; + + block_022C: + if (global[0x001F] != 4) goto block_0266; + + block_0236: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0293; + + block_0266: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + + block_0293: + counter = 0; + + block_029A: + if (counter <= 11) goto block_02E5; + + block_02A2: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_029A; + + block_02E5: + spawn class_0314_enterFastArea(arg_06); + + block_02FE: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/AND_BOOT/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/AND_BOOT/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..9f83a67 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/AND_BOOT/slot_0F_enterFastArea.txt @@ -0,0 +1,96 @@ +function and_boot_enterFastArea() /* entry=171 class_id=0x0314 slot=0x0F */ +{ + var + referent, /* [BP+00h] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + counter; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if (((global[0x001F] != 2) || (global[0x001F] != 3)) || (global[0x001F] != 4)) goto block_03BA; + + block_0358: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0376: + if condition goto block_03A8; + + block_0379: + if (Intrinsic0010(item) != Intrinsic0010(arg_06)) goto block_03A4; + + block_0395: + class_0A1E_slot_24(0x1000, item); + + block_03A4: + /* loopnext */ + goto block_0376; + + block_03A8: + goto block_041F; + + block_03BA: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_03D8: + if condition goto block_040A; + + block_03DB: + if (Intrinsic0010(item) != Intrinsic0010(arg_06)) goto block_0406; + + block_03F7: + class_0A1E_slot_23(0x1000, item); + + block_0406: + /* loopnext */ + goto block_03D8; + + block_040A: + goto block_0536; + + block_041F: + suspend; + class_0A0C_slot_20(pid, 0x00C8); + spawn class_0A0C_slot_32((retval + 0x00C8), 0x00000000); + suspend; + counter = 0; + + block_0466: + if (counter <= 6) goto block_04AE; + + block_046E: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0466; + + block_04AE: + class_0A0C_slot_20(pid, 0x00C8); + spawn class_0A0C_slot_32((retval + 0x00C8), 0x00000000); + suspend; + counter = 0; + + block_04E8: + if (counter <= 6) goto block_0533; + + block_04F0: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_04E8; + + block_0533: + goto block_041F; + + block_0536: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/AND_BOOT/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/AND_BOOT/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..5984b51 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/AND_BOOT/slot_10_leaveFastArea.txt @@ -0,0 +1,9 @@ +function and_boot_leaveFastArea() /* entry=171 class_id=0x0314 slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + class_0A0C_slot_33(0x021B, *(arg_06)); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ART/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/ART/slot_06_gotHit.txt new file mode 100644 index 0000000..754f93b --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ART/slot_06_gotHit.txt @@ -0,0 +1,31 @@ +function art_gotHit() /* entry=234 class_id=0x0435 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + fram; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + fram = Item.getFrame(arg_06); + class_0A0C_slot_2C(vel, ref); + if retval goto block_0176; + + block_010B: + if (fram > 7) goto block_0141; + + block_0119: + spawn class_0A1E_slot_28(pid, 1, 0, arg_06); + suspend; + goto block_0176; + + block_0141: + spawn class_0A1E_slot_28(pid, 0, 0, arg_06); + suspend; + + block_0176: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/AVATAR/slot_00_look.txt b/USECODE/EUSECODE_extracted/pseudocode/AVATAR/slot_00_look.txt new file mode 100644 index 0000000..57cc215 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/AVATAR/slot_00_look.txt @@ -0,0 +1,8 @@ +function avatar_look() /* entry=339 class_id=0x0801 slot=0x00 */ +{ + entry: + set_info(0x0208, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/AVATAR/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/AVATAR/slot_01_use.txt new file mode 100644 index 0000000..c9589f6 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/AVATAR/slot_01_use.txt @@ -0,0 +1,8 @@ +function avatar_use() /* entry=339 class_id=0x0801 slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/AVATAR/slot_04_cachein.txt b/USECODE/EUSECODE_extracted/pseudocode/AVATAR/slot_04_cachein.txt new file mode 100644 index 0000000..3cea014 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/AVATAR/slot_04_cachein.txt @@ -0,0 +1,15 @@ +function avatar_cachein() /* entry=339 class_id=0x0801 slot=0x04 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + slot, /* [BP-04h] type=0x69 */ + counter; /* [BP-06h] type=0x69 */ + + entry: + set_info(0x0213, *(arg_06)); + process_exclude(); + spawn class_0801_cast(0, arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/AVATAR/slot_11_cast.txt b/USECODE/EUSECODE_extracted/pseudocode/AVATAR/slot_11_cast.txt new file mode 100644 index 0000000..a380aef --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/AVATAR/slot_11_cast.txt @@ -0,0 +1,46 @@ +function avatar_cast() /* entry=339 class_id=0x0801 slot=0x11 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + n; /* [BP-02h] type=0x69 */ + + set_info(0x021D, *(arg_06)); + process_exclude(); + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + /* global_address global_id=0x3C */ + n = Item.getType(); + if ((Item.getType(arg_06) != 1)) { + if (Item.getType(arg_06) == 3) { + } + else if (Item.getType(arg_06) == 5) { + } + else if (Item.getType(arg_06) == 7) { + } + else if (Item.getType(arg_06) == 9) { + } + else if (Item.getType(arg_06) == 11) { + } + else if (Item.getType(arg_06) == 13) { + } + else if (Item.getType(arg_06) == 15) { + } + else if (Item.getType(arg_06) == 17) { + } + else if (Item.getType(arg_06) == 19) { + } + else if (Item.getType(arg_06) == 21) { + } + else if (Item.getType(arg_06) == 23) { + } + else if (Item.getType(arg_06) == 25) { + } + else if (Item.getType(arg_06) == 27) { + } + else if (Item.getType(arg_06) == 29) { + } + return; + } + return; +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BARDUDES/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/BARDUDES/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..2347c85 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BARDUDES/slot_0F_enterFastArea.txt @@ -0,0 +1,91 @@ +function bardudes_enterFastArea() /* entry=199 class_id=0x0382 slot=0x0F */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if ((((global[0x001F] != 1) || (global[0x001F] != 2)) || (global[0x001F] != 3)) || (global[0x001F] != 14)) goto block_0123; + + block_010D: + goto block_032E; + + block_0120: + goto block_0130; + + block_0123: + + block_0130: + suspend; + class_0A0C_slot_20(pid, 100); + spawn class_0A0C_slot_32((retval + 60), 0x00000000); + suspend; + class_0A0C_slot_20(100); + if (retval > 50) goto block_0259; + + block_0184: + counter = 0; + + block_018B: + if (counter <= 7) goto block_01D3; + + block_0193: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_018B; + + block_01D3: + class_0A0C_slot_20(pid, 100); + spawn class_0A0C_slot_32((retval + 60), 0x00000000); + suspend; + counter = 0; + + block_020B: + if (counter <= 7) goto block_0256; + + block_0213: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_020B; + + block_0256: + goto block_032B; + + block_0259: + counter = 8; + + block_0260: + if (counter <= 13) goto block_02A8; + + block_0268: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0260; + + block_02A8: + class_0A0C_slot_20(pid, 100); + spawn class_0A0C_slot_32((retval + 60), 0x00000000); + suspend; + counter = 0; + + block_02E0: + if (counter <= 5) goto block_032B; + + block_02E8: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_02E0; + + block_032B: + goto block_0130; + + block_032E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BARREL/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/BARREL/slot_20_slot_20.txt new file mode 100644 index 0000000..f5984a4 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BARREL/slot_20_slot_20.txt @@ -0,0 +1,168 @@ +function barrel_slot_20() /* entry=370 class_id=0x0A00 slot=0x20 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + barrel, /* [BP-02h] type=0x24 */ + item2, /* [BP-04h] type=0x24 */ + isYellowBarrel, /* [BP-05h] type=0x62 */ + isStandingBarrel, /* [BP-06h] type=0x62 */ + link, /* [BP-08h] type=0x69 */ + x, /* [BP-0Ah] type=0x69 */ + y, /* [BP-0Ch] type=0x69 */ + z; /* [BP-0Eh] type=0x69 */ + + entry: + set_info(0x0001, *(arg_06)); + barrel = *(arg_06); + x = Intrinsic0013(arg_06); + y = Item.legal_create(arg_06); + z = Item.getZ(arg_06); + class_0A0C_slot_2C(vel, ref); + if (!retval) goto block_013F; + + block_0139: + goto block_04FA; + + block_013F: + spawn class_0A1E_slot_27(pid, 100, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_01A2; + + block_016F: + class_0A0C_slot_20(1); + if retval goto block_018F; + + block_017F: + goto block_019C; + + block_018F: + + block_019C: + goto block_04FA; + + block_01A2: + if (Intrinsic0016(arg_06) != 0x00AA) goto block_0208; + + block_01B2: + isStandingBarrel = 1; + if ((Item.getFrame(arg_06) != 0) || (Item.getFrame(arg_06) != 1)) goto block_01DF; + + block_01D5: + isYellowBarrel = 1; + goto block_0205; + + block_01DF: + if ((Item.getFrame(arg_06) != 2) || (Item.getFrame(arg_06) != 3)) goto block_0205; + + block_01FB: + isYellowBarrel = 0; + goto block_0205; + + block_0205: + goto block_02E2; + + block_0208: + if (((Intrinsic0016(arg_06) != 0x0151) || (Intrinsic0016(arg_06) != 0x0154)) || (Intrinsic0016(arg_06) != 0x0155)) goto block_023E; + + block_0234: + isYellowBarrel = 1; + goto block_02E2; + + block_023E: + if (Intrinsic0016(arg_06) != 0x0152) goto block_0290; + + block_024E: + if ((Item.getFrame(arg_06) != 0) || (Item.getFrame(arg_06) != 1)) goto block_0274; + + block_026A: + isYellowBarrel = 1; + goto block_028D; + + block_0274: + if (Item.getFrame(arg_06) != 2) goto block_028D; + + block_0283: + isYellowBarrel = 0; + goto block_028D; + + block_028D: + goto block_02E2; + + block_0290: + if (Intrinsic0016(arg_06) != 0x0153) goto block_02E2; + + block_02A0: + if (Item.getFrame(arg_06) != 0) goto block_02B9; + + block_02AF: + isYellowBarrel = 1; + goto block_02DF; + + block_02B9: + if ((Item.getFrame(arg_06) != 1) || (Item.getFrame(arg_06) != 2)) goto block_02DF; + + block_02D5: + isYellowBarrel = 0; + goto block_02DF; + + block_02DF: + goto block_02E2; + + block_02E2: + link = Intrinsic0010(arg_06); + if isYellowBarrel goto block_03FF; + + block_02F8: + if isStandingBarrel goto block_0384; + + block_0300: + spawn class_0A1E_slot_2A(pid, arg_06); + suspend; + set_info(1, 0); + spawn class_0A0C_slot_32(pid, 1, 0x00000000); + suspend; + goto block_04FA; + + block_0381: + goto block_03FC; + + block_0384: + spawn class_0A1E_slot_2A(pid, arg_06); + suspend; + set_info(1, 0); + spawn class_0A0C_slot_32(pid, 1, 0x00000000); + suspend; + goto block_04FA; + + block_03FC: + goto block_04FA; + + block_03FF: + if isStandingBarrel goto block_0482; + + block_0407: + spawn class_0A1E_slot_2A(pid, arg_06); + suspend; + set_info(1, 0); + spawn class_0A0C_slot_32(pid, 1, 0x00000000); + suspend; + goto block_04FA; + + block_047F: + goto block_04FA; + + block_0482: + spawn class_0A1E_slot_2A(pid, arg_06); + suspend; + set_info(1, 0); + spawn class_0A0C_slot_32(pid, 1, 0x00000000); + suspend; + goto block_04FA; + + block_04FA: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BARRELEW/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/BARRELEW/slot_06_gotHit.txt new file mode 100644 index 0000000..d6b3334 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BARRELEW/slot_06_gotHit.txt @@ -0,0 +1,15 @@ +function barrelew_gotHit() /* entry=61 class_id=0x0153 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A00_slot_20(pid, vel, ref, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BARRELNS/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/BARRELNS/slot_06_gotHit.txt new file mode 100644 index 0000000..6286e14 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BARRELNS/slot_06_gotHit.txt @@ -0,0 +1,15 @@ +function barrelns_gotHit() /* entry=60 class_id=0x0152 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A00_slot_20(pid, vel, ref, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BARRELNW/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/BARRELNW/slot_06_gotHit.txt new file mode 100644 index 0000000..39a0241 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BARRELNW/slot_06_gotHit.txt @@ -0,0 +1,15 @@ +function barrelnw_gotHit() /* entry=62 class_id=0x0154 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A00_slot_20(pid, vel, ref, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BARRELS/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/BARRELS/slot_06_gotHit.txt new file mode 100644 index 0000000..09af39c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BARRELS/slot_06_gotHit.txt @@ -0,0 +1,15 @@ +function barrels_gotHit() /* entry=59 class_id=0x0151 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A00_slot_20(pid, vel, ref, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BARRELSE/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/BARRELSE/slot_06_gotHit.txt new file mode 100644 index 0000000..f9fc433 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BARRELSE/slot_06_gotHit.txt @@ -0,0 +1,15 @@ +function barrelse_gotHit() /* entry=63 class_id=0x0155 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A00_slot_20(pid, vel, ref, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BARRELUP/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/BARRELUP/slot_06_gotHit.txt new file mode 100644 index 0000000..c6adb52 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BARRELUP/slot_06_gotHit.txt @@ -0,0 +1,15 @@ +function barrelup_gotHit() /* entry=34 class_id=0x00AA slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A00_slot_20(pid, vel, ref, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BART/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/BART/slot_01_use.txt new file mode 100644 index 0000000..897afa0 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BART/slot_01_use.txt @@ -0,0 +1,28 @@ +function bart_use() /* entry=117 class_id=0x01F5 slot=0x01 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + class_0A0C_slot_33(0x021B, *(arg_06)); + + block_00FC: + if (Item.getFrame(arg_06) > 1) goto block_0151; + + block_0111: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + goto block_00FC; + + block_0151: + spawn class_0A0C_slot_21(pid, 0x00E8, 0x00000000); + suspend; + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + spawn class_01F5_enterFastArea(arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BART/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/BART/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..f9a3c74 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BART/slot_0F_enterFastArea.txt @@ -0,0 +1,108 @@ +function bart_enterFastArea() /* entry=117 class_id=0x01F5 slot=0x0F */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + counter2, /* [BP-04h] type=0x69 */ + rndNum; /* [BP-06h] type=0x69 */ + + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + + block_01E2: + suspend; + class_0A0C_slot_20(100); + if (retval > 50) goto block_0318; + + block_0205: + class_0A0C_slot_20(pid, 120); + spawn class_0A0C_slot_32((retval + 60), 0x00000000); + suspend; + class_0A0C_slot_20(5); + rndNum = (retval + 4); + counter = 0; + + block_025C: + if (counter <= rndNum) goto block_0315; + + block_0267: + counter2 = 1; + + block_026E: + if (counter2 <= 7) goto block_02B6; + + block_0276: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter2 = (1 + counter2); + goto block_026E; + + block_02B6: + counter2 = 1; + + block_02BD: + if (counter2 <= 7) goto block_0308; + + block_02C5: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter2 = (1 + counter2); + goto block_02BD; + + block_0308: + counter = (1 + counter); + goto block_025C; + + block_0315: + goto block_046D; + + block_0318: + counter = 1; + + block_031F: + if (counter <= 16) goto block_0367; + + block_0327: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_031F; + + block_0367: + class_0A0C_slot_20(pid, 60); + spawn class_0A0C_slot_32((retval + 60), 0x00000000); + suspend; + counter = 0; + + block_039F: + if (counter <= 3) goto block_03EA; + + block_03A7: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_039F; + + block_03EA: + class_0A0C_slot_20(pid, 120); + spawn class_0A0C_slot_32((retval + 60), 0x00000000); + suspend; + counter = 0; + + block_0422: + if (counter <= 14) goto block_046D; + + block_042A: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0422; + + block_046D: + goto block_01E2; + + block_0470: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BASEGUN/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/BASEGUN/slot_06_gotHit.txt new file mode 100644 index 0000000..2220b05 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BASEGUN/slot_06_gotHit.txt @@ -0,0 +1,14 @@ +function basegun_gotHit() /* entry=270 class_id=0x04C8 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A1A_slot_49(vel, ref, arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BASEGUN/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/BASEGUN/slot_0A_equip.txt new file mode 100644 index 0000000..c02183b --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BASEGUN/slot_0A_equip.txt @@ -0,0 +1,20 @@ +function basegun_equip() /* entry=270 class_id=0x04C8 slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (Item.pop() != 0) goto block_0290; + + block_0265: + spawn class_0A1A_slot_24(pid, arg_0A, Item.pop(), arg_06); + suspend; + goto block_02B7; + + block_0290: + spawn class_0A1A_slot_24(pid, arg_0A, global[0x003C], arg_06); + suspend; + + block_02B7: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BASEGUN/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/BASEGUN/slot_0B_unequip.txt new file mode 100644 index 0000000..94db2fa --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BASEGUN/slot_0B_unequip.txt @@ -0,0 +1,17 @@ +function basegun_unequip() /* entry=270 class_id=0x04C8 slot=0x0B */ +{ + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 4) goto block_0160; + + block_015A: + goto block_017B; + + block_0160: + spawn class_0A1A_slot_27(arg_06); + + block_017B: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BASEGUN/slot_0E_calledFromAnim.txt b/USECODE/EUSECODE_extracted/pseudocode/BASEGUN/slot_0E_calledFromAnim.txt new file mode 100644 index 0000000..d0db742 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BASEGUN/slot_0E_calledFromAnim.txt @@ -0,0 +1,35 @@ +function basegun_calledFromAnim() /* entry=270 class_id=0x04C8 slot=0x0E */ +{ + var + referent, /* [BP+00h] type=0x69 */ + n, /* [BP-02h] type=0x24 */ + dir, /* [BP-04h] type=0x69 */ + b, /* [BP-06h] type=0x69 */ + item; /* [BP-08h] type=0x24 */ + + entry: + set_info(0x021A, *(arg_06)); + process_exclude(); + n = *(arg_06); + dir = Intrinsic00FA(n); + b = Item.push(n); + if ((b != 13) || (b != 8)) goto block_03A3; + + block_0325: + class_0A1A_slot_40(0, 5, dir, dir, arg_06); + class_0A1A_slot_3F(retval, dir, arg_06); + class_0A1A_slot_3E(retval, dir, arg_06); + class_0A1A_slot_43(0, 5, dir, dir, arg_06); + class_0A1A_slot_42(retval, dir, arg_06); + class_0A1A_slot_41(retval, dir, arg_06); + goto block_0412; + + block_03A3: + set_info(0x00F0, 0); + spawn class_0A1E_slot_28(pid, 1, 2, n); + suspend; + + block_0412: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BASEGUN/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/BASEGUN/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..3722f44 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BASEGUN/slot_0F_enterFastArea.txt @@ -0,0 +1,17 @@ +function basegun_enterFastArea() /* entry=270 class_id=0x04C8 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 4) goto block_0103; + + block_00FD: + goto block_011E; + + block_0103: + spawn class_0A1A_slot_27(arg_06); + + block_011E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BASEGUN/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/BASEGUN/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..1318345 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BASEGUN/slot_10_leaveFastArea.txt @@ -0,0 +1,11 @@ +function basegun_leaveFastArea() /* entry=270 class_id=0x04C8 slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + /* bit_not */ + class_0A0C_slot_33(1, *(arg_06)); + class_0A0C_slot_33(0x020A, *(arg_06)); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BBETTY/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/BBETTY/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..34b1631 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BBETTY/slot_10_leaveFastArea.txt @@ -0,0 +1,9 @@ +function bbetty_leaveFastArea() /* entry=371 class_id=0x0A01 slot=0x10 */ +{ + entry: + set_info(0x0001, *(arg_06)); + process_exclude(); + class_0A0C_slot_33(1, *(arg_06)); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BBETTY/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/BBETTY/slot_20_slot_20.txt new file mode 100644 index 0000000..8517563 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BBETTY/slot_20_slot_20.txt @@ -0,0 +1,56 @@ +function bbetty_slot_20() /* entry=371 class_id=0x0A01 slot=0x20 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + counter, /* [BP-04h] type=0x69 */ + counter2, /* [BP-06h] type=0x69 */ + total; /* [BP-08h] type=0x69 */ + + entry: + set_info(0x0205, *(arg_06)); + if (Intrinsic0016(arg_06) != 0x02C9) goto block_0232; + + block_010F: + counter = 0; + + block_0116: + if (counter <= 4) goto block_0219; + + block_011E: + total = 0; + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x6 */ + + block_0142: + if condition goto block_015E; + + block_0145: + total = (1 + total); + /* loopnext */ + goto block_0142; + + block_015E: + counter2 = 1; + + block_019B: + if (counter2 <= total) goto block_01E6; + + block_01A6: + item = Intrinsic0023(); + counter2 = (1 + counter2); + goto block_019B; + + block_01E6: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0116; + + block_0219: + + block_0232: + spawn class_0A01_slot_21(arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BBETTY/slot_21_slot_21.txt b/USECODE/EUSECODE_extracted/pseudocode/BBETTY/slot_21_slot_21.txt new file mode 100644 index 0000000..22ec31a --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BBETTY/slot_21_slot_21.txt @@ -0,0 +1,124 @@ +function bbetty_slot_21() /* entry=371 class_id=0x0A01 slot=0x21 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + x, /* [BP-02h] type=0x69 */ + y, /* [BP-04h] type=0x69 */ + xx, /* [BP-06h] type=0x69 */ + yy, /* [BP-08h] type=0x69 */ + counter, /* [BP-0Ah] type=0x69 */ + dir, /* [BP-0Bh] type=0x62 */ + item3; /* [BP-0Dh] type=0x24 */ + + entry: + set_info(0x00F0, *(arg_06)); + spawn class_0A0C_slot_32(pid, 60, 0x00000000); + suspend; + + block_02BB: + suspend; + if Item.getCX(arg_06) goto block_0312; + + block_02D7: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + dir = Intrinsic0027(Intrinsic0013(Item.legal_create(8, 0, 8)), Item.legal_create(arg_06), Intrinsic0013(arg_06)); + goto block_0331; + + block_0312: + dir = (1 + dir); + if (dir > 7) goto block_0331; + + block_032A: + dir = 0; + + block_0331: + if (dir != 0) goto block_0358; + + block_0339: + x = 0; + y = -1; + xx = -16; + yy = -48; + goto block_0469; + + block_0358: + if (dir != 1) goto block_037F; + + block_0360: + x = 1; + y = -1; + xx = 16; + yy = -48; + goto block_0469; + + block_037F: + if (dir != 2) goto block_03A6; + + block_0387: + x = 1; + y = 0; + xx = 16; + yy = -16; + goto block_0469; + + block_03A6: + if (dir != 3) goto block_03CD; + + block_03AE: + x = 1; + y = 1; + xx = 16; + yy = 16; + goto block_0469; + + block_03CD: + if (dir != 4) goto block_03F4; + + block_03D5: + x = 0; + y = 1; + xx = -16; + yy = 16; + goto block_0469; + + block_03F4: + if (dir != 5) goto block_041B; + + block_03FC: + x = -1; + y = 1; + xx = -48; + yy = 16; + goto block_0469; + + block_041B: + if (dir != 6) goto block_0442; + + block_0423: + x = -1; + y = 0; + xx = -48; + yy = -16; + goto block_0469; + + block_0442: + if (dir != 7) goto block_0469; + + block_044A: + x = -1; + y = -1; + xx = -48; + yy = -48; + goto block_0469; + + block_0469: + class_0A0C_slot_20(8, 30, 15); + spawn class_0A0C_slot_32(pid, ((5 - Intrinsic0029()) * 20), 0x00000000); + suspend; + goto block_02BB; + + block_051B: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BBOX/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/BBOX/slot_06_gotHit.txt new file mode 100644 index 0000000..c6524b0 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BBOX/slot_06_gotHit.txt @@ -0,0 +1,49 @@ +function bbox_gotHit() /* entry=300 class_id=0x0525 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if retval goto block_01F2; + + block_00FD: + if (!Item.getFrame(arg_06)) goto block_014E; + + block_0110: + spawn class_0A1E_slot_28(pid, 0, 0, arg_06); + suspend; + goto block_01F2; + + block_014E: + spawn class_0A1E_slot_27(pid, 100, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_01AE; + + block_017E: + class_0A0C_slot_20(1); + if retval goto block_019E; + + block_018E: + goto block_01AB; + + block_019E: + + block_01AB: + goto block_01F2; + + block_01AE: + spawn class_0A1E_slot_2A(pid, arg_06); + suspend; + spawn class_0A1E_slot_28(pid, 1, 1, arg_06); + suspend; + + block_01F2: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BBTRIP/slot_07_hatch.txt b/USECODE/EUSECODE_extracted/pseudocode/BBTRIP/slot_07_hatch.txt new file mode 100644 index 0000000..0948c52 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BBTRIP/slot_07_hatch.txt @@ -0,0 +1,35 @@ +function bbtrip_hatch() /* entry=351 class_id=0x090B slot=0x07 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + bbetty; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x0210, *(arg_06)); + process_exclude(); + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0109: + if condition goto block_0149; + + block_010C: + if (!Item.getFrame(item)) goto block_0145; + + block_011F: + bbetty = item; + spawn class_0A01_slot_20(pid, bbetty); + suspend; + + block_0145: + /* loopnext */ + goto block_0109; + + block_0149: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BETTY/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/BETTY/slot_0A_equip.txt new file mode 100644 index 0000000..6ad2442 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BETTY/slot_0A_equip.txt @@ -0,0 +1,26 @@ +function betty_equip() /* entry=123 class_id=0x021D slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if arg_0A goto block_0139; + + block_00F3: + if (Item.getStatus(arg_06) & 0x1000) goto block_010C; + + block_0106: + goto block_0158; + + block_010C: + class_0A1E_slot_23(0x1000, arg_06); + spawn class_0A01_slot_20(arg_06); + goto block_0158; + + block_0139: + class_0A1E_slot_24(0x1000, arg_06); + class_0A0C_slot_33(1, *(arg_06)); + + block_0158: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BETTYUP/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/BETTYUP/slot_06_gotHit.txt new file mode 100644 index 0000000..a6a9969 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BETTYUP/slot_06_gotHit.txt @@ -0,0 +1,25 @@ +function bettyup_gotHit() /* entry=151 class_id=0x02C9 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A1E_slot_27(pid, 0x00C8, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_015A; + + block_0154: + goto block_019F; + + block_015A: + + block_019F: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BETTYUP/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/BETTYUP/slot_0A_equip.txt new file mode 100644 index 0000000..b34c84c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BETTYUP/slot_0A_equip.txt @@ -0,0 +1,27 @@ +function bettyup_equip() /* entry=151 class_id=0x02C9 slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if arg_0A goto block_0230; + + block_01EA: + if (Item.getStatus(arg_06) & 0x1000) goto block_0203; + + block_01FD: + goto block_0261; + + block_0203: + class_0A1E_slot_23(0x1000, arg_06); + spawn class_0A01_slot_20(arg_06); + goto block_0261; + + block_0230: + class_0A1E_slot_24(0x1000, arg_06); + class_0A0C_slot_33(0x0205, *(arg_06)); + class_0A0C_slot_33(0x00F0, *(arg_06)); + + block_0261: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BETTYUP/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/BETTYUP/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..9b45da8 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BETTYUP/slot_0F_enterFastArea.txt @@ -0,0 +1,9 @@ +function bettyup_enterFastArea() /* entry=151 class_id=0x02C9 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + spawn class_0A01_slot_20(arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BIGCAN/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/BIGCAN/slot_06_gotHit.txt new file mode 100644 index 0000000..4418516 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BIGCAN/slot_06_gotHit.txt @@ -0,0 +1,41 @@ +function bigcan_gotHit() /* entry=170 class_id=0x0313 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + fram, /* [BP-02h] type=0x69 */ + lid; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + fram = Item.getFrame(arg_06); + class_0A0C_slot_2C(vel, ref); + if retval goto block_01E8; + + block_010B: + if (fram != 2) goto block_0173; + + block_0119: + class_0A0C_slot_20(2); + class_0A0C_slot_20(4, 5, 4); + class_0A0C_slot_20(retval, 4); + goto block_01E8; + + block_0173: + if (fram != 1) goto block_01B6; + + block_0181: + spawn class_0A1E_slot_28(pid, 0, 1, arg_06); + suspend; + goto block_01E8; + + block_01B6: + spawn class_0A1E_slot_28(pid, 0, 0, arg_06); + suspend; + + block_01E8: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BIGCOMEW/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/BIGCOMEW/slot_06_gotHit.txt new file mode 100644 index 0000000..0b2e107 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BIGCOMEW/slot_06_gotHit.txt @@ -0,0 +1,29 @@ +function bigcomew_gotHit() /* entry=133 class_id=0x0258 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + fram; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + fram = Item.getFrame(arg_06); + if (fram > 2) goto block_010D; + + block_0107: + goto block_0151; + + block_010D: + class_0A0C_slot_2C(vel, ref); + if retval goto block_0151; + + block_011F: + spawn class_0A1E_slot_28(pid, 0, 1, arg_06); + suspend; + + block_0151: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BIGCOMEW/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/BIGCOMEW/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..610f996 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BIGCOMEW/slot_0F_enterFastArea.txt @@ -0,0 +1,8 @@ +function bigcomew_enterFastArea() /* entry=133 class_id=0x0258 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BIGCOMNS/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/BIGCOMNS/slot_06_gotHit.txt new file mode 100644 index 0000000..3973e68 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BIGCOMNS/slot_06_gotHit.txt @@ -0,0 +1,29 @@ +function bigcomns_gotHit() /* entry=132 class_id=0x0257 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + fram; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + fram = Item.getFrame(arg_06); + if (fram > 2) goto block_010D; + + block_0107: + goto block_0151; + + block_010D: + class_0A0C_slot_2C(vel, ref); + if retval goto block_0151; + + block_011F: + spawn class_0A1E_slot_28(pid, 0, 1, arg_06); + suspend; + + block_0151: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BIGCOMNS/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/BIGCOMNS/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..2a4a664 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BIGCOMNS/slot_0F_enterFastArea.txt @@ -0,0 +1,8 @@ +function bigcomns_enterFastArea() /* entry=132 class_id=0x0257 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLACK16/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/BLACK16/slot_06_gotHit.txt new file mode 100644 index 0000000..003aebb --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLACK16/slot_06_gotHit.txt @@ -0,0 +1,50 @@ +function black16_gotHit() /* entry=3 class_id=0x000F slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + n; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if (!retval) goto block_01DB; + + block_0101: + item = ref; + if (!Item.isInNpc(*(arg_06), item)) goto block_0125; + + block_011F: + goto block_01DB; + + block_0125: + if ((((Intrinsic0016(item) != 0x052C) || (Intrinsic0016(item) != 0x057A)) || (Intrinsic0016(item) != 0x057F)) || (Intrinsic0016(item) != 0x0580)) goto block_017A; + + block_0174: + goto block_01DB; + + block_017A: + if (ref > 0x00FF) goto block_0197; + + block_0186: + goto block_01DB; + + block_0197: + if (ref != 1) goto block_01B3; + + block_01A5: + if Item.getQHi() goto block_01B0; + + block_01B0: + goto block_01DB; + + block_01B3: + n = ref; + + block_01DB: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLACK8/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/BLACK8/slot_06_gotHit.txt new file mode 100644 index 0000000..f8f98a3 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLACK8/slot_06_gotHit.txt @@ -0,0 +1,50 @@ +function black8_gotHit() /* entry=1 class_id=0x0003 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + n; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if (!retval) goto block_01DB; + + block_0101: + item = ref; + if (!Item.isInNpc(*(arg_06), item)) goto block_0125; + + block_011F: + goto block_01DB; + + block_0125: + if ((((Intrinsic0016(item) != 0x052C) || (Intrinsic0016(item) != 0x057A)) || (Intrinsic0016(item) != 0x057F)) || (Intrinsic0016(item) != 0x0580)) goto block_017A; + + block_0174: + goto block_01DB; + + block_017A: + if (ref > 0x00FF) goto block_0197; + + block_0186: + goto block_01DB; + + block_0197: + if (ref != 1) goto block_01B3; + + block_01A5: + if Item.getQHi() goto block_01B0; + + block_01B0: + goto block_01DB; + + block_01B3: + n = ref; + + block_01DB: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASER/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASER/slot_20_slot_20.txt new file mode 100644 index 0000000..60c5412 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASER/slot_20_slot_20.txt @@ -0,0 +1,187 @@ +function blaser_slot_20() /* entry=372 class_id=0x0A02 slot=0x20 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + wp, /* [BP-05h] type=0x24 */ + laserList, /* [BP-07h] type=0x6C */ + item, /* [BP-09h] type=0x24 */ + inFastArea, /* [BP-0Bh] type=0x69 */ + dir, /* [BP-0Dh] type=0x69 */ + count, /* [BP-0Fh] type=0x69 */ + h, /* [BP-11h] type=0x69 */ + link, /* [BP-13h] type=0x69 */ + x, /* [BP-15h] type=0x69 */ + y; /* [BP-17h] type=0x69 */ + + entry: + set_info(1, 0); + item = ref; + link = Item.pop(item); + count = 0; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xF7 string_bytes=0x6 loop_type=0x2 */ + + block_0130: + if condition goto block_0185; + + block_0133: + if ((Item.pop(item) != link) && ((Item.getStatus(item) & 0x1000) != 0)) goto block_0181; + + block_0159: + /* create_list element_size=0x2 count=0x1 */ + /* append_list */ + /* free_local_list bp_offset=0xF9 target=[BP-07h] */ + laserList = item; + count = (1 + count); + + block_0181: + /* loopnext */ + goto block_0130; + + block_0185: + if (count != 0) goto block_0198; + + block_0192: + goto block_0485; + + block_0198: + if 1 goto block_0485; + + block_01A0: + inFastArea = 0; + + block_01B0: + foreach_list item -> block_0428; + + block_01B5: + h = Item.getCX(item); + if (h & 8) goto block_01ED; + + block_01CE: + /* create_list element_size=0x2 count=0x1 */ + /* remove_matching_inline element_size=0x2 */ + /* free_local_list bp_offset=0xF9 target=[BP-07h] */ + laserList = item; + goto block_0422; + + block_01ED: + if (Item.getStatus(item) & (0x1000 != 0)) goto block_0217; + + block_0203: + /* create_list element_size=0x2 count=0x1 */ + /* remove_matching_inline element_size=0x2 */ + /* free_local_list bp_offset=0xF9 target=[BP-07h] */ + laserList = item; + goto block_0422; + + block_0217: + if ((Intrinsic002C(item) != 1) && (Intrinsic0016(item) != 0x0476)) goto block_0422; + + block_023A: + inFastArea = (1 + inFastArea); + if (h & 1) goto block_0281; + + block_024F: + if (h & 2) goto block_0267; + + block_025A: + h = (h & 4); + goto block_0274; + + block_0267: + h = ((h & 4) | 2); + + block_0274: + + block_0281: + dir = -1; + if (h & 2) goto block_029A; + + block_0293: + dir = 1; + + block_029A: + x = Intrinsic0013(item); + y = Item.legal_create(item); + if (Intrinsic0016(item) != 0x02C4) goto block_02E6; + + block_02CF: + wp = (x + (dir * 16)); + local_03 = y; + goto block_02FA; + + block_02E6: + wp = x; + local_03 = (y + (dir * 16)); + + block_02FA: + local_01 = Item.getZ(item); + if (Item.pop(0, 0, wp, item) != 0) goto block_0341; + + block_0320: + h = Item.getCX(item); + goto block_041F; + + block_0341: + if (h & 4) goto block_041F; + + block_034C: + if (Intrinsic0016(item) != 0x02C4) goto block_03C2; + + block_0365: + if (Intrinsic002F(wp, 0x02C3, arg_06) != 1) goto block_03B4; + + block_0387: + /* bit_not */ + goto block_03BF; + + block_03B4: + + block_03BF: + goto block_041C; + + block_03C2: + if (Intrinsic002F(wp, 0x02C4, arg_06) != 1) goto block_0411; + + block_03E4: + /* bit_not */ + goto block_041C; + + block_0411: + + block_041C: + goto block_041F; + + block_041F: + goto block_0422; + + block_0422: + goto block_01B0; + + block_0428: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + if (inFastArea != 0) goto block_0482; + + block_0459: + + block_0462: + foreach_list item -> block_047C; + + block_0467: + /* bit_not */ + goto block_0462; + + block_047C: + goto block_0485; + + block_0482: + goto block_0198; + + block_0485: + /* free_local_list bp_offset=0xF9 target=[BP-07h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASER/slot_21_slot_21.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASER/slot_21_slot_21.txt new file mode 100644 index 0000000..a309690 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASER/slot_21_slot_21.txt @@ -0,0 +1,41 @@ +function blaser_slot_21() /* entry=372 class_id=0x0A02 slot=0x21 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + ke, /* [BP+0Ch] type=0x69 */ + n, /* [BP-02h] type=0x24 */ + f, /* [BP-04h] type=0x69 */ + h; /* [BP-06h] type=0x69 */ + + entry: + set_info(1, *(arg_06)); + n = ref; + if Item.isNpc(n) goto block_0635; + + block_052A: + f = Item.getFrame(arg_06); + if (f != 1) goto block_0582; + + block_0543: + h = Item.getCX(arg_06); + goto block_0635; + + block_0582: + if (f != 2) goto block_05EA; + + block_058D: + /* bit_not */ + h = Item.getCX(arg_06); + goto block_0635; + + block_05EA: + spawn class_0A11_slot_2C(pid, *(arg_06), n); + suspend; + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + + block_0635: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_05_hit.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_05_hit.txt new file mode 100644 index 0000000..a8f943a --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_05_hit.txt @@ -0,0 +1,15 @@ +function blaser1_hit() /* entry=239 class_id=0x0443 slot=0x05 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + ke; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020B, *(arg_06)); + process_exclude(); + spawn class_0443_slot_21(pid, ke, ref, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_06_gotHit.txt new file mode 100644 index 0000000..a961886 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_06_gotHit.txt @@ -0,0 +1,15 @@ +function blaser1_gotHit() /* entry=239 class_id=0x0443 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + ke; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0443_slot_21(pid, ke, ref, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_0A_equip.txt new file mode 100644 index 0000000..a91155a --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_0A_equip.txt @@ -0,0 +1,27 @@ +function blaser1_equip() /* entry=239 class_id=0x0443 slot=0x0A */ +{ + var + referent, /* [BP+00h] type=0x69 */ + var, /* [BP+0Ah] type=0x69 */ + h; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (var != 1) goto block_018C; + + block_016B: + h = Item.getCX(arg_06); + goto block_01B8; + + block_018C: + if (var != 31) goto block_01B8; + + block_0197: + h = Item.getCX(arg_06); + goto block_01B8; + + block_01B8: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_0B_unequip.txt new file mode 100644 index 0000000..fe6c04c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_0B_unequip.txt @@ -0,0 +1,14 @@ +function blaser1_unequip() /* entry=239 class_id=0x0443 slot=0x0B */ +{ + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + if ((Item.getStatus(arg_06) & 0x1000) != 0) goto block_012E; + + block_010D: + spawn class_0443_slot_20(*(arg_06), arg_06); + + block_012E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..fda460c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_0F_enterFastArea.txt @@ -0,0 +1,14 @@ +function blaser1_enterFastArea() /* entry=239 class_id=0x0443 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if ((Item.getStatus(arg_06) & 0x1000) != 0) goto block_021A; + + block_0206: + spawn class_0443_slot_20(*(arg_06), arg_06); + + block_021A: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..0f4a9e3 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_10_leaveFastArea.txt @@ -0,0 +1,9 @@ +function blaser1_leaveFastArea() /* entry=239 class_id=0x0443 slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + /* bit_not */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_20_slot_20.txt new file mode 100644 index 0000000..ef110c7 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_20_slot_20.txt @@ -0,0 +1,245 @@ +function blaser1_slot_20() /* entry=239 class_id=0x0443 slot=0x20 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + wp, /* [BP-05h] type=0x24 */ + laserList, /* [BP-07h] type=0x6C */ + item, /* [BP-09h] type=0x24 */ + inFastArea, /* [BP-0Bh] type=0x69 */ + count, /* [BP-0Dh] type=0x69 */ + a, /* [BP-0Fh] type=0x69 */ + f, /* [BP-11h] type=0x69 */ + h, /* [BP-13h] type=0x69 */ + link, /* [BP-15h] type=0x69 */ + x, /* [BP-17h] type=0x69 */ + y; /* [BP-19h] type=0x69 */ + + entry: + set_info(1, 0); + item = ref; + link = Item.pop(item); + count = 0; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF7 string_bytes=0x6 loop_type=0x2 */ + + block_0370: + if condition goto block_03E6; + + block_0373: + if ((Item.pop(item) != link) && ((Item.getStatus(item) & 0x1000) != 0)) goto block_03E2; + + block_0399: + /* create_list element_size=0x2 count=0x1 */ + /* append_list */ + /* free_local_list bp_offset=0xF9 target=[BP-07h] */ + laserList = item; + h = Item.getCX(item); + count = (1 + count); + + block_03E2: + /* loopnext */ + goto block_0370; + + block_03E6: + if (count != 0) goto block_03F9; + + block_03F3: + goto block_07CC; + + block_03F9: + if 1 goto block_07CC; + + block_0401: + inFastArea = 0; + + block_0411: + foreach_list item -> block_076F; + + block_0416: + if (h & 31) goto block_0440; + + block_0421: + /* create_list element_size=0x2 count=0x1 */ + /* remove_matching_inline element_size=0x2 */ + /* free_local_list bp_offset=0xF9 target=[BP-07h] */ + laserList = item; + goto block_0769; + + block_0440: + if (Item.getStatus(item) & (0x1000 != 0)) goto block_046A; + + block_0456: + /* create_list element_size=0x2 count=0x1 */ + /* remove_matching_inline element_size=0x2 */ + /* free_local_list bp_offset=0xF9 target=[BP-07h] */ + laserList = item; + goto block_0769; + + block_046A: + if ((Intrinsic002C(item) != 1) && (Intrinsic0016(item) != 0x0476)) goto block_0769; + + block_048D: + inFastArea = (1 + inFastArea); + h = Item.getCX(item); + f = Item.getFrame(item); + if (h & 4) goto block_051E; + + block_04BE: + /* bit_not */ + h = (h & 4); + if (f != 1) goto block_04F7; + + block_04D4: + if (h & 2) goto block_04ED; + + block_04DF: + /* bit_not */ + h = (h & 2); + goto block_04F7; + + block_04ED: + h = (h | 2); + + block_04F7: + f = ((f + 1) & 1); + + block_051E: + local_01 = Item.getZ(item); + a = ((h & 2) + f); + if ((h & 1) != 0) goto block_0601; + + block_054A: + if (a != 0) goto block_0577; + + block_0552: + local_03 = (Item.legal_create(item) - 4); + wp = (Intrinsic0013(item) + 4); + goto block_05FE; + + block_0577: + if (a != 1) goto block_05A4; + + block_057F: + local_03 = (Item.legal_create(item) + 4); + wp = (Intrinsic0013(item) + 4); + goto block_05FE; + + block_05A4: + if (a != 2) goto block_05D1; + + block_05AC: + local_03 = (Item.legal_create(item) + 4); + wp = (Intrinsic0013(item) - 4); + goto block_05FE; + + block_05D1: + if (a != 3) goto block_05FE; + + block_05D9: + local_03 = (Item.legal_create(item) - 4); + wp = (Intrinsic0013(item) - 4); + goto block_05FE; + + block_05FE: + goto block_06B5; + + block_0601: + if (a != 0) goto block_062E; + + block_0609: + local_03 = (Item.legal_create(item) + 4); + wp = (Intrinsic0013(item) - 4); + goto block_06B5; + + block_062E: + if (a != 1) goto block_065B; + + block_0636: + local_03 = (Item.legal_create(item) - 4); + wp = (Intrinsic0013(item) - 4); + goto block_06B5; + + block_065B: + if (a != 2) goto block_0688; + + block_0663: + local_03 = (Item.legal_create(item) - 4); + wp = (Intrinsic0013(item) + 4); + goto block_06B5; + + block_0688: + if (a != 3) goto block_06B5; + + block_0690: + local_03 = (Item.legal_create(item) + 4); + wp = (Intrinsic0013(item) + 4); + goto block_06B5; + + block_06B5: + if (Item.pop(0, 0, wp, item) != 0) goto block_0740; + + block_06CD: + h = Item.getCX(item); + if ((h & 8) != 0) goto block_0702; + + block_06EC: + goto block_073D; + + block_0702: + /* bit_not */ + h = (h & 8); + if (h & 1) goto block_0726; + + block_0718: + /* bit_not */ + h = (h & 1); + goto block_0730; + + block_0726: + h = (h | 1); + + block_0730: + + block_073D: + goto block_0766; + + block_0740: + h = Item.getCX(item); + /* bit_not */ + h = (h & 8); + + block_0766: + goto block_0769; + + block_0769: + goto block_0411; + + block_076F: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + if (inFastArea != 0) goto block_07C9; + + block_07A0: + + block_07A9: + foreach_list item -> block_07C3; + + block_07AE: + /* bit_not */ + goto block_07A9; + + block_07C3: + goto block_07CC; + + block_07C9: + goto block_03F9; + + block_07CC: + /* free_local_list bp_offset=0xF9 target=[BP-07h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_21_slot_21.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_21_slot_21.txt new file mode 100644 index 0000000..7e9653c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASER1/slot_21_slot_21.txt @@ -0,0 +1,23 @@ +function blaser1_slot_21() /* entry=239 class_id=0x0443 slot=0x21 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + ke, /* [BP+0Ch] type=0x69 */ + n; /* [BP-02h] type=0x24 */ + + entry: + set_info(1, *(arg_06)); + n = ref; + if Item.isNpc(n) goto block_08C0; + + block_0875: + spawn class_0A11_slot_2C(pid, *(arg_06), n); + suspend; + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + + block_08C0: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASEREW/slot_05_hit.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASEREW/slot_05_hit.txt new file mode 100644 index 0000000..b5819fa --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASEREW/slot_05_hit.txt @@ -0,0 +1,15 @@ +function blaserew_hit() /* entry=150 class_id=0x02C4 slot=0x05 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + ke; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020B, *(arg_06)); + process_exclude(); + spawn class_0A02_slot_21(pid, ke, ref, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASEREW/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASEREW/slot_06_gotHit.txt new file mode 100644 index 0000000..7cc0358 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASEREW/slot_06_gotHit.txt @@ -0,0 +1,15 @@ +function blaserew_gotHit() /* entry=150 class_id=0x02C4 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + ke; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A02_slot_21(pid, ke, ref, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASEREW/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASEREW/slot_0A_equip.txt new file mode 100644 index 0000000..9874c5a --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASEREW/slot_0A_equip.txt @@ -0,0 +1,27 @@ +function blaserew_equip() /* entry=150 class_id=0x02C4 slot=0x0A */ +{ + var + referent, /* [BP+00h] type=0x69 */ + var, /* [BP+0Ah] type=0x69 */ + h; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (var != 1) goto block_0180; + + block_015F: + h = Item.getCX(arg_06); + goto block_01AC; + + block_0180: + if (var != 31) goto block_01AC; + + block_018B: + h = Item.getCX(arg_06); + goto block_01AC; + + block_01AC: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASEREW/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASEREW/slot_0B_unequip.txt new file mode 100644 index 0000000..d083796 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASEREW/slot_0B_unequip.txt @@ -0,0 +1,14 @@ +function blaserew_unequip() /* entry=150 class_id=0x02C4 slot=0x0B */ +{ + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + if ((Item.getStatus(arg_06) & 0x1000) != 0) goto block_0122; + + block_0101: + spawn class_0A02_slot_20(*(arg_06), arg_06); + + block_0122: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASEREW/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASEREW/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..7328c69 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASEREW/slot_0F_enterFastArea.txt @@ -0,0 +1,14 @@ +function blaserew_enterFastArea() /* entry=150 class_id=0x02C4 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if ((Item.getStatus(arg_06) & 0x1000) != 0) goto block_020E; + + block_01FA: + spawn class_0A02_slot_20(*(arg_06), arg_06); + + block_020E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASEREW/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASEREW/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..e08a2c1 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASEREW/slot_10_leaveFastArea.txt @@ -0,0 +1,9 @@ +function blaserew_leaveFastArea() /* entry=150 class_id=0x02C4 slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + /* bit_not */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASERNS/slot_05_hit.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASERNS/slot_05_hit.txt new file mode 100644 index 0000000..c0e18aa --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASERNS/slot_05_hit.txt @@ -0,0 +1,15 @@ +function blaserns_hit() /* entry=149 class_id=0x02C3 slot=0x05 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + ke; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020B, *(arg_06)); + process_exclude(); + spawn class_0A02_slot_21(pid, ke, ref, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASERNS/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASERNS/slot_06_gotHit.txt new file mode 100644 index 0000000..39eeb1b --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASERNS/slot_06_gotHit.txt @@ -0,0 +1,15 @@ +function blaserns_gotHit() /* entry=149 class_id=0x02C3 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + ke; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A02_slot_21(pid, ke, ref, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASERNS/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASERNS/slot_0A_equip.txt new file mode 100644 index 0000000..5c4e34c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASERNS/slot_0A_equip.txt @@ -0,0 +1,27 @@ +function blaserns_equip() /* entry=149 class_id=0x02C3 slot=0x0A */ +{ + var + referent, /* [BP+00h] type=0x69 */ + var, /* [BP+0Ah] type=0x69 */ + h; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (var != 1) goto block_0180; + + block_015F: + h = Item.getCX(arg_06); + goto block_01AC; + + block_0180: + if (var != 31) goto block_01AC; + + block_018B: + h = Item.getCX(arg_06); + goto block_01AC; + + block_01AC: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASERNS/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASERNS/slot_0B_unequip.txt new file mode 100644 index 0000000..7aa91d2 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASERNS/slot_0B_unequip.txt @@ -0,0 +1,14 @@ +function blaserns_unequip() /* entry=149 class_id=0x02C3 slot=0x0B */ +{ + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + if ((Item.getStatus(arg_06) & 0x1000) != 0) goto block_0122; + + block_0101: + spawn class_0A02_slot_20(*(arg_06), arg_06); + + block_0122: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASERNS/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASERNS/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..9b4bed0 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASERNS/slot_0F_enterFastArea.txt @@ -0,0 +1,14 @@ +function blaserns_enterFastArea() /* entry=149 class_id=0x02C3 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if ((Item.getStatus(arg_06) & 0x1000) != 0) goto block_020E; + + block_01FA: + spawn class_0A02_slot_20(*(arg_06), arg_06); + + block_020E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASERNS/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASERNS/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..2569abc --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASERNS/slot_10_leaveFastArea.txt @@ -0,0 +1,9 @@ +function blaserns_leaveFastArea() /* entry=149 class_id=0x02C3 slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + /* bit_not */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASTPAC/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASTPAC/slot_01_use.txt new file mode 100644 index 0000000..4c95568 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASTPAC/slot_01_use.txt @@ -0,0 +1,280 @@ +function blastpac_use() /* entry=207 class_id=0x039B slot=0x01 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + InCrouch, /* [BP-01h] type=0x62 */ + Blastpac, /* [BP-03h] type=0x24 */ + target, /* [BP-05h] type=0x24 */ + item, /* [BP-07h] type=0x24 */ + counter, /* [BP-09h] type=0x69 */ + lastAnim, /* [BP-0Bh] type=0x69 */ + xOff, /* [BP-0Dh] type=0x69 */ + yOff, /* [BP-0Fh] type=0x69 */ + mine; /* [BP-11h] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + Blastpac = *(arg_06); + set_info(0x00F0, 0); + /* global_address global_id=0x3C */ + lastAnim = Item.push(); + + block_011D: + /* global_address global_id=0x3C */ + if Intrinsic0033() goto block_0153; + + block_012D: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_011D; + + block_0153: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF9 string_bytes=0x6 loop_type=0x2 */ + + block_0171: + if condition goto block_0233; + + block_0174: + target = item; + + block_017B: + class_0A0C_slot_29(target, global[0x003C]); + if ((retval > 3) && (counter != 6)) goto block_01FC; + + block_019E: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + spawn class_0A11_slot_22(Item.getDirToItem(Intrinsic0013(pid, 1, Item.legal_create(Item.legal_create(target), Intrinsic0013(target))))); + suspend; + counter = (1 + counter); + goto block_017B; + + block_01FC: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + suspend; + goto block_0233; + + block_022F: + /* loopnext */ + goto block_0171; + + block_0233: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 0) goto block_0253; + + block_0245: + xOff = -1; + yOff = -3; + goto block_0415; + + block_0253: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 1) goto block_0271; + + block_0263: + xOff = 0; + yOff = -3; + goto block_0415; + + block_0271: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 2) goto block_028F; + + block_0281: + xOff = 1; + yOff = -3; + goto block_0415; + + block_028F: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 3) goto block_02AD; + + block_029F: + xOff = 2; + yOff = -2; + goto block_0415; + + block_02AD: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 4) goto block_02CB; + + block_02BD: + xOff = 2; + yOff = -1; + goto block_0415; + + block_02CB: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 5) goto block_02E9; + + block_02DB: + xOff = 2; + yOff = 0; + goto block_0415; + + block_02E9: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 6) goto block_0307; + + block_02F9: + xOff = 2; + yOff = 2; + goto block_0415; + + block_0307: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 7) goto block_0325; + + block_0317: + xOff = 0; + yOff = 2; + goto block_0415; + + block_0325: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 8) goto block_0343; + + block_0335: + xOff = -1; + yOff = 2; + goto block_0415; + + block_0343: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 9) goto block_0361; + + block_0353: + xOff = -2; + yOff = 2; + goto block_0415; + + block_0361: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 10) goto block_037F; + + block_0371: + xOff = -3; + yOff = 2; + goto block_0415; + + block_037F: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 11) goto block_039D; + + block_038F: + xOff = -3; + yOff = 1; + goto block_0415; + + block_039D: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 12) goto block_03BB; + + block_03AD: + xOff = -3; + yOff = 0; + goto block_0415; + + block_03BB: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 13) goto block_03D9; + + block_03CB: + xOff = -3; + yOff = -1; + goto block_0415; + + block_03D9: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 14) goto block_03F7; + + block_03E9: + xOff = -3; + yOff = -2; + goto block_0415; + + block_03F7: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 15) goto block_0415; + + block_0407: + xOff = -3; + yOff = -3; + goto block_0415; + + block_0415: + if target goto block_061D; + + block_041D: + /* global_address global_id=0x3C */ + if Intrinsic0035() goto block_0437; + + block_042D: + InCrouch = 1; + goto block_046E; + + block_0437: + InCrouch = 0; + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + suspend; + + block_046E: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + spawn class_039B_slot_20(mine, arg_06); + + block_04C5: + /* global_address global_id=0x3C */ + if Intrinsic0033() goto block_04FB; + + block_04D5: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_04C5; + + block_04FB: + spawn class_0A0C_slot_21(pid, 13, 0x00000000); + suspend; + if (!InCrouch) goto block_05C5; + + block_052A: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + suspend; + if target goto block_05C2; + + block_0562: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + suspend; + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + suspend; + + block_05C2: + goto block_061A; + + block_05C5: + spawn class_0A0C_slot_21(pid, 0x00B0, 0x00000000); + suspend; + + block_061A: + goto block_0672; + + block_061D: + spawn class_0A0C_slot_21(pid, 0x00B0, 0x00000000); + suspend; + + block_0672: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLASTPAC/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/BLASTPAC/slot_20_slot_20.txt new file mode 100644 index 0000000..8c0da35 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLASTPAC/slot_20_slot_20.txt @@ -0,0 +1,369 @@ +function blastpac_slot_20() /* entry=207 class_id=0x039B slot=0x20 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + pac, /* [BP+0Ah] type=0x24 */ + item, /* [BP-02h] type=0x24 */ + counter, /* [BP-04h] type=0x69 */ + therm, /* [BP-06h] type=0x24 */ + thermTop, /* [BP-08h] type=0x24 */ + radar, /* [BP-0Ah] type=0x24 */ + radarPart, /* [BP-0Ch] type=0x24 */ + x, /* [BP-0Eh] type=0x69 */ + y, /* [BP-10h] type=0x69 */ + z; /* [BP-12h] type=0x69 */ + + entry: + spawn class_0A0C_slot_32(pid, 60, 0x00000000); + suspend; + set_info(0x00F0, 0); + counter = 1; + + block_0736: + if (counter <= 5) goto block_077E; + + block_073E: + spawn class_0A0C_slot_32(pid, 60, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0736; + + block_077E: + spawn class_0A1E_slot_28(pid, 1, 2, pac); + suspend; + /* global_address global_id=0x3C */ + if (Item.getType() != 1) goto block_0AD9; + + block_07B3: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + /* pop_global global_id=0x20 size=0x1 */ + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0800: + if condition goto block_084E; + + block_0803: + spawn class_0A1E_slot_28(pid, 0, 2, item); + suspend; + therm = item; + /* loopnext */ + goto block_0800; + + block_084E: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_086C: + if condition goto block_08C5; + + block_086F: + spawn class_0A1E_slot_28(pid, 1, 0, item); + suspend; + thermTop = item; + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + /* loopnext */ + goto block_086C; + + block_08C5: + /* global_address global_id=0x3C */ + if Kernel.resetRef() goto block_08DD; + + block_08D7: + goto block_0FF9; + + block_08DD: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_08F9: + if condition goto block_093E; + + block_08FC: + spawn class_0A0C_slot_32(Intrinsic00DA(pid, 20, 10), 0x00000000); + suspend; + /* loopnext */ + goto block_08F9; + + block_093E: + counter = 0; + + block_0947: + if (counter <= 2) goto block_09A3; + + block_094F: + + block_095C: + if Item.touch(22, thermTop) goto block_0996; + + block_096D: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_095C; + + block_0996: + counter = (1 + counter); + goto block_0947; + + block_09A3: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_09E5: + if condition goto block_0A4D; + + block_09E8: + spawn class_0A1E_slot_28(pid, 0, 0, item); + suspend; + spawn class_0A0C_slot_32(Intrinsic00DA(pid, 10, 5), 0x00000000); + suspend; + /* loopnext */ + goto block_09E5; + + block_0A4D: + spawn class_0A0C_slot_32(pid, 0x00C8, 0x00000000); + suspend; + spawn class_0A0C_slot_26(pid, "1c", 0x00000000); + /* free_stack_string value_u8=0x0 target=[SP+00h] */ + suspend; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0AC2: + if condition goto block_0AD4; + + block_0AC5: + /* loopnext */ + goto block_0AC2; + + block_0AD4: + goto block_0FF9; + + block_0AD9: + /* global_address global_id=0x3C */ + if (Item.getType() != 7) goto block_0DFD; + + block_0AE9: + /* pop_global global_id=0x23 size=0x1 */ + spawn class_0A0C_slot_32(1, pid, 10, 0x00000000); + suspend; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0B36: + if condition goto block_0B6E; + + block_0B39: + radar = item; + /* loopnext */ + goto block_0B36; + + block_0B6E: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0B8C: + if condition goto block_0C13; + + block_0B8F: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + x = Intrinsic0013(item); + y = Item.legal_create(item); + z = Item.getZ(item); + /* loopnext */ + goto block_0B8C; + + block_0C13: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0C33: + if condition goto block_0C6F; + + block_0C36: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + /* loopnext */ + goto block_0C33; + + block_0C6F: + spawn class_0A0C_slot_32(pid, 60, 0x00000000); + suspend; + /* global_address global_id=0x3C */ + if Kernel.resetRef() goto block_0CAD; + + block_0CA7: + goto block_0FF9; + + block_0CAD: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0CC9: + if condition goto block_0D0E; + + block_0CCC: + spawn class_0A0C_slot_32(Intrinsic00DA(pid, 20, 10), 0x00000000); + suspend; + /* loopnext */ + goto block_0CC9; + + block_0D0E: + counter = 0; + + block_0D17: + if (counter <= 2) goto block_0D75; + + block_0D1F: + + block_0D2D: + if Item.touch(0x0096, radar) goto block_0D68; + + block_0D3F: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_0D2D; + + block_0D68: + counter = (1 + counter); + goto block_0D17; + + block_0D75: + spawn class_0A0C_slot_32(pid, 0x00C8, 0x00000000); + suspend; + spawn class_0A0C_slot_26(pid, "4g", 0x00000000); + /* free_stack_string value_u8=0x0 target=[SP+00h] */ + suspend; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0DE6: + if condition goto block_0DF8; + + block_0DE9: + /* loopnext */ + goto block_0DE6; + + block_0DF8: + goto block_0FF9; + + block_0DFD: + /* global_address global_id=0x3C */ + if (Item.getType() != 29) goto block_0FF9; + + block_0E0D: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + /* pop_global global_id=0x2E size=0x1 */ + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0E5A: + if condition goto block_0EA1; + + block_0E5D: + spawn class_0A1E_slot_28(pid, 0, 2, item); + suspend; + /* loopnext */ + goto block_0E5A; + + block_0EA1: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0EC1: + if condition goto block_0ED5; + + block_0EC4: + /* loopnext */ + goto block_0EC1; + + block_0ED5: + spawn class_0A0C_slot_32(pid, 60, 0x00000000); + suspend; + /* global_address global_id=0x3C */ + if Kernel.resetRef() goto block_0F13; + + block_0F0D: + goto block_0FF9; + + block_0F13: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0F31: + if condition goto block_0F8B; + + block_0F34: + if (Item.pop(item) != 0) goto block_0F87; + + block_0F49: + spawn class_0A0C_slot_32(Intrinsic00DA(pid, 30, 20), 0x00000000); + suspend; + + block_0F87: + /* loopnext */ + goto block_0F31; + + block_0F8B: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0FAB: + if condition goto block_0FE3; + + block_0FAE: + spawn class_0A0C_slot_32(pid, 20, 0x00000000); + suspend; + /* loopnext */ + goto block_0FAB; + + block_0FE3: + spawn class_0A0C_slot_22(0x00000000); + goto block_0FF9; + + block_0FF9: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BLOOD/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/BLOOD/slot_06_gotHit.txt new file mode 100644 index 0000000..e529d86 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BLOOD/slot_06_gotHit.txt @@ -0,0 +1,24 @@ +function blood_gotHit() /* entry=257 class_id=0x04B8 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if (retval != 4) goto block_0166; + + block_0106: + if (((Item.getFrame(arg_06) != 9) || (Item.getFrame(arg_06) != 19)) || (Item.getFrame(arg_06) != 29)) goto block_0166; + + block_0135: + spawn class_0A0C_slot_32(pid, 15, 0x00000000); + suspend; + + block_0166: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BOUNCBOX/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/BOUNCBOX/slot_06_gotHit.txt new file mode 100644 index 0000000..28ba114 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BOUNCBOX/slot_06_gotHit.txt @@ -0,0 +1,146 @@ +function bouncbox_gotHit() /* entry=291 class_id=0x04EF slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + dir, /* [BP-02h] type=0x69 */ + qHi, /* [BP-04h] type=0x69 */ + qLo, /* [BP-06h] type=0x69 */ + item, /* [BP-08h] type=0x24 */ + item2, /* [BP-0Ah] type=0x24 */ + x1, /* [BP-0Ch] type=0x69 */ + y1, /* [BP-0Eh] type=0x69 */ + ammo; /* [BP-10h] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + dir = Item.getCX(arg_06); + item = ref; + if (ref != 0x4000) goto block_02D1; + + block_010F: + class_0A0C_slot_2C(vel, ref); + class_0A0C_slot_2C((retval != 4), vel, ref); + if (retval != 3) goto block_014B; + + block_0145: + goto block_0479; + + block_014B: + if ((dir > 15) && (dir < 32)) goto block_018B; + + block_015F: + dir = (dir + 2); + if (dir > 31) goto block_017E; + + block_0174: + dir = (dir - 16); + + block_017E: + + block_018B: + if (Item.getStatus(arg_06) & 4) goto block_01A8; + + block_019D: + dir = 0x00FF; + goto block_02CE; + + block_01A8: + class_0A0C_slot_2C(vel, ref); + ammo = retval; + if (dir != 0x00FF) goto block_01D7; + + block_01C5: + class_0A0C_slot_20(15); + dir = retval; + goto block_0216; + + block_01D7: + if (dir != 0x00FE) goto block_0216; + + block_01E3: + suspend; + goto block_0479; + + block_0213: + goto block_0216; + + block_0216: + dir = (dir & 15); + if ((dir > 13) || (dir < 3)) goto block_0241; + + block_0234: + y1 = (y1 - 32); + goto block_02A4; + + block_0241: + if ((dir > 1) && (dir < 7)) goto block_0262; + + block_0255: + x1 = (x1 + 32); + goto block_02A4; + + block_0262: + if ((dir > 5) && (dir < 11)) goto block_0283; + + block_0276: + y1 = (y1 + 32); + goto block_02A4; + + block_0283: + if ((dir > 9) && (dir < 15)) goto block_02A4; + + block_0297: + x1 = (x1 - 32); + goto block_02A4; + + block_02A4: + suspend; + + block_02CE: + goto block_0479; + + block_02D1: + if (Intrinsic0016(item) != 0x02C3) goto block_03A5; + + block_02E4: + qHi = Item.getCX(item); + qLo = Item.pop(item); + if Item.getQLo(0, 0x02C4, item2) goto block_03A2; + + block_031F: + if qHi goto block_0373; + + block_0334: + goto block_03A2; + + block_0373: + + block_03A2: + goto block_0479; + + block_03A5: + if (Intrinsic0016(item) != 0x02C4) goto block_0479; + + block_03B8: + qHi = Item.getCX(item); + qLo = Item.pop(item); + if Item.getQLo(0, 0x02C3, item2) goto block_0476; + + block_03F3: + if qHi goto block_0447; + + block_0408: + goto block_0476; + + block_0447: + + block_0476: + goto block_0479; + + block_0479: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BOUNCBOX/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/BOUNCBOX/slot_0A_equip.txt new file mode 100644 index 0000000..84fdc5e --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BOUNCBOX/slot_0A_equip.txt @@ -0,0 +1,8 @@ +function bouncbox_equip() /* entry=291 class_id=0x04EF slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BOX_EW/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/BOX_EW/slot_01_use.txt new file mode 100644 index 0000000..2209a97 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BOX_EW/slot_01_use.txt @@ -0,0 +1,80 @@ +function box_ew_use() /* entry=15 class_id=0x0080 slot=0x01 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if Item.getFrame(arg_06) goto block_0198; + + block_00FA: + + block_0108: + if Item.touch(0x00A7, arg_06) goto block_0143; + + block_011A: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_0108; + + block_0143: + counter = 0; + + block_014A: + if (counter <= 5) goto block_0195; + + block_0152: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_014A; + + block_0195: + goto block_0230; + + block_0198: + + block_01A6: + if Item.touch(0x00A5, arg_06) goto block_01E1; + + block_01B8: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_01A6; + + block_01E1: + counter = 0; + + block_01E8: + if (counter <= 5) goto block_0230; + + block_01F0: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_01E8; + + block_0230: + if (Item.getMapNum(arg_06) != 0) goto block_02AB; + + block_0242: + if (Item.getFrame(arg_06) != 0) goto block_027E; + + block_0254: + spawn class_0A18_slot_20(pid, 1, *(arg_06), arg_06); + suspend; + goto block_02A5; + + block_027E: + spawn class_0A18_slot_20(pid, 0, *(arg_06), arg_06); + suspend; + + block_02A5: + goto block_02AB; + + block_02AB: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BOX_NS/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/BOX_NS/slot_01_use.txt new file mode 100644 index 0000000..8e600e4 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BOX_NS/slot_01_use.txt @@ -0,0 +1,80 @@ +function box_ns_use() /* entry=16 class_id=0x0081 slot=0x01 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if Item.getFrame(arg_06) goto block_0198; + + block_00FA: + + block_0108: + if Item.touch(0x00A7, arg_06) goto block_0143; + + block_011A: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_0108; + + block_0143: + counter = 0; + + block_014A: + if (counter <= 5) goto block_0195; + + block_0152: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_014A; + + block_0195: + goto block_0230; + + block_0198: + + block_01A6: + if Item.touch(0x00A5, arg_06) goto block_01E1; + + block_01B8: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_01A6; + + block_01E1: + counter = 0; + + block_01E8: + if (counter <= 5) goto block_0230; + + block_01F0: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_01E8; + + block_0230: + if (Item.getMapNum(arg_06) != 0) goto block_02AB; + + block_0242: + if (Item.getFrame(arg_06) != 0) goto block_027E; + + block_0254: + spawn class_0A18_slot_20(pid, 1, *(arg_06), arg_06); + suspend; + goto block_02A5; + + block_027E: + spawn class_0A18_slot_20(pid, 0, *(arg_06), arg_06); + suspend; + + block_02A5: + goto block_02AB; + + block_02AB: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_20_slot_20.txt new file mode 100644 index 0000000..64e2e72 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_20_slot_20.txt @@ -0,0 +1,47 @@ +function bridge_slot_20() /* entry=373 class_id=0x0A03 slot=0x20 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + var, /* [BP+0Ah] type=0x69 */ + q; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x0211, *(arg_06)); + if (var != 1) goto block_0195; + + block_0122: + q = Item.pop(arg_06); + spawn class_0A03_slot_22(pid, q, arg_06); + suspend; + /* dword_to_word */ + if (process_result != 1) goto block_0192; + + block_015B: + spawn class_0A03_slot_24(pid, q, arg_06); + suspend; + spawn class_0A03_slot_26(0, q, arg_06); + + block_0192: + goto block_01FF; + + block_0195: + if (var != 2) goto block_01FF; + + block_01A0: + q = Item.pop(arg_06); + spawn class_0A03_slot_23(pid, q, arg_06); + suspend; + /* dword_to_word */ + if (process_result != 1) goto block_01FC; + + block_01D9: + spawn class_0A03_slot_25(pid, q, arg_06); + suspend; + + block_01FC: + goto block_01FF; + + block_01FF: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_21_slot_21.txt b/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_21_slot_21.txt new file mode 100644 index 0000000..1bfa895 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_21_slot_21.txt @@ -0,0 +1,26 @@ +function bridge_slot_21() /* entry=373 class_id=0x0A03 slot=0x21 */ +{ + var + item, /* [BP+06h] type=0x24 */ + newtype, /* [BP+08h] type=0x69 */ + x, /* [BP-02h] type=0x69 */ + item2; /* [BP-04h] type=0x24 */ + + entry: + x = Intrinsic0016(item); + if ((x != 0x0413) || (x != 0x0290)) goto block_026E; + + block_024F: + if (newtype != 0x03A6) goto block_0266; + + block_025B: + newtype = 0x0413; + goto block_026E; + + block_0266: + newtype = 0x0290; + + block_026E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_22_slot_22.txt b/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_22_slot_22.txt new file mode 100644 index 0000000..4fd58d8 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_22_slot_22.txt @@ -0,0 +1,42 @@ +function bridge_slot_22() /* entry=373 class_id=0x0A03 slot=0x22 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + start, /* [BP+0Ah] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + x; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x021B, *(arg_06)); + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_02EA: + if condition goto block_0334; + + block_02ED: + if (Item.getFrame(item) != 0) goto block_0330; + + block_02FF: + x = Item.pop(item); + if (x != start) goto block_0330; + + block_0318: + /* word_to_dword */ + /* pop_result */ + goto block_0340; + + block_0330: + /* loopnext */ + goto block_02EA; + + block_0334: + /* word_to_dword */ + /* pop_result */ + goto block_0340; + + block_0340: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_23_slot_23.txt b/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_23_slot_23.txt new file mode 100644 index 0000000..1c5cf00 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_23_slot_23.txt @@ -0,0 +1,126 @@ +function bridge_slot_23() /* entry=373 class_id=0x0A03 slot=0x23 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + start, /* [BP+0Ah] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + x, /* [BP-04h] type=0x69 */ + end; /* [BP-06h] type=0x69 */ + + entry: + set_info(0x021B, *(arg_06)); + end = 0; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_03AC: + if condition goto block_03F2; + + block_03AF: + x = Item.pop(item); + if (x != start) goto block_03EE; + + block_03C8: + x = Item.getCX(item); + if (x != 0) goto block_03EE; + + block_03E1: + end = x; + goto block_03F2; + + block_03EE: + /* loopnext */ + goto block_03AC; + + block_03F2: + if (end != 0) goto block_0479; + + block_03FF: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_041F: + if condition goto block_0477; + + block_0422: + if (Item.getFrame(item) != 1) goto block_0473; + + block_0434: + x = Item.pop(item); + if (x != start) goto block_0473; + + block_044D: + x = Item.getCX(item); + if (x != 0) goto block_0473; + + block_0466: + end = x; + goto block_0477; + + block_0473: + /* loopnext */ + goto block_041F; + + block_0477: + + block_0479: + if (end != 0) goto block_054A; + + block_0484: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_04A4: + if condition goto block_04DC; + + block_04A7: + x = Item.pop(item); + if (x != end) goto block_04D8; + + block_04C0: + /* word_to_dword */ + /* pop_result */ + goto block_0554; + + block_04D8: + /* loopnext */ + goto block_04A4; + + block_04DC: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_04FE: + if condition goto block_0548; + + block_0501: + if (Item.getFrame(arg_06) != 1) goto block_0544; + + block_0513: + x = Item.pop(item); + if (x != end) goto block_0544; + + block_052C: + /* word_to_dword */ + /* pop_result */ + goto block_0554; + + block_0544: + /* loopnext */ + goto block_04FE; + + block_0548: + + block_054A: + /* word_to_dword */ + /* pop_result */ + goto block_0554; + + block_0554: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_24_slot_24.txt b/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_24_slot_24.txt new file mode 100644 index 0000000..69801d5 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_24_slot_24.txt @@ -0,0 +1,122 @@ +function bridge_slot_24() /* entry=373 class_id=0x0A03 slot=0x24 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + start, /* [BP+0Ah] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + bridgeitems, /* [BP-04h] type=0x6C */ + bridgemax, /* [BP-06h] type=0x69 */ + x, /* [BP-08h] type=0x69 */ + y, /* [BP-0Ah] type=0x69 */ + z; /* [BP-0Ch] type=0x69 */ + + entry: + set_info(0x021B, *(arg_06)); + bridgemax = 0; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_05C8: + if condition goto block_05FC; + + block_05CB: + x = Item.pop(item); + if (x != start) goto block_05F8; + + block_05E4: + bridgemax = Item.getCX(item); + goto block_05FC; + + block_05F8: + /* loopnext */ + goto block_05C8; + + block_05FC: + if (bridgemax != 0) goto block_060F; + + block_0609: + goto block_07AB; + + block_060F: + if (bridgemax < start) goto block_0620; + + block_061A: + goto block_07AB; + + block_0620: + y = start; + + block_0627: + if (y <= bridgemax) goto block_06CF; + + block_0632: + z = y; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0659: + if condition goto block_0699; + + block_065C: + x = Item.pop(item); + if (x != y) goto block_0695; + + block_0675: + /* create_list element_size=0x2 count=0x1 */ + /* append_list */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + bridgeitems = item; + y = (1 + y); + goto block_0699; + + block_0695: + /* loopnext */ + goto block_0659; + + block_0699: + if (z != y) goto block_06CC; + + block_06A6: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + + block_06CC: + goto block_0627; + + block_06CF: + + block_06D8: + foreach_list item -> block_0750; + + block_06DD: + if (Intrinsic002C(item) != 1) goto block_074A; + + block_06EF: + class_0A03_slot_21(0x03A6, item); + spawn class_0A0C_slot_32(pid, 15, 0x00000000); + suspend; + + block_074A: + goto block_06D8; + + block_0750: + + block_0759: + foreach_list item -> block_07AB; + + block_075E: + if (Intrinsic002C(item) != 1) goto block_07A5; + + block_0770: + class_0A03_slot_21(0x03A6, item); + + block_07A5: + goto block_0759; + + block_07AB: + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_25_slot_25.txt b/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_25_slot_25.txt new file mode 100644 index 0000000..c8e0b33 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_25_slot_25.txt @@ -0,0 +1,251 @@ +function bridge_slot_25() /* entry=373 class_id=0x0A03 slot=0x25 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + start, /* [BP+0Ah] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + bridgeitems, /* [BP-04h] type=0x6C */ + bridgemax, /* [BP-06h] type=0x69 */ + x, /* [BP-08h] type=0x69 */ + y, /* [BP-0Ah] type=0x69 */ + z, /* [BP-0Ch] type=0x69 */ + item2, /* [BP-0Eh] type=0x24 */ + item3; /* [BP-10h] type=0x24 */ + + entry: + set_info(0x021B, *(arg_06)); + bridgemax = 0; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0843: + if condition goto block_0877; + + block_0846: + x = Item.pop(item); + if (x != start) goto block_0873; + + block_085F: + bridgemax = Item.getCX(item); + goto block_0877; + + block_0873: + /* loopnext */ + goto block_0843; + + block_0877: + if (bridgemax != 0) goto block_08FD; + + block_0884: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_08A4: + if condition goto block_08EA; + + block_08A7: + if (Item.getFrame(arg_06) != 1) goto block_08E6; + + block_08B9: + x = Item.pop(item); + if (x != start) goto block_08E6; + + block_08D2: + bridgemax = Item.getCX(item); + goto block_08EA; + + block_08E6: + /* loopnext */ + goto block_08A4; + + block_08EA: + if (bridgemax != 0) goto block_08FD; + + block_08F7: + goto block_0C5A; + + block_08FD: + if (bridgemax < start) goto block_090E; + + block_0908: + goto block_0C5A; + + block_090E: + y = bridgemax; + start = (start - 1); + + block_091F: + if (y != start) goto block_0A46; + + block_092A: + z = y; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0951: + if condition goto block_0991; + + block_0954: + x = Item.pop(item); + if (x != y) goto block_098D; + + block_096D: + /* create_list element_size=0x2 count=0x1 */ + /* append_list */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + bridgeitems = item; + y = (y - 1); + goto block_0991; + + block_098D: + /* loopnext */ + goto block_0951; + + block_0991: + if (z != y) goto block_0A43; + + block_099E: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_09BE: + if condition goto block_0A10; + + block_09C1: + if (Item.getFrame(arg_06) != 1) goto block_0A0C; + + block_09D3: + x = Item.pop(item); + if (x != y) goto block_0A0C; + + block_09EC: + /* create_list element_size=0x2 count=0x1 */ + /* append_list */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + bridgeitems = item; + y = (y - 1); + goto block_0A10; + + block_0A0C: + /* loopnext */ + goto block_09BE; + + block_0A10: + if (z != y) goto block_0A43; + + block_0A1D: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + + block_0A43: + goto block_091F; + + block_0A46: + + block_0A4F: + foreach_list item -> block_0B63; + + block_0A54: + if (Intrinsic002C(item) != 1) goto block_0AB6; + + block_0A66: + class_0A03_slot_21(0x0336, item); + spawn class_0A0C_slot_32(pid, 15, 0x00000000); + suspend; + + block_0AB6: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xF2 string_bytes=0x1 loop_type=0x6 */ + + block_0AC4: + if condition goto block_0B5B; + + block_0AC7: + if ((Intrinsic003C(item2) != 6) && (Item.isNpc(item2) != 0)) goto block_0B4C; + + block_0AE9: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF0 string_bytes=0x6 loop_type=0x2 */ + + block_0B05: + if condition goto block_0B17; + + block_0B08: + /* loopnext */ + goto block_0B05; + + block_0B17: + spawn class_0A1E_slot_28(pid, 1, 0, item2); + suspend; + goto block_0B57; + + block_0B4C: + + block_0B57: + /* loopnext */ + goto block_0AC4; + + block_0B5B: + goto block_0A4F; + + block_0B63: + + block_0B6C: + foreach_list item -> block_0C5A; + + block_0B71: + if (Intrinsic002C(item) != 1) goto block_0BAD; + + block_0B83: + class_0A03_slot_21(0x0336, item); + + block_0BAD: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xF2 string_bytes=0x1 loop_type=0x6 */ + + block_0BBB: + if condition goto block_0C52; + + block_0BBE: + if ((Intrinsic003C(item2) != 6) && (Item.isNpc(item2) != 0)) goto block_0C43; + + block_0BE0: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF0 string_bytes=0x6 loop_type=0x2 */ + + block_0BFC: + if condition goto block_0C0E; + + block_0BFF: + /* loopnext */ + goto block_0BFC; + + block_0C0E: + spawn class_0A1E_slot_28(pid, 1, 0, item2); + suspend; + goto block_0C4E; + + block_0C43: + + block_0C4E: + /* loopnext */ + goto block_0BBB; + + block_0C52: + goto block_0B6C; + + block_0C5A: + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_26_slot_26.txt b/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_26_slot_26.txt new file mode 100644 index 0000000..68f7b55 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BRIDGE/slot_26_slot_26.txt @@ -0,0 +1,339 @@ +function bridge_slot_26() /* entry=373 class_id=0x0A03 slot=0x26 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + start, /* [BP+0Ah] type=0x69 */ + end, /* [BP+0Ch] type=0x69 */ + n, /* [BP-02h] type=0x24 */ + item, /* [BP-04h] type=0x24 */ + bridgeitems, /* [BP-06h] type=0x6C */ + bridgemax, /* [BP-08h] type=0x69 */ + x, /* [BP-0Ah] type=0x69 */ + y, /* [BP-0Ch] type=0x69 */ + z, /* [BP-0Eh] type=0x69 */ + a, /* [BP-10h] type=0x69 */ + cycletype, /* [BP-12h] type=0x69 */ + delay, /* [BP-14h] type=0x69 */ + retry, /* [BP-16h] type=0x69 */ + wp, /* [BP-1Bh] type=0x24 */ + item2; /* [BP-1Dh] type=0x24 */ + + entry: + set_info(0x021B, *(arg_06)); + cycletype = 0; + delay = 1; + bridgemax = end; + if (bridgemax != 0) goto block_0D66; + + block_0CFF: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */ + + block_0D1F: + if condition goto block_0D53; + + block_0D22: + x = Item.pop(item); + if (x != start) goto block_0D4F; + + block_0D3B: + bridgemax = Item.getCX(item); + goto block_0D53; + + block_0D4F: + /* loopnext */ + goto block_0D1F; + + block_0D53: + if (bridgemax != 0) goto block_0D66; + + block_0D60: + goto block_12F6; + + block_0D66: + if (bridgemax < start) goto block_0D77; + + block_0D71: + goto block_12F6; + + block_0D77: + y = start; + retry = 100; + + block_0D85: + if (y <= bridgemax) goto block_0EE8; + + block_0D90: + z = y; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */ + + block_0DB7: + if condition goto block_0E74; + + block_0DBA: + x = Item.pop(item); + if (x != y) goto block_0E70; + + block_0DD3: + if (x != (start + 1)) goto block_0E50; + + block_0DE1: + a = Item.getCX(item); + if (a < 0) goto block_0E05; + + block_0DFA: + a = (a + 0x0100); + + block_0E05: + a = (a & 127); + cycletype = (a & 7); + delay = (a / 8); + if (delay != 0) goto block_0E35; + + block_0E2E: + delay = 1; + + block_0E35: + delay = (delay * 5); + if (cycletype != 0) goto block_0E50; + + block_0E4A: + goto block_12F6; + + block_0E50: + /* create_list element_size=0x2 count=0x1 */ + /* append_list */ + /* free_local_list bp_offset=0xFA target=[BP-06h] */ + bridgeitems = item; + y = (1 + y); + goto block_0E74; + + block_0E70: + /* loopnext */ + goto block_0DB7; + + block_0E74: + if (z != y) goto block_0EE5; + + block_0E81: + if (retry != 0) goto block_0EB5; + + block_0E8C: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + goto block_0EE5; + + block_0EB5: + retry = (retry - 1); + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + + block_0EE5: + goto block_0D85; + + block_0EE8: + if (cycletype != 3) goto block_110A; + + block_0EF3: + if 1 goto block_110A; + + block_0EFB: + x = 0; + + block_0F0B: + foreach_list item -> block_0F32; + + block_0F10: + if (Intrinsic002C(item) != 0) goto block_0F2C; + + block_0F22: + x = (1 + x); + + block_0F2C: + goto block_0F0B; + + block_0F32: + if (x != 0) goto block_10E1; + + block_0F3D: + + block_0F46: + foreach_list item -> block_0F9D; + + block_0F4B: + if (x != 0) goto block_0F75; + + block_0F56: + y = Item.getFrame(item); + item2 = item; + x = 1; + goto block_0F97; + + block_0F75: + z = Item.getFrame(item); + y = z; + + block_0F97: + goto block_0F46; + + block_0F9D: + + block_0FB3: + foreach_list item -> block_10E1; + + block_0FB8: + x = Item.getFrame(item); + if (x != 1) goto block_101F; + + block_0FD1: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xE3 string_bytes=0x1 loop_type=0x6 */ + + block_0FDF: + if condition goto block_101A; + + block_0FE2: + n = item2; + class_0A0C_slot_20(pid, 8); + spawn class_0A11_slot_2D(retval, item, n); + suspend; + /* loopnext */ + goto block_0FDF; + + block_101A: + goto block_10DB; + + block_101F: + if (x != 2) goto block_10DB; + + block_102A: + class_0A03_slot_21(0x0336, item); + /* loopscr value_u8=0x24 */ + /* loop current_var=0xE3 string_bytes=0x1 loop_type=0x6 */ + + block_1062: + if condition goto block_1074; + + block_1065: + /* loopnext */ + goto block_1062; + + block_1074: + spawn class_0A0C_slot_32(pid, delay, 0x00000000); + suspend; + if (Item.getFrame(item) != 1) goto block_10D8; + + block_10AE: + class_0A03_slot_21(0x03A6, item); + + block_10D8: + goto block_10DB; + + block_10DB: + goto block_0FB3; + + block_10E1: + spawn class_0A0C_slot_32(pid, delay, 0x00000000); + suspend; + goto block_0EF3; + + block_110A: + + block_1113: + foreach_list item -> block_113D; + + block_1118: + if (Intrinsic002C(item) != 1) goto block_1137; + + block_112A: + + block_1137: + goto block_1113; + + block_113D: + if 1 goto block_12F6; + + block_1145: + + block_114E: + foreach_list item -> block_12F3; + + block_1153: + if (Intrinsic002C(item) != 0) goto block_116B; + + block_1165: + goto block_12F6; + + block_116B: + x = Intrinsic0016(item); + if ((x != 0x0336) || (x != 0x0290)) goto block_1192; + + block_118C: + goto block_12F6; + + block_1192: + if (cycletype != 1) goto block_122B; + + block_119D: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xE3 string_bytes=0x1 loop_type=0x6 */ + + block_11B8: + if condition goto block_11F3; + + block_11BB: + n = item2; + class_0A0C_slot_20(pid, 8); + spawn class_0A11_slot_2D(retval, item, n); + suspend; + /* loopnext */ + goto block_11B8; + + block_11F3: + spawn class_0A0C_slot_32(pid, delay, 0x00000000); + suspend; + goto block_12ED; + + block_122B: + if (cycletype != 2) goto block_12E7; + + block_1236: + class_0A03_slot_21(0x0336, item); + /* loopscr value_u8=0x24 */ + /* loop current_var=0xE3 string_bytes=0x1 loop_type=0x6 */ + + block_126E: + if condition goto block_1280; + + block_1271: + /* loopnext */ + goto block_126E; + + block_1280: + spawn class_0A0C_slot_32(pid, delay, 0x00000000); + suspend; + if (Item.getFrame(item) != 1) goto block_12E4; + + block_12BA: + class_0A03_slot_21(0x03A6, item); + + block_12E4: + goto block_12ED; + + block_12E7: + goto block_12F6; + + block_12ED: + goto block_114E; + + block_12F3: + goto block_113D; + + block_12F6: + /* free_local_list bp_offset=0xFA target=[BP-06h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BROKENCW/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/BROKENCW/slot_06_gotHit.txt new file mode 100644 index 0000000..eaf82ef --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BROKENCW/slot_06_gotHit.txt @@ -0,0 +1,39 @@ +function brokencw_gotHit() /* entry=43 class_id=0x00D1 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x2 */ + + block_0100: + if condition goto block_0188; + + block_0103: + if (Intrinsic0016(item) != 0x00D1) goto block_012C; + + block_011C: + goto block_0184; + + block_012C: + if ((Intrinsic003C(item) != 6) && (Item.isNpc(item) != 0)) goto block_0184; + + block_0151: + spawn class_0A1E_slot_28(pid, 1, 0, item); + suspend; + goto block_0184; + + block_0184: + /* loopnext */ + goto block_0100; + + block_0188: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BRO_BOOT/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/BRO_BOOT/slot_0A_equip.txt new file mode 100644 index 0000000..688898d --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BRO_BOOT/slot_0A_equip.txt @@ -0,0 +1,103 @@ +function bro_boot_equip() /* entry=172 class_id=0x0316 slot=0x0A */ +{ + var + referent, /* [BP+00h] type=0x69 */ + event, /* [BP+0Ah] type=0x69 */ + counter; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (Item.getFrame(arg_06) != 10) goto block_0106; + + block_0100: + goto block_0380; + + block_0106: + class_0A0C_slot_33(0x021B, *(arg_06)); + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + + block_0140: + if (Item.getFrame(arg_06) != 9) goto block_0192; + + block_0152: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + goto block_0140; + + block_0192: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + if (global[0x001F] != 2) goto block_01F2; + + block_01C2: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0315; + + block_01F2: + if (global[0x001F] != 3) goto block_022C; + + block_01FC: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0315; + + block_022C: + if (global[0x001F] != 4) goto block_0266; + + block_0236: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0315; + + block_0266: + if (global[0x001F] != 5) goto block_02A0; + + block_0270: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0315; + + block_02A0: + if (global[0x001F] != 9) goto block_02DA; + + block_02AA: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0315; + + block_02DA: + if (global[0x001F] != 10) goto block_0315; + + block_02E4: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0315; + + block_0315: + counter = 0; + + block_031C: + if (counter <= 9) goto block_0367; + + block_0324: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_031C; + + block_0367: + spawn class_0316_enterFastArea(arg_06); + + block_0380: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BRO_BOOT/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/BRO_BOOT/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..629a60d --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BRO_BOOT/slot_0F_enterFastArea.txt @@ -0,0 +1,96 @@ +function bro_boot_enterFastArea() /* entry=172 class_id=0x0316 slot=0x0F */ +{ + var + referent, /* [BP+00h] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + counter; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if ((((((global[0x001F] != 2) || (global[0x001F] != 3)) || (global[0x001F] != 4)) || (global[0x001F] != 5)) || (global[0x001F] != 9)) || (global[0x001F] != 10)) goto block_0454; + + block_03F2: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0410: + if condition goto block_0442; + + block_0413: + if (Item.pop(item) != Item.pop(arg_06)) goto block_043E; + + block_042F: + class_0A1E_slot_24(0x1000, item); + + block_043E: + /* loopnext */ + goto block_0410; + + block_0442: + goto block_04B9; + + block_0454: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0472: + if condition goto block_04A4; + + block_0475: + if (Item.pop(item) != Item.pop(arg_06)) goto block_04A0; + + block_0491: + class_0A1E_slot_23(0x1000, item); + + block_04A0: + /* loopnext */ + goto block_0472; + + block_04A4: + goto block_05CD; + + block_04B9: + suspend; + class_0A0C_slot_20(pid, 100); + spawn class_0A0C_slot_32((retval + 0x00C8), 0x00000000); + suspend; + counter = 0; + + block_04FF: + if (counter <= 5) goto block_0547; + + block_0507: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_04FF; + + block_0547: + class_0A0C_slot_20(pid, 100); + spawn class_0A0C_slot_32((retval + 100), 0x00000000); + suspend; + counter = 0; + + block_057F: + if (counter <= 5) goto block_05CA; + + block_0587: + spawn class_0A0C_slot_32(pid, 15, 0x00000000); + suspend; + counter = (1 + counter); + goto block_057F; + + block_05CA: + goto block_04B9; + + block_05CD: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BRO_BOOT/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/BRO_BOOT/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..cf9de6a --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BRO_BOOT/slot_10_leaveFastArea.txt @@ -0,0 +1,9 @@ +function bro_boot_leaveFastArea() /* entry=172 class_id=0x0316 slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + class_0A0C_slot_33(0x021B, *(arg_06)); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BUBBLE/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/BUBBLE/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..de5f96f --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BUBBLE/slot_0F_enterFastArea.txt @@ -0,0 +1,61 @@ +function bubble_enterFastArea() /* entry=109 class_id=0x01D6 slot=0x0F */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + + block_00EB: + suspend; + class_0A0C_slot_20(pid, 120); + spawn class_0A0C_slot_32((retval + 0x00DC), 0x00000000); + suspend; + if Intrinsic0007(arg_06) goto block_024B; + + block_0139: + counter = 0; + + block_0140: + if (counter <= 11) goto block_01A3; + + block_0148: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + if (counter != 5) goto block_0196; + + block_0189: + + block_0196: + counter = (1 + counter); + goto block_0140; + + block_01A3: + class_0A0C_slot_20(pid, 120); + spawn class_0A0C_slot_32((retval + 120), 0x00000000); + suspend; + counter = 12; + + block_01E8: + if (counter <= 24) goto block_024B; + + block_01F0: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + if (counter != 17) goto block_023E; + + block_0231: + + block_023E: + counter = (1 + counter); + goto block_01E8; + + block_024B: + goto block_00EB; + + block_024E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/BUBBLE/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/BUBBLE/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..75b2f76 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/BUBBLE/slot_10_leaveFastArea.txt @@ -0,0 +1,9 @@ +function bubble_leaveFastArea() /* entry=109 class_id=0x01D6 slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + class_0A0C_slot_33(0x021B, *(arg_06)); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAMERA/slot_07_hatch.txt b/USECODE/EUSECODE_extracted/pseudocode/CAMERA/slot_07_hatch.txt new file mode 100644 index 0000000..59bf734 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAMERA/slot_07_hatch.txt @@ -0,0 +1,54 @@ +function camera_hatch() /* entry=345 class_id=0x0905 slot=0x07 */ +{ + entry: + set_info(0x0210, *(arg_06)); + process_exclude(); + if ((Intrinsic003F(arg_06) & 127) != 1) goto block_012F; + + block_00FD: + /* global_address global_id=0x3C */ + goto block_0269; + + block_012F: + if ((Intrinsic003F(arg_06) & 127) != 2) goto block_016F; + + block_0141: + /* global_address global_id=0x3C */ + goto block_0269; + + block_016F: + if ((Intrinsic003F(arg_06) & 127) != 3) goto block_01B3; + + block_0181: + /* global_address global_id=0x3C */ + goto block_0269; + + block_01B3: + if ((Intrinsic003F(arg_06) & 127) != 4) goto block_01F3; + + block_01C5: + /* global_address global_id=0x3C */ + goto block_0269; + + block_01F3: + if ((Intrinsic003F(arg_06) & 127) != 5) goto block_0242; + + block_0205: + /* global_address global_id=0x3C */ + goto block_028B; + + block_023F: + goto block_0269; + + block_0242: + /* global_address global_id=0x3C */ + + block_0269: + if (!(Intrinsic003F(arg_06) & 0x0080)) goto block_028B; + + block_0280: + + block_028B: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAMERA/slot_15_unhatch.txt b/USECODE/EUSECODE_extracted/pseudocode/CAMERA/slot_15_unhatch.txt new file mode 100644 index 0000000..251694f --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAMERA/slot_15_unhatch.txt @@ -0,0 +1,17 @@ +function camera_unhatch() /* entry=345 class_id=0x0905 slot=0x15 */ +{ + entry: + set_info(0x0239, *(arg_06)); + process_exclude(); + if ((Intrinsic003F(arg_06) & 127) != 5) goto block_0300; + + block_02C7: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + goto block_0300; + + block_0300: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAMERACO/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/CAMERACO/slot_06_gotHit.txt new file mode 100644 index 0000000..4ea47f3 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAMERACO/slot_06_gotHit.txt @@ -0,0 +1,24 @@ +function cameraco_gotHit() /* entry=88 class_id=0x01B6 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2B(vel, ref); + if (retval && (Item.getFrame(arg_06) != 5)) goto block_0624; + + block_05BA: + class_0A0C_slot_33(0x021B, *(arg_06)); + spawn class_0A18_slot_20(pid, 1, *(arg_06), arg_06); + suspend; + spawn class_0A1E_slot_28(pid, 0, 0, arg_06); + suspend; + + block_0624: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAMERACO/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/CAMERACO/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..e4b5fe1 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAMERACO/slot_0F_enterFastArea.txt @@ -0,0 +1,157 @@ +function cameraco_enterFastArea() /* entry=88 class_id=0x01B6 slot=0x0F */ +{ + var + referent, /* [BP+00h] type=0x69 */ + delay, /* [BP-02h] type=0x69 */ + iSeeYou, /* [BP-04h] type=0x69 */ + trackedEnough, /* [BP-06h] type=0x69 */ + fram, /* [BP-08h] type=0x69 */ + counter, /* [BP-0Ah] type=0x69 */ + sawCrusader, /* [BP-0Ch] type=0x69 */ + movement, /* [BP-0Eh] type=0x69 */ + target, /* [BP-10h] type=0x24 */ + range, /* [BP-12h] type=0x69 */ + dir; /* [BP-14h] type=0x69 */ + + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + delay = ((5 - Intrinsic0029()) * 15); + iSeeYou = (5 - (Intrinsic0029() * 15)); + if (Item.getFrame(arg_06) != 5) goto block_0126; + + block_0120: + goto block_04AD; + + block_0126: + if (!Intrinsic0007(arg_06)) goto block_0162; + + block_0139: + spawn class_0A0C_slot_32(pid, delay, 0x00000000); + suspend; + goto block_0126; + + block_0162: + sawCrusader = 0; + movement = 1; + + block_0170: + suspend; + range = 0; + + block_0184: + if (!Intrinsic0007(arg_06)) goto block_01C0; + + block_0197: + spawn class_0A0C_slot_32(pid, delay, 0x00000000); + suspend; + goto block_0184; + + block_01C0: + spawn class_0A0C_slot_32(pid, delay, 0x00000000); + suspend; + if (Item.pop() != 0) goto block_0204; + + block_01F7: + target = Item.pop(); + goto block_020B; + + block_0204: + target = 1; + + block_020B: + dir = Intrinsic0027(15, 0, 16, Item.legal_create(target), Intrinsic0013(target), Item.legal_create(arg_06), Intrinsic0013(arg_06)); + fram = Item.getFrame(arg_06); + if (((dir / 2) - 1) != fram) goto block_03B7; + + block_0260: + range = Item.getQHi(target, arg_06); + if range goto block_0313; + + block_0278: + sawCrusader = 1; + trackedEnough = (1 + trackedEnough); + if ((trackedEnough > iSeeYou) && (!(Item.getStatus(arg_06) & 0x1000))) goto block_0310; + + block_02A6: + spawn class_0A0C_slot_32(pid, delay, 0x00000000); + suspend; + spawn class_0A18_slot_20(pid, 0, *(arg_06), arg_06); + suspend; + class_0A1E_slot_23(0x1000, arg_06); + + block_0310: + goto block_03B4; + + block_0313: + sawCrusader = 0; + if ((fram + movement) < 0) goto block_0358; + + block_0328: + movement = 1; + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + goto block_0396; + + block_0358: + if ((fram + movement) > 4) goto block_0396; + + block_0366: + movement = -1; + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + goto block_0396; + + block_0396: + + block_03B4: + goto block_04AA; + + block_03B7: + if (trackedEnough && sawCrusader) goto block_03F3; + + block_03C8: + if (((dir / 2) - 1) > fram) goto block_03E9; + + block_03DF: + movement = 1; + goto block_03F0; + + block_03E9: + movement = -1; + + block_03F0: + goto block_0410; + + block_03F3: + trackedEnough = 0; + sawCrusader = 0; + /* bit_not */ + + block_0410: + if ((fram + movement) < 0) goto block_044E; + + block_041E: + movement = 1; + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + goto block_048C; + + block_044E: + if ((fram + movement) > 4) goto block_048C; + + block_045C: + movement = -1; + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + goto block_048C; + + block_048C: + + block_04AA: + goto block_0170; + + block_04AD: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAMERACO/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/CAMERACO/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..756ac3c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAMERACO/slot_10_leaveFastArea.txt @@ -0,0 +1,10 @@ +function cameraco_leaveFastArea() /* entry=88 class_id=0x01B6 slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + class_0A0C_slot_33(0x021B, *(arg_06)); + /* bit_not */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAMERAEW/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/CAMERAEW/slot_06_gotHit.txt new file mode 100644 index 0000000..7336c96 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAMERAEW/slot_06_gotHit.txt @@ -0,0 +1,24 @@ +function cameraew_gotHit() /* entry=110 class_id=0x01D7 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2B(vel, ref); + if (retval && (Item.getFrame(arg_06) != 9)) goto block_061E; + + block_05B4: + class_0A0C_slot_33(0x021B, *(arg_06)); + spawn class_0A18_slot_20(pid, 1, *(arg_06), arg_06); + suspend; + spawn class_0A1E_slot_28(pid, 0, 0, arg_06); + suspend; + + block_061E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAMERAEW/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/CAMERAEW/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..3ea7d3c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAMERAEW/slot_0F_enterFastArea.txt @@ -0,0 +1,157 @@ +function cameraew_enterFastArea() /* entry=110 class_id=0x01D7 slot=0x0F */ +{ + var + referent, /* [BP+00h] type=0x69 */ + delay, /* [BP-02h] type=0x69 */ + iSeeYou, /* [BP-04h] type=0x69 */ + trackedEnough, /* [BP-06h] type=0x69 */ + fram, /* [BP-08h] type=0x69 */ + counter, /* [BP-0Ah] type=0x69 */ + sawCrusader, /* [BP-0Ch] type=0x69 */ + movement, /* [BP-0Eh] type=0x69 */ + target, /* [BP-10h] type=0x24 */ + range, /* [BP-12h] type=0x69 */ + dir; /* [BP-14h] type=0x69 */ + + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + delay = ((5 - Intrinsic0029()) * 5); + iSeeYou = (5 - (Intrinsic0029() * 5)); + if (Item.getFrame(arg_06) != 9) goto block_0126; + + block_0120: + goto block_04A7; + + block_0126: + if (!Intrinsic0007(arg_06)) goto block_0162; + + block_0139: + spawn class_0A0C_slot_32(pid, delay, 0x00000000); + suspend; + goto block_0126; + + block_0162: + sawCrusader = 0; + movement = 1; + + block_0170: + suspend; + range = 0; + + block_0184: + if (!Intrinsic0007(arg_06)) goto block_01C0; + + block_0197: + spawn class_0A0C_slot_32(pid, delay, 0x00000000); + suspend; + goto block_0184; + + block_01C0: + spawn class_0A0C_slot_32(pid, delay, 0x00000000); + suspend; + if (Item.pop() != 0) goto block_0204; + + block_01F7: + target = Item.pop(); + goto block_020B; + + block_0204: + target = 1; + + block_020B: + dir = Intrinsic0027(15, 0, 16, Item.legal_create(target), Intrinsic0013(target), Item.legal_create(arg_06), Intrinsic0013(arg_06)); + fram = Item.getFrame(arg_06); + if ((8 - dir) != fram) goto block_03B4; + + block_025D: + range = Item.getQHi(target, arg_06); + if range goto block_0310; + + block_0275: + sawCrusader = 1; + trackedEnough = (1 + trackedEnough); + if ((trackedEnough > iSeeYou) && (!(Item.getStatus(arg_06) & 0x1000))) goto block_030D; + + block_02A3: + spawn class_0A0C_slot_32(pid, delay, 0x00000000); + suspend; + spawn class_0A18_slot_20(pid, 0, *(arg_06), arg_06); + suspend; + class_0A1E_slot_23(0x1000, arg_06); + + block_030D: + goto block_03B1; + + block_0310: + sawCrusader = 0; + if ((fram + movement) < 0) goto block_0355; + + block_0325: + movement = 1; + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + goto block_0393; + + block_0355: + if ((fram + movement) > 8) goto block_0393; + + block_0363: + movement = -1; + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + goto block_0393; + + block_0393: + + block_03B1: + goto block_04A4; + + block_03B4: + if (trackedEnough && sawCrusader) goto block_03ED; + + block_03C5: + if ((8 - dir) > fram) goto block_03E3; + + block_03D9: + movement = 1; + goto block_03EA; + + block_03E3: + movement = -1; + + block_03EA: + goto block_040A; + + block_03ED: + trackedEnough = 0; + sawCrusader = 0; + /* bit_not */ + + block_040A: + if ((fram + movement) < 0) goto block_0448; + + block_0418: + movement = 1; + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + goto block_0486; + + block_0448: + if ((fram + movement) > 8) goto block_0486; + + block_0456: + movement = -1; + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + goto block_0486; + + block_0486: + + block_04A4: + goto block_0170; + + block_04A7: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAMERAEW/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/CAMERAEW/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..d1484f9 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAMERAEW/slot_10_leaveFastArea.txt @@ -0,0 +1,10 @@ +function cameraew_leaveFastArea() /* entry=110 class_id=0x01D7 slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + class_0A0C_slot_33(0x021B, *(arg_06)); + /* bit_not */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAMERANS/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/CAMERANS/slot_06_gotHit.txt new file mode 100644 index 0000000..6535cfd --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAMERANS/slot_06_gotHit.txt @@ -0,0 +1,24 @@ +function camerans_gotHit() /* entry=90 class_id=0x01B8 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2B(vel, ref); + if (retval && (Item.getFrame(arg_06) != 9)) goto block_061E; + + block_05B4: + class_0A0C_slot_33(0x021B, *(arg_06)); + spawn class_0A18_slot_20(pid, 1, *(arg_06), arg_06); + suspend; + spawn class_0A1E_slot_28(pid, 0, 0, arg_06); + suspend; + + block_061E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAMERANS/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/CAMERANS/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..c58b777 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAMERANS/slot_0F_enterFastArea.txt @@ -0,0 +1,157 @@ +function camerans_enterFastArea() /* entry=90 class_id=0x01B8 slot=0x0F */ +{ + var + referent, /* [BP+00h] type=0x69 */ + delay, /* [BP-02h] type=0x69 */ + iSeeYou, /* [BP-04h] type=0x69 */ + trackedEnough, /* [BP-06h] type=0x69 */ + fram, /* [BP-08h] type=0x69 */ + counter, /* [BP-0Ah] type=0x69 */ + sawCrusader, /* [BP-0Ch] type=0x69 */ + movement, /* [BP-0Eh] type=0x69 */ + target, /* [BP-10h] type=0x24 */ + range, /* [BP-12h] type=0x69 */ + dir; /* [BP-14h] type=0x69 */ + + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + delay = ((5 - Intrinsic0029()) * 5); + iSeeYou = (5 - (Intrinsic0029() * 5)); + if (Item.getFrame(arg_06) != 9) goto block_0126; + + block_0120: + goto block_04A7; + + block_0126: + if (!Intrinsic0007(arg_06)) goto block_0162; + + block_0139: + spawn class_0A0C_slot_32(pid, delay, 0x00000000); + suspend; + goto block_0126; + + block_0162: + sawCrusader = 0; + movement = 1; + + block_0170: + suspend; + range = 0; + + block_0184: + if (!Intrinsic0007(arg_06)) goto block_01C0; + + block_0197: + spawn class_0A0C_slot_32(pid, delay, 0x00000000); + suspend; + goto block_0184; + + block_01C0: + spawn class_0A0C_slot_32(pid, delay, 0x00000000); + suspend; + if (Item.pop() != 0) goto block_0204; + + block_01F7: + target = Item.pop(); + goto block_020B; + + block_0204: + target = 1; + + block_020B: + dir = Intrinsic0027(13, 3, 16, Item.legal_create(target), Intrinsic0013(target), Item.legal_create(arg_06), Intrinsic0013(arg_06)); + fram = Item.getFrame(arg_06); + if ((12 - dir) != fram) goto block_03B4; + + block_025D: + range = Item.getQHi(target, arg_06); + if range goto block_0310; + + block_0275: + sawCrusader = 1; + trackedEnough = (1 + trackedEnough); + if ((trackedEnough > iSeeYou) && (!(Item.getStatus(arg_06) & 0x1000))) goto block_030D; + + block_02A3: + spawn class_0A0C_slot_32(pid, delay, 0x00000000); + suspend; + spawn class_0A18_slot_20(pid, 0, *(arg_06), arg_06); + suspend; + class_0A1E_slot_23(0x1000, arg_06); + + block_030D: + goto block_03B1; + + block_0310: + sawCrusader = 0; + if ((fram + movement) < 0) goto block_0355; + + block_0325: + movement = 1; + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + goto block_0393; + + block_0355: + if ((fram + movement) > 8) goto block_0393; + + block_0363: + movement = -1; + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + goto block_0393; + + block_0393: + + block_03B1: + goto block_04A4; + + block_03B4: + if (trackedEnough && sawCrusader) goto block_03ED; + + block_03C5: + if ((12 - dir) > fram) goto block_03E3; + + block_03D9: + movement = 1; + goto block_03EA; + + block_03E3: + movement = -1; + + block_03EA: + goto block_040A; + + block_03ED: + trackedEnough = 0; + sawCrusader = 0; + /* bit_not */ + + block_040A: + if ((fram + movement) < 0) goto block_0448; + + block_0418: + movement = 1; + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + goto block_0486; + + block_0448: + if ((fram + movement) > 8) goto block_0486; + + block_0456: + movement = -1; + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + goto block_0486; + + block_0486: + + block_04A4: + goto block_0170; + + block_04A7: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAMERANS/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/CAMERANS/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..db9f697 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAMERANS/slot_10_leaveFastArea.txt @@ -0,0 +1,10 @@ +function camerans_leaveFastArea() /* entry=90 class_id=0x01B8 slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + class_0A0C_slot_33(0x021B, *(arg_06)); + /* bit_not */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAM_EW/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/CAM_EW/slot_06_gotHit.txt new file mode 100644 index 0000000..da4ffbf --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAM_EW/slot_06_gotHit.txt @@ -0,0 +1,14 @@ +function cam_ew_gotHit() /* entry=91 class_id=0x01B9 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A1A_slot_49(vel, ref, arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAM_EW/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/CAM_EW/slot_0A_equip.txt new file mode 100644 index 0000000..4dc791b --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAM_EW/slot_0A_equip.txt @@ -0,0 +1,20 @@ +function cam_ew_equip() /* entry=91 class_id=0x01B9 slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (Item.pop() != 0) goto block_0290; + + block_0265: + spawn class_0A1A_slot_24(pid, arg_0A, Item.pop(), arg_06); + suspend; + goto block_02B7; + + block_0290: + spawn class_0A1A_slot_24(pid, arg_0A, global[0x003C], arg_06); + suspend; + + block_02B7: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAM_EW/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/CAM_EW/slot_0B_unequip.txt new file mode 100644 index 0000000..063c02f --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAM_EW/slot_0B_unequip.txt @@ -0,0 +1,17 @@ +function cam_ew_unequip() /* entry=91 class_id=0x01B9 slot=0x0B */ +{ + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 4) goto block_0160; + + block_015A: + goto block_017B; + + block_0160: + spawn class_0A1A_slot_27(arg_06); + + block_017B: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAM_EW/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/CAM_EW/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..8a9385e --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAM_EW/slot_0F_enterFastArea.txt @@ -0,0 +1,17 @@ +function cam_ew_enterFastArea() /* entry=91 class_id=0x01B9 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 4) goto block_0103; + + block_00FD: + goto block_011E; + + block_0103: + spawn class_0A1A_slot_27(arg_06); + + block_011E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAM_EW/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/CAM_EW/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..2e8c9fa --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAM_EW/slot_10_leaveFastArea.txt @@ -0,0 +1,11 @@ +function cam_ew_leaveFastArea() /* entry=91 class_id=0x01B9 slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + /* bit_not */ + class_0A0C_slot_33(1, *(arg_06)); + class_0A0C_slot_33(0x020A, *(arg_06)); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAM_NS/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/CAM_NS/slot_06_gotHit.txt new file mode 100644 index 0000000..7f9811e --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAM_NS/slot_06_gotHit.txt @@ -0,0 +1,14 @@ +function cam_ns_gotHit() /* entry=92 class_id=0x01BA slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A1A_slot_49(vel, ref, arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAM_NS/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/CAM_NS/slot_0A_equip.txt new file mode 100644 index 0000000..50776be --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAM_NS/slot_0A_equip.txt @@ -0,0 +1,20 @@ +function cam_ns_equip() /* entry=92 class_id=0x01BA slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (Item.pop() != 0) goto block_0290; + + block_0265: + spawn class_0A1A_slot_24(pid, arg_0A, Item.pop(), arg_06); + suspend; + goto block_02B7; + + block_0290: + spawn class_0A1A_slot_24(pid, arg_0A, global[0x003C], arg_06); + suspend; + + block_02B7: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAM_NS/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/CAM_NS/slot_0B_unequip.txt new file mode 100644 index 0000000..85834fc --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAM_NS/slot_0B_unequip.txt @@ -0,0 +1,17 @@ +function cam_ns_unequip() /* entry=92 class_id=0x01BA slot=0x0B */ +{ + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 4) goto block_0160; + + block_015A: + goto block_017B; + + block_0160: + spawn class_0A1A_slot_27(arg_06); + + block_017B: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAM_NS/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/CAM_NS/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..d8aa942 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAM_NS/slot_0F_enterFastArea.txt @@ -0,0 +1,17 @@ +function cam_ns_enterFastArea() /* entry=92 class_id=0x01BA slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 4) goto block_0103; + + block_00FD: + goto block_011E; + + block_0103: + spawn class_0A1A_slot_27(arg_06); + + block_011E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CAM_NS/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/CAM_NS/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..597a99f --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CAM_NS/slot_10_leaveFastArea.txt @@ -0,0 +1,11 @@ +function cam_ns_leaveFastArea() /* entry=92 class_id=0x01BA slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + /* bit_not */ + class_0A0C_slot_33(1, *(arg_06)); + class_0A0C_slot_33(0x020A, *(arg_06)); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CARD_EW/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/CARD_EW/slot_01_use.txt new file mode 100644 index 0000000..238636b --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CARD_EW/slot_01_use.txt @@ -0,0 +1,9 @@ +function card_ew_use() /* entry=176 class_id=0x031E slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + spawn class_0A16_slot_21(arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CARD_NS/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/CARD_NS/slot_01_use.txt new file mode 100644 index 0000000..536637d --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CARD_NS/slot_01_use.txt @@ -0,0 +1,9 @@ +function card_ns_use() /* entry=175 class_id=0x031D slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + spawn class_0A16_slot_21(arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CATWALK1/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/CATWALK1/slot_06_gotHit.txt new file mode 100644 index 0000000..f13bb1c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CATWALK1/slot_06_gotHit.txt @@ -0,0 +1,24 @@ +function catwalk1_gotHit() /* entry=28 class_id=0x0096 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if (retval != 4) goto block_010C; + + block_0106: + goto block_014B; + + block_010C: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + + block_014B: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CATWALK2/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/CATWALK2/slot_06_gotHit.txt new file mode 100644 index 0000000..0e6e0a7 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CATWALK2/slot_06_gotHit.txt @@ -0,0 +1,25 @@ +function catwalk2_gotHit() /* entry=51 class_id=0x0132 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if (retval != 4) goto block_010C; + + block_0106: + goto block_01F9; + + block_010C: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + + block_01F9: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CHANGER/slot_07_hatch.txt b/USECODE/EUSECODE_extracted/pseudocode/CHANGER/slot_07_hatch.txt new file mode 100644 index 0000000..e82988d --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CHANGER/slot_07_hatch.txt @@ -0,0 +1,40 @@ +function changer_hatch() /* entry=344 class_id=0x0904 slot=0x07 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + roof, /* [BP-02h] type=0x24 */ + doorQuality, /* [BP-04h] type=0x69 */ + roofQuality, /* [BP-06h] type=0x69 */ + eggNum; /* [BP-08h] type=0x69 */ + + entry: + set_info(0x0210, *(arg_06)); + process_exclude(); + doorQuality = Item.pop(arg_06); + eggNum = Intrinsic003F(arg_06); + if eggNum goto block_016E; + + block_010F: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x46 */ + /* loop current_var=0xFE string_bytes=0xE loop_type=0x2 */ + + block_0141: + if condition goto block_016C; + + block_0144: + roofQuality = Item.pop(roof); + if (roofQuality != eggNum) goto block_0168; + + block_015D: + + block_0168: + /* loopnext */ + goto block_0141; + + block_016C: + + block_016E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CHEDITRO/slot_0E_calledFromAnim.txt b/USECODE/EUSECODE_extracted/pseudocode/CHEDITRO/slot_0E_calledFromAnim.txt new file mode 100644 index 0000000..eed3bdf --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CHEDITRO/slot_0E_calledFromAnim.txt @@ -0,0 +1,14 @@ +function cheditro_calledFromAnim() /* entry=202 class_id=0x0385 slot=0x0E */ +{ + var + referent, /* [BP+00h] type=0x69 */ + n; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x021A, *(arg_06)); + process_exclude(); + n = *(arg_06); + spawn class_0A1C_slot_20(Item.getQLo(arg_06), *(arg_06), n); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CHEMSUIT/slot_0E_calledFromAnim.txt b/USECODE/EUSECODE_extracted/pseudocode/CHEMSUIT/slot_0E_calledFromAnim.txt new file mode 100644 index 0000000..120ed28 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CHEMSUIT/slot_0E_calledFromAnim.txt @@ -0,0 +1,9 @@ +function chemsuit_calledFromAnim() /* entry=165 class_id=0x02F6 slot=0x0E */ +{ + entry: + set_info(0x021A, *(arg_06)); + process_exclude(); + spawn class_0A1C_slot_20(Item.getQLo(arg_06), *(arg_06), arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CHEST_EW/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/CHEST_EW/slot_01_use.txt new file mode 100644 index 0000000..a250175 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CHEST_EW/slot_01_use.txt @@ -0,0 +1,118 @@ +function chest_ew_use() /* entry=317 class_id=0x0550 slot=0x01 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + item2, /* [BP-04h] type=0x24 */ + counter; /* [BP-06h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if (Item.getFrame(arg_06) > 1) goto block_0228; + + block_0222: + goto block_0511; + + block_0228: + if (Item.getFrame(arg_06) != 1) goto block_02E6; + + block_023D: + class_0A0C_slot_2D(Item.getZ(arg_06), Item.legal_create(arg_06), Intrinsic0013(arg_06), 5, 0x054B, *(arg_06)); + if retval goto block_02CF; + + block_026F: + counter = 5; + + block_0284: + if (counter <= 9) goto block_02CC; + + block_028C: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0284; + + block_02CC: + goto block_02E3; + + block_02CF: + goto block_0511; + + block_02E3: + goto block_038B; + + block_02E6: + class_0A0C_slot_2D(Item.getZ(arg_06), Item.legal_create(arg_06), Intrinsic0013(arg_06), 0, 0x054B, *(arg_06)); + if retval goto block_0378; + + block_0318: + counter = 0; + + block_032D: + if (counter <= 4) goto block_0375; + + block_0335: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_032D; + + block_0375: + goto block_038B; + + block_0378: + goto block_0511; + + block_038B: + spawn class_0A18_slot_20(pid, 0, *(arg_06), arg_06); + suspend; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_03D0: + if condition goto block_050F; + + block_03D3: + if (Item.pop(arg_06) != Item.pop(item)) goto block_050B; + + block_03EF: + class_0A0C_slot_2E(item); + item2 = retval; + if ((((Intrinsic003C(item2) != 10) || (Intrinsic003C(item2) != 11)) || (Intrinsic003C(item2) != 12)) || (Intrinsic003C(item2) != 13)) goto block_04E5; + + block_0449: + if (!Intrinsic0037(1, item2)) goto block_04E2; + + block_045E: + /* global_address global_id=0x3C */ + if (Item.getType() != 40) goto block_04B9; + + block_0490: + goto block_04E2; + + block_04B9: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + + block_04E2: + goto block_050B; + + block_04E5: + spawn class_0A0C_slot_31(pid, item2, 0x00000000); + suspend; + + block_050B: + /* loopnext */ + goto block_03D0; + + block_050F: + + block_0511: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CHEST_EW/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/CHEST_EW/slot_06_gotHit.txt new file mode 100644 index 0000000..9bf2815 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CHEST_EW/slot_06_gotHit.txt @@ -0,0 +1,48 @@ +function chest_ew_gotHit() /* entry=317 class_id=0x0550 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + fram; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if (!retval) goto block_0107; + + block_0101: + goto block_01CA; + + block_0107: + fram = Item.getFrame(arg_06); + if (fram < 2) goto block_01CA; + + block_0123: + spawn class_0A1E_slot_27(pid, 40, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_0186; + + block_0153: + class_0A0C_slot_20(1); + if retval goto block_0173; + + block_0163: + goto block_0180; + + block_0173: + + block_0180: + goto block_01CA; + + block_0186: + spawn class_0A1E_slot_28(pid, 0, 0, arg_06); + suspend; + class_0A1E_slot_23(0x1000, arg_06); + + block_01CA: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CHEST_NS/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/CHEST_NS/slot_01_use.txt new file mode 100644 index 0000000..97fd64a --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CHEST_NS/slot_01_use.txt @@ -0,0 +1,123 @@ +function chest_ns_use() /* entry=316 class_id=0x054F slot=0x01 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + item2, /* [BP-04h] type=0x24 */ + counter, /* [BP-06h] type=0x69 */ + x, /* [BP-08h] type=0x69 */ + y; /* [BP-0Ah] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if (Item.getFrame(arg_06) > 1) goto block_0228; + + block_0222: + goto block_052F; + + block_0228: + if (Item.getFrame(arg_06) != 1) goto block_02E6; + + block_023D: + class_0A0C_slot_2D(Item.getZ(arg_06), Item.legal_create(arg_06), Intrinsic0013(arg_06), 5, 0x054A, *(arg_06)); + if retval goto block_02CF; + + block_026F: + counter = 5; + + block_0284: + if (counter <= 9) goto block_02CC; + + block_028C: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0284; + + block_02CC: + goto block_02E3; + + block_02CF: + goto block_052F; + + block_02E3: + goto block_038B; + + block_02E6: + class_0A0C_slot_2D(Item.getZ(arg_06), Item.legal_create(arg_06), Intrinsic0013(arg_06), 0, 0x054A, *(arg_06)); + if retval goto block_0378; + + block_0318: + counter = 0; + + block_032D: + if (counter <= 4) goto block_0375; + + block_0335: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_032D; + + block_0375: + goto block_038B; + + block_0378: + goto block_052F; + + block_038B: + spawn class_0A18_slot_20(pid, 0, *(arg_06), arg_06); + suspend; + x = (Intrinsic0013(arg_06) + 56); + y = (Item.legal_create(arg_06) + 64); + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_03F2: + if condition goto block_052D; + + block_03F5: + if (Item.pop(arg_06) != Item.pop(item)) goto block_0529; + + block_0411: + class_0A0C_slot_2E(item); + item2 = retval; + if ((((Intrinsic003C(item2) != 10) || (Intrinsic003C(item2) != 11)) || (Intrinsic003C(item2) != 12)) || (Intrinsic003C(item2) != 13)) goto block_0503; + + block_046B: + if (!Intrinsic0037(1, item2)) goto block_0500; + + block_0480: + /* global_address global_id=0x3C */ + if (Item.getType() != 40) goto block_04D7; + + block_04B2: + x = (x - 32); + goto block_0500; + + block_04D7: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + + block_0500: + goto block_0529; + + block_0503: + spawn class_0A0C_slot_31(pid, item2, 0x00000000); + suspend; + + block_0529: + /* loopnext */ + goto block_03F2; + + block_052D: + + block_052F: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CHEST_NS/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/CHEST_NS/slot_06_gotHit.txt new file mode 100644 index 0000000..f91d970 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CHEST_NS/slot_06_gotHit.txt @@ -0,0 +1,48 @@ +function chest_ns_gotHit() /* entry=316 class_id=0x054F slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + fram; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if (!retval) goto block_0107; + + block_0101: + goto block_01CA; + + block_0107: + fram = Item.getFrame(arg_06); + if (fram < 2) goto block_01CA; + + block_0123: + spawn class_0A1E_slot_27(pid, 40, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_0186; + + block_0153: + class_0A0C_slot_20(1); + if retval goto block_0173; + + block_0163: + goto block_0180; + + block_0173: + + block_0180: + goto block_01CA; + + block_0186: + spawn class_0A1E_slot_28(pid, 0, 0, arg_06); + suspend; + class_0A1E_slot_23(0x1000, arg_06); + + block_01CA: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CHEST_OE/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/CHEST_OE/slot_01_use.txt new file mode 100644 index 0000000..a5c7fb7 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CHEST_OE/slot_01_use.txt @@ -0,0 +1,21 @@ +function chest_oe_use() /* entry=314 class_id=0x054B slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if (Item.getFrame(arg_06) > 9) goto block_01BE; + + block_01B8: + goto block_01DF; + + block_01BE: + class_0A0C_slot_40(*(arg_06)); + if retval goto block_01DF; + + block_01D0: + class_0A1E_slot_23(0x1000, arg_06); + + block_01DF: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CHEST_OE/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/CHEST_OE/slot_06_gotHit.txt new file mode 100644 index 0000000..c5e6c1a --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CHEST_OE/slot_06_gotHit.txt @@ -0,0 +1,33 @@ +function chest_oe_gotHit() /* entry=314 class_id=0x054B slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if (!retval) goto block_0107; + + block_0101: + goto block_0169; + + block_0107: + if (Item.getFrame(arg_06) < 10) goto block_0169; + + block_011C: + class_0A0C_slot_2C(vel, ref); + if retval goto block_0153; + + block_012E: + spawn class_0A1E_slot_28(pid, 0, 0, arg_06); + suspend; + + block_0153: + + block_0169: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CHEST_ON/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/CHEST_ON/slot_01_use.txt new file mode 100644 index 0000000..26f3dd7 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CHEST_ON/slot_01_use.txt @@ -0,0 +1,21 @@ +function chest_on_use() /* entry=313 class_id=0x054A slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if (Item.getFrame(arg_06) > 9) goto block_01BE; + + block_01B8: + goto block_01DF; + + block_01BE: + class_0A0C_slot_40(*(arg_06)); + if retval goto block_01DF; + + block_01D0: + class_0A1E_slot_23(0x1000, arg_06); + + block_01DF: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CHEST_ON/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/CHEST_ON/slot_06_gotHit.txt new file mode 100644 index 0000000..4f1137b --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CHEST_ON/slot_06_gotHit.txt @@ -0,0 +1,33 @@ +function chest_on_gotHit() /* entry=313 class_id=0x054A slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if (!retval) goto block_0107; + + block_0101: + goto block_0169; + + block_0107: + if (Item.getFrame(arg_06) < 10) goto block_0169; + + block_011C: + class_0A0C_slot_2C(vel, ref); + if retval goto block_0153; + + block_012E: + spawn class_0A1E_slot_28(pid, 0, 0, arg_06); + suspend; + + block_0153: + + block_0169: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CONGRESS/slot_0E_calledFromAnim.txt b/USECODE/EUSECODE_extracted/pseudocode/CONGRESS/slot_0E_calledFromAnim.txt new file mode 100644 index 0000000..4486b8b --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CONGRESS/slot_0E_calledFromAnim.txt @@ -0,0 +1,9 @@ +function congress_calledFromAnim() /* entry=156 class_id=0x02DF slot=0x0E */ +{ + entry: + set_info(0x021A, *(arg_06)); + process_exclude(); + spawn class_0A1C_slot_20(Item.getQLo(arg_06), *(arg_06), arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CONVEYOR/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/CONVEYOR/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..5fc157b --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CONVEYOR/slot_10_leaveFastArea.txt @@ -0,0 +1,9 @@ +function conveyor_leaveFastArea() /* entry=374 class_id=0x0A04 slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + class_0A0C_slot_33(0x0205, *(arg_06)); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CONVEYOR/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/CONVEYOR/slot_20_slot_20.txt new file mode 100644 index 0000000..7d4e826 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CONVEYOR/slot_20_slot_20.txt @@ -0,0 +1,120 @@ +function conveyor_slot_20() /* entry=374 class_id=0x0A04 slot=0x20 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + xdir, /* [BP+0Ah] type=0x62 */ + ydir, /* [BP+0Ch] type=0x62 */ + counter, /* [BP-02h] type=0x69 */ + areThereItems, /* [BP-03h] type=0x62 */ + cargo_item, /* [BP-05h] type=0x24 */ + a, /* [BP-06h] type=0x62 */ + b, /* [BP-07h] type=0x62 */ + t, /* [BP-09h] type=0x69 */ + wp; /* [BP-0Eh] type=0x24 */ + + entry: + set_info(0x0205, *(arg_06)); + set_info(0x0205, *(arg_06)); + counter = 0; + counter = Item.getFrame(arg_06); + if (Item.touch(115, arg_06) != 0) goto block_013E; + + block_0131: + + block_013E: + suspend; + areThereItems = 0; + if Item.getCX(arg_06) goto block_019E; + + block_0161: + counter = (counter - 1); + if (xdir < 0) goto block_0183; + + block_0179: + xdir = (xdir * -1); + + block_0183: + if (ydir < 0) goto block_019B; + + block_0191: + ydir = (ydir * -1); + + block_019B: + goto block_01D8; + + block_019E: + counter = (1 + counter); + if (xdir > 0) goto block_01C0; + + block_01B6: + xdir = (xdir * -1); + + block_01C0: + if (ydir > 0) goto block_01D8; + + block_01CE: + ydir = (ydir * -1); + + block_01D8: + if (counter > 2) goto block_01ED; + + block_01E6: + counter = 0; + + block_01ED: + if (counter < 0) goto block_0202; + + block_01FB: + counter = 2; + + block_0202: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFB string_bytes=0x1 loop_type=0x6 */ + + block_0212: + if condition goto block_0304; + + block_0215: + t = Intrinsic0016(cargo_item); + if ((t != 0x0476) && (t != 0x04D0)) goto block_0300; + + block_0239: + a = Item.getQHi(*(arg_06), cargo_item); + wp = (Intrinsic0013(cargo_item) + xdir); + local_0C = (Item.legal_create(cargo_item) + ydir); + local_0A = Item.getZ(cargo_item); + if (!Item.pop(0, 1, wp, cargo_item)) goto block_02CB; + + block_029F: + + block_02CB: + b = Item.getQHi(*(arg_06), cargo_item); + areThereItems = 1; + if ((a != 1) && (b != 0)) goto block_0300; + + block_02F5: + + block_0300: + /* loopnext */ + goto block_0212; + + block_0304: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + if (!areThereItems) goto block_0355; + + block_0335: + goto block_0386; + + block_0355: + if (Item.touch(115, arg_06) != 0) goto block_0376; + + block_0369: + + block_0376: + goto block_013E; + + block_0386: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CONVEY_E/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/CONVEY_E/slot_06_gotHit.txt new file mode 100644 index 0000000..911c931 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CONVEY_E/slot_06_gotHit.txt @@ -0,0 +1,49 @@ +function convey_e_gotHit() /* entry=53 class_id=0x0134 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + v, /* [BP+0Ch] type=0x69 */ + xdir, /* [BP-01h] type=0x62 */ + ydir, /* [BP-02h] type=0x62 */ + item, /* [BP-04h] type=0x24 */ + a, /* [BP-05h] type=0x62 */ + b; /* [BP-06h] type=0x62 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + xdir = 0; + ydir = -3; + if Item.isOn(arg_06) goto block_0211; + + block_020A: + ydir = 3; + + block_0211: + class_0A0C_slot_2C(v, ref); + if retval goto block_0229; + + block_0223: + goto block_029C; + + block_0229: + item = ref; + a = Item.getQHi(*(arg_06), item); + b = 1; + if (Item.isOn(arg_06) != 0x00FF) goto block_0266; + + block_025F: + b = 0; + + block_0266: + if (a && b) goto block_029C; + + block_0277: + spawn class_0A04_slot_20(pid, ydir, xdir, arg_06); + suspend; + + block_029C: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CONVEY_E/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/CONVEY_E/slot_0A_equip.txt new file mode 100644 index 0000000..781f760 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CONVEY_E/slot_0A_equip.txt @@ -0,0 +1,31 @@ +function convey_e_equip() /* entry=53 class_id=0x0134 slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (arg_0A != 0) goto block_0135; + + block_00F9: + class_0A0C_slot_33(0x0205, *(arg_06)); + goto block_01BB; + + block_0135: + if (arg_0A != 1) goto block_0178; + + block_0143: + class_0A0C_slot_33(0x0205, *(arg_06)); + spawn class_0A04_slot_20(-3, 0, arg_06); + goto block_01BB; + + block_0178: + if (arg_0A != 2) goto block_01BB; + + block_0186: + class_0A0C_slot_33(0x0205, *(arg_06)); + spawn class_0A04_slot_20(3, 0, arg_06); + goto block_01BB; + + block_01BB: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CONVEY_N/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/CONVEY_N/slot_06_gotHit.txt new file mode 100644 index 0000000..e3b7573 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CONVEY_N/slot_06_gotHit.txt @@ -0,0 +1,49 @@ +function convey_n_gotHit() /* entry=12 class_id=0x006B slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + v, /* [BP+0Ch] type=0x69 */ + xdir, /* [BP-01h] type=0x62 */ + ydir, /* [BP-02h] type=0x62 */ + item, /* [BP-04h] type=0x24 */ + a, /* [BP-05h] type=0x62 */ + b; /* [BP-06h] type=0x62 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + xdir = -3; + ydir = 0; + if Item.isOn(arg_06) goto block_0211; + + block_020A: + xdir = 3; + + block_0211: + class_0A0C_slot_2C(v, ref); + if retval goto block_0229; + + block_0223: + goto block_029C; + + block_0229: + item = ref; + a = Item.getQHi(*(arg_06), item); + b = 1; + if (Item.isOn(arg_06) != 0x00FF) goto block_0266; + + block_025F: + b = 0; + + block_0266: + if (a && b) goto block_029C; + + block_0277: + spawn class_0A04_slot_20(pid, ydir, xdir, arg_06); + suspend; + + block_029C: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CONVEY_N/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/CONVEY_N/slot_0A_equip.txt new file mode 100644 index 0000000..35b984e --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CONVEY_N/slot_0A_equip.txt @@ -0,0 +1,31 @@ +function convey_n_equip() /* entry=12 class_id=0x006B slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (arg_0A != 0) goto block_0135; + + block_00F9: + class_0A0C_slot_33(0x0205, *(arg_06)); + goto block_01BB; + + block_0135: + if (arg_0A != 1) goto block_0178; + + block_0143: + class_0A0C_slot_33(0x0205, *(arg_06)); + spawn class_0A04_slot_20(0, -3, arg_06); + goto block_01BB; + + block_0178: + if (arg_0A != 2) goto block_01BB; + + block_0186: + class_0A0C_slot_33(0x0205, *(arg_06)); + spawn class_0A04_slot_20(0, 3, arg_06); + goto block_01BB; + + block_01BB: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CONVFLR/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/CONVFLR/slot_06_gotHit.txt new file mode 100644 index 0000000..41724bb --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CONVFLR/slot_06_gotHit.txt @@ -0,0 +1,49 @@ +function convflr_gotHit() /* entry=128 class_id=0x022C slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + v, /* [BP+0Ch] type=0x69 */ + xdir, /* [BP-01h] type=0x62 */ + ydir, /* [BP-02h] type=0x62 */ + item, /* [BP-04h] type=0x24 */ + a, /* [BP-05h] type=0x62 */ + b; /* [BP-06h] type=0x62 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + xdir = 0; + ydir = -3; + if Item.isOn(arg_06) goto block_0211; + + block_020A: + ydir = 3; + + block_0211: + class_0A0C_slot_2C(v, ref); + if retval goto block_0229; + + block_0223: + goto block_029C; + + block_0229: + item = ref; + a = Item.getQHi(*(arg_06), item); + b = 1; + if (Item.isOn(arg_06) != 0x00FF) goto block_0266; + + block_025F: + b = 0; + + block_0266: + if (a && b) goto block_029C; + + block_0277: + spawn class_0A04_slot_20(pid, ydir, xdir, arg_06); + suspend; + + block_029C: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CONVFLR/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/CONVFLR/slot_0A_equip.txt new file mode 100644 index 0000000..d6e6704 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CONVFLR/slot_0A_equip.txt @@ -0,0 +1,31 @@ +function convflr_equip() /* entry=128 class_id=0x022C slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (arg_0A != 0) goto block_0135; + + block_00F9: + class_0A0C_slot_33(0x0205, *(arg_06)); + goto block_01BB; + + block_0135: + if (arg_0A != 1) goto block_0178; + + block_0143: + class_0A0C_slot_33(0x0205, *(arg_06)); + spawn class_0A04_slot_20(-3, 0, arg_06); + goto block_01BB; + + block_0178: + if (arg_0A != 2) goto block_01BB; + + block_0186: + class_0A0C_slot_33(0x0205, *(arg_06)); + spawn class_0A04_slot_20(3, 0, arg_06); + goto block_01BB; + + block_01BB: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CONV_EL/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/CONV_EL/slot_06_gotHit.txt new file mode 100644 index 0000000..073afbb --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CONV_EL/slot_06_gotHit.txt @@ -0,0 +1,49 @@ +function conv_el_gotHit() /* entry=140 class_id=0x0293 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + v, /* [BP+0Ch] type=0x69 */ + xdir, /* [BP-01h] type=0x62 */ + ydir, /* [BP-02h] type=0x62 */ + item, /* [BP-04h] type=0x24 */ + a, /* [BP-05h] type=0x62 */ + b; /* [BP-06h] type=0x62 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + xdir = 0; + ydir = -3; + if Item.isOn(arg_06) goto block_0211; + + block_020A: + ydir = 3; + + block_0211: + class_0A0C_slot_2C(v, ref); + if retval goto block_0229; + + block_0223: + goto block_029C; + + block_0229: + item = ref; + a = Item.getQHi(*(arg_06), item); + b = 1; + if (Intrinsic004D(arg_06) != 0x00FF) goto block_0266; + + block_025F: + b = 0; + + block_0266: + if (a && b) goto block_029C; + + block_0277: + spawn class_0A04_slot_20(pid, ydir, xdir, arg_06); + suspend; + + block_029C: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CONV_EL/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/CONV_EL/slot_0A_equip.txt new file mode 100644 index 0000000..6aecd82 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CONV_EL/slot_0A_equip.txt @@ -0,0 +1,31 @@ +function conv_el_equip() /* entry=140 class_id=0x0293 slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (arg_0A != 0) goto block_0135; + + block_00F9: + class_0A0C_slot_33(0x0205, *(arg_06)); + goto block_01BB; + + block_0135: + if (arg_0A != 1) goto block_0178; + + block_0143: + class_0A0C_slot_33(0x0205, *(arg_06)); + spawn class_0A04_slot_20(-3, 0, arg_06); + goto block_01BB; + + block_0178: + if (arg_0A != 2) goto block_01BB; + + block_0186: + class_0A0C_slot_33(0x0205, *(arg_06)); + spawn class_0A04_slot_20(3, 0, arg_06); + goto block_01BB; + + block_01BB: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CONV_NL/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/CONV_NL/slot_06_gotHit.txt new file mode 100644 index 0000000..37d3a9e --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CONV_NL/slot_06_gotHit.txt @@ -0,0 +1,49 @@ +function conv_nl_gotHit() /* entry=139 class_id=0x0292 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + v, /* [BP+0Ch] type=0x69 */ + xdir, /* [BP-01h] type=0x62 */ + ydir, /* [BP-02h] type=0x62 */ + item, /* [BP-04h] type=0x24 */ + a, /* [BP-05h] type=0x62 */ + b; /* [BP-06h] type=0x62 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + xdir = -3; + ydir = 0; + if Intrinsic004D(arg_06) goto block_0211; + + block_020A: + xdir = 3; + + block_0211: + class_0A0C_slot_2C(v, ref); + if retval goto block_0229; + + block_0223: + goto block_029C; + + block_0229: + item = ref; + a = Npc.isDead(*(arg_06), item); + b = 1; + if (Intrinsic009C(arg_06) != 0x00FF) goto block_0266; + + block_025F: + b = 0; + + block_0266: + if (a && b) goto block_029C; + + block_0277: + spawn class_0A04_slot_20(pid, ydir, xdir, arg_06); + suspend; + + block_029C: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CONV_NL/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/CONV_NL/slot_0A_equip.txt new file mode 100644 index 0000000..64f968b --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CONV_NL/slot_0A_equip.txt @@ -0,0 +1,31 @@ +function conv_nl_equip() /* entry=139 class_id=0x0292 slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (arg_0A != 0) goto block_0135; + + block_00F9: + class_0A0C_slot_33(0x0205, *(arg_06)); + goto block_01BB; + + block_0135: + if (arg_0A != 1) goto block_0178; + + block_0143: + class_0A0C_slot_33(0x0205, *(arg_06)); + spawn class_0A04_slot_20(0, -3, arg_06); + goto block_01BB; + + block_0178: + if (arg_0A != 2) goto block_01BB; + + block_0186: + class_0A0C_slot_33(0x0205, *(arg_06)); + spawn class_0A04_slot_20(0, 3, arg_06); + goto block_01BB; + + block_01BB: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/COPY_EW/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/COPY_EW/slot_06_gotHit.txt new file mode 100644 index 0000000..05d26eb --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/COPY_EW/slot_06_gotHit.txt @@ -0,0 +1,36 @@ +function copy_ew_gotHit() /* entry=232 class_id=0x0433 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + fram, /* [BP-02h] type=0x69 */ + coolfram; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + fram = Item.getFrame(arg_06); + coolfram = 2; + if (fram > 1) goto block_0114; + + block_010E: + goto block_0186; + + block_0114: + class_0A0C_slot_2C(vel, ref); + if retval goto block_0186; + + block_0126: + spawn class_0A1E_slot_28(pid, 0, 1, arg_06); + suspend; + class_0A0C_slot_20(1); + class_0A0C_slot_20(coolfram, 10); + if retval goto block_0186; + + block_0179: + + block_0186: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/COPY_NS/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/COPY_NS/slot_06_gotHit.txt new file mode 100644 index 0000000..628c61e --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/COPY_NS/slot_06_gotHit.txt @@ -0,0 +1,36 @@ +function copy_ns_gotHit() /* entry=233 class_id=0x0434 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + fram, /* [BP-02h] type=0x69 */ + coolfram; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + fram = Item.getFrame(arg_06); + coolfram = 2; + if (fram > 1) goto block_0114; + + block_010E: + goto block_0186; + + block_0114: + class_0A0C_slot_2C(vel, ref); + if retval goto block_0186; + + block_0126: + spawn class_0A1E_slot_28(pid, 0, 1, arg_06); + suspend; + class_0A0C_slot_20(1); + class_0A0C_slot_20(coolfram, 10); + if retval goto block_0186; + + block_0179: + + block_0186: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/COR_BOOT/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/COR_BOOT/slot_0A_equip.txt new file mode 100644 index 0000000..adefc97 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/COR_BOOT/slot_0A_equip.txt @@ -0,0 +1,76 @@ +function cor_boot_equip() /* entry=189 class_id=0x0360 slot=0x0A */ +{ + var + referent, /* [BP+00h] type=0x69 */ + event, /* [BP+0Ah] type=0x69 */ + counter; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (Item.getFrame(arg_06) != 10) goto block_0106; + + block_0100: + goto block_02D2; + + block_0106: + class_0A0C_slot_33(0x021B, *(arg_06)); + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + + block_0140: + if (Item.getFrame(arg_06) != 9) goto block_0192; + + block_0152: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + goto block_0140; + + block_0192: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + if (global[0x001F] != 2) goto block_01F2; + + block_01C2: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0267; + + block_01F2: + if (global[0x001F] != 8) goto block_022C; + + block_01FC: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0267; + + block_022C: + if (global[0x001F] != 12) goto block_0267; + + block_0236: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0267; + + block_0267: + counter = 0; + + block_026E: + if (counter <= 9) goto block_02B9; + + block_0276: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_026E; + + block_02B9: + spawn class_0360_enterFastArea(arg_06); + + block_02D2: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/COR_BOOT/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/COR_BOOT/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..9edacd1 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/COR_BOOT/slot_0F_enterFastArea.txt @@ -0,0 +1,96 @@ +function cor_boot_enterFastArea() /* entry=189 class_id=0x0360 slot=0x0F */ +{ + var + referent, /* [BP+00h] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + counter; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if (((global[0x001F] != 2) || (global[0x001F] != 8)) || (global[0x001F] != 12)) goto block_038E; + + block_032C: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_034A: + if condition goto block_037C; + + block_034D: + if (Item.pop(item) != Item.pop(arg_06)) goto block_0378; + + block_0369: + class_0A1E_slot_24(0x1000, item); + + block_0378: + /* loopnext */ + goto block_034A; + + block_037C: + goto block_03F3; + + block_038E: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_03AC: + if condition goto block_03DE; + + block_03AF: + if (Item.pop(item) != Item.pop(arg_06)) goto block_03DA; + + block_03CB: + class_0A1E_slot_23(0x1000, item); + + block_03DA: + /* loopnext */ + goto block_03AC; + + block_03DE: + goto block_0507; + + block_03F3: + suspend; + class_0A0C_slot_20(pid, 120); + spawn class_0A0C_slot_32((retval + 0x00DC), 0x00000000); + suspend; + counter = 0; + + block_0439: + if (counter <= 5) goto block_0481; + + block_0441: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0439; + + block_0481: + class_0A0C_slot_20(pid, 120); + spawn class_0A0C_slot_32((retval + 120), 0x00000000); + suspend; + counter = 0; + + block_04B9: + if (counter <= 5) goto block_0504; + + block_04C1: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_04B9; + + block_0504: + goto block_03F3; + + block_0507: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/COR_BOOT/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/COR_BOOT/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..159b7ee --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/COR_BOOT/slot_10_leaveFastArea.txt @@ -0,0 +1,9 @@ +function cor_boot_leaveFastArea() /* entry=189 class_id=0x0360 slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + class_0A0C_slot_33(0x021B, *(arg_06)); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/COURIER/slot_0E_calledFromAnim.txt b/USECODE/EUSECODE_extracted/pseudocode/COURIER/slot_0E_calledFromAnim.txt new file mode 100644 index 0000000..0563bb2 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/COURIER/slot_0E_calledFromAnim.txt @@ -0,0 +1,15 @@ +function courier_calledFromAnim() /* entry=253 class_id=0x045D slot=0x0E */ +{ + var + referent, /* [BP+00h] type=0x69 */ + n; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x021A, *(arg_06)); + process_exclude(); + n = *(arg_06); + set_info(1, 0); + spawn class_0A1C_slot_20(Item.getQLo(arg_06), *(arg_06), arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CRUMORPH/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/CRUMORPH/slot_0A_equip.txt new file mode 100644 index 0000000..b5627d3 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CRUMORPH/slot_0A_equip.txt @@ -0,0 +1,76 @@ +function crumorph_equip() /* entry=173 class_id=0x0318 slot=0x0A */ +{ + var + referent, /* [BP+00h] type=0x69 */ + var, /* [BP+0Ah] type=0x69 */ + n, /* [BP-02h] type=0x24 */ + lastAct; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x3A */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0109: + if condition goto block_02AF; + + block_010C: + if Item.isNpc(n) goto block_02AB; + + block_011B: + if (Item.getQLo(n) != Item.pop(arg_06)) goto block_02AB; + + block_0137: + if (Kernel.resetRef(n) != 0) goto block_02AB; + + block_0149: + class_0A11_slot_2B(n); + if (!retval) goto block_0163; + + block_015D: + goto block_02B1; + + block_0163: + lastAct = Intrinsic0050(n); + spawn class_0A0C_slot_32(pid, 3, 0x00000000); + suspend; + spawn class_0A11_slot_28(pid, n); + suspend; + + block_020B: + if (Item.pop() > 1) goto block_0242; + + block_0219: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_020B; + + block_0242: + if (Kernel.resetRef(n) != 0) goto block_027E; + + block_0254: + spawn class_0A18_slot_20(pid, 0, *(arg_06), arg_06); + suspend; + goto block_02A5; + + block_027E: + spawn class_0A18_slot_20(pid, 1, *(arg_06), arg_06); + suspend; + + block_02A5: + goto block_02B1; + + block_02AB: + /* loopnext */ + goto block_0109; + + block_02AF: + + block_02B1: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CRUZTRIG/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/CRUZTRIG/slot_06_gotHit.txt new file mode 100644 index 0000000..f2f1a6b --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CRUZTRIG/slot_06_gotHit.txt @@ -0,0 +1,93 @@ +function cruztrig_gotHit() /* entry=193 class_id=0x0365 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + elev; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + if (ref != Item.pop()) goto block_00FF; + + block_00F9: + goto block_0316; + + block_00FF: + if (Item.getMapNum(arg_06) != 0) goto block_0316; + + block_0111: + item = ref; + if ((Intrinsic0057(arg_06) != 0) || (Item.use(*(arg_06), item) != 0)) goto block_0144; + + block_013E: + goto block_0316; + + block_0144: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + spawn class_0A18_slot_20(pid, 0, *(arg_06), arg_06); + suspend; + + block_019E: + if 1 goto block_0316; + + block_01A6: + if (Intrinsic0057(arg_06) != 0) goto block_01E1; + + block_01B8: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_0313; + + block_01E1: + spawn class_0A18_slot_20(pid, 1, *(arg_06), arg_06); + suspend; + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x6 */ + + block_0257: + if condition goto block_030B; + + block_025A: + if (Item.getStatus(elev) & 0x1000) goto block_0296; + + block_026D: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_025A; + + block_0296: + spawn class_0A0C_slot_32(pid, 120, 0x00000000); + suspend; + /* global_address global_id=0x3C */ + if (Item.getZ() < (Item.getZ(elev) - 5)) goto block_0307; + + block_02DC: + class_0A09_slot_21(Item.getZ(elev), elev); + if retval goto block_0307; + + block_02F9: + spawn class_0A09_slot_20(elev); + + block_0307: + /* loopnext */ + goto block_0257; + + block_030B: + goto block_0316; + + block_0313: + goto block_019E; + + block_0316: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CRU_SPID/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/CRU_SPID/slot_01_use.txt new file mode 100644 index 0000000..fd6a7b7 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CRU_SPID/slot_01_use.txt @@ -0,0 +1,236 @@ +function cru_spid_use() /* entry=320 class_id=0x0560 slot=0x01 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + mine, /* [BP-02h] type=0x24 */ + InCrouch, /* [BP-03h] type=0x62 */ + Cru_Spider, /* [BP-05h] type=0x24 */ + target, /* [BP-07h] type=0x24 */ + item, /* [BP-09h] type=0x24 */ + counter, /* [BP-0Bh] type=0x69 */ + lastAnim, /* [BP-0Dh] type=0x69 */ + xOff, /* [BP-0Fh] type=0x69 */ + yOff, /* [BP-11h] type=0x69 */ + wp; /* [BP-16h] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + /* global_address global_id=0x3C */ + if (Item.getType() != 40) goto block_0184; + + block_0150: + goto block_055B; + + block_0184: + Cru_Spider = *(arg_06); + set_info(0x00F0, 0); + /* global_address global_id=0x3C */ + lastAnim = Intrinsic005A(); + + block_01B0: + /* global_address global_id=0x3C */ + if Intrinsic0033() goto block_01E6; + + block_01C0: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_01B0; + + block_01E6: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 0) goto block_0204; + + block_01F6: + xOff = -1; + yOff = -3; + goto block_03C6; + + block_0204: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 1) goto block_0222; + + block_0214: + xOff = 0; + yOff = -3; + goto block_03C6; + + block_0222: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 2) goto block_0240; + + block_0232: + xOff = 1; + yOff = -3; + goto block_03C6; + + block_0240: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 3) goto block_025E; + + block_0250: + xOff = 2; + yOff = -2; + goto block_03C6; + + block_025E: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 4) goto block_027C; + + block_026E: + xOff = 2; + yOff = -1; + goto block_03C6; + + block_027C: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 5) goto block_029A; + + block_028C: + xOff = 2; + yOff = 0; + goto block_03C6; + + block_029A: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 6) goto block_02B8; + + block_02AA: + xOff = 2; + yOff = 2; + goto block_03C6; + + block_02B8: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 7) goto block_02D6; + + block_02C8: + xOff = 0; + yOff = 2; + goto block_03C6; + + block_02D6: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 8) goto block_02F4; + + block_02E6: + xOff = -1; + yOff = 2; + goto block_03C6; + + block_02F4: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 9) goto block_0312; + + block_0304: + xOff = -2; + yOff = 2; + goto block_03C6; + + block_0312: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 10) goto block_0330; + + block_0322: + xOff = -3; + yOff = 2; + goto block_03C6; + + block_0330: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 11) goto block_034E; + + block_0340: + xOff = -3; + yOff = 1; + goto block_03C6; + + block_034E: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 12) goto block_036C; + + block_035E: + xOff = -3; + yOff = 0; + goto block_03C6; + + block_036C: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 13) goto block_038A; + + block_037C: + xOff = -3; + yOff = -1; + goto block_03C6; + + block_038A: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 14) goto block_03A8; + + block_039A: + xOff = -3; + yOff = -2; + goto block_03C6; + + block_03A8: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 15) goto block_03C6; + + block_03B8: + xOff = -3; + yOff = -3; + goto block_03C6; + + block_03C6: + /* global_address global_id=0x3C */ + if Intrinsic0035() goto block_03E0; + + block_03D6: + InCrouch = 1; + goto block_0417; + + block_03E0: + InCrouch = 0; + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + suspend; + + block_0417: + /* global_address global_id=0x3C */ + wp = (Intrinsic0013() + (xOff * 16)); + /* global_address global_id=0x3C */ + local_14 = (Item.legal_create() + (yOff * 16)); + /* global_address global_id=0x3C */ + local_12 = Item.getZ(); + if (!Item.getSurfaceWeight(wp, 0, 0x0560, mine)) goto block_04E2; + + block_046A: + if (!InCrouch) goto block_04D1; + + block_04A1: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + suspend; + + block_04D1: + goto block_055B; + + block_04E2: + counter = 1; + + block_04F6: + if (counter <= 9) goto block_053E; + + block_04FE: + spawn class_0A0C_slot_32(pid, 3, 0x00000000); + suspend; + counter = (1 + counter); + goto block_04F6; + + block_053E: + spawn class_0560_slot_20(mine, arg_06); + + block_055B: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CRU_SPID/slot_05_hit.txt b/USECODE/EUSECODE_extracted/pseudocode/CRU_SPID/slot_05_hit.txt new file mode 100644 index 0000000..3b68c21 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CRU_SPID/slot_05_hit.txt @@ -0,0 +1,13 @@ +function cru_spid_hit() /* entry=320 class_id=0x0560 slot=0x05 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020B, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/CRU_SPID/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/CRU_SPID/slot_20_slot_20.txt new file mode 100644 index 0000000..3b1e78f --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/CRU_SPID/slot_20_slot_20.txt @@ -0,0 +1,140 @@ +function cru_spid_slot_20() /* entry=320 class_id=0x0560 slot=0x20 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + xOff, /* [BP-04h] type=0x69 */ + yOff, /* [BP-06h] type=0x69 */ + counter2, /* [BP-08h] type=0x69 */ + wp, /* [BP-0Dh] type=0x24 */ + item, /* [BP-0Fh] type=0x24 */ + spider; /* [BP-11h] type=0x24 */ + + entry: + set_info(0x00F0, *(arg_06)); + item = ref; + set_info(0x00F0, spider); + + block_065B: + if (counter < 0x01F4) goto block_08FD; + + block_066A: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Intrinsic00FA((Intrinsic00FA() != 0)) != 1) goto block_0696; + + block_0688: + xOff = 0; + yOff = -1; + goto block_07CA; + + block_0696: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Intrinsic00FA((Intrinsic00FA() != 2)) != 3) goto block_06C2; + + block_06B4: + xOff = 1; + yOff = -1; + goto block_07CA; + + block_06C2: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Intrinsic00FA((Intrinsic00FA() != 4)) != 5) goto block_06EE; + + block_06E0: + xOff = 1; + yOff = 0; + goto block_07CA; + + block_06EE: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Intrinsic00FA((Intrinsic00FA() != 6)) != 7) goto block_071A; + + block_070C: + xOff = 1; + yOff = 1; + goto block_07CA; + + block_071A: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Intrinsic00FA((Intrinsic00FA() != 8)) != 9) goto block_0746; + + block_0738: + xOff = 0; + yOff = 1; + goto block_07CA; + + block_0746: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Intrinsic00FA((Intrinsic00FA() != 10)) != 11) goto block_0772; + + block_0764: + xOff = -1; + yOff = 1; + goto block_07CA; + + block_0772: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Intrinsic00FA((Intrinsic00FA() != 12)) != 13) goto block_079E; + + block_0790: + xOff = -1; + yOff = 0; + goto block_07CA; + + block_079E: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Intrinsic00FA((Intrinsic00FA() != 14)) != 15) goto block_07CA; + + block_07BC: + xOff = -1; + yOff = -1; + goto block_07CA; + + block_07CA: + wp = (wp + (xOff * 8)); + local_0B = (local_0B + (yOff * 8)); + if (!Item.pop(0, 1, wp, spider)) goto block_0855; + + block_080A: + local_09 = (local_09 + 1); + if (!Item.pop(0, 1, wp, spider)) goto block_0855; + + block_082D: + if (!Item.pop(0, 1, wp, spider)) goto block_0855; + + block_0846: + + block_0855: + counter2 = (1 + counter2); + if ((counter2 != 20) && (local_09 > 4)) goto block_08CA; + + block_0873: + local_09 = (local_09 - 4); + if Item.pop(0, 1, wp, spider) goto block_08C3; + + block_0892: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + + block_08C3: + counter2 = 0; + + block_08CA: + counter = (1 + counter); + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + goto block_065B; + + block_08FD: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DAMNLUGG/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/DAMNLUGG/slot_06_gotHit.txt new file mode 100644 index 0000000..3a74438 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DAMNLUGG/slot_06_gotHit.txt @@ -0,0 +1,41 @@ +function damnlugg_gotHit() /* entry=336 class_id=0x059F slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if retval goto block_01A1; + + block_00FD: + spawn class_0A1E_slot_27(pid, 100, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_015D; + + block_012D: + class_0A0C_slot_20(1); + if retval goto block_014D; + + block_013D: + goto block_015A; + + block_014D: + + block_015A: + goto block_01A1; + + block_015D: + spawn class_0A1E_slot_2A(pid, arg_06); + suspend; + spawn class_0A1E_slot_28(pid, 1, 0, arg_06); + suspend; + + block_01A1: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DAMNMCR8/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/DAMNMCR8/slot_06_gotHit.txt new file mode 100644 index 0000000..5af2c19 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DAMNMCR8/slot_06_gotHit.txt @@ -0,0 +1,41 @@ +function damnmcr8_gotHit() /* entry=337 class_id=0x05A0 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if retval goto block_01A1; + + block_00FD: + spawn class_0A1E_slot_27(pid, 100, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_015D; + + block_012D: + class_0A0C_slot_20(1); + if retval goto block_014D; + + block_013D: + goto block_015A; + + block_014D: + + block_015A: + goto block_01A1; + + block_015D: + spawn class_0A1E_slot_2A(pid, arg_06); + suspend; + spawn class_0A1E_slot_28(pid, 1, 0, arg_06); + suspend; + + block_01A1: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DATALINK/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/DATALINK/slot_01_use.txt new file mode 100644 index 0000000..558c4a5 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DATALINK/slot_01_use.txt @@ -0,0 +1,566 @@ +function datalink_use() /* entry=278 class_id=0x04D4 slot=0x01 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + textFile; /* [BP-02h] type=0x73 */ + + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "MISSION OBJECTIVES:^*"; + /* global_address global_id=0x3C */ + if (Item.getType() > 30) goto block_012E; + + block_0128: + goto block_1466; + + block_012E: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Item.getType((Item.getType() != 1)) != 2) goto block_0287; + + block_014C: + if (!global[0x0020]) goto block_0186; + + block_0157: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + + block_0186: + if (!global[0x002F]) goto block_01C3; + + block_0191: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Gain keycard from rebel informant."; + + block_01C3: + if (!global[0x0020]) goto block_0227; + + block_01CE: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate Thermal Coupler on level four and destroy objective with BlastPac."; + + block_0227: + if (global[0x002F] && global[0x0020]) goto block_0284; + + block_023C: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate telepad on fourth level and return to rebel base."; + + block_0284: + goto block_143A; + + block_0287: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Item.getType((Item.getType() != 3)) != 4) goto block_040D; + + block_02A5: + if (!global[0x0021]) goto block_02B0; + + block_02B0: + if (!global[0x0030]) goto block_0315; + + block_02BB: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)PFC. Andrews to confirm coordinates before teleportation into prison area."; + + block_0315: + if (!global[0x0021]) goto block_03AD; + + block_0320: + /* concat */ + /* concat */ + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "in Dr. Hoffman's lab."; + + block_03AD: + if (global[0x0030] && global[0x0021]) goto block_040A; + + block_03C2: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate telepad on prison level and return to rebel base."; + + block_040A: + goto block_143A; + + block_040D: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Item.getType((Item.getType() != 5)) != 6) goto block_0583; + + block_042B: + if (!global[0x0022]) goto block_0466; + + block_0436: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + + block_0466: + if (!global[0x0031]) goto block_04D2; + + block_0471: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)PFC. Cardova to confirm coordinates before teleportation into industrial complex."; + + block_04D2: + if (!global[0x0022]) goto block_0528; + + block_04DD: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate PHIR computer and download latest prototypes' plans."; + + block_0528: + if (global[0x0031] && global[0x0022]) goto block_0580; + + block_053D: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate telepad on level 1 and return to rebel base."; + + block_0580: + goto block_143A; + + block_0583: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Item.getType((Item.getType() != 7)) != 8) goto block_06F6; + + block_05A1: + if (!global[0x0023]) goto block_05DB; + + block_05AC: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + + block_05DB: + if (!global[0x0032]) goto block_0641; + + block_05E6: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)PFC. Andrews to bring down defense screens before objective can be reached."; + + block_0641: + if (!global[0x0023]) goto block_069B; + + block_064C: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate SORC computer on level 3 and destroy it with a BlastPac."; + + block_069B: + if (global[0x0032] && global[0x0023]) goto block_06F3; + + block_06B0: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate telepad on level 4 and return to rebel base."; + + block_06F3: + goto block_143A; + + block_06F6: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Item.getType((Item.getType() != 9)) != 10) goto block_085D; + + block_0714: + if (!global[0x0024]) goto block_074F; + + block_071F: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + + block_074F: + if (!global[0x0033]) goto block_078C; + + block_075A: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Gain keycard from rebel informant."; + + block_078C: + if (!global[0x0024]) goto block_07F4; + + block_0797: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate MELF computer in Science Wing, level 5 and download Cypher chip plans."; + + block_07F4: + if (global[0x0033] && global[0x0024]) goto block_085A; + + block_0809: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate telepad in Science Wing, level 4 and return to rebel base."; + + block_085A: + goto block_143A; + + block_085D: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Item.getType((Item.getType() != 11)) != 12) goto block_09E4; + + block_087B: + if (!global[0x0025]) goto block_08B5; + + block_0886: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + + block_08B5: + if (!global[0x0034]) goto block_0919; + + block_08C0: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Sgt. Brooks to confirm teleportation coordinates into government complex."; + + block_0919: + if (!global[0x0025]) goto block_09A7; + + block_0924: + /* concat */ + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "Transport the senator back to Central for questioning."; + + block_09A7: + if (global[0x0034] && global[0x0025]) goto block_09E1; + + block_09BC: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Return to rebel base."; + + block_09E1: + goto block_143A; + + block_09E4: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Item.getType((Item.getType() != 13)) != 14) goto block_0B08; + + block_0A02: + if (!global[0x0026]) goto block_0A3C; + + block_0A0D: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + + block_0A3C: + if (!global[0x0026]) goto block_0AB5; + + block_0A47: + /* concat */ + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "Destroy objective with FusionPac."; + + block_0AB5: + if global[0x0026] goto block_0B05; + + block_0ABF: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate teleporter on level 7 and return to rebel base."; + + block_0B05: + goto block_143A; + + block_0B08: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Item.getType((Item.getType() != 15)) != 16) goto block_0BF2; + + block_0B26: + if (!global[0x0027]) goto block_0B60; + + block_0B31: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + + block_0B60: + if (!global[0x0027]) goto block_0BA9; + + block_0B6B: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Liberate Professor Willmar from WEC prison."; + goto block_0BEF; + + block_0BA9: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate teleporter on level 3 and return to rebel base."; + + block_0BEF: + goto block_143A; + + block_0BF2: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Item.getType((Item.getType() != 17)) != 18) goto block_0D04; + + block_0C10: + if (!global[0x0028]) goto block_0C4A; + + block_0C1B: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + + block_0C4A: + if (!global[0x0028]) goto block_0CA5; + + block_0C55: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Infiltrate governement complex and spy on congressional meeting."; + + block_0CA5: + if global[0x0028] goto block_0D01; + + block_0CAF: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Return to your original telepad for extraction back to rebel base."; + + block_0D01: + goto block_143A; + + block_0D04: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Item.getType((Item.getType() != 19)) != 20) goto block_0E55; + + block_0D22: + if (!global[0x0029]) goto block_0D5D; + + block_0D2D: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + + block_0D5D: + if (!global[0x0029]) goto block_0DB6; + + block_0D68: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate plans for new experimental weapon in Dr. Hoffman's lab."; + + block_0DB6: + if global[0x0029] goto block_0E52; + + block_0DC0: + /* concat */ + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^Locate telepad on level 3 to return to rebel base."; + + block_0E52: + goto block_143A; + + block_0E55: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Item.getType((Item.getType() != 21)) != 22) goto block_0FAE; + + block_0E73: + if (!global[0x002A]) goto block_0EAF; + + block_0E7E: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + + block_0EAF: + if (!global[0x0035]) goto block_0EFE; + + block_0EBA: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)PFC. Cardova to bring down teleport defense screens."; + + block_0EFE: + if (!global[0x002A]) goto block_0F5B; + + block_0F09: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate OPTS computer and download plans to the Vigilance Platform."; + + block_0F5B: + if global[0x002A] goto block_0FAB; + + block_0F65: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate teleporter on level 4 and return to rebel base."; + + block_0FAB: + goto block_143A; + + block_0FAE: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Item.getType((Item.getType() != 23)) != 24) goto block_10B0; + + block_0FCC: + if (!global[0x002B]) goto block_1008; + + block_0FD7: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + + block_1008: + if (!global[0x002B]) goto block_105D; + + block_1013: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate OPC computer and upload new targeting coordinates. "; + + block_105D: + if global[0x002B] goto block_10AD; + + block_1067: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate teleporter on level 3 and return to rebel base."; + + block_10AD: + goto block_143A; + + block_10B0: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Item.getType((Item.getType() != 25)) != 26) goto block_1185; + + block_10CE: + if (!global[0x002C]) goto block_1109; + + block_10D9: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + + block_1109: + if (!global[0x002C]) goto block_1147; + + block_1114: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Rescue Col. Ely from WEC prison."; + goto block_1182; + + block_1147: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate teleporter and return to rebel base."; + + block_1182: + goto block_143A; + + block_1185: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Item.getType((Item.getType() != 27)) != 28) goto block_128A; + + block_11A3: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + if (!global[0x002D]) goto block_1254; + + block_11DE: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate shuttle to Vigilance Platform.^)Await troop transfer.^)Lead hit squad to Vigilance Platform."; + goto block_1287; + + block_1254: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Take shuttle to Vigilance Platform."; + + block_1287: + goto block_143A; + + block_128A: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Item.getType((Item.getType() != 29)) != 30) goto block_142D; + + block_12A8: + if (!global[0x0038]) goto block_1347; + + block_12B3: + if (!global[0x0038]) goto block_12EF; + + block_12BE: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + + block_12EF: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate and deactivate SATARG system, then destroy weapon control system."; + + block_1347: + if ((global[0x0038] != 1) && (global[0x002E] != 0)) goto block_13D4; + + block_135F: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate and destroy Lithium Power Core with BlastPac."; + + block_13D4: + if global[0x002E] goto block_142A; + + block_13DE: + /* concat */ + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + textFile = "^)Locate escape pod on level 10 and escape Vigilance Platform."; + + block_142A: + goto block_143A; + + block_142D: + goto block_1466; + + block_143A: + spawn class_0A17_slot_20(pid, textFile, arg_06); + /* free_stack_string value_u8=0x0 target=[SP+00h] */ + suspend; + + block_1466: + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DEATHBOX/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/DEATHBOX/slot_0A_equip.txt new file mode 100644 index 0000000..3b40162 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DEATHBOX/slot_0A_equip.txt @@ -0,0 +1,78 @@ +function deathbox_equip() /* entry=289 class_id=0x04E7 slot=0x0A */ +{ + var + referent, /* [BP+00h] type=0x69 */ + var, /* [BP+0Ah] type=0x69 */ + sswitch, /* [BP-02h] type=0x24 */ + a, /* [BP-03h] type=0x62 */ + b, /* [BP-04h] type=0x62 */ + c, /* [BP-05h] type=0x62 */ + counter; /* [BP-07h] type=0x69 */ + + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + if (Item.getStatus(arg_06) & 0x1000) goto block_012D; + + block_0124: + goto block_025A; + + block_012A: + goto block_025A; + + block_012D: + spawn class_0A0C_slot_32(pid, 12, 0x00000000); + suspend; + class_0A1E_slot_23(0x1000, arg_06); + if (var != 2) goto block_024B; + + block_016A: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0187: + if condition goto block_01E4; + + block_018A: + if (Item.pop(sswitch) != 10) goto block_01B0; + + block_019F: + a = Item.getFrame(sswitch); + goto block_01D6; + + block_01B0: + if (Item.pop(sswitch) != 11) goto block_01D6; + + block_01C5: + b = Item.getFrame(sswitch); + goto block_01D6; + + block_01D6: + counter = (1 + counter); + /* loopnext */ + goto block_0187; + + block_01E4: + if ((b != 4) && (a != 0)) goto block_0248; + + block_01FA: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + spawn class_0A18_slot_20(pid, 0x0080, *(arg_06), arg_06); + suspend; + + block_0248: + goto block_024B; + + block_024B: + class_0A1E_slot_24(0x1000, arg_06); + + block_025A: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DEATHFL/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL/slot_20_slot_20.txt new file mode 100644 index 0000000..21aed91 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL/slot_20_slot_20.txt @@ -0,0 +1,27 @@ +function deathfl_slot_20() /* entry=375 class_id=0x0A05 slot=0x20 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + item2, /* [BP-04h] type=0x24 */ + counter, /* [BP-06h] type=0x69 */ + n, /* [BP-08h] type=0x24 */ + n2, /* [BP-0Ah] type=0x24 */ + dir, /* [BP-0Ch] type=0x69 */ + x, /* [BP-0Eh] type=0x69 */ + y, /* [BP-10h] type=0x69 */ + z, /* [BP-12h] type=0x69 */ + spoogeType; /* [BP-14h] type=0x69 */ + + set_info(0x0001, *(arg_06)); + item = ref; + class_0A0C_slot_2C(vel, ref); + if (retval) { + if (Item.use(*(arg_06), item) == 0) { + } + return; + } + return; +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DEATHFL1/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL1/slot_06_gotHit.txt new file mode 100644 index 0000000..8ff58fc --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL1/slot_06_gotHit.txt @@ -0,0 +1,14 @@ +function deathfl1_gotHit() /* entry=125 class_id=0x0227 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A05_slot_20(vel, ref, arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DEATHFL1/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL1/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..684a64c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL1/slot_0F_enterFastArea.txt @@ -0,0 +1,8 @@ +function deathfl1_enterFastArea() /* entry=125 class_id=0x0227 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DEATHFL2/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL2/slot_06_gotHit.txt new file mode 100644 index 0000000..8d4a9ef --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL2/slot_06_gotHit.txt @@ -0,0 +1,14 @@ +function deathfl2_gotHit() /* entry=126 class_id=0x0228 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A05_slot_20(vel, ref, arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DEATHFL2/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL2/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..0bcc731 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL2/slot_0F_enterFastArea.txt @@ -0,0 +1,8 @@ +function deathfl2_enterFastArea() /* entry=126 class_id=0x0228 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DEATHFL3/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL3/slot_06_gotHit.txt new file mode 100644 index 0000000..4c5b1e3 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL3/slot_06_gotHit.txt @@ -0,0 +1,14 @@ +function deathfl3_gotHit() /* entry=58 class_id=0x0150 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A05_slot_20(vel, ref, arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DEATHFL3/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL3/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..c06d0d1 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL3/slot_0F_enterFastArea.txt @@ -0,0 +1,8 @@ +function deathfl3_enterFastArea() /* entry=58 class_id=0x0150 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DEATHFL4/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL4/slot_06_gotHit.txt new file mode 100644 index 0000000..7d57021 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL4/slot_06_gotHit.txt @@ -0,0 +1,14 @@ +function deathfl4_gotHit() /* entry=335 class_id=0x059E slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A05_slot_20(vel, ref, arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DEATHFL4/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL4/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..c9186a3 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL4/slot_0F_enterFastArea.txt @@ -0,0 +1,8 @@ +function deathfl4_enterFastArea() /* entry=335 class_id=0x059E slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DEATHFL5/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL5/slot_06_gotHit.txt new file mode 100644 index 0000000..1f75079 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL5/slot_06_gotHit.txt @@ -0,0 +1,14 @@ +function deathfl5_gotHit() /* entry=338 class_id=0x05A2 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A05_slot_20(vel, ref, arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DEATHFL5/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL5/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..78c3c2d --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DEATHFL5/slot_0F_enterFastArea.txt @@ -0,0 +1,8 @@ +function deathfl5_enterFastArea() /* entry=338 class_id=0x05A2 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DETPAC/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/DETPAC/slot_01_use.txt new file mode 100644 index 0000000..26b121a --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DETPAC/slot_01_use.txt @@ -0,0 +1,216 @@ +function detpac_use() /* entry=319 class_id=0x055F slot=0x01 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + InCrouch, /* [BP-01h] type=0x62 */ + Bomb, /* [BP-03h] type=0x24 */ + item, /* [BP-05h] type=0x24 */ + lastAnim, /* [BP-07h] type=0x69 */ + xOff, /* [BP-09h] type=0x69 */ + yOff, /* [BP-0Bh] type=0x69 */ + mine; /* [BP-0Dh] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + Bomb = *(arg_06); + if Item.legal_move(arg_06) goto block_045B; + + block_0103: + /* global_address global_id=0x3C */ + if (Item.getType() != 40) goto block_014D; + + block_0119: + goto block_046A; + + block_014D: + set_info(0x00F0, 0); + lastAnim = 0; + + block_0168: + /* global_address global_id=0x3C */ + if Intrinsic0033() goto block_019E; + + block_0178: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_0168; + + block_019E: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 0) goto block_01BC; + + block_01AE: + xOff = -1; + yOff = -3; + goto block_037E; + + block_01BC: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 1) goto block_01DA; + + block_01CC: + xOff = 0; + yOff = -3; + goto block_037E; + + block_01DA: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 2) goto block_01F8; + + block_01EA: + xOff = 1; + yOff = -3; + goto block_037E; + + block_01F8: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 3) goto block_0216; + + block_0208: + xOff = 2; + yOff = -2; + goto block_037E; + + block_0216: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 4) goto block_0234; + + block_0226: + xOff = 2; + yOff = -1; + goto block_037E; + + block_0234: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 5) goto block_0252; + + block_0244: + xOff = 2; + yOff = 0; + goto block_037E; + + block_0252: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 6) goto block_0270; + + block_0262: + xOff = 2; + yOff = 2; + goto block_037E; + + block_0270: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 7) goto block_028E; + + block_0280: + xOff = 0; + yOff = 2; + goto block_037E; + + block_028E: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 8) goto block_02AC; + + block_029E: + xOff = -1; + yOff = 2; + goto block_037E; + + block_02AC: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 9) goto block_02CA; + + block_02BC: + xOff = -2; + yOff = 2; + goto block_037E; + + block_02CA: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 10) goto block_02E8; + + block_02DA: + xOff = -3; + yOff = 2; + goto block_037E; + + block_02E8: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 11) goto block_0306; + + block_02F8: + xOff = -3; + yOff = 1; + goto block_037E; + + block_0306: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 12) goto block_0324; + + block_0316: + xOff = -3; + yOff = 0; + goto block_037E; + + block_0324: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 13) goto block_0342; + + block_0334: + xOff = -3; + yOff = -1; + goto block_037E; + + block_0342: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 14) goto block_0360; + + block_0352: + xOff = -3; + yOff = -2; + goto block_037E; + + block_0360: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 15) goto block_037E; + + block_0370: + xOff = -3; + yOff = -3; + goto block_037E; + + block_037E: + /* global_address global_id=0x3C */ + if Intrinsic0035() goto block_0398; + + block_038E: + InCrouch = 1; + goto block_03CF; + + block_0398: + InCrouch = 0; + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + suspend; + + block_03CF: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (!InCrouch) goto block_044D; + + block_041D: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + suspend; + + block_044D: + goto block_046A; + + block_045B: + + block_046A: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR/slot_20_slot_20.txt new file mode 100644 index 0000000..cfdda18 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR/slot_20_slot_20.txt @@ -0,0 +1,30 @@ +function door_slot_20() /* entry=376 class_id=0x0A06 slot=0x20 */ +{ + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A06_slot_21(pid, 0, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0137; + + block_012A: + /* word_to_dword */ + /* pop_result */ + goto block_0167; + + block_0134: + goto block_0141; + + block_0137: + /* word_to_dword */ + /* pop_result */ + goto block_0167; + + block_0141: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + + block_0167: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR/slot_21_slot_21.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR/slot_21_slot_21.txt new file mode 100644 index 0000000..be3f4d1 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR/slot_21_slot_21.txt @@ -0,0 +1,1542 @@ +function door_slot_21() /* entry=376 class_id=0x0A06 slot=0x21 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + num, /* [BP+0Ah] type=0x69 */ + doorType, /* [BP-02h] type=0x69 */ + ewall; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + doorType = Intrinsic0016(arg_06); + if (doorType != 0x00A9) goto block_0293; + + block_01CD: + if (num != 2) goto block_01E8; + + block_01DE: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_01E8: + spawn class_0A07_slot_20(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0290; + + block_020C: + if (num != 1) goto block_0286; + + block_021D: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */ + + block_023B: + if condition goto block_0284; + + block_023E: + if (Item.fall(ewall) != Item.fall(arg_06)) goto block_0280; + + block_025A: + spawn class_0A0C_slot_31(pid, ewall, 0x00000000); + suspend; + + block_0280: + /* loopnext */ + goto block_023B; + + block_0284: + + block_0286: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0290: + goto block_1687; + + block_0293: + if (doorType != 0x00D0) goto block_02E8; + + block_029C: + if (num != 1) goto block_02B7; + + block_02AD: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_02B7: + spawn class_0A07_slot_21(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_02E5; + + block_02DB: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_02E5: + goto block_1687; + + block_02E8: + if (doorType != 70) goto block_03B6; + + block_02F0: + if (num != 2) goto block_030B; + + block_0301: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_030B: + spawn class_0A07_slot_22(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_03B3; + + block_032F: + if (num != 1) goto block_03A9; + + block_0340: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */ + + block_035E: + if condition goto block_03A7; + + block_0361: + if (Item.fall(ewall) != Item.fall(arg_06)) goto block_03A3; + + block_037D: + spawn class_0A0C_slot_31(pid, ewall, 0x00000000); + suspend; + + block_03A3: + /* loopnext */ + goto block_035E; + + block_03A7: + + block_03A9: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_03B3: + goto block_1687; + + block_03B6: + if (doorType != 0x0107) goto block_040B; + + block_03BF: + if (num != 1) goto block_03DA; + + block_03D0: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_03DA: + spawn class_0A07_slot_23(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0408; + + block_03FE: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0408: + goto block_1687; + + block_040B: + if (doorType != 0x02D6) goto block_0460; + + block_0414: + if (num != 2) goto block_042F; + + block_0425: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_042F: + spawn class_0A07_slot_24(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_045D; + + block_0453: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_045D: + goto block_1687; + + block_0460: + if (doorType != 0x02DB) goto block_04B5; + + block_0469: + if (num != 1) goto block_0484; + + block_047A: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0484: + spawn class_0A07_slot_25(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_04B2; + + block_04A8: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_04B2: + goto block_1687; + + block_04B5: + if (doorType != 0x02D5) goto block_050A; + + block_04BE: + if (num != 2) goto block_04D9; + + block_04CF: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_04D9: + spawn class_0A07_slot_26(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0507; + + block_04FD: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0507: + goto block_1687; + + block_050A: + if (doorType != 0x02DA) goto block_055F; + + block_0513: + if (num != 1) goto block_052E; + + block_0524: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_052E: + spawn class_0A07_slot_27(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_055C; + + block_0552: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_055C: + goto block_1687; + + block_055F: + if (doorType != 5) goto block_062D; + + block_0567: + if (num != 2) goto block_0582; + + block_0578: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0582: + spawn class_0A07_slot_28(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_062A; + + block_05A6: + if (num != 1) goto block_0620; + + block_05B7: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */ + + block_05D5: + if condition goto block_061E; + + block_05D8: + if (Item.fall(ewall) != Item.fall(arg_06)) goto block_061A; + + block_05F4: + spawn class_0A0C_slot_31(pid, ewall, 0x00000000); + suspend; + + block_061A: + /* loopnext */ + goto block_05D5; + + block_061E: + + block_0620: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_062A: + goto block_1687; + + block_062D: + if (doorType != 0x00C2) goto block_0682; + + block_0636: + if (num != 1) goto block_0651; + + block_0647: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0651: + spawn class_0A07_slot_29(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_067F; + + block_0675: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_067F: + goto block_1687; + + block_0682: + if (doorType != 123) goto block_0750; + + block_068A: + if (num != 2) goto block_06A5; + + block_069B: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_06A5: + spawn class_0A07_slot_2A(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_074D; + + block_06C9: + if (num != 1) goto block_0743; + + block_06DA: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */ + + block_06F8: + if condition goto block_0741; + + block_06FB: + if (Item.fall(ewall) != Item.fall(arg_06)) goto block_073D; + + block_0717: + spawn class_0A0C_slot_31(pid, ewall, 0x00000000); + suspend; + + block_073D: + /* loopnext */ + goto block_06F8; + + block_0741: + + block_0743: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_074D: + goto block_1687; + + block_0750: + if (doorType != 0x00CB) goto block_07A5; + + block_0759: + if (num != 1) goto block_0774; + + block_076A: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0774: + spawn class_0A07_slot_2B(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_07A2; + + block_0798: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_07A2: + goto block_1687; + + block_07A5: + if (doorType != 0x01AB) goto block_07FA; + + block_07AE: + if (num != 2) goto block_07C9; + + block_07BF: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_07C9: + spawn class_0A07_slot_2C(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_07F7; + + block_07ED: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_07F7: + goto block_1687; + + block_07FA: + if (doorType != 0x0215) goto block_084F; + + block_0803: + if (num != 1) goto block_081E; + + block_0814: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_081E: + spawn class_0A07_slot_2D(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_084C; + + block_0842: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_084C: + goto block_1687; + + block_084F: + if (doorType != 0x0393) goto block_08A4; + + block_0858: + if (num != 2) goto block_0873; + + block_0869: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0873: + spawn class_0A07_slot_2E(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_08A1; + + block_0897: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_08A1: + goto block_1687; + + block_08A4: + if (doorType != 0x0394) goto block_08F9; + + block_08AD: + if (num != 1) goto block_08C8; + + block_08BE: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_08C8: + spawn class_0A07_slot_2F(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_08F6; + + block_08EC: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_08F6: + goto block_1687; + + block_08F9: + if (doorType != 0x0193) goto block_094E; + + block_0902: + if (num != 2) goto block_091D; + + block_0913: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_091D: + spawn class_0A07_slot_30(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_094B; + + block_0941: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_094B: + goto block_1687; + + block_094E: + if (doorType != 0x0189) goto block_09A3; + + block_0957: + if (num != 1) goto block_0972; + + block_0968: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0972: + spawn class_0A07_slot_31(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_09A0; + + block_0996: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_09A0: + goto block_1687; + + block_09A3: + if (doorType != 0x01C7) goto block_09F8; + + block_09AC: + if (num != 2) goto block_09C7; + + block_09BD: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_09C7: + spawn class_0A07_slot_32(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_09F5; + + block_09EB: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_09F5: + goto block_1687; + + block_09F8: + if (doorType != 0x0289) goto block_0A4D; + + block_0A01: + if (num != 1) goto block_0A1C; + + block_0A12: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0A1C: + spawn class_0A07_slot_33(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0A4A; + + block_0A40: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0A4A: + goto block_1687; + + block_0A4D: + if (doorType != 0x030A) goto block_0AA2; + + block_0A56: + if (num != 2) goto block_0A71; + + block_0A67: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0A71: + spawn class_0A08_slot_20(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0A9F; + + block_0A95: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0A9F: + goto block_1687; + + block_0AA2: + if (doorType != 0x036B) goto block_0AF7; + + block_0AAB: + if (num != 1) goto block_0AC6; + + block_0ABC: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0AC6: + spawn class_0A08_slot_21(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0AF4; + + block_0AEA: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0AF4: + goto block_1687; + + block_0AF7: + if (doorType != 0x030B) goto block_0B4C; + + block_0B00: + if (num != 2) goto block_0B1B; + + block_0B11: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0B1B: + spawn class_0A08_slot_22(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0B49; + + block_0B3F: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0B49: + goto block_1687; + + block_0B4C: + if (doorType != 0x0368) goto block_0BA1; + + block_0B55: + if (num != 1) goto block_0B70; + + block_0B66: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0B70: + spawn class_0A08_slot_23(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0B9E; + + block_0B94: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0B9E: + goto block_1687; + + block_0BA1: + if (doorType != 0x0095) goto block_0BF6; + + block_0BAA: + if (num != 2) goto block_0BC5; + + block_0BBB: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0BC5: + spawn class_0A08_slot_24(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0BF3; + + block_0BE9: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0BF3: + goto block_1687; + + block_0BF6: + if (doorType != 0x030E) goto block_0C4B; + + block_0BFF: + if (num != 1) goto block_0C1A; + + block_0C10: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0C1A: + spawn class_0A08_slot_25(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0C48; + + block_0C3E: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0C48: + goto block_1687; + + block_0C4B: + if (doorType != 0x0099) goto block_0CA0; + + block_0C54: + if (num != 2) goto block_0C6F; + + block_0C65: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0C6F: + spawn class_0A08_slot_26(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0C9D; + + block_0C93: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0C9D: + goto block_1687; + + block_0CA0: + if (doorType != 0x0100) goto block_0CF5; + + block_0CA9: + if (num != 1) goto block_0CC4; + + block_0CBA: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0CC4: + spawn class_0A08_slot_27(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0CF2; + + block_0CE8: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0CF2: + goto block_1687; + + block_0CF5: + if (doorType != 0x053D) goto block_0D4A; + + block_0CFE: + if (num != 2) goto block_0D19; + + block_0D0F: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0D19: + spawn class_0A08_slot_28(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0D47; + + block_0D3D: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0D47: + goto block_1687; + + block_0D4A: + if (doorType != 0x053E) goto block_0D9F; + + block_0D53: + if (num != 1) goto block_0D6E; + + block_0D64: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0D6E: + spawn class_0A08_slot_29(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0D9C; + + block_0D92: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0D9C: + goto block_1687; + + block_0D9F: + if (doorType != 0x053B) goto block_0DF4; + + block_0DA8: + if (num != 2) goto block_0DC3; + + block_0DB9: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0DC3: + spawn class_0A08_slot_2A(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0DF1; + + block_0DE7: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0DF1: + goto block_1687; + + block_0DF4: + if (doorType != 0x053C) goto block_0E49; + + block_0DFD: + if (num != 1) goto block_0E18; + + block_0E0E: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0E18: + spawn class_0A08_slot_2B(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0E46; + + block_0E3C: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0E46: + goto block_1687; + + block_0E49: + if (doorType != 0x01EE) goto block_0E9E; + + block_0E52: + if (num != 2) goto block_0E6D; + + block_0E63: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0E6D: + spawn class_0A07_slot_34(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0E9B; + + block_0E91: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0E9B: + goto block_1687; + + block_0E9E: + if (doorType != 0x01ED) goto block_0EF3; + + block_0EA7: + if (num != 1) goto block_0EC2; + + block_0EB8: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0EC2: + spawn class_0A07_slot_35(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0EF0; + + block_0EE6: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0EF0: + goto block_1687; + + block_0EF3: + if (doorType != 0x03AD) goto block_0F48; + + block_0EFC: + if (num != 2) goto block_0F17; + + block_0F0D: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0F17: + spawn class_0A07_slot_36(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0F45; + + block_0F3B: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0F45: + goto block_1687; + + block_0F48: + if (doorType != 0x03C7) goto block_0F9D; + + block_0F51: + if (num != 1) goto block_0F6C; + + block_0F62: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0F6C: + spawn class_0A07_slot_37(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0F9A; + + block_0F90: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0F9A: + goto block_1687; + + block_0F9D: + if (doorType != 0x03B9) goto block_0FF2; + + block_0FA6: + if (num != 2) goto block_0FC1; + + block_0FB7: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0FC1: + spawn class_0A07_slot_41(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_0FEF; + + block_0FE5: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_0FEF: + goto block_1687; + + block_0FF2: + if (doorType != 0x03BD) goto block_1047; + + block_0FFB: + if (num != 1) goto block_1016; + + block_100C: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_1016: + spawn class_0A07_slot_42(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_1044; + + block_103A: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_1044: + goto block_1687; + + block_1047: + if (doorType != 0x03BA) goto block_109C; + + block_1050: + if (num != 2) goto block_106B; + + block_1061: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_106B: + spawn class_0A07_slot_43(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_1099; + + block_108F: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_1099: + goto block_1687; + + block_109C: + if (doorType != 0x03BE) goto block_10F1; + + block_10A5: + if (num != 1) goto block_10C0; + + block_10B6: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_10C0: + spawn class_0A07_slot_44(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_10EE; + + block_10E4: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_10EE: + goto block_1687; + + block_10F1: + if (doorType != 0x046A) goto block_1146; + + block_10FA: + if (num != 2) goto block_1115; + + block_110B: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_1115: + spawn class_0A07_slot_45(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_1143; + + block_1139: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_1143: + goto block_1687; + + block_1146: + if (doorType != 0x046C) goto block_119B; + + block_114F: + if (num != 1) goto block_116A; + + block_1160: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_116A: + spawn class_0A07_slot_46(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_1198; + + block_118E: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_1198: + goto block_1687; + + block_119B: + if (doorType != 0x03C6) goto block_11F0; + + block_11A4: + if (num != 2) goto block_11BF; + + block_11B5: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_11BF: + spawn class_0A07_slot_47(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_11ED; + + block_11E3: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_11ED: + goto block_1687; + + block_11F0: + if (doorType != 0x046B) goto block_1245; + + block_11F9: + if (num != 1) goto block_1214; + + block_120A: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_1214: + spawn class_0A07_slot_48(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_1242; + + block_1238: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_1242: + goto block_1687; + + block_1245: + if (doorType != 0x028F) goto block_129A; + + block_124E: + if (num != 2) goto block_1269; + + block_125F: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_1269: + spawn class_0A07_slot_38(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_1297; + + block_128D: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_1297: + goto block_1687; + + block_129A: + if (doorType != 0x0428) goto block_12EF; + + block_12A3: + if (num != 1) goto block_12BE; + + block_12B4: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_12BE: + spawn class_0A07_slot_39(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_12EC; + + block_12E2: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_12EC: + goto block_1687; + + block_12EF: + if (doorType != 0x0312) goto block_1344; + + block_12F8: + if (num != 2) goto block_1313; + + block_1309: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_1313: + spawn class_0A07_slot_3A(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_1341; + + block_1337: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_1341: + goto block_1687; + + block_1344: + if (doorType != 0x0415) goto block_1399; + + block_134D: + if (num != 1) goto block_1368; + + block_135E: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_1368: + spawn class_0A07_slot_3B(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_1396; + + block_138C: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_1396: + goto block_1687; + + block_1399: + if (doorType != 0x04D8) goto block_13D7; + + block_13A2: + spawn class_0A07_slot_3C(pid, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_13D4; + + block_13CA: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_13D4: + goto block_1687; + + block_13D7: + if (doorType != 0x03FF) goto block_142C; + + block_13E0: + if (num != 2) goto block_13FB; + + block_13F1: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_13FB: + spawn class_0A07_slot_3D(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_1429; + + block_141F: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_1429: + goto block_1687; + + block_142C: + if (doorType != 0x0440) goto block_1481; + + block_1435: + if (num != 1) goto block_1450; + + block_1446: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_1450: + spawn class_0A07_slot_3E(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_147E; + + block_1474: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_147E: + goto block_1687; + + block_1481: + if (doorType != 0x03F8) goto block_14D6; + + block_148A: + if (num != 2) goto block_14A5; + + block_149B: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_14A5: + spawn class_0A07_slot_3F(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_14D3; + + block_14C9: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_14D3: + goto block_1687; + + block_14D6: + if (doorType != 0x043F) goto block_152B; + + block_14DF: + if (num != 1) goto block_14FA; + + block_14F0: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_14FA: + spawn class_0A07_slot_40(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_1528; + + block_151E: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_1528: + goto block_1687; + + block_152B: + if (doorType != 51) goto block_157F; + + block_1533: + if (num != 2) goto block_154E; + + block_1544: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_154E: + spawn class_0A07_slot_3D(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_157C; + + block_1572: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_157C: + goto block_1687; + + block_157F: + if (doorType != 0x009C) goto block_15D4; + + block_1588: + if (num != 1) goto block_15A3; + + block_1599: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_15A3: + spawn class_0A07_slot_3E(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_15D1; + + block_15C7: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_15D1: + goto block_1687; + + block_15D4: + if (doorType != 108) goto block_1628; + + block_15DC: + if (num != 2) goto block_15F7; + + block_15ED: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_15F7: + spawn class_0A07_slot_3F(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_1625; + + block_161B: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_1625: + goto block_1687; + + block_1628: + if (doorType != 0x0400) goto block_167D; + + block_1631: + if (num != 1) goto block_164C; + + block_1642: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_164C: + spawn class_0A07_slot_40(pid, arg_06); + suspend; + /* dword_to_word */ + if process_result goto block_167A; + + block_1670: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_167A: + goto block_1687; + + block_167D: + /* word_to_dword */ + /* pop_result */ + goto block_1687; + + block_1687: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR/slot_22_slot_22.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR/slot_22_slot_22.txt new file mode 100644 index 0000000..e68fc0c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR/slot_22_slot_22.txt @@ -0,0 +1,57 @@ +function door_slot_22() /* entry=376 class_id=0x0A06 slot=0x22 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + roof, /* [BP-02h] type=0x24 */ + count, /* [BP-04h] type=0x69 */ + doorParam, /* [BP-06h] type=0x69 */ + doorQuality, /* [BP-08h] type=0x69 */ + roofQuality; /* [BP-0Ah] type=0x69 */ + + entry: + set_info(0x0001, *(arg_06)); + count = 0; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x46 */ + /* loop current_var=0xFE string_bytes=0xE loop_type=0x2 */ + + block_1708: + if condition goto block_171F; + + block_170B: + count = (1 + count); + goto block_171F; + + block_171B: + /* loopnext */ + goto block_1708; + + block_171F: + doorQuality = Item.fall(arg_06); + doorParam = Intrinsic009C(arg_06); + if count goto block_17AD; + + block_1745: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x46 */ + /* loop current_var=0xFE string_bytes=0xE loop_type=0x2 */ + + block_1777: + if condition goto block_17AB; + + block_177A: + roofQuality = Item.fall(roof); + if ((roofQuality != doorQuality) || (roofQuality != doorParam)) goto block_17A7; + + block_179C: + + block_17A7: + /* loopnext */ + goto block_1777; + + block_17AB: + + block_17AD: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR/slot_23_slot_23.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR/slot_23_slot_23.txt new file mode 100644 index 0000000..8834199 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR/slot_23_slot_23.txt @@ -0,0 +1,184 @@ +function door_slot_23() /* entry=376 class_id=0x0A06 slot=0x23 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + deathBox, /* [BP-02h] type=0x24 */ + item, /* [BP-04h] type=0x24 */ + item2, /* [BP-06h] type=0x24 */ + hitMe, /* [BP-08h] type=0x69 */ + damagePoints; /* [BP-0Ah] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + class_0A0C_slot_2C(vel, ref); + hitMe = retval; + if (((hitMe != 3) || (hitMe != 4)) || (hitMe != 10)) goto block_185F; + + block_184B: + class_0A0C_slot_2B(vel, ref); + damagePoints = retval; + goto block_1865; + + block_185F: + goto block_20CA; + + block_1865: + spawn class_0A1E_slot_27(pid, 0x00C8, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_18E9; + + block_1896: + class_0A0C_slot_20(10); + if (retval > 5) goto block_18D6; + + block_18C6: + goto block_18E3; + + block_18D6: + + block_18E3: + goto block_20CA; + + block_18E9: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_1914: + if condition goto block_199D; + + block_1917: + if (Item.fall(deathBox) != Item.fall(arg_06)) goto block_1999; + + block_1933: + if (Item.getMapNum(deathBox) != 0) goto block_1970; + + block_1948: + spawn class_0A18_slot_20(pid, 0, deathBox, arg_06); + suspend; + goto block_1999; + + block_1970: + spawn class_0A18_slot_20(pid, (0 + 0x0080), deathBox, arg_06); + suspend; + + block_1999: + /* loopnext */ + goto block_1914; + + block_199D: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + if (Intrinsic0000() != 0) goto block_19E4; + + block_19D3: + spawn class_0A0C_slot_3B(0x00000000); + + block_19E4: + if (Intrinsic0016(arg_06) != 123) goto block_1AB9; + + block_19F3: + if Item.getFrame(arg_06) goto block_1A25; + + block_1A02: + goto block_1A45; + + block_1A25: + + block_1A45: + spawn class_0A06_slot_22(pid, arg_06); + suspend; + goto block_20AD; + + block_1AB9: + if (Intrinsic0016(arg_06) != 0x03FF) goto block_1B5D; + + block_1AC9: + spawn class_0A06_slot_22(pid, arg_06); + suspend; + goto block_20AD; + + block_1B5D: + if (Intrinsic0016(arg_06) != 70) goto block_1C00; + + block_1B6C: + spawn class_0A06_slot_22(pid, arg_06); + suspend; + goto block_20AD; + + block_1C00: + if (Intrinsic0016(arg_06) != 0x030B) goto block_1CA4; + + block_1C10: + spawn class_0A06_slot_22(pid, arg_06); + suspend; + goto block_20AD; + + block_1CA4: + if (Intrinsic0016(arg_06) != 0x0099) goto block_1D48; + + block_1CB4: + spawn class_0A06_slot_22(pid, arg_06); + suspend; + goto block_20AD; + + block_1D48: + if (Intrinsic0016(arg_06) != 5) goto block_1E1D; + + block_1D57: + if Item.getFrame(arg_06) goto block_1D89; + + block_1D66: + goto block_1DA9; + + block_1D89: + + block_1DA9: + spawn class_0A06_slot_22(pid, arg_06); + suspend; + goto block_20AD; + + block_1E1D: + if (Intrinsic0016(arg_06) != 0x03F8) goto block_1EC1; + + block_1E2D: + spawn class_0A06_slot_22(pid, arg_06); + suspend; + goto block_20AD; + + block_1EC1: + if (Intrinsic0016(arg_06) != 0x00A9) goto block_1F65; + + block_1ED1: + spawn class_0A06_slot_22(pid, arg_06); + suspend; + goto block_20AD; + + block_1F65: + if (Intrinsic0016(arg_06) != 0x030A) goto block_2009; + + block_1F75: + spawn class_0A06_slot_22(pid, arg_06); + suspend; + goto block_20AD; + + block_2009: + if (Intrinsic0016(arg_06) != 0x0095) goto block_20AD; + + block_2019: + spawn class_0A06_slot_22(pid, arg_06); + suspend; + goto block_20AD; + + block_20AD: + /* bit_not */ + + block_20CA: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_20_slot_20.txt new file mode 100644 index 0000000..3db6520 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_20_slot_20.txt @@ -0,0 +1,45 @@ +function door2_slot_20() /* entry=377 class_id=0x0A07 slot=0x20 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + doorList, /* [BP-02h] type=0x6C */ + counter, /* [BP-04h] type=0x69 */ + maxFrame; /* [BP-06h] type=0x69 */ + + entry: + set_info(0x021B, 0); + if (Item.getStatus(arg_06) & 4) goto block_01F9; + + block_01F3: + goto block_0306; + + block_01F9: + spawn class_0A06_slot_22(pid, arg_06); + suspend; + /* create_list element_size=0x2 count=0xC */ + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + doorList = 0x00D0; + class_0A0C_slot_3A(0x00A9, 0x00AB, 0x00AC, 0x00AF, 0x00B2, 0x00B3, 0x00B4, 0x00B6, 0x00B7, 0x00B8, 0x00B9, doorList); + /* free_stack_list value_u8=0x0 target=[SP+00h] */ + maxFrame = retval; + counter = 2; + + block_0278: + if (counter <= maxFrame) goto block_02FC; + + block_0283: + spawn class_0A0C_slot_32(doorList, counter, pid, 2, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0278; + + block_02FC: + /* word_to_dword */ + /* pop_result */ + goto block_0306; + + block_0306: + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_21_slot_21.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_21_slot_21.txt new file mode 100644 index 0000000..b26c10b --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_21_slot_21.txt @@ -0,0 +1,73 @@ +function door2_slot_21() /* entry=377 class_id=0x0A07 slot=0x21 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + doorList, /* [BP-02h] type=0x6C */ + counter, /* [BP-04h] type=0x69 */ + maxFrame; /* [BP-06h] type=0x69 */ + + entry: + set_info(0x021B, 0); + if (Item.getStatus(arg_06) & 4) goto block_0370; + + block_036A: + goto block_052A; + + block_0370: + /* create_list element_size=0x2 count=0xC */ + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + doorList = 0x00D0; + class_0A0C_slot_3A(0x00A9, 0x00AB, 0x00AC, 0x00AF, 0x00B2, 0x00B3, 0x00B4, 0x00B6, 0x00B7, 0x00B8, 0x00B9, doorList); + /* free_stack_list value_u8=0x0 target=[SP+00h] */ + maxFrame = retval; + counter = (maxFrame - 1); + + block_03D3: + if (counter != 0) goto block_0520; + + block_03DB: + class_0A0C_slot_2D((Item.getZ(arg_06) - 8), Item.legal_create(arg_06), Intrinsic0013(arg_06), Item.getFrame(arg_06), doorList, counter, list_element(size=0x2), *(arg_06)); + if retval goto block_0444; + + block_041B: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_0510; + + block_0444: + counter = (1 + counter); + counter = (1 + counter); + + block_0472: + if (counter < (maxFrame + 1)) goto block_0506; + + block_0483: + spawn class_0A0C_slot_32(doorList, counter, pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + /* word_to_dword */ + /* pop_result */ + goto block_052A; + + block_0503: + goto block_0472; + + block_0506: + /* word_to_dword */ + /* pop_result */ + goto block_052A; + + block_0510: + counter = (counter - 1); + goto block_03D3; + + block_0520: + /* word_to_dword */ + /* pop_result */ + goto block_052A; + + block_052A: + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_22_slot_22.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_22_slot_22.txt new file mode 100644 index 0000000..4319964 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_22_slot_22.txt @@ -0,0 +1,45 @@ +function door2_slot_22() /* entry=377 class_id=0x0A07 slot=0x22 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + doorList, /* [BP-02h] type=0x6C */ + counter, /* [BP-04h] type=0x69 */ + maxFrame; /* [BP-06h] type=0x69 */ + + entry: + set_info(0x021B, 0); + if (Item.getStatus(arg_06) & 4) goto block_0594; + + block_058E: + goto block_069A; + + block_0594: + spawn class_0A06_slot_22(pid, arg_06); + suspend; + /* create_list element_size=0x2 count=0xC */ + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + doorList = 0x0107; + class_0A0C_slot_3A(70, 85, 88, 101, 100, 99, 89, 0x0103, 0x0104, 0x0105, 0x0106, doorList); + /* free_stack_list value_u8=0x0 target=[SP+00h] */ + maxFrame = retval; + counter = 2; + + block_060C: + if (counter <= maxFrame) goto block_0690; + + block_0617: + spawn class_0A0C_slot_32(doorList, counter, pid, 2, 0x00000000); + suspend; + counter = (1 + counter); + goto block_060C; + + block_0690: + /* word_to_dword */ + /* pop_result */ + goto block_069A; + + block_069A: + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_23_slot_23.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_23_slot_23.txt new file mode 100644 index 0000000..b428076 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_23_slot_23.txt @@ -0,0 +1,69 @@ +function door2_slot_23() /* entry=377 class_id=0x0A07 slot=0x23 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + doorList, /* [BP-02h] type=0x6C */ + counter, /* [BP-04h] type=0x69 */ + counter2, /* [BP-06h] type=0x69 */ + maxFrame; /* [BP-08h] type=0x69 */ + + entry: + set_info(0x021B, 0); + if (Item.getStatus(arg_06) & 4) goto block_0704; + + block_06FE: + goto block_08AD; + + block_0704: + /* create_list element_size=0x2 count=0xC */ + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + doorList = 0x0107; + class_0A0C_slot_3A(70, 85, 88, 101, 100, 99, 89, 0x0103, 0x0104, 0x0105, 0x0106, doorList); + /* free_stack_list value_u8=0x0 target=[SP+00h] */ + maxFrame = retval; + counter = (maxFrame - 1); + + block_0760: + if (counter != 0) goto block_08A3; + + block_0768: + class_0A0C_slot_2D((Item.getZ(arg_06) - 8), Item.legal_create(arg_06), Intrinsic0013(arg_06), Item.getFrame(arg_06), doorList, counter, list_element(size=0x2), *(arg_06)); + if retval goto block_07D1; + + block_07A8: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_0893; + + block_07D1: + counter = (1 + counter); + counter = (1 + counter); + + block_07FF: + if (counter < (maxFrame + 1)) goto block_0889; + + block_0810: + spawn class_0A0C_slot_32(doorList, counter, pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_07FF; + + block_0889: + /* word_to_dword */ + /* pop_result */ + goto block_08AD; + + block_0893: + counter = (counter - 1); + goto block_0760; + + block_08A3: + /* word_to_dword */ + /* pop_result */ + goto block_08AD; + + block_08AD: + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_24_slot_24.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_24_slot_24.txt new file mode 100644 index 0000000..b27d866 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_24_slot_24.txt @@ -0,0 +1,32 @@ +function door2_slot_24() /* entry=377 class_id=0x0A07 slot=0x24 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + maxFrame; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A06_slot_22(pid, arg_06); + suspend; + maxFrame = 8; + counter = 1; + + block_0945: + if (counter <= maxFrame) goto block_0990; + + block_0950: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0945; + + block_0990: + /* word_to_dword */ + /* pop_result */ + goto block_09EC; + + block_09EC: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_25_slot_25.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_25_slot_25.txt new file mode 100644 index 0000000..75ae9dd --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_25_slot_25.txt @@ -0,0 +1,45 @@ +function door2_slot_25() /* entry=377 class_id=0x0A07 slot=0x25 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + counter2, /* [BP-04h] type=0x69 */ + maxFrame; /* [BP-06h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + maxFrame = 8; + class_0A0C_slot_2D((Item.getZ(arg_06) - (8 * 10)), Item.legal_create(arg_06), Intrinsic0013(arg_06), maxFrame, 0x02D6, *(arg_06)); + if retval goto block_0AA6; + + block_0A70: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + goto block_0AB0; + + block_0AA6: + /* word_to_dword */ + /* pop_result */ + goto block_0B1C; + + block_0AB0: + counter = (maxFrame - 1); + + block_0ABA: + if (counter > 0) goto block_0B05; + + block_0AC2: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (counter - 1); + goto block_0ABA; + + block_0B05: + /* word_to_dword */ + /* pop_result */ + goto block_0B1C; + + block_0B1C: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_26_slot_26.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_26_slot_26.txt new file mode 100644 index 0000000..826eec6 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_26_slot_26.txt @@ -0,0 +1,32 @@ +function door2_slot_26() /* entry=377 class_id=0x0A07 slot=0x26 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + maxFrame; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A06_slot_22(pid, arg_06); + suspend; + maxFrame = 8; + counter = 1; + + block_0BA5: + if (counter <= maxFrame) goto block_0BF0; + + block_0BB0: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0BA5; + + block_0BF0: + /* word_to_dword */ + /* pop_result */ + goto block_0C4C; + + block_0C4C: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_27_slot_27.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_27_slot_27.txt new file mode 100644 index 0000000..8a12599 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_27_slot_27.txt @@ -0,0 +1,45 @@ +function door2_slot_27() /* entry=377 class_id=0x0A07 slot=0x27 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + counter2, /* [BP-04h] type=0x69 */ + maxFrame; /* [BP-06h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + maxFrame = 8; + class_0A0C_slot_2D((Item.getZ(arg_06) - (8 * 10)), Item.legal_create(arg_06), Intrinsic0013(arg_06), maxFrame, 0x02D5, *(arg_06)); + if retval goto block_0D06; + + block_0CD0: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + goto block_0D10; + + block_0D06: + /* word_to_dword */ + /* pop_result */ + goto block_0D7C; + + block_0D10: + counter = (maxFrame - 1); + + block_0D1A: + if (counter > 0) goto block_0D65; + + block_0D22: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (counter - 1); + goto block_0D1A; + + block_0D65: + /* word_to_dword */ + /* pop_result */ + goto block_0D7C; + + block_0D7C: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_28_slot_28.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_28_slot_28.txt new file mode 100644 index 0000000..1d09de2 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_28_slot_28.txt @@ -0,0 +1,45 @@ +function door2_slot_28() /* entry=377 class_id=0x0A07 slot=0x28 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + doorList, /* [BP-02h] type=0x6C */ + counter, /* [BP-04h] type=0x69 */ + maxFrame; /* [BP-06h] type=0x69 */ + + entry: + set_info(0x021B, 0); + if (Item.getStatus(arg_06) & 4) goto block_0DE4; + + block_0DDE: + goto block_0EE1; + + block_0DE4: + spawn class_0A06_slot_22(pid, arg_06); + suspend; + /* create_list element_size=0x2 count=0x7 */ + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + doorList = 0x00C2; + class_0A0C_slot_3A(5, 0x00BE, 0x00BF, 0x00C0, 0x00C1, 0x00CA, doorList); + /* free_stack_list value_u8=0x0 target=[SP+00h] */ + maxFrame = retval; + counter = 2; + + block_0E53: + if (counter <= maxFrame) goto block_0ED7; + + block_0E5E: + spawn class_0A0C_slot_32(doorList, pid, 3, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0E53; + + block_0ED7: + /* word_to_dword */ + /* pop_result */ + goto block_0EE1; + + block_0EE1: + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_29_slot_29.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_29_slot_29.txt new file mode 100644 index 0000000..5779202 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_29_slot_29.txt @@ -0,0 +1,68 @@ +function door2_slot_29() /* entry=377 class_id=0x0A07 slot=0x29 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + doorList, /* [BP-02h] type=0x6C */ + counter, /* [BP-04h] type=0x69 */ + maxFrame; /* [BP-06h] type=0x69 */ + + entry: + set_info(0x021B, 0); + if (Item.getStatus(arg_06) & 4) goto block_0F4B; + + block_0F45: + goto block_10DE; + + block_0F4B: + /* create_list element_size=0x2 count=0x7 */ + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + doorList = 0x00C2; + class_0A0C_slot_3A(5, 0x00BE, 0x00BF, 0x00C0, 0x00C1, 0x00CA, doorList); + /* free_stack_list value_u8=0x0 target=[SP+00h] */ + maxFrame = retval; + counter = (maxFrame - 1); + + block_0F9E: + if (counter != 0) goto block_10D4; + + block_0FA6: + class_0A0C_slot_2D(Item.getZ(arg_06), Item.legal_create(arg_06), (Intrinsic0013(arg_06) + 16), Item.getFrame(arg_06), doorList, counter, list_element(size=0x2), *(arg_06)); + if retval goto block_100F; + + block_0FE6: + spawn class_0A0C_slot_32(pid, 3, 0x00000000); + suspend; + goto block_10C4; + + block_100F: + counter = (1 + counter); + counter = (1 + counter); + + block_1030: + if (counter < (maxFrame + 1)) goto block_10BA; + + block_1041: + spawn class_0A0C_slot_32(doorList, pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_1030; + + block_10BA: + /* word_to_dword */ + /* pop_result */ + goto block_10DE; + + block_10C4: + counter = (counter - 1); + goto block_0F9E; + + block_10D4: + /* word_to_dword */ + /* pop_result */ + goto block_10DE; + + block_10DE: + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_2A_slot_2A.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_2A_slot_2A.txt new file mode 100644 index 0000000..8c6a7aa --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_2A_slot_2A.txt @@ -0,0 +1,45 @@ +function door2_slot_2A() /* entry=377 class_id=0x0A07 slot=0x2A */ +{ + var + referent, /* [BP+00h] type=0x69 */ + doorList, /* [BP-02h] type=0x6C */ + counter, /* [BP-04h] type=0x69 */ + maxFrame; /* [BP-06h] type=0x69 */ + + entry: + set_info(0x021B, 0); + if (Item.getStatus(arg_06) & 4) goto block_1148; + + block_1142: + goto block_123A; + + block_1148: + spawn class_0A06_slot_22(pid, arg_06); + suspend; + /* create_list element_size=0x2 count=0x7 */ + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + doorList = 0x00CB; + class_0A0C_slot_3A(123, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, doorList); + /* free_stack_list value_u8=0x0 target=[SP+00h] */ + maxFrame = retval; + counter = 2; + + block_11B7: + if (counter <= maxFrame) goto block_1230; + + block_11C2: + spawn class_0A0C_slot_32(doorList, pid, 3, 0x00000000); + suspend; + counter = (1 + counter); + goto block_11B7; + + block_1230: + /* word_to_dword */ + /* pop_result */ + goto block_123A; + + block_123A: + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_2B_slot_2B.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_2B_slot_2B.txt new file mode 100644 index 0000000..cf1fc20 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_2B_slot_2B.txt @@ -0,0 +1,68 @@ +function door2_slot_2B() /* entry=377 class_id=0x0A07 slot=0x2B */ +{ + var + referent, /* [BP+00h] type=0x69 */ + doorList, /* [BP-02h] type=0x6C */ + counter, /* [BP-04h] type=0x69 */ + maxFrame; /* [BP-06h] type=0x69 */ + + entry: + set_info(0x021B, 0); + if (Item.getStatus(arg_06) & 4) goto block_12A4; + + block_129E: + goto block_1437; + + block_12A4: + /* create_list element_size=0x2 count=0x7 */ + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + doorList = 0x00CB; + class_0A0C_slot_3A(123, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, doorList); + /* free_stack_list value_u8=0x0 target=[SP+00h] */ + maxFrame = retval; + counter = (maxFrame - 1); + + block_12F7: + if (counter != 0) goto block_142D; + + block_12FF: + class_0A0C_slot_2D(Item.getZ(arg_06), (Item.legal_create(arg_06) + 16), Intrinsic0013(arg_06), Item.getFrame(arg_06), doorList, counter, list_element(size=0x2), *(arg_06)); + if retval goto block_1368; + + block_133F: + spawn class_0A0C_slot_32(pid, 3, 0x00000000); + suspend; + goto block_141D; + + block_1368: + counter = (1 + counter); + counter = (1 + counter); + + block_1389: + if (counter < (maxFrame + 1)) goto block_1413; + + block_139A: + spawn class_0A0C_slot_32(doorList, pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_1389; + + block_1413: + /* word_to_dword */ + /* pop_result */ + goto block_1437; + + block_141D: + counter = (counter - 1); + goto block_12F7; + + block_142D: + /* word_to_dword */ + /* pop_result */ + goto block_1437; + + block_1437: + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_2C_slot_2C.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_2C_slot_2C.txt new file mode 100644 index 0000000..ea7fd38 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_2C_slot_2C.txt @@ -0,0 +1,40 @@ +function door2_slot_2C() /* entry=377 class_id=0x0A07 slot=0x2C */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + maxFrame; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + if (Item.getFrame(arg_06) > 0) goto block_14A7; + + block_149D: + /* word_to_dword */ + /* pop_result */ + goto block_155C; + + block_14A7: + spawn class_0A06_slot_22(pid, arg_06); + suspend; + maxFrame = 11; + counter = 1; + + block_14E1: + if (counter <= maxFrame) goto block_152C; + + block_14EC: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_14E1; + + block_152C: + /* word_to_dword */ + /* pop_result */ + goto block_155C; + + block_155C: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_2D_slot_2D.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_2D_slot_2D.txt new file mode 100644 index 0000000..78f5bae --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_2D_slot_2D.txt @@ -0,0 +1,44 @@ +function door2_slot_2D() /* entry=377 class_id=0x0A07 slot=0x2D */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + maxFrame; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + maxFrame = 11; + class_0A0C_slot_2D(Item.getZ(arg_06), Item.legal_create(arg_06), Intrinsic0013(arg_06), maxFrame, 0x01AB, *(arg_06)); + if retval goto block_1610; + + block_15DA: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + goto block_161A; + + block_1610: + /* word_to_dword */ + /* pop_result */ + goto block_1679; + + block_161A: + counter = (maxFrame - 1); + + block_1624: + if (counter >= 0) goto block_166F; + + block_162C: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (counter - 1); + goto block_1624; + + block_166F: + /* word_to_dword */ + /* pop_result */ + goto block_1679; + + block_1679: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_2E_slot_2E.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_2E_slot_2E.txt new file mode 100644 index 0000000..587038a --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_2E_slot_2E.txt @@ -0,0 +1,32 @@ +function door2_slot_2E() /* entry=377 class_id=0x0A07 slot=0x2E */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + maxFrame; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A06_slot_22(pid, arg_06); + suspend; + maxFrame = 11; + counter = 1; + + block_16F5: + if (counter <= maxFrame) goto block_1740; + + block_1700: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_16F5; + + block_1740: + /* word_to_dword */ + /* pop_result */ + goto block_1765; + + block_1765: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_2F_slot_2F.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_2F_slot_2F.txt new file mode 100644 index 0000000..da0a23c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_2F_slot_2F.txt @@ -0,0 +1,44 @@ +function door2_slot_2F() /* entry=377 class_id=0x0A07 slot=0x2F */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + maxFrame; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + maxFrame = 11; + class_0A0C_slot_2D(Item.getZ(arg_06), Item.legal_create(arg_06), Intrinsic0013(arg_06), maxFrame, 0x0393, *(arg_06)); + if retval goto block_1819; + + block_17E3: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + goto block_1823; + + block_1819: + /* word_to_dword */ + /* pop_result */ + goto block_1882; + + block_1823: + counter = (maxFrame - 1); + + block_182D: + if (counter >= 0) goto block_1878; + + block_1835: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (counter - 1); + goto block_182D; + + block_1878: + /* word_to_dword */ + /* pop_result */ + goto block_1882; + + block_1882: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_30_slot_30.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_30_slot_30.txt new file mode 100644 index 0000000..39ee442 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_30_slot_30.txt @@ -0,0 +1,87 @@ +function door2_slot_30() /* entry=377 class_id=0x0A07 slot=0x30 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + doorList, /* [BP-02h] type=0x6C */ + doorList2, /* [BP-04h] type=0x6C */ + counter, /* [BP-06h] type=0x69 */ + door1, /* [BP-08h] type=0x24 */ + door2, /* [BP-0Ah] type=0x24 */ + item, /* [BP-0Ch] type=0x24 */ + maxFrame; /* [BP-0Eh] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A06_slot_22(pid, arg_06); + suspend; + /* create_list element_size=0x2 count=0x5 */ + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + doorList = 0x0189; + /* create_list element_size=0x2 count=0x5 */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + doorList2 = 0x0187; + class_0A0C_slot_3A(0x0193, 0x0192, 0x0191, 0x0190, 0x018D, 0x018C, 0x018B, 0x018A, doorList); + /* free_stack_list value_u8=0x0 target=[SP+00h] */ + maxFrame = retval; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF4 string_bytes=0x6 loop_type=0x2 */ + + block_1964: + if condition goto block_1972; + + block_1967: + door1 = item; + /* loopnext */ + goto block_1964; + + block_1972: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF4 string_bytes=0x6 loop_type=0x2 */ + + block_1992: + if condition goto block_19A0; + + block_1995: + door2 = item; + /* loopnext */ + goto block_1992; + + block_19A0: + counter = 2; + + block_19A9: + if (counter <= maxFrame) goto block_1A65; + + block_19B4: + if door1 goto block_19E4; + + block_19BC: + + block_19E4: + if door2 goto block_1A32; + + block_19EC: + + block_1A32: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_19A9; + + block_1A65: + /* word_to_dword */ + /* pop_result */ + goto block_1A6F; + + block_1A6F: + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_31_slot_31.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_31_slot_31.txt new file mode 100644 index 0000000..2f99c81 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_31_slot_31.txt @@ -0,0 +1,140 @@ +function door2_slot_31() /* entry=377 class_id=0x0A07 slot=0x31 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + doorList, /* [BP-02h] type=0x6C */ + doorList2, /* [BP-04h] type=0x6C */ + counter, /* [BP-06h] type=0x69 */ + counter2, /* [BP-08h] type=0x69 */ + door1, /* [BP-0Ah] type=0x24 */ + door2, /* [BP-0Ch] type=0x24 */ + item, /* [BP-0Eh] type=0x24 */ + nonLegalDoor1, /* [BP-0Fh] type=0x62 */ + nonLegalDoor2, /* [BP-10h] type=0x62 */ + bool, /* [BP-11h] type=0x62 */ + maxFrame; /* [BP-13h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + /* create_list element_size=0x2 count=0x5 */ + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + doorList = 0x0189; + /* create_list element_size=0x2 count=0x5 */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + doorList2 = 0x0187; + class_0A0C_slot_3A(0x0193, 0x0192, 0x0191, 0x0190, 0x018D, 0x018C, 0x018B, 0x018A, doorList); + /* free_stack_list value_u8=0x0 target=[SP+00h] */ + maxFrame = retval; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF2 string_bytes=0x6 loop_type=0x2 */ + + block_1B61: + if condition goto block_1B6F; + + block_1B64: + door1 = item; + /* loopnext */ + goto block_1B61; + + block_1B6F: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF2 string_bytes=0x6 loop_type=0x2 */ + + block_1B8F: + if condition goto block_1B9D; + + block_1B92: + door2 = item; + /* loopnext */ + goto block_1B8F; + + block_1B9D: + if (door1 && door2) goto block_1E43; + + block_1BB0: + counter = 1; + + block_1BC4: + if (counter <= (maxFrame - 1)) goto block_1E43; + + block_1BD5: + class_0A0C_slot_2D(Item.getZ(door1), Item.legal_create(door1), Intrinsic0013(door1), 0, doorList, (maxFrame - counter), list_element(size=0x2), door1); + if (!retval) goto block_1C17; + + block_1C10: + nonLegalDoor1 = 1; + + block_1C17: + class_0A0C_slot_2D(Item.getZ(door2), Item.legal_create(door2), (Intrinsic0013(door2) + 16), 0, doorList2, (maxFrame - counter), list_element(size=0x2), door2); + if (!retval) goto block_1C5C; + + block_1C55: + nonLegalDoor2 = 1; + + block_1C5C: + if ((!nonLegalDoor1) && (!nonLegalDoor2)) goto block_1CAB; + + block_1C6C: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + goto block_1E36; + + block_1CAB: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + if nonLegalDoor1 goto block_1D25; + + block_1CD9: + + block_1D25: + if nonLegalDoor2 goto block_1D45; + + block_1D2D: + + block_1D45: + counter2 = ((maxFrame - counter) + 1); + + block_1D52: + if (counter2 <= maxFrame) goto block_1E2C; + + block_1D5D: + if (!bool) goto block_1DD0; + + block_1DA0: + bool = 1; + goto block_1DF9; + + block_1DD0: + + block_1DF9: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter2 = (1 + counter2); + goto block_1D52; + + block_1E2C: + /* word_to_dword */ + /* pop_result */ + goto block_1E4D; + + block_1E36: + counter = (1 + counter); + goto block_1BC4; + + block_1E43: + /* word_to_dword */ + /* pop_result */ + goto block_1E4D; + + block_1E4D: + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_32_slot_32.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_32_slot_32.txt new file mode 100644 index 0000000..2aa9b1e --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_32_slot_32.txt @@ -0,0 +1,87 @@ +function door2_slot_32() /* entry=377 class_id=0x0A07 slot=0x32 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + doorList, /* [BP-02h] type=0x6C */ + doorList2, /* [BP-04h] type=0x6C */ + counter, /* [BP-06h] type=0x69 */ + door1, /* [BP-08h] type=0x24 */ + door2, /* [BP-0Ah] type=0x24 */ + item, /* [BP-0Ch] type=0x24 */ + maxFrame; /* [BP-0Eh] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A06_slot_22(pid, arg_06); + suspend; + /* create_list element_size=0x2 count=0x5 */ + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + doorList = 0x0289; + /* create_list element_size=0x2 count=0x5 */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + doorList2 = 0x028E; + class_0A0C_slot_3A(0x01C7, 0x0288, 0x028C, 0x0287, 0x01C6, 0x028A, 0x028B, 0x028D, doorList); + /* free_stack_list value_u8=0x0 target=[SP+00h] */ + maxFrame = retval; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF4 string_bytes=0x6 loop_type=0x2 */ + + block_1FA5: + if condition goto block_1FB3; + + block_1FA8: + door1 = item; + /* loopnext */ + goto block_1FA5; + + block_1FB3: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF4 string_bytes=0x6 loop_type=0x2 */ + + block_1FD3: + if condition goto block_1FE1; + + block_1FD6: + door2 = item; + /* loopnext */ + goto block_1FD3; + + block_1FE1: + counter = 2; + + block_1FEA: + if (counter <= maxFrame) goto block_20A6; + + block_1FF5: + if door1 goto block_2043; + + block_1FFD: + + block_2043: + if door2 goto block_2073; + + block_204B: + + block_2073: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_1FEA; + + block_20A6: + /* word_to_dword */ + /* pop_result */ + goto block_20B0; + + block_20B0: + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_33_slot_33.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_33_slot_33.txt new file mode 100644 index 0000000..cad7074 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_33_slot_33.txt @@ -0,0 +1,140 @@ +function door2_slot_33() /* entry=377 class_id=0x0A07 slot=0x33 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + doorList, /* [BP-02h] type=0x6C */ + doorList2, /* [BP-04h] type=0x6C */ + counter, /* [BP-06h] type=0x69 */ + counter2, /* [BP-08h] type=0x69 */ + door1, /* [BP-0Ah] type=0x24 */ + door2, /* [BP-0Ch] type=0x24 */ + item, /* [BP-0Eh] type=0x24 */ + nonLegalDoor1, /* [BP-0Fh] type=0x62 */ + nonLegalDoor2, /* [BP-10h] type=0x62 */ + bool, /* [BP-11h] type=0x62 */ + maxFrame; /* [BP-13h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + /* create_list element_size=0x2 count=0x5 */ + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + doorList = 0x0289; + /* create_list element_size=0x2 count=0x5 */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + doorList2 = 0x028E; + class_0A0C_slot_3A(0x01C7, 0x0288, 0x028C, 0x0287, 0x01C6, 0x028A, 0x028B, 0x028D, doorList); + /* free_stack_list value_u8=0x0 target=[SP+00h] */ + maxFrame = retval; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF2 string_bytes=0x6 loop_type=0x2 */ + + block_21A2: + if condition goto block_21B0; + + block_21A5: + door1 = item; + /* loopnext */ + goto block_21A2; + + block_21B0: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF2 string_bytes=0x6 loop_type=0x2 */ + + block_21D0: + if condition goto block_21DE; + + block_21D3: + door2 = item; + /* loopnext */ + goto block_21D0; + + block_21DE: + if (door1 && door2) goto block_24B5; + + block_21F1: + counter = 1; + + block_2205: + if (counter <= (maxFrame - 1)) goto block_24B5; + + block_2216: + class_0A0C_slot_2D(Item.getZ(door2), Item.legal_create(door2), Intrinsic0013(door2), 0, doorList2, (maxFrame - counter), list_element(size=0x2), door2); + if (!retval) goto block_2258; + + block_2251: + nonLegalDoor1 = 1; + + block_2258: + class_0A0C_slot_2D(Item.getZ(door1), (Item.legal_create(door1) + 16), Intrinsic0013(door1), 0, doorList, (maxFrame - counter), list_element(size=0x2), door1); + if (!retval) goto block_229D; + + block_2296: + nonLegalDoor2 = 1; + + block_229D: + if ((!nonLegalDoor1) && (!nonLegalDoor2)) goto block_22EC; + + block_22AD: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + goto block_24A8; + + block_22EC: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + if nonLegalDoor1 goto block_2397; + + block_231A: + + block_2397: + if nonLegalDoor2 goto block_23B7; + + block_239F: + + block_23B7: + counter2 = ((maxFrame - counter) + 1); + + block_23C4: + if (counter2 <= maxFrame) goto block_249E; + + block_23CF: + if (!bool) goto block_2442; + + block_2412: + bool = 1; + goto block_246B; + + block_2442: + + block_246B: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter2 = (1 + counter2); + goto block_23C4; + + block_249E: + /* word_to_dword */ + /* pop_result */ + goto block_24BF; + + block_24A8: + counter = (1 + counter); + goto block_2205; + + block_24B5: + /* word_to_dword */ + /* pop_result */ + goto block_24BF; + + block_24BF: + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_34_slot_34.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_34_slot_34.txt new file mode 100644 index 0000000..1140d82 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_34_slot_34.txt @@ -0,0 +1,47 @@ +function door2_slot_34() /* entry=377 class_id=0x0A07 slot=0x34 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + maxFrame, /* [BP-04h] type=0x69 */ + link, /* [BP-06h] type=0x69 */ + item, /* [BP-08h] type=0x24 */ + item2; /* [BP-0Ah] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A06_slot_22(pid, arg_06); + suspend; + set_info(1, 0); + maxFrame = 7; + counter = 1; + + block_25AC: + if (counter <= maxFrame) goto block_25F7; + + block_25B7: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_25AC; + + block_25F7: + link = Item.fall(arg_06); + if (Intrinsic0019(Item.getZ(arg_06), (Item.legal_create(arg_06) - 0x00D0), Intrinsic0013(arg_06), 1, 0x0090, item2) != 1) goto block_2670; + + block_2663: + + block_2670: + if (Intrinsic0019((Item.getZ(arg_06) + 80), Item.legal_create(arg_06), Intrinsic0013(arg_06), 0, 0x01ED, item) != 1) goto block_26B2; + + block_26A5: + + block_26B2: + /* word_to_dword */ + /* pop_result */ + goto block_26BC; + + block_26BC: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_35_slot_35.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_35_slot_35.txt new file mode 100644 index 0000000..bdcfbab --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_35_slot_35.txt @@ -0,0 +1,91 @@ +function door2_slot_35() /* entry=377 class_id=0x0A07 slot=0x35 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + item2, /* [BP-04h] type=0x24 */ + item3, /* [BP-06h] type=0x24 */ + prisDoor, /* [BP-08h] type=0x24 */ + counter, /* [BP-0Ah] type=0x69 */ + maxFrame, /* [BP-0Ch] type=0x69 */ + cox, /* [BP-0Eh] type=0x69 */ + coy, /* [BP-10h] type=0x69 */ + coz, /* [BP-12h] type=0x69 */ + x1, /* [BP-14h] type=0x69 */ + y1, /* [BP-16h] type=0x69 */ + x2, /* [BP-18h] type=0x69 */ + y2, /* [BP-1Ah] type=0x69 */ + z1, /* [BP-1Ch] type=0x69 */ + z2, /* [BP-1Eh] type=0x69 */ + link; /* [BP-20h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + set_info(1, 0); + maxFrame = 7; + prisDoor = *(arg_06); + cox = Intrinsic0013(arg_06); + coy = Item.legal_create(arg_06); + coz = Item.getZ(arg_06); + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x6 */ + + block_2778: + if condition goto block_27FE; + + block_277B: + if (Item.getFrame(item) != 0) goto block_27C5; + + block_278D: + x1 = Intrinsic0013(item); + y1 = Item.legal_create(item); + z1 = Item.getZ(item); + goto block_27FA; + + block_27C5: + x2 = Intrinsic0013(item); + y2 = Item.legal_create(item); + z2 = Item.getZ(item); + + block_27FA: + /* loopnext */ + goto block_2778; + + block_27FE: + link = Item.fall(arg_06); + if (Intrinsic0019((coz - 80), coy, cox, 7, 0x01EE, item2) != 1) goto block_28DB; + + block_2839: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = 1; + + block_2880: + if (counter <= maxFrame) goto block_28CE; + + block_288B: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_2880; + + block_28CE: + /* word_to_dword */ + /* pop_result */ + goto block_2948; + + block_28D8: + goto block_2948; + + block_28DB: + /* word_to_dword */ + /* pop_result */ + goto block_2948; + + block_2948: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_36_slot_36.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_36_slot_36.txt new file mode 100644 index 0000000..e3126b3 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_36_slot_36.txt @@ -0,0 +1,47 @@ +function door2_slot_36() /* entry=377 class_id=0x0A07 slot=0x36 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + maxFrame, /* [BP-04h] type=0x69 */ + link, /* [BP-06h] type=0x69 */ + item, /* [BP-08h] type=0x24 */ + item2; /* [BP-0Ah] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A06_slot_22(pid, arg_06); + suspend; + set_info(1, 0); + maxFrame = 7; + counter = 1; + + block_2A34: + if (counter <= maxFrame) goto block_2A7F; + + block_2A3F: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_2A34; + + block_2A7F: + link = Item.fall(arg_06); + if (Intrinsic0019(Item.getZ(arg_06), Item.legal_create(arg_06), (Intrinsic0013(arg_06) - 0x00D0), 1, 0x0238, item2) != 1) goto block_2AF8; + + block_2AEB: + + block_2AF8: + if (Intrinsic0019((Item.getZ(arg_06) + 80), Item.legal_create(arg_06), Intrinsic0013(arg_06), 0, 0x03C7, item) != 1) goto block_2B3A; + + block_2B2D: + + block_2B3A: + /* word_to_dword */ + /* pop_result */ + goto block_2B44; + + block_2B44: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_37_slot_37.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_37_slot_37.txt new file mode 100644 index 0000000..647151f --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_37_slot_37.txt @@ -0,0 +1,90 @@ +function door2_slot_37() /* entry=377 class_id=0x0A07 slot=0x37 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + item2, /* [BP-04h] type=0x24 */ + prisDoor, /* [BP-06h] type=0x24 */ + counter, /* [BP-08h] type=0x69 */ + maxFrame, /* [BP-0Ah] type=0x69 */ + cox, /* [BP-0Ch] type=0x69 */ + coy, /* [BP-0Eh] type=0x69 */ + coz, /* [BP-10h] type=0x69 */ + x1, /* [BP-12h] type=0x69 */ + y1, /* [BP-14h] type=0x69 */ + x2, /* [BP-16h] type=0x69 */ + y2, /* [BP-18h] type=0x69 */ + z1, /* [BP-1Ah] type=0x69 */ + z2, /* [BP-1Ch] type=0x69 */ + link; /* [BP-1Eh] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + set_info(1, 0); + maxFrame = 7; + prisDoor = *(arg_06); + cox = Intrinsic0013(arg_06); + coy = Item.legal_create(arg_06); + coz = Item.getZ(arg_06); + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x6 */ + + block_2C00: + if condition goto block_2C86; + + block_2C03: + if (Item.getFrame(item) != 0) goto block_2C4D; + + block_2C15: + x1 = Intrinsic0013(item); + y1 = Item.legal_create(item); + z1 = Item.getZ(item); + goto block_2C82; + + block_2C4D: + x2 = Intrinsic0013(item); + y2 = Item.legal_create(item); + z2 = Item.getZ(item); + + block_2C82: + /* loopnext */ + goto block_2C00; + + block_2C86: + link = Item.fall(arg_06); + if (Intrinsic0019((coz - 80), coy, cox, maxFrame, 0x03AD, item2) != 1) goto block_2D63; + + block_2CC1: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = 1; + + block_2D08: + if (counter <= maxFrame) goto block_2D56; + + block_2D13: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_2D08; + + block_2D56: + /* word_to_dword */ + /* pop_result */ + goto block_2DD0; + + block_2D60: + goto block_2DD0; + + block_2D63: + /* word_to_dword */ + /* pop_result */ + goto block_2DD0; + + block_2DD0: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_38_slot_38.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_38_slot_38.txt new file mode 100644 index 0000000..7f0659b --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_38_slot_38.txt @@ -0,0 +1,30 @@ +function door2_slot_38() /* entry=377 class_id=0x0A07 slot=0x38 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A06_slot_22(pid, arg_06); + suspend; + counter = 1; + + block_2EB0: + if (counter <= 3) goto block_2EF8; + + block_2EB8: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_2EB0; + + block_2EF8: + /* word_to_dword */ + /* pop_result */ + goto block_2F52; + + block_2F52: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_39_slot_39.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_39_slot_39.txt new file mode 100644 index 0000000..59170b9 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_39_slot_39.txt @@ -0,0 +1,40 @@ +function door2_slot_39() /* entry=377 class_id=0x0A07 slot=0x39 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + class_0A0C_slot_2D(Item.getZ(arg_06), Item.legal_create(arg_06), (Intrinsic0013(arg_06) + 0x0080), 3, 0x028F, *(arg_06)); + if retval goto block_3029; + + block_2FBD: + counter = 0; + + block_2FD1: + if (counter <= 3) goto block_301C; + + block_2FD9: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_2FD1; + + block_301C: + /* word_to_dword */ + /* pop_result */ + goto block_3033; + + block_3026: + goto block_3033; + + block_3029: + /* word_to_dword */ + /* pop_result */ + goto block_3033; + + block_3033: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_3A_slot_3A.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_3A_slot_3A.txt new file mode 100644 index 0000000..6b0d08f --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_3A_slot_3A.txt @@ -0,0 +1,30 @@ +function door2_slot_3A() /* entry=377 class_id=0x0A07 slot=0x3A */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A06_slot_22(pid, arg_06); + suspend; + counter = 1; + + block_309B: + if (counter <= 3) goto block_30E3; + + block_30A3: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_309B; + + block_30E3: + /* word_to_dword */ + /* pop_result */ + goto block_3113; + + block_3113: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_3B_slot_3B.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_3B_slot_3B.txt new file mode 100644 index 0000000..4711ee3 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_3B_slot_3B.txt @@ -0,0 +1,40 @@ +function door2_slot_3B() /* entry=377 class_id=0x0A07 slot=0x3B */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + class_0A0C_slot_2D(Item.getZ(arg_06), Item.legal_create(arg_06), Intrinsic0013(arg_06), 3, 0x0312, *(arg_06)); + if retval goto block_31E6; + + block_317A: + counter = 0; + + block_318E: + if (counter <= 3) goto block_31D9; + + block_3196: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_318E; + + block_31D9: + /* word_to_dword */ + /* pop_result */ + goto block_31F0; + + block_31E3: + goto block_31F0; + + block_31E6: + /* word_to_dword */ + /* pop_result */ + goto block_31F0; + + block_31F0: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_3C_slot_3C.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_3C_slot_3C.txt new file mode 100644 index 0000000..c42c51a --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_3C_slot_3C.txt @@ -0,0 +1,60 @@ +function door2_slot_3C() /* entry=377 class_id=0x0A07 slot=0x3C */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + if (!(Item.getStatus(arg_06) & 0x1000)) goto block_323F; + + block_3239: + goto block_339A; + + block_323F: + class_0A1E_slot_23(0x1000, arg_06); + if (Item.getFrame(arg_06) != 0) goto block_32ED; + + block_3270: + counter = 0; + + block_3277: + if (counter <= 9) goto block_32BF; + + block_327F: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_3277; + + block_32BF: + goto block_3381; + + block_32ED: + if (Item.getFrame(arg_06) != 9) goto block_3381; + + block_3302: + counter = 0; + + block_3333: + if (counter <= 9) goto block_337E; + + block_333B: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_3333; + + block_337E: + goto block_3381; + + block_3381: + class_0A1E_slot_24(0x1000, arg_06); + /* word_to_dword */ + /* pop_result */ + goto block_339A; + + block_339A: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_3D_slot_3D.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_3D_slot_3D.txt new file mode 100644 index 0000000..75c5882 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_3D_slot_3D.txt @@ -0,0 +1,39 @@ +function door2_slot_3D() /* entry=377 class_id=0x0A07 slot=0x3D */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + item; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A06_slot_22(pid, arg_06); + suspend; + counter = 1; + + block_3402: + if (counter <= 4) goto block_344A; + + block_340A: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_3402; + + block_344A: + if (Intrinsic0016(arg_06) != 0x03FF) goto block_3481; + + block_3470: + goto block_34C9; + + block_3481: + + block_34C9: + /* word_to_dword */ + /* pop_result */ + goto block_34DE; + + block_34DE: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_3E_slot_3E.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_3E_slot_3E.txt new file mode 100644 index 0000000..4b3e8c3 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_3E_slot_3E.txt @@ -0,0 +1,67 @@ +function door2_slot_3E() /* entry=377 class_id=0x0A07 slot=0x3E */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + item; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + if (Intrinsic0016(arg_06) != 0x0440) goto block_3578; + + block_3535: + class_0A0C_slot_2D(Item.getZ(arg_06), Item.legal_create(arg_06), Intrinsic0013(arg_06), 4, 0x03FF, *(arg_06)); + if (!retval) goto block_3575; + + block_356B: + /* word_to_dword */ + /* pop_result */ + goto block_368C; + + block_3575: + goto block_3623; + + block_3578: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */ + + block_3596: + if condition goto block_35A8; + + block_3599: + /* loopnext */ + goto block_3596; + + block_35A8: + class_0A0C_slot_2D(Item.getZ(arg_06), Item.legal_create(arg_06), Intrinsic0013(arg_06), 4, 51, *(arg_06)); + if (!retval) goto block_3623; + + block_35DF: + /* word_to_dword */ + /* pop_result */ + goto block_368C; + + block_3623: + counter = 0; + + block_3637: + if (counter <= 4) goto block_3682; + + block_363F: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_3637; + + block_3682: + /* word_to_dword */ + /* pop_result */ + goto block_368C; + + block_368C: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_3F_slot_3F.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_3F_slot_3F.txt new file mode 100644 index 0000000..dfd1749 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_3F_slot_3F.txt @@ -0,0 +1,39 @@ +function door2_slot_3F() /* entry=377 class_id=0x0A07 slot=0x3F */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + item; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A06_slot_22(pid, arg_06); + suspend; + counter = 1; + + block_36FD: + if (counter <= 4) goto block_3745; + + block_3705: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_36FD; + + block_3745: + if (Intrinsic0016(arg_06) != 0x03F8) goto block_377C; + + block_376B: + goto block_37C4; + + block_377C: + + block_37C4: + /* word_to_dword */ + /* pop_result */ + goto block_37D9; + + block_37D9: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_40_slot_40.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_40_slot_40.txt new file mode 100644 index 0000000..07d0cf6 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_40_slot_40.txt @@ -0,0 +1,67 @@ +function door2_slot_40() /* entry=377 class_id=0x0A07 slot=0x40 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + item; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + if (Intrinsic0016(arg_06) != 0x043F) goto block_3873; + + block_3830: + class_0A0C_slot_2D(Item.getZ(arg_06), Item.legal_create(arg_06), Intrinsic0013(arg_06), 4, 0x03F8, *(arg_06)); + if (!retval) goto block_3870; + + block_3866: + /* word_to_dword */ + /* pop_result */ + goto block_3987; + + block_3870: + goto block_391E; + + block_3873: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */ + + block_3891: + if condition goto block_38A3; + + block_3894: + /* loopnext */ + goto block_3891; + + block_38A3: + class_0A0C_slot_2D(Item.getZ(arg_06), Item.legal_create(arg_06), Intrinsic0013(arg_06), 4, 108, *(arg_06)); + if (!retval) goto block_391E; + + block_38DA: + /* word_to_dword */ + /* pop_result */ + goto block_3987; + + block_391E: + counter = 0; + + block_3932: + if (counter <= 4) goto block_397D; + + block_393A: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_3932; + + block_397D: + /* word_to_dword */ + /* pop_result */ + goto block_3987; + + block_3987: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_41_slot_41.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_41_slot_41.txt new file mode 100644 index 0000000..482fef9 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_41_slot_41.txt @@ -0,0 +1,31 @@ +function door2_slot_41() /* entry=377 class_id=0x0A07 slot=0x41 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + item; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A06_slot_22(pid, arg_06); + suspend; + counter = 1; + + block_39F8: + if (counter <= 6) goto block_3A40; + + block_3A00: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_39F8; + + block_3A40: + /* word_to_dword */ + /* pop_result */ + goto block_3A7B; + + block_3A7B: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_42_slot_42.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_42_slot_42.txt new file mode 100644 index 0000000..6eadac2 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_42_slot_42.txt @@ -0,0 +1,38 @@ +function door2_slot_42() /* entry=377 class_id=0x0A07 slot=0x42 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + item; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + class_0A0C_slot_2D(Item.getZ(arg_06), Item.legal_create(arg_06), Intrinsic0013(arg_06), 6, 0x03B9, *(arg_06)); + if (!retval) goto block_3AF9; + + block_3AEF: + /* word_to_dword */ + /* pop_result */ + goto block_3B62; + + block_3AF9: + counter = 0; + + block_3B0D: + if (counter <= 6) goto block_3B58; + + block_3B15: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_3B0D; + + block_3B58: + /* word_to_dword */ + /* pop_result */ + goto block_3B62; + + block_3B62: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_43_slot_43.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_43_slot_43.txt new file mode 100644 index 0000000..70b4979 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_43_slot_43.txt @@ -0,0 +1,31 @@ +function door2_slot_43() /* entry=377 class_id=0x0A07 slot=0x43 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + item; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A06_slot_22(pid, arg_06); + suspend; + counter = 1; + + block_3BD3: + if (counter <= 6) goto block_3C1B; + + block_3BDB: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_3BD3; + + block_3C1B: + /* word_to_dword */ + /* pop_result */ + goto block_3C56; + + block_3C56: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_44_slot_44.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_44_slot_44.txt new file mode 100644 index 0000000..c8b7fcf --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_44_slot_44.txt @@ -0,0 +1,38 @@ +function door2_slot_44() /* entry=377 class_id=0x0A07 slot=0x44 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + item; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + class_0A0C_slot_2D(Item.getZ(arg_06), Item.legal_create(arg_06), Intrinsic0013(arg_06), 6, 0x03BA, *(arg_06)); + if (!retval) goto block_3CD4; + + block_3CCA: + /* word_to_dword */ + /* pop_result */ + goto block_3D3D; + + block_3CD4: + counter = 0; + + block_3CE8: + if (counter <= 6) goto block_3D33; + + block_3CF0: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_3CE8; + + block_3D33: + /* word_to_dword */ + /* pop_result */ + goto block_3D3D; + + block_3D3D: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_45_slot_45.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_45_slot_45.txt new file mode 100644 index 0000000..5a419f3 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_45_slot_45.txt @@ -0,0 +1,42 @@ +function door2_slot_45() /* entry=377 class_id=0x0A07 slot=0x45 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + newFrame, /* [BP-04h] type=0x69 */ + item; /* [BP-06h] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A06_slot_22(pid, arg_06); + suspend; + if (Item.getFrame(arg_06) <= 11) goto block_3DC6; + + block_3DBC: + newFrame = 0; + goto block_3DCD; + + block_3DC6: + newFrame = 1; + + block_3DCD: + counter = 1; + + block_3DD4: + if (counter <= 11) goto block_3E22; + + block_3DDC: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_3DD4; + + block_3E22: + /* word_to_dword */ + /* pop_result */ + goto block_3E5D; + + block_3E5D: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_46_slot_46.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_46_slot_46.txt new file mode 100644 index 0000000..a0f16e9 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_46_slot_46.txt @@ -0,0 +1,49 @@ +function door2_slot_46() /* entry=377 class_id=0x0A07 slot=0x46 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + newFrame, /* [BP-04h] type=0x69 */ + item; /* [BP-06h] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + if (!Item.getFrame(arg_06)) goto block_3EC5; + + block_3EBB: + newFrame = 11; + goto block_3ECC; + + block_3EC5: + newFrame = 26; + + block_3ECC: + class_0A0C_slot_2D(Item.getZ(arg_06), Item.legal_create(arg_06), Intrinsic0013(arg_06), newFrame, 0x046A, *(arg_06)); + if (!retval) goto block_3F0C; + + block_3F02: + /* word_to_dword */ + /* pop_result */ + goto block_3F75; + + block_3F0C: + counter = 0; + + block_3F20: + if (counter <= 11) goto block_3F6B; + + block_3F28: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_3F20; + + block_3F6B: + /* word_to_dword */ + /* pop_result */ + goto block_3F75; + + block_3F75: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_47_slot_47.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_47_slot_47.txt new file mode 100644 index 0000000..651639a --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_47_slot_47.txt @@ -0,0 +1,42 @@ +function door2_slot_47() /* entry=377 class_id=0x0A07 slot=0x47 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + newFrame, /* [BP-04h] type=0x69 */ + item; /* [BP-06h] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A06_slot_22(pid, arg_06); + suspend; + if (Item.getFrame(arg_06) <= 11) goto block_400B; + + block_4001: + newFrame = 0; + goto block_4012; + + block_400B: + newFrame = 1; + + block_4012: + counter = 1; + + block_4019: + if (counter <= 11) goto block_4067; + + block_4021: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_4019; + + block_4067: + /* word_to_dword */ + /* pop_result */ + goto block_40A2; + + block_40A2: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_48_slot_48.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_48_slot_48.txt new file mode 100644 index 0000000..c8537d5 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR2/slot_48_slot_48.txt @@ -0,0 +1,49 @@ +function door2_slot_48() /* entry=377 class_id=0x0A07 slot=0x48 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + newFrame, /* [BP-04h] type=0x69 */ + item; /* [BP-06h] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + if (!Item.getFrame(arg_06)) goto block_410A; + + block_4100: + newFrame = 11; + goto block_4111; + + block_410A: + newFrame = 26; + + block_4111: + class_0A0C_slot_2D(Item.getZ(arg_06), Item.legal_create(arg_06), Intrinsic0013(arg_06), newFrame, 0x03C6, *(arg_06)); + if (!retval) goto block_4151; + + block_4147: + /* word_to_dword */ + /* pop_result */ + goto block_41BA; + + block_4151: + counter = 0; + + block_4165: + if (counter <= 11) goto block_41B0; + + block_416D: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_4165; + + block_41B0: + /* word_to_dword */ + /* pop_result */ + goto block_41BA; + + block_41BA: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_20_slot_20.txt new file mode 100644 index 0000000..0df444c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_20_slot_20.txt @@ -0,0 +1,48 @@ +function door3_slot_20() /* entry=378 class_id=0x0A08 slot=0x20 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + doorList, /* [BP-02h] type=0x6C */ + doorList2, /* [BP-04h] type=0x6C */ + counter, /* [BP-06h] type=0x69 */ + door2, /* [BP-08h] type=0x24 */ + maxFrame; /* [BP-0Ah] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A06_slot_22(pid, arg_06); + suspend; + /* create_list element_size=0x2 count=0x4 */ + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + doorList = 0x036A; + /* create_list element_size=0x2 count=0x4 */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + doorList2 = 0x036B; + counter = 0; + class_0A0C_slot_3A(0x0358, 0x035C, 0x035D, 0x0359, 0x035A, 0x035B, doorList); + /* free_stack_list value_u8=0x0 target=[SP+00h] */ + maxFrame = retval; + spawn class_0A0C_slot_32(doorList2, 1, pid, 5, 0x00000000); + suspend; + counter = 2; + + block_0250: + if (counter <= (maxFrame - 1)) goto block_0302; + + block_0261: + spawn class_0A0C_slot_32(doorList2, counter, doorList, pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0250; + + block_0302: + /* word_to_dword */ + /* pop_result */ + goto block_037A; + + block_037A: + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_21_slot_21.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_21_slot_21.txt new file mode 100644 index 0000000..5c9f11a --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_21_slot_21.txt @@ -0,0 +1,154 @@ +function door3_slot_21() /* entry=378 class_id=0x0A08 slot=0x21 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + doorList2, /* [BP-02h] type=0x6C */ + doorList, /* [BP-04h] type=0x6C */ + counter, /* [BP-06h] type=0x69 */ + counter2, /* [BP-08h] type=0x69 */ + door1, /* [BP-0Ah] type=0x24 */ + door2, /* [BP-0Ch] type=0x24 */ + item, /* [BP-0Eh] type=0x24 */ + nonLegalDoor1, /* [BP-0Fh] type=0x62 */ + nonLegalDoor2, /* [BP-10h] type=0x62 */ + bool, /* [BP-11h] type=0x62 */ + maxFrame; /* [BP-13h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + /* create_list element_size=0x2 count=0x4 */ + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + doorList2 = 0x036A; + /* create_list element_size=0x2 count=0x4 */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + doorList = 0x036B; + class_0A0C_slot_3A(0x0358, 0x035C, 0x035D, 0x0359, 0x035A, 0x035B, doorList); + /* free_stack_list value_u8=0x0 target=[SP+00h] */ + maxFrame = retval; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF2 string_bytes=0x6 loop_type=0x2 */ + + block_0459: + if condition goto block_0467; + + block_045C: + door2 = item; + /* loopnext */ + goto block_0459; + + block_0467: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF2 string_bytes=0x6 loop_type=0x2 */ + + block_0487: + if condition goto block_0495; + + block_048A: + door1 = item; + /* loopnext */ + goto block_0487; + + block_0495: + if (door1 && door2) goto block_0804; + + block_04A8: + counter = 1; + + block_04BC: + if (counter <= (maxFrame - 1)) goto block_0804; + + block_04CD: + class_0A0C_slot_2D(Item.getZ(door1), Item.legal_create(door1), Intrinsic0013(door1), 0, doorList, (maxFrame - counter), list_element(size=0x2), door1); + if (!retval) goto block_050F; + + block_0508: + nonLegalDoor1 = 1; + + block_050F: + if ((!bool) && (!nonLegalDoor1)) goto block_056E; + + block_051F: + class_0A0C_slot_2D(Item.getZ(door2), Item.legal_create(door2), (Intrinsic0013(door2) + 16), 0, doorList2, (maxFrame - counter), list_element(size=0x2), door2); + if (!retval) goto block_0564; + + block_055D: + nonLegalDoor2 = 1; + + block_0564: + bool = 1; + goto block_05B3; + + block_056E: + class_0A0C_slot_2D(Item.getZ(door2), Item.legal_create(door2), (Intrinsic0013(door2) + 16), 0, doorList2, (maxFrame - counter), list_element(size=0x2), door2); + if (!retval) goto block_05B3; + + block_05AC: + nonLegalDoor2 = 1; + + block_05B3: + if ((!nonLegalDoor1) && (!nonLegalDoor2)) goto block_0605; + + block_05C3: + spawn class_0A0C_slot_32(pid, (5 + counter), 0x00000000); + suspend; + goto block_07F7; + + block_0605: + bool = 0; + if nonLegalDoor2 goto block_0646; + + block_062E: + + block_0646: + if ((nonLegalDoor1 != 1) && (nonLegalDoor2 != 0)) goto block_06A6; + + block_065A: + + block_06A6: + counter2 = ((maxFrame - counter) + 1); + + block_06B3: + if (counter2 <= (maxFrame - 1)) goto block_07B3; + + block_06C4: + if (!bool) goto block_073A; + + block_06EA: + bool = 1; + goto block_0780; + + block_073A: + + block_0780: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter2 = (1 + counter2); + goto block_06B3; + + block_07B3: + /* word_to_dword */ + /* pop_result */ + goto block_083A; + + block_07F7: + counter = (1 + counter); + goto block_04BC; + + block_0804: + set_info(1, 0); + /* word_to_dword */ + /* pop_result */ + goto block_083A; + + block_083A: + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_22_slot_22.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_22_slot_22.txt new file mode 100644 index 0000000..2b3247b --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_22_slot_22.txt @@ -0,0 +1,48 @@ +function door3_slot_22() /* entry=378 class_id=0x0A08 slot=0x22 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + doorList2, /* [BP-02h] type=0x6C */ + doorList, /* [BP-04h] type=0x6C */ + counter, /* [BP-06h] type=0x69 */ + door2, /* [BP-08h] type=0x24 */ + maxFrame; /* [BP-0Ah] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A06_slot_22(pid, arg_06); + suspend; + /* create_list element_size=0x2 count=0x4 */ + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + doorList2 = 0x0368; + /* create_list element_size=0x2 count=0x4 */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + doorList = 0x0369; + counter = 0; + class_0A0C_slot_3A(0x0352, 0x0354, 0x0355, 0x0353, 0x0356, 0x0357, doorList); + /* free_stack_list value_u8=0x0 target=[SP+00h] */ + maxFrame = retval; + spawn class_0A0C_slot_32(doorList2, 1, pid, 5, 0x00000000); + suspend; + counter = 2; + + block_0A10: + if (counter <= (maxFrame - 1)) goto block_0AC2; + + block_0A21: + spawn class_0A0C_slot_32(doorList2, counter, doorList, pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0A10; + + block_0AC2: + /* word_to_dword */ + /* pop_result */ + goto block_0B3A; + + block_0B3A: + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_23_slot_23.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_23_slot_23.txt new file mode 100644 index 0000000..dabe83a --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_23_slot_23.txt @@ -0,0 +1,154 @@ +function door3_slot_23() /* entry=378 class_id=0x0A08 slot=0x23 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + doorList, /* [BP-02h] type=0x6C */ + doorList2, /* [BP-04h] type=0x6C */ + counter, /* [BP-06h] type=0x69 */ + counter2, /* [BP-08h] type=0x69 */ + door1, /* [BP-0Ah] type=0x24 */ + door2, /* [BP-0Ch] type=0x24 */ + item, /* [BP-0Eh] type=0x24 */ + nonLegalDoor1, /* [BP-0Fh] type=0x62 */ + nonLegalDoor2, /* [BP-10h] type=0x62 */ + bool, /* [BP-11h] type=0x62 */ + maxFrame; /* [BP-13h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + /* create_list element_size=0x2 count=0x4 */ + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + doorList = 0x0368; + /* create_list element_size=0x2 count=0x4 */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + doorList2 = 0x0369; + class_0A0C_slot_3A(0x0352, 0x0354, 0x0355, 0x0353, 0x0356, 0x0357, doorList); + /* free_stack_list value_u8=0x0 target=[SP+00h] */ + maxFrame = retval; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF2 string_bytes=0x6 loop_type=0x2 */ + + block_0C19: + if condition goto block_0C27; + + block_0C1C: + door1 = item; + /* loopnext */ + goto block_0C19; + + block_0C27: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF2 string_bytes=0x6 loop_type=0x2 */ + + block_0C47: + if condition goto block_0C55; + + block_0C4A: + door2 = item; + /* loopnext */ + goto block_0C47; + + block_0C55: + if (door1 && door2) goto block_0FC4; + + block_0C68: + counter = 1; + + block_0C7C: + if (counter <= (maxFrame - 1)) goto block_0FC4; + + block_0C8D: + class_0A0C_slot_2D(Item.getZ(door1), Item.legal_create(door1), Intrinsic0013(door1), 0, doorList, (maxFrame - counter), list_element(size=0x2), door1); + if (!retval) goto block_0CCF; + + block_0CC8: + nonLegalDoor1 = 1; + + block_0CCF: + if ((!bool) && (!nonLegalDoor1)) goto block_0D2E; + + block_0CDF: + class_0A0C_slot_2D(Item.getZ(door2), (Item.legal_create(door2) + 16), Intrinsic0013(door2), 0, doorList2, (maxFrame - counter), list_element(size=0x2), door2); + if (!retval) goto block_0D24; + + block_0D1D: + nonLegalDoor2 = 1; + + block_0D24: + bool = 1; + goto block_0D73; + + block_0D2E: + class_0A0C_slot_2D(Item.getZ(door2), (Item.legal_create(door2) + 16), Intrinsic0013(door2), 0, doorList2, (maxFrame - counter), list_element(size=0x2), door2); + if (!retval) goto block_0D73; + + block_0D6C: + nonLegalDoor2 = 1; + + block_0D73: + if ((!nonLegalDoor1) && (!nonLegalDoor2)) goto block_0DC5; + + block_0D83: + spawn class_0A0C_slot_32(pid, (5 + counter), 0x00000000); + suspend; + goto block_0FB7; + + block_0DC5: + bool = 0; + if nonLegalDoor2 goto block_0E06; + + block_0DEE: + + block_0E06: + if ((nonLegalDoor1 != 1) && (nonLegalDoor2 != 0)) goto block_0E66; + + block_0E1A: + + block_0E66: + counter2 = ((maxFrame - counter) + 1); + + block_0E73: + if (counter2 <= (maxFrame - 1)) goto block_0F73; + + block_0E84: + if (!bool) goto block_0EFA; + + block_0EAA: + bool = 1; + goto block_0F40; + + block_0EFA: + + block_0F40: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter2 = (1 + counter2); + goto block_0E73; + + block_0F73: + /* word_to_dword */ + /* pop_result */ + goto block_0FFA; + + block_0FB7: + counter = (1 + counter); + goto block_0C7C; + + block_0FC4: + set_info(1, 0); + /* word_to_dword */ + /* pop_result */ + goto block_0FFA; + + block_0FFA: + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_24_slot_24.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_24_slot_24.txt new file mode 100644 index 0000000..02374c5 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_24_slot_24.txt @@ -0,0 +1,48 @@ +function door3_slot_24() /* entry=378 class_id=0x0A08 slot=0x24 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + doorList, /* [BP-02h] type=0x6C */ + doorList2, /* [BP-04h] type=0x6C */ + counter, /* [BP-06h] type=0x69 */ + door2, /* [BP-08h] type=0x24 */ + maxFrame; /* [BP-0Ah] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A06_slot_22(pid, arg_06); + suspend; + /* create_list element_size=0x2 count=0x5 */ + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + doorList = 0x030D; + /* create_list element_size=0x2 count=0x5 */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + doorList2 = 0x030E; + counter = 0; + class_0A0C_slot_3A(0x00A4, 0x00E1, 0x00D6, 0x00D8, 0x0170, 0x0171, 0x0172, 0x0173, doorList); + /* free_stack_list value_u8=0x0 target=[SP+00h] */ + maxFrame = retval; + spawn class_0A0C_slot_32(doorList2, 1, pid, 5, 0x00000000); + suspend; + counter = 2; + + block_11DC: + if (counter <= (maxFrame - 1)) goto block_128E; + + block_11ED: + spawn class_0A0C_slot_32(doorList2, counter, doorList, pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_11DC; + + block_128E: + /* word_to_dword */ + /* pop_result */ + goto block_12D2; + + block_12D2: + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_25_slot_25.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_25_slot_25.txt new file mode 100644 index 0000000..8a8a8bb --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_25_slot_25.txt @@ -0,0 +1,154 @@ +function door3_slot_25() /* entry=378 class_id=0x0A08 slot=0x25 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + doorList2, /* [BP-02h] type=0x6C */ + doorList, /* [BP-04h] type=0x6C */ + counter, /* [BP-06h] type=0x69 */ + counter2, /* [BP-08h] type=0x69 */ + door1, /* [BP-0Ah] type=0x24 */ + door2, /* [BP-0Ch] type=0x24 */ + item, /* [BP-0Eh] type=0x24 */ + nonLegalDoor1, /* [BP-0Fh] type=0x62 */ + nonLegalDoor2, /* [BP-10h] type=0x62 */ + bool, /* [BP-11h] type=0x62 */ + maxFrame; /* [BP-13h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + /* create_list element_size=0x2 count=0x5 */ + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + doorList2 = 0x030D; + /* create_list element_size=0x2 count=0x5 */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + doorList = 0x030E; + class_0A0C_slot_3A(0x00A4, 0x00E1, 0x00D6, 0x00D8, 0x0170, 0x0171, 0x0172, 0x0173, doorList); + /* free_stack_list value_u8=0x0 target=[SP+00h] */ + maxFrame = retval; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF2 string_bytes=0x6 loop_type=0x2 */ + + block_13BD: + if condition goto block_13CB; + + block_13C0: + door1 = item; + /* loopnext */ + goto block_13BD; + + block_13CB: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF2 string_bytes=0x6 loop_type=0x2 */ + + block_13EB: + if condition goto block_13F9; + + block_13EE: + door2 = item; + /* loopnext */ + goto block_13EB; + + block_13F9: + if (door1 && door2) goto block_1770; + + block_140C: + counter = 1; + + block_142E: + if (counter <= (maxFrame - 1)) goto block_1770; + + block_143F: + class_0A0C_slot_2D(Item.getZ(door1), Item.legal_create(door1), Intrinsic0013(door1), 0, doorList, (maxFrame - counter), list_element(size=0x2), door1); + if (!retval) goto block_1481; + + block_147A: + nonLegalDoor1 = 1; + + block_1481: + if ((!bool) && (!nonLegalDoor1)) goto block_14DD; + + block_1491: + class_0A0C_slot_2D(Item.getZ(door2), Item.legal_create(door2), Intrinsic0013(door2), 0, doorList2, (maxFrame - counter), list_element(size=0x2), door2); + if (!retval) goto block_14D3; + + block_14CC: + nonLegalDoor2 = 1; + + block_14D3: + bool = 1; + goto block_1522; + + block_14DD: + class_0A0C_slot_2D(Item.getZ(door2), Item.legal_create(door2), (Intrinsic0013(door2) + 16), 0, doorList2, (maxFrame - counter), list_element(size=0x2), door2); + if (!retval) goto block_1522; + + block_151B: + nonLegalDoor2 = 1; + + block_1522: + if ((!nonLegalDoor1) && (!nonLegalDoor2)) goto block_1574; + + block_1532: + spawn class_0A0C_slot_32(pid, (5 + counter), 0x00000000); + suspend; + goto block_1763; + + block_1574: + bool = 0; + if nonLegalDoor2 goto block_15B5; + + block_159D: + + block_15B5: + if ((nonLegalDoor1 != 1) && (nonLegalDoor2 != 0)) goto block_1615; + + block_15C9: + + block_1615: + counter2 = ((maxFrame - counter) + 1); + + block_1622: + if (counter2 <= (maxFrame - 1)) goto block_171F; + + block_1633: + if (!bool) goto block_16A6; + + block_1659: + bool = 1; + goto block_16EC; + + block_16A6: + + block_16EC: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter2 = (1 + counter2); + goto block_1622; + + block_171F: + /* word_to_dword */ + /* pop_result */ + goto block_17A6; + + block_1763: + counter = (1 + counter); + goto block_142E; + + block_1770: + set_info(1, 0); + /* word_to_dword */ + /* pop_result */ + goto block_17A6; + + block_17A6: + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_26_slot_26.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_26_slot_26.txt new file mode 100644 index 0000000..77512ed --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_26_slot_26.txt @@ -0,0 +1,48 @@ +function door3_slot_26() /* entry=378 class_id=0x0A08 slot=0x26 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + doorList, /* [BP-02h] type=0x6C */ + doorList2, /* [BP-04h] type=0x6C */ + counter, /* [BP-06h] type=0x69 */ + door2, /* [BP-08h] type=0x24 */ + maxFrame; /* [BP-0Ah] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + spawn class_0A06_slot_22(pid, arg_06); + suspend; + /* create_list element_size=0x2 count=0x5 */ + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + doorList = 0x00A5; + /* create_list element_size=0x2 count=0x5 */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + doorList2 = 0x0100; + counter = 0; + class_0A0C_slot_3A(0x016C, 0x016D, 0x016E, 0x016F, 0x009B, 0x00D3, 0x00E4, 0x00DA, doorList); + /* free_stack_list value_u8=0x0 target=[SP+00h] */ + maxFrame = retval; + spawn class_0A0C_slot_32(doorList2, 1, pid, 5, 0x00000000); + suspend; + counter = 2; + + block_1985: + if (counter <= (maxFrame - 1)) goto block_1A37; + + block_1996: + spawn class_0A0C_slot_32(doorList2, counter, doorList, pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_1985; + + block_1A37: + /* word_to_dword */ + /* pop_result */ + goto block_1A7B; + + block_1A7B: + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_27_slot_27.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_27_slot_27.txt new file mode 100644 index 0000000..25cd683 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_27_slot_27.txt @@ -0,0 +1,153 @@ +function door3_slot_27() /* entry=378 class_id=0x0A08 slot=0x27 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + doorList, /* [BP-02h] type=0x6C */ + doorList2, /* [BP-04h] type=0x6C */ + counter, /* [BP-06h] type=0x69 */ + counter2, /* [BP-08h] type=0x69 */ + door1, /* [BP-0Ah] type=0x24 */ + door2, /* [BP-0Ch] type=0x24 */ + item, /* [BP-0Eh] type=0x24 */ + nonLegalDoor1, /* [BP-0Fh] type=0x62 */ + nonLegalDoor2, /* [BP-10h] type=0x62 */ + bool, /* [BP-11h] type=0x62 */ + maxFrame; /* [BP-13h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + /* create_list element_size=0x2 count=0x5 */ + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + doorList = 0x0100; + /* create_list element_size=0x2 count=0x5 */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + doorList2 = 0x00A5; + class_0A0C_slot_3A(0x009B, 0x00D3, 0x00E4, 0x00DA, 0x016C, 0x016D, 0x016E, 0x016F, doorList); + /* free_stack_list value_u8=0x0 target=[SP+00h] */ + maxFrame = retval; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF2 string_bytes=0x6 loop_type=0x2 */ + + block_1B73: + if condition goto block_1B81; + + block_1B76: + door1 = item; + /* loopnext */ + goto block_1B73; + + block_1B81: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF2 string_bytes=0x6 loop_type=0x2 */ + + block_1BA1: + if condition goto block_1BAF; + + block_1BA4: + door2 = item; + /* loopnext */ + goto block_1BA1; + + block_1BAF: + if (door1 && door2) goto block_1F19; + + block_1BC2: + counter = 1; + + block_1BD7: + if (counter <= (maxFrame - 1)) goto block_1F19; + + block_1BE8: + class_0A0C_slot_2D(Item.getZ(door1), Item.legal_create(door1), Intrinsic0013(door1), 0, doorList, (maxFrame - counter), list_element(size=0x2), door1); + if (!retval) goto block_1C2A; + + block_1C23: + nonLegalDoor1 = 1; + + block_1C2A: + if ((!bool) && (!nonLegalDoor1)) goto block_1C86; + + block_1C3A: + class_0A0C_slot_2D(Item.getZ(door2), Item.legal_create(door2), Intrinsic0013(door2), 0, doorList2, (maxFrame - counter), list_element(size=0x2), door2); + if (!retval) goto block_1C7C; + + block_1C75: + nonLegalDoor2 = 1; + + block_1C7C: + bool = 1; + goto block_1CCB; + + block_1C86: + class_0A0C_slot_2D(Item.getZ(door2), (Item.legal_create(door2) + 16), Intrinsic0013(door2), 0, doorList2, (maxFrame - counter), list_element(size=0x2), door2); + if (!retval) goto block_1CCB; + + block_1CC4: + nonLegalDoor2 = 1; + + block_1CCB: + if ((!nonLegalDoor1) && (!nonLegalDoor2)) goto block_1D1D; + + block_1CDB: + spawn class_0A0C_slot_32(pid, (5 + counter), 0x00000000); + suspend; + goto block_1F0C; + + block_1D1D: + bool = 0; + if nonLegalDoor2 goto block_1D5E; + + block_1D46: + + block_1D5E: + if ((nonLegalDoor1 != 1) && (nonLegalDoor2 != 0)) goto block_1DBE; + + block_1D72: + + block_1DBE: + counter2 = ((maxFrame - counter) + 1); + + block_1DCB: + if (counter2 <= (maxFrame - 1)) goto block_1EC8; + + block_1DDC: + if (!bool) goto block_1E4F; + + block_1E02: + bool = 1; + goto block_1E95; + + block_1E4F: + + block_1E95: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter2 = (1 + counter2); + goto block_1DCB; + + block_1EC8: + /* word_to_dword */ + /* pop_result */ + goto block_1F47; + + block_1F0C: + counter = (1 + counter); + goto block_1BD7; + + block_1F19: + /* word_to_dword */ + /* pop_result */ + goto block_1F47; + + block_1F47: + /* free_local_list bp_offset=0xFE target=[BP-02h] */ + /* free_local_list bp_offset=0xFC target=[BP-04h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_28_slot_28.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_28_slot_28.txt new file mode 100644 index 0000000..5b86168 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_28_slot_28.txt @@ -0,0 +1,40 @@ +function door3_slot_28() /* entry=378 class_id=0x0A08 slot=0x28 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + maxFrame; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + if (Item.getFrame(arg_06) > 0) goto block_201E; + + block_2014: + /* word_to_dword */ + /* pop_result */ + goto block_20D3; + + block_201E: + spawn class_0A06_slot_22(pid, arg_06); + suspend; + maxFrame = 9; + counter = 1; + + block_2058: + if (counter <= maxFrame) goto block_20A3; + + block_2063: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_2058; + + block_20A3: + /* word_to_dword */ + /* pop_result */ + goto block_20D3; + + block_20D3: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_29_slot_29.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_29_slot_29.txt new file mode 100644 index 0000000..c1f8d4d --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_29_slot_29.txt @@ -0,0 +1,44 @@ +function door3_slot_29() /* entry=378 class_id=0x0A08 slot=0x29 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + maxFrame; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + maxFrame = 9; + class_0A0C_slot_2D(Item.getZ(arg_06), Item.legal_create(arg_06), Intrinsic0013(arg_06), maxFrame, 0x053D, *(arg_06)); + if retval goto block_2187; + + block_2151: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + goto block_2191; + + block_2187: + /* word_to_dword */ + /* pop_result */ + goto block_21F0; + + block_2191: + counter = (maxFrame - 1); + + block_219B: + if (counter >= 0) goto block_21E6; + + block_21A3: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (counter - 1); + goto block_219B; + + block_21E6: + /* word_to_dword */ + /* pop_result */ + goto block_21F0; + + block_21F0: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_2A_slot_2A.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_2A_slot_2A.txt new file mode 100644 index 0000000..932702e --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_2A_slot_2A.txt @@ -0,0 +1,40 @@ +function door3_slot_2A() /* entry=378 class_id=0x0A08 slot=0x2A */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + maxFrame; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + if (Item.getFrame(arg_06) > 0) goto block_2251; + + block_2247: + /* word_to_dword */ + /* pop_result */ + goto block_2306; + + block_2251: + spawn class_0A06_slot_22(pid, arg_06); + suspend; + maxFrame = 9; + counter = 1; + + block_228B: + if (counter <= maxFrame) goto block_22D6; + + block_2296: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_228B; + + block_22D6: + /* word_to_dword */ + /* pop_result */ + goto block_2306; + + block_2306: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_2B_slot_2B.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_2B_slot_2B.txt new file mode 100644 index 0000000..e8d248c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOR3/slot_2B_slot_2B.txt @@ -0,0 +1,44 @@ +function door3_slot_2B() /* entry=378 class_id=0x0A08 slot=0x2B */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + maxFrame; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x0207, *(arg_06)); + maxFrame = 9; + class_0A0C_slot_2D(Item.getZ(arg_06), Item.legal_create(arg_06), Intrinsic0013(arg_06), maxFrame, 0x053B, *(arg_06)); + if retval goto block_23BA; + + block_2384: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + goto block_23C4; + + block_23BA: + /* word_to_dword */ + /* pop_result */ + goto block_2423; + + block_23C4: + counter = (maxFrame - 1); + + block_23CE: + if (counter >= 0) goto block_2419; + + block_23D6: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (counter - 1); + goto block_23CE; + + block_2419: + /* word_to_dword */ + /* pop_result */ + goto block_2423; + + block_2423: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOREGG/slot_07_hatch.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOREGG/slot_07_hatch.txt new file mode 100644 index 0000000..c2c31a5 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOREGG/slot_07_hatch.txt @@ -0,0 +1,10 @@ +function dooregg_hatch() /* entry=350 class_id=0x090A slot=0x07 */ +{ + entry: + set_info(0x0210, *(arg_06)); + process_exclude(); + spawn class_090A_slot_20(pid, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOREGG/slot_15_unhatch.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOREGG/slot_15_unhatch.txt new file mode 100644 index 0000000..23689df --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOREGG/slot_15_unhatch.txt @@ -0,0 +1,10 @@ +function dooregg_unhatch() /* entry=350 class_id=0x090A slot=0x15 */ +{ + entry: + set_info(0x0239, *(arg_06)); + process_exclude(); + spawn class_090A_slot_21(pid, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOREGG/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOREGG/slot_20_slot_20.txt new file mode 100644 index 0000000..40ca298 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOREGG/slot_20_slot_20.txt @@ -0,0 +1,31 @@ +function dooregg_slot_20() /* entry=350 class_id=0x090A slot=0x20 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + door; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x0001, *(arg_06)); + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x3A */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_01A5: + if condition goto block_01DA; + + block_01A8: + if (Item.fall(door) != Intrinsic003F(arg_06)) goto block_01D6; + + block_01C4: + spawn class_0A06_slot_21(1, door); + + block_01D6: + /* loopnext */ + goto block_01A5; + + block_01DA: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/DOOREGG/slot_21_slot_21.txt b/USECODE/EUSECODE_extracted/pseudocode/DOOREGG/slot_21_slot_21.txt new file mode 100644 index 0000000..58f8ff6 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/DOOREGG/slot_21_slot_21.txt @@ -0,0 +1,31 @@ +function dooregg_slot_21() /* entry=350 class_id=0x090A slot=0x21 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + door; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x0001, *(arg_06)); + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x3A */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_022B: + if condition goto block_0260; + + block_022E: + if (Item.fall(door) != Intrinsic003F(arg_06)) goto block_025C; + + block_024A: + spawn class_0A06_slot_21(2, door); + + block_025C: + /* loopnext */ + goto block_022B; + + block_0260: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_BARREL/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/D_BARREL/slot_06_gotHit.txt new file mode 100644 index 0000000..a79ba98 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_BARREL/slot_06_gotHit.txt @@ -0,0 +1,30 @@ +function d_barrel_gotHit() /* entry=127 class_id=0x022B slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if retval goto block_014D; + + block_00FD: + class_0A0C_slot_2C(vel, ref); + if (retval != 4) goto block_014D; + + block_0118: + class_0A0C_slot_20(10); + if (retval > 5) goto block_013E; + + block_012E: + goto block_014D; + + block_013E: + + block_014D: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_CHEM/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/D_CHEM/slot_01_use.txt new file mode 100644 index 0000000..cf5985d --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_CHEM/slot_01_use.txt @@ -0,0 +1,21 @@ +function d_chem_use() /* entry=258 class_id=0x04B9 slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_0223; + + block_021D: + goto block_0244; + + block_0223: + class_0A0C_slot_40(*(arg_06)); + if retval goto block_0244; + + block_0235: + class_0A1E_slot_23(0x1000, arg_06); + + block_0244: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_CHEM/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/D_CHEM/slot_06_gotHit.txt new file mode 100644 index 0000000..06b45c7 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_CHEM/slot_06_gotHit.txt @@ -0,0 +1,47 @@ +function d_chem_gotHit() /* entry=258 class_id=0x04B9 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + goods; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if ((retval != 4) || (Intrinsic006B() != 0)) goto block_0115; + + block_010F: + goto block_01C6; + + block_0115: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x4 */ + + block_0125: + if condition goto block_0184; + + block_0128: + if (Intrinsic0016(goods) != 0x0111) goto block_0175; + + block_0141: + goto block_0180; + + block_0175: + + block_0180: + /* loopnext */ + goto block_0125; + + block_0184: + if (Item.getFrame(arg_06) >= 10) goto block_01B1; + + block_019B: + + block_01B1: + + block_01C6: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_CONG/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/D_CONG/slot_01_use.txt new file mode 100644 index 0000000..5e93f59 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_CONG/slot_01_use.txt @@ -0,0 +1,21 @@ +function d_cong_use() /* entry=259 class_id=0x04BA slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_0223; + + block_021D: + goto block_0244; + + block_0223: + class_0A0C_slot_40(*(arg_06)); + if retval goto block_0244; + + block_0235: + class_0A1E_slot_23(0x1000, arg_06); + + block_0244: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_CONG/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/D_CONG/slot_06_gotHit.txt new file mode 100644 index 0000000..73eb8da --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_CONG/slot_06_gotHit.txt @@ -0,0 +1,47 @@ +function d_cong_gotHit() /* entry=259 class_id=0x04BA slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + goods; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if ((retval != 4) || (Intrinsic006B() != 0)) goto block_0115; + + block_010F: + goto block_01C6; + + block_0115: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x4 */ + + block_0125: + if condition goto block_0184; + + block_0128: + if (Intrinsic0016(goods) != 0x0111) goto block_0175; + + block_0141: + goto block_0180; + + block_0175: + + block_0180: + /* loopnext */ + goto block_0125; + + block_0184: + if (Item.getFrame(arg_06) >= 10) goto block_01B1; + + block_019B: + + block_01B1: + + block_01C6: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_COUR/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/D_COUR/slot_06_gotHit.txt new file mode 100644 index 0000000..92d808e --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_COUR/slot_06_gotHit.txt @@ -0,0 +1,39 @@ +function d_cour_gotHit() /* entry=266 class_id=0x04C2 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + goods; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + if (Intrinsic00DA(100, 0) > 50) goto block_0108; + + block_0102: + goto block_01A1; + + block_0108: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x4 */ + + block_0118: + if condition goto block_016A; + + block_011B: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + spawn class_0A1E_slot_28(pid, 1, 0, goods); + suspend; + /* loopnext */ + goto block_0118; + + block_016A: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + + block_01A1: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_EM_GUY/slot_0E_calledFromAnim.txt b/USECODE/EUSECODE_extracted/pseudocode/D_EM_GUY/slot_0E_calledFromAnim.txt new file mode 100644 index 0000000..ca06066 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_EM_GUY/slot_0E_calledFromAnim.txt @@ -0,0 +1,9 @@ +function d_em_guy_calledFromAnim() /* entry=334 class_id=0x059C slot=0x0E */ +{ + entry: + set_info(0x021A, *(arg_06)); + process_exclude(); + spawn class_0A1C_slot_20(Item.getQLo(arg_06), *(arg_06), arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_EM_GUY/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/D_EM_GUY/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..e3919c1 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_EM_GUY/slot_0F_enterFastArea.txt @@ -0,0 +1,11 @@ +function d_em_guy_enterFastArea() /* entry=334 class_id=0x059C slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + spawn class_0A0C_slot_32(pid, 1, 0x00000000); + suspend; + spawn class_0A1C_slot_20(Item.getQLo(arg_06), *(arg_06), arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_ENFORC/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/D_ENFORC/slot_01_use.txt new file mode 100644 index 0000000..21570be --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_ENFORC/slot_01_use.txt @@ -0,0 +1,21 @@ +function d_enforc_use() /* entry=318 class_id=0x055D slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_0223; + + block_021D: + goto block_0244; + + block_0223: + class_0A0C_slot_40(*(arg_06)); + if retval goto block_0244; + + block_0235: + class_0A1E_slot_23(0x1000, arg_06); + + block_0244: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_ENFORC/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/D_ENFORC/slot_06_gotHit.txt new file mode 100644 index 0000000..20c9df0 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_ENFORC/slot_06_gotHit.txt @@ -0,0 +1,47 @@ +function d_enforc_gotHit() /* entry=318 class_id=0x055D slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + goods; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if ((retval != 4) || (Intrinsic006B() != 0)) goto block_0115; + + block_010F: + goto block_01C6; + + block_0115: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x4 */ + + block_0125: + if condition goto block_0184; + + block_0128: + if (Intrinsic0016(goods) != 0x0111) goto block_0175; + + block_0141: + goto block_0180; + + block_0175: + + block_0180: + /* loopnext */ + goto block_0125; + + block_0184: + if (Item.getFrame(arg_06) >= 10) goto block_01B1; + + block_019B: + + block_01B1: + + block_01C6: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_ESTORM/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/D_ESTORM/slot_01_use.txt new file mode 100644 index 0000000..7646c53 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_ESTORM/slot_01_use.txt @@ -0,0 +1,21 @@ +function d_estorm_use() /* entry=276 class_id=0x04D2 slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_0223; + + block_021D: + goto block_0244; + + block_0223: + class_0A0C_slot_40(*(arg_06)); + if retval goto block_0244; + + block_0235: + class_0A1E_slot_23(0x1000, arg_06); + + block_0244: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_ESTORM/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/D_ESTORM/slot_06_gotHit.txt new file mode 100644 index 0000000..516921d --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_ESTORM/slot_06_gotHit.txt @@ -0,0 +1,47 @@ +function d_estorm_gotHit() /* entry=276 class_id=0x04D2 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + goods; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if ((retval != 4) || (Intrinsic006B() != 0)) goto block_0115; + + block_010F: + goto block_01C6; + + block_0115: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x4 */ + + block_0125: + if condition goto block_0184; + + block_0128: + if (Intrinsic0016(goods) != 0x0111) goto block_0175; + + block_0141: + goto block_0180; + + block_0175: + + block_0180: + /* loopnext */ + goto block_0125; + + block_0184: + if (Item.getFrame(arg_06) >= 10) goto block_01B1; + + block_019B: + + block_01B1: + + block_01C6: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_GRENAD/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/D_GRENAD/slot_01_use.txt new file mode 100644 index 0000000..d95b7eb --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_GRENAD/slot_01_use.txt @@ -0,0 +1,21 @@ +function d_grenad_use() /* entry=315 class_id=0x054D slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_0223; + + block_021D: + goto block_0244; + + block_0223: + class_0A0C_slot_40(*(arg_06)); + if retval goto block_0244; + + block_0235: + class_0A1E_slot_23(0x1000, arg_06); + + block_0244: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_GRENAD/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/D_GRENAD/slot_06_gotHit.txt new file mode 100644 index 0000000..4c9a8ea --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_GRENAD/slot_06_gotHit.txt @@ -0,0 +1,47 @@ +function d_grenad_gotHit() /* entry=315 class_id=0x054D slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + goods; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if ((retval != 4) || (Intrinsic006B() != 0)) goto block_0115; + + block_010F: + goto block_01C6; + + block_0115: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x4 */ + + block_0125: + if condition goto block_0184; + + block_0128: + if (Intrinsic0016(goods) != 0x0111) goto block_0175; + + block_0141: + goto block_0180; + + block_0175: + + block_0180: + /* loopnext */ + goto block_0125; + + block_0184: + if (Item.getFrame(arg_06) >= 10) goto block_01B1; + + block_019B: + + block_01B1: + + block_01C6: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_GUARD/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/D_GUARD/slot_01_use.txt new file mode 100644 index 0000000..784fca5 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_GUARD/slot_01_use.txt @@ -0,0 +1,21 @@ +function d_guard_use() /* entry=182 class_id=0x0339 slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_021D; + + block_0217: + goto block_023E; + + block_021D: + class_0A0C_slot_40(*(arg_06)); + if retval goto block_023E; + + block_022F: + class_0A1E_slot_23(0x1000, arg_06); + + block_023E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_GUARD/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/D_GUARD/slot_06_gotHit.txt new file mode 100644 index 0000000..e2f0b61 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_GUARD/slot_06_gotHit.txt @@ -0,0 +1,47 @@ +function d_guard_gotHit() /* entry=182 class_id=0x0339 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + goods; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if ((retval != 4) || (Intrinsic006B() != 0)) goto block_0115; + + block_010F: + goto block_01C0; + + block_0115: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x4 */ + + block_0125: + if condition goto block_0184; + + block_0128: + if (Intrinsic0016(goods) != 0x0111) goto block_0175; + + block_0141: + goto block_0180; + + block_0175: + + block_0180: + /* loopnext */ + goto block_0125; + + block_0184: + if Item.getFrame(arg_06) goto block_01AB; + + block_0195: + + block_01AB: + + block_01C0: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_GURDSQ/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/D_GURDSQ/slot_01_use.txt new file mode 100644 index 0000000..9655fe0 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_GURDSQ/slot_01_use.txt @@ -0,0 +1,23 @@ +function d_gurdsq_use() /* entry=287 class_id=0x04E4 slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_0223; + + block_021D: + goto block_026A; + + block_0223: + class_0A0C_slot_40(*(arg_06)); + if retval goto block_026A; + + block_0235: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + class_0A1E_slot_23(0x1000, arg_06); + + block_026A: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_GURDSQ/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/D_GURDSQ/slot_06_gotHit.txt new file mode 100644 index 0000000..63accee --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_GURDSQ/slot_06_gotHit.txt @@ -0,0 +1,47 @@ +function d_gurdsq_gotHit() /* entry=287 class_id=0x04E4 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + goods; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if ((retval != 4) || (Intrinsic006B() != 0)) goto block_0115; + + block_010F: + goto block_01C6; + + block_0115: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x4 */ + + block_0125: + if condition goto block_0184; + + block_0128: + if (Intrinsic0016(goods) != 0x0111) goto block_0175; + + block_0141: + goto block_0180; + + block_0175: + + block_0180: + /* loopnext */ + goto block_0125; + + block_0184: + if (Item.getFrame(arg_06) > 9) goto block_01B1; + + block_019B: + + block_01B1: + + block_01C6: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_HOFFMA/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/D_HOFFMA/slot_01_use.txt new file mode 100644 index 0000000..5e18813 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_HOFFMA/slot_01_use.txt @@ -0,0 +1,21 @@ +function d_hoffma_use() /* entry=282 class_id=0x04DA slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_0104; + + block_00FE: + goto block_0125; + + block_0104: + class_0A0C_slot_40(*(arg_06)); + if retval goto block_0125; + + block_0116: + class_0A1E_slot_23(0x1000, arg_06); + + block_0125: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_MAINT/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/D_MAINT/slot_01_use.txt new file mode 100644 index 0000000..dda3146 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_MAINT/slot_01_use.txt @@ -0,0 +1,21 @@ +function d_maint_use() /* entry=260 class_id=0x04BB slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_0223; + + block_021D: + goto block_0244; + + block_0223: + class_0A0C_slot_40(*(arg_06)); + if retval goto block_0244; + + block_0235: + class_0A1E_slot_23(0x1000, arg_06); + + block_0244: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_MAINT/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/D_MAINT/slot_06_gotHit.txt new file mode 100644 index 0000000..8e84787 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_MAINT/slot_06_gotHit.txt @@ -0,0 +1,47 @@ +function d_maint_gotHit() /* entry=260 class_id=0x04BB slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + goods; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if ((retval != 4) || (Intrinsic006B() != 0)) goto block_0115; + + block_010F: + goto block_01C6; + + block_0115: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x4 */ + + block_0125: + if condition goto block_0184; + + block_0128: + if (Intrinsic0016(goods) != 0x0111) goto block_0175; + + block_0141: + goto block_0180; + + block_0175: + + block_0180: + /* loopnext */ + goto block_0125; + + block_0184: + if (Item.getFrame(arg_06) > 9) goto block_01B1; + + block_019B: + + block_01B1: + + block_01C6: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_OWORK/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/D_OWORK/slot_01_use.txt new file mode 100644 index 0000000..20fe314 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_OWORK/slot_01_use.txt @@ -0,0 +1,21 @@ +function d_owork_use() /* entry=261 class_id=0x04BC slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_0223; + + block_021D: + goto block_0244; + + block_0223: + class_0A0C_slot_40(*(arg_06)); + if retval goto block_0244; + + block_0235: + class_0A1E_slot_23(0x1000, arg_06); + + block_0244: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_OWORK/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/D_OWORK/slot_06_gotHit.txt new file mode 100644 index 0000000..38918ff --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_OWORK/slot_06_gotHit.txt @@ -0,0 +1,47 @@ +function d_owork_gotHit() /* entry=261 class_id=0x04BC slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + goods; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if ((retval != 4) || (Intrinsic006B() != 0)) goto block_0115; + + block_010F: + goto block_01C6; + + block_0115: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x4 */ + + block_0125: + if condition goto block_0184; + + block_0128: + if (Intrinsic0016(goods) != 0x0111) goto block_0175; + + block_0141: + goto block_0180; + + block_0175: + + block_0180: + /* loopnext */ + goto block_0125; + + block_0184: + if (Item.getFrame(arg_06) > 9) goto block_01B1; + + block_019B: + + block_01B1: + + block_01C6: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_PLASMA/slot_0E_calledFromAnim.txt b/USECODE/EUSECODE_extracted/pseudocode/D_PLASMA/slot_0E_calledFromAnim.txt new file mode 100644 index 0000000..61d0897 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_PLASMA/slot_0E_calledFromAnim.txt @@ -0,0 +1,9 @@ +function d_plasma_calledFromAnim() /* entry=332 class_id=0x058F slot=0x0E */ +{ + entry: + set_info(0x021A, *(arg_06)); + process_exclude(); + spawn class_0A1C_slot_20(Item.getQLo(arg_06), *(arg_06), arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_PLASMA/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/D_PLASMA/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..9b9cd89 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_PLASMA/slot_0F_enterFastArea.txt @@ -0,0 +1,11 @@ +function d_plasma_enterFastArea() /* entry=332 class_id=0x058F slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + spawn class_0A0C_slot_32(pid, 1, 0x00000000); + suspend; + spawn class_0A1C_slot_20(Item.getQLo(arg_06), *(arg_06), arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_SCIEN/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/D_SCIEN/slot_01_use.txt new file mode 100644 index 0000000..ce0d156 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_SCIEN/slot_01_use.txt @@ -0,0 +1,21 @@ +function d_scien_use() /* entry=262 class_id=0x04BD slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_0223; + + block_021D: + goto block_0244; + + block_0223: + class_0A0C_slot_40(*(arg_06)); + if retval goto block_0244; + + block_0235: + class_0A1E_slot_23(0x1000, arg_06); + + block_0244: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_SCIEN/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/D_SCIEN/slot_06_gotHit.txt new file mode 100644 index 0000000..b73d205 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_SCIEN/slot_06_gotHit.txt @@ -0,0 +1,47 @@ +function d_scien_gotHit() /* entry=262 class_id=0x04BD slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + goods; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if ((retval != 4) || (Intrinsic006B() != 0)) goto block_0115; + + block_010F: + goto block_01C6; + + block_0115: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x4 */ + + block_0125: + if condition goto block_0184; + + block_0128: + if (Intrinsic0016(goods) != 0x0111) goto block_0175; + + block_0141: + goto block_0180; + + block_0175: + + block_0180: + /* loopnext */ + goto block_0125; + + block_0184: + if (Item.getFrame(arg_06) > 9) goto block_01B1; + + block_019B: + + block_01B1: + + block_01C6: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_SKELET/slot_0E_calledFromAnim.txt b/USECODE/EUSECODE_extracted/pseudocode/D_SKELET/slot_0E_calledFromAnim.txt new file mode 100644 index 0000000..39092a0 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_SKELET/slot_0E_calledFromAnim.txt @@ -0,0 +1,9 @@ +function d_skelet_calledFromAnim() /* entry=333 class_id=0x0596 slot=0x0E */ +{ + entry: + set_info(0x021A, *(arg_06)); + process_exclude(); + spawn class_0A1C_slot_20(Item.getQLo(arg_06), *(arg_06), arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_SKELET/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/D_SKELET/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..93eb6d5 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_SKELET/slot_0F_enterFastArea.txt @@ -0,0 +1,11 @@ +function d_skelet_enterFastArea() /* entry=333 class_id=0x0596 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + spawn class_0A0C_slot_32(pid, 1, 0x00000000); + suspend; + spawn class_0A1C_slot_20(Item.getQLo(arg_06), *(arg_06), arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_SOLD/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/D_SOLD/slot_01_use.txt new file mode 100644 index 0000000..5e7d33b --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_SOLD/slot_01_use.txt @@ -0,0 +1,21 @@ +function d_sold_use() /* entry=264 class_id=0x04BF slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_0223; + + block_021D: + goto block_0244; + + block_0223: + class_0A0C_slot_40(*(arg_06)); + if retval goto block_0244; + + block_0235: + class_0A1E_slot_23(0x1000, arg_06); + + block_0244: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_SOLD/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/D_SOLD/slot_06_gotHit.txt new file mode 100644 index 0000000..5ab8513 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_SOLD/slot_06_gotHit.txt @@ -0,0 +1,47 @@ +function d_sold_gotHit() /* entry=264 class_id=0x04BF slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + goods; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if ((retval != 4) || (Intrinsic006B() != 0)) goto block_0115; + + block_010F: + goto block_01C6; + + block_0115: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x4 */ + + block_0125: + if condition goto block_0184; + + block_0128: + if (Intrinsic0016(goods) != 0x0111) goto block_0175; + + block_0141: + goto block_0180; + + block_0175: + + block_0180: + /* loopnext */ + goto block_0125; + + block_0184: + if (Item.getFrame(arg_06) > 9) goto block_01B1; + + block_019B: + + block_01B1: + + block_01C6: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_STORM/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/D_STORM/slot_01_use.txt new file mode 100644 index 0000000..a37f116 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_STORM/slot_01_use.txt @@ -0,0 +1,21 @@ +function d_storm_use() /* entry=263 class_id=0x04BE slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_0223; + + block_021D: + goto block_0244; + + block_0223: + class_0A0C_slot_40(*(arg_06)); + if retval goto block_0244; + + block_0235: + class_0A1E_slot_23(0x1000, arg_06); + + block_0244: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_STORM/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/D_STORM/slot_06_gotHit.txt new file mode 100644 index 0000000..ce9c36e --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_STORM/slot_06_gotHit.txt @@ -0,0 +1,47 @@ +function d_storm_gotHit() /* entry=263 class_id=0x04BE slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + goods; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if ((retval != 4) || (Intrinsic006B() != 0)) goto block_0115; + + block_010F: + goto block_01C6; + + block_0115: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x4 */ + + block_0125: + if condition goto block_0184; + + block_0128: + if (Intrinsic0016(goods) != 0x0111) goto block_0175; + + block_0141: + goto block_0180; + + block_0175: + + block_0180: + /* loopnext */ + goto block_0125; + + block_0184: + if (Item.getFrame(arg_06) > 9) goto block_01B1; + + block_019B: + + block_01B1: + + block_01C6: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_SUSAN/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/D_SUSAN/slot_06_gotHit.txt new file mode 100644 index 0000000..685b0d3 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_SUSAN/slot_06_gotHit.txt @@ -0,0 +1,39 @@ +function d_susan_gotHit() /* entry=267 class_id=0x04C4 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + goods; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + if (Intrinsic00DA(100, 0) > 50) goto block_0108; + + block_0102: + goto block_01A1; + + block_0108: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x4 */ + + block_0118: + if condition goto block_016A; + + block_011B: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + spawn class_0A1E_slot_28(pid, 1, 0, goods); + suspend; + /* loopnext */ + goto block_0118; + + block_016A: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + + block_01A1: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_THERM/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/D_THERM/slot_01_use.txt new file mode 100644 index 0000000..e31e4bf --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_THERM/slot_01_use.txt @@ -0,0 +1,21 @@ +function d_therm_use() /* entry=268 class_id=0x04C5 slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_0104; + + block_00FE: + goto block_0125; + + block_0104: + class_0A0C_slot_40(*(arg_06)); + if retval goto block_0125; + + block_0116: + class_0A1E_slot_23(0x1000, arg_06); + + block_0125: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/D_VARG/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/D_VARG/slot_01_use.txt new file mode 100644 index 0000000..e6c7af1 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/D_VARG/slot_01_use.txt @@ -0,0 +1,21 @@ +function d_varg_use() /* entry=265 class_id=0x04C0 slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_0104; + + block_00FE: + goto block_0125; + + block_0104: + class_0A0C_slot_40(*(arg_06)); + if retval goto block_0125; + + block_0116: + class_0A1E_slot_23(0x1000, arg_06); + + block_0125: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EBRIDGE/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/EBRIDGE/slot_0A_equip.txt new file mode 100644 index 0000000..7d8e2a3 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EBRIDGE/slot_0A_equip.txt @@ -0,0 +1,10 @@ +function ebridge_equip() /* entry=210 class_id=0x03A6 slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + spawn class_0A03_slot_20(pid, arg_0A, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EBRIDGE/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/EBRIDGE/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..1b3815b --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EBRIDGE/slot_0F_enterFastArea.txt @@ -0,0 +1,31 @@ +function ebridge_enterFastArea() /* entry=210 class_id=0x03A6 slot=0x0F */ +{ + var + referent, /* [BP+00h] type=0x69 */ + x, /* [BP-02h] type=0x69 */ + y; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + x = Item.fall(arg_06); + if (x != 0) goto block_0117; + + block_0111: + goto block_0161; + + block_0117: + y = Intrinsic009C(arg_06); + if ((y < 1) || (y > 127)) goto block_013C; + + block_0136: + goto block_0161; + + block_013C: + spawn class_0A03_slot_26(pid, y, x, arg_06); + suspend; + + block_0161: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EBRIDGE2/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/EBRIDGE2/slot_0A_equip.txt new file mode 100644 index 0000000..715926d --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EBRIDGE2/slot_0A_equip.txt @@ -0,0 +1,10 @@ +function ebridge2_equip() /* entry=230 class_id=0x0413 slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + spawn class_0A03_slot_20(pid, arg_0A, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EBRIDGE2/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/EBRIDGE2/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..f4ed613 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EBRIDGE2/slot_0F_enterFastArea.txt @@ -0,0 +1,31 @@ +function ebridge2_enterFastArea() /* entry=230 class_id=0x0413 slot=0x0F */ +{ + var + referent, /* [BP+00h] type=0x69 */ + x, /* [BP-02h] type=0x69 */ + y; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + x = Item.fall(arg_06); + if (x != 0) goto block_0117; + + block_0111: + goto block_0161; + + block_0117: + y = Intrinsic009C(arg_06); + if ((y < 1) || (y > 127)) goto block_013C; + + block_0136: + goto block_0161; + + block_013C: + spawn class_0A03_slot_26(pid, y, x, arg_06); + suspend; + + block_0161: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EGRENADE/slot_0E_calledFromAnim.txt b/USECODE/EUSECODE_extracted/pseudocode/EGRENADE/slot_0E_calledFromAnim.txt new file mode 100644 index 0000000..76775c2 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EGRENADE/slot_0E_calledFromAnim.txt @@ -0,0 +1,15 @@ +function egrenade_calledFromAnim() /* entry=303 class_id=0x0528 slot=0x0E */ +{ + var + referent, /* [BP+00h] type=0x69 */ + n; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x021A, *(arg_06)); + process_exclude(); + n = *(arg_06); + set_info(1, 0); + spawn class_0A1C_slot_20(Item.getQLo(arg_06), *(arg_06), n); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ELEVAT/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/ELEVAT/slot_20_slot_20.txt new file mode 100644 index 0000000..781c111 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ELEVAT/slot_20_slot_20.txt @@ -0,0 +1,32 @@ +function elevat_slot_20() /* entry=379 class_id=0x0A09 slot=0x20 */ +{ + entry: + set_info(0x0001, *(arg_06)); + if (Item.getStatus(arg_06) & 0x1000) goto block_0127; + + block_0121: + goto block_019E; + + block_0127: + if (!Intrinsic006D(arg_06)) goto block_0140; + + block_013A: + goto block_019E; + + block_0140: + class_0A09_slot_22(Item.getZ(arg_06), arg_06); + if retval goto block_017F; + + block_015D: + spawn class_0A09_slot_23(pid, arg_06); + suspend; + goto block_019E; + + block_017F: + spawn class_0A09_slot_24(pid, arg_06); + suspend; + + block_019E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ELEVAT/slot_21_slot_21.txt b/USECODE/EUSECODE_extracted/pseudocode/ELEVAT/slot_21_slot_21.txt new file mode 100644 index 0000000..dbe520e --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ELEVAT/slot_21_slot_21.txt @@ -0,0 +1,9 @@ +function elevat_slot_21() /* entry=379 class_id=0x0A09 slot=0x21 */ +{ + entry: + goto block_01CF; + + block_01CF: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ELEVAT/slot_22_slot_22.txt b/USECODE/EUSECODE_extracted/pseudocode/ELEVAT/slot_22_slot_22.txt new file mode 100644 index 0000000..d818e18 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ELEVAT/slot_22_slot_22.txt @@ -0,0 +1,9 @@ +function elevat_slot_22() /* entry=379 class_id=0x0A09 slot=0x22 */ +{ + entry: + goto block_0200; + + block_0200: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ELEVAT/slot_23_slot_23.txt b/USECODE/EUSECODE_extracted/pseudocode/ELEVAT/slot_23_slot_23.txt new file mode 100644 index 0000000..3badb05 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ELEVAT/slot_23_slot_23.txt @@ -0,0 +1,91 @@ +function elevat_slot_23() /* entry=379 class_id=0x0A09 slot=0x23 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + cargoUp, /* [BP-02h] type=0x24 */ + existCargo, /* [BP-03h] type=0x62 */ + counter, /* [BP-05h] type=0x69 */ + height, /* [BP-06h] type=0x62 */ + maxLimit, /* [BP-08h] type=0x69 */ + maxLimitCount, /* [BP-0Ah] type=0x69 */ + counter2, /* [BP-0Ch] type=0x69 */ + total; /* [BP-0Eh] type=0x69 */ + + entry: + set_info(0x0001, *(arg_06)); + height = Item.getZ(arg_06); + maxLimit = Intrinsic009C(arg_06); + maxLimitCount = ((Intrinsic009C(arg_06) - height) / 2); + counter = 1; + + block_0295: + if (counter <= maxLimitCount) goto block_03A1; + + block_02A0: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x6 */ + + block_02B0: + if condition goto block_02DF; + + block_02B3: + if (Intrinsic0016(cargoUp) != 0x04FE) goto block_02DB; + + block_02C6: + total = (1 + total); + + block_02DB: + /* loopnext */ + goto block_02B0; + + block_02DF: + counter2 = 1; + + block_02E8: + if (counter2 <= total) goto block_0333; + + block_02F3: + cargoUp = Intrinsic0023(); + counter2 = (1 + counter2); + goto block_02E8; + + block_0333: + total = 0; + spawn class_0A0C_slot_32(pid, 1, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0295; + + block_03A1: + if ((maxLimit - height) & 1) goto block_0463; + + block_03AF: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x6 */ + + block_03BF: + if condition goto block_03DB; + + block_03C2: + total = (1 + total); + /* loopnext */ + goto block_03BF; + + block_03DB: + counter2 = 1; + + block_03E4: + if (counter2 <= total) goto block_042F; + + block_03EF: + cargoUp = Intrinsic0023(); + counter2 = (1 + counter2); + goto block_03E4; + + block_042F: + + block_0463: + /* bit_not */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ELEVAT/slot_24_slot_24.txt b/USECODE/EUSECODE_extracted/pseudocode/ELEVAT/slot_24_slot_24.txt new file mode 100644 index 0000000..6938f71 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ELEVAT/slot_24_slot_24.txt @@ -0,0 +1,146 @@ +function elevat_slot_24() /* entry=379 class_id=0x0A09 slot=0x24 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + counter2, /* [BP-04h] type=0x69 */ + height, /* [BP-05h] type=0x62 */ + minLimit, /* [BP-07h] type=0x69 */ + minLimitCount, /* [BP-09h] type=0x69 */ + cargoDown, /* [BP-0Bh] type=0x24 */ + wp, /* [BP-10h] type=0x24 */ + x, /* [BP-12h] type=0x69 */ + y, /* [BP-14h] type=0x69 */ + z, /* [BP-16h] type=0x69 */ + total2; /* [BP-18h] type=0x69 */ + + entry: + set_info(0x0001, *(arg_06)); + height = Item.getZ(arg_06); + class_0A09_slot_21(arg_06); + minLimit = retval; + minLimitCount = ((height - minLimit) / 2); + counter = 1; + + block_0590: + if (counter <= minLimitCount) goto block_07F6; + + block_059B: + wp = Intrinsic0013(arg_06); + local_0E = Item.legal_create(arg_06); + local_0C = (Item.getZ(arg_06) - 2); + total2 = 0; + /* loopscr value_u8=0x24 */ + /* loop current_var=0xF5 string_bytes=0x1 loop_type=0x6 */ + + block_05DF: + if condition goto block_068C; + + block_05E2: + if Item.use(*(arg_06), cargoDown) goto block_0688; + + block_05F5: + if (cargoDown < 0x0100) goto block_0673; + + block_0604: + if Item.isInNpc(*(arg_06), cargoDown) goto block_062F; + + block_0617: + total2 = (1 + total2); + goto block_0670; + + block_062F: + total2 = (1 + total2); + + block_0670: + goto block_0688; + + block_0673: + total2 = (1 + total2); + + block_0688: + /* loopnext */ + goto block_05DF; + + block_068C: + if Item.pop(0, 0, wp, arg_06) goto block_071E; + + block_06A3: + counter2 = 1; + + block_06AA: + if (counter2 <= total2) goto block_06F5; + + block_06B5: + cargoDown = Intrinsic0023(); + counter2 = (1 + counter2); + goto block_06AA; + + block_06F5: + spawn class_0A0C_slot_32(pid, 1, 0x00000000); + suspend; + goto block_07E2; + + block_071E: + counter2 = 1; + + block_0725: + if (counter2 <= total2) goto block_0770; + + block_0730: + cargoDown = Intrinsic0023(); + counter2 = (1 + counter2); + goto block_0725; + + block_0770: + spawn class_0A0C_slot_32(pid, 60, 0x00000000); + suspend; + spawn class_0A09_slot_23(pid, arg_06); + suspend; + goto block_0901; + + block_07E2: + total2 = 0; + counter = (1 + counter); + goto block_0590; + + block_07F6: + if ((height - minLimit) & 1) goto block_08CB; + + block_0804: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xF5 string_bytes=0x1 loop_type=0x6 */ + + block_0814: + if condition goto block_0843; + + block_0817: + if Item.use(*(arg_06), cargoDown) goto block_083F; + + block_082A: + total2 = (1 + total2); + + block_083F: + /* loopnext */ + goto block_0814; + + block_0843: + counter2 = 1; + + block_084C: + if (counter2 <= total2) goto block_0897; + + block_0857: + cargoDown = Intrinsic0023(); + counter2 = (1 + counter2); + goto block_084C; + + block_0897: + + block_08CB: + /* bit_not */ + + block_0901: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ELEVAT/slot_25_slot_25.txt b/USECODE/EUSECODE_extracted/pseudocode/ELEVAT/slot_25_slot_25.txt new file mode 100644 index 0000000..45af5e6 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ELEVAT/slot_25_slot_25.txt @@ -0,0 +1,77 @@ +function elevat_slot_25() /* entry=379 class_id=0x0A09 slot=0x25 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + liftpit, /* [BP-02h] type=0x24 */ + pitCounter, /* [BP-03h] type=0x62 */ + totFrames, /* [BP-04h] type=0x62 */ + checkX, /* [BP-06h] type=0x69 */ + checkY; /* [BP-08h] type=0x69 */ + + entry: + set_info(0x0001, *(arg_06)); + totFrames = 5; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_09C4: + if condition goto block_0B41; + + block_09C7: + class_0A0C_slot_3F((Intrinsic0013(arg_06) - Intrinsic0013(liftpit))); + checkX = retval; + class_0A0C_slot_3F((Item.legal_create(arg_06) - Item.legal_create(liftpit))); + checkY = retval; + if ((checkX < 2) && (checkY < 2)) goto block_0B3D; + + block_0A1B: + if ((Item.getStatus(liftpit) & 0x1000) != 0) goto block_0B3D; + + block_0A34: + if (Item.getFrame(liftpit) != 0) goto block_0AA9; + + block_0A54: + pitCounter = 1; + + block_0A5B: + if (pitCounter <= totFrames) goto block_0AA6; + + block_0A66: + spawn class_0A0C_slot_32(pid, 1, 0x00000000); + suspend; + pitCounter = (1 + pitCounter); + goto block_0A5B; + + block_0AA6: + goto block_0B2E; + + block_0AA9: + pitCounter = totFrames; + + block_0AB0: + if (pitCounter > 0) goto block_0AFB; + + block_0AB8: + spawn class_0A0C_slot_32(pid, 1, 0x00000000); + suspend; + pitCounter = (pitCounter - 1); + goto block_0AB0; + + block_0AFB: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + + block_0B2E: + /* bit_not */ + + block_0B3D: + /* loopnext */ + goto block_09C4; + + block_0B41: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ELEVATOR/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/ELEVATOR/slot_06_gotHit.txt new file mode 100644 index 0000000..094f98c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ELEVATOR/slot_06_gotHit.txt @@ -0,0 +1,136 @@ +function elevator_gotHit() /* entry=124 class_id=0x021E slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + ke, /* [BP+0Ch] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + lowQuality, /* [BP-04h] type=0x69 */ + direction, /* [BP-06h] type=0x69 */ + n, /* [BP-08h] type=0x24 */ + nT; /* [BP-0Ah] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + if ((ref != 1) || (Intrinsic0070() != 1)) goto block_010E; + + block_0108: + goto block_04FA; + + block_010E: + class_0A0C_slot_33(0x0220, 0); + + block_0136: + /* global_address global_id=0x3C */ + if Intrinsic0033() goto block_016F; + + block_0146: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_0136; + + block_016F: + /* global_address global_id=0x3C */ + if Intrinsic0035() goto block_01AF; + + block_017F: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + suspend; + + block_01AF: + item = ref; + lowQuality = Item.fall(arg_06); + direction = Intrinsic009C(arg_06); + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x6 */ + + block_01E2: + if condition goto block_0395; + + block_01E5: + if (item != *(arg_06)) goto block_0391; + + block_01F8: + if Item.isNpc(item) goto block_0235; + + block_0207: + if (item != 1) goto block_0232; + + block_0215: + n = item; + + block_0232: + goto block_0391; + + block_0235: + nT = Intrinsic0016(item); + if (((((((((((((((((((((((((nT != 0x0194) && (nT != 0x04D0)) && (nT != 17)) && (nT != 0x04B1)) && (nT != 0x0476)) && (nT != 0x01C6)) && (nT != 0x018D)) && (nT != 0x0193)) && (nT != 0x01C7)) && (nT != 0x028A)) && (nT != 0x018C)) && (nT != 0x0192)) && (nT != 0x0288)) && (nT != 0x028B)) && (nT != 0x018B)) && (nT != 0x0191)) && (nT != 0x028C)) && (nT != 0x028D)) && (nT != 0x018A)) && (nT != 0x0190)) && (nT != 0x0287)) && (nT != 0x028E)) && (nT != 0x0187)) && (nT != 0x0189)) && (nT != 0x0289)) goto block_0391; + + block_0386: + + block_0391: + /* loopnext */ + goto block_01E2; + + block_0395: + set_info(0x0220, 0); + if (direction != 0) goto block_03B1; + + block_03AE: + goto block_03BB; + + block_03B1: + direction = (direction - 1); + + block_03BB: + if (lowQuality < 16) goto block_03FB; + + block_03C9: + /* global_address global_id=0x3C */ + spawn class_021E_slot_20(Item.getType(pid, lowQuality), direction, arg_06); + suspend; + goto block_0499; + + block_03FB: + if (lowQuality != 16) goto block_0435; + + block_0403: + /* global_address global_id=0x3C */ + spawn class_021E_slot_20(Item.getType(pid, 4), direction, arg_06); + suspend; + goto block_0499; + + block_0435: + if (lowQuality != 17) goto block_0467; + + block_043D: + spawn class_021E_slot_20(pid, 17, 10, direction, arg_06); + suspend; + goto block_0499; + + block_0467: + if (lowQuality != 18) goto block_0499; + + block_046F: + spawn class_021E_slot_20(pid, 18, 24, direction, arg_06); + suspend; + goto block_0499; + + block_0499: + /* global_address global_id=0x3C */ + if Intrinsic0033() goto block_04D2; + + block_04A9: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + goto block_0499; + + block_04D2: + class_0A0C_slot_33(0x0220, 0); + + block_04FA: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ELEVATOR/slot_09_release.txt b/USECODE/EUSECODE_extracted/pseudocode/ELEVATOR/slot_09_release.txt new file mode 100644 index 0000000..aa977d1 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ELEVATOR/slot_09_release.txt @@ -0,0 +1,37 @@ +function elevator_release() /* entry=124 class_id=0x021E slot=0x09 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + w, /* [BP-02h] type=0x69 */ + item, /* [BP-04h] type=0x24 */ + door; /* [BP-06h] type=0x24 */ + + entry: + set_info(0x020D, *(arg_06)); + process_exclude(); + w = Intrinsic0057(arg_06); + if (w != 0) goto block_0FB5; + + block_0F3C: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */ + + block_0F82: + if condition goto block_0FB3; + + block_0F85: + door = item; + spawn class_0A06_slot_21(pid, 2, door); + suspend; + /* loopnext */ + goto block_0F82; + + block_0FB3: + + block_0FB5: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ELEVATOR/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/ELEVATOR/slot_20_slot_20.txt new file mode 100644 index 0000000..957ae58 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ELEVATOR/slot_20_slot_20.txt @@ -0,0 +1,291 @@ +function elevator_slot_20() /* entry=124 class_id=0x021E slot=0x20 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + dir, /* [BP+0Ah] type=0x69 */ + mapNum, /* [BP+0Ch] type=0x69 */ + eggNum, /* [BP+0Eh] type=0x69 */ + post1, /* [BP-02h] type=0x24 */ + post2, /* [BP-04h] type=0x24 */ + item, /* [BP-06h] type=0x24 */ + counter, /* [BP-08h] type=0x69 */ + door, /* [BP-0Ah] type=0x24 */ + door1; /* [BP-0Ch] type=0x24 */ + + entry: + set_info(1, 0); + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFA string_bytes=0x6 loop_type=0x2 */ + + block_0585: + if condition goto block_0593; + + block_0588: + door = item; + /* loopnext */ + goto block_0585; + + block_0593: + if (!door) goto block_05A4; + + block_059E: + goto block_0E9C; + + block_05A4: + if (Intrinsic0016(door) != 0x0189) goto block_0656; + + block_05BD: + /* global_address global_id=0x3C */ + suspend; + /* global_address global_id=0x3C */ + suspend; + /* global_address global_id=0x3C */ + suspend; + /* global_address global_id=0x3C */ + suspend; + goto block_06EC; + + block_0656: + /* global_address global_id=0x3C */ + suspend; + /* global_address global_id=0x3C */ + suspend; + /* global_address global_id=0x3C */ + suspend; + /* global_address global_id=0x3C */ + suspend; + + block_06EC: + /* global_address global_id=0x3C */ + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + spawn class_0A06_slot_21(pid, 2, door); + suspend; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFA string_bytes=0x6 loop_type=0x2 */ + + block_0782: + if condition goto block_0790; + + block_0785: + post1 = item; + /* loopnext */ + goto block_0782; + + block_0790: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFA string_bytes=0x6 loop_type=0x2 */ + + block_07B2: + if condition goto block_07C0; + + block_07B5: + post2 = item; + /* loopnext */ + goto block_07B2; + + block_07C0: + if (post1 && post2) goto block_09BA; + + block_07D3: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + + block_083C: + /* global_address global_id=0x3C */ + if Item.touch(0x00F4) goto block_0878; + + block_084F: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_083C; + + block_0878: + /* global_address global_id=0x3C */ + if dir goto block_094A; + + block_088F: + counter = 5; + + block_0896: + if (counter <= 7) goto block_08F9; + + block_089E: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0896; + + block_08F9: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + goto block_09BA; + + block_094A: + counter = 1; + + block_0951: + if (counter <= 4) goto block_09BA; + + block_0959: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0951; + + block_09BA: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + suspend; + spawn class_0A0C_slot_3C(pid, 0x00000000); + suspend; + /* global_address global_id=0x3C */ + if Item.getType(mapNum) goto block_0A39; + + block_0A32: + + block_0A39: + suspend; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFA string_bytes=0x6 loop_type=0x2 */ + + block_0A79: + if condition goto block_0AEB; + + block_0A7C: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + suspend; + class_0A0C_slot_33(12, item); + /* loopnext */ + goto block_0A79; + + block_0AEB: + if (eggNum != 18) goto block_0B23; + + block_0AFB: + /* global_address global_id=0x3C */ + suspend; + + block_0B23: + suspend; + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFA string_bytes=0x6 loop_type=0x2 */ + + block_0B83: + if condition goto block_0B91; + + block_0B86: + post1 = item; + /* loopnext */ + goto block_0B83; + + block_0B91: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFA string_bytes=0x6 loop_type=0x2 */ + + block_0BB3: + if condition goto block_0BC1; + + block_0BB6: + post2 = item; + /* loopnext */ + goto block_0BB3; + + block_0BC1: + if (post1 && post2) goto block_0D87; + + block_0BD4: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + + block_0BEF: + /* global_address global_id=0x3C */ + if Item.touch(0x00F2) goto block_0C2B; + + block_0C02: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_0BEF; + + block_0C2B: + /* global_address global_id=0x3C */ + if dir goto block_0CC9; + + block_0C42: + counter = 1; + + block_0C63: + if (counter <= 4) goto block_0CC6; + + block_0C6B: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0C63; + + block_0CC6: + goto block_0D39; + + block_0CC9: + counter = 0; + + block_0CD0: + if (counter <= 3) goto block_0D39; + + block_0CD8: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0CD0; + + block_0D39: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + + block_0D87: + spawn class_0A0C_slot_32(pid, 120, 0x00000000); + suspend; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFA string_bytes=0x6 loop_type=0x2 */ + + block_0DCD: + if condition goto block_0DFE; + + block_0DD0: + door = item; + spawn class_0A06_slot_21(pid, 1, door); + suspend; + /* loopnext */ + goto block_0DCD; + + block_0DFE: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + suspend; + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + suspend; + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + suspend; + /* global_address global_id=0x3C */ + + block_0E9C: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ELEVPLAT/slot_05_hit.txt b/USECODE/EUSECODE_extracted/pseudocode/ELEVPLAT/slot_05_hit.txt new file mode 100644 index 0000000..56ef458 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ELEVPLAT/slot_05_hit.txt @@ -0,0 +1,29 @@ +function elevplat_hit() /* entry=50 class_id=0x012F slot=0x05 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + r, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + cargo; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020B, *(arg_06)); + process_exclude(); + if (r != 1) goto block_015E; + + block_00F9: + cargo = r; + if (cargo < 0x0100) goto block_015E; + + block_010C: + if (!Kernel.resetRef(cargo)) goto block_015E; + + block_011F: + if (Item.getZ(cargo) < Item.getZ(arg_06)) goto block_015E; + + block_013B: + + block_015E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ELEVPLAT/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/ELEVPLAT/slot_0A_equip.txt new file mode 100644 index 0000000..5f01c56 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ELEVPLAT/slot_0A_equip.txt @@ -0,0 +1,95 @@ +function elevplat_equip() /* entry=50 class_id=0x012F slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_01B9; + + block_01B3: + goto block_0375; + + block_01B9: + /* pop_global global_id=0x0 size=0x1 */ + local_02 = Item.getZ(arg_06); + if ((arg_0A >= 0x00A0) && (arg_0A < 0x00FF)) goto block_01FA; + + block_01E6: + /* pop_global global_id=0x0 size=0x1 */ + arg_0A = (arg_0A - 0x00A0); + + block_01FA: + if (arg_0A != 0x00FF) goto block_025C; + + block_0206: + local_04 = Intrinsic009C(arg_06); + if ((local_04 != 88) || ((local_02 + 1) <= local_04)) goto block_023B; + + block_022B: + goto block_0259; + + block_023B: + if (local_04 < 88) goto block_0259; + + block_0246: + goto block_0259; + + block_0259: + goto block_02DF; + + block_025C: + if arg_0A goto block_02C5; + + block_0264: + if (local_02 < arg_0A) goto block_028C; + + block_026F: + goto block_02C2; + + block_028C: + if (local_02 > arg_0A) goto block_02B4; + + block_0297: + goto block_02C2; + + block_02B4: + if (local_02 != arg_0A) goto block_02C2; + + block_02BF: + goto block_02C2; + + block_02C2: + goto block_02DF; + + block_02C5: + + block_02DF: + spawn class_0A09_slot_20(pid, arg_06); + suspend; + if (global[0x0000] != 1) goto block_0375; + + block_0311: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x3A */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFA string_bytes=0x6 loop_type=0x6 */ + + block_032C: + if condition goto block_0373; + + block_032F: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + /* loopnext */ + goto block_032C; + + block_0373: + + block_0375: + return; + + block_0390: + arg_7A = local_02; + /* end */ + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ELEVPLAT/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/ELEVPLAT/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..4dfaaed --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ELEVPLAT/slot_0F_enterFastArea.txt @@ -0,0 +1,14 @@ +function elevplat_enterFastArea() /* entry=50 class_id=0x012F slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if (Intrinsic007E(arg_06) != 101) goto block_0435; + + block_040A: + suspend; + + block_0435: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ELEVPLAT/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/ELEVPLAT/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..0b5da7f --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ELEVPLAT/slot_10_leaveFastArea.txt @@ -0,0 +1,9 @@ +function elevplat_leaveFastArea() /* entry=50 class_id=0x012F slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + /* bit_not */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ELITE/slot_0E_calledFromAnim.txt b/USECODE/EUSECODE_extracted/pseudocode/ELITE/slot_0E_calledFromAnim.txt new file mode 100644 index 0000000..5532d93 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ELITE/slot_0E_calledFromAnim.txt @@ -0,0 +1,15 @@ +function elite_calledFromAnim() /* entry=275 class_id=0x04D1 slot=0x0E */ +{ + var + referent, /* [BP+00h] type=0x69 */ + n; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x021A, *(arg_06)); + process_exclude(); + n = *(arg_06); + set_info(1, 0); + spawn class_0A1C_slot_20(Item.getQLo(arg_06), *(arg_06), arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ELYDESK/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/ELYDESK/slot_01_use.txt new file mode 100644 index 0000000..dc77ee8 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ELYDESK/slot_01_use.txt @@ -0,0 +1,127 @@ +function elydesk_use() /* entry=246 class_id=0x044F slot=0x01 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + item; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + class_0A0C_slot_33(0x021B, *(arg_06)); + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + + block_0125: + if (Item.getFrame(arg_06) < 5) goto block_017A; + + block_013A: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + goto block_0125; + + block_017A: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + if (global[0x001F] != 2) goto block_01DA; + + block_01AA: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0370; + + block_01DA: + if (global[0x001F] != 3) goto block_0214; + + block_01E4: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0370; + + block_0214: + if (global[0x001F] != 4) goto block_024E; + + block_021E: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0370; + + block_024E: + if (global[0x001F] != 5) goto block_0288; + + block_0258: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0370; + + block_0288: + if (global[0x001F] != 6) goto block_02C2; + + block_0292: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0370; + + block_02C2: + if (global[0x001F] != 7) goto block_02FC; + + block_02CC: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0370; + + block_02FC: + if (global[0x001F] != 8) goto block_0336; + + block_0306: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0370; + + block_0336: + if (global[0x001F] != 9) goto block_0370; + + block_0340: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0370; + + block_0370: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */ + + block_038E: + if condition goto block_03B1; + + block_0391: + /* loopnext */ + goto block_038E; + + block_03B1: + counter = 0; + + block_03BA: + if (counter <= 5) goto block_0405; + + block_03C2: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_03BA; + + block_0405: + spawn class_044F_enterFastArea(arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ELYDESK/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/ELYDESK/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..454af30 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ELYDESK/slot_0F_enterFastArea.txt @@ -0,0 +1,86 @@ +function elydesk_enterFastArea() /* entry=246 class_id=0x044F slot=0x0F */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if (Item.getFrame(arg_06) != 10) goto block_0478; + + block_0472: + goto block_0658; + + block_0478: + suspend; + class_0A0C_slot_20(pid, 100); + spawn class_0A0C_slot_32((retval + 60), 0x00000000); + suspend; + if (!Item.getFrame(arg_06)) goto block_0518; + + block_04C9: + counter = 0; + + block_04D0: + if (counter <= 5) goto block_0518; + + block_04D8: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_04D0; + + block_0518: + class_0A0C_slot_20(100); + if (retval > 50) goto block_0583; + + block_052E: + counter = 0; + + block_0535: + if (counter <= 5) goto block_0580; + + block_053D: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0535; + + block_0580: + goto block_0655; + + block_0583: + counter = 6; + + block_058A: + if (counter <= 9) goto block_05D2; + + block_0592: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_058A; + + block_05D2: + class_0A0C_slot_20(pid, 60); + spawn class_0A0C_slot_32((retval + 60), 0x00000000); + suspend; + counter = 0; + + block_060A: + if (counter <= 3) goto block_0655; + + block_0612: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + counter = (1 + counter); + goto block_060A; + + block_0655: + goto block_0478; + + block_0658: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ELYDESK/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/ELYDESK/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..edb6ea6 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ELYDESK/slot_10_leaveFastArea.txt @@ -0,0 +1,9 @@ +function elydesk_leaveFastArea() /* entry=246 class_id=0x044F slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + class_0A0C_slot_33(0x021B, *(arg_06)); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ENERGY/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/ENERGY/slot_01_use.txt new file mode 100644 index 0000000..2bebd87 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ENERGY/slot_01_use.txt @@ -0,0 +1,74 @@ +function energy_use() /* entry=329 class_id=0x0582 slot=0x01 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + maxLimit, /* [BP-02h] type=0x69 */ + fule, /* [BP-04h] type=0x69 */ + item; /* [BP-06h] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + set_info(0x00F0, 0); + /* global_address global_id=0x3C */ + if (Intrinsic0081() != 0x09C4) goto block_0110; + + block_0105: + fule = 0x03E8; + goto block_0157; + + block_0110: + /* global_address global_id=0x3C */ + if (Intrinsic0081() != 0x1388) goto block_012C; + + block_0121: + fule = 0x07D0; + goto block_0157; + + block_012C: + /* global_address global_id=0x3C */ + if (Intrinsic0081() != 0x2710) goto block_0148; + + block_013D: + fule = 0x0BB8; + goto block_0157; + + block_0148: + /* global_address global_id=0x3C */ + + block_0157: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if Intrinsic0081(Intrinsic0082()) goto block_01D7; + + block_0175: + spawn class_0A0C_slot_21(pid, 0x00B0, 0x00000000); + suspend; + goto block_02AC; + + block_01D7: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if Intrinsic0081((Intrinsic0082() + fule)) goto block_0242; + + block_01F8: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + spawn class_0A0C_slot_21(pid, 0x010D, 0x00000000); + suspend; + goto block_0286; + + block_0242: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + spawn class_0A0C_slot_21(pid, 0x010D, 0x00000000); + suspend; + + block_0286: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + + block_02AC: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ENFORCER/slot_0E_calledFromAnim.txt b/USECODE/EUSECODE_extracted/pseudocode/ENFORCER/slot_0E_calledFromAnim.txt new file mode 100644 index 0000000..f8e8d55 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ENFORCER/slot_0E_calledFromAnim.txt @@ -0,0 +1,9 @@ +function enforcer_calledFromAnim() /* entry=87 class_id=0x01B4 slot=0x0E */ +{ + entry: + set_info(0x021A, *(arg_06)); + process_exclude(); + spawn class_0A1C_slot_20(Item.getQLo(arg_06), *(arg_06), arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ESPACE/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/ESPACE/slot_0A_equip.txt new file mode 100644 index 0000000..88e8541 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ESPACE/slot_0A_equip.txt @@ -0,0 +1,10 @@ +function espace_equip() /* entry=179 class_id=0x0336 slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + spawn class_0A03_slot_20(pid, arg_0A, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ESPACE/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/ESPACE/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..dc3fa9d --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ESPACE/slot_0F_enterFastArea.txt @@ -0,0 +1,17 @@ +function espace_enterFastArea() /* entry=179 class_id=0x0336 slot=0x0F */ +{ + var + referent, /* [BP+00h] type=0x69 */ + x, /* [BP-02h] type=0x69 */ + y; /* [BP-04h] type=0x69 */ + + set_info(0x021B, *(arg_06)); + process_exclude(); + if ((Item.getFrame(arg_06) != 1)) { + x = Intrinsic0084(arg_06); + if (x == 0) { + } + return; + } + return; +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ESPACE2/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/ESPACE2/slot_0A_equip.txt new file mode 100644 index 0000000..54625bb --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ESPACE2/slot_0A_equip.txt @@ -0,0 +1,10 @@ +function espace2_equip() /* entry=138 class_id=0x0290 slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + spawn class_0A03_slot_20(pid, arg_0A, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ESPACE2/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/ESPACE2/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..d664a15 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ESPACE2/slot_0F_enterFastArea.txt @@ -0,0 +1,17 @@ +function espace2_enterFastArea() /* entry=138 class_id=0x0290 slot=0x0F */ +{ + var + referent, /* [BP+00h] type=0x69 */ + x, /* [BP-02h] type=0x69 */ + y; /* [BP-04h] type=0x69 */ + + set_info(0x021B, *(arg_06)); + process_exclude(); + if ((Item.getFrame(arg_06) != 1)) { + x = Intrinsic0084(arg_06); + if (x == 0) { + } + return; + } + return; +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ETWALLEW/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/ETWALLEW/slot_0B_unequip.txt new file mode 100644 index 0000000..a716365 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ETWALLEW/slot_0B_unequip.txt @@ -0,0 +1,8 @@ +function etwallew_unequip() /* entry=323 class_id=0x0565 slot=0x0B */ +{ + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ETWALLEW/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/ETWALLEW/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..97d1057 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ETWALLEW/slot_0F_enterFastArea.txt @@ -0,0 +1,8 @@ +function etwallew_enterFastArea() /* entry=323 class_id=0x0565 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ETWALLEW/slot_13_avatarStoleSomething.txt b/USECODE/EUSECODE_extracted/pseudocode/ETWALLEW/slot_13_avatarStoleSomething.txt new file mode 100644 index 0000000..8b7ce80 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ETWALLEW/slot_13_avatarStoleSomething.txt @@ -0,0 +1,8 @@ +function etwallew_avatarStoleSomething() /* entry=323 class_id=0x0565 slot=0x13 */ +{ + entry: + set_info(0x022E, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ETWALLNS/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/ETWALLNS/slot_0B_unequip.txt new file mode 100644 index 0000000..69a68bc --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ETWALLNS/slot_0B_unequip.txt @@ -0,0 +1,8 @@ +function etwallns_unequip() /* entry=322 class_id=0x0564 slot=0x0B */ +{ + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ETWALLNS/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/ETWALLNS/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..4125975 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ETWALLNS/slot_0F_enterFastArea.txt @@ -0,0 +1,8 @@ +function etwallns_enterFastArea() /* entry=322 class_id=0x0564 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/ETWALLNS/slot_13_avatarStoleSomething.txt b/USECODE/EUSECODE_extracted/pseudocode/ETWALLNS/slot_13_avatarStoleSomething.txt new file mode 100644 index 0000000..fc13bb8 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/ETWALLNS/slot_13_avatarStoleSomething.txt @@ -0,0 +1,8 @@ +function etwallns_avatarStoleSomething() /* entry=322 class_id=0x0564 slot=0x13 */ +{ + entry: + set_info(0x022E, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EVENT/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/EVENT/slot_0A_equip.txt new file mode 100644 index 0000000..f211e2e --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EVENT/slot_0A_equip.txt @@ -0,0 +1,1181 @@ +function event_equip() /* entry=190 class_id=0x0361 slot=0x0A */ +{ + var + referent, /* [BP+00h] type=0x69 */ + event, /* [BP+0Ah] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + source, /* [BP-04h] type=0x24 */ + dest, /* [BP-06h] type=0x24 */ + door, /* [BP-08h] type=0x24 */ + wp, /* [BP-0Dh] type=0x24 */ + counter, /* [BP-0Fh] type=0x69 */ + counter2, /* [BP-11h] type=0x69 */ + n, /* [BP-13h] type=0x24 */ + link, /* [BP-15h] type=0x69 */ + cx, /* [BP-17h] type=0x69 */ + cy, /* [BP-19h] type=0x69 */ + ex, /* [BP-1Bh] type=0x69 */ + ey, /* [BP-1Dh] type=0x69 */ + time, /* [BP-1Fh] type=0x69 */ + op, /* [BP-21h] type=0x69 */ + opp, /* [BP-23h] type=0x69 */ + post1, /* [BP-25h] type=0x24 */ + post2, /* [BP-27h] type=0x24 */ + floor, /* [BP-29h] type=0x24 */ + dir, /* [BP-2Bh] type=0x69 */ + qHi, /* [BP-2Dh] type=0x69 */ + flicMan; /* [BP-2Fh] type=0x24 */ + + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + link = Intrinsic0084(arg_06); + if (event != 0) goto block_012B; + + block_0101: + /* global_address global_id=0x3C */ + goto block_1FCA; + + block_012B: + if (event != 1) goto block_026F; + + block_0133: + /* global_address global_id=0x3C */ + if Intrinsic0033() goto block_016C; + + block_0143: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_0133; + + block_016C: + /* global_address global_id=0x3C */ + cx = teleportToEgg(); + cy = Intrinsic0087(); + ex = Intrinsic0013(arg_06); + ey = Item.legal_create(arg_06); + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + spawn class_0A18_slot_20(pid, (0 + 0x0080), *(arg_06), arg_06); + suspend; + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + spawn class_0A18_slot_20(pid, (1 + 0x0080), *(arg_06), arg_06); + suspend; + /* global_address global_id=0x3C */ + goto block_1FCA; + + block_026F: + if (event != 2) goto block_0345; + + block_0277: + /* global_address global_id=0x3C */ + if Intrinsic0033() goto block_02B0; + + block_0287: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_0277; + + block_02B0: + spawn class_0A0C_slot_3D(pid, Item.legal_create(arg_06), Intrinsic0013(arg_06), 0x00000000); + suspend; + spawn class_0A0C_slot_32(pid, 60, 0x00000000); + suspend; + spawn class_0A18_slot_20(pid, (0 + 0x0080), *(arg_06), arg_06); + suspend; + goto block_1FCA; + + block_0345: + if (event != 3) goto block_03A8; + + block_034D: + spawn class_0A0C_slot_3E(pid, 0x00000000); + suspend; + spawn class_0A18_slot_20(pid, (1 + 0x0080), *(arg_06), arg_06); + suspend; + goto block_1FCA; + + block_03A8: + if (event != 5) goto block_03C2; + + block_03B0: + goto block_1FCA; + + block_03C2: + if (event != 6) goto block_03DC; + + block_03CA: + goto block_1FCA; + + block_03DC: + if (event != 7) goto block_03F6; + + block_03E4: + goto block_1FCA; + + block_03F6: + if (event != 8) goto block_049B; + + block_03FE: + counter = Intrinsic009C(arg_06); + if (counter != 0) goto block_0445; + + block_0417: + spawn class_0A18_slot_20(pid, (0 + 0x0080), *(arg_06), arg_06); + suspend; + goto block_0498; + + block_0445: + counter2 = Intrinsic0084(arg_06); + spawn class_0A18_slot_20(pid, (0 + 0x0080), *(arg_06), arg_06); + suspend; + + block_0498: + goto block_1FCA; + + block_049B: + if (event != 9) goto block_0532; + + block_04A3: + counter = Intrinsic0084(arg_06); + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x3A */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_04CE: + if condition goto block_052D; + + block_04D1: + if (((counter != Intrinsic0084(item)) && (Item.getMapNum(item) != 0)) && (*(arg_06) != item)) goto block_0529; + + block_0501: + + block_0529: + /* loopnext */ + goto block_04CE; + + block_052D: + goto block_1FCA; + + block_0532: + if (event != 10) goto block_0677; + + block_053A: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0558: + if condition goto block_0591; + + block_055B: + if (Intrinsic0084(arg_06) != Intrinsic0084(item)) goto block_058D; + + block_0574: + if (Item.getFrame(item) != 0) goto block_058D; + + block_0586: + source = item; + + block_058D: + /* loopnext */ + goto block_0558; + + block_0591: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_05B1: + if condition goto block_05ED; + + block_05B4: + if (Intrinsic0084(arg_06) != Intrinsic0084(item)) goto block_05E9; + + block_05D0: + if (Item.getFrame(item) != 1) goto block_05E9; + + block_05E2: + dest = item; + + block_05E9: + /* loopnext */ + goto block_05B1; + + block_05ED: + if (source && dest) goto block_0674; + + block_0600: + wp = Intrinsic0013(dest); + local_0B = Item.legal_create(dest); + local_09 = Item.getZ(dest); + + block_0674: + goto block_1FCA; + + block_0677: + if (event != 15) goto block_06B6; + + block_067F: + /* global_address global_id=0x3C */ + goto block_1FCA; + + block_06B6: + if (event != 16) goto block_06F7; + + block_06BE: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + goto block_1FCA; + + block_06F7: + if (event != 22) goto block_079D; + + block_06FF: + cx = teleportToEgg(); + cy = Intrinsic0087(); + /* global_address global_id=0x3C */ + + block_0747: + if Item.touch(54, arg_06) goto block_0781; + + block_0758: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_0747; + + block_0781: + /* global_address global_id=0x3C */ + goto block_1FCA; + + block_079D: + if (event != 40) goto block_082B; + + block_07A5: + /* global_address global_id=0x3C */ + if (!Kernel.resetRef()) goto block_0828; + + block_07B9: + + block_07C4: + /* global_address global_id=0x3C */ + if Intrinsic0033() goto block_07FA; + + block_07D4: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_07C4; + + block_07FA: + /* global_address global_id=0x3C */ + suspend; + + block_0828: + goto block_1FCA; + + block_082B: + if (event != 41) goto block_0ACB; + + block_0833: + /* global_address global_id=0x3C */ + if (Kernel.resetRef((global[0x0029] != 1)) != 1) goto block_0857; + + block_0851: + goto block_1FCA; + + block_0857: + spawn class_0A0C_slot_32(pid, 60, 0x00000000); + suspend; + /* global_address global_id=0x3C */ + spawn class_0A11_slot_22(pid, 3, 0); + suspend; + /* global_address global_id=0x3C */ + spawn class_0A11_slot_22(pid, 4, 14); + suspend; + /* global_address global_id=0x3C */ + spawn class_0A11_slot_22(pid, 3, 12); + suspend; + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + suspend; + /* pop_global global_id=0x29 size=0x1 */ + /* loopscr value_u8=0x24 */ + /* loop current_var=0xF8 string_bytes=0x1 loop_type=0x2 */ + + block_0948: + if condition goto block_0983; + + block_094B: + if (Intrinsic0084(door) != 5) goto block_097F; + + block_0960: + spawn class_0A06_slot_20(pid, door); + suspend; + + block_097F: + /* loopnext */ + goto block_0948; + + block_0983: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF8 string_bytes=0x6 loop_type=0x2 */ + + block_09A3: + if condition goto block_09B1; + + block_09A6: + n = door; + /* loopnext */ + goto block_09A3; + + block_09B1: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + spawn class_0A0C_slot_32(pid, 120, 0x00000000); + suspend; + + block_0A38: + if 1 goto block_0AC8; + + block_0A40: + /* global_address global_id=0x3C */ + op = Kernel.resetRef(); + opp = Kernel.resetRef(n); + if ((op != 1) || (opp != 1)) goto block_0A77; + + block_0A71: + goto block_1FCA; + + block_0A77: + spawn class_0A18_slot_20(pid, 0, *(arg_06), arg_06); + suspend; + spawn class_0A0C_slot_32(pid, 0x012C, 0x00000000); + suspend; + goto block_0A38; + + block_0AC8: + goto block_1FCA; + + block_0ACB: + if (event != 45) goto block_0C57; + + block_0AD3: + time = Intrinsic00BD(arg_06); + + block_0AE1: + if 1 goto block_0C54; + + block_0AE9: + counter = 0; + class_0A0C_slot_29((Intrinsic009C(arg_06) != 0), *(arg_06), global[0x003C]); + if (retval > 50) goto block_0B1F; + + block_0B19: + goto block_1FCA; + + block_0B1F: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x3A */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0B3C: + if condition goto block_0B5C; + + block_0B3F: + if Item.isNpc(item) goto block_0B58; + + block_0B4E: + counter = (1 + counter); + + block_0B58: + /* loopnext */ + goto block_0B3C; + + block_0B5C: + if (counter <= 4) goto block_0C2B; + + block_0B6F: + spawn class_0A18_slot_20(pid, (0 + 0x0080), *(arg_06), arg_06); + suspend; + spawn class_0A0C_slot_32(pid, time, 0x00000000); + suspend; + spawn class_0A18_slot_20(pid, (1 + 0x0080), *(arg_06), arg_06); + suspend; + spawn class_0A0C_slot_32(pid, time, 0x00000000); + suspend; + goto block_0C51; + + block_0C2B: + spawn class_0A0C_slot_32(pid, 120, 0x00000000); + suspend; + + block_0C51: + goto block_0AE1; + + block_0C54: + goto block_1FCA; + + block_0C57: + if (event != 46) goto block_0DF6; + + block_0C5F: + time = Intrinsic00BD(arg_06); + + block_0C6D: + if 1 goto block_0DF3; + + block_0C75: + counter = 0; + class_0A0C_slot_29((Intrinsic009C(arg_06) != 0), *(arg_06), global[0x003C]); + if ((retval > 50) || (Intrinsic0007(arg_06) != 1)) goto block_0CBE; + + block_0CB8: + goto block_1FCA; + + block_0CBE: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x3A */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0CDB: + if condition goto block_0CFB; + + block_0CDE: + if (item < 0x00FF) goto block_0CF7; + + block_0CED: + counter = (1 + counter); + + block_0CF7: + /* loopnext */ + goto block_0CDB; + + block_0CFB: + if (counter <= 4) goto block_0DCA; + + block_0D0E: + spawn class_0A18_slot_20(pid, (0 + 0x0080), *(arg_06), arg_06); + suspend; + spawn class_0A0C_slot_32(pid, time, 0x00000000); + suspend; + spawn class_0A18_slot_20(pid, (1 + 0x0080), *(arg_06), arg_06); + suspend; + spawn class_0A0C_slot_32(pid, time, 0x00000000); + suspend; + goto block_0DF0; + + block_0DCA: + spawn class_0A0C_slot_32(pid, 120, 0x00000000); + suspend; + + block_0DF0: + goto block_0C6D; + + block_0DF3: + goto block_1FCA; + + block_0DF6: + if (event != 47) goto block_1064; + + block_0DFE: + time = Intrinsic00BD(arg_06); + counter2 = Intrinsic009C(arg_06); + + block_0E1A: + if 1 goto block_1061; + + block_0E22: + if (Intrinsic009C(arg_06) != 1) goto block_0F1B; + + block_0E37: + counter = 1; + + block_0E3E: + if (counter <= counter2) goto block_0F0B; + + block_0E49: + spawn class_0A18_slot_20(pid, (0 + 0x0080), *(arg_06), arg_06); + suspend; + spawn class_0A0C_slot_32(pid, (time * 3), 0x00000000); + suspend; + spawn class_0A18_slot_20(pid, (1 + 0x0080), *(arg_06), arg_06); + suspend; + spawn class_0A0C_slot_32(pid, (time * 3), 0x00000000); + suspend; + counter = (1 + counter); + goto block_0E3E; + + block_0F0B: + goto block_105E; + + block_0F1B: + if (Intrinsic009C(arg_06) > 1) goto block_0FDB; + + block_0F30: + counter = 1; + + block_0F37: + if (counter <= counter2) goto block_0FD8; + + block_0F42: + spawn class_0A18_slot_20(pid, (0 + 0x0080), *(arg_06), arg_06); + suspend; + spawn class_0A0C_slot_32(pid, time, 0x00000000); + suspend; + spawn class_0A18_slot_20(pid, (1 + 0x0080), *(arg_06), arg_06); + suspend; + counter = (1 + counter); + goto block_0F37; + + block_0FD8: + goto block_105E; + + block_0FDB: + counter = 1; + + block_0FE2: + if (counter <= counter2) goto block_1058; + + block_0FED: + spawn class_0A18_slot_20(pid, (0 + 0x0080), *(arg_06), arg_06); + suspend; + spawn class_0A0C_slot_32(pid, time, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0FE2; + + block_1058: + goto block_1FCA; + + block_105E: + goto block_0E1A; + + block_1061: + goto block_1FCA; + + block_1064: + if (event != 48) goto block_119B; + + block_106C: + time = Intrinsic00BD(arg_06); + counter2 = Intrinsic009C(arg_06); + counter = 1; + + block_108F: + if (counter <= counter2) goto block_1105; + + block_109A: + spawn class_0A18_slot_20(pid, (0 + 0x0080), *(arg_06), arg_06); + suspend; + spawn class_0A0C_slot_32(pid, time, 0x00000000); + suspend; + counter = (1 + counter); + goto block_108F; + + block_1105: + counter = 1; + + block_110C: + if (counter <= counter2) goto block_1185; + + block_1117: + spawn class_0A18_slot_20(pid, (1 + 0x0080), *(arg_06), arg_06); + suspend; + spawn class_0A0C_slot_32(pid, time, 0x00000000); + suspend; + counter = (1 + counter); + goto block_110C; + + block_1185: + goto block_1FCA; + + block_1198: + goto block_1FCA; + + block_119B: + if (event != 49) goto block_130A; + + block_11A3: + time = Intrinsic00BD(arg_06); + counter2 = Intrinsic009C(arg_06); + + block_11BF: + if 1 goto block_1307; + + block_11C7: + if Intrinsic009C(arg_06) goto block_1281; + + block_11D6: + counter = 1; + + block_11DD: + if (counter <= counter2) goto block_127E; + + block_11E8: + spawn class_0A18_slot_20(pid, (0 + 0x0080), *(arg_06), arg_06); + suspend; + spawn class_0A0C_slot_32(pid, time, 0x00000000); + suspend; + spawn class_0A18_slot_20(pid, (1 + 0x0080), *(arg_06), arg_06); + suspend; + counter = (1 + counter); + goto block_11DD; + + block_127E: + goto block_1304; + + block_1281: + counter = 1; + + block_1288: + if (counter <= counter2) goto block_12FE; + + block_1293: + spawn class_0A18_slot_20(pid, (0 + 0x0080), *(arg_06), arg_06); + suspend; + spawn class_0A0C_slot_32(pid, time, 0x00000000); + suspend; + counter = (1 + counter); + goto block_1288; + + block_12FE: + goto block_1FCA; + + block_1304: + goto block_11BF; + + block_1307: + goto block_1FCA; + + block_130A: + if (event != 50) goto block_1367; + + block_1312: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xF8 string_bytes=0x1 loop_type=0x2 */ + + block_1327: + if condition goto block_1362; + + block_132A: + if (Intrinsic0084(door) != 100) goto block_135E; + + block_133F: + spawn class_0A06_slot_20(pid, door); + suspend; + + block_135E: + /* loopnext */ + goto block_1327; + + block_1362: + goto block_1FCA; + + block_1367: + if (event != 51) goto block_166D; + + block_136F: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_138D: + if condition goto block_13A9; + + block_1390: + dir = Intrinsic009C(item); + floor = item; + /* loopnext */ + goto block_138D; + + block_13A9: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_13C9: + if condition goto block_13D7; + + block_13CC: + post1 = item; + /* loopnext */ + goto block_13C9; + + block_13D7: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_13F7: + if condition goto block_1405; + + block_13FA: + post2 = item; + /* loopnext */ + goto block_13F7; + + block_1405: + if (post1 && post2) goto block_15A9; + + block_1418: + /* global_address global_id=0x3C */ + spawn class_0A0C_slot_32(pid, 60, 0x00000000); + suspend; + /* global_address global_id=0x3C */ + if dir goto block_14EB; + + block_1464: + counter = 1; + + block_1485: + if (counter <= 4) goto block_14E8; + + block_148D: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + counter = (1 + counter); + goto block_1485; + + block_14E8: + goto block_155B; + + block_14EB: + counter = 0; + + block_14F2: + if (counter <= 3) goto block_155B; + + block_14FA: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + counter = (1 + counter); + goto block_14F2; + + block_155B: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + + block_15A9: + spawn class_0A0C_slot_32(pid, 60, 0x00000000); + suspend; + spawn class_0A18_slot_20(pid, 0, *(arg_06), arg_06); + suspend; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_1614: + if condition goto block_1641; + + block_1617: + door = item; + spawn class_0A06_slot_20(pid, door); + suspend; + /* loopnext */ + goto block_1614; + + block_1641: + spawn class_0A18_slot_20(pid, 1, *(arg_06), arg_06); + suspend; + goto block_1FCA; + + block_166D: + if (event != 52) goto block_1747; + + block_1675: + time = Intrinsic00BD(arg_06); + counter2 = Intrinsic009C(arg_06); + + block_1691: + if 1 goto block_1744; + + block_1699: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x3A */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xED string_bytes=0x6 loop_type=0x2 */ + + block_16B6: + if condition goto block_1739; + + block_16B9: + if Item.isNpc(n) goto block_170F; + + block_16C8: + if (Item.getQLo(n) != Intrinsic0084(arg_06)) goto block_170F; + + block_16E1: + if (!Kernel.resetRef(n)) goto block_170F; + + block_16F4: + + block_170F: + spawn class_0A0C_slot_32(pid, time, 0x00000000); + suspend; + /* loopnext */ + goto block_16B6; + + block_1739: + goto block_1FCA; + + block_1741: + goto block_1691; + + block_1744: + goto block_1FCA; + + block_1747: + if (event != 53) goto block_1807; + + block_174F: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xED string_bytes=0x6 loop_type=0x2 */ + + block_176D: + if condition goto block_1802; + + block_1770: + spawn class_0A0C_slot_32(pid, 1, 0x00000000); + suspend; + /* loopnext */ + goto block_176D; + + block_1802: + goto block_1FCA; + + block_1807: + if (event != 54) goto block_185E; + + block_180F: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xED string_bytes=0x6 loop_type=0x2 */ + + block_182D: + if condition goto block_1859; + + block_1830: + /* loopnext */ + goto block_182D; + + block_1859: + goto block_1FCA; + + block_185E: + if (event != 55) goto block_196E; + + block_1866: + if (!global[0x0038]) goto block_1877; + + block_1871: + goto block_1FCA; + + block_1877: + time = Intrinsic00BD(arg_06); + + block_1885: + if 1 goto block_196B; + + block_188D: + counter = 0; + spawn class_0A18_slot_20(pid, (0 + 0x0080), *(arg_06), arg_06); + suspend; + spawn class_0A0C_slot_32(pid, time, 0x00000000); + suspend; + spawn class_0A18_slot_20(pid, (1 + 0x0080), *(arg_06), arg_06); + suspend; + spawn class_0A0C_slot_32(pid, time, 0x00000000); + suspend; + if (Intrinsic009C(arg_06) != 0) goto block_1968; + + block_1962: + goto block_1FCA; + + block_1968: + goto block_1885; + + block_196B: + goto block_1FCA; + + block_196E: + if (event != 75) goto block_19E1; + + block_1976: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x3A */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_1993: + if condition goto block_19DC; + + block_1996: + if (Intrinsic0084(item) != Intrinsic0084(arg_06)) goto block_19D8; + + block_19B2: + suspend; + + block_19D8: + /* loopnext */ + goto block_1993; + + block_19DC: + goto block_1FCA; + + block_19E1: + if (event != 85) goto block_1B70; + + block_19E9: + time = (Intrinsic008E(arg_06) * 5); + + block_19FA: + if 1 goto block_1B6D; + + block_1A02: + counter = 0; + class_0A0C_slot_29((Intrinsic009C(arg_06) != 0), *(arg_06), global[0x003C]); + if (retval > 50) goto block_1A38; + + block_1A32: + goto block_1FCA; + + block_1A38: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x3A */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_1A55: + if condition goto block_1A75; + + block_1A58: + if Item.isNpc(item) goto block_1A71; + + block_1A67: + counter = (1 + counter); + + block_1A71: + /* loopnext */ + goto block_1A55; + + block_1A75: + if (counter <= 4) goto block_1B44; + + block_1A88: + spawn class_0A18_slot_20(pid, (0 + 0x0080), *(arg_06), arg_06); + suspend; + spawn class_0A0C_slot_32(pid, time, 0x00000000); + suspend; + spawn class_0A18_slot_20(pid, (1 + 0x0080), *(arg_06), arg_06); + suspend; + spawn class_0A0C_slot_32(pid, time, 0x00000000); + suspend; + goto block_1B6A; + + block_1B44: + spawn class_0A0C_slot_32(pid, 120, 0x00000000); + suspend; + + block_1B6A: + goto block_19FA; + + block_1B6D: + goto block_1FCA; + + block_1B70: + if (event != 88) goto block_1BFB; + + block_1B78: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_1FCA; + + block_1BFB: + if (event != 97) goto block_1C8E; + + block_1C03: + /* global_address global_id=0x3C */ + + block_1C2A: + if (!Item.enterFastArea()) goto block_1C62; + + block_1C39: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_1C2A; + + block_1C62: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + goto block_1FCA; + + block_1C8E: + if (event != 98) goto block_1CCD; + + block_1C96: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_1CB4: + if condition goto block_1CC8; + + block_1CB7: + /* loopnext */ + goto block_1CB4; + + block_1CC8: + goto block_1FCA; + + block_1CCD: + if (event != 99) goto block_1D0C; + + block_1CD5: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_1CF3: + if condition goto block_1D07; + + block_1CF6: + /* loopnext */ + goto block_1CF3; + + block_1D07: + goto block_1FCA; + + block_1D0C: + if (event != 100) goto block_1D64; + + block_1D14: + spawn class_0A0C_slot_32(pid, 60, 0x00000000); + suspend; + suspend; + goto block_1FCA; + + block_1D64: + if (event != 0x00C8) goto block_1E0E; + + block_1D6D: + if (global[0x0022] != 0) goto block_1E0B; + + block_1D80: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + spawn class_0A0C_slot_32(pid, 20, 0x00000000); + suspend; + spawn class_0A0C_slot_26(pid, "3h", 0x00000000); + /* free_stack_string value_u8=0x0 target=[SP+00h] */ + suspend; + /* pop_global global_id=0x22 size=0x1 */ + + block_1E0B: + goto block_1FCA; + + block_1E0E: + if (event != 0x00C9) goto block_1E7B; + + block_1E17: + qHi = Intrinsic009C(arg_06); + if (qHi < 4) goto block_1E4D; + + block_1E33: + qHi = (1 + qHi); + goto block_1E78; + + block_1E4D: + spawn class_0A18_slot_20(pid, (1 + 0x0080), *(arg_06), arg_06); + suspend; + + block_1E78: + goto block_1FCA; + + block_1E7B: + if (event != 0x00D4) goto block_1EF6; + + block_1E84: + /* pop_global global_id=0x2C size=0x1 */ + spawn class_0A0C_slot_32(1, pid, 60, 0x00000000); + suspend; + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_1FCA; + + block_1EF6: + if (event != 0x00D5) goto block_1F56; + + block_1EFF: + spawn class_0A0C_slot_32(pid, 60, 0x00000000); + suspend; + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_1FCA; + + block_1F56: + if (event != 0x00E6) goto block_1F9F; + + block_1F5F: + qHi = Intrinsic009C(arg_06); + if (qHi < 2) goto block_1F95; + + block_1F7B: + qHi = (1 + qHi); + goto block_1F9C; + + block_1F95: + + block_1F9C: + goto block_1FCA; + + block_1F9F: + if (event != 0x00FA) goto block_1FCA; + + block_1FA8: + spawn class_0A20_slot_20(pid, flicMan); + suspend; + goto block_1FCA; + + block_1FCA: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EWALLEW/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/EWALLEW/slot_0B_unequip.txt new file mode 100644 index 0000000..7ac203b --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EWALLEW/slot_0B_unequip.txt @@ -0,0 +1,8 @@ +function ewallew_unequip() /* entry=177 class_id=0x0329 slot=0x0B */ +{ + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EWALLEW/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/EWALLEW/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..9c519c4 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EWALLEW/slot_0F_enterFastArea.txt @@ -0,0 +1,8 @@ +function ewallew_enterFastArea() /* entry=177 class_id=0x0329 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EWALLEW/slot_13_avatarStoleSomething.txt b/USECODE/EUSECODE_extracted/pseudocode/EWALLEW/slot_13_avatarStoleSomething.txt new file mode 100644 index 0000000..102f082 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EWALLEW/slot_13_avatarStoleSomething.txt @@ -0,0 +1,8 @@ +function ewallew_avatarStoleSomething() /* entry=177 class_id=0x0329 slot=0x13 */ +{ + entry: + set_info(0x022E, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EWALLNS/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/EWALLNS/slot_0B_unequip.txt new file mode 100644 index 0000000..df1a81d --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EWALLNS/slot_0B_unequip.txt @@ -0,0 +1,8 @@ +function ewallns_unequip() /* entry=178 class_id=0x032A slot=0x0B */ +{ + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EWALLNS/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/EWALLNS/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..f3c2ac5 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EWALLNS/slot_0F_enterFastArea.txt @@ -0,0 +1,8 @@ +function ewallns_enterFastArea() /* entry=178 class_id=0x032A slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EWALLNS/slot_13_avatarStoleSomething.txt b/USECODE/EUSECODE_extracted/pseudocode/EWALLNS/slot_13_avatarStoleSomething.txt new file mode 100644 index 0000000..8190b46 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EWALLNS/slot_13_avatarStoleSomething.txt @@ -0,0 +1,8 @@ +function ewallns_avatarStoleSomething() /* entry=178 class_id=0x032A slot=0x13 */ +{ + entry: + set_info(0x022E, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EYECAMEW/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/EYECAMEW/slot_06_gotHit.txt new file mode 100644 index 0000000..213c7c4 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EYECAMEW/slot_06_gotHit.txt @@ -0,0 +1,14 @@ +function eyecamew_gotHit() /* entry=135 class_id=0x0260 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A1A_slot_49(vel, ref, arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EYECAMEW/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/EYECAMEW/slot_0A_equip.txt new file mode 100644 index 0000000..e7f9a1d --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EYECAMEW/slot_0A_equip.txt @@ -0,0 +1,20 @@ +function eyecamew_equip() /* entry=135 class_id=0x0260 slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (Item.pop() != 0) goto block_0290; + + block_0265: + spawn class_0A1A_slot_24(pid, arg_0A, Item.pop(), arg_06); + suspend; + goto block_02B7; + + block_0290: + spawn class_0A1A_slot_24(pid, arg_0A, global[0x003C], arg_06); + suspend; + + block_02B7: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EYECAMEW/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/EYECAMEW/slot_0B_unequip.txt new file mode 100644 index 0000000..0dff295 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EYECAMEW/slot_0B_unequip.txt @@ -0,0 +1,17 @@ +function eyecamew_unequip() /* entry=135 class_id=0x0260 slot=0x0B */ +{ + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 4) goto block_0160; + + block_015A: + goto block_017B; + + block_0160: + spawn class_0A1A_slot_27(arg_06); + + block_017B: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EYECAMEW/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/EYECAMEW/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..f2e4996 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EYECAMEW/slot_0F_enterFastArea.txt @@ -0,0 +1,17 @@ +function eyecamew_enterFastArea() /* entry=135 class_id=0x0260 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 4) goto block_0103; + + block_00FD: + goto block_011E; + + block_0103: + spawn class_0A1A_slot_27(arg_06); + + block_011E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EYECAMEW/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/EYECAMEW/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..c79dcc9 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EYECAMEW/slot_10_leaveFastArea.txt @@ -0,0 +1,11 @@ +function eyecamew_leaveFastArea() /* entry=135 class_id=0x0260 slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + /* bit_not */ + class_0A0C_slot_33(1, *(arg_06)); + class_0A0C_slot_33(0x020A, *(arg_06)); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EYECAMNS/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/EYECAMNS/slot_06_gotHit.txt new file mode 100644 index 0000000..f4f7f56 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EYECAMNS/slot_06_gotHit.txt @@ -0,0 +1,15 @@ +function eyecamns_gotHit() /* entry=134 class_id=0x025F slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + /* bit_not */ + spawn class_0A1A_slot_49(vel, ref, arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EYECAMNS/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/EYECAMNS/slot_0A_equip.txt new file mode 100644 index 0000000..de95a70 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EYECAMNS/slot_0A_equip.txt @@ -0,0 +1,20 @@ +function eyecamns_equip() /* entry=134 class_id=0x025F slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (Item.pop() != 0) goto block_029F; + + block_0274: + spawn class_0A1A_slot_24(pid, arg_0A, Item.pop(), arg_06); + suspend; + goto block_02C6; + + block_029F: + spawn class_0A1A_slot_24(pid, arg_0A, global[0x003C], arg_06); + suspend; + + block_02C6: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EYECAMNS/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/EYECAMNS/slot_0B_unequip.txt new file mode 100644 index 0000000..73a9a5c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EYECAMNS/slot_0B_unequip.txt @@ -0,0 +1,17 @@ +function eyecamns_unequip() /* entry=134 class_id=0x025F slot=0x0B */ +{ + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 4) goto block_0160; + + block_015A: + goto block_017B; + + block_0160: + spawn class_0A1A_slot_27(arg_06); + + block_017B: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EYECAMNS/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/EYECAMNS/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..dcaccd4 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EYECAMNS/slot_0F_enterFastArea.txt @@ -0,0 +1,17 @@ +function eyecamns_enterFastArea() /* entry=134 class_id=0x025F slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 4) goto block_0103; + + block_00FD: + goto block_011E; + + block_0103: + spawn class_0A1A_slot_27(arg_06); + + block_011E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/EYECAMNS/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/EYECAMNS/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..b0ac245 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/EYECAMNS/slot_10_leaveFastArea.txt @@ -0,0 +1,11 @@ +function eyecamns_leaveFastArea() /* entry=134 class_id=0x025F slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + /* bit_not */ + class_0A0C_slot_33(1, *(arg_06)); + class_0A0C_slot_33(0x020A, *(arg_06)); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FADE/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/FADE/slot_0A_equip.txt new file mode 100644 index 0000000..2c84966 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FADE/slot_0A_equip.txt @@ -0,0 +1,41 @@ +function fade_equip() /* entry=294 class_id=0x04FC slot=0x0A */ +{ + set_info(0x0211, *(arg_06)); + process_exclude(); + class_0A1E_slot_23(0x1000, arg_06); + if ((arg_0A != 0)) { + if (arg_0A == 1) { + suspend; + } + else if (arg_0A == 2) { + suspend; + } + else if (arg_0A == 3) { + } + else if (arg_0A == 4) { + } + else if (arg_0A == 5) { + suspend; + } + else if (arg_0A == 6) { + suspend; + } + else if (arg_0A == 7) { + suspend; + } + else if (arg_0A == 8) { + suspend; + } + else if (arg_0A == 9) { + spawn class_04FC_slot_20(arg_06); + class_0A1E_slot_24(0x1000, arg_06); + } + else if (arg_0A == 10) { + /* pop_global global_id=0xA size=0x1 */ + } + class_0A1E_slot_24(0x1000, arg_06); + return; + } + class_0A1E_slot_24(0x1000, arg_06); + return; +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FADE/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/FADE/slot_20_slot_20.txt new file mode 100644 index 0000000..bb9ce7e --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FADE/slot_20_slot_20.txt @@ -0,0 +1,60 @@ +function fade_slot_20() /* entry=294 class_id=0x04FC slot=0x20 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + loop, /* [BP-02h] type=0x69 */ + loop2; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x00F0, *(arg_06)); + if (global[0x000A] != 0) goto block_03EE; + + block_02C6: + /* pop_global global_id=0xA size=0x1 */ + loop = 1; + + block_02D6: + if (loop <= 20) goto block_0382; + + block_02DE: + loop2 = 1; + + block_02E5: + if (loop2 <= 4) goto block_034F; + + block_02ED: + spawn class_0A0C_slot_32(pid, 20, 0x00000000); + suspend; + if (!global[0x000A]) goto block_0342; + + block_031E: + suspend; + goto block_03EE; + + block_0342: + loop2 = (1 + loop2); + goto block_02E5; + + block_034F: + suspend; + loop = (1 + loop); + goto block_02D6; + + block_0382: + /* global_address global_id=0x3C */ + if (!Kernel.resetRef()) goto block_03D9; + + block_0396: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + spawn class_0A0C_slot_32(pid, 0x00C8, 0x00000000); + suspend; + + block_03D9: + /* pop_global global_id=0xA size=0x1 */ + /* global_address global_id=0x3C */ + + block_03EE: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FALLINGC/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/FALLINGC/slot_06_gotHit.txt new file mode 100644 index 0000000..45340d1 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FALLINGC/slot_06_gotHit.txt @@ -0,0 +1,39 @@ +function fallingc_gotHit() /* entry=10 class_id=0x005F slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x6 */ + + block_00FB: + if condition goto block_0180; + + block_00FE: + if (Intrinsic0016(item) != 95) goto block_0124; + + block_0116: + goto block_017C; + + block_0124: + if ((Intrinsic003C(item) != 6) && (Item.isNpc(item) != 0)) goto block_017C; + + block_0149: + spawn class_0A1E_slot_28(pid, 1, 0, item); + suspend; + goto block_017C; + + block_017C: + /* loopnext */ + goto block_00FB; + + block_0180: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FASTSKIL/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/FASTSKIL/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..7e5910c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FASTSKIL/slot_0F_enterFastArea.txt @@ -0,0 +1,64 @@ +function fastskil_enterFastArea() /* entry=49 class_id=0x0120 slot=0x0F */ +{ + var + referent, /* [BP+00h] type=0x69 */ + skill, /* [BP-02h] type=0x69 */ + qLo; /* [BP-04h] type=0x69 */ + + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + if Item.getMapNum(arg_06) goto block_0285; + + block_0120: + skill = Intrinsic0029(); + if (Item.getFrame(arg_06) != 2) goto block_021F; + + block_013F: + qLo = Item.getUnkEggType(arg_06); + if (skill != 1) goto block_0182; + + block_0158: + spawn class_0A18_slot_20(pid, 0, *(arg_06), arg_06); + suspend; + goto block_020C; + + block_0182: + if (skill != 2) goto block_01C7; + + block_018D: + spawn class_0A18_slot_20(pid, 0, *(arg_06), arg_06); + suspend; + goto block_020C; + + block_01C7: + if (skill >= 3) goto block_020C; + + block_01D2: + spawn class_0A18_slot_20(pid, 0, *(arg_06), arg_06); + suspend; + goto block_020C; + + block_020C: + goto block_0292; + + block_021F: + if (skill >= (Item.getFrame(arg_06) + 2)) goto block_025E; + + block_0234: + spawn class_0A18_slot_20(pid, 0, *(arg_06), arg_06); + suspend; + goto block_0285; + + block_025E: + spawn class_0A18_slot_20(pid, 1, *(arg_06), arg_06); + suspend; + + block_0285: + + block_0292: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FFFLOOR/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/FFFLOOR/slot_06_gotHit.txt new file mode 100644 index 0000000..bfdd843 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FFFLOOR/slot_06_gotHit.txt @@ -0,0 +1,40 @@ +function fffloor_gotHit() /* entry=54 class_id=0x0135 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + n; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + if ((Item.getFrame(arg_06) != 1) || (ref > 0x0100)) goto block_04B8; + + block_04B2: + goto block_0542; + + block_04B8: + n = ref; + + block_04BF: + if Item.isOn(*(arg_06), n) goto block_0542; + + block_04D2: + if (Item.getFrame(arg_06) != 1) goto block_04EA; + + block_04E4: + goto block_0542; + + block_04EA: + class_0A0C_slot_20(pid, 8); + spawn class_0A11_slot_2D(retval, *(arg_06), n); + suspend; + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_04BF; + + block_0542: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FFFLOOR/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/FFFLOOR/slot_0A_equip.txt new file mode 100644 index 0000000..bd14bd2 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FFFLOOR/slot_0A_equip.txt @@ -0,0 +1,157 @@ +function fffloor_equip() /* entry=54 class_id=0x0135 slot=0x0A */ +{ + var + referent, /* [BP+00h] type=0x69 */ + var, /* [BP+0Ah] type=0x69 */ + egg, /* [BP-02h] type=0x24 */ + fffloor; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (var != 0) goto block_0178; + + block_00F6: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0113: + if condition goto block_013F; + + block_0116: + if (Egg.setEggXRange(egg) != 2) goto block_013B; + + block_012E: + + block_013B: + /* loopnext */ + goto block_0113; + + block_013F: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + goto block_0385; + + block_0178: + if (var != 1) goto block_01E0; + + block_0183: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_01A0: + if condition goto block_01CC; + + block_01A3: + if (Egg.setEggXRange(egg) != 2) goto block_01C8; + + block_01BB: + + block_01C8: + /* loopnext */ + goto block_01A0; + + block_01CC: + /* bit_not */ + goto block_0385; + + block_01E0: + if (var != 29) goto block_0248; + + block_01EB: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */ + + block_022F: + if condition goto block_0243; + + block_0232: + /* loopnext */ + goto block_022F; + + block_0243: + goto block_0385; + + block_0248: + if (var != 30) goto block_032C; + + block_0253: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0296: + if condition goto block_02C2; + + block_0299: + if (Egg.setEggXRange(egg) != 2) goto block_02BE; + + block_02B1: + + block_02BE: + /* loopnext */ + goto block_0296; + + block_02C2: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */ + + block_0308: + if condition goto block_0327; + + block_030B: + /* loopnext */ + goto block_0308; + + block_0327: + goto block_0385; + + block_032C: + if (var != 31) goto block_0385; + + block_0337: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0354: + if condition goto block_0380; + + block_0357: + if (Egg.setEggXRange(egg) != 2) goto block_037C; + + block_036F: + + block_037C: + /* loopnext */ + goto block_0354; + + block_0380: + goto block_0385; + + block_0385: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FFFLOOR/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/FFFLOOR/slot_0B_unequip.txt new file mode 100644 index 0000000..8ee9862 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FFFLOOR/slot_0B_unequip.txt @@ -0,0 +1,46 @@ +function fffloor_unequip() /* entry=54 class_id=0x0135 slot=0x0B */ +{ + var + referent, /* [BP+00h] type=0x69 */ + var, /* [BP+0Ah] type=0x69 */ + item; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + if (Item.getFrame(arg_06) != 1) goto block_03E3; + + block_03DD: + goto block_045B; + + block_03E3: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x3A */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0400: + if condition goto block_0459; + + block_0403: + if (Item.isNpc(item) != 1) goto block_0455; + + block_0415: + if Item.overlaps(item, arg_06) goto block_0455; + + block_0426: + class_0A0C_slot_20(pid, 8); + spawn class_0A11_slot_2D(retval, *(arg_06), item); + suspend; + + block_0455: + /* loopnext */ + goto block_0400; + + block_0459: + + block_045B: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FFFLOOR2/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/FFFLOOR2/slot_06_gotHit.txt new file mode 100644 index 0000000..0f28d85 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FFFLOOR2/slot_06_gotHit.txt @@ -0,0 +1,40 @@ +function fffloor2_gotHit() /* entry=96 class_id=0x01C8 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + n; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + if ((Item.getFrame(arg_06) != 1) || (ref > 0x0100)) goto block_0495; + + block_048F: + goto block_051F; + + block_0495: + n = ref; + + block_049C: + if Item.isOn(*(arg_06), n) goto block_051F; + + block_04AF: + if (Item.getFrame(arg_06) != 1) goto block_04C7; + + block_04C1: + goto block_051F; + + block_04C7: + class_0A0C_slot_20(pid, 8); + spawn class_0A11_slot_2D(retval, *(arg_06), n); + suspend; + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_049C; + + block_051F: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FFFLOOR2/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/FFFLOOR2/slot_0A_equip.txt new file mode 100644 index 0000000..326e979 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FFFLOOR2/slot_0A_equip.txt @@ -0,0 +1,155 @@ +function fffloor2_equip() /* entry=96 class_id=0x01C8 slot=0x0A */ +{ + var + referent, /* [BP+00h] type=0x69 */ + var, /* [BP+0Ah] type=0x69 */ + egg, /* [BP-02h] type=0x24 */ + fffloor; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (var != 0) goto block_0152; + + block_00F6: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0113: + if condition goto block_013F; + + block_0116: + if (Egg.setEggXRange(egg) != 2) goto block_013B; + + block_012E: + + block_013B: + /* loopnext */ + goto block_0113; + + block_013F: + goto block_0362; + + block_0152: + if (var != 1) goto block_01BA; + + block_015D: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_017A: + if condition goto block_01A6; + + block_017D: + if (Egg.setEggXRange(egg) != 2) goto block_01A2; + + block_0195: + + block_01A2: + /* loopnext */ + goto block_017A; + + block_01A6: + /* bit_not */ + goto block_0362; + + block_01BA: + if (var != 29) goto block_0222; + + block_01C5: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */ + + block_0209: + if condition goto block_021D; + + block_020C: + /* loopnext */ + goto block_0209; + + block_021D: + goto block_0362; + + block_0222: + if (var != 30) goto block_0309; + + block_022D: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_027E: + if condition goto block_02AA; + + block_0281: + if (Egg.setEggXRange(egg) != 2) goto block_02A6; + + block_0299: + + block_02A6: + /* loopnext */ + goto block_027E; + + block_02AA: + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */ + + block_02F0: + if condition goto block_0304; + + block_02F3: + /* loopnext */ + goto block_02F0; + + block_0304: + goto block_0362; + + block_0309: + if (var != 31) goto block_0362; + + block_0314: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0331: + if condition goto block_035D; + + block_0334: + if (Egg.setEggXRange(egg) != 2) goto block_0359; + + block_034C: + + block_0359: + /* loopnext */ + goto block_0331; + + block_035D: + goto block_0362; + + block_0362: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FFFLOOR2/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/FFFLOOR2/slot_0B_unequip.txt new file mode 100644 index 0000000..157a9a8 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FFFLOOR2/slot_0B_unequip.txt @@ -0,0 +1,46 @@ +function fffloor2_unequip() /* entry=96 class_id=0x01C8 slot=0x0B */ +{ + var + referent, /* [BP+00h] type=0x69 */ + var, /* [BP+0Ah] type=0x69 */ + item; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + if (Item.getFrame(arg_06) != 1) goto block_03C0; + + block_03BA: + goto block_0438; + + block_03C0: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x3A */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_03DD: + if condition goto block_0436; + + block_03E0: + if (Item.isNpc(item) != 1) goto block_0432; + + block_03F2: + if Item.overlaps(item, arg_06) goto block_0432; + + block_0403: + class_0A0C_slot_20(pid, 8); + spawn class_0A11_slot_2D(retval, *(arg_06), item); + suspend; + + block_0432: + /* loopnext */ + goto block_03DD; + + block_0436: + + block_0438: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FIGHT_E1/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/FIGHT_E1/slot_06_gotHit.txt new file mode 100644 index 0000000..a789a0b --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FIGHT_E1/slot_06_gotHit.txt @@ -0,0 +1,71 @@ +function fight_e1_gotHit() /* entry=77 class_id=0x0195 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_010A; + + block_0104: + goto block_0240; + + block_010A: + class_0A0C_slot_2C(vel, ref); + if (!retval) goto block_0126; + + block_0120: + goto block_0240; + + block_0126: + spawn class_0A1E_slot_27(pid, 0x00C8, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_018A; + + block_0157: + class_0A0C_slot_20(1); + if retval goto block_0177; + + block_0167: + goto block_0184; + + block_0177: + + block_0184: + goto block_0240; + + block_018A: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x44 */ + /* loop current_var=0xFE string_bytes=0xA loop_type=0x2 */ + + block_01B3: + if condition goto block_023E; + + block_01B6: + class_0A1E_slot_23(0x1000, item); + if (!Item.getFrame(item)) goto block_023A; + + block_01D8: + if ((Intrinsic0016(item) != 0x0196) || (Intrinsic0016(item) != 0x018F)) goto block_021E; + + block_01FF: + goto block_023A; + + block_021E: + + block_023A: + /* loopnext */ + goto block_01B3; + + block_023E: + + block_0240: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FIGHT_E2/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/FIGHT_E2/slot_06_gotHit.txt new file mode 100644 index 0000000..8b4076d --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FIGHT_E2/slot_06_gotHit.txt @@ -0,0 +1,71 @@ +function fight_e2_gotHit() /* entry=78 class_id=0x0196 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_010A; + + block_0104: + goto block_0240; + + block_010A: + class_0A0C_slot_2C(vel, ref); + if (!retval) goto block_0126; + + block_0120: + goto block_0240; + + block_0126: + spawn class_0A1E_slot_27(pid, 0x00C8, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_018A; + + block_0157: + class_0A0C_slot_20(1); + if retval goto block_0177; + + block_0167: + goto block_0184; + + block_0177: + + block_0184: + goto block_0240; + + block_018A: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x44 */ + /* loop current_var=0xFE string_bytes=0xA loop_type=0x2 */ + + block_01B3: + if condition goto block_023E; + + block_01B6: + class_0A1E_slot_23(0x1000, item); + if (!Item.getFrame(item)) goto block_023A; + + block_01D8: + if ((Intrinsic0016(item) != 0x0196) || (Intrinsic0016(item) != 0x018F)) goto block_021E; + + block_01FF: + goto block_023A; + + block_021E: + + block_023A: + /* loopnext */ + goto block_01B3; + + block_023E: + + block_0240: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FIGHT_E3/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/FIGHT_E3/slot_06_gotHit.txt new file mode 100644 index 0000000..74044e8 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FIGHT_E3/slot_06_gotHit.txt @@ -0,0 +1,71 @@ +function fight_e3_gotHit() /* entry=76 class_id=0x018F slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_010A; + + block_0104: + goto block_0240; + + block_010A: + class_0A0C_slot_2C(vel, ref); + if (!retval) goto block_0126; + + block_0120: + goto block_0240; + + block_0126: + spawn class_0A1E_slot_27(pid, 0x00C8, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_018A; + + block_0157: + class_0A0C_slot_20(1); + if retval goto block_0177; + + block_0167: + goto block_0184; + + block_0177: + + block_0184: + goto block_0240; + + block_018A: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x44 */ + /* loop current_var=0xFE string_bytes=0xA loop_type=0x2 */ + + block_01B3: + if condition goto block_023E; + + block_01B6: + class_0A1E_slot_23(0x1000, item); + if (!Item.getFrame(item)) goto block_023A; + + block_01D8: + if ((Intrinsic0016(item) != 0x0196) || (Intrinsic0016(item) != 0x018F)) goto block_021E; + + block_01FF: + goto block_023A; + + block_021E: + + block_023A: + /* loopnext */ + goto block_01B3; + + block_023E: + + block_0240: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FIGHT_EW/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/FIGHT_EW/slot_06_gotHit.txt new file mode 100644 index 0000000..adfc1de --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FIGHT_EW/slot_06_gotHit.txt @@ -0,0 +1,71 @@ +function fight_ew_gotHit() /* entry=81 class_id=0x019A slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_010A; + + block_0104: + goto block_0240; + + block_010A: + class_0A0C_slot_2C(vel, ref); + if (!retval) goto block_0126; + + block_0120: + goto block_0240; + + block_0126: + spawn class_0A1E_slot_27(pid, 0x00C8, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_018A; + + block_0157: + class_0A0C_slot_20(1); + if retval goto block_0177; + + block_0167: + goto block_0184; + + block_0177: + + block_0184: + goto block_0240; + + block_018A: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x44 */ + /* loop current_var=0xFE string_bytes=0xA loop_type=0x2 */ + + block_01B3: + if condition goto block_023E; + + block_01B6: + class_0A1E_slot_23(0x1000, item); + if (!Item.getFrame(item)) goto block_023A; + + block_01D8: + if ((Intrinsic0016(item) != 0x0196) || (Intrinsic0016(item) != 0x018F)) goto block_021E; + + block_01FF: + goto block_023A; + + block_021E: + + block_023A: + /* loopnext */ + goto block_01B3; + + block_023E: + + block_0240: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FIGHT_N1/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/FIGHT_N1/slot_06_gotHit.txt new file mode 100644 index 0000000..5ba5eb0 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FIGHT_N1/slot_06_gotHit.txt @@ -0,0 +1,71 @@ +function fight_n1_gotHit() /* entry=73 class_id=0x0183 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_010A; + + block_0104: + goto block_0240; + + block_010A: + class_0A0C_slot_2C(vel, ref); + if (!retval) goto block_0126; + + block_0120: + goto block_0240; + + block_0126: + spawn class_0A1E_slot_27(pid, 0x00C8, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_018A; + + block_0157: + class_0A0C_slot_20(1); + if retval goto block_0177; + + block_0167: + goto block_0184; + + block_0177: + + block_0184: + goto block_0240; + + block_018A: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x44 */ + /* loop current_var=0xFE string_bytes=0xA loop_type=0x2 */ + + block_01B3: + if condition goto block_023E; + + block_01B6: + class_0A1E_slot_23(0x1000, item); + if (!Item.getFrame(item)) goto block_023A; + + block_01D8: + if ((Intrinsic0016(item) != 0x017F) || (Intrinsic0016(item) != 0x0141)) goto block_021E; + + block_01FF: + goto block_023A; + + block_021E: + + block_023A: + /* loopnext */ + goto block_01B3; + + block_023E: + + block_0240: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FIGHT_N2/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/FIGHT_N2/slot_06_gotHit.txt new file mode 100644 index 0000000..94df57f --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FIGHT_N2/slot_06_gotHit.txt @@ -0,0 +1,71 @@ +function fight_n2_gotHit() /* entry=57 class_id=0x0141 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_010A; + + block_0104: + goto block_0240; + + block_010A: + class_0A0C_slot_2C(vel, ref); + if (!retval) goto block_0126; + + block_0120: + goto block_0240; + + block_0126: + spawn class_0A1E_slot_27(pid, 0x00C8, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_018A; + + block_0157: + class_0A0C_slot_20(1); + if retval goto block_0177; + + block_0167: + goto block_0184; + + block_0177: + + block_0184: + goto block_0240; + + block_018A: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x44 */ + /* loop current_var=0xFE string_bytes=0xA loop_type=0x2 */ + + block_01B3: + if condition goto block_023E; + + block_01B6: + class_0A1E_slot_23(0x1000, item); + if (!Item.getFrame(item)) goto block_023A; + + block_01D8: + if ((Intrinsic0016(item) != 0x017F) || (Intrinsic0016(item) != 0x0141)) goto block_021E; + + block_01FF: + goto block_023A; + + block_021E: + + block_023A: + /* loopnext */ + goto block_01B3; + + block_023E: + + block_0240: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FIGHT_N3/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/FIGHT_N3/slot_06_gotHit.txt new file mode 100644 index 0000000..bf91e9a --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FIGHT_N3/slot_06_gotHit.txt @@ -0,0 +1,75 @@ +function fight_n3_gotHit() /* entry=72 class_id=0x0180 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_010A; + + block_0104: + goto block_026C; + + block_010A: + class_0A0C_slot_2C(vel, ref); + if (!retval) goto block_0126; + + block_0120: + goto block_026C; + + block_0126: + spawn class_0A1E_slot_27(pid, 0x00C8, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_018A; + + block_0157: + class_0A0C_slot_20(1); + if retval goto block_0177; + + block_0167: + goto block_0184; + + block_0177: + + block_0184: + goto block_026C; + + block_018A: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x44 */ + /* loop current_var=0xFE string_bytes=0xA loop_type=0x2 */ + + block_01B3: + if condition goto block_026A; + + block_01B6: + class_0A1E_slot_23(0x1000, item); + if (!Item.getFrame(item)) goto block_0266; + + block_01D8: + if ((Intrinsic0016(item) != 0x017F) || (Intrinsic0016(item) != 0x0141)) goto block_0234; + + block_01FF: + spawn class_0A1E_slot_28(pid, 0, 2, item); + suspend; + goto block_0266; + + block_0234: + spawn class_0A1E_slot_28(pid, 0, 1, item); + suspend; + + block_0266: + /* loopnext */ + goto block_01B3; + + block_026A: + + block_026C: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FIGHT_NS/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/FIGHT_NS/slot_06_gotHit.txt new file mode 100644 index 0000000..0f6cffb --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FIGHT_NS/slot_06_gotHit.txt @@ -0,0 +1,75 @@ +function fight_ns_gotHit() /* entry=71 class_id=0x017F slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 0x1000) goto block_010A; + + block_0104: + goto block_026C; + + block_010A: + class_0A0C_slot_2C(vel, ref); + if (!retval) goto block_0126; + + block_0120: + goto block_026C; + + block_0126: + spawn class_0A1E_slot_27(pid, 0x00C8, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_018A; + + block_0157: + class_0A0C_slot_20(1); + if retval goto block_0177; + + block_0167: + goto block_0184; + + block_0177: + + block_0184: + goto block_026C; + + block_018A: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x44 */ + /* loop current_var=0xFE string_bytes=0xA loop_type=0x2 */ + + block_01B3: + if condition goto block_026A; + + block_01B6: + class_0A1E_slot_23(0x1000, item); + if (!Item.getFrame(item)) goto block_0266; + + block_01D8: + if ((Intrinsic0016(item) != 0x017F) || (Intrinsic0016(item) != 0x0141)) goto block_0234; + + block_01FF: + spawn class_0A1E_slot_28(pid, 0, 2, item); + suspend; + goto block_0266; + + block_0234: + spawn class_0A1E_slot_28(pid, 0, 1, item); + suspend; + + block_0266: + /* loopnext */ + goto block_01B3; + + block_026A: + + block_026C: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FLAME/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/FLAME/slot_20_slot_20.txt new file mode 100644 index 0000000..e7093bb --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FLAME/slot_20_slot_20.txt @@ -0,0 +1,59 @@ +function flame_slot_20() /* entry=381 class_id=0x0A0B slot=0x20 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + detect, /* [BP-03h] type=0x62 */ + n; /* [BP-05h] type=0x24 */ + + entry: + set_info(0x0001, *(arg_06)); + + block_00F6: + suspend; + detect = 0; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x3A */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0127: + if condition goto block_018E; + + block_012A: + if Item.isNpc(item) goto block_018A; + + block_0139: + if Item.overlaps(*(arg_06), item) goto block_018A; + + block_014C: + n = item; + class_0A11_slot_2B(n); + if (!retval) goto block_0183; + + block_0167: + + block_0183: + detect = 1; + + block_018A: + /* loopnext */ + goto block_0127; + + block_018E: + spawn class_0A0C_slot_32(pid, 30, 0x00000000); + suspend; + if (!detect) goto block_01D3; + + block_01BF: + class_0A1E_slot_24(4, arg_06); + goto block_01D6; + + block_01D3: + goto block_00F6; + + block_01D6: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FLAME/slot_21_slot_21.txt b/USECODE/EUSECODE_extracted/pseudocode/FLAME/slot_21_slot_21.txt new file mode 100644 index 0000000..a494ed1 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FLAME/slot_21_slot_21.txt @@ -0,0 +1,39 @@ +function flame_slot_21() /* entry=381 class_id=0x0A0B slot=0x21 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + n; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x0001, *(arg_06)); + n = ref; + if (Item.getStatus(arg_06) & 4) goto block_023E; + + block_0238: + goto block_02AF; + + block_023E: + class_0A1E_slot_23(4, arg_06); + + block_024C: + suspend; + if (ref < 0x00FF) goto block_02AC; + + block_0268: + class_0A11_slot_2B(n); + if (!retval) goto block_0298; + + block_027C: + + block_0298: + spawn class_0A0B_slot_20(arg_06); + goto block_02AF; + + block_02AC: + goto block_024C; + + block_02AF: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FLAME1/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/FLAME1/slot_06_gotHit.txt new file mode 100644 index 0000000..4ae6522 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FLAME1/slot_06_gotHit.txt @@ -0,0 +1,15 @@ +function flame1_gotHit() /* entry=235 class_id=0x043B slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A0B_slot_21(pid, ref, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FLAME1/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/FLAME1/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..6082088 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FLAME1/slot_0F_enterFastArea.txt @@ -0,0 +1,8 @@ +function flame1_enterFastArea() /* entry=235 class_id=0x043B slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FLAME2/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/FLAME2/slot_06_gotHit.txt new file mode 100644 index 0000000..30614f0 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FLAME2/slot_06_gotHit.txt @@ -0,0 +1,15 @@ +function flame2_gotHit() /* entry=297 class_id=0x050A slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A0B_slot_21(pid, ref, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FLAME2/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/FLAME2/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..365cd04 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FLAME2/slot_0F_enterFastArea.txt @@ -0,0 +1,8 @@ +function flame2_enterFastArea() /* entry=297 class_id=0x050A slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FLAMEBOX/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/FLAMEBOX/slot_0A_equip.txt new file mode 100644 index 0000000..10f7b4c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FLAMEBOX/slot_0A_equip.txt @@ -0,0 +1,91 @@ +function flamebox_equip() /* entry=229 class_id=0x0403 slot=0x0A */ +{ + var + referent, /* [BP+00h] type=0x69 */ + event, /* [BP+0Ah] type=0x69 */ + flame, /* [BP-02h] type=0x24 */ + flame2, /* [BP-04h] type=0x24 */ + direction; /* [BP-06h] type=0x69 */ + + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (event != 0) goto block_01D0; + + block_00FF: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x44 */ + /* loop current_var=0xFE string_bytes=0xA loop_type=0x2 */ + + block_0128: + if condition goto block_01CB; + + block_012B: + if (Item.getUnkEggType(flame) != Item.getUnkEggType(arg_06)) goto block_01C7; + + block_0147: + if (Item.getStatus(flame) & 0x1000) goto block_015D; + + block_015A: + goto block_01C7; + + block_015D: + if ((Intrinsic0016(flame) != 0x043B) || (Intrinsic0016(flame) != 0x043A)) goto block_0192; + + block_017B: + spawn class_0403_slot_21(0, flame, arg_06); + goto block_01C7; + + block_0192: + if ((Intrinsic0016(flame) != 0x050A) || (Intrinsic0016(flame) != 0x0518)) goto block_01C7; + + block_01B0: + spawn class_0403_slot_21(1, flame, arg_06); + goto block_01C7; + + block_01C7: + /* loopnext */ + goto block_0128; + + block_01CB: + goto block_030A; + + block_01D0: + if (event != 1) goto block_030A; + + block_01D8: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_01F8: + if condition goto block_0305; + + block_01FB: + if (Item.getUnkEggType(flame) != Item.getUnkEggType(arg_06)) goto block_0301; + + block_0217: + if (Intrinsic0016(flame) != 0x0439) goto block_028C; + + block_0227: + spawn class_0403_slot_20(0, flame2, arg_06); + goto block_0301; + + block_028C: + if (Intrinsic0016(flame) != 0x0438) goto block_0301; + + block_029C: + spawn class_0403_slot_20(1, flame2, arg_06); + goto block_0301; + + block_0301: + /* loopnext */ + goto block_01F8; + + block_0305: + goto block_030A; + + block_030A: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FLAMEBOX/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/FLAMEBOX/slot_20_slot_20.txt new file mode 100644 index 0000000..2e80522 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FLAMEBOX/slot_20_slot_20.txt @@ -0,0 +1,57 @@ +function flamebox_slot_20() /* entry=229 class_id=0x0403 slot=0x20 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + flame, /* [BP+0Ah] type=0x24 */ + direction, /* [BP+0Ch] type=0x69 */ + count, /* [BP-02h] type=0x69 */ + flame2; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x00F0, *(arg_06)); + if Item.getQHi() goto block_03B9; + + block_036E: + if ((Item.getFrame(flame) != 5) && (Intrinsic0007(flame) != 1)) goto block_03B9; + + block_0390: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_036E; + + block_03B9: + class_0A1E_slot_23(4, flame); + spawn class_0A0B_slot_20(flame); + if (direction != 0) goto block_040E; + + block_03DD: + if Item.getQHi() goto block_03FB; + + block_03E8: + goto block_040B; + + block_03FB: + + block_040B: + goto block_0447; + + block_040E: + if (direction != 1) goto block_0447; + + block_0416: + if Item.getQHi() goto block_0434; + + block_0421: + goto block_0444; + + block_0434: + + block_0444: + goto block_0447; + + block_0447: + class_0A1E_slot_23(4, flame2); + spawn class_0A0B_slot_20(flame2); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FLAMEBOX/slot_21_slot_21.txt b/USECODE/EUSECODE_extracted/pseudocode/FLAMEBOX/slot_21_slot_21.txt new file mode 100644 index 0000000..66f7f37 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FLAMEBOX/slot_21_slot_21.txt @@ -0,0 +1,75 @@ +function flamebox_slot_21() /* entry=229 class_id=0x0403 slot=0x21 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + flame, /* [BP+0Ah] type=0x24 */ + direction, /* [BP+0Ch] type=0x69 */ + count, /* [BP-02h] type=0x69 */ + flame2, /* [BP-04h] type=0x24 */ + newType; /* [BP-06h] type=0x69 */ + + entry: + set_info(1, *(arg_06)); + class_0A1E_slot_23(0x1000, flame); + if Item.getQHi() goto block_05E5; + + block_0528: + if ((Intrinsic0016(flame) != 0x043A) || (Intrinsic0016(flame) != 0x0518)) goto block_059A; + + block_054C: + if ((Item.getFrame(flame) != 5) && (Intrinsic0007(flame) != 1)) goto block_0597; + + block_056E: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_054C; + + block_0597: + goto block_05E5; + + block_059A: + if ((Item.getFrame(flame) != 27) && (Intrinsic0007(flame) != 1)) goto block_05E5; + + block_05BC: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_059A; + + block_05E5: + if (direction != 0) goto block_0608; + + block_05ED: + newType = 0x0439; + goto block_062B; + + block_0608: + if (direction != 1) goto block_062B; + + block_0610: + newType = 0x0438; + goto block_062B; + + block_062B: + class_0A1E_slot_23(0x1000, flame2); + if Item.getQHi() goto block_06F4; + + block_06A6: + if ((Item.getFrame(flame2) != 4) && (Intrinsic0007(flame2) != 1)) goto block_06F1; + + block_06C8: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_06A6; + + block_06F1: + goto block_071B; + + block_06F4: + spawn class_0A0C_slot_32(pid, 0x00C8, 0x00000000); + suspend; + + block_071B: + class_0A1E_slot_24(0x1000, flame2); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FLAMELP/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/FLAMELP/slot_06_gotHit.txt new file mode 100644 index 0000000..b78e105 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FLAMELP/slot_06_gotHit.txt @@ -0,0 +1,15 @@ +function flamelp_gotHit() /* entry=299 class_id=0x0516 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A0B_slot_21(pid, ref, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FLAMELP/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/FLAMELP/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..559e697 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FLAMELP/slot_0F_enterFastArea.txt @@ -0,0 +1,8 @@ +function flamelp_enterFastArea() /* entry=299 class_id=0x0516 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FLICTEST/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/FLICTEST/slot_20_slot_20.txt new file mode 100644 index 0000000..ccd41e2 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FLICTEST/slot_20_slot_20.txt @@ -0,0 +1,1551 @@ +function flictest_slot_20() /* entry=402 class_id=0x0A20 slot=0x20 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + keycode; /* [BP-02h] type=0x69 */ + + entry: + set_info(1, *(arg_06)); + keycode = Item.getQHi(0); + if (keycode != 1) goto block_013F; + + block_010E: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_013F: + if (keycode != 2) goto block_0178; + + block_0147: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0178: + if (keycode != 3) goto block_01B1; + + block_0180: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_01B1: + if (keycode != 4) goto block_01EA; + + block_01B9: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_01EA: + if (keycode != 5) goto block_0223; + + block_01F2: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0223: + if (keycode != 6) goto block_025C; + + block_022B: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_025C: + if (keycode != 7) goto block_0295; + + block_0264: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0295: + if (keycode != 8) goto block_02CE; + + block_029D: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_02CE: + if (keycode != 9) goto block_0307; + + block_02D6: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0307: + if (keycode != 10) goto block_0340; + + block_030F: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0340: + if (keycode != 11) goto block_0379; + + block_0348: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0379: + if (keycode != 12) goto block_03B2; + + block_0381: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_03B2: + if (keycode != 13) goto block_03EB; + + block_03BA: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_03EB: + if (keycode != 14) goto block_0424; + + block_03F3: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0424: + if (keycode != 15) goto block_045D; + + block_042C: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_045D: + if (keycode != 16) goto block_0496; + + block_0465: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0496: + if (keycode != 17) goto block_04CF; + + block_049E: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_04CF: + if (keycode != 18) goto block_0508; + + block_04D7: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0508: + if (keycode != 19) goto block_0541; + + block_0510: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0541: + if (keycode != 20) goto block_057A; + + block_0549: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_057A: + if (keycode != 21) goto block_05B3; + + block_0582: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_05B3: + if (keycode != 22) goto block_05EC; + + block_05BB: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_05EC: + if (keycode != 23) goto block_0625; + + block_05F4: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0625: + if (keycode != 24) goto block_065E; + + block_062D: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_065E: + if (keycode != 25) goto block_0697; + + block_0666: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0697: + if (keycode != 26) goto block_06D0; + + block_069F: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_06D0: + if (keycode != 27) goto block_0709; + + block_06D8: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0709: + if (keycode != 28) goto block_0742; + + block_0711: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0742: + if (keycode != 29) goto block_077B; + + block_074A: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_077B: + if (keycode != 30) goto block_07B4; + + block_0783: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_07B4: + if (keycode != 31) goto block_07ED; + + block_07BC: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_07ED: + if (keycode != 32) goto block_0826; + + block_07F5: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0826: + if (keycode != 33) goto block_085F; + + block_082E: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_085F: + if (keycode != 34) goto block_0898; + + block_0867: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0898: + if (keycode != 35) goto block_08D1; + + block_08A0: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_08D1: + if (keycode != 36) goto block_090A; + + block_08D9: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_090A: + if (keycode != 37) goto block_0943; + + block_0912: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0943: + if (keycode != 38) goto block_097C; + + block_094B: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_097C: + if (keycode != 39) goto block_09B5; + + block_0984: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_09B5: + if (keycode != 40) goto block_09EE; + + block_09BD: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_09EE: + if (keycode != 41) goto block_0A27; + + block_09F6: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0A27: + if (keycode != 42) goto block_0A60; + + block_0A2F: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0A60: + if (keycode != 43) goto block_0A99; + + block_0A68: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0A99: + if (keycode != 44) goto block_0AD2; + + block_0AA1: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0AD2: + if (keycode != 45) goto block_0B0B; + + block_0ADA: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0B0B: + if (keycode != 46) goto block_0B44; + + block_0B13: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0B44: + if (keycode != 47) goto block_0B7D; + + block_0B4C: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0B7D: + if (keycode != 48) goto block_0BB6; + + block_0B85: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0BB6: + if (keycode != 49) goto block_0BEF; + + block_0BBE: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0BEF: + if (keycode != 50) goto block_0C28; + + block_0BF7: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0C28: + if (keycode != 51) goto block_0C61; + + block_0C30: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0C61: + if (keycode != 52) goto block_0C9A; + + block_0C69: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0C9A: + if (keycode != 53) goto block_0CD3; + + block_0CA2: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0CD3: + if (keycode != 54) goto block_0D0C; + + block_0CDB: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0D0C: + if (keycode != 55) goto block_0D45; + + block_0D14: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0D45: + if (keycode != 56) goto block_0D7E; + + block_0D4D: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0D7E: + if (keycode != 57) goto block_0DB7; + + block_0D86: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0DB7: + if (keycode != 58) goto block_0DF0; + + block_0DBF: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0DF0: + if (keycode != 59) goto block_0E29; + + block_0DF8: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0E29: + if (keycode != 60) goto block_0E62; + + block_0E31: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0E62: + if (keycode != 61) goto block_0E9B; + + block_0E6A: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0E9B: + if (keycode != 62) goto block_0ED4; + + block_0EA3: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0ED4: + if (keycode != 63) goto block_0F0D; + + block_0EDC: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0F0D: + if (keycode != 64) goto block_0F46; + + block_0F15: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0F46: + if (keycode != 65) goto block_0F7F; + + block_0F4E: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0F7F: + if (keycode != 66) goto block_0FB8; + + block_0F87: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0FB8: + if (keycode != 67) goto block_0FF1; + + block_0FC0: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_0FF1: + if (keycode != 68) goto block_102A; + + block_0FF9: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_102A: + if (keycode != 69) goto block_1063; + + block_1032: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1063: + if (keycode != 70) goto block_109C; + + block_106B: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_109C: + if (keycode != 71) goto block_10D5; + + block_10A4: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_10D5: + if (keycode != 72) goto block_110E; + + block_10DD: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_110E: + if (keycode != 73) goto block_1147; + + block_1116: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1147: + if (keycode != 74) goto block_1180; + + block_114F: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1180: + if (keycode != 75) goto block_11B9; + + block_1188: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_11B9: + if (keycode != 76) goto block_11F2; + + block_11C1: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_11F2: + if (keycode != 77) goto block_122B; + + block_11FA: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_122B: + if (keycode != 78) goto block_1264; + + block_1233: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1264: + if (keycode != 79) goto block_129D; + + block_126C: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_129D: + if (keycode != 80) goto block_12D6; + + block_12A5: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_12D6: + if (keycode != 81) goto block_130F; + + block_12DE: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_130F: + if (keycode != 82) goto block_1348; + + block_1317: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1348: + if (keycode != 83) goto block_1381; + + block_1350: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1381: + if (keycode != 84) goto block_13BA; + + block_1389: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_13BA: + if (keycode != 85) goto block_13F3; + + block_13C2: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_13F3: + if (keycode != 86) goto block_142C; + + block_13FB: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_142C: + if (keycode != 87) goto block_1465; + + block_1434: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1465: + if (keycode != 88) goto block_149E; + + block_146D: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_149E: + if (keycode != 89) goto block_14D7; + + block_14A6: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_14D7: + if (keycode != 90) goto block_1510; + + block_14DF: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1510: + if (keycode != 91) goto block_1549; + + block_1518: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1549: + if (keycode != 92) goto block_1582; + + block_1551: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1582: + if (keycode != 93) goto block_15BB; + + block_158A: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_15BB: + if (keycode != 94) goto block_15F4; + + block_15C3: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_15F4: + if (keycode != 95) goto block_162D; + + block_15FC: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_162D: + if (keycode != 96) goto block_1666; + + block_1635: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1666: + if (keycode != 97) goto block_169F; + + block_166E: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_169F: + if (keycode != 98) goto block_16D8; + + block_16A7: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_16D8: + if (keycode != 99) goto block_1711; + + block_16E0: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1711: + if (keycode != 100) goto block_174A; + + block_1719: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_174A: + if (keycode != 101) goto block_1783; + + block_1752: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1783: + if (keycode != 102) goto block_17BC; + + block_178B: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_17BC: + if (keycode != 103) goto block_17F5; + + block_17C4: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_17F5: + if (keycode != 104) goto block_182E; + + block_17FD: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_182E: + if (keycode != 105) goto block_1867; + + block_1836: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1867: + if (keycode != 106) goto block_18A0; + + block_186F: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_18A0: + if (keycode != 107) goto block_18D9; + + block_18A8: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_18D9: + if (keycode != 108) goto block_1912; + + block_18E1: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1912: + if (keycode != 109) goto block_194B; + + block_191A: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_194B: + if (keycode != 110) goto block_1984; + + block_1953: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1984: + if (keycode != 111) goto block_19BD; + + block_198C: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_19BD: + if (keycode != 112) goto block_19F6; + + block_19C5: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_19F6: + if (keycode != 113) goto block_1A2F; + + block_19FE: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1A2F: + if (keycode != 114) goto block_1A68; + + block_1A37: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1A68: + if (keycode != 115) goto block_1AA1; + + block_1A70: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1AA1: + if (keycode != 116) goto block_1ADA; + + block_1AA9: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1ADA: + if (keycode != 117) goto block_1B13; + + block_1AE2: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1B13: + if (keycode != 118) goto block_1B4C; + + block_1B1B: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1B4C: + if (keycode != 119) goto block_1B85; + + block_1B54: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1B85: + if (keycode != 120) goto block_1BBE; + + block_1B8D: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1BBE: + if (keycode != 121) goto block_1BF7; + + block_1BC6: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1BF7: + if (keycode != 122) goto block_1C30; + + block_1BFF: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1C30: + if (keycode != 123) goto block_1C69; + + block_1C38: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1C69: + if (keycode != 124) goto block_1CA2; + + block_1C71: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1CA2: + if (keycode != 125) goto block_1CDB; + + block_1CAA: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1CDB: + if (keycode != 126) goto block_1D14; + + block_1CE3: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1D14: + if (keycode != 127) goto block_1D4D; + + block_1D1C: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1D4D: + if (keycode != 0x0080) goto block_1D87; + + block_1D56: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1D87: + if (keycode != 0x0081) goto block_1DC1; + + block_1D90: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1DC1: + if (keycode != 0x0082) goto block_1DFB; + + block_1DCA: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1DFB: + if (keycode != 0x0083) goto block_1E35; + + block_1E04: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1E35: + if (keycode != 0x0084) goto block_1E6F; + + block_1E3E: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1E6F: + if (keycode != 0x0085) goto block_1EA9; + + block_1E78: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1EA9: + if (keycode != 0x0086) goto block_1EE3; + + block_1EB2: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1EE3: + if (keycode != 0x0087) goto block_1F1D; + + block_1EEC: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1F1D: + if (keycode != 0x0088) goto block_1F5C; + + block_1F26: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1F5C: + if (keycode != 0x0089) goto block_1F96; + + block_1F65: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1F96: + if (keycode != 0x008A) goto block_1FD0; + + block_1F9F: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_1FD0: + if (keycode != 0x008B) goto block_200C; + + block_1FD9: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_200C: + if (keycode != 0x008C) goto block_2049; + + block_2015: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_2049: + if (keycode != 0x008D) goto block_2086; + + block_2052: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_2086: + if (keycode != 0x008E) goto block_20C2; + + block_208F: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_20C2: + if (keycode != 0x008F) goto block_20FF; + + block_20CB: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_20FF: + if (keycode != 0x0090) goto block_213C; + + block_2108: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_213C: + if (keycode != 0x0091) goto block_2178; + + block_2145: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_2178: + if (keycode != 0x0092) goto block_21B4; + + block_2181: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_21B4: + if (keycode != 0x0093) goto block_21F0; + + block_21BD: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_21F0: + if (keycode != 0x0094) goto block_222C; + + block_21F9: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_222C: + if (keycode != 0x0095) goto block_2268; + + block_2235: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_2268: + if (keycode != 0x0096) goto block_22A5; + + block_2271: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_22A5: + if (keycode != 0x0097) goto block_22E2; + + block_22AE: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_22E2: + if (keycode != 0x0098) goto block_231F; + + block_22EB: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_231F: + if (keycode != 0x0099) goto block_235C; + + block_2328: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_235C: + if (keycode != 0x009A) goto block_2398; + + block_2365: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_2398: + if (keycode != 0x009B) goto block_23D4; + + block_23A1: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_23D4: + if (keycode != 0x009C) goto block_2411; + + block_23DD: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_2411: + if (keycode != 0x009D) goto block_244E; + + block_241A: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_244E: + if (keycode != 0x009E) goto block_248B; + + block_2457: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_248B: + if (keycode != 0x009F) goto block_24C5; + + block_2494: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_24C5: + if (keycode != 0x00A0) goto block_24FF; + + block_24CE: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_24FF: + if (keycode != 0x00A1) goto block_2539; + + block_2508: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_2539: + if (keycode != 0x00A2) goto block_2573; + + block_2542: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_2573: + if (keycode != 0x00A3) goto block_25B2; + + block_257C: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_25B2: + if (keycode != 0x00A4) goto block_25EC; + + block_25BB: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_25EC: + if (keycode != 0x00A5) goto block_2627; + + block_25F5: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_2627: + if (keycode != 0x00A6) goto block_2660; + + block_2630: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_2660: + if (keycode != 0x00A7) goto block_2699; + + block_2669: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_2699: + if (keycode != 0x00A8) goto block_26D2; + + block_26A2: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_26D2: + if (keycode != 0x00A9) goto block_270C; + + block_26DB: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_270C: + if (keycode != 0x00AA) goto block_2746; + + block_2715: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_2746: + if (keycode != 0x00AB) goto block_2780; + + block_274F: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_2780; + + block_2780: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FLICTEST/slot_21_slot_21.txt b/USECODE/EUSECODE_extracted/pseudocode/FLICTEST/slot_21_slot_21.txt new file mode 100644 index 0000000..feed10f --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FLICTEST/slot_21_slot_21.txt @@ -0,0 +1,1546 @@ +function flictest_slot_21() /* entry=402 class_id=0x0A20 slot=0x21 */ +{ + entry: + set_info(1, *(arg_06)); + if (arg_0A != 1) goto block_27F0; + + block_27BF: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_27F0: + if (arg_0A != 2) goto block_2829; + + block_27F8: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2829: + if (arg_0A != 3) goto block_2862; + + block_2831: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2862: + if (arg_0A != 4) goto block_289B; + + block_286A: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_289B: + if (arg_0A != 5) goto block_28D4; + + block_28A3: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_28D4: + if (arg_0A != 6) goto block_290D; + + block_28DC: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_290D: + if (arg_0A != 7) goto block_2946; + + block_2915: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2946: + if (arg_0A != 8) goto block_297F; + + block_294E: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_297F: + if (arg_0A != 9) goto block_29B8; + + block_2987: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_29B8: + if (arg_0A != 10) goto block_29F1; + + block_29C0: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_29F1: + if (arg_0A != 11) goto block_2A2A; + + block_29F9: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2A2A: + if (arg_0A != 12) goto block_2A63; + + block_2A32: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2A63: + if (arg_0A != 13) goto block_2A9C; + + block_2A6B: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2A9C: + if (arg_0A != 14) goto block_2AD5; + + block_2AA4: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2AD5: + if (arg_0A != 15) goto block_2B0E; + + block_2ADD: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2B0E: + if (arg_0A != 16) goto block_2B47; + + block_2B16: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2B47: + if (arg_0A != 17) goto block_2B80; + + block_2B4F: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2B80: + if (arg_0A != 18) goto block_2BB9; + + block_2B88: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2BB9: + if (arg_0A != 19) goto block_2BF2; + + block_2BC1: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2BF2: + if (arg_0A != 20) goto block_2C2B; + + block_2BFA: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2C2B: + if (arg_0A != 21) goto block_2C64; + + block_2C33: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2C64: + if (arg_0A != 22) goto block_2C9D; + + block_2C6C: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2C9D: + if (arg_0A != 23) goto block_2CD6; + + block_2CA5: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2CD6: + if (arg_0A != 24) goto block_2D0F; + + block_2CDE: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2D0F: + if (arg_0A != 25) goto block_2D48; + + block_2D17: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2D48: + if (arg_0A != 26) goto block_2D81; + + block_2D50: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2D81: + if (arg_0A != 27) goto block_2DBA; + + block_2D89: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2DBA: + if (arg_0A != 28) goto block_2DF3; + + block_2DC2: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2DF3: + if (arg_0A != 29) goto block_2E2C; + + block_2DFB: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2E2C: + if (arg_0A != 30) goto block_2E65; + + block_2E34: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2E65: + if (arg_0A != 31) goto block_2E9E; + + block_2E6D: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2E9E: + if (arg_0A != 32) goto block_2ED7; + + block_2EA6: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2ED7: + if (arg_0A != 33) goto block_2F10; + + block_2EDF: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2F10: + if (arg_0A != 34) goto block_2F49; + + block_2F18: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2F49: + if (arg_0A != 35) goto block_2F82; + + block_2F51: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2F82: + if (arg_0A != 36) goto block_2FBB; + + block_2F8A: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2FBB: + if (arg_0A != 37) goto block_2FF4; + + block_2FC3: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_2FF4: + if (arg_0A != 38) goto block_302D; + + block_2FFC: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_302D: + if (arg_0A != 39) goto block_3066; + + block_3035: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3066: + if (arg_0A != 40) goto block_309F; + + block_306E: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_309F: + if (arg_0A != 41) goto block_30D8; + + block_30A7: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_30D8: + if (arg_0A != 42) goto block_3111; + + block_30E0: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3111: + if (arg_0A != 43) goto block_314A; + + block_3119: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_314A: + if (arg_0A != 44) goto block_3183; + + block_3152: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3183: + if (arg_0A != 45) goto block_31BC; + + block_318B: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_31BC: + if (arg_0A != 46) goto block_31F5; + + block_31C4: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_31F5: + if (arg_0A != 47) goto block_322E; + + block_31FD: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_322E: + if (arg_0A != 48) goto block_3267; + + block_3236: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3267: + if (arg_0A != 59) goto block_32A0; + + block_326F: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_32A0: + if (arg_0A != 50) goto block_32D9; + + block_32A8: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_32D9: + if (arg_0A != 51) goto block_3312; + + block_32E1: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3312: + if (arg_0A != 52) goto block_334B; + + block_331A: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_334B: + if (arg_0A != 53) goto block_3384; + + block_3353: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3384: + if (arg_0A != 54) goto block_33BD; + + block_338C: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_33BD: + if (arg_0A != 55) goto block_33F6; + + block_33C5: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_33F6: + if (arg_0A != 56) goto block_342F; + + block_33FE: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_342F: + if (arg_0A != 57) goto block_3468; + + block_3437: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3468: + if (arg_0A != 58) goto block_34A1; + + block_3470: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_34A1: + if (arg_0A != 59) goto block_34DA; + + block_34A9: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_34DA: + if (arg_0A != 60) goto block_3513; + + block_34E2: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3513: + if (arg_0A != 61) goto block_354C; + + block_351B: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_354C: + if (arg_0A != 62) goto block_3585; + + block_3554: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3585: + if (arg_0A != 63) goto block_35BE; + + block_358D: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_35BE: + if (arg_0A != 64) goto block_35F7; + + block_35C6: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_35F7: + if (arg_0A != 65) goto block_3630; + + block_35FF: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3630: + if (arg_0A != 66) goto block_3669; + + block_3638: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3669: + if (arg_0A != 67) goto block_36A2; + + block_3671: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_36A2: + if (arg_0A != 68) goto block_36DB; + + block_36AA: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_36DB: + if (arg_0A != 69) goto block_3714; + + block_36E3: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3714: + if (arg_0A != 70) goto block_374D; + + block_371C: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_374D: + if (arg_0A != 71) goto block_3786; + + block_3755: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3786: + if (arg_0A != 72) goto block_37BF; + + block_378E: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_37BF: + if (arg_0A != 73) goto block_37F8; + + block_37C7: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_37F8: + if (arg_0A != 74) goto block_3831; + + block_3800: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3831: + if (arg_0A != 75) goto block_386A; + + block_3839: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_386A: + if (arg_0A != 76) goto block_38A3; + + block_3872: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_38A3: + if (arg_0A != 77) goto block_38DC; + + block_38AB: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_38DC: + if (arg_0A != 78) goto block_3915; + + block_38E4: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3915: + if (arg_0A != 79) goto block_394E; + + block_391D: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_394E: + if (arg_0A != 80) goto block_3987; + + block_3956: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3987: + if (arg_0A != 81) goto block_39C0; + + block_398F: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_39C0: + if (arg_0A != 82) goto block_39F9; + + block_39C8: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_39F9: + if (arg_0A != 83) goto block_3A32; + + block_3A01: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3A32: + if (arg_0A != 84) goto block_3A6B; + + block_3A3A: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3A6B: + if (arg_0A != 85) goto block_3AA4; + + block_3A73: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3AA4: + if (arg_0A != 86) goto block_3ADD; + + block_3AAC: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3ADD: + if (arg_0A != 87) goto block_3B16; + + block_3AE5: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3B16: + if (arg_0A != 88) goto block_3B4F; + + block_3B1E: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3B4F: + if (arg_0A != 89) goto block_3B88; + + block_3B57: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3B88: + if (arg_0A != 90) goto block_3BC1; + + block_3B90: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3BC1: + if (arg_0A != 91) goto block_3BFA; + + block_3BC9: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3BFA: + if (arg_0A != 92) goto block_3C33; + + block_3C02: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3C33: + if (arg_0A != 93) goto block_3C6C; + + block_3C3B: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3C6C: + if (arg_0A != 94) goto block_3CA5; + + block_3C74: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3CA5: + if (arg_0A != 95) goto block_3CDE; + + block_3CAD: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3CDE: + if (arg_0A != 96) goto block_3D17; + + block_3CE6: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3D17: + if (arg_0A != 97) goto block_3D50; + + block_3D1F: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3D50: + if (arg_0A != 98) goto block_3D89; + + block_3D58: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3D89: + if (arg_0A != 99) goto block_3DC2; + + block_3D91: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3DC2: + if (arg_0A != 100) goto block_3DFB; + + block_3DCA: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3DFB: + if (arg_0A != 101) goto block_3E34; + + block_3E03: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3E34: + if (arg_0A != 102) goto block_3E6D; + + block_3E3C: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3E6D: + if (arg_0A != 103) goto block_3EA6; + + block_3E75: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3EA6: + if (arg_0A != 104) goto block_3EDF; + + block_3EAE: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3EDF: + if (arg_0A != 105) goto block_3F18; + + block_3EE7: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3F18: + if (arg_0A != 106) goto block_3F51; + + block_3F20: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3F51: + if (arg_0A != 107) goto block_3F8A; + + block_3F59: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3F8A: + if (arg_0A != 108) goto block_3FC3; + + block_3F92: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3FC3: + if (arg_0A != 109) goto block_3FFC; + + block_3FCB: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_3FFC: + if (arg_0A != 110) goto block_4035; + + block_4004: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4035: + if (arg_0A != 111) goto block_406E; + + block_403D: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_406E: + if (arg_0A != 112) goto block_40A7; + + block_4076: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_40A7: + if (arg_0A != 113) goto block_40E0; + + block_40AF: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_40E0: + if (arg_0A != 114) goto block_4119; + + block_40E8: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4119: + if (arg_0A != 115) goto block_4152; + + block_4121: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4152: + if (arg_0A != 116) goto block_418B; + + block_415A: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_418B: + if (arg_0A != 117) goto block_41C4; + + block_4193: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_41C4: + if (arg_0A != 118) goto block_41FD; + + block_41CC: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_41FD: + if (arg_0A != 119) goto block_4236; + + block_4205: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4236: + if (arg_0A != 120) goto block_426F; + + block_423E: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_426F: + if (arg_0A != 121) goto block_42A8; + + block_4277: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_42A8: + if (arg_0A != 122) goto block_42E1; + + block_42B0: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_42E1: + if (arg_0A != 123) goto block_431A; + + block_42E9: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_431A: + if (arg_0A != 124) goto block_4353; + + block_4322: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4353: + if (arg_0A != 125) goto block_438C; + + block_435B: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_438C: + if (arg_0A != 126) goto block_43C5; + + block_4394: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_43C5: + if (arg_0A != 127) goto block_43FE; + + block_43CD: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_43FE: + if (arg_0A != 0x0080) goto block_4438; + + block_4407: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4438: + if (arg_0A != 0x0081) goto block_4472; + + block_4441: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4472: + if (arg_0A != 0x0082) goto block_44AC; + + block_447B: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_44AC: + if (arg_0A != 0x0083) goto block_44E6; + + block_44B5: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_44E6: + if (arg_0A != 0x0084) goto block_4520; + + block_44EF: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4520: + if (arg_0A != 0x0085) goto block_455A; + + block_4529: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_455A: + if (arg_0A != 0x0086) goto block_4594; + + block_4563: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4594: + if (arg_0A != 0x0087) goto block_45CE; + + block_459D: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_45CE: + if (arg_0A != 0x0088) goto block_460D; + + block_45D7: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_460D: + if (arg_0A != 0x0089) goto block_4647; + + block_4616: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4647: + if (arg_0A != 0x008A) goto block_4681; + + block_4650: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4681: + if (arg_0A != 0x008B) goto block_46BD; + + block_468A: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_46BD: + if (arg_0A != 0x008C) goto block_46FA; + + block_46C6: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_46FA: + if (arg_0A != 0x008D) goto block_4737; + + block_4703: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4737: + if (arg_0A != 0x008E) goto block_4773; + + block_4740: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4773: + if (arg_0A != 0x008F) goto block_47B0; + + block_477C: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_47B0: + if (arg_0A != 0x0090) goto block_47ED; + + block_47B9: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_47ED: + if (arg_0A != 0x0091) goto block_4829; + + block_47F6: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4829: + if (arg_0A != 0x0092) goto block_4865; + + block_4832: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4865: + if (arg_0A != 0x0093) goto block_48A1; + + block_486E: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_48A1: + if (arg_0A != 0x0094) goto block_48DD; + + block_48AA: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_48DD: + if (arg_0A != 0x0095) goto block_4919; + + block_48E6: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4919: + if (arg_0A != 0x0096) goto block_4956; + + block_4922: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4956: + if (arg_0A != 0x0097) goto block_4993; + + block_495F: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4993: + if (arg_0A != 0x0098) goto block_49D0; + + block_499C: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_49D0: + if (arg_0A != 0x0099) goto block_4A0D; + + block_49D9: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4A0D: + if (arg_0A != 0x009A) goto block_4A49; + + block_4A16: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4A49: + if (arg_0A != 0x009B) goto block_4A85; + + block_4A52: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4A85: + if (arg_0A != 0x009C) goto block_4AC2; + + block_4A8E: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4AC2: + if (arg_0A != 0x009D) goto block_4AFF; + + block_4ACB: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4AFF: + if (arg_0A != 0x009E) goto block_4B3C; + + block_4B08: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4B3C: + if (arg_0A != 0x009F) goto block_4B76; + + block_4B45: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4B76: + if (arg_0A != 0x00A0) goto block_4BB0; + + block_4B7F: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4BB0: + if (arg_0A != 0x00A1) goto block_4BEA; + + block_4BB9: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4BEA: + if (arg_0A != 0x00A2) goto block_4C24; + + block_4BF3: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4C24: + if (arg_0A != 0x00A3) goto block_4C63; + + block_4C2D: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4C63: + if (arg_0A != 0x00A4) goto block_4C9D; + + block_4C6C: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4C9D: + if (arg_0A != 0x00A5) goto block_4CD8; + + block_4CA6: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4CD8: + if (arg_0A != 0x00A6) goto block_4D11; + + block_4CE1: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4D11: + if (arg_0A != 0x00A7) goto block_4D4A; + + block_4D1A: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4D4A: + if (arg_0A != 0x00A8) goto block_4D83; + + block_4D53: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4D83: + if (arg_0A != 0x00A9) goto block_4DBD; + + block_4D8C: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4DBD: + if (arg_0A != 0x00AA) goto block_4DF7; + + block_4DC6: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4DF7: + if (arg_0A != 0x00AB) goto block_4E31; + + block_4E00: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_4E31; + + block_4E31: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FLOOR1/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/FLOOR1/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..3b2194d --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FLOOR1/slot_0F_enterFastArea.txt @@ -0,0 +1,208 @@ +function floor1_enterFastArea() /* entry=342 class_id=0x0902 slot=0x0F */ +{ + var + referent, /* [BP+00h] type=0x69 */ + counter, /* [BP-02h] type=0x69 */ + item, /* [BP-04h] type=0x24 */ + item2, /* [BP-06h] type=0x24 */ + highNumber, /* [BP-08h] type=0x69 */ + lowNumber, /* [BP-0Ah] type=0x69 */ + tempNumber, /* [BP-0Ch] type=0x69 */ + floorItems, /* [BP-0Eh] type=0x6C */ + wantToStop, /* [BP-10h] type=0x69 */ + foundFloor, /* [BP-12h] type=0x69 */ + onTime, /* [BP-14h] type=0x69 */ + id, /* [BP-16h] type=0x69 */ + n; /* [BP-18h] type=0x24 */ + + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + counter = 0; + highNumber = 0; + lowNumber = 0x0100; + tempNumber = 0; + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + id = Intrinsic003F(arg_06); + onTime = (id * 10); + if (onTime != 0) goto block_015B; + + block_0154: + onTime = 5; + + block_015B: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */ + + block_017B: + if condition goto block_01F9; + + block_017E: + foundFloor = 1; + tempNumber = Item.getUnkEggType(item); + if ((tempNumber > 0) && (tempNumber < 0x00FA)) goto block_01F5; + + block_01A8: + if (highNumber < tempNumber) goto block_01C0; + + block_01B9: + highNumber = tempNumber; + + block_01C0: + if (lowNumber > tempNumber) goto block_01D8; + + block_01D1: + lowNumber = tempNumber; + + block_01D8: + /* create_list element_size=0x2 count=0x1 */ + /* append_list */ + /* free_local_list bp_offset=0xF2 target=[BP-0Eh] */ + floorItems = item; + + block_01F5: + /* loopnext */ + goto block_017B; + + block_01F9: + if (!foundFloor) goto block_020A; + + block_0204: + goto block_0498; + + block_020A: + if 1 goto block_0498; + + block_0212: + wantToStop = 0; + counter = lowNumber; + + block_0220: + if (counter <= highNumber) goto block_03E5; + + block_022B: + + block_0234: + foreach_list item -> block_02FF; + + block_0239: + if (Item.getStatus(item) & 0x1000) goto block_0259; + + block_024C: + wantToStop = 1; + goto block_03E5; + + block_0259: + if (Item.getUnkEggType(item) != counter) goto block_02F9; + + block_026B: + if (!Item.touch(112, arg_06)) goto block_029A; + + block_028D: + + block_029A: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFA string_bytes=0x1 loop_type=0x6 */ + + block_02A8: + if condition goto block_02F7; + + block_02AB: + if (Item.isNpc(item2) != 1) goto block_02F3; + + block_02BD: + n = item2; + class_0A0C_slot_20(pid, 8); + spawn class_0A11_slot_2D(retval, *(arg_06), n); + suspend; + + block_02F3: + /* loopnext */ + goto block_02A8; + + block_02F7: + + block_02F9: + goto block_0234; + + block_02FF: + if (wantToStop != 1) goto block_0310; + + block_030A: + goto block_03E5; + + block_0310: + spawn class_0A0C_slot_32(pid, onTime, 0x00000000); + suspend; + + block_0336: + if (Intrinsic00DA(arg_06) > 0) goto block_0374; + + block_034B: + spawn class_0A0C_slot_32(pid, 60, 0x00000000); + suspend; + goto block_0336; + + block_0374: + + block_037D: + foreach_list item -> block_03B2; + + block_0382: + if (Item.getUnkEggType(item) != counter) goto block_03AC; + + block_0394: + + block_03AC: + goto block_037D; + + block_03B2: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + counter = (1 + counter); + goto block_0220; + + block_03E5: + if (wantToStop != 1) goto block_0495; + + block_03F0: + + block_03F9: + foreach_list item -> block_0429; + + block_03FE: + goto block_03F9; + + block_0429: + if (wantToStop != 1) goto block_0495; + + block_0437: + spawn class_0A0C_slot_32(pid, 60, 0x00000000); + suspend; + wantToStop = 0; + + block_046D: + foreach_list item -> block_0492; + + block_0472: + if (Item.getStatus(item) & 0x1000) goto block_048C; + + block_0485: + wantToStop = 1; + + block_048C: + goto block_046D; + + block_0492: + goto block_0429; + + block_0495: + goto block_020A; + + block_0498: + /* free_local_list bp_offset=0xF2 target=[BP-0Eh] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FLOOR1/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/FLOOR1/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..3c97ca1 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FLOOR1/slot_10_leaveFastArea.txt @@ -0,0 +1,9 @@ +function floor1_leaveFastArea() /* entry=342 class_id=0x0902 slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + class_0A0C_slot_33(*(arg_06), 0x021B); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FLORMINE/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/FLORMINE/slot_06_gotHit.txt new file mode 100644 index 0000000..400d2f5 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FLORMINE/slot_06_gotHit.txt @@ -0,0 +1,52 @@ +function flormine_gotHit() /* entry=143 class_id=0x029F slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + hType, /* [BP-02h] type=0x69 */ + item; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + if (Item.getFrame(arg_06) > 1) goto block_0106; + + block_0100: + goto block_01E7; + + block_0106: + class_0A0C_slot_2C(vel, ref); + hType = retval; + if hType goto block_016C; + + block_011F: + if (hType != 4) goto block_0139; + + block_0130: + goto block_01E7; + + block_0136: + goto block_0169; + + block_0139: + + block_0169: + goto block_01E7; + + block_016C: + item = ref; + if Item.isOn(*(arg_06), item) goto block_01E7; + + block_0186: + if (((ref < 0x00FF) && (ref != Item.pop())) && (Intrinsic0007(arg_06) != 0)) goto block_01B7; + + block_01B1: + goto block_01E7; + + block_01B7: + + block_01E7: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_20_slot_20.txt new file mode 100644 index 0000000..1a16aa5 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_20_slot_20.txt @@ -0,0 +1,9 @@ +function free_slot_20() /* entry=382 class_id=0x0A0C slot=0x20 */ +{ + entry: + goto block_01C0; + + block_01C0: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_21_slot_21.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_21_slot_21.txt new file mode 100644 index 0000000..bac2ef0 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_21_slot_21.txt @@ -0,0 +1,19 @@ +function free_slot_21() /* entry=382 class_id=0x0A0C slot=0x21 */ +{ + entry: + set_info(1, 0); + /* global_address global_id=0x3C */ + + block_01F0: + /* global_address global_id=0x3C */ + if Item.touch(arg_06) goto block_022B; + + block_0202: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_01F0; + + block_022B: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_22_slot_22.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_22_slot_22.txt new file mode 100644 index 0000000..85e0b4e --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_22_slot_22.txt @@ -0,0 +1,71 @@ +function free_slot_22() /* entry=382 class_id=0x0A0C slot=0x22 */ +{ + entry: + set_info(0x022B, 0); + if global[0x0006] goto block_025E; + + block_0258: + goto block_0579; + + block_025E: + /* pop_global global_id=0x6 size=0x1 */ + + block_0267: + suspend; + spawn class_0A0C_slot_32(pid, 100, 0x00000000); + suspend; + spawn class_0A0C_slot_21(pid, 0x007F, 0x00000000); + suspend; + spawn class_0A0C_slot_21(pid, 57, 0x00000000); + suspend; + spawn class_0A0C_slot_21(pid, 60, 0x00000000); + suspend; + spawn class_0A0C_slot_32(pid, 0x1770, 0x00000000); + suspend; + spawn class_0A0C_slot_21(pid, 34, 0x00000000); + suspend; + spawn class_0A0C_slot_32(pid, 0x1770, 0x00000000); + suspend; + spawn class_0A0C_slot_21(pid, 33, 0x00000000); + suspend; + spawn class_0A0C_slot_32(pid, 0x1770, 0x00000000); + suspend; + spawn class_0A0C_slot_21(pid, 31, 0x00000000); + suspend; + spawn class_0A0C_slot_32(pid, 0x1770, 0x00000000); + suspend; + spawn class_0A0C_slot_21(pid, 26, 0x00000000); + suspend; + spawn class_0A0C_slot_32(pid, 0x0BB8, 0x00000000); + suspend; + spawn class_0A0C_slot_21(pid, 32, 0x00000000); + suspend; + spawn class_0A0C_slot_32(pid, 0x0708, 0x00000000); + suspend; + if (!global[0x0006]) goto block_04C6; + + block_04C0: + goto block_0579; + + block_04C6: + /* global_address global_id=0x3C */ + if (!Kernel.resetRef()) goto block_0576; + + block_04DA: + /* global_address global_id=0x3C */ + /* pop_global global_id=0x6 size=0x1 */ + spawn class_0A0C_slot_32(0, pid, 10, 0x00000000); + suspend; + /* str_to_ptr */ + /* global_address global_id=0x3C */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_0579; + + block_0576: + goto block_0267; + + block_0579: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_23_slot_23.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_23_slot_23.txt new file mode 100644 index 0000000..b30fad4 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_23_slot_23.txt @@ -0,0 +1,8 @@ +function free_slot_23() /* entry=382 class_id=0x0A0C slot=0x23 */ +{ + entry: + set_info(1, global[0x003C]); + class_0A0C_slot_33(0x0224, 0); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_24_slot_24.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_24_slot_24.txt new file mode 100644 index 0000000..e320aee --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_24_slot_24.txt @@ -0,0 +1,43 @@ +function free_slot_24() /* entry=382 class_id=0x0A0C slot=0x24 */ +{ + entry: + set_info(0x0224, 0); + if global[0x0006] goto block_05D3; + + block_05CD: + goto block_06DF; + + block_05D3: + /* pop_global global_id=0x6 size=0x1 */ + + block_05DC: + suspend; + spawn class_0A0C_slot_32(pid, arg_06, 0x00000000); + suspend; + if (!global[0x0006]) goto block_0620; + + block_061A: + goto block_06DF; + + block_0620: + arg_06 = (arg_06 - 1); + if (arg_06 != 0) goto block_06DC; + + block_0640: + /* pop_global global_id=0x6 size=0x1 */ + /* global_address global_id=0x3C */ + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + /* str_to_ptr */ + /* global_address global_id=0x3C */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + goto block_06DF; + + block_06DC: + goto block_05DC; + + block_06DF: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_25_slot_25.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_25_slot_25.txt new file mode 100644 index 0000000..5aeaddd --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_25_slot_25.txt @@ -0,0 +1,9 @@ +function free_slot_25() /* entry=382 class_id=0x0A0C slot=0x25 */ +{ + entry: + set_info(0x0224, global[0x003C]); + /* pop_global global_id=0x6 size=0x1 */ + class_0A0C_slot_33(0, 0x0224, 0); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_26_slot_26.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_26_slot_26.txt new file mode 100644 index 0000000..43efe72 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_26_slot_26.txt @@ -0,0 +1,48 @@ +function free_slot_26() /* entry=382 class_id=0x0A0C slot=0x26 */ +{ + var + flick, /* [BP+06h] type=0x73 */ + localFlick; /* [BP-02h] type=0x73 */ + + entry: + /* param_pid_chg bp_offset=0x6 target=[BP+06h] copy_type=0x1 */ + set_info(1, global[0x003C]); + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + localFlick = flick; + spawn class_0A0C_slot_32(pid, 60, 0x00000000); + suspend; + class_0A0C_slot_41(); + + block_078D: + /* global_address global_id=0x3C */ + if Npc.isDead() goto block_07C6; + + block_079D: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_078D; + + block_07C6: + /* global_address global_id=0x3C */ + if (!Kernel.resetRef()) goto block_085A; + + block_07DA: + /* global_address global_id=0x3C */ + if Intrinsic0033() goto block_0810; + + block_07EA: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_07DA; + + block_0810: + /* global_address global_id=0x3C */ + suspend; + /* global_address global_id=0x3C */ + suspend; + + block_085A: + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_27_slot_27.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_27_slot_27.txt new file mode 100644 index 0000000..d3ed8ac --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_27_slot_27.txt @@ -0,0 +1,36 @@ +function free_slot_27() /* entry=382 class_id=0x0A0C slot=0x27 */ +{ + entry: + local_02 = (arg_06 - arg_0B); + local_04 = (arg_08 - arg_0D); + local_06 = (arg_0A - arg_0F); + class_0A0C_slot_3F(local_02); + local_02 = retval; + class_0A0C_slot_3F(local_04); + local_04 = retval; + class_0A0C_slot_3F(local_06); + local_06 = retval; + if ((local_02 > local_04) && (local_02 > local_06)) goto block_08FC; + + block_08F3: + goto block_093F; + + block_08FC: + if ((local_04 > local_02) && (local_04 > local_06)) goto block_0919; + + block_0910: + goto block_093F; + + block_0919: + if ((local_06 > local_02) && (local_06 > local_04)) goto block_0936; + + block_092D: + goto block_093F; + + block_0936: + goto block_093F; + + block_093F: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_28_slot_28.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_28_slot_28.txt new file mode 100644 index 0000000..2b5d0b6 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_28_slot_28.txt @@ -0,0 +1,72 @@ +function free_slot_28() /* entry=382 class_id=0x0A0C slot=0x28 */ +{ + var + r1, /* [BP+06h] type=0x69 */ + r2, /* [BP+08h] type=0x69 */ + item1, /* [BP-02h] type=0x24 */ + item2, /* [BP-04h] type=0x24 */ + avatarMap, /* [BP-06h] type=0x69 */ + npc1, /* [BP-08h] type=0x24 */ + npc2, /* [BP-0Ah] type=0x24 */ + x, /* [BP-0Ch] type=0x69 */ + y, /* [BP-0Eh] type=0x69 */ + z; /* [BP-10h] type=0x69 */ + + entry: + item1 = r1; + item2 = r2; + /* global_address global_id=0x3C */ + avatarMap = Item.getType(); + if Item.isNpc(item1) goto block_09C7; + + block_099F: + npc1 = item1; + if (Item.getType(npc1) != avatarMap) goto block_09C7; + + block_09BE: + goto block_0AD3; + + block_09C7: + if Item.isNpc(item2) goto block_09FE; + + block_09D6: + npc2 = item2; + if (Item.getType(npc2) != avatarMap) goto block_09FE; + + block_09F5: + goto block_0AD3; + + block_09FE: + x = (Intrinsic0013(item1) - Intrinsic0013(item2)); + y = (Item.legal_create(item1) - Item.legal_create(item2)); + z = (Item.getZ(item1) - Item.getZ(item2)); + class_0A0C_slot_3F(x); + x = retval; + class_0A0C_slot_3F(y); + y = retval; + class_0A0C_slot_3F(z); + z = retval; + if ((x > y) && (x > z)) goto block_0A90; + + block_0A87: + goto block_0AD3; + + block_0A90: + if ((y > x) && (y > z)) goto block_0AAD; + + block_0AA4: + goto block_0AD3; + + block_0AAD: + if ((z > x) && (z > y)) goto block_0ACA; + + block_0AC1: + goto block_0AD3; + + block_0ACA: + goto block_0AD3; + + block_0AD3: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_29_slot_29.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_29_slot_29.txt new file mode 100644 index 0000000..d9610a8 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_29_slot_29.txt @@ -0,0 +1,17 @@ +function free_slot_29() /* entry=382 class_id=0x0A0C slot=0x29 */ +{ + var + ref1, /* [BP+06h] type=0x69 */ + ref2, /* [BP+08h] type=0x69 */ + dist; /* [BP-02h] type=0x69 */ + + entry: + class_0A0C_slot_28(ref2, ref1); + dist = retval; + dist = (dist / 32); + goto block_0B5F; + + block_0B5F: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_2A_slot_2A.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_2A_slot_2A.txt new file mode 100644 index 0000000..1f04601 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_2A_slot_2A.txt @@ -0,0 +1,46 @@ +function free_slot_2A() /* entry=382 class_id=0x0A0C slot=0x2A */ +{ + var + range, /* [BP+06h] type=0x69 */ + t, /* [BP+08h] type=0x69 */ + f, /* [BP+0Ah] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + closestItem, /* [BP-04h] type=0x24 */ + closest, /* [BP-06h] type=0x69 */ + dist; /* [BP-08h] type=0x69 */ + + entry: + closest = 0x7D00; + closestItem = 0; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0BBA: + if condition goto block_0C0B; + + block_0BBD: + if (Item.getFrame(item) != f) goto block_0C07; + + block_0BD5: + class_0A0C_slot_28(item, global[0x003C]); + dist = retval; + if (dist < closest) goto block_0C07; + + block_0BF9: + closest = dist; + closestItem = item; + + block_0C07: + /* loopnext */ + goto block_0BBA; + + block_0C0B: + goto block_0C16; + + block_0C16: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_2B_slot_2B.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_2B_slot_2B.txt new file mode 100644 index 0000000..eec5470 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_2B_slot_2B.txt @@ -0,0 +1,15 @@ +function free_slot_2B() /* entry=382 class_id=0x0A0C slot=0x2B */ +{ + entry: + if (arg_06 != 0x4000) goto block_0C8A; + + block_0C7D: + goto block_0C93; + + block_0C8A: + goto block_0C93; + + block_0C93: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_2C_slot_2C.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_2C_slot_2C.txt new file mode 100644 index 0000000..cbe77d8 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_2C_slot_2C.txt @@ -0,0 +1,17 @@ +function free_slot_2C() /* entry=382 class_id=0x0A0C slot=0x2C */ +{ + entry: + if (arg_06 != 0x4000) goto block_0CD9; + + block_0CC6: + /* rsh */ + arg_08 = 8; + goto block_0CE2; + + block_0CD9: + goto block_0CE2; + + block_0CE2: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_2D_slot_2D.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_2D_slot_2D.txt new file mode 100644 index 0000000..c19f4f4 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_2D_slot_2D.txt @@ -0,0 +1,38 @@ +function free_slot_2D() /* entry=382 class_id=0x0A0C slot=0x2D */ +{ + var + r, /* [BP+06h] type=0x69 */ + t, /* [BP+08h] type=0x69 */ + f, /* [BP+0Ah] type=0x69 */ + x, /* [BP+0Ch] type=0x69 */ + y, /* [BP+0Eh] type=0x69 */ + z, /* [BP+10h] type=0x69 */ + ref, /* [BP-02h] type=0x24 */ + item; /* [BP-04h] type=0x24 */ + + entry: + ref = r; + if (Item.hurl(t) != Intrinsic003C(ref)) goto block_0DBC; + + block_0D29: + if Intrinsic0019(z, y, x, f, t, item) goto block_0DA5; + + block_0D58: + goto block_0DC5; + + block_0DA2: + goto block_0DB9; + + block_0DA5: + goto block_0DC5; + + block_0DB9: + goto block_0DC5; + + block_0DBC: + goto block_0DC5; + + block_0DC5: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_2E_slot_2E.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_2E_slot_2E.txt new file mode 100644 index 0000000..2523bd7 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_2E_slot_2E.txt @@ -0,0 +1,29 @@ +function free_slot_2E() /* entry=382 class_id=0x0A0C slot=0x2E */ +{ + var + ref, /* [BP+06h] type=0x69 */ + phold, /* [BP-02h] type=0x24 */ + item, /* [BP-04h] type=0x24 */ + a, /* [BP-06h] type=0x69 */ + b, /* [BP-08h] type=0x69 */ + c; /* [BP-0Ah] type=0x69 */ + + entry: + set_info(1, 0); + phold = ref; + if (Intrinsic0016(phold) != 0x0476) goto block_0EF2; + + block_0E30: + a = Intrinsic00AD(phold); + c = (a & 15); + b = Item.getMapNum(phold); + b = (((a & 0x00E0) * 8) + b); + if (b != 0) goto block_0EF2; + + block_0E72: + goto block_0EF2; + + block_0EF2: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_2F_slot_2F.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_2F_slot_2F.txt new file mode 100644 index 0000000..08b413c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_2F_slot_2F.txt @@ -0,0 +1,30 @@ +function free_slot_2F() /* entry=382 class_id=0x0A0C slot=0x2F */ +{ + var + ref, /* [BP+06h] type=0x69 */ + addType, /* [BP+08h] type=0x69 */ + phold, /* [BP-02h] type=0x24 */ + item, /* [BP-04h] type=0x24 */ + a, /* [BP-06h] type=0x69 */ + b, /* [BP-08h] type=0x69 */ + c; /* [BP-0Ah] type=0x69 */ + + entry: + set_info(1, 0); + phold = ref; + if (Intrinsic0016(phold) != 0x0476) goto block_1020; + + block_0F55: + a = Intrinsic00AD(phold); + c = (a & 15); + b = Item.getMapNum(phold); + b = (((a & 0x00E0) * 8) + b); + if ((b != 0) && (b != addType)) goto block_1020; + + block_0FA0: + goto block_1020; + + block_1020: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_30_slot_30.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_30_slot_30.txt new file mode 100644 index 0000000..3bb7364 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_30_slot_30.txt @@ -0,0 +1,25 @@ +function free_slot_30() /* entry=382 class_id=0x0A0C slot=0x30 */ +{ + var + ref, /* [BP+06h] type=0x69 */ + addType, /* [BP+08h] type=0x69 */ + fram, /* [BP+0Ah] type=0x69 */ + var, /* [BP+0Ch] type=0x69 */ + phold, /* [BP-02h] type=0x24 */ + item; /* [BP-04h] type=0x24 */ + + entry: + set_info(1, 0); + phold = ref; + if (Intrinsic0016(phold) != 0x0476) goto block_111A; + + block_108F: + if (addType != 0) goto block_111A; + + block_109A: + goto block_111A; + + block_111A: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_31_slot_31.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_31_slot_31.txt new file mode 100644 index 0000000..655cdee --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_31_slot_31.txt @@ -0,0 +1,32 @@ +function free_slot_31() /* entry=382 class_id=0x0A0C slot=0x31 */ +{ + var + ref, /* [BP+06h] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + phold, /* [BP-04h] type=0x24 */ + a, /* [BP-06h] type=0x69 */ + b, /* [BP-08h] type=0x69 */ + c; /* [BP-0Ah] type=0x69 */ + + entry: + set_info(1, 0); + item = ref; + if item goto block_12B3; + + block_117D: + c = Item.getFrame(item); + b = Intrinsic0016(item); + a = (b & 0x00FF); + b = (b & 0x0700); + b = (b / 8); + b = (b + c); + suspend; + /* bit_not */ + /* word_to_dword */ + /* pop_result */ + goto block_12B3; + + block_12B3: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_32_slot_32.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_32_slot_32.txt new file mode 100644 index 0000000..528918c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_32_slot_32.txt @@ -0,0 +1,37 @@ +function free_slot_32() /* entry=382 class_id=0x0A0C slot=0x32 */ +{ + var + time, /* [BP+06h] type=0x69 */ + oldTick, /* [BP-04h] type=0x64 */ + newTick; /* [BP-08h] type=0x64 */ + + entry: + set_info(9, 0); + newTick = Item.andStatus(); + oldTick = Item.andStatus(); + if (time < 1) goto block_1324; + + block_131E: + goto block_1374; + + block_1324: + suspend; + newTick = Item.andStatus(); + /* ne_dword */ + if oldTick goto block_1371; + + block_134C: + oldTick = newTick; + time = (time - 1); + if (time < 1) goto block_1371; + + block_136B: + goto block_1374; + + block_1371: + goto block_1324; + + block_1374: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_33_slot_33.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_33_slot_33.txt new file mode 100644 index 0000000..90aa4d2 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_33_slot_33.txt @@ -0,0 +1,6 @@ +function free_slot_33() /* entry=382 class_id=0x0A0C slot=0x33 */ +{ + entry: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_34_slot_34.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_34_slot_34.txt new file mode 100644 index 0000000..e2bfe6d --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_34_slot_34.txt @@ -0,0 +1,22 @@ +function free_slot_34() /* entry=382 class_id=0x0A0C slot=0x34 */ +{ + entry: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Item.legal_create((Item.legal_create((Intrinsic0013((Intrinsic0013() >= (arg_06 - 0x0200))) <= (arg_06 + 0x0200))) >= (arg_08 - 0x0200))) <= (arg_08 + 0x0200)) goto block_1439; + + block_142D: + goto block_1442; + + block_1436: + goto block_1442; + + block_1439: + goto block_1442; + + block_1442: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_35_slot_35.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_35_slot_35.txt new file mode 100644 index 0000000..40cb254 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_35_slot_35.txt @@ -0,0 +1,25 @@ +function free_slot_35() /* entry=382 class_id=0x0A0C slot=0x35 */ +{ + var + list, /* [BP+06h] type=0x7A */ + member, /* [BP-02h] type=0x73 */ + count; /* [BP-04h] type=0x69 */ + + entry: + count = 0; + + block_1471: + foreach_slist member -> block_1486; + + block_1476: + count = (1 + count); + goto block_1471; + + block_1486: + goto block_148F; + + block_148F: + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_36_slot_36.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_36_slot_36.txt new file mode 100644 index 0000000..cf6ba14 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_36_slot_36.txt @@ -0,0 +1,23 @@ +function free_slot_36() /* entry=382 class_id=0x0A0C slot=0x36 */ +{ + var + list, /* [BP+06h] type=0x7A */ + line, /* [BP+08h] type=0x73 */ + temp; /* [BP-02h] type=0x7A */ + + entry: + /* free_local_slist bp_offset=0xFE target=[BP-02h] */ + temp = list; + /* create_list element_size=0x2 count=0x1 */ + /* free_local_slist bp_offset=0x6 target=[BP+06h] */ + list = line; + /* append_list */ + /* free_local_slist bp_offset=0x6 target=[BP+06h] */ + list = temp; + goto block_14ED; + + block_14ED: + /* free_local_slist bp_offset=0xFE target=[BP-02h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_37_slot_37.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_37_slot_37.txt new file mode 100644 index 0000000..ca3b37a --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_37_slot_37.txt @@ -0,0 +1,17 @@ +function free_slot_37() /* entry=382 class_id=0x0A0C slot=0x37 */ +{ + entry: + /* free_local_slist bp_offset=0xFE target=[BP-02h] */ + local_02 = arg_06; + /* free_local_slist bp_offset=0x6 target=[BP+06h] */ + arg_06 = arg_08; + /* append_list */ + /* free_local_slist bp_offset=0x6 target=[BP+06h] */ + arg_06 = local_02; + goto block_1545; + + block_1545: + /* free_local_slist bp_offset=0xFE target=[BP-02h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_38_slot_38.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_38_slot_38.txt new file mode 100644 index 0000000..f521aec --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_38_slot_38.txt @@ -0,0 +1,17 @@ +function free_slot_38() /* entry=382 class_id=0x0A0C slot=0x38 */ +{ + entry: + /* create_list element_size=0x2 count=0x1 */ + /* remove_matching_indirect element_size=0x2 */ + /* free_local_slist bp_offset=0x6 target=[BP+06h] */ + arg_06 = arg_08; + /* create_list element_size=0x2 count=0x1 */ + /* append_list */ + /* free_local_slist bp_offset=0x6 target=[BP+06h] */ + arg_06 = arg_08; + goto block_159F; + + block_159F: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_39_slot_39.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_39_slot_39.txt new file mode 100644 index 0000000..a758729 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_39_slot_39.txt @@ -0,0 +1,30 @@ +function free_slot_39() /* entry=382 class_id=0x0A0C slot=0x39 */ +{ + var + list, /* [BP+06h] type=0x7A */ + lines, /* [BP+08h] type=0x7A */ + line; /* [BP-02h] type=0x73 */ + + entry: + + block_15CD: + foreach_slist line -> block_15E8; + + block_15D2: + /* create_list element_size=0x2 count=0x1 */ + /* remove_matching_indirect element_size=0x2 */ + /* free_local_slist bp_offset=0x6 target=[BP+06h] */ + list = line; + goto block_15CD; + + block_15E8: + /* append_list */ + /* free_local_slist bp_offset=0x6 target=[BP+06h] */ + list = lines; + goto block_15FD; + + block_15FD: + /* free_local_string bp_offset=0xFE target=[BP-02h] */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_3A_slot_3A.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_3A_slot_3A.txt new file mode 100644 index 0000000..48e92bf --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_3A_slot_3A.txt @@ -0,0 +1,24 @@ +function free_slot_3A() /* entry=382 class_id=0x0A0C slot=0x3A */ +{ + var + list, /* [BP+06h] type=0x6C */ + member, /* [BP-02h] type=0x69 */ + count; /* [BP-04h] type=0x69 */ + + entry: + count = 0; + + block_163F: + foreach_list member -> block_1654; + + block_1644: + count = (1 + count); + goto block_163F; + + block_1654: + goto block_165D; + + block_165D: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_3B_slot_3B.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_3B_slot_3B.txt new file mode 100644 index 0000000..84789f4 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_3B_slot_3B.txt @@ -0,0 +1,49 @@ +function free_slot_3B() /* entry=382 class_id=0x0A0C slot=0x3B */ +{ + var + counter, /* [BP-02h] type=0x69 */ + alarm, /* [BP-04h] type=0x69 */ + item, /* [BP-06h] type=0x24 */ + n, /* [BP-08h] type=0x24 */ + ref, /* [BP-0Ah] type=0x69 */ + notAlarmed; /* [BP-0Bh] type=0x62 */ + + set_info(0x022B, 0); + ref = 1; + if (Intrinsic0000()) { + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + if (Item.getType((Item.getType((Item.getType((Item.getType((Item.getType((Item.getType() != 1)) != 5)) != 9)) != 13)) != 23)) == 27) { + alarm = 22; + } + else if (Item.getType((Item.getType((Item.getType() != 3)) != 15)) == 25) { + alarm = 0x0096; + } + else if (Item.getType((Item.getType((Item.getType((Item.getType() != 7)) != 11)) != 17)) == 24) { + alarm = 0x00A0; + } + else if (Item.getType((Item.getType((Item.getType() != 10)) != 19)) == 21) { + alarm = 0x0096; + } + else if (Item.getType() == 29) { + alarm = 0x00C4; + } + counter = 0; + } + return; +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_3C_slot_3C.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_3C_slot_3C.txt new file mode 100644 index 0000000..64a9afa --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_3C_slot_3C.txt @@ -0,0 +1,79 @@ +function free_slot_3C() /* entry=382 class_id=0x0A0C slot=0x3C */ +{ + var + item, /* [BP-02h] type=0x24 */ + ref, /* [BP-04h] type=0x69 */ + rndVoice; /* [BP-06h] type=0x69 */ + + entry: + set_info(1, 0); + class_0A0C_slot_33(0x022B, 0); + ref = 1; + if (Item.getNpcNum() != 1) goto block_1B14; + + block_1B07: + goto block_1D0A; + + block_1B14: + rndVoice = Intrinsic00DA(100, 0); + if (rndVoice < 30) goto block_1BA9; + + block_1B32: + spawn class_0A0C_slot_21(pid, 15, 0x00000000); + suspend; + rndVoice = Intrinsic00DA(100, 0); + if (rndVoice < 50) goto block_1B9C; + + block_1B76: + spawn class_0A0C_slot_21(pid, 14, 0x00000000); + suspend; + + block_1B9C: + goto block_1D0A; + + block_1BA9: + if (rndVoice > 60) goto block_1C63; + + block_1BB7: + spawn class_0A0C_slot_21(pid, 14, 0x00000000); + suspend; + rndVoice = Intrinsic00DA(100, 0); + if (rndVoice < 30) goto block_1C21; + + block_1BFB: + spawn class_0A0C_slot_21(pid, 15, 0x00000000); + suspend; + + block_1C21: + if (rndVoice > 60) goto block_1C56; + + block_1C2F: + spawn class_0A0C_slot_21(pid, 0x00B6, 0x00000000); + suspend; + + block_1C56: + goto block_1D0A; + + block_1C63: + spawn class_0A0C_slot_21(pid, 0x00D2, 0x00000000); + suspend; + rndVoice = Intrinsic00DA(100, 0); + if (rndVoice < 30) goto block_1CCE; + + block_1CA8: + spawn class_0A0C_slot_21(pid, 14, 0x00000000); + suspend; + + block_1CCE: + if (rndVoice > 60) goto block_1D03; + + block_1CDC: + spawn class_0A0C_slot_21(pid, 0x00B6, 0x00000000); + suspend; + + block_1D03: + + block_1D0A: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_3D_slot_3D.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_3D_slot_3D.txt new file mode 100644 index 0000000..14ef141 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_3D_slot_3D.txt @@ -0,0 +1,8 @@ +function free_slot_3D() /* entry=382 class_id=0x0A0C slot=0x3D */ +{ + entry: + set_info(1, 0); + /* global_address global_id=0x3C */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_3E_slot_3E.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_3E_slot_3E.txt new file mode 100644 index 0000000..2dbc6cd --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_3E_slot_3E.txt @@ -0,0 +1,11 @@ +function free_slot_3E() /* entry=382 class_id=0x0A0C slot=0x3E */ +{ + entry: + set_info(1, 0); + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_3F_slot_3F.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_3F_slot_3F.txt new file mode 100644 index 0000000..c3d81a9 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_3F_slot_3F.txt @@ -0,0 +1,15 @@ +function free_slot_3F() /* entry=382 class_id=0x0A0C slot=0x3F */ +{ + entry: + if (arg_06 > 0) goto block_1DE3; + + block_1DDA: + goto block_1DEF; + + block_1DE3: + goto block_1DEF; + + block_1DEF: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_40_slot_40.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_40_slot_40.txt new file mode 100644 index 0000000..d8708a8 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_40_slot_40.txt @@ -0,0 +1,33 @@ +function free_slot_40() /* entry=382 class_id=0x0A0C slot=0x40 */ +{ + var + source, /* [BP+06h] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + leftOvers; /* [BP-03h] type=0x62 */ + + entry: + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x4 */ + + block_1E17: + if condition goto block_1E76; + + block_1E1A: + if (!Item.getCY(1, item)) goto block_1E72; + + block_1E2F: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + + block_1E72: + /* loopnext */ + goto block_1E17; + + block_1E76: + goto block_1E81; + + block_1E81: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_41_slot_41.txt b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_41_slot_41.txt new file mode 100644 index 0000000..9c20019 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FREE/slot_41_slot_41.txt @@ -0,0 +1,22 @@ +function free_slot_41() /* entry=382 class_id=0x0A0C slot=0x41 */ +{ + var + item; /* [BP-02h] type=0x24 */ + + entry: + set_info(1, 0); + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_1EDF: + if condition goto block_1EF1; + + block_1EE2: + /* loopnext */ + goto block_1EDF; + + block_1EF1: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FUSPAC/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/FUSPAC/slot_01_use.txt new file mode 100644 index 0000000..5410778 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FUSPAC/slot_01_use.txt @@ -0,0 +1,361 @@ +function fuspac_use() /* entry=208 class_id=0x039C slot=0x01 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + InCrouch, /* [BP-01h] type=0x62 */ + droppedPac, /* [BP-02h] type=0x62 */ + Fusionpac, /* [BP-04h] type=0x24 */ + target, /* [BP-06h] type=0x24 */ + item, /* [BP-08h] type=0x24 */ + counter, /* [BP-0Ah] type=0x69 */ + lastAnim, /* [BP-0Ch] type=0x69 */ + xOff, /* [BP-0Eh] type=0x69 */ + yOff, /* [BP-10h] type=0x69 */ + mine, /* [BP-12h] type=0x24 */ + door; /* [BP-14h] type=0x24 */ + + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + Fusionpac = *(arg_06); + set_info(0x00F0, 0); + /* global_address global_id=0x3C */ + lastAnim = Item.isOn(); + + block_0117: + /* global_address global_id=0x3C */ + if Intrinsic0033() goto block_014D; + + block_0127: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_0117; + + block_014D: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF8 string_bytes=0x6 loop_type=0x2 */ + + block_016B: + if condition goto block_022D; + + block_016E: + target = item; + + block_0175: + class_0A0C_slot_29(target, global[0x003C]); + if ((retval > 3) && (counter != 6)) goto block_01F6; + + block_0198: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + spawn class_0A11_slot_22(Item.getDirToItem(Intrinsic0013(pid, 1, Item.legal_create(Item.legal_create(target), Intrinsic0013(target))))); + suspend; + counter = (1 + counter); + goto block_0175; + + block_01F6: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + suspend; + goto block_022D; + + block_0229: + /* loopnext */ + goto block_016B; + + block_022D: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 0) goto block_024D; + + block_023F: + xOff = -1; + yOff = -3; + goto block_040F; + + block_024D: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 1) goto block_026B; + + block_025D: + xOff = 0; + yOff = -3; + goto block_040F; + + block_026B: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 2) goto block_0289; + + block_027B: + xOff = 1; + yOff = -3; + goto block_040F; + + block_0289: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 3) goto block_02A7; + + block_0299: + xOff = 2; + yOff = -2; + goto block_040F; + + block_02A7: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 4) goto block_02C5; + + block_02B7: + xOff = 2; + yOff = -1; + goto block_040F; + + block_02C5: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 5) goto block_02E3; + + block_02D5: + xOff = 2; + yOff = 0; + goto block_040F; + + block_02E3: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 6) goto block_0301; + + block_02F3: + xOff = 2; + yOff = 2; + goto block_040F; + + block_0301: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 7) goto block_031F; + + block_0311: + xOff = 0; + yOff = 2; + goto block_040F; + + block_031F: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 8) goto block_033D; + + block_032F: + xOff = -1; + yOff = 2; + goto block_040F; + + block_033D: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 9) goto block_035B; + + block_034D: + xOff = -2; + yOff = 2; + goto block_040F; + + block_035B: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 10) goto block_0379; + + block_036B: + xOff = -3; + yOff = 2; + goto block_040F; + + block_0379: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 11) goto block_0397; + + block_0389: + xOff = -3; + yOff = 1; + goto block_040F; + + block_0397: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 12) goto block_03B5; + + block_03A7: + xOff = -3; + yOff = 0; + goto block_040F; + + block_03B5: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 13) goto block_03D3; + + block_03C5: + xOff = -3; + yOff = -1; + goto block_040F; + + block_03D3: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 14) goto block_03F1; + + block_03E3: + xOff = -3; + yOff = -2; + goto block_040F; + + block_03F1: + /* global_address global_id=0x3C */ + if (Intrinsic00FA() != 15) goto block_040F; + + block_0401: + xOff = -3; + yOff = -3; + goto block_040F; + + block_040F: + if (!target) goto block_0481; + + block_0418: + spawn class_0A0C_slot_21(pid, 0x00B0, 0x00000000); + suspend; + goto block_0772; + + block_047E: + goto block_0772; + + block_0481: + /* global_address global_id=0x3C */ + if Intrinsic0035() goto block_049B; + + block_0491: + InCrouch = 1; + goto block_04D2; + + block_049B: + InCrouch = 0; + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + suspend; + + block_04D2: + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + droppedPac = 1; + + block_052C: + /* global_address global_id=0x3C */ + if Intrinsic0033() goto block_0562; + + block_053C: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_052C; + + block_0562: + if droppedPac goto block_0772; + + block_056A: + /* str_to_ptr */ + /* free_stack_string value_u8=0x4 target=[SP+04h] */ + suspend; + /* pop_global global_id=0x26 size=0x1 */ + spawn class_0A0C_slot_24(1, 100, 0x00000000); + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF8 string_bytes=0x6 loop_type=0x2 */ + + block_05DE: + if condition goto block_0609; + + block_05E1: + if (Item.getQHi(item) != 33) goto block_0605; + + block_05F6: + class_0A0C_slot_2F(0x03B5, item); + + block_0605: + /* loopnext */ + goto block_05DE; + + block_0609: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x42 */ + /* loop current_var=0xF8 string_bytes=0x6 loop_type=0x2 */ + + block_062B: + if condition goto block_0652; + + block_062E: + if (Item.getQHi(item) != 10) goto block_064E; + + block_0643: + + block_064E: + /* loopnext */ + goto block_062B; + + block_0652: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x41 */ + /* loop current_var=0xF8 string_bytes=0x4 loop_type=0x2 */ + + block_0670: + if condition goto block_06B2; + + block_0673: + if (Item.getQHi(item) != 10) goto block_06AE; + + block_0688: + door = item; + spawn class_0A06_slot_20(pid, door); + suspend; + + block_06AE: + /* loopnext */ + goto block_0670; + + block_06B2: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x41 */ + /* loop current_var=0xF8 string_bytes=0x4 loop_type=0x2 */ + + block_06CF: + if condition goto block_0706; + + block_06D2: + if (Item.getQHi(item) != 0x00FB) goto block_0702; + + block_06E8: + + block_0702: + /* loopnext */ + goto block_06CF; + + block_0706: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xF8 string_bytes=0x6 loop_type=0x2 */ + + block_0727: + if condition goto block_0770; + + block_072A: + if ((Item.getFrame(item) != 0) && (Item.getQHi(item) != 47)) goto block_076C; + + block_074C: + suspend; + + block_076C: + /* loopnext */ + goto block_0727; + + block_0770: + + block_0772: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/FUSREACT/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/FUSREACT/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..53d50a8 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/FUSREACT/slot_0F_enterFastArea.txt @@ -0,0 +1,8 @@ +function fusreact_enterFastArea() /* entry=93 class_id=0x01BC slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GATGUNEW/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/GATGUNEW/slot_06_gotHit.txt new file mode 100644 index 0000000..ed28c5d --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GATGUNEW/slot_06_gotHit.txt @@ -0,0 +1,14 @@ +function gatgunew_gotHit() /* entry=48 class_id=0x0113 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A1A_slot_49(vel, ref, arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GATGUNEW/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/GATGUNEW/slot_0A_equip.txt new file mode 100644 index 0000000..8c9d678 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GATGUNEW/slot_0A_equip.txt @@ -0,0 +1,20 @@ +function gatgunew_equip() /* entry=48 class_id=0x0113 slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (Item.pop() != 0) goto block_0290; + + block_0265: + spawn class_0A1A_slot_24(pid, arg_0A, Item.pop(), arg_06); + suspend; + goto block_02B7; + + block_0290: + spawn class_0A1A_slot_24(pid, arg_0A, global[0x003C], arg_06); + suspend; + + block_02B7: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GATGUNEW/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/GATGUNEW/slot_0B_unequip.txt new file mode 100644 index 0000000..862ace5 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GATGUNEW/slot_0B_unequip.txt @@ -0,0 +1,17 @@ +function gatgunew_unequip() /* entry=48 class_id=0x0113 slot=0x0B */ +{ + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 4) goto block_0160; + + block_015A: + goto block_017B; + + block_0160: + spawn class_0A1A_slot_27(arg_06); + + block_017B: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GATGUNEW/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/GATGUNEW/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..4f69064 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GATGUNEW/slot_0F_enterFastArea.txt @@ -0,0 +1,17 @@ +function gatgunew_enterFastArea() /* entry=48 class_id=0x0113 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 4) goto block_0103; + + block_00FD: + goto block_011E; + + block_0103: + spawn class_0A1A_slot_27(arg_06); + + block_011E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GATGUNEW/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/GATGUNEW/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..c28b9cf --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GATGUNEW/slot_10_leaveFastArea.txt @@ -0,0 +1,11 @@ +function gatgunew_leaveFastArea() /* entry=48 class_id=0x0113 slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + /* bit_not */ + class_0A0C_slot_33(1, *(arg_06)); + class_0A0C_slot_33(0x020A, *(arg_06)); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GATGUNNS/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/GATGUNNS/slot_06_gotHit.txt new file mode 100644 index 0000000..8f2cfea --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GATGUNNS/slot_06_gotHit.txt @@ -0,0 +1,14 @@ +function gatgunns_gotHit() /* entry=46 class_id=0x0108 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A1A_slot_49(vel, ref, arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GATGUNNS/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/GATGUNNS/slot_0A_equip.txt new file mode 100644 index 0000000..3f6505e --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GATGUNNS/slot_0A_equip.txt @@ -0,0 +1,20 @@ +function gatgunns_equip() /* entry=46 class_id=0x0108 slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (Item.pop() != 0) goto block_0290; + + block_0265: + spawn class_0A1A_slot_24(pid, arg_0A, Item.pop(), arg_06); + suspend; + goto block_02B7; + + block_0290: + spawn class_0A1A_slot_24(pid, arg_0A, global[0x003C], arg_06); + suspend; + + block_02B7: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GATGUNNS/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/GATGUNNS/slot_0B_unequip.txt new file mode 100644 index 0000000..38c66b3 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GATGUNNS/slot_0B_unequip.txt @@ -0,0 +1,17 @@ +function gatgunns_unequip() /* entry=46 class_id=0x0108 slot=0x0B */ +{ + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 4) goto block_0160; + + block_015A: + goto block_017B; + + block_0160: + spawn class_0A1A_slot_27(arg_06); + + block_017B: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GATGUNNS/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/GATGUNNS/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..c0767bc --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GATGUNNS/slot_0F_enterFastArea.txt @@ -0,0 +1,17 @@ +function gatgunns_enterFastArea() /* entry=46 class_id=0x0108 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 4) goto block_0103; + + block_00FD: + goto block_011E; + + block_0103: + spawn class_0A1A_slot_27(arg_06); + + block_011E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GATGUNNS/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/GATGUNNS/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..bac40dd --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GATGUNNS/slot_10_leaveFastArea.txt @@ -0,0 +1,11 @@ +function gatgunns_leaveFastArea() /* entry=46 class_id=0x0108 slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + /* bit_not */ + class_0A0C_slot_33(1, *(arg_06)); + class_0A0C_slot_33(0x020A, *(arg_06)); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GBOX_EW/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/GBOX_EW/slot_06_gotHit.txt new file mode 100644 index 0000000..5cafc95 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GBOX_EW/slot_06_gotHit.txt @@ -0,0 +1,49 @@ +function gbox_ew_gotHit() /* entry=302 class_id=0x0527 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if retval goto block_01F2; + + block_00FD: + if (!Item.getFrame(arg_06)) goto block_014E; + + block_0110: + spawn class_0A1E_slot_28(pid, 0, 0, arg_06); + suspend; + goto block_01F2; + + block_014E: + spawn class_0A1E_slot_27(pid, 100, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_01AE; + + block_017E: + class_0A0C_slot_20(1); + if retval goto block_019E; + + block_018E: + goto block_01AB; + + block_019E: + + block_01AB: + goto block_01F2; + + block_01AE: + spawn class_0A1E_slot_2A(pid, arg_06); + suspend; + spawn class_0A1E_slot_28(pid, 1, 1, arg_06); + suspend; + + block_01F2: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GBOX_NS/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/GBOX_NS/slot_06_gotHit.txt new file mode 100644 index 0000000..d1c9e51 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GBOX_NS/slot_06_gotHit.txt @@ -0,0 +1,49 @@ +function gbox_ns_gotHit() /* entry=301 class_id=0x0526 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + class_0A0C_slot_2C(vel, ref); + if retval goto block_01F2; + + block_00FD: + if (!Item.getFrame(arg_06)) goto block_014E; + + block_0110: + spawn class_0A1E_slot_28(pid, 0, 0, arg_06); + suspend; + goto block_01F2; + + block_014E: + spawn class_0A1E_slot_27(pid, 100, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_01AE; + + block_017E: + class_0A0C_slot_20(1); + if retval goto block_019E; + + block_018E: + goto block_01AB; + + block_019E: + + block_01AB: + goto block_01F2; + + block_01AE: + spawn class_0A1E_slot_2A(pid, arg_06); + suspend; + spawn class_0A1E_slot_28(pid, 1, 1, arg_06); + suspend; + + block_01F2: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GDOOR_E/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/GDOOR_E/slot_06_gotHit.txt new file mode 100644 index 0000000..61e2659 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GDOOR_E/slot_06_gotHit.txt @@ -0,0 +1,15 @@ +function gdoor_e_gotHit() /* entry=169 class_id=0x030B slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A06_slot_23(pid, vel, ref, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GDOOR_E2/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/GDOOR_E2/slot_06_gotHit.txt new file mode 100644 index 0000000..603321c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GDOOR_E2/slot_06_gotHit.txt @@ -0,0 +1,15 @@ +function gdoor_e2_gotHit() /* entry=27 class_id=0x0095 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A06_slot_23(pid, vel, ref, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GDOOR_N/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/GDOOR_N/slot_06_gotHit.txt new file mode 100644 index 0000000..f0e3c8a --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GDOOR_N/slot_06_gotHit.txt @@ -0,0 +1,15 @@ +function gdoor_n_gotHit() /* entry=168 class_id=0x030A slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A06_slot_23(pid, vel, ref, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GDOOR_N2/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/GDOOR_N2/slot_06_gotHit.txt new file mode 100644 index 0000000..1264a8c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GDOOR_N2/slot_06_gotHit.txt @@ -0,0 +1,15 @@ +function gdoor_n2_gotHit() /* entry=29 class_id=0x0099 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A06_slot_23(pid, vel, ref, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GENERATR/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/GENERATR/slot_06_gotHit.txt new file mode 100644 index 0000000..d56b089 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GENERATR/slot_06_gotHit.txt @@ -0,0 +1,15 @@ +function generatr_gotHit() /* entry=221 class_id=0x03C1 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A18_slot_20(pid, 0, *(arg_06), arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GLASS_EW/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/GLASS_EW/slot_06_gotHit.txt new file mode 100644 index 0000000..b0b2533 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GLASS_EW/slot_06_gotHit.txt @@ -0,0 +1,73 @@ +function glass_ew_gotHit() /* entry=137 class_id=0x027B slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + shot, /* [BP-04h] type=0x24 */ + counter, /* [BP-06h] type=0x69 */ + door; /* [BP-08h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + shot = ref; + class_0A0C_slot_2C(vel, ref); + if (!retval) goto block_010E; + + block_0108: + goto block_0307; + + block_010E: + door = *(arg_06); + spawn class_0A1E_slot_27(pid, 1, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_017A; + + block_0147: + class_0A0C_slot_20(1); + if retval goto block_0167; + + block_0157: + goto block_0174; + + block_0167: + + block_0174: + goto block_0307; + + block_017A: + spawn class_0A06_slot_22(pid, door); + suspend; + if (!Item.getFrame(arg_06)) goto block_0307; + + block_01A9: + counter = 1; + + block_01BD: + if (counter <= 3) goto block_0205; + + block_01C5: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_01BD; + + block_0205: + if Npc.isDead((Item.getZ(arg_06) + 1), (Item.legal_create(arg_06) + 32), (Intrinsic0013(arg_06) + 80), 0x0349) goto block_0278; + + block_0239: + + block_0278: + if Npc.isDead((Item.getZ(arg_06) + 1), Item.legal_create(arg_06), (Intrinsic0013(arg_06) - 32), 0x027A) goto block_02E5; + + block_02A9: + + block_02E5: + + block_0307: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GLASS_NS/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/GLASS_NS/slot_06_gotHit.txt new file mode 100644 index 0000000..f47a9f0 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GLASS_NS/slot_06_gotHit.txt @@ -0,0 +1,73 @@ +function glass_ns_gotHit() /* entry=163 class_id=0x02F3 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + shot, /* [BP-04h] type=0x24 */ + counter, /* [BP-06h] type=0x69 */ + door; /* [BP-08h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + shot = ref; + class_0A0C_slot_2C(vel, ref); + if (!retval) goto block_010E; + + block_0108: + goto block_0307; + + block_010E: + door = *(arg_06); + spawn class_0A1E_slot_27(pid, 1, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_017A; + + block_0147: + class_0A0C_slot_20(1); + if retval goto block_0167; + + block_0157: + goto block_0174; + + block_0167: + + block_0174: + goto block_0307; + + block_017A: + spawn class_0A06_slot_22(pid, door); + suspend; + if (!Item.getFrame(arg_06)) goto block_0307; + + block_01A9: + counter = 1; + + block_01BD: + if (counter <= 3) goto block_0205; + + block_01C5: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_01BD; + + block_0205: + if Npc.isDead((Item.getZ(arg_06) + 1), (Item.legal_create(arg_06) + 96), (Intrinsic0013(arg_06) + 32), 0x027A) goto block_0278; + + block_0239: + + block_0278: + if Npc.isDead((Item.getZ(arg_06) + 1), (Item.legal_create(arg_06) - 16), Intrinsic0013(arg_06), 0x0349) goto block_02E5; + + block_02A9: + + block_02E5: + + block_0307: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GLDIV_EW/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/GLDIV_EW/slot_06_gotHit.txt new file mode 100644 index 0000000..25d260d --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GLDIV_EW/slot_06_gotHit.txt @@ -0,0 +1,73 @@ +function gldiv_ew_gotHit() /* entry=308 class_id=0x0541 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + shot, /* [BP-04h] type=0x24 */ + counter, /* [BP-06h] type=0x69 */ + door; /* [BP-08h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + shot = ref; + class_0A0C_slot_2C(vel, ref); + if (!retval) goto block_010E; + + block_0108: + goto block_0307; + + block_010E: + door = *(arg_06); + spawn class_0A1E_slot_27(pid, 1, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_017A; + + block_0147: + class_0A0C_slot_20(1); + if retval goto block_0167; + + block_0157: + goto block_0174; + + block_0167: + + block_0174: + goto block_0307; + + block_017A: + spawn class_0A06_slot_22(pid, door); + suspend; + if (!Item.getFrame(arg_06)) goto block_0307; + + block_01A9: + counter = 1; + + block_01BD: + if (counter <= 2) goto block_0205; + + block_01C5: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_01BD; + + block_0205: + if Npc.isDead((Item.getZ(arg_06) + 1), (Item.legal_create(arg_06) + 32), (Intrinsic0013(arg_06) + 80), 0x0349) goto block_0278; + + block_0239: + + block_0278: + if Npc.isDead((Item.getZ(arg_06) + 1), Item.legal_create(arg_06), (Intrinsic0013(arg_06) - 32), 0x027A) goto block_02E5; + + block_02A9: + + block_02E5: + + block_0307: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GLDIV_NS/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/GLDIV_NS/slot_06_gotHit.txt new file mode 100644 index 0000000..484fd50 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GLDIV_NS/slot_06_gotHit.txt @@ -0,0 +1,73 @@ +function gldiv_ns_gotHit() /* entry=309 class_id=0x0542 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + shot, /* [BP-04h] type=0x24 */ + counter, /* [BP-06h] type=0x69 */ + door; /* [BP-08h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + shot = ref; + class_0A0C_slot_2C(vel, ref); + if (!retval) goto block_010E; + + block_0108: + goto block_0307; + + block_010E: + door = *(arg_06); + spawn class_0A1E_slot_27(pid, 1, vel, ref, arg_06); + suspend; + /* dword_to_word */ + if (!process_result) goto block_017A; + + block_0147: + class_0A0C_slot_20(1); + if retval goto block_0167; + + block_0157: + goto block_0174; + + block_0167: + + block_0174: + goto block_0307; + + block_017A: + spawn class_0A06_slot_22(pid, door); + suspend; + if (!Item.getFrame(arg_06)) goto block_0307; + + block_01A9: + counter = 1; + + block_01BD: + if (counter <= 2) goto block_0205; + + block_01C5: + spawn class_0A0C_slot_32(pid, 5, 0x00000000); + suspend; + counter = (1 + counter); + goto block_01BD; + + block_0205: + if Npc.isDead((Item.getZ(arg_06) + 1), (Item.legal_create(arg_06) + 96), (Intrinsic0013(arg_06) + 32), 0x027A) goto block_0278; + + block_0239: + + block_0278: + if Npc.isDead((Item.getZ(arg_06) + 1), (Item.legal_create(arg_06) - 16), Intrinsic0013(arg_06), 0x0349) goto block_02E5; + + block_02A9: + + block_02E5: + + block_0307: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GOVGUNEW/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/GOVGUNEW/slot_06_gotHit.txt new file mode 100644 index 0000000..4f56f2d --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GOVGUNEW/slot_06_gotHit.txt @@ -0,0 +1,14 @@ +function govgunew_gotHit() /* entry=209 class_id=0x03A1 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A1A_slot_49(vel, ref, arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GOVGUNEW/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/GOVGUNEW/slot_0A_equip.txt new file mode 100644 index 0000000..ebfe6f7 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GOVGUNEW/slot_0A_equip.txt @@ -0,0 +1,20 @@ +function govgunew_equip() /* entry=209 class_id=0x03A1 slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (Item.pop() != 0) goto block_0290; + + block_0265: + spawn class_0A1A_slot_24(pid, arg_0A, Item.pop(), arg_06); + suspend; + goto block_02B7; + + block_0290: + spawn class_0A1A_slot_24(pid, arg_0A, global[0x003C], arg_06); + suspend; + + block_02B7: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GOVGUNEW/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/GOVGUNEW/slot_0B_unequip.txt new file mode 100644 index 0000000..f3dd541 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GOVGUNEW/slot_0B_unequip.txt @@ -0,0 +1,17 @@ +function govgunew_unequip() /* entry=209 class_id=0x03A1 slot=0x0B */ +{ + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 4) goto block_0160; + + block_015A: + goto block_017B; + + block_0160: + spawn class_0A1A_slot_27(arg_06); + + block_017B: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GOVGUNEW/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/GOVGUNEW/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..35c5988 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GOVGUNEW/slot_0F_enterFastArea.txt @@ -0,0 +1,17 @@ +function govgunew_enterFastArea() /* entry=209 class_id=0x03A1 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 4) goto block_0103; + + block_00FD: + goto block_011E; + + block_0103: + spawn class_0A1A_slot_27(arg_06); + + block_011E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GOVGUNEW/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/GOVGUNEW/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..c92ccb2 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GOVGUNEW/slot_10_leaveFastArea.txt @@ -0,0 +1,11 @@ +function govgunew_leaveFastArea() /* entry=209 class_id=0x03A1 slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + /* bit_not */ + class_0A0C_slot_33(1, *(arg_06)); + class_0A0C_slot_33(0x020A, *(arg_06)); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GOVGUNNS/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/GOVGUNNS/slot_06_gotHit.txt new file mode 100644 index 0000000..5bb11e4 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GOVGUNNS/slot_06_gotHit.txt @@ -0,0 +1,14 @@ +function govgunns_gotHit() /* entry=205 class_id=0x0399 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + spawn class_0A1A_slot_49(vel, ref, arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GOVGUNNS/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/GOVGUNNS/slot_0A_equip.txt new file mode 100644 index 0000000..b8e3acb --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GOVGUNNS/slot_0A_equip.txt @@ -0,0 +1,20 @@ +function govgunns_equip() /* entry=205 class_id=0x0399 slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + if (Item.pop() != 0) goto block_0290; + + block_0265: + spawn class_0A1A_slot_24(pid, arg_0A, Item.pop(), arg_06); + suspend; + goto block_02B7; + + block_0290: + spawn class_0A1A_slot_24(pid, arg_0A, global[0x003C], arg_06); + suspend; + + block_02B7: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GOVGUNNS/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/GOVGUNNS/slot_0B_unequip.txt new file mode 100644 index 0000000..a2c5ddd --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GOVGUNNS/slot_0B_unequip.txt @@ -0,0 +1,17 @@ +function govgunns_unequip() /* entry=205 class_id=0x0399 slot=0x0B */ +{ + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 4) goto block_0160; + + block_015A: + goto block_017B; + + block_0160: + spawn class_0A1A_slot_27(arg_06); + + block_017B: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GOVGUNNS/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/GOVGUNNS/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..bdceff1 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GOVGUNNS/slot_0F_enterFastArea.txt @@ -0,0 +1,17 @@ +function govgunns_enterFastArea() /* entry=205 class_id=0x0399 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if (Item.getStatus(arg_06) & 4) goto block_0103; + + block_00FD: + goto block_011E; + + block_0103: + spawn class_0A1A_slot_27(arg_06); + + block_011E: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GOVGUNNS/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/GOVGUNNS/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..fa719f8 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GOVGUNNS/slot_10_leaveFastArea.txt @@ -0,0 +1,11 @@ +function govgunns_leaveFastArea() /* entry=205 class_id=0x0399 slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + /* bit_not */ + class_0A0C_slot_33(1, *(arg_06)); + class_0A0C_slot_33(0x020A, *(arg_06)); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GRAVITON/slot_01_use.txt b/USECODE/EUSECODE_extracted/pseudocode/GRAVITON/slot_01_use.txt new file mode 100644 index 0000000..24b6f7f --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GRAVITON/slot_01_use.txt @@ -0,0 +1,8 @@ +function graviton_use() /* entry=307 class_id=0x0530 slot=0x01 */ +{ + entry: + set_info(0x0207, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GRENADE/slot_05_hit.txt b/USECODE/EUSECODE_extracted/pseudocode/GRENADE/slot_05_hit.txt new file mode 100644 index 0000000..150e9b7 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GRENADE/slot_05_hit.txt @@ -0,0 +1,13 @@ +function grenade_hit() /* entry=184 class_id=0x0343 slot=0x05 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + ke; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020B, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GRENADE/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/GRENADE/slot_06_gotHit.txt new file mode 100644 index 0000000..cbc2196 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GRENADE/slot_06_gotHit.txt @@ -0,0 +1,13 @@ +function grenade_gotHit() /* entry=184 class_id=0x0343 slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + ke; /* [BP+0Ch] type=0x69 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GRENEGG/slot_07_hatch.txt b/USECODE/EUSECODE_extracted/pseudocode/GRENEGG/slot_07_hatch.txt new file mode 100644 index 0000000..b8f6b27 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GRENEGG/slot_07_hatch.txt @@ -0,0 +1,64 @@ +function grenegg_hatch() /* entry=349 class_id=0x0909 slot=0x07 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + source, /* [BP-04h] type=0x24 */ + dest, /* [BP-06h] type=0x24 */ + counter, /* [BP-08h] type=0x69 */ + wp; /* [BP-0Dh] type=0x24 */ + + entry: + set_info(0x0210, *(arg_06)); + process_exclude(); + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0109: + if condition goto block_0129; + + block_010C: + if (Item.getFrame(item) != 0) goto block_0125; + + block_011E: + source = item; + + block_0125: + /* loopnext */ + goto block_0109; + + block_0129: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x2 */ + + block_0149: + if condition goto block_0169; + + block_014C: + if (Item.getFrame(item) != 0) goto block_0165; + + block_015E: + dest = item; + + block_0165: + /* loopnext */ + goto block_0149; + + block_0169: + if (source && dest) goto block_01F0; + + block_017C: + wp = Intrinsic0013(dest); + local_0B = Item.legal_create(dest); + local_09 = Item.getZ(dest); + + block_01F0: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GTELEPAD/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/GTELEPAD/slot_06_gotHit.txt new file mode 100644 index 0000000..2948a10 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GTELEPAD/slot_06_gotHit.txt @@ -0,0 +1,56 @@ +function gtelepad_gotHit() /* entry=47 class_id=0x010D slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + ke, /* [BP+0Ch] type=0x69 */ + item, /* [BP-02h] type=0x24 */ + npc; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + item = ref; + class_0A0C_slot_2C(ke, ref); + if retval goto block_010A; + + block_0104: + goto block_0199; + + block_010A: + if (Item.isNpc(item) != 0) goto block_0127; + + block_011C: + + block_0127: + if (Intrinsic0070() != 1) goto block_0199; + + block_0135: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x3A */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x6 */ + + block_0150: + if condition goto block_0191; + + block_0153: + if (npc < 0x0100) goto block_018D; + + block_015F: + if (npc != 1) goto block_018D; + + block_016A: + + block_018D: + /* loopnext */ + goto block_0150; + + block_0191: + goto block_0199; + + block_0199: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GTELEPAD/slot_09_release.txt b/USECODE/EUSECODE_extracted/pseudocode/GTELEPAD/slot_09_release.txt new file mode 100644 index 0000000..0917f7a --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GTELEPAD/slot_09_release.txt @@ -0,0 +1,65 @@ +function gtelepad_release() /* entry=47 class_id=0x010D slot=0x09 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + tele, /* [BP-02h] type=0x24 */ + npc; /* [BP-04h] type=0x24 */ + + entry: + set_info(0x020D, *(arg_06)); + process_exclude(); + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFE string_bytes=0x6 loop_type=0x6 */ + + block_0225: + if condition goto block_0232; + + block_0228: + goto block_02B0; + + block_022E: + /* loopnext */ + goto block_0225; + + block_0232: + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x3A */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x6 */ + + block_024F: + if condition goto block_02AE; + + block_0252: + if (npc != 1) goto block_02A4; + + block_0260: + /* global_address global_id=0x3C */ + if Intrinsic00BC(*(arg_06)) goto block_029D; + + block_0274: + spawn class_0A0C_slot_32(pid, 2, 0x00000000); + suspend; + goto block_0260; + + block_029D: + + block_02A4: + goto block_02B0; + + block_02AA: + /* loopnext */ + goto block_024F; + + block_02AE: + + block_02B0: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GUARD/slot_0E_calledFromAnim.txt b/USECODE/EUSECODE_extracted/pseudocode/GUARD/slot_0E_calledFromAnim.txt new file mode 100644 index 0000000..11140ce --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GUARD/slot_0E_calledFromAnim.txt @@ -0,0 +1,9 @@ +function guard_calledFromAnim() /* entry=167 class_id=0x02FD slot=0x0E */ +{ + entry: + set_info(0x021A, *(arg_06)); + process_exclude(); + spawn class_0A1C_slot_20(Item.getQLo(arg_06), *(arg_06), arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/GUARDSQ/slot_0E_calledFromAnim.txt b/USECODE/EUSECODE_extracted/pseudocode/GUARDSQ/slot_0E_calledFromAnim.txt new file mode 100644 index 0000000..73351ec --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/GUARDSQ/slot_0E_calledFromAnim.txt @@ -0,0 +1,9 @@ +function guardsq_calledFromAnim() /* entry=174 class_id=0x0319 slot=0x0E */ +{ + entry: + set_info(0x021A, *(arg_06)); + process_exclude(); + spawn class_0A1C_slot_20(Item.getQLo(arg_06), *(arg_06), arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/G_POOL/slot_06_gotHit.txt b/USECODE/EUSECODE_extracted/pseudocode/G_POOL/slot_06_gotHit.txt new file mode 100644 index 0000000..c08c651 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/G_POOL/slot_06_gotHit.txt @@ -0,0 +1,50 @@ +function g_pool_gotHit() /* entry=66 class_id=0x015D slot=0x06 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + vel, /* [BP+0Ch] type=0x69 */ + item; /* [BP-02h] type=0x24 */ + + entry: + set_info(0x020C, *(arg_06)); + process_exclude(); + item = ref; + class_0A0C_slot_2C(vel, ref); + if (retval != 4) goto block_0132; + + block_010D: + spawn class_0A1E_slot_28(pid, 1, 1, arg_06); + suspend; + + block_0132: + if ((ref <= 0x0100) && (ref != Item.pop())) goto block_0150; + + block_014A: + goto block_01C5; + + block_0150: + if 1 goto block_01C5; + + block_0158: + /* global_address global_id=0x3C */ + if Item.use(*(arg_06)) goto block_01BC; + + block_016C: + class_0A0C_slot_20(8, 20); + /* global_address global_id=0x3C */ + /* global_address global_id=0x3C */ + spawn class_0A0C_slot_32(pid, 60, 0x00000000); + suspend; + goto block_01C2; + + block_01BC: + goto block_01C5; + + block_01C2: + goto block_0150; + + block_01C5: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/HOFFMAN/slot_0E_calledFromAnim.txt b/USECODE/EUSECODE_extracted/pseudocode/HOFFMAN/slot_0E_calledFromAnim.txt new file mode 100644 index 0000000..dc18637 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/HOFFMAN/slot_0E_calledFromAnim.txt @@ -0,0 +1,19 @@ +function hoffman_calledFromAnim() /* entry=281 class_id=0x04D9 slot=0x0E */ +{ + var + referent, /* [BP+00h] type=0x69 */ + hoffy, /* [BP-02h] type=0x24 */ + deathBox, /* [BP-04h] type=0x24 */ + deadGuy, /* [BP-06h] type=0x24 */ + item; /* [BP-08h] type=0x24 */ + + entry: + set_info(0x021A, *(arg_06)); + process_exclude(); + hoffy = *(arg_06); + /* pop_global global_id=0x29 size=0x1 */ + /* pop_global global_id=0x37 size=0x1 */ + spawn class_0A1C_slot_20(1, 1, Item.getQLo(arg_06), *(arg_06), arg_06); + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/HOVER/slot_20_slot_20.txt b/USECODE/EUSECODE_extracted/pseudocode/HOVER/slot_20_slot_20.txt new file mode 100644 index 0000000..9764ce2 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/HOVER/slot_20_slot_20.txt @@ -0,0 +1,640 @@ +function hover_slot_20() /* entry=383 class_id=0x0A0D slot=0x20 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + tx, /* [BP+0Ch] type=0x69 */ + ty, /* [BP+0Eh] type=0x69 */ + tz, /* [BP+10h] type=0x69 */ + wp, /* [BP-05h] type=0x24 */ + total, /* [BP-07h] type=0x69 */ + counter, /* [BP-09h] type=0x69 */ + ddx, /* [BP-0Bh] type=0x69 */ + ddy, /* [BP-0Dh] type=0x69 */ + ddz, /* [BP-0Fh] type=0x69 */ + dx, /* [BP-11h] type=0x69 */ + dy, /* [BP-13h] type=0x69 */ + dz, /* [BP-15h] type=0x69 */ + cargo, /* [BP-17h] type=0x24 */ + hover, /* [BP-19h] type=0x24 */ + sx, /* [BP-1Bh] type=0x69 */ + sy, /* [BP-1Dh] type=0x69 */ + sz, /* [BP-1Eh] type=0x62 */ + a, /* [BP-20h] type=0x69 */ + b, /* [BP-22h] type=0x69 */ + c, /* [BP-24h] type=0x69 */ + xacc, /* [BP-28h] type=0x64 */ + yacc, /* [BP-2Ch] type=0x64 */ + zacc, /* [BP-30h] type=0x64 */ + xfract, /* [BP-34h] type=0x64 */ + yfract, /* [BP-38h] type=0x64 */ + zfract, /* [BP-3Ch] type=0x64 */ + l1, /* [BP-40h] type=0x64 */ + n; /* [BP-42h] type=0x24 */ + + entry: + set_info(1, 0); + hover = ref; + sx = Intrinsic0013(hover); + sy = Item.legal_create(hover); + sz = Item.getZ(hover); + class_0A0C_slot_3F((tx - sx)); + a = retval; + class_0A0C_slot_3F((ty - sy)); + b = retval; + class_0A0C_slot_3F((tz - sz)); + c = retval; + if ((a > b) && (a > c)) goto block_05B3; + + block_0183: + /* word_to_dword */ + l1 = a; + /* word_to_dword */ + yfract = b; + /* word_to_dword */ + yfract = (yfract * 0x0FA0); + yfract = (yfract / l1); + /* word_to_dword */ + yacc = 0; + /* word_to_dword */ + zfract = c; + /* word_to_dword */ + zfract = (zfract * 0x0FA0); + zfract = (zfract / l1); + /* word_to_dword */ + zacc = 0; + + block_01D7: + if 1 goto block_05B0; + + block_01DF: + if ((Item.getStatus(hover) & 0x1000) != 0) goto block_01FF; + + block_01F5: + /* word_to_dword */ + /* pop_result */ + goto block_0E24; + + block_01FF: + dx = (tx - sx); + dy = (ty - sy); + dz = (tz - sz); + ddx = 0; + ddy = 0; + ddz = 0; + if ((dx < 4) && (dx > -4)) goto block_0250; + + block_0246: + /* word_to_dword */ + /* pop_result */ + goto block_0E24; + + block_0250: + ddx = 4; + if (dx < 0) goto block_0269; + + block_0262: + ddx = -4; + + block_0269: + if dy goto block_02AD; + + block_0271: + yacc = (yacc + yfract); + /* word_to_dword */ + /* gt_dword */ + if 0x0FA0 goto block_02AD; + + block_0288: + /* word_to_dword */ + yacc = (yacc - 0x0FA0); + ddy = 4; + if (dy < 0) goto block_02AD; + + block_02A6: + ddy = -4; + + block_02AD: + if dz goto block_02F1; + + block_02B5: + zacc = (zacc + zfract); + /* word_to_dword */ + /* gt_dword */ + if 0x0FA0 goto block_02F1; + + block_02CC: + /* word_to_dword */ + zacc = (zacc - 0x0FA0); + ddz = 4; + if (dz < 0) goto block_02F1; + + block_02EA: + ddz = -4; + + block_02F1: + total = 0; + /* loopscr value_u8=0x24 */ + /* loop current_var=0xE9 string_bytes=0x1 loop_type=0x6 */ + + block_0306: + if condition goto block_039B; + + block_0309: + if (Intrinsic0016(cargo) != 0x033A) goto block_0397; + + block_031C: + if (cargo < 0x00FF) goto block_0382; + + block_032B: + n = cargo; + if Kernel.resetRef(n) goto block_036A; + + block_0341: + suspend; + goto block_037F; + + block_036A: + total = (1 + total); + + block_037F: + goto block_0397; + + block_0382: + total = (1 + total); + + block_0397: + /* loopnext */ + goto block_0306; + + block_039B: + sx = (sx + ddx); + sy = (sy + ddy); + sz = (sz + ddz); + wp = sx; + local_03 = sy; + local_01 = sz; + if (Intrinsic002C(hover) != 0) goto block_0459; + + block_03E2: + counter = 1; + + block_0405: + if (counter <= total) goto block_0456; + + block_0410: + cargo = Intrinsic0023(); + counter = (1 + counter); + goto block_0405; + + block_0456: + goto block_0587; + + block_0459: + if Item.pop(0, 1, wp, hover) goto block_04C9; + + block_046E: + counter = 1; + + block_0475: + if (counter <= total) goto block_04C6; + + block_0480: + cargo = Intrinsic0023(); + counter = (1 + counter); + goto block_0475; + + block_04C6: + goto block_0587; + + block_04C9: + counter = 1; + + block_04D0: + if (counter <= total) goto block_0518; + + block_04DB: + cargo = Intrinsic0023(); + counter = (1 + counter); + goto block_04D0; + + block_0518: + if (Intrinsic00BE(hover) & 16) goto block_0543; + + block_052A: + /* bit_not */ + /* word_to_dword */ + /* pop_result */ + goto block_0E24; + + block_0543: + sx = (sx - ddx); + sy = (sy - ddy); + sz = (sz - ddz); + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + + block_0587: + spawn class_0A0C_slot_32(pid, 1, 0x00000000); + suspend; + goto block_01D7; + + block_05B0: + goto block_0E24; + + block_05B3: + if ((b > a) && (b > c)) goto block_09F7; + + block_05C7: + /* word_to_dword */ + l1 = b; + /* word_to_dword */ + xfract = a; + /* word_to_dword */ + xfract = (xfract * 0x0FA0); + xfract = (xfract / l1); + /* word_to_dword */ + xacc = 0; + /* word_to_dword */ + zfract = c; + /* word_to_dword */ + zfract = (zfract * 0x0FA0); + zfract = (zfract / l1); + /* word_to_dword */ + zacc = 0; + + block_061B: + if 1 goto block_09F4; + + block_0623: + if ((Item.getStatus(hover) & 0x1000) != 0) goto block_0643; + + block_0639: + /* word_to_dword */ + /* pop_result */ + goto block_0E24; + + block_0643: + dx = (tx - sx); + dy = (ty - sy); + dz = (tz - sz); + ddx = 0; + ddy = 0; + ddz = 0; + if ((dy < 4) && (dy > -4)) goto block_0694; + + block_068A: + /* word_to_dword */ + /* pop_result */ + goto block_0E24; + + block_0694: + if dx goto block_06D8; + + block_069C: + xacc = (xacc + xfract); + /* word_to_dword */ + /* gt_dword */ + if 0x0FA0 goto block_06D8; + + block_06B3: + /* word_to_dword */ + xacc = (xacc - 0x0FA0); + ddx = 4; + if (dx < 0) goto block_06D8; + + block_06D1: + ddx = -4; + + block_06D8: + ddy = 4; + if (dy < 0) goto block_06F1; + + block_06EA: + ddy = -4; + + block_06F1: + if dz goto block_0735; + + block_06F9: + zacc = (zacc + zfract); + /* word_to_dword */ + /* gt_dword */ + if 0x0FA0 goto block_0735; + + block_0710: + /* word_to_dword */ + zacc = (zacc - 0x0FA0); + ddz = 4; + if (dz < 0) goto block_0735; + + block_072E: + ddz = -4; + + block_0735: + total = 0; + /* loopscr value_u8=0x24 */ + /* loop current_var=0xE9 string_bytes=0x1 loop_type=0x6 */ + + block_074A: + if condition goto block_07DF; + + block_074D: + if (Intrinsic0016(cargo) != 0x033A) goto block_07DB; + + block_0760: + if (cargo < 0x00FF) goto block_07C6; + + block_076F: + n = cargo; + if Kernel.resetRef(n) goto block_07AE; + + block_0785: + suspend; + goto block_07C3; + + block_07AE: + total = (1 + total); + + block_07C3: + goto block_07DB; + + block_07C6: + total = (1 + total); + + block_07DB: + /* loopnext */ + goto block_074A; + + block_07DF: + sx = (sx + ddx); + sy = (sy + ddy); + sz = (sz + ddz); + wp = sx; + local_03 = sy; + local_01 = sz; + if (Intrinsic002C(hover) != 0) goto block_089D; + + block_0826: + counter = 1; + + block_0849: + if (counter <= total) goto block_089A; + + block_0854: + cargo = Intrinsic0023(); + counter = (1 + counter); + goto block_0849; + + block_089A: + goto block_09CB; + + block_089D: + if Item.pop(0, 1, wp, hover) goto block_090D; + + block_08B2: + counter = 1; + + block_08B9: + if (counter <= total) goto block_090A; + + block_08C4: + cargo = Intrinsic0023(); + counter = (1 + counter); + goto block_08B9; + + block_090A: + goto block_09CB; + + block_090D: + counter = 1; + + block_0914: + if (counter <= total) goto block_095C; + + block_091F: + cargo = Intrinsic0023(); + counter = (1 + counter); + goto block_0914; + + block_095C: + if (Intrinsic00BE(hover) & 16) goto block_0987; + + block_096E: + /* bit_not */ + /* word_to_dword */ + /* pop_result */ + goto block_0E24; + + block_0987: + sx = (sx - ddx); + sy = (sy - ddy); + sz = (sz - ddz); + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + + block_09CB: + spawn class_0A0C_slot_32(pid, 1, 0x00000000); + suspend; + goto block_061B; + + block_09F4: + goto block_0E24; + + block_09F7: + /* word_to_dword */ + l1 = c; + /* word_to_dword */ + xfract = a; + /* word_to_dword */ + xfract = (xfract * 0x0FA0); + xfract = (xfract / l1); + /* word_to_dword */ + xacc = 0; + /* word_to_dword */ + yfract = b; + /* word_to_dword */ + yfract = (yfract * 0x0FA0); + yfract = (yfract / l1); + /* word_to_dword */ + yacc = 0; + + block_0A4B: + if 1 goto block_0E24; + + block_0A53: + if ((Item.getStatus(hover) & 0x1000) != 0) goto block_0A73; + + block_0A69: + /* word_to_dword */ + /* pop_result */ + goto block_0E24; + + block_0A73: + dx = (tx - sx); + dy = (ty - sy); + dz = (tz - sz); + ddx = 0; + ddy = 0; + ddz = 0; + if ((dz < 4) && (dz > -4)) goto block_0AC4; + + block_0ABA: + /* word_to_dword */ + /* pop_result */ + goto block_0E24; + + block_0AC4: + if dx goto block_0B08; + + block_0ACC: + xacc = (xacc + xfract); + /* word_to_dword */ + /* gt_dword */ + if 0x0FA0 goto block_0B08; + + block_0AE3: + /* word_to_dword */ + xacc = (xacc - 0x0FA0); + ddx = 4; + if (dx < 0) goto block_0B08; + + block_0B01: + ddx = -4; + + block_0B08: + if dy goto block_0B4C; + + block_0B10: + yacc = (yacc + yfract); + /* word_to_dword */ + /* gt_dword */ + if 0x0FA0 goto block_0B4C; + + block_0B27: + /* word_to_dword */ + yacc = (yacc - 0x0FA0); + ddy = 4; + if (dy < 0) goto block_0B4C; + + block_0B45: + ddy = -4; + + block_0B4C: + ddz = 4; + if (dz < 0) goto block_0B65; + + block_0B5E: + ddz = -4; + + block_0B65: + total = 0; + /* loopscr value_u8=0x24 */ + /* loop current_var=0xE9 string_bytes=0x1 loop_type=0x6 */ + + block_0B7A: + if condition goto block_0C0F; + + block_0B7D: + if (Intrinsic0016(cargo) != 0x033A) goto block_0C0B; + + block_0B90: + if (cargo < 0x00FF) goto block_0BF6; + + block_0B9F: + n = cargo; + if Kernel.resetRef(n) goto block_0BDE; + + block_0BB5: + suspend; + goto block_0BF3; + + block_0BDE: + total = (1 + total); + + block_0BF3: + goto block_0C0B; + + block_0BF6: + total = (1 + total); + + block_0C0B: + /* loopnext */ + goto block_0B7A; + + block_0C0F: + sx = (sx + ddx); + sy = (sy + ddy); + sz = (sz + ddz); + wp = sx; + local_03 = sy; + local_01 = sz; + if (Intrinsic002C(hover) != 0) goto block_0CCD; + + block_0C56: + counter = 1; + + block_0C79: + if (counter <= total) goto block_0CCA; + + block_0C84: + cargo = Intrinsic0023(); + counter = (1 + counter); + goto block_0C79; + + block_0CCA: + goto block_0DFB; + + block_0CCD: + if Item.pop(0, 1, wp, hover) goto block_0D3D; + + block_0CE2: + counter = 1; + + block_0CE9: + if (counter <= total) goto block_0D3A; + + block_0CF4: + cargo = Intrinsic0023(); + counter = (1 + counter); + goto block_0CE9; + + block_0D3A: + goto block_0DFB; + + block_0D3D: + counter = 1; + + block_0D44: + if (counter <= total) goto block_0D8C; + + block_0D4F: + cargo = Intrinsic0023(); + counter = (1 + counter); + goto block_0D44; + + block_0D8C: + if (Intrinsic00BE(hover) & 16) goto block_0DB7; + + block_0D9E: + /* bit_not */ + /* word_to_dword */ + /* pop_result */ + goto block_0E24; + + block_0DB7: + sx = (sx - ddx); + sy = (sy - ddy); + sz = (sz - ddz); + spawn class_0A0C_slot_32(pid, 10, 0x00000000); + suspend; + + block_0DFB: + spawn class_0A0C_slot_32(pid, 1, 0x00000000); + suspend; + goto block_0A4B; + + block_0E24: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/HOVER/slot_21_slot_21.txt b/USECODE/EUSECODE_extracted/pseudocode/HOVER/slot_21_slot_21.txt new file mode 100644 index 0000000..ab178dd --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/HOVER/slot_21_slot_21.txt @@ -0,0 +1,134 @@ +function hover_slot_21() /* entry=383 class_id=0x0A0D slot=0x21 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + h, /* [BP-02h] type=0x69 */ + firstEgg, /* [BP-04h] type=0x69 */ + targetEgg, /* [BP-06h] type=0x69 */ + time, /* [BP-08h] type=0x69 */ + oldqhi, /* [BP-0Ah] type=0x69 */ + link, /* [BP-0Ch] type=0x69 */ + tx, /* [BP-0Eh] type=0x69 */ + ty, /* [BP-10h] type=0x69 */ + tz, /* [BP-11h] type=0x62 */ + hover, /* [BP-13h] type=0x24 */ + item; /* [BP-15h] type=0x24 */ + + entry: + set_info(1, 0); + hover = ref; + h = Intrinsic00BE(hover); + oldqhi = h; + firstEgg = (h & 15); + targetEgg = firstEgg; + + block_0F73: + if 1 goto block_1256; + + block_0F7B: + if ((Item.getStatus(hover) & 0x1000) != 0) goto block_0FC9; + + block_0F91: + spawn class_0A0D_slot_23(pid, 1, ref, arg_06); + suspend; + goto block_1256; + + block_0FC9: + link = Item.getQHi(hover); + tx = -1; + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xEB string_bytes=0x6 loop_type=0x2 */ + + block_0FFA: + if condition goto block_106C; + + block_0FFD: + if (Item.getFrame(item) != targetEgg) goto block_1068; + + block_100F: + if ((link != 0) || (link != Item.getQHi(item))) goto block_1068; + + block_102A: + tx = Intrinsic0013(item); + ty = Item.legal_create(item); + tz = Item.getZ(item); + time = Intrinsic00BE(item); + goto block_106C; + + block_1068: + /* loopnext */ + goto block_0FFA; + + block_106C: + if (tx != -1) goto block_10CE; + + block_1079: + if (targetEgg != firstEgg) goto block_10A6; + + block_1084: + /* bit_not */ + goto block_1256; + + block_10A6: + targetEgg = firstEgg; + h = (h & 0x00F0); + goto block_0F73; + + block_10CE: + spawn class_0A0D_slot_20(pid, tz, ty, tx, ref, arg_06); + suspend; + /* dword_to_word */ + if (process_result != 1) goto block_1112; + + block_10FF: + goto block_1256; + + block_1112: + spawn class_0A0D_slot_24(pid, targetEgg, ref, arg_06); + suspend; + if ((Item.getStatus(hover) & 0x1000) != 0) goto block_1185; + + block_114D: + spawn class_0A0D_slot_23(pid, 1, ref, arg_06); + suspend; + goto block_1256; + + block_1185: + if (h & 0x0080) goto block_11BA; + + block_1191: + spawn class_0A18_slot_20(pid, (0 + 0x0080), item, arg_06); + suspend; + + block_11BA: + if (time != 0) goto block_11EE; + + block_11C5: + spawn class_0A0C_slot_32(pid, (time * 10), 0x00000000); + suspend; + + block_11EE: + h = Intrinsic00BE(hover); + if ((h & 15) != targetEgg) goto block_1220; + + block_1210: + targetEgg = ((targetEgg + 1) & 15); + goto block_1238; + + block_1220: + firstEgg = (h & 15); + targetEgg = firstEgg; + oldqhi = h; + + block_1238: + h = (h & 0x00F0); + goto block_0F73; + + block_1256: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/HOVER/slot_22_slot_22.txt b/USECODE/EUSECODE_extracted/pseudocode/HOVER/slot_22_slot_22.txt new file mode 100644 index 0000000..3ce6c7a --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/HOVER/slot_22_slot_22.txt @@ -0,0 +1,62 @@ +function hover_slot_22() /* entry=383 class_id=0x0A0D slot=0x22 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + var, /* [BP+0Ah] type=0x69 */ + a; /* [BP-02h] type=0x69 */ + + entry: + set_info(0x021B, *(arg_06)); + if (var != 0x00FF) goto block_132C; + + block_12FC: + if ((Item.getStatus(arg_06) & 0x1000) != 0) goto block_1329; + + block_1315: + spawn class_0A0D_slot_21(*(arg_06), arg_06); + + block_1329: + goto block_14C5; + + block_132C: + if (var != 0x00FE) goto block_134A; + + block_1338: + /* bit_not */ + goto block_14C5; + + block_134A: + if (var != 0x00FD) goto block_140F; + + block_1356: + /* bit_not */ + spawn class_0A0C_slot_32(pid, 20, 0x00000000); + suspend; + a = Intrinsic00BE(arg_06); + spawn class_0A0D_slot_20(pid, 0, Item.legal_create(arg_06), Intrinsic0013(arg_06), *(arg_06), arg_06); + suspend; + /* bit_not */ + goto block_14C5; + + block_140F: + if (var != 0x00FC) goto block_147A; + + block_141B: + /* bit_not */ + spawn class_0A0C_slot_32(pid, 20, 0x00000000); + suspend; + spawn class_0A0D_slot_23(pid, 0, *(arg_06), arg_06); + suspend; + goto block_14C5; + + block_147A: + if ((Item.getStatus(arg_06) & 0x1000) != 0) goto block_14C5; + + block_14A0: + spawn class_0A0D_slot_21(pid, *(arg_06), arg_06); + suspend; + + block_14C5: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/HOVER/slot_23_slot_23.txt b/USECODE/EUSECODE_extracted/pseudocode/HOVER/slot_23_slot_23.txt new file mode 100644 index 0000000..a8e2d7e --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/HOVER/slot_23_slot_23.txt @@ -0,0 +1,79 @@ +function hover_slot_23() /* entry=383 class_id=0x0A0D slot=0x23 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + check, /* [BP+0Ch] type=0x62 */ + cargo, /* [BP-02h] type=0x24 */ + item, /* [BP-04h] type=0x24 */ + hover, /* [BP-06h] type=0x24 */ + dx, /* [BP-08h] type=0x69 */ + dy, /* [BP-0Ah] type=0x69 */ + dz, /* [BP-0Ch] type=0x69 */ + firstEgg, /* [BP-0Eh] type=0x69 */ + link, /* [BP-10h] type=0x69 */ + x, /* [BP-12h] type=0x69 */ + y, /* [BP-14h] type=0x69 */ + z; /* [BP-15h] type=0x62 */ + + entry: + set_info(1, 0); + hover = ref; + if ((check != 1) && (Intrinsic002C(hover) != 1)) goto block_1524; + + block_151E: + goto block_1678; + + block_1524: + firstEgg = (Intrinsic00BE(hover) & 15); + link = Item.getQHi(hover); + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */ + + block_155F: + if condition goto block_1676; + + block_1562: + if (Item.getFrame(item) != firstEgg) goto block_1672; + + block_1574: + if ((link != 0) || (link != Item.getQHi(item))) goto block_1672; + + block_158F: + x = Intrinsic0013(item); + y = Item.legal_create(item); + z = Item.getZ(item); + dx = (x - Intrinsic0013(hover)); + dy = (y - Item.legal_create(hover)); + dz = (z - Item.getZ(hover)); + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x6 */ + + block_15FA: + if condition goto block_164E; + + block_15FD: + if (Intrinsic0016(cargo) != 0x033A) goto block_164A; + + block_1610: + + block_164A: + /* loopnext */ + goto block_15FA; + + block_164E: + goto block_1678; + + block_1672: + /* loopnext */ + goto block_155F; + + block_1676: + + block_1678: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/HOVER/slot_24_slot_24.txt b/USECODE/EUSECODE_extracted/pseudocode/HOVER/slot_24_slot_24.txt new file mode 100644 index 0000000..f6c209a --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/HOVER/slot_24_slot_24.txt @@ -0,0 +1,72 @@ +function hover_slot_24() /* entry=383 class_id=0x0A0D slot=0x24 */ +{ + var + referent, /* [BP+00h] type=0x69 */ + ref, /* [BP+0Ah] type=0x69 */ + egg, /* [BP+0Ch] type=0x69 */ + cargo, /* [BP-02h] type=0x24 */ + item, /* [BP-04h] type=0x24 */ + hover, /* [BP-06h] type=0x24 */ + dx, /* [BP-08h] type=0x69 */ + dy, /* [BP-0Ah] type=0x69 */ + dz, /* [BP-0Ch] type=0x69 */ + firstEgg, /* [BP-0Eh] type=0x69 */ + link, /* [BP-10h] type=0x69 */ + x, /* [BP-12h] type=0x69 */ + y, /* [BP-14h] type=0x69 */ + z; /* [BP-15h] type=0x62 */ + + entry: + set_info(1, 0); + hover = ref; + link = Item.getQHi(hover); + /* loopscr value_u8=0x24 */ + /* loopscr value_u8=0x3D */ + /* loopscr value_u8=0x40 */ + /* loopscr value_u8=0x25 */ + /* loop current_var=0xFC string_bytes=0x6 loop_type=0x2 */ + + block_173E: + if condition goto block_1855; + + block_1741: + if (Item.getFrame(item) != egg) goto block_1851; + + block_1753: + if ((link != 0) || (link != Item.getQHi(item))) goto block_1851; + + block_176E: + x = Intrinsic0013(item); + y = Item.legal_create(item); + z = Item.getZ(item); + dx = (x - Intrinsic0013(hover)); + dy = (y - Item.legal_create(hover)); + dz = (z - Item.getZ(hover)); + /* loopscr value_u8=0x24 */ + /* loop current_var=0xFE string_bytes=0x1 loop_type=0x6 */ + + block_17D9: + if condition goto block_182D; + + block_17DC: + if (Intrinsic0016(cargo) != 0x033A) goto block_1829; + + block_17EF: + + block_1829: + /* loopnext */ + goto block_17D9; + + block_182D: + goto block_1857; + + block_1851: + /* loopnext */ + goto block_173E; + + block_1855: + + block_1857: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/HOVER1/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/HOVER1/slot_0A_equip.txt new file mode 100644 index 0000000..f839c28 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/HOVER1/slot_0A_equip.txt @@ -0,0 +1,10 @@ +function hover1_equip() /* entry=292 class_id=0x04F0 slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + spawn class_0A0D_slot_22(pid, arg_0A, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/HOVER1/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/HOVER1/slot_0B_unequip.txt new file mode 100644 index 0000000..df8dde7 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/HOVER1/slot_0B_unequip.txt @@ -0,0 +1,15 @@ +function hover1_unequip() /* entry=292 class_id=0x04F0 slot=0x0B */ +{ + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + if (arg_0A != 0) goto block_0115; + + block_00F6: + spawn class_04F0_enterFastArea(pid, arg_06); + suspend; + + block_0115: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/HOVER1/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/HOVER1/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..b572e9b --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/HOVER1/slot_0F_enterFastArea.txt @@ -0,0 +1,17 @@ +function hover1_enterFastArea() /* entry=292 class_id=0x04F0 slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if ((Intrinsic00BE(arg_06) & 32) != 0) goto block_01EF; + + block_01C2: + if ((Item.getStatus(arg_06) & 0x1000) != 0) goto block_01EF; + + block_01DB: + spawn class_0A0D_slot_21(*(arg_06), arg_06); + + block_01EF: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/HOVER1/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/HOVER1/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..437eb80 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/HOVER1/slot_10_leaveFastArea.txt @@ -0,0 +1,14 @@ +function hover1_leaveFastArea() /* entry=292 class_id=0x04F0 slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + if ((Intrinsic00BE(arg_06) & 64) != 0) goto block_0240; + + block_0231: + /* bit_not */ + + block_0240: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/HOVER_EW/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/HOVER_EW/slot_0A_equip.txt new file mode 100644 index 0000000..29f1b87 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/HOVER_EW/slot_0A_equip.txt @@ -0,0 +1,10 @@ +function hover_ew_equip() /* entry=145 class_id=0x02AB slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + spawn class_0A0D_slot_22(pid, arg_0A, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/HOVER_EW/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/HOVER_EW/slot_0B_unequip.txt new file mode 100644 index 0000000..3deb51c --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/HOVER_EW/slot_0B_unequip.txt @@ -0,0 +1,15 @@ +function hover_ew_unequip() /* entry=145 class_id=0x02AB slot=0x0B */ +{ + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + if (arg_0A != 0) goto block_0115; + + block_00F6: + spawn class_02AB_enterFastArea(pid, arg_06); + suspend; + + block_0115: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/HOVER_EW/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/HOVER_EW/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..dc11069 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/HOVER_EW/slot_0F_enterFastArea.txt @@ -0,0 +1,17 @@ +function hover_ew_enterFastArea() /* entry=145 class_id=0x02AB slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if ((Intrinsic00BE(arg_06) & 32) != 0) goto block_01EF; + + block_01C2: + if ((Item.getStatus(arg_06) & 0x1000) != 0) goto block_01EF; + + block_01DB: + spawn class_0A0D_slot_21(*(arg_06), arg_06); + + block_01EF: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/HOVER_EW/slot_10_leaveFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/HOVER_EW/slot_10_leaveFastArea.txt new file mode 100644 index 0000000..439963f --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/HOVER_EW/slot_10_leaveFastArea.txt @@ -0,0 +1,14 @@ +function hover_ew_leaveFastArea() /* entry=145 class_id=0x02AB slot=0x10 */ +{ + entry: + set_info(0x021C, *(arg_06)); + process_exclude(); + if ((Intrinsic00BE(arg_06) & 64) != 0) goto block_0240; + + block_0231: + /* bit_not */ + + block_0240: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/HOVER_NS/slot_0A_equip.txt b/USECODE/EUSECODE_extracted/pseudocode/HOVER_NS/slot_0A_equip.txt new file mode 100644 index 0000000..dc97707 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/HOVER_NS/slot_0A_equip.txt @@ -0,0 +1,10 @@ +function hover_ns_equip() /* entry=146 class_id=0x02AD slot=0x0A */ +{ + entry: + set_info(0x0211, *(arg_06)); + process_exclude(); + spawn class_0A0D_slot_22(pid, arg_0A, arg_06); + suspend; + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/HOVER_NS/slot_0B_unequip.txt b/USECODE/EUSECODE_extracted/pseudocode/HOVER_NS/slot_0B_unequip.txt new file mode 100644 index 0000000..2f09617 --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/HOVER_NS/slot_0B_unequip.txt @@ -0,0 +1,15 @@ +function hover_ns_unequip() /* entry=146 class_id=0x02AD slot=0x0B */ +{ + entry: + set_info(0x0212, *(arg_06)); + process_exclude(); + if (arg_0A != 0) goto block_0115; + + block_00F6: + spawn class_02AD_enterFastArea(pid, arg_06); + suspend; + + block_0115: + return; + +} diff --git a/USECODE/EUSECODE_extracted/pseudocode/HOVER_NS/slot_0F_enterFastArea.txt b/USECODE/EUSECODE_extracted/pseudocode/HOVER_NS/slot_0F_enterFastArea.txt new file mode 100644 index 0000000..7d49bdc --- /dev/null +++ b/USECODE/EUSECODE_extracted/pseudocode/HOVER_NS/slot_0F_enterFastArea.txt @@ -0,0 +1,17 @@ +function hover_ns_enterFastArea() /* entry=146 class_id=0x02AD slot=0x0F */ +{ + entry: + set_info(0x021B, *(arg_06)); + process_exclude(); + if ((Intrinsic00BE(arg_06) & 32) != 0) goto block_01EF; + + block_01C2: + if ((Item.getStatus(arg_06) & 0x1000) != 0) goto block_01EF; + + block_01DB: + spawn class_0A0D_slot_21(*(arg_06), arg_06); + + block_01EF: + return; + +} diff --git a/crusader_decompilation_notes.md b/crusader_decompilation_notes.md index 4f5e759..662f9f0 100644 --- a/crusader_decompilation_notes.md +++ b/crusader_decompilation_notes.md @@ -4,7 +4,15 @@ This file is an index. Detailed notes have been split into the `docs/` folder by Active live analysis target is now `CRUSADER.EXE`. Existing `CRUSADER-RAW.EXE` notes remain in scope as cross-reference evidence and should be cited alongside live NE addresses when they support a rename, variable role, or behavior claim. -Recent verified batch: [docs/ne-segment1.md](docs/ne-segment1.md) now carries the strongest live proof that the direct No Remorse immortality combo sits behind the same F10 cheat lane under the `0x6045` latch, that event `0x410` is the CD transfer display toggle rather than immortality, that the `jassica16` matcher is a scan-code sequence ending with top-row `1` / `6`, that the shared `0x85f` gameplay-input gate now has clearer live names around its Laurie, controller, and camera call sites, and that the hidden seg109 "cheat menu" is best modeled as a usecode debugger whose most likely original entry point was the surviving seg1408 breakpoint callback lane around `0x659c/0x659e`, not the cheat-toggle event helper. New live renames in that debugger lane now cover the seg1408 breakpoint/state object, sorted breakpoint table, callstack/current-entry stack, and single-step flags, while the current `REGRET.EXE` cross-check still moves the latch-enabling secret code from `jassica16` to `loosecannon` and the keyboard helper swap is now code-proven in No Remorse: the old Alt/Ctrl names on `11c8:01a8` and `11c8:018a` were reversed against BIOS `INT 16h, AH=12h` shift-flag bits, and the repeat path explains why the practical gesture behaves as `F10`-then-`Ctrl`. +Recent verified batch: [docs/retail-debug-arg.md](docs/retail-debug-arg.md) now records the live NE proof that retail `CRUSADER.EXE` still recognizes and executes a real `-debug` command-line branch. That branch prints `Debugging mode ON.`, sets `g_debugMsgLevel` at `1478:87e0`, and toggles two debug globals at `1478:0845/0859`. The later sink pass also closes the text-output target more tightly: `ProbablyPrintDebugMessage` formats through the static stdio-style table at `1478:6c32..6c81` and writes to the handle-`1` entry at `1478:6c46`, so the non-video side is ordinary DOS `stdout` gated by the debug threshold, plus the already-confirmed AVI timing overlay. Current best read remains `surviving debug-output / instrumentation switch`, not `the missing bootstrap for the hidden seg109/seg1408 usecode debugger`. The same batch also leaves the earlier `-laurie` and `0x659c/659e` debugger-state conclusions intact: `-debug` is a separate switch and is not currently evidenced as constructing the hidden usecode-debugger break-state object. + +Latest doc-reconciliation batch: [docs/ne-segment1.md](docs/ne-segment1.md) now has a combined hidden-debugger component table that explicitly separates the seg109/raw-reference UI wrappers (`000b:9a86`, `000b:9c0d`, `000b:b3b1`, `000b:b62c`, `000b:2882`) from the live seg1408 breakpoint-state helpers (`1408:0000`, `1408:0053`, `1408:00dd`, `1408:029e`, `1408:03b0`, `1408:03f7`, `1408:0419`, `1408:0432`, `1408:0444`) and the interpreter hook at `1418:04aa..04b5`. Current best read remains `two connected layers of one hidden usecode debugger`, not `conflicting address claims for the same function family`. + +Follow-up cheat-key correction pass: [docs/ne-segment1.md](docs/ne-segment1.md) now also records a live NE cleanup of several folklore keyboard-cheat claims. `~` is a real runtime cheat-latch toggle at `13e8:203d`, `Ctrl+C` is wrong for this build and should be `Ctrl+L` for the coordinate popup at `13e8:255e`, and the third F7-family overlay really does exist as a separate `Ctrl+F7` path at `13e8:1a20` alongside the other two cheat-gated F7 overlay toggles. + +That same note now also separates `~` from `jassica16` more cleanly: `jassica16` is the raw scan-code unlock path that toggles both `1478:0844` and `1478:6045` and sets the extra post-sequence latch `1478:8c52`, while `~` is only the later translated logical-`0x7e` hotkey that flips `1478:6045` after `1478:0844` is already on. The F7-family clarification is tighter too: `Ctrl+F7` is best read as an egg-hatcher trigger-range overlay rather than a third generic background grid. + +The same `docs/ne-segment1.md` note now also has the first consolidated cheat/debug key matrix for the live NE target, including which paths need the broader Laurie/debug master gate (`1478:0844`), which ones need the full keyboard-cheat latch (`1478:6045`), and which ones depend on the extra post-`jassica16` latch (`1478:8c52`). That pass also expands the egg-hatcher explanation: `Ctrl+F7` is now documented as a live `EggHatcherProcess` range visualizer, with practical guidance on where to look for egg-trigger regions in gameplay. ## Documentation Structure @@ -22,7 +30,13 @@ Recent verified batch: [docs/ne-segment1.md](docs/ne-segment1.md) now carries th | [docs/crusader-disasm-reference.md](docs/crusader-disasm-reference.md) | Local auxiliary disassembly corpus at `K:/ghidra/crusader-disasm`: handwritten notes, shape tables, map dumps, opcode lists, intrinsic/function dumps, and the safe reuse rules for porting into `CRUSADER.EXE` | | [docs/ne-hole-filling-priorities.md](docs/ne-hole-filling-priorities.md) | Ranked `CRUSADER.EXE` hole-filling tracker: NE-side unclear lanes, the verified raw-side knowledge that can close them, and the recommended order for old-to-new porting passes | | [docs/retail-debugger-patch-attempts.md](docs/retail-debugger-patch-attempts.md) | Chronological log of retail `CRUSADER.EXE` debugger-unlock patch attempts, byte-level designs, runtime failures, root-cause findings, and the current live candidate | +| [docs/retail-debug-arg.md](docs/retail-debug-arg.md) | Focused note on the retail `-debug` command-line switch: live parser evidence, exact startup message, surviving globals, segment `1468` instrumentation path, and why it is currently separate from the hidden usecode debugger bootstrap | | [docs/scummvm-crusader-reference.md](docs/scummvm-crusader-reference.md) | ScummVM Ultima8/Pentagram Crusader integration survey: USECODE/event tables, FLEX/resource formats, world/map loaders, HUD/media, and RE follow-up priorities | | [docs/pentagram-crusader-reference.md](docs/pentagram-crusader-reference.md) | Pentagram-source Crusader/U8 reference: direct Crusader USECODE parser and VM evidence, U8 usecode docs, runtime-confidence limits, and cross-checks against the ScummVM note | | [docs/usecode-roundtrip-ir.md](docs/usecode-roundtrip-ir.md) | ScummVM-to-binary USECODE cross-walk, owner-loaded class-layout and header/event-count reconciliation, conservative IR v0 plan, and the generated class-event/body-window outputs that now ground reversible `_BOOT`, `SURCAM*`, and environmental family decompile artifacts plus repeated-family regression checks | | [docs/usecode-pentagram-ghidra-path.md](docs/usecode-pentagram-ghidra-path.md) | Pentagram-derived Crusader USECODE parser plan, proof-of-concept workflow, canonical IR v1 goals, and the Ghidra-side annotation import path | +| [docs/usecode-tooling-comparison.md](docs/usecode-tooling-comparison.md) | Comparison of Pentagram's converter/disassembler, the local `crusader-disasm` corpus/scripts, and the current workspace parser/pseudocode exporter, with emphasis on assumptions, strengths, and repo-specific differences | +| [docs/usecode-tool-improvement-plan.md](docs/usecode-tool-improvement-plan.md) | Concrete next-step plan for the local USECODE parser/decompiler, distilled from the Pentagram and `crusader-disasm` comparison into prioritized parser, loop-decoding, intrinsic, trailer, corpus, and runtime-bridge upgrades | +| [docs/usecode-jelyhack-analysis.md](docs/usecode-jelyhack-analysis.md) | Focused analysis of exported `JELYHACK` / `JELYH2` pseudocode, the tiny shared `use` stub, and why the current best model remains `referent anchor + neighboring event-bearing attachment` | +| [docs/usecode-equipment-system.md](docs/usecode-equipment-system.md) | Evidence-backed note on Crusader's surviving `equip` / `unequip` event system, including live compiled-side dispatcher proof, corpus-wide slot counts, actor/turret/environment examples, and the current best model of `equip` as a generalized inherited Ultima-style item event | +| [docs/usecode-alarmhat-analysis.md](docs/usecode-alarmhat-analysis.md) | Focused analysis of exported `ALARMHAT::equip`, the nearby `shape 0x04D0` equip loops, alarm-family comparisons, and the current gameplay-facing read of `ALARMHAT` as a local alarm-state driver | diff --git a/docs/crusader-disasm-reference.md b/docs/crusader-disasm-reference.md index 9bcf1b4..c44db58 100644 --- a/docs/crusader-disasm-reference.md +++ b/docs/crusader-disasm-reference.md @@ -91,6 +91,28 @@ Current unsafe use: - direct rename authority for modern Ghidra functions - assuming one game's intrinsic numbering matches another without local confirmation +### Validated follow-up on `misc_crusader_notes.txt` + +Several of the old scratchpad items are now tight enough to record as verified follow-up rather than open leads. + +- `STEAM2` (`shape 1297`) is no longer just a handwritten event hint. Local extracted data now confirms non-empty `STEAM2::enterFastArea` (`event 0x0f`) and `STEAM2::gotHit` (`event 0x06`) bodies in `USECODE/EUSECODE_extracted/class_event_index.tsv`, which matches the old note's `event 15 (enter fast area)` and `Got Hit: spawn process` direction. +- The old standalone labels `FUN_1130_0896`, `FUN_1130_32af`, `FUN_1020_0000`, and `FUN_1128_026b` are now closed in the live NE database as `Key_HandleOptionKeys`, `NPC_ResetToStartOfAnim`, `Game_Start`, and `Item_ReceiveHit`. The historical notes were directionally useful, but the live names now capture their real scope: `NPC_ResetToStartOfAnim` resets an NPC/item frame to the first frame of a chosen animation and updates the stored last-anim state, while `Item_ReceiveHit` is the main damage/death handler rather than a loose "various deaths" helper. +- The `Item_ReceiveHit` decomp also closes several handwritten shape hints directly from code. It uses `0x576` for the burning human replacement path (`flaming guy running around`), `0x5a9` and `0x52b` for shield-zap sprites, and still routes controlled-NPC death through `Target_PutTargetingReticleOnItem(0)`, which keeps the old `0x59a` reticle note on the right subsystem. +- The old `ItemNPC_AnotherCreate` area-search TODO is now directly closed in the live NE program: `10e8:2710` (now renamed `NPC_CreateIfAreaSearchValid`) allocates/initializes an `AreaSearch` struct, checks `AreaSearch_IsValidPositionPt`, and only then runs `NPC_Create` plus `Item_PopToCoords`. So the practical role is `create NPC only if the requested point passes area-search placement validation`, not a second independent spawn path. +- The handwritten `Kernel_11d0_2491` gloss was incomplete. The live function is not merely "prints kernel info"; it serializes the process table, timer/keyboard/mouse process-id lists, process sizes, and per-process state through file-like writer callbacks, then restores timer/interrupt state afterward. Current safest read is `kernel/process snapshot writer` rather than a simple printf-style diagnostics helper. +- `FREE::ordinal3C` is still corpus-side evidence rather than live-NE proof, but the old disassembly now constrains it much better than the original note implied. It clears the alert state, checks avatar stasis, rolls random thresholds, and spawns `FREE::ordinal21` with a small set of ordinals (`0x0e`, `0x0f`, `0x00b6`, `0x00d2`). That makes `random global FREE event chooser after alert clear` a safer description than the narrower `random voices when alarm is disabled` guess. +- The old `high priority unknown intrinsic: 01E - fire` note is now effectively closed as a hint. The old Remorse intrinsic tables map `Int01E` to `Actor::I_maybeFire(...)`, and the current live export map ties `Int01E` to `1128:11da`. That is still hint-level naming until the compiled body is analyzed locally, but it is no longer an unidentified ordinal. +- The `combat.dat` scratch note is also better grounded now. The external corpus already showed the extracted tactic files are identical between Remorse and Regret, and the live `CRUSADER.EXE` export map now has NPC fields such as `combatDatTacticPtr`, `combatDatTacticCurOffset`, `combatDatBlockNo`, and `tacticNo`. So the named tactic strings are good portable data labels, but they should still be attached to tactic records and NPC state fields, not promoted directly into compiled function names. + +Two shape hints also have light compiled-side support now: + +- `0x59a` is passed into `SpriteProcess::I_createSprite` from the cursor/targeting lane in segment `1130`, which fits the old `targetting reticle` note. +- `0x5a3` is passed into `SpriteProcess::I_createSprite` from the `13e8` gameplay/UI lane and stored at `0x6054`, which fits the old `use item crosshairs` note. + +Remaining caution: + +- these follow-ups make the scratchpad much more reusable, but `misc_crusader_notes.txt` is still an auxiliary corpus. The verified parts above should be cited with their live NE addresses or extracted-data files when reused elsewhere in the repo. + ### Combat data note `combat_dat/readme.txt` records that the extracted `combat.dat` tactic files are identical between No Remorse and No Regret. diff --git a/docs/ne-hole-filling-priorities.md b/docs/ne-hole-filling-priorities.md index 73c6477..5201b80 100644 --- a/docs/ne-hole-filling-priorities.md +++ b/docs/ne-hole-filling-priorities.md @@ -55,13 +55,15 @@ Evidence used here: ### Latest verified NE pass - `0005:295f` is now the only recovered non-hub consumer of `entity_vm_slot_index_from_entity` in the open NE session. It recomputes the slot index, tests owner-row bit `0x0040` directly, exposes that result to the caller, and only then optionally calls `entity_vm_context_try_create_masked_for_entity` with slot `0x06` and mask `0x0040`. -- The direct NE callers currently recovered for `0005:295f` are `0006:43c3`, `0006:c5f0`, and `0007:3584`. That materially narrows the selector frontier to three gameplay-side caller families instead of the older wider `find any caller of 000d:45c5` search. +- The direct NE callers currently recovered for `0005:295f` are still only `0006:43c3`, `0006:c5f0`, and `0007:3584`, but they are now all structurally classified in the live NE session instead of only enumerated as open caller families. - The first anchored caller family is now structurally classified in the live NE session. Repaired wrapper `0006:4379` is a seg031 dispatch-entry subtype gate over objects built by `0006:42d9`: event type `0x236`, source type `8`, subtype/tag at `+0x3c`, dword payload/source far pointer at `+0x32`, and aux words at `+0x36/+0x38`. - In that wrapper, subtype `0x20c` at `0006:43c3` routes into `0005:295f`, while nearby sibling subtype `0x20b` at `0006:43e5` routes into `0005:2918` (`slot 0x05` / `mask 0x0020`) using the same `+0x36/+0x38` aux pair. The split is therefore local to one dispatch-entry family, not a direct compiled `NPCTRIG` / `EVENT` class-family selector by itself. - The `0006:43c3` lane now shows where the owner-row bit-`0x0040` probe is consumed locally: inside a subtype-`0x20c` dispatch-entry object rather than at a generic descriptor-choice site. That improves caller provenance for `0005:295f`, but it still does not prove which owner-loaded class family seeded the later VM data. +- The second direct caller family is now closed too. Old `0006:c5f0` lands at live call site `1128:0ff0` inside `Item_ReceiveHit`, where the non-NPC item path calls `Item_GetDamaged` with hitter sentinel `0x4000`, packed damage `(damagetype << 8) | damage_lo`, and a local flag-out byte that records the returned owner-row bit-`0x0040` capability before the local destruction / impact follow-up. +- The third direct caller family is now closed too. Old `0007:3584` lands at live call site `1138:1384` inside `SuperSprite_HitAndFinish`, where the non-NPC collision lane probes `Item_GetDamaged` with hitter sentinel `0x4000` and packed damage `(firetype << 8) | damage`; only when that flag-out byte stays clear and the target is not fixed does the lane fall through into the local `Item_ReceiveHit` knockback path. - `0005:2c35` remains outward-dark in the current NE session: instruction search still shows no recovered code or data xrefs, and its proven local role is still only `sign-extended additive word -> slot 0x0a / mask 0x0400 -> generic masked hub`. -- The first live `CRUSADER.EXE` integration batch is now applied for this lane. Comment-backed anchors were added at `1420:0dc5` (`Item_GetUsecodeClassId`), `1420:0e3a` (`Usecode_ItemCallEvent`), `10a0:2718` (`Item_Hit`), `10a0:275f` (`Item_GetDamaged`), `10f0:02d9` (`StorageDataProcess_Create`), and `10f0:0379` (`StorageDataProcess_Run`), with branch comments at `10f0:03c3` and `10f0:03e5` preserving the verified `0x20c` / `0x20b` split in the open NE program. -- Result of this pass: the compiled-side selector evidence still bottoms out at category spans plus owner-row capability bits, not a concrete `NPCTRIG` / `EVENT` class-family choice. The next defensible NE step is to classify the three `0005:295f` caller families or recover an earlier producer that feeds the later owner-loaded class lane. +- The live `CRUSADER.EXE` integration batch is now extended for this lane. Comment-backed anchors were already present at `1420:0dc5` (`Item_GetUsecodeClassId`), `1420:0e3a` (`Usecode_ItemCallEvent`), `10a0:2718` (`Item_Hit`), `10a0:275f` (`Item_GetDamaged`), `10f0:02d9` (`StorageDataProcess_Create`), and `10f0:0379` (`StorageDataProcess_Run`), with branch comments at `10f0:03c3` and `10f0:03e5` preserving the verified `0x20c` / `0x20b` split; new live comments now also anchor the remaining direct caller sites at `1128:0ff0` and `1138:1384`. +- Result of this pass: all currently recovered direct `0005:295f` caller families are now closed, but the compiled-side selector evidence still bottoms out at subtype-gated dispatch or generic gameplay damage consumers plus owner-row capability bits, not a concrete `NPCTRIG` / `EVENT` class-family choice. The next defensible NE step is therefore an earlier producer that assigns subtype `0x20b/0x20c` into field `+0x3c` or otherwise chooses the owner-loaded class family before these generic damage consumers run. ## Priority 2: Rendering / Camera / Tile-Visibility / Watch-Controller Lane diff --git a/docs/ne-segment1.md b/docs/ne-segment1.md index 93f8ce4..f16c9e8 100644 --- a/docs/ne-segment1.md +++ b/docs/ne-segment1.md @@ -320,6 +320,81 @@ What `-laurie` appears to enable by itself: - It is also enough to permit the separate event-`0x7e` runtime toggle path, whose entire job is to flip `0x6045` later and post the `0x6087` / `0x6091` notifications. - It is **not** enough for low-level keyboard-only cheat branches that check `0x6045` directly. That is why the user can see the `0x844`-gated debug-box behavior while plain F10 still behaves as if full keyboard cheats are off. +### Keyboard folklore correction pass (`CRUSADER.EXE` live NE) + +- `~` is real in this build. In `World_HandleKeyboardInput_13e8_14b4`, the branch at `13e8:202d..203d` requires `0x844 != 0`, flips the live keyboard-cheat latch `0x6045`, and posts the paired on/off messages at `0x6087` / `0x6091`. +- `Ctrl+C` is **not** the current-location popup in this build. The actual location-display branch is `Ctrl+L` (`0x426`), which formats the avatar's X/Y/Z into the `1478:610c` string and displays it at `13e8:255e..25ac`. +- The third F7-family overlay is also real. The three cheat-gated overlay toggles live at `13e8:1a7c` (`0x141`), `13e8:1a50` (`0x241`), and `13e8:1a20` (`0x441`), writing `1478:2bca`, `1478:2bc9`, and `1478:0ee0` respectively before forcing a camera refresh through `[g_cameraProcess+0x2c]`. +- The unresolved online entry is therefore best corrected as `Ctrl+F7 exists but is cheat-gated`; the obviously bogus list item is `Ctrl+C`, which should be `Ctrl+L` for the coordinate popup. + +### `~` versus `jassica16` + +- These are **not** the same mechanism. `jassica16` is handled earlier in `Key_CheckCheatToggle` as a raw scan-code matcher over `1478:2833`, while `~` is handled later in `World_HandleKeyboardInput_13e8_14b4` as a translated logical key value (`0x7e`). +- That means Shift is probably normal behavior here, not a DOSBox-only artifact. On a standard US DOS keyboard layout, plain grave is `` ` `` (`0x60`) and Shift+grave is `~` (`0x7e`); the live handler we recovered is the `0x7e` branch, and no separate backtick/`0x60` hotkey path was recovered in this handler. +- DOSBox can still affect host-to-DOS layout mapping, but the recovered game logic is asking for the translated `~` character value, not the raw grave-key scancode. So on a US layout the expected in-game gesture is Shift+grave. +- `jassica16` is the stronger unlock path. On success it sets `0x8c52 = 1`, toggles both `0x844` and `0x6045`, emits the `0x103` voice/helper side effect, and shows the `1478:287b` / `1478:2892` cheat-state modals. +- Plain `~` is narrower. It only works after the broader `0x844` gate is already on, and then it flips just the live keyboard-cheat latch `0x6045` while showing the `0x6087` / `0x6091` on/off messages. +- Practically: `jassica16` can bootstrap cheats from a cold state because it toggles the master gate and the low-level latch together; `~` cannot bootstrap that state by itself because its own branch first requires `0x844 != 0`. +- The extra `0x8c52` write also means `jassica16` is not just a different UI for the same toggle. It leaves a second latch behind that later keyboard-side cheat/debug branches can test, while plain `~` does not touch that latch. + +### What `Ctrl+F7` is supposed to show + +- `Ctrl+F7` (`13e8:1a20` -> `1478:0ee0`) is not just a third generic grid. In the camera redraw path, `Camera_1180_15ef` treats `0x0ee0` differently from the simpler `0x2bca` grid flag. +- Plain `F7` (`1478:2bca`) draws a coarse `3 x 3` isometric world-cell grid around the camera by stepping `0x200` world units and drawing diamond tile boundaries. +- `Alt+F7` (`1478:2bc9`) calls `Snap_1058_0814`, which walks the snap-process egg list and draws per-entry diamonds from packed egg range data. That is closer to a snap/trigger coverage overlay than to a camera-aligned background grid. +- `Ctrl+F7` (`1478:0ee0`) walks `EggHatcherProcess` objects and calls `EggHatcher_1090_0921`, which draws diamond trigger ranges using `Egg_GetXRange`, `Egg_GetYRange`, and the shared diamond helper at `1180:1ce5`. +- So the intended visual for `Ctrl+F7` is an **egg / hatch trigger-range overlay**. It should highlight live egg-hatcher or monster-egg regions, not fill the screen with a regular map grid. +- That also explains why it can appear to do nothing. If the current map has no live `EggHatcherProcess` objects, or a non-monster-egg trigger has already hatched while normal gameplay input is active, the draw loop has nothing eligible to outline even though the toggle flag itself changed. + +### Egg-Hatcher Runtime Notes + +- The live NE runtime has a dedicated egg-hatcher process type: `EggHatcher_CreateProcess` builds process type `0x20f`, stores one target item number in the process, and names it `EggHatcher`. +- The corresponding runner `EggHatcherProcess_Run` reads the avatar footprint and compares it against the egg item's center, `Egg_GetXRange`, `Egg_GetYRange`, and a vertical window of about `+/- 0x30` Z units. +- For non-monster egg families, entering that range sets the process `ishatched` byte and calls `Item_CallHatchEvent`; leaving the range clears `ishatched` and calls `Item_CallUnhatchEvent`. +- The overlay helper `EggHatcher_1090_0921` uses the same range values to draw the visible diamond outlines for `Ctrl+F7`. In other words, the visualizer is showing the same trigger footprint the runtime is testing against. +- Current safest gameplay-facing read: these "eggs" are hidden trigger items that fire enter/leave behaviors when the avatar crosses their footprint. Some are likely classic trap/trigger/controller eggs rather than literal spawn objects. +- The wider workspace evidence agrees with that interpretation. The extracted USECODE corpus contains egg-like labels such as `TRIGEGG`, `ONCEEGG`, `DOOREGG`, `LAZEREGG`, `STEAMEGG`, `MISS1EGG`, `GRENEGG`, and `REB_EGG`, while the older `crusader-disasm` notes explicitly call out `SnapEgg` as a fast-area participant. + +### How To Find One In Practice + +- The most reliable bootstrap is now: start with `-laurie`, then press `Shift+~` to flip the live keyboard cheat latch on, then use the F7-family overlays. +- Use `Ctrl+F7` when you want true egg-hatcher ranges. If nothing appears, switch to `Alt+F7` too; that overlay walks the snap-process egg list and can reveal related trigger coverage that is not currently present in the live egg-hatcher process list. +- Search in gameplay spaces that are likely controlled by hidden trigger items rather than by obvious UI state: door thresholds, ambush spawn zones, laser or steam hazards, missile/grenade trap corridors, teleporter pads, and one-shot scripted encounter rooms. +- If a region only reacts once, walk out of the area and re-enter it. The live runner explicitly tracks enter/leave transitions and only calls the hatch/unhatch events when the avatar crosses the trigger boundary. +- Monster-egg handling still looks special-cased, so a blank `Ctrl+F7` result does not prove a map has no egg-related logic at all; it only proves there are no eligible live `EggHatcherProcess` outlines being drawn at that moment. + +### Cheat / Debug Key Matrix + +Cheat-state legend used below: + +- `master gate (0x844)`: broader Laurie/debug permission state. `-laurie` sets this directly. +- `keyboard latch (0x6045)`: full keyboard-cheat latch used by the low-level F10 path and some other direct keyboard branches. +- `sequence latch (0x8c52)`: extra post-sequence latch left behind by `jassica16`; plain `~` does not set it. +- `input-active gate (0x85f)`: broader gameplay-input state. This is not a cheat bit, but it still suppresses some option-key behavior when the game is in modal/non-gameplay states. + +| Input | State Needed | Effect | Evidence / Notes | +|------|--------------|--------|------------------| +| `-laurie` | none at startup | Sets the `master gate (0x844)` only | This is the easiest way to unlock the broader debug/event family without entering the hidden key sequence. | +| `jassica16` | none | Toggles `0x844` and `0x6045`, sets `0x8c52`, emits `0x103`, shows cheat active/inactive modal | Raw scan-code matcher, not a translated text string. Can bootstrap full cheat state from cold. | +| `Shift+~` / `~` | `0x844` already on | Toggles only `0x6045`; shows the on/off cheat-latch modal | On a US layout the game is checking logical `0x7e`, so Shift is the expected normal gesture. With `-laurie`, this becomes a practical way to enable full keyboard cheats. | +| `F10` | `0x85f` and `0x6045` | Refill/loadout branch: restore/refill, credits, items, ammo, weapon set | This is the plain full-keyboard-cheat branch in `Key_HandleOptionKeys`. | +| `Ctrl+F10` | `0x85f` and `0x6045`; current NPC alive | Toggles the current controlled NPC's immortal flag | Same F10 branch, but only the modifier-gated immortality sub-path. | +| `Ctrl+L` | no cheat gate recovered | Shows current avatar X/Y/Z popup | Online `Ctrl+C` folklore is wrong for this build. | +| `Ctrl+C` | no live branch recovered | No confirmed effect in this build | Best current correction is `Ctrl+L`. | +| `Ctrl+V` | no cheat gate recovered | Displays internal stats / version / memory info | This branch appears to be available without the cheat gates. | +| `Ctrl+Q` | `0x844` | Toggles CD transfer display state (`0x604f`) | Distinct from immortality. Uses the broader master gate, not the full keyboard latch. | +| `F7` | `0x844` | Draws coarse `3 x 3` camera-aligned world-cell grid | Simple isometric background grid. | +| `Alt+F7` | `0x844` | Draws snap-process egg diamonds | Better read as snap/trigger coverage overlay than generic grid. | +| `Ctrl+F7` | `0x844` | Draws egg-hatcher trigger diamonds | Visualizes live `EggHatcherProcess` ranges; can look blank on maps without eligible live processes. | +| `F` | `0x844` | Toggles object/framework paint overlay | Laurie/debug-side visual lane, not a full keyboard-cheat-latch feature. | +| `H` | `0x844` and `0x8c52` | Toggles Hack Mover | Strongest current read is that this needs the broader Laurie/debug gate plus the extra post-`jassica16` sequence latch. | + +Practical state recipes: + +- `-laurie` by itself gives you the broader Laurie/debug event family (`0x844`) but not full keyboard cheats. +- `-laurie` plus `Shift+~` is enough to reach the full keyboard-cheat state in live play, because `-laurie` supplies `0x844` and `~` then flips `0x6045`. +- `jassica16` is still the most complete single-step unlock, because it toggles both cheat bytes together and also leaves the extra `0x8c52` sequence latch behind for later branches such as Hack Mover. + ### Cheat-related string table (seg014 / `000e:xxxx`) | Address | String | Notes | @@ -411,30 +486,48 @@ Current strongest read: **Secondary handler (000b:b62c):** -`cheat_event_listener_handle_event` (`000b:b62c`) receives event 0x410 through the registration installed by `cheat_event_listener_create` at `000b:b3b1`. When event 0x410 arrives, it writes state code `0xe` (decimal 14) into the event object's field `+0x6` and passes it to `000b:b7f3` for processing. This is a parallel state-machine path that runs alongside the 000c toggle; likely it drives an associated USECODE process or animation object into state 14. +`usecode_debugger_handle_event` (`000b:b62c`, live `13a0:1df3`) receives event 0x410 through the registration installed by `usecode_debugger_gump_create` at `000b:b3b1` (`13a0:19b1`). When event 0x410 arrives, it writes state code `0xe` (decimal 14) into the event object's field `+0x6` and passes it to the shared debugger tail. This is a parallel state-machine path that runs alongside the 000c toggle; current best read is that it drives the hidden usecode-debugger state machine rather than a standalone cheat-only listener. | Address | Symbol | Role | |-------------|-------------------------------|------| -| `000b:b3b1` | `cheat_event_listener_create` | Allocates one seg109 listener object and subscribes it to the shared cheat/control event bundle that includes `0x410`. | -| `000b:b62c` | `cheat_event_listener_handle_event` | Subscriber-side event mapper: rewrites incoming `0x410` to local state `0x0e` before entering the shared listener state machine. | +| `000b:b3b1` | `usecode_debugger_gump_create` | Allocates the seg109 debugger gump object, initializes its panes/watch state, and subscribes it to the shared debugger/control event bundle that includes `0x410`. | +| `000b:b62c` | `usecode_debugger_handle_event` | Debugger-side event mapper: rewrites incoming `0x410` to local state `0x0e` before entering the shared debugger state machine. | | `DS:0x604f` | `g_cdTransferDisplayActive` | Set/cleared by event `0x410`. | | `DS:0x60d2` | CD-transfer-on notification ptr | Near pointer in DS; resolves to far ptr → "CD TRANSFER DISPLAY ACTIVE." | | `DS:0x60ee` | CD-transfer-off notification ptr | Near pointer in DS; resolves to far ptr → "CD TRANSFER DISPLAY INACTIVE." | | `000a:b988` | `video_bios_state_snapshot` | Called after notification display in the 0x410 toggle to refresh screen state. | -### Hidden cheat menu investigation (seg109 UI lane) +### Hidden usecode debugger investigation (seg109 UI lane) -New compiled-side evidence shows that the old "hidden cheat menu" label is misleading. The seg109 UI path is much closer to a hidden **usecode debugger / unit inspector** than to a retail cheat list: +New compiled-side evidence shows that the older "hidden cheat menu" label was misleading. The recovered path is much closer to a hidden **usecode debugger / unit inspector** than to a retail cheat list. -| Address | Symbol | Role | -|-------------|-------------------------------------|------| -| `000b:9a86` | `usecode_debugger_open_for_current_unit` | Builds the seg109 debugger gump in current-unit mode, derives a usecode path from the live runtime context (`0x659c/0x659e`), loads that file, centers the current line, and then runs a modal UI loop. | -| `000b:9c0d` | `usecode_debugger_open_modal` | Smaller generic modal wrapper that opens the same debugger UI without first preloading a current unit/file. | -| `000b:b3b1` | `usecode_debugger_gump_create` | Constructor for the debugger object. Builds the panes/menu bar, initializes watch state, resolves the base `usecode` path, and registers the shared control-event bundle including `0x23f`, `0x410`, `0x411`, and `0x441`. | -| `000b:b62c` | `usecode_debugger_handle_event` | Debugger event mapper; recovered cases are debugger-style commands (open unit/file, go to line, watch, inspect, clear watches, change global, find/search again, break to debugger). Event `0x23f` is reused as a local debugger-state command; event `0x410` remaps to local state `0x0e` before entering the shared tail. | -| `000b:2882` | `usecode_debugger_build_menubar` | Builds the top-level debugger menus: File, Run, Breakpoints, Search, and Data. Recovered entries include `Open Unit`, `View File`, `Run to cursor`, `Trace into`, `Step over`, `Run until return`, `Toggle F2`, `Break to TDP`, `Find`, `Search again`, `Go to line`, `Watch`, `Inspect`, `Change Global`, and `Quit`. | +The two address families that looked inconsistent in older notes are actually two connected layers of the same subsystem, not competing identifications: -This better explains the long-running negative result about the "infamous scrollable cheat menu": the hidden UI we can actually recover is not a plain scrollable cheat list at all. It is a modal debugger/unit-inspector front-end that expects valid usecode file context and developer-style command routing. +- the `000b:*` / live `13a0:*` functions build and drive the modal debugger UI, +- the `1408:*` helpers hold breakpoint/callstack state, +- and the interpreter hook at `1418:04aa..04b5` ties the runtime back into that debugger state. + +Combined debugger component table: + +| Layer | Raw/reference anchor | Live NE Ghidra | Symbol | Verified role | +|-------|----------------------|----------------|--------|---------------| +| UI wrapper | `000b:9a86` | `13a0:0086` | `usecode_debugger_open_for_current_unit` | Builds the debugger gump in current-unit mode, resolves the active unit name from the live debugger state at `0x659c/0x659e`, loads the corresponding usecode file, centers on the current line, and enters the modal debugger UI. | +| UI wrapper | `000b:9c0d` | `13a0:020d` | `usecode_debugger_open_modal` | Smaller generic modal wrapper for the same debugger gump; it skips current-unit preload and simply opens the modal UI. | +| UI constructor | `000b:b3b1` | `13a0:19b1` | `usecode_debugger_gump_create` | Allocates the root debugger gump, builds the menu bar and panes, initializes watch state, resolves the base `usecode` path, and registers the shared debugger/control event bundle including `0x23f`, `0x410`, `0x411`, and `0x441`. | +| UI dispatcher | `000b:b62c` | `13a0:1df3` | `usecode_debugger_handle_event` | Main debugger event dispatcher. Recovered cases are debugger-style commands: open unit/file, go to line, watch, inspect, clear watches, change global, find/search again, and break to TDP. Incoming event `0x410` is remapped to local state `0x0e`. | +| UI menu builder | `000b:2882` | `13a0:2882` | `usecode_debugger_build_menubar` | Builds the hidden debugger menu bar with File, Run, Breakpoints, Search, and Data menus plus entries such as `Open Unit`, `View File`, `Run to cursor`, `Trace into`, `Step over`, `Run until return`, `Toggle F2`, `Break to TDP`, `Find`, `Search again`, `Go to line`, `Watch`, `Inspect`, `Change Global`, and `Quit`. | +| Break-state constructor | n/a | `1408:0000` | `usecode_debugger_break_state_create` | Allocates and initializes the seg1408 debugger-state object: vtable, breakpoint table, current-entry stack, and run/step flags. This is the object the rest of the breakpoint lane appears to expect at `0x659c/0x659e`. | +| Breakpoint gate | n/a | `1408:0053` | `usecode_debugger_maybe_break_on_current_line` | Stores the current interpreted line, resolves the active unit name through `1408:0444`, checks file+line breakpoints through `1408:029e`, evaluates run/step flags, and callbacks through the object's vtable when a break condition is met. | +| Breakpoint helper | n/a | `1408:00dd` | `usecode_debugger_breakpoint_insert_sorted` | Inserts `(file,line)` breakpoint entries into the seg1408 table in sorted order. | +| Breakpoint helper | n/a | `1408:029e` | `usecode_debugger_has_breakpoint` | Exact `(file,line)` membership test over the seg1408 breakpoint table. | +| Callstack helper | n/a | `1408:03b0` | `usecode_debugger_callstack_push_entry` | Pushes the current unit/line debugger entry onto the seg1408 callstack. | +| Callstack helper | n/a | `1408:03f7` | `usecode_debugger_callstack_pop_entry` | Pops one debugger callstack entry and asserts on underflow. | +| Step-state helper | n/a | `1408:0419` | `usecode_debugger_enable_single_step` | Arms the single-step mode flags in the debugger-state object. | +| Step-state helper | n/a | `1408:0432` | `usecode_debugger_clear_step_state` | Clears the break/step flags in the debugger-state object. | +| Current-entry helper | n/a | `1408:0444` | `usecode_debugger_current_entry_get_unit_name` | Returns the active unit/file name pointer from the current debugger entry stack. | +| Interpreter hook | n/a | `1418:04aa..04b5` | interpreter-side break callback site | Checks whether `0x659c/0x659e` is non-null, pushes the current interpreted line, then calls `1408:0053`. This is the concrete runtime handoff that links usecode execution to the hidden debugger state. | + +This better explains the long-running negative result about the supposed scrollable cheat menu: the hidden UI we can actually recover is not a plain scrollable cheat list at all. It is a modal debugger/unit-inspector front-end that expects valid usecode file context and developer-style command routing. #### Reachability status in retail binary @@ -443,27 +536,13 @@ This better explains the long-running negative result about the "infamous scroll - The cheat-code matcher `cheat_code_check` (`0007:0d0a`) toggles `0x844/0x6045` and emits event `0x103`; it does **not** call these menu wrappers directly. - The 000c handler for `0x103` (`000c:99dd`) executes a status/refresh lane and notification path; no direct call to `usecode_debugger_gump_create` appears there. -Current best read: this debugger path is compiled and functional at object level, but likely orphaned/hidden in final gameplay flow (possibly dev-only entry removed, or only reachable through non-recovered data-driven callback wiring). That orphaned status is a better fit for the missing retail cheat menu than assuming a still-live player-facing scrollable cheat list. +Current best read: this debugger path is compiled and functional at object level, but likely orphaned/hidden in final gameplay flow (possibly dev-only entry removed, or only reachable through non-recovered data-driven callback wiring). That orphaned status is a better fit for the missing retail debugger entry than assuming a still-live player-facing scrollable cheat list. #### Breakpoint callback lane (new strongest orphan candidate) -The next live NE pass shifts the strongest likely entry point away from the cheat-toggle helper and toward a surviving **usecode breakpoint callback lane** in seg1408/seg1418. +The strongest likely original entry point is no longer the cheat-toggle helper. It is the surviving **usecode breakpoint callback lane** summarized in the combined table above. -New live renames in this lane: - -| Live NE | Name | Role | -|---------|------|------| -| `1408:0000` | `usecode_debugger_break_state_create` | Allocates and initializes the seg1408 debugger-state object: breakpoint table, current-entry stack, and run-mode flags. | -| `1408:0053` | `usecode_debugger_maybe_break_on_current_line` | Runtime breakpoint gate. Stores the current line into the debugger state, resolves the current unit/file name through `1408:0444`, checks the breakpoint table through `1408:029e`, and callbacks through the object's vtable when a break condition is met. | -| `1408:00dd` | `usecode_debugger_breakpoint_insert_sorted` | Inserts `(file,line)` breakpoint entries into the seg1408 table in sorted order. | -| `1408:029e` | `usecode_debugger_has_breakpoint` | Exact `(file,line)` membership test over the seg1408 breakpoint table. | -| `1408:03b0` | `usecode_debugger_callstack_push_entry` | Pushes one current-unit/current-line debugger entry into the seg1408 stack. | -| `1408:03f7` | `usecode_debugger_callstack_pop_entry` | Pops one debugger callstack/current-entry record. | -| `1408:0419` | `usecode_debugger_enable_single_step` | Arms the step/run-state flags that make the next interpreter lane callback eligible. | -| `1408:0432` | `usecode_debugger_clear_step_state` | Clears the step/run flags. | -| `1408:0444` | `usecode_debugger_current_entry_get_unit_name` | Returns the active unit/file name pointer from the current debugger entry stack. | - -This matters because `1418:04aa..04b5` is now comment-backed as a concrete interpreter-side handoff into `usecode_debugger_maybe_break_on_current_line`: +The key live proof is the interpreter-side handoff at `1418:04aa..04b5`: - it first checks whether `0x659c/0x659e` is non-null, - then pushes the current interpreted line, @@ -521,8 +600,8 @@ Verified retail anchor points: | `0x70d75` | `0007:0d75` | cheat matcher emits event `0x103` | retail bytes = `68 03 01 9A FF FF 00 00 83 C4 02`; NE fixup source = `0007:0d79` -> `seg092:0476` | | `0x71d68` | fixup entry for `0007:0d79` | seg039 relocation record | exact retail entry: addr_type `0x03`, rel_type `0x00`, chain_off `0x2b79`, target `seg092:0476` | | `0xc99dd` | `000c:99dd` | later controller-side handler that also executes `push 0x103 / call 000a:5276` | retail fixup source = `000c:99e0` -> `seg092:0476`; this is the first materially safer deferred hook candidate after the direct matcher path failed | -| `0xb9a8d` | `000b:9a8d` | arg setup inside `cheat_menu_open_from_current_slot` | original wrapper uses caller stack words `[BP+8]` and `[BP+6]` plus local armed flag `1` | -| `0xb9c48` | `000b:9c48` | modal wrapper prologue; the inherited caller-word patch subsite is `000b:9c4e` / live `13a0:024a` | original wrapper still feeds caller stack words `[BP+8]` and `[BP+6]` into `cheat_event_listener_create`, but starts with local defaults `-1`, `-1`, `0` | +| `0xb9a8d` | `000b:9a8d` | arg setup inside `usecode_debugger_open_for_current_unit` | wrapper-local constructor setup uses caller stack words `[BP+8]` and `[BP+6]` plus the current-unit mode flag `1` before calling `usecode_debugger_gump_create` | +| `0xb9c48` | `000b:9c48` | modal wrapper prologue; the inherited caller-word patch subsite is `000b:9c4e` / live `13a0:024a` | wrapper-local setup still feeds caller stack words `[BP+8]` and `[BP+6]` into `usecode_debugger_gump_create`, but starts with local defaults `-1`, `-1`, `0` | #### Live NE `CRUSADER.EXE` mapping in Ghidra @@ -565,7 +644,7 @@ One remaining function-hygiene caveat: What failed and why: - Direct retarget of `0007:0d79` to `000b:9a86` crashed at startup when the NE relocation table was patched incorrectly as a raw far pointer. That was a file-format problem, not a semantic proof. -- After the patcher was made NE-fixup-aware, direct retarget to `000b:9a86` no longer broke startup, but the game hung when the cheat actually fired. Disassembly shows why: `cheat_menu_open_from_current_slot` consumes caller-supplied words at `[BP+8]` and `[BP+6]`, so the cheat matcher context is the wrong stack shape. +- After the patcher was made NE-fixup-aware, direct retarget to `000b:9a86` no longer broke startup, but the game hung when the cheat actually fired. Disassembly shows why: `usecode_debugger_open_for_current_unit` consumes caller-supplied words at `[BP+8]` and `[BP+6]`, so the cheat matcher context is the wrong stack shape. - Retargeting the same early cheat-matcher call to `000b:9c0d` got farther: the mouse pointer appeared, proving the hidden menu/display path was being entered. But it still hung with looping music, which points to **timing/context**, not a bad target address. The modal path appears unsafe when entered directly from the keyboard matcher even after the constructor args are forced to zero. - The narrower direct current-slot patch was then runtime-tested on `/Writable/CRUSADER-PATCHED.EXE` with bytes verified as `1130:2b78 = 9A 86 00 A0 13` and `13a0:008d = 6A 01 6A 00 6A 00 90 90`. User test result: the normal cheat-toggle path still appeared, but no hidden menu appeared. That closes the direct current-slot route as a practical candidate, not just a theoretical one. @@ -573,13 +652,13 @@ Current best patch rationale: - `0007:0d75` remains the verified cheat-sequence success site, but the direct `1130:2b78 -> 13a0:0086` retarget is no longer the best live patch because it has now failed both analytically and at runtime. - The first materially safer deferred hook remains the controller-side `000c:99dd` lane, where the live call opcode begins at `13e8:25e0`. That path preserves the real `0x103` event context instead of substituting `0x42f`, which is the strongest evidence-backed difference from the rejected deferred experiment. -- The chosen writable patch therefore restores `1130:2b78` to `CALLF 12d8:0476`, restores `13a0:008d` to the original current-slot wrapper bytes, retargets `13e8:25e0` to `13a0:020d` (`cheat_menu_open_modal`), and zeros only the inherited caller-word pushes at `13a0:024a` while preserving the modal wrapper's leading local defaults (`PUSH -1`, `PUSH -1`, `PUSH 0`). +- The chosen writable patch therefore restores `1130:2b78` to `CALLF 12d8:0476`, restores `13a0:008d` to the original current-slot wrapper bytes, retargets `13e8:25e0` to `13a0:020d` (`usecode_debugger_open_modal`), and zeros only the inherited caller-word pushes at `13a0:024a` while preserving the modal wrapper's leading local defaults (`PUSH -1`, `PUSH -1`, `PUSH 0`). - The deferred `0x42f` branch remains negative evidence only: it proved the modal wrapper can enter the hidden UI path, but it also proved that substituting the event id or landing in the wrong deferred context trips the retail `FLEX.C` failure. Rejected follow-up patch design: - Site 1 tried changing `0007:0d75` from `push 0x103` to `push 0x42f`, keeping the original event-dispatch helper call intact. -- Site 2 retargeted the `000c:99e1` relocation so the `0x42f` handler's internal `push 0x103 / call 000a:5276` sequence called `cheat_menu_open_modal` instead. +- Site 2 retargeted the `000c:99e1` relocation so the `0x42f` handler's internal `push 0x103 / call 000a:5276` sequence called `usecode_debugger_open_modal` instead. - Site 3 patched `000b:9c48` from `6A 00 FF 76 08 FF 76 06` to `6A 00 6A 00 6A 00 90 90`. Observed result on retail test build: @@ -592,8 +671,8 @@ Current Ghidra-side patch plan for a copy: 1. Open the writable `/Writable/CRUSADER-PATCHED.EXE` program in Ghidra or PyGhidra, not the raw full-EXE database. 2. Restore the disproven direct-hook sites: `1130:2b78` back to `9A 76 04 D8 12` (`CALLF 12d8:0476`) and `13a0:008d` back to `6A 01 FF 76 08 FF 76 06`. -3. Navigate to the later controller-side `0x103` lane at `13e8:25e0` and retarget that `CALLF 12d8:0476` operand to `13a0:020d` (`cheat_menu_open_modal`), yielding bytes `9A 0D 02 A0 13`. -4. Navigate to `13a0:024a` inside `cheat_menu_open_modal`. Replace only the inherited caller-frame pushes with `PUSH 0` / `PUSH 0` (`6A 00 6A 00 90 90`) and leave the leading `PUSH -1`, `PUSH -1`, `PUSH 0` defaults intact. +3. Navigate to the later controller-side `0x103` lane at `13e8:25e0` and retarget that `CALLF 12d8:0476` operand to `13a0:020d` (`usecode_debugger_open_modal`), yielding bytes `9A 0D 02 A0 13`. +4. Navigate to `13a0:024a` inside `usecode_debugger_open_modal`. Replace only the inherited caller-frame pushes with `PUSH 0` / `PUSH 0` (`6A 00 6A 00 90 90`) and leave the leading `PUSH -1`, `PUSH -1`, `PUSH 0` defaults intact. 5. Do not reintroduce the `0x42f` substitution or the direct `13a0:0086` current-slot hook in the same test build. They are now negative evidence, not live candidates. These edits are now applied and byte-verified on `/Writable/CRUSADER-PATCHED.EXE`. The live NE `CRUSADER.EXE` analysis database remains documentation-only for this batch. @@ -601,7 +680,7 @@ These edits are now applied and byte-verified on `/Writable/CRUSADER-PATCHED.EXE Rationale for the revised wrapper patch: - Earlier direct-hook attempts proved that inheriting the two caller-frame words at `000b:9a8f/9a92` is unsafe from the cheat matcher context. -- But later decompilation of `cheat_event_listener_create` showed that the leading `push 0x1` at `000b:9a8d` is a distinct mode byte used by the constructor path, so zeroing all three pushed values was too aggressive. +- But later decompilation of `usecode_debugger_gump_create` showed that the leading `push 0x1` at `000b:9a8d` is a distinct current-unit mode byte used by the constructor path, so zeroing all three pushed values was too aggressive. - The current patch therefore preserves the leading `1` and only forces the two ambiguous 16-bit parameters to zero. Risk notes: diff --git a/docs/usecode-pentagram-ghidra-path.md b/docs/usecode-pentagram-ghidra-path.md index ed4c0c1..0d0a53c 100644 --- a/docs/usecode-pentagram-ghidra-path.md +++ b/docs/usecode-pentagram-ghidra-path.md @@ -134,15 +134,17 @@ Use comments on the compiled runtime functions that already consume or materiali Best current anchors: -- `000d:51fd` = slot value load path -- `000d:5572` = slot value plus additive word - `000d:46ec` = context create from slot index +- `000d:0988` = referent-chain mutation family (`0x18..0x1b`) +- `000d:208b` = materialize-or-forward value lane +- `000d:21ed` = inline payload prepend stage - `000d:22bc` = decoded matrix/pushback consumer +- `000d:2104` = mixed immediate/object finalize-to-outptr stage - `000d:ebe3` = opcode sequence runner Comment payload should stay short and evidence-heavy, for example: -`POC USECODE body anchor: NPCTRIG slot 0x0A -> body 0x00DA..0x024F, raw word 0x013E, payload shape unresolved, parsed via tools/poc_crusader_usecode_parser.py` +`POC USECODE body anchor: NPCTRIG slot 0x0A -> body 0x00DA..0x024F, raw word 0x013E, 5 local/debug rows after ret, parsed via tools/poc_crusader_usecode_parser.py` ### 3. Optional comment bundles per runtime family diff --git a/docs/usecode-roundtrip-ir.md b/docs/usecode-roundtrip-ir.md index ed88833..c3a6746 100644 --- a/docs/usecode-roundtrip-ir.md +++ b/docs/usecode-roundtrip-ir.md @@ -113,6 +113,28 @@ The safe reading is: The first script IR should preserve exact recompilation inputs before it tries to look pretty. +## Current Parser Views + +The current proof-of-concept parser now emits three complementary views for a single class/slot body: + +- JSON IR: the authoritative machine-facing output for tooling and any future assembler. +- Flat text listing: a byte-faithful decode with offsets, raw bytes, and trailer sections. +- Script view: a more readable block-labeled decompilation with locals, labels, and stack-VM statements. +- Pseudocode view: a higher-level decompilation that tries to collapse common compare ladders and stack expressions into programming-language-like control flow. + +The script and pseudocode views are intentionally descriptive rather than authoritative. They are meant to help read bodies like `NPCTRIG 0x0A` or `EVENT 0x0A` without losing the exact JSON IR that a round-trip compiler will need. + +## Deferred Readability Follow-Ups + +Keep these parser-facing readability tasks for later while the current focus stays on broad pseudocode export and class-family understanding: + +1. Replace unresolved `class_XXXX_slot_YY` call labels with behavior-backed names where the compiled/runtime evidence is strong enough. +2. Replace placeholder argument names such as `arg_06` with semantic names inferred from stable usage patterns. +3. Detect more control-flow shapes beyond compare ladders, especially simple loops and early-return guards. +4. Collapse common spawn/setup idioms into more domain-specific statements when the stack pattern is consistent. +5. Run the pseudocode renderer across larger families like `EVENT`, `_BOOT`, and `SURCAM*` and tighten the heuristics where they still leak VM structure. +6. Add small behavior-level comments only where they help explain gameplay meaning rather than VM mechanics. + ### Unit of decompilation The IR should be organized as: @@ -219,6 +241,7 @@ The compiler side will need more than pretty script text. At minimum it must pre - Width/sign information for immediates - Inline versus indirect payload form - String payload encoding and terminators +- Post-`ret` debug/local symbol trailers, including the local count byte and each per-local metadata row - Any unknown opcode byte sequences verbatim If any of those are dropped, a source-level editor can still be readable, but it will stop being a trustworthy recompilation format. @@ -396,9 +419,20 @@ event: derived_body_length: 373 repeated_template_status: "" body: - end_reason: end_opcode + end_reason: debug_symbols_then_end raw_body_sha1: unknown_trailing_bytes: "" + debug_symbol_offset: 0x0143 + debug_symbol_count: 5 +debug_symbols: + - index: 0x00 + type_id: 0x69 + bp_repr: [BP+00h] + name: referent + - index: 0x01 + type_id: 0x69 + bp_repr: [BP+0Ah] + name: event ops: - offset: 0x0000 absolute_body_offset: 0x00da @@ -417,9 +451,12 @@ ops: annotation_hints: runtime_family: slot-backed-owner-loaded-body compiled_anchors: - - 000d:51fd - - 000d:5572 - 000d:46ec + - 000d:0988 + - 000d:208b + - 000d:21ed + - 000d:22bc + - 000d:2104 - 000d:ebe3 ``` @@ -431,7 +468,7 @@ annotation_hints: `event` keeps the exact six-byte row meaningfully split into authoritative fields plus the derived body window. -`body` records how far the parser got and whether any bytes remain undecoded or trailing. +`body` records how far the parser got, whether the body terminated at a real `0x7a` end marker, and whether a post-`ret` local/debug trailer was parsed instead of being misclassified as stray opcodes. `ops` is intentionally lossless. Each decoded op keeps: @@ -442,6 +479,8 @@ annotation_hints: - exact raw bytes for the whole op - parsed operands as typed fields +`debug_symbols` preserves the owner-loaded post-`ret` local metadata block. Current evidence from `crusader-disasm` and the live extracted chunks shows that many bodies end as: executable ops -> `ret` -> local/debug symbol rows -> `0x7a` end. Those rows are not executable bytecode and should survive round-trip as structured metadata rather than raw tail bytes. + `annotation_hints` is the bridge to Ghidra. It is not a source-language feature. It exists so a later importer can attach the right comments and bookmarks to the compiled VM/runtime addresses without trying to infer them from free text. ### Opcode result policy @@ -451,7 +490,7 @@ The parser should use four result classes only: - `decoded_op`: normal parsed opcode with structured operands - `unknown_opcode`: one-byte opcode not yet modeled; stop or fall back conservatively - `raw_tail`: remaining undecoded bytes after a stop condition -- `debug_blob`: symbol/debug tail such as `0x5c`-anchored metadata +- `debug_blob`: post-`ret` local/debug trailer ending in `0x7a` That keeps the IR trustworthy even before the whole Crusader VM is modeled. @@ -474,16 +513,23 @@ annotation_hints: runtime_family: slot-backed-owner-loaded-body payload_shape_hint: signed_word compiled_anchors: - - address: 000d:51fd - role: slot_value_loader - - address: 000d:5572 - role: slot_value_plus_offset - address: 000d:46ec role: context_create_from_slot - - address: 000d:ebe3 - role: opcode_sequence_run + - address: 000d:0988 + role: referent_chain_mutator + - address: 000d:208b + role: materialize_or_forward_value + - address: 000d:21ed + role: prepend_inline_payload - address: 000d:22bc role: matrix_pushback_stage + - address: 000d:2104 + role: finalize_to_outptr + - address: 000d:ebe3 + role: opcode_sequence_run + runtime_stage_hints: + - stage_address: 000d:0988 + ir_name: APPEND_UNIQUE_INDIRECT ``` This is deliberately smaller than a full import format. It keeps the parser reusable even if the first Ghidra-side importer is only a comment/bookmark script. diff --git a/exports/CRUSADER.EXE.xml b/exports/CRUSADER.EXE.xml index 138e7b7..5ca0965 100644 --- a/exports/CRUSADER.EXE.xml +++ b/exports/CRUSADER.EXE.xml @@ -322,7 +322,7 @@ ]> - + @@ -7884,6 +7884,7 @@ DL = new default drive (00h = A:, 01h = B:, etc) FINDFIRST - FIND FIRST MATCHING FILE Int 21/AH=1Ah - DOS 1+ - SET DISK TRANSFER AREA ADDRESS (popped off stack 4f == Find Next Matching File + Formats via ProbablySomethingDebuggy/FUN_1000_67ac into DS:1478:6c46, the handle-1 stdio entry. This is the normal stdout path used by ConsolePrintf and related wrappers, including the retail -debug thresholded text lane. Probably pointer to FUN_1000_6e93 probably pointing to previous function? Segment: 2 @@ -8031,6 +8032,7 @@ Flags: 0d00 Intrinsic 0CE - is GAME COMPILE=1 "-?" "-u" + Retail -debug branch is live. It raises g_debugMsgLevel to 10, prints "Debugging mode ON.", sets 1478:0845, and enables the seg1468 video-player debug timing overlay via 1478:0859. "-debug" "-setver" "-asylum" @@ -8069,6 +8071,7 @@ Flags: 0d00 copy egg2 data to egg1 get location of current controlled npc snap to this egg + Alt+F7 overlay consumer. Walks the SnapProcess egg list and draws per-entry diamonds from packed egg range data via 1180:1ce5, so this overlay is closer to snap/trigger coverage than to a camera-aligned background grid. Segment: 13 Offset: 00048200 Length: 1f6c @@ -8162,6 +8165,8 @@ Flags: 0d00 intrinsic 03F g_eggHatcherProcessFnPtr = 0x14780f16 0x14780f0b = "EggHatcher" + Egg-hatcher runtime step. Tracks avatar footprint against the egg item's X/Y range rectangle and Z window; for non-monster-egg families it toggles ishatched and calls Item_CallHatchEvent / Item_CallUnhatchEvent on enter/leave. + Ctrl+F7 overlay consumer. When 1478:0ee0 is enabled, this draws egg-hatcher trigger diamonds using Egg_GetXRange / Egg_GetYRange and the shared diamond helper at 1180:1ce5. If the current map has no live EggHatcherProcess objects, or a non-monster-egg trigger has already hatched while gameplay is active, the overlay can appear blank even though the toggle succeeded. Segment: 20 Offset: 0004f800 Length: 0878 @@ -8710,10 +8715,16 @@ Flags: 0d00 0x168 = 360 0x168 = 360 (degrees). 0x10e = 270 0x4cc == small red crosshairs + Controller option-key handler. The F10 cheat branch is gated by the live keyboard cheat latch (0x6045). Within that branch, plain F10 performs the large restore/refill/loadout path, while Ctrl+F10 directly toggles the current controlled NPC's immortal flag through NPC_GetIsImmortal / NPC_SetImmortal / NPC_ClearImmortal and displays the local immortality enabled/disabled messages. This is stronger evidence for a real keyboard immortality combo than the older CTRL-Q scratch note. scan code 0x44 = F10? + Pre-F10 gameplay gate. This byte is checked before the low-level cheat latch at DS:0x6045; it is written by Game_Start and the 1398:0212 / 1398:01f5 helper pair, so it appears to track a broader gameplay option-key enabled state rather than the cheat state itself. + Pre-F10 gameplay gate. This byte is checked before the low-level cheat latch at DS:0x6045; it is written by Game_Start and the 1398:0212 / 1398:01f5 helper pair, so it appears to track a broader gameplay option-key enabled state rather than the cheat state itself. + Live F10 cheat branch. Once the low-level cheat latch (0x6045) is active, plain F10 runs the restore/refill path and Alt+F10 directly toggles the current controlled NPC's immortal flag, displaying the local Immortality enabled/disabled strings. Stop any DeathSilence process set HP to max val + Ctrl-gated F10 immortality branch: calls KeyEvent_IsCtrlDown on the queued KeyEvent snapshot before toggling the current NPC immortal flag. probably "is alt or control down", to toggle god mode + Later unrelated branch uses KeyEvent_IsAltDown. This is not the F10 immortality path. scan code 0x4b = left scan code 0x4d = right animation 46 = kneeling with weapon @@ -8731,11 +8742,13 @@ Flags: 0d00 scan code 0x4c = 5 scan code 0x53 = del scan code 0x35 = questionmark + Copies the full incoming KeyEvent to a local snapshot before cheat-toggle and option-key handling. That preserves the queued modifier/repeat state all the way into the F10 immortality branch. note: decompiler is wrong, this is actually 0x1130273b The array we're comparing param2 to contains 1, 2, 4, 0x10, 0x100. The other array is all 0s The jump table is: 0x1130226E, 0x11302276, 0x113022B6, 0x113022BD, 0x113022B6 + Controller_HandleKeyEvent copies the full incoming KeyEvent, including modifier/repeat bytes, before Key_CheckCheatToggle and Key_HandleOptionKeys inspect it. pressing fire when some global is set.. anim picked and field_0x8 != 0 scan code 0x4a = Scan_NumMinus @@ -8749,6 +8762,14 @@ Flags: 0d00 reload now Shape 0x332 = SG-A1 not shots left and no inventory to reload with + Exact hidden cheat-code matcher. Only keydown events participate; the terminal digits in DS:0x2833 are top-row scan codes 0x02 and 0x07, so keypad 1/6 will not complete jassica16. + Exact hidden cheat-code matcher. Only keydown events participate; the terminal digits in DS:0x2833 are top-row scan codes 0x02 and 0x07, so keypad 1/6 will not complete jassica16. + jassica16 success sets latch 1478:8c52 before toggling 1478:0844 and 1478:6045. Plain logical-~ at 13e8:203d only flips 1478:6045 under the existing 1478:0844 gate and does not set this extra post-sequence latch. + Live cheat-code success core. The matcher bytes at DS:0x2833 are the scan-code sequence 24 1e 1f 1f 17 2e 1e 02 07 = j a s s i c a 1 6, with the final 1/6 using top-row scan codes. On completion this path toggles DS:0x844 and mirrors the same value into DS:0x6045. + Live cheat-code success core. The matcher bytes at DS:0x2833 are the scan-code sequence 24 1e 1f 1f 17 2e 1e 02 07 = j a s s i c a 1 6, with the final 1/6 using top-row scan codes. On completion this path toggles DS:0x844 and mirrors the same value into DS:0x6045. + jassica16 success path: raw scancode matcher over 1478:2833 toggles both 1478:0844 and 1478:6045, then emits 0x103 and shows the active/inactive cheat modal. This is structurally different from the later translated logical-~ hotkey path. + Live cheat-code success path: toggles cheats_enabled (0x844/0x6045), then emits event 0x103. On a COPY only, the current best hidden-menu experiment in Ghidra is to retarget the existing CALLF/fixup at 1130:2b78 from 12d8:0476 to 13a0:0086 (cheat_menu_open_from_current_slot). Do not patch raw bytes here in the main database. + cheat_code_check success path: resets the matcher index, marks the cheat side-effect latch, toggles both cheats_enabled (0x844) and the live keyboard cheat latch (0x6045), then emits event/helper 0x103. If -laurie has already forced 0x844 on, hitting this path again will toggle both values back off, which matches the observed 'jassica16 disables cheats when laurie is active' behavior. sound 0x103 - female voice saying "Crusader: No Remorse" stop process type 0xc (also stopped on destroy..) shape 0x38d (909) a big gun @@ -8949,7 +8970,10 @@ Flags: 0d00 check SI_DRAW shape data byte 1 bit 3 == SI_TRANSL intrinsic 040 + Camera debug-overlay helper. 1478:2bca draws the coarse 3x3 world-cell grid, while 1478:0ee0 iterates EggHatcherProcess objects and draws their egg / hatch trigger diamonds through EggHatcher_1090_0921 rather than a generic grid. get egg hatcher (0x20f) processes + Main camera redraw pass that updates the viewport, applies the DS:0x085f gameplay-input gate to the avatar-centered redraw rectangle, and calls the 1188 overlay draw/clear helpers around the viewport blit. + Main camera redraw pass that updates the viewport, applies the DS:0x085f gameplay-input gate to the avatar-centered redraw rectangle, and calls the 1188 overlay draw/clear helpers around the viewport blit. note: checked this list and they do all appear to be void fns. Intrinsic 041 Intrinsic 086 @@ -8965,6 +8989,10 @@ Flags: 0d00 LoadOnCall Impure (Non-shareable) + Scans the tracked overlay list at 1478:835a..8422, marks entries visible, and draws each active gameplay overlay window when the modal overlay-suppression flag at DS:0x2c64 is clear. + Scans the tracked overlay list at 1478:835a..8422, marks entries visible, and draws each active gameplay overlay window when the modal overlay-suppression flag at DS:0x2c64 is clear. + Clears the dirty rectangles for tracked gameplay overlay windows after the main viewport copy, but only while the modal overlay-suppression flag at DS:0x2c64 is clear. + Clears the dirty rectangles for tracked gameplay overlay windows after the main viewport copy, but only while the modal overlay-suppression flag at DS:0x2c64 is clear. Segment: 51 Offset: 0007ea00 Length: 1d02 @@ -9037,6 +9065,10 @@ Flags: 0d00 LoadOnCall Impure (Non-shareable) + Synthesizes repeated held-key KeyEvent records from the current-down tables. Each generated repeat event refreshes the modifier snapshot from DS:31a4 before dispatch/queue, which explains why holding F10 first and then pressing physical Ctrl can satisfy the immortality branch on later repeated F10 events. + Snapshot the current extended-shift/modifier word from DS:31a4 into the synthesized repeat KeyEvent before dispatch/queue. + Return the cached last KeyEvent exactly as stored by the keyboard process, including the queued modifier snapshot bytes. + Returns the last keyboard-process KeyEvent snapshot verbatim, including the modifier bytes that were captured when the event was queued or synthesized. reset driver and read status define mickey/pixel ratio (3 horizontally, 16 vertically) call mask 3f - call the routine for ~all events @@ -9062,6 +9094,10 @@ Flags: 0d00 LoadOnCall Impure (Non-shareable) + Tests AH bits 1 and 3 from INT 16h AH=12 keyboard shift state, i.e. left Alt or right Alt. The older Ctrl label was reversed. + Test modifiers word for Alt bits: 0x0200 = left Alt, 0x0800 = right Alt from BIOS INT 16h AH=12 shift flags 2. + Tests AH bits 0 and 2 from INT 16h AH=12 keyboard shift state, i.e. left Ctrl or right Ctrl. The older Alt label was reversed. + Test modifiers word for Ctrl bits: 0x0100 = left Ctrl, 0x0400 = right Ctrl from BIOS INT 16h AH=12 shift flags 2. Segment: 59 Offset: 00086a00 Length: 4288 @@ -9079,11 +9115,17 @@ Flags: 0d00 assert process is "linear" if NoTerminatedState extflag is set cpu generated breakpoint + Kernel/process snapshot writer: walks process tables/lists and serializes per-process state via writer callbacks. + Serializes the process table, timer/keyboard/mouse proc-id lists, process sizes, names, and per-process state through a file-like writer; this is a kernel/process snapshot writer, not just a printf-style kernel-info routine. Port 0x43 PIT mode control - 00110110 = counter 0, write 16 bits, mode 3 (square wave), binary counter 0040 RW PIT counter 0, counter divisor (XT, AT, PS/2) Used to keep the system time; the default divisor of (1)0000h produces the 18.2Hz clock tick. + Small repeat-suppression predicate used by the held-key repeat path and cycle update. Verified behavior: returns nonzero only when keyboard state word DS:31a4 has bit 0x0010 set and DS:39af is enabled; exact physical-key meaning of that bit is still not promoted. + Queues one 12-byte KeyEvent into the pending keyboard ring at DS:31cc. If the ring is full, it sets DS:31a0 instead of writing a new event. + Read BIOS INT 16h AH=12 extended keyboard shift states and cache the result in DS:31a4 for later KeyEvent synthesis. + Reads BIOS extended keyboard shift state (INT 16h AH=12) and caches the current modifier word at DS:31a4. The held-key repeat path reuses that cached word when building repeated KeyEvent records. pushflags popflags Segment: 60 @@ -9439,6 +9481,10 @@ Flags: 0d00 fire one-shots read joystick position and status cpu-generated breakpoint + Threshold-gated positioned debug print helper. Moves the cursor via 1000:4d68, then prints only when g_debugMsgLevel <= level. + Threshold-gated debug print plus blocking key wait. Current recovered callers are failure/debug-stop paths in dispatch/gump allocation code, not the seg1468 AVI overlay lane. + Threshold-gated positioned debug print helper. Moves the cursor via 1000:4d68, then prints only when g_debugMsgLevel <= level. + Initializes shared system/video state and allocates the 0x400-byte staging buffer at 1478:45a6 used by ConsolePrintf / DebugPrintAndWaitForInput. Retail -debug does not create this sink; it only sets the print threshold and the video overlay flag. set mode 3 (80x25 8x8 640x200 16) set mode from param1 get current video mode @@ -9705,6 +9751,9 @@ Flags: 0d00 Intrinsic 0FE shapeno 21 is the computer frame + End of ComputerGump_CreateGump: clears DS:0x085f before returning the modal computer gump, which explains why gameplay option-key handling (including Alt+F10) is suppressed while this modal is active. + Computer-gump teardown override. Restores the gameplay-input gate at DS:0x085f, releases pending text at +0x34/+0x36, refreshes controller/UI state, then falls into the generic gump cleanup path and optional free. + Computer-gump teardown override. Restores the gameplay-input gate at DS:0x085f, releases pending text at +0x34/+0x36, refreshes controller/UI state, then falls into the generic gump cleanup path and optional free. very short "beep" sound for text being displayed Segment: 117 Offset: 000b9a00 @@ -9716,6 +9765,20 @@ Flags: 0d00 LoadOnCall Impure (Non-shareable) + Live NE hidden cheat-menu wrapper confirmed by direct disassembly. Builds cheat_event_listener_create with mode byte 1, then enters the larger modal/UI traversal lane using current UI state. This is the current best direct retarget target for the 0x103 cheat success path. + Likely intended breakpoint/debugger callback target. Expects a live seg1408 debugger state object at 0x659c/0x659e, resolves the current unit filename, loads that file, centers on the current line, and enters the modal debugger UI. No direct retail caller has been confirmed. + Constructor arg site for cheat_menu_open_from_current_slot. Current live call shape is PUSH 1, PUSH [BP+8], PUSH [BP+6], PUSH 0, PUSH 0, CALL 13a0:19b1. On a COPY only, preserve the leading mode byte 1 and zero the two caller-frame words if the direct 1130:2b78 retarget is tested from the cheat matcher context. + Smaller hidden modal wrapper. Directly constructs cheat_event_listener_create and traverses it, but prior deferred-hook experiments reached the UI here from the wrong runtime context and hit FLEX.C line 83. Keep as a rejected or secondary patch target unless a safer controller context is proven. + Generic modal wrapper for the same usecode debugger UI. It is a practical forced-open target because it skips current-unit preload, but prior retail patch tests show that entering it from the wrong runtime context still fails. + Constructor arg site inside cheat_menu_open_modal. This is the live NE counterpart of the previously tested modal-wrapper patch lane. Rejected path: 13e8:25dd (0x42f branch) -> retarget here reached the menu but failed at runtime. + Sets the current debugger line selection and optional anchor line, clamps the requested line to the loaded file range, clears transient cursor state, and forces a redraw. + Centers the debugger viewport on a requested source line. Stores the target line in the gump state, computes a top-of-window line from the visible row count, and then delegates to 13a0:0b06 to clamp and apply the selection. + Loads a usecode/debug unit file into the debugger panes. Resets selection state, drops any previously loaded file object, opens the requested unit/file, refreshes the list/text widgets, and reports failure if the file is too large or cannot be opened. + Creates the usecode debugger gump: allocates the root gump, builds the menu bar, creates the file/list panes, initializes the shared watch table, stores the open-for-current-unit mode flag, resolves the base usecode path, and registers the debugger/control event bundle. + cheat_event_listener_create registers the shared cheat/control event bundle here, including 0x23f, 0x410, 0x411, 0x431, 0x441, 0x421, and 0x22d. This is listener-side subscription data, not the compiled emitter of 0x410. + Shared cheat-event listener dispatcher. Event object code comes from +0x6; the 0x410 case remaps to local state 0x0e before falling into the shared tail. Confirms that the hidden menu lane reacts to immortality, but does not emit it. + Main usecode debugger event dispatcher. The recovered cases map to debugger-style commands rather than retail cheats: open unit/file, go to line, watch/inspect, clear watches, change global, find/search again, and break-to-debugger. Event 0x23f is reused as a local debugger state command, and incoming event 0x410 is remapped to local state 0x0e before entering the shared state-machine tail. + Builds the hidden usecode debugger menu bar. The recovered labels are File/Open Unit/View File, Run/Run to cursor/Trace into/Step over/Run until return, Breakpoints/Toggle F2/Break to TDP/Delete All, Search/Find/Search again, and Data/Go to line/Watch/Inspect/Clear Current Watch/Clear All Watches/Change Global/Quit. Segment: 118 Offset: 000bd400 Length: 0a0a @@ -9939,6 +10002,14 @@ Flags: 0d00 Intrinsic 074 Intrinsic 070 Intrinsic 071 + Shows the hidden Laurie computer-gump hint string at DS:0x605e. The 13e8:0f4a wrapper calls this only when DS:0x085f says gameplay option-key handling is active. + Shows the hidden Laurie computer-gump hint string at DS:0x605e. The 13e8:0f4a wrapper calls this only when DS:0x085f says gameplay option-key handling is active. + Paired with 13e8:0ef9. This path stops SFX, clears DS:0x27cb so Controller_HandleKeyEvent stops consuming gameplay keys, flips the modal/overlay state bytes at DS:0x2c64 and DS:0x8c53, then refreshes the camera. + Paired with 13e8:0ef9. This path stops SFX, clears DS:0x27cb so Controller_HandleKeyEvent stops consuming gameplay keys, flips the modal/overlay state bytes at DS:0x2c64 and DS:0x8c53, then refreshes the camera. + Inverse of 13e8:0e7d. Restores DS:0x27cb so controller key handling resumes, clears the modal/overlay flags at DS:0x2c64 and DS:0x8c53, refreshes camera state, and clears the secondary DS:0x6050 latch. + Inverse of 13e8:0e7d. Restores DS:0x27cb so controller key handling resumes, clears the modal/overlay flags at DS:0x2c64 and DS:0x8c53, refreshes camera state, and clears the secondary DS:0x6050 latch. + Tiny wrapper around Game_ShowLaurieHintComputerGump. It bails when DS:0x085f is low, which ties the Laurie hint path to the same gameplay-input gate that also suppresses Alt+F10. + Tiny wrapper around Game_ShowLaurieHintComputerGump. It bails when DS:0x085f is low, which ties the Laurie hint path to the same gameplay-input gate that also suppresses Alt+F10. Shape 4d4 = data link shape 0x598 = a weird smiley thing.. "Exit to dos?" sound @@ -9950,21 +10021,34 @@ Flags: 0d00 'T' Case 'b' or 'B' - detonate bomb search area for shape 0x55F (1375) - DETPAC + Ctrl+F7 branch: toggles debug overlay flag 1478:0ee0, then forces camera refresh via [g_cameraProcess+0x2c]. This path is gated by 1478:0844, so it only works when the cheat/debug latch is already enabled. + Alt+F7 branch: toggles debug overlay flag 1478:2bc9, then forces camera refresh via [g_cameraProcess+0x2c]. This is one of the three cheat-gated F7 overlay toggles. + F7 branch: toggles debug overlay flag 1478:2bca, then forces camera refresh via [g_cameraProcess+0x2c]. This is the plain F7 overlay toggle under the same 1478:0844 gate. "Quick load." sound "quick save" sound + Event 0x7e branch inside World_HandleKeyboardInput. Requires DS:0x844 but flips the independent keyboard cheat latch at DS:0x6045 and posts the 0x6087/0x6091 on-off notifications. This is the main runtime path that can undo a successful jassica16 toggle later. + Event 0x7e branch inside World_HandleKeyboardInput. Requires DS:0x844 but flips the independent keyboard cheat latch at DS:0x6045 and posts the 0x6087/0x6091 on-off notifications. This is the main runtime path that can undo a successful jassica16 toggle later. + Event 0x7e runtime cheat-latch toggle. This path requires cheats_enabled (0x844) but flips the live keyboard latch at 0x6045 separately and posts the on/off notifications at 0x6087 and 0x6091. In other words: -laurie grants permission for this path, but does not itself turn the latch on. + Logical-~ hotkey path: flips only 1478:6045 after the wider 1478:0844 gate has already passed. Because this branch is keyed from the translated logical keycode side of World_HandleKeyboardInput rather than the raw scancode matcher, Shift is normally required on a US layout to produce 0x7e. case '?' - show help screen case 'e' or 'E' - use energy cube 0x582 == 1410 == energy cube 'm' - use medikit in inventory 'R' - targeting reticle targetting reticle active + Live NE event 0x410 handler: gated by cheats_enabled (0x844), toggles DS:0x604f / g_cdTransferDisplayActive, and posts the CD TRANSFER DISPLAY ACTIVE/INACTIVE notification strings at 1478:60d2 and 1478:60ee. This is distinct from the direct Alt+F10 immortality toggle in Key_HandleOptionKeys. + Live NE event 0x410 handler: gated by cheats_enabled (0x844), toggles DS:0x604f / g_cdTransferDisplayActive, and posts the CD TRANSFER DISPLAY ACTIVE/INACTIVE notification strings at 1478:60d2 and 1478:60ee. This is distinct from the direct Alt+F10 immortality toggle in Key_HandleOptionKeys. + Retail second far-call slot inside the 0x410/Ctrl+Q body. Retail target is Dispatch_ModalGump. Current debugger patch candidates reuse this relocation entry as the private UI call target; an earlier O/P script bug left this slot on the retail target, producing an invalid runtime build. 'Q' - cycle through weapons 'W' - cycle through weapons 'U' - use item 0x4d4 = 1236 = datalink, 0x52d = 1325 = scanner, 0x52e = 1326 = ionic, 0x52f = 1327 = plasma, 0x530 = 1328 = graviton i - cycle through inventory 'O' - toggle inventory in reverse + Ctrl+L branch: builds and displays the "X: %u Y: %u Z: %u" popup using avatar coordinates. Online cheat lists that claim Ctrl+C for current location are incorrect in this build. 'f' - paint frames + Rejected deferred patch context. This 0x42f branch also emits 0x103, but prior retarget tests entered the hidden menu from the wrong deferred state and hit the retail FLEX.C line 83 failure after the pointer appeared. Do not treat this as the live patch point. + Controller-side 0x103 lane still matters only as a forced-entry patch candidate. The stronger orphaning evidence now sits in the seg1408 breakpoint callback path rather than in the cheat-toggle event helper. play "crusader, no remorse" voice TODO: Somewhere in here it fetches the current difficulty level case 'G' or 'g' - grab nearby items @@ -10015,16 +10099,10 @@ Flags: 0d00 Impure (Non-shareable) joystick calibration successful - Segment: 130 -Offset: 000cea00 -Length: 047d -Min Alloc: 047d -Flags: 0d00 - Code - Fixed - LoadOnCall - Impure (Non-shareable) - + Constructor for the seg1408 debugger breakpoint/state object. This object holds breakpoint entries, current-frame/unit state, and run-mode flags and appears to be the object expected at 0x659c/0x659e when debugger support is live. + Runtime breakpoint gate for the hidden usecode debugger. Stores the current line in the seg1408 debugger state, checks file+line breakpoints and step/run flags, and callbacks through the object's vtable when a break condition is met. This is a stronger surviving entry path than the cheat-toggle event hook. + Break-next dispatch branch: this is the narrowest shared compiled hook for a deferred Ctrl+Q debugger open because it only runs after 0x659c/0x659e is live and +0x74 is armed. + Shared method-0 vtable callback stub. Retail patch attempts that rewired this body crashed at startup, so keep it as negative evidence: broader than the break-next branch at 1408:00cf. Segment: 131 Offset: 000cf000 Length: 044d @@ -10046,6 +10124,8 @@ Flags: 0d00 Impure (Non-shareable) called by usecode op 0x5a (init) + Interpreter-side handoff into the hidden usecode debugger: if 1478:659c/659e holds a live seg1408 break-state object, this CALLF checks the current file/line and may callback into the seg109 debugger UI path. + Interpreter-side handoff into usecode_debugger_maybe_break_on_current_line. If retail never instantiates the seg1408 debugger state object at 0x659c/0x659e, this compiled breakpoint hook remains dormant and the debugger UI stays orphaned. Opcode 0xd = push string Opcode 0x41 = push local var (string) 26 = strcmp, 16 = concat @@ -10183,6 +10263,9 @@ Flags: 0d00 'strf' 'RRV1' 'RRV2' + 1478:0859 gate from the retail -debug switch. When enabled, update the per-frame video timing overlay before advancing playback. + 1478:0859 gate from the retail -debug switch. When enabled and param_2 != 0, refresh the video timing overlay during chunk streaming/priming. + Builds two 500-byte timing-marker traces and copies them into adjacent scanlines near the bottom of a 640-wide video buffer. Reached only from the seg1468 video-player path when 1478:0859 is non-zero; this is separate from the hidden seg109/seg1408 usecode debugger state at 1478:659c/659e. "LIST" Segment: 143 Offset: 000e3400 @@ -10209,11 +10292,16 @@ Flags: 0d01 g_gumpsFlxFilenamePtr s_music.flx s_gumps.flx + Set by the retail -debug parser branch, but no downstream reader has been recovered yet. Treat as an otherwise-unclassified or vestigial debug latch until a real consumer is found. + Set by the retail -debug parser branch. Read only in seg1468 video-player code to enable the timing overlay helper now named VideoPlayer_DrawDebugTimingOverlay. + Global gameplay-input / option-key-active gate. Set at Game_Start, cleared when ComputerGump_CreateGump hands control to the modal computer gump, and restored by ComputerGump_CloseAndResumeGameplay. Key_HandleOptionKeys checks this before the 0x6045 cheat latch. this gets set but appears to never be read? inititalized to a block of 200 bytes g_femaleUghNoises + Gameplay controller/key-input enabled latch. Controller_HandleKeyEvent reads this before invoking option-key and gameplay key handling; 13e8:0e7d clears it during modal transitions and 13e8:0ef9 restores it. these all point to the null byte at the end of the wpnoverlay.dat string. these are shapes of weapons and some value + Modal overlay-suppression flag. Set by 13e8:0e7d and cleared by 13e8:0ef9; the 1188 overlay draw/clear helpers skip their work while this flag is high. points to a block of 640 words points to a block of 640 words clear system timer process flag.. maybe destroy? @@ -10221,10 +10309,16 @@ Flags: 0d01 g_vtableForSomething these are pointers to the Pure Virtual Function. TODO: What process uses this? + Negative evidence for retail debugger patching: this dword sits inside live debugger-adjacent data, not proven spare storage. Raw bytes nearby include active-looking far-pointer values and DEBUGGER.C text; candidates that reused 1478:6597 as a deferred target slot were retired. these are color numbers, used as offsets into the palette data these are flags. if the value is 1 then the color is cycled differently and some randomness is used.. + Start of the static stdio-style FILE table in DS. First entry is handle 0 (stdin). The retail -debug text lane does not create a separate sink; ProbablyPrintDebugMessage formats into this table's handle-1 entry at 1478:6c46 instead. + Second static stdio-style FILE entry in DS, with handle word 1. ProbablyPrintDebugMessage / ConsolePrintf target this record, so retail -debug text goes to ordinary DOS stdout rather than to a hidden debugger-only console. see fn 11b0:09ba - seems to be 4 blocks of 0xd sized data music buffer + Global print threshold used by ConsolePrintf, DebugPrintAndWaitForInput, and the positioned print helpers. The compare is `if (call_level < g_debugMsgLevel) skip`, so the retail -debug switch sets the minimum printed level to 10 rather than creating a new output sink. + Transient modal camera/overlay state flag. Raised by 13e8:0e7d and cleared by 13e8:0ef9 together with the broader gameplay-input disable/restore sequence. + Saved copy of DS:0x2d24 taken on entry to 13e8:0e7d. It appears to preserve the pre-modal mode byte so the paired modal transition can refresh camera/audio state consistently. struct Palette initailized to 0 initialized to 0x800 @@ -23311,7 +23405,7 @@ Flags: 0c01 - + @@ -23976,7 +24070,7 @@ Flags: 0c01 - + @@ -23993,6 +24087,8 @@ Flags: 0c01 + + @@ -24048,6 +24144,7 @@ Flags: 0c01 + @@ -24084,8 +24181,8 @@ Flags: 0c01 - - + + @@ -24137,9 +24234,13 @@ Flags: 0c01 + + + + @@ -24579,9 +24680,14 @@ Flags: 0c01 + + + + + @@ -24600,8 +24706,10 @@ Flags: 0c01 - - + + + + @@ -24623,7 +24731,12 @@ Flags: 0c01 + + + + + @@ -24825,7 +24938,10 @@ Flags: 0c01 - + + + + @@ -24937,10 +25053,16 @@ Flags: 0c01 - + + + + - - + + + + + @@ -25203,6 +25325,9 @@ Flags: 0c01 + + + @@ -33362,12 +33487,12 @@ Other Flags: 00 - + - byte __cdecl16far NPC_AnotherCreate_10e8_2710(int * pitemno, uint shapeno, undefined2 frameno, word x, word y, byte z) + byte __cdecl16far NPC_CreateIfAreaSearchValid(int * pitemno, uint shapeno, undefined2 frameno, word x, word y, byte z) @@ -38365,10 +38490,10 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + - void __cdecl16far Camera_1180_19c1(void) + void __cdecl16far Camera_RedrawViewportAndGameplayOverlays(void) @@ -38537,7 +38662,7 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + @@ -38567,7 +38692,7 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + @@ -39760,7 +39885,7 @@ This is either called from usecode or from an animation (via NPC_FireWeapon)void __cdecl16far nullfn_11b8_00ef(void) - + @@ -40166,18 +40291,18 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + - bool __cdecl16far KeyEvent_IsCtrlDown(struct KeyEvent * keyevent) + bool __cdecl16far KeyEvent_IsAltDown(struct KeyEvent * keyevent) - + - bool __cdecl16far KeyEvent_IsAltDown(struct KeyEvent * keyevent) + bool __cdecl16far KeyEvent_IsCtrlDown(struct KeyEvent * keyevent) @@ -40900,7 +41025,7 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + @@ -40912,7 +41037,7 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + @@ -40947,18 +41072,18 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + - byte __cdecl16far FUN_11d0_3a74(void) + byte __cdecl16far Kernel_GetPendingKeyboardEventCount(void) - + - byte __cdecl16far FUN_11d0_3aad(void) + byte __cdecl16far Kernel_IsPendingKeyboardEventQueueFull(void) @@ -50145,7 +50270,7 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + @@ -50226,7 +50351,7 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + @@ -50245,7 +50370,7 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + @@ -50337,7 +50462,7 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + @@ -50346,7 +50471,7 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + @@ -50384,7 +50509,7 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + @@ -50438,7 +50563,7 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + @@ -50501,10 +50626,10 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + - int * __stdcall16far Debugump_13a0_19b1(int * param_1, undefined2 param_2, undefined2 param_3, undefined param_4) + int * __stdcall16far usecode_debugger_gump_create(int * param_1, undefined2 param_2, undefined2 param_3, undefined param_4) @@ -50553,7 +50678,7 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + @@ -50589,7 +50714,7 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + @@ -50600,7 +50725,7 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + @@ -50608,7 +50733,7 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + @@ -50616,7 +50741,7 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + @@ -50657,7 +50782,7 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + @@ -52415,23 +52540,23 @@ This is either called from usecode or from an animation (via NPC_FireWeapon)void __cdecl16far Game_SetUnknownGlobalFlag6050(void) - + - + - void __cdecl16far FUN_13e8_0e7d(void) + void __cdecl16far Game_DisableGameplayInputAndRefreshCamera(void) - + - void __cdecl16far FUN_13e8_0ef9(void) + void __cdecl16far Game_RestoreGameplayInputAndClearModalState(void) - + @@ -53116,23 +53241,23 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + - + - void __cdecl16far Debugger_1408_0053(undefined2 * param_1, int param_2) + void __cdecl16far usecode_debugger_maybe_break_on_current_line(undefined2 * param_1, int param_2) - + @@ -53166,10 +53291,10 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + - uint __cdecl16far FUN_1408_029e(char * param_1, char * param_2, word param_3, word param_4) + uint __cdecl16far usecode_debugger_has_breakpoint(char * param_1, char * param_2, word param_3, word param_4) @@ -53193,7 +53318,7 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + @@ -53201,27 +53326,27 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + - void __cdecl16far Debugger_1408_03f7(uint * param_1) + void __cdecl16far usecode_debugger_callstack_pop_entry(uint * param_1) - + - + - + @@ -55847,22 +55972,22 @@ This is either called from usecode or from an animation (via NPC_FireWeapon) - + - + - void __cdecl16far FUN_1468_2af4(struct Process * p_proc, char param_2) + void __cdecl16far VideoPlayer_StreamChunks(struct Process * p_proc, char param_2) - + diff --git a/out_NPCTRIG_0A.txt b/out_NPCTRIG_0A.txt deleted file mode 100644 index 6f73316..0000000 --- a/out_NPCTRIG_0A.txt +++ /dev/null @@ -1,117 +0,0 @@ -Class NPCTRIG entry=191 class_id=0x363 -Slot 0x0A hint=equip body=0x00DA..0x024F -End reason: unknown_opcode ops=111 sha1=98524ea452eae2723f4b27e630c33a920c16def7 - -00DA: 5A init local_bytes=0x6 raw=5a06 -00DC: 5C symbol_info symbol_offset=0x143 symbol=NPCTRIG trailing_zero=0x0 raw=5c3e014e5043545249470000 -00E8: 0B push_word_immediate value_u16=0x211 raw=0b1102 -00EB: 40 push_local_dword bp_offset=0x6 target=[BP+06h] raw=4006 -00ED: 4C push_indirect size=0x2 raw=4c02 -00EF: 77 set_info raw=77 -00F0: 78 process_exclude raw=78 -00F1: 5B line_number line_number=0x20 raw=5b2000 -00F4: 5B line_number line_number=0x1F raw=5b1f00 -00F7: 40 push_local_dword bp_offset=0x6 target=[BP+06h] raw=4006 -00F9: 0F call_intrinsic arg_bytes=0x4 intrinsic_ordinal=0x4 intrinsic_name_hint=Item::getStatus(void) raw=0f040400 -00FD: 6E add_sp value_u8=0xFC raw=6efc -00FF: 5E push_retval_word raw=5e -0100: 5B line_number line_number=0x20 raw=5b2000 -0103: 0B push_word_immediate value_u16=0x1000 raw=0b0010 -0106: 39 bit_and raw=39 -0107: 51 jne relative_u16=0x6 relative_signed=0x6 target_offset=0x36 raw=510600 -010A: 5B line_number line_number=0x21 raw=5b2100 -010D: 52 jmp relative_u16=0x109 relative_signed=0x109 target_offset=0x13F raw=520901 -0110: 5B line_number line_number=0x24 raw=5b2400 -0113: 0B push_word_immediate value_u16=0x1000 raw=0b0010 -0116: 40 push_local_dword bp_offset=0x6 target=[BP+06h] raw=4006 -0118: 11 call_class_event target_class_id=0xA1E target_event_slot=0x23 target_event_name_hint=None raw=111e0a2300 -011D: 6E add_sp value_u8=0xFA raw=6efa -011F: 3F push_local_word bp_offset=0xA target=[BP+0Ah] raw=3f0a -0121: 0A push_byte_immediate value_u8=0x1 value_signed=0x1 raw=0a01 -0123: 24 cmp raw=24 -0124: 51 jne relative_u16=0x27 relative_signed=0x27 target_offset=0x74 raw=512700 -0127: 5B line_number line_number=0x2C raw=5b2c00 -012A: 59 push_pid raw=59 -012B: 0B push_word_immediate value_u16=0x2FD raw=0bfd02 -012E: 40 push_local_dword bp_offset=0x6 target=[BP+06h] raw=4006 -0130: 57 spawn arg_bytes=0x2 this_size=0x2 target_class_id=0x363 target_event_slot=0x20 target_event_name_hint=None raw=57020263032000 -0137: 6E add_sp value_u8=0xFE raw=6efe -0139: 5E push_retval_word raw=5e -013A: 54 implies arg0=0x1 arg1=0x1 raw=540101 -013D: 12 pop_temp raw=12 -013E: 53 suspend raw=53 -013F: 5C symbol_info symbol_offset=0x143 symbol=NPCTRIG trailing_zero=0x0 raw=5cdb004e5043545249470000 -014B: 52 jmp relative_u16=0xBC relative_signed=0xBC target_offset=0x130 raw=52bc00 -014E: 3F push_local_word bp_offset=0xA target=[BP+0Ah] raw=3f0a -0150: 0A push_byte_immediate value_u8=0x2 value_signed=0x2 raw=0a02 -0152: 24 cmp raw=24 -0153: 51 jne relative_u16=0x27 relative_signed=0x27 target_offset=0xA3 raw=512700 -0156: 5B line_number line_number=0x31 raw=5b3100 -0159: 59 push_pid raw=59 -015A: 0B push_word_immediate value_u16=0x384 raw=0b8403 -015D: 40 push_local_dword bp_offset=0x6 target=[BP+06h] raw=4006 -015F: 57 spawn arg_bytes=0x2 this_size=0x2 target_class_id=0x363 target_event_slot=0x20 target_event_name_hint=None raw=57020263032000 -0166: 6E add_sp value_u8=0xFE raw=6efe -0168: 5E push_retval_word raw=5e -0169: 54 implies arg0=0x1 arg1=0x1 raw=540101 -016C: 12 pop_temp raw=12 -016D: 53 suspend raw=53 -016E: 5C symbol_info symbol_offset=0x143 symbol=NPCTRIG trailing_zero=0x0 raw=5cac004e5043545249470000 -017A: 52 jmp relative_u16=0x8D relative_signed=0x8D target_offset=0x130 raw=528d00 -017D: 3F push_local_word bp_offset=0xA target=[BP+0Ah] raw=3f0a -017F: 0A push_byte_immediate value_u8=0x3 value_signed=0x3 raw=0a03 -0181: 24 cmp raw=24 -0182: 51 jne relative_u16=0x27 relative_signed=0x27 target_offset=0xD2 raw=512700 -0185: 5B line_number line_number=0x36 raw=5b3600 -0188: 59 push_pid raw=59 -0189: 0B push_word_immediate value_u16=0x371 raw=0b7103 -018C: 40 push_local_dword bp_offset=0x6 target=[BP+06h] raw=4006 -018E: 57 spawn arg_bytes=0x2 this_size=0x2 target_class_id=0x363 target_event_slot=0x20 target_event_name_hint=None raw=57020263032000 -0195: 6E add_sp value_u8=0xFE raw=6efe -0197: 5E push_retval_word raw=5e -0198: 54 implies arg0=0x1 arg1=0x1 raw=540101 -019B: 12 pop_temp raw=12 -019C: 53 suspend raw=53 -019D: 5C symbol_info symbol_offset=0x143 symbol=NPCTRIG trailing_zero=0x0 raw=5c7d004e5043545249470000 -01A9: 52 jmp relative_u16=0x5E relative_signed=0x5E target_offset=0x130 raw=525e00 -01AC: 3F push_local_word bp_offset=0xA target=[BP+0Ah] raw=3f0a -01AE: 0A push_byte_immediate value_u8=0x4 value_signed=0x4 raw=0a04 -01B0: 24 cmp raw=24 -01B1: 51 jne relative_u16=0x27 relative_signed=0x27 target_offset=0x101 raw=512700 -01B4: 5B line_number line_number=0x3B raw=5b3b00 -01B7: 59 push_pid raw=59 -01B8: 0B push_word_immediate value_u16=0x4D1 raw=0bd104 -01BB: 40 push_local_dword bp_offset=0x6 target=[BP+06h] raw=4006 -01BD: 57 spawn arg_bytes=0x2 this_size=0x2 target_class_id=0x363 target_event_slot=0x20 target_event_name_hint=None raw=57020263032000 -01C4: 6E add_sp value_u8=0xFE raw=6efe -01C6: 5E push_retval_word raw=5e -01C7: 54 implies arg0=0x1 arg1=0x1 raw=540101 -01CA: 12 pop_temp raw=12 -01CB: 53 suspend raw=53 -01CC: 5C symbol_info symbol_offset=0x143 symbol=NPCTRIG trailing_zero=0x0 raw=5c4e004e5043545249470000 -01D8: 52 jmp relative_u16=0x2F relative_signed=0x2F target_offset=0x130 raw=522f00 -01DB: 3F push_local_word bp_offset=0xA target=[BP+0Ah] raw=3f0a -01DD: 0A push_byte_immediate value_u8=0x5 value_signed=0x5 raw=0a05 -01DF: 24 cmp raw=24 -01E0: 51 jne relative_u16=0x27 relative_signed=0x27 target_offset=0x130 raw=512700 -01E3: 5B line_number line_number=0x40 raw=5b4000 -01E6: 59 push_pid raw=59 -01E7: 0B push_word_immediate value_u16=0x1B4 raw=0bb401 -01EA: 40 push_local_dword bp_offset=0x6 target=[BP+06h] raw=4006 -01EC: 57 spawn arg_bytes=0x2 this_size=0x2 target_class_id=0x363 target_event_slot=0x20 target_event_name_hint=None raw=57020263032000 -01F3: 6E add_sp value_u8=0xFE raw=6efe -01F5: 5E push_retval_word raw=5e -01F6: 54 implies arg0=0x1 arg1=0x1 raw=540101 -01F9: 12 pop_temp raw=12 -01FA: 53 suspend raw=53 -01FB: 5C symbol_info symbol_offset=0x143 symbol=NPCTRIG trailing_zero=0x0 raw=5c1f004e5043545249470000 -0207: 52 jmp relative_u16=0x0 relative_signed=0x0 target_offset=0x130 raw=520000 -020A: 5B line_number line_number=0x45 raw=5b4500 -020D: 0B push_word_immediate value_u16=0x1000 raw=0b0010 -0210: 40 push_local_dword bp_offset=0x6 target=[BP+06h] raw=4006 -0212: 11 call_class_event target_class_id=0xA1E target_event_slot=0x24 target_event_name_hint=None raw=111e0a2400 -0217: 6E add_sp value_u8=0xFA raw=6efa -0219: 5B line_number line_number=0x47 raw=5b4700 -021C: 50 ret raw=50 - -unknown_trailing_bytes=05016900007265666572656e740000690a006576656e74000024fe026974656d000024fc026974656d32000024fa026e007a diff --git a/plan-mid.md b/plan-mid.md index 570e209..fef165a 100644 --- a/plan-mid.md +++ b/plan-mid.md @@ -15,8 +15,8 @@ Detailed completed analysis belongs in the files under `docs/`, not in this plan ## Progress Snapshot -- Overall useful decompilation progress: about 49% -- Reasonable uncertainty band: about 44% to 52% +- Overall useful decompilation progress: about 50% +- Reasonable uncertainty band: about 45% to 52% - Top 100 far-call target coverage: about 80% - Segment spread with meaningful analysis: about 26% to 32% - Tooling maturity for continued work: about 77% @@ -26,6 +26,7 @@ Detailed completed analysis belongs in the files under `docs/`, not in this plan - Recent work materially improved semantic confidence inside the startup/display, cache/allocator, callback-object, and USECODE/VM lanes. - The startup/display lane is now materially complete as an active major section: the shared `g_active_dispatch_entry_farptr[+0x40]` hold token is separated from the seg108-local `0x4f38` bit-`0x40` lane, the seg126 control stream is confirmed as file-backed, the paired `0x8c5c/0x8c60` renderer objects are narrowed to two script-selected preset text lanes, and the neighboring seg127 fade controller now has an exact local contract at `0x630a..0x6316`. - The current VM/loader batch also justified a small bump: `000d:ebe3` is now a named ordered opcode sequencer with a tighter entry/exit contract, the masked-create hub at `000d:463a` is now a verified owner-table gate rather than an inferred wrapper sink, and the seg070 twin loops under `entity_vm_runtime_owner_resource_create` now read as paired file-family loaders writing into separate temporary buffers rather than one ambiguous callback shard. +- The latest live-NE caller-family batch justified another small confidence bump: the remaining direct `0005:295f -> 10a0:275f` callers now close to `Item_ReceiveHit` and `SuperSprite_HitAndFinish` non-NPC damage lanes, which removes the last direct-caller ambiguity in that selector-consumer island even though the upstream class-family selector is still unresolved. - The latest USECODE pass justified another small VM-lane bump: the gameplay-side wrapper ladder now extends through slots `0x10..0x14` with verified mixed payload shapes (`none` vs extra signed word), the new slot-only Ghidra names keep that taxonomy visible without overpromoting event labels, and the `000d:22bc` stage is now comment-backed as a sequencer-internal link-matrix/pushback consumer over decoded workspace bytes rather than a direct descriptor-row reader. - The immortality follow-up justified another small tooling-and-confidence bump: the extractor now emits a dedicated target-body scan, the strongest current USECODE candidates show no inline `0x410` / `0x00000410` literal, and the remaining frontier is narrowed to data-driven decoding of `EVENT` slot `0x0a` plus `NPCTRIG` slots `0x0a` / `0x20` rather than the older wider trigger family set. - The latest owner-loaded range pass justified another small confidence bump too: the owner-resource child selector now matches extracted `class_id + 2` exactly, the class header/subentry math at `000d:5066/51fd/53b4` is closed against the extractor's raw headers and event rows, and the surviving immortality uncertainty has moved from `can the loader fit NPCTRIG arithmetic at all?` to the narrower `which class family is actually selected upstream?` question. @@ -50,6 +51,9 @@ Detailed completed analysis belongs in the files under `docs/`, not in this plan - The auxiliary local disassembly corpus at `K:/ghidra/crusader-disasm` is now inventoried and integrated as a separate evidence source for shape metadata, static map/object dumps, opcode names, and older Remorse/Regret intrinsic-function vocabularies; its safe-reuse rules and porting implications are captured in `docs/crusader-disasm-reference.md`. - The USECODE/VM owner/resource/runtime lane now has a workable partial model, a named sequencer entry, paired external file-family loader evidence, and supporting extraction/reporting tooling. - The USECODE/VM tooling lane now also has a concrete near-term implementation path: a Pentagram-derived proof-of-concept parser can reuse opcode decoding while swapping in the locally verified owner-loaded class and slot arithmetic, with a hybrid Ghidra comment/bookmark import path instead of a premature custom processor module. +- The USECODE tooling lane now also has a first full readable corpus export: `tools/export_usecode_pseudocode.py` writes `977` current pseudocode bodies into `USECODE/EUSECODE_extracted/pseudocode`, and the first focused read of that corpus now shows `JELYHACK::use` / `JELYH2::use` as tiny shared `set_info(0x0207) -> process_exclude -> return` stubs rather than hidden active event cores. +- The USECODE tooling lane now also has two new follow-up notes grounded in the exported corpus: `docs/usecode-tool-improvement-plan.md` turns the Pentagram/`crusader-disasm` comparison into a concrete parser roadmap, and `docs/usecode-alarmhat-analysis.md` records the current best evidence-backed read of `ALARMHAT::equip` as a frame-driven local alarm-state controller that equips nearby `shape 0x04D0` helper objects in different modes. +- The USECODE tooling lane now also has a broader equipment-event note: `docs/usecode-equipment-system.md` records live binary proof that `Item_Equip` / `Item_Unequip` are real generic usecode event dispatchers gated by owner-row capability masks (`0x400` / `0x800`), and that the exported corpus currently contains `77` `equip` bodies plus `50` `unequip` bodies spread across actor, turret, alarm, conveyor, camera, and hazard classes. Current best read is `surviving Ultima-style event vocabulary generalized into activation/setup/state-change semantics`, not yet `fully proven paper-doll RPG gear subsystem`. - The USECODE/VM lane now also has a verified generic masked-context creation hub (`000d:463a`) plus two concrete sequencer-internal consumer blocks (`000d:208b`, `000d:21ed`) built directly on `entity_vm_context_create_from_slot_index`. - The USECODE/VM lane now also has first caller-role evidence outside the older seg021 wrapper island: the new seg004 callers keep masks `0x8000:0x0007` and `0x2000:0x0015` in gameplay-side materialization lanes, while the newly named seg006 helpers now separate one extra-word masked lane with a real local class-state transition fallback (`0x0008:0x0030`) from a guarded `0x0010:0x0008` materializer that simply returns `0` on miss after readiness checks. - The USECODE/VM lane now also has a wider verified higher-slot wrapper ladder: the `0005` island reaches slot ordinals `0x10..0x14`, slot `0x12` is a zero-extra-word lane, slots `0x11/0x13/0x14` carry extra-word payloads, and the current safest read is `slot-stable payload-shape taxonomy` rather than direct event-name promotion. @@ -74,7 +78,11 @@ Detailed completed analysis belongs in the files under `docs/`, not in this plan - The first focused NE `CRUSADER.EXE` hole-filling pass tightens that same wall one step further without breaking it. In the live NE session, `0005:295f` is now confirmed as the only recovered non-hub consumer of `entity_vm_slot_index_from_entity`, and its only currently recovered callers are `0006:43c3`, `0006:c5f0`, and `0007:3584`. That gives the selector lane three concrete gameplay-side caller families to classify next, while `0005:2c35` remains outward-xref-dark and therefore still does not prove a class-family choice by itself. - The next focused NE pass closes the first of those caller families structurally. Repaired wrapper `0006:4379` is now a verified seg031 dispatch-entry subtype gate over objects created by `0006:42d9` with event type `0x236`, source type `8`, subtype/tag at `+0x3c`, payload/source far pointer at `+0x32`, and aux words at `+0x36/+0x38`. Within that family, subtype `0x20c` at `0006:43c3` routes into `0005:295f`, while sibling subtype `0x20b` at `0006:43e5` routes into `0005:2918` using the same aux pair. That localizes the owner-row bit-`0x0040` consumer to one subtype-tagged dispatch-entry family, but still does not identify the upstream owner-loaded class family. - The first doc-to-live-NE integration batch is now applied in the open `CRUSADER.EXE` database too. Comment-backed anchors landed on the live selector/core pair `1420:0dc5` / `1420:0e3a`, the consumer pair `10a0:2718` / `10a0:275f`, and the first closed caller-family runner `10f0:02d9` / `10f0:0379`, with branch comments at `10f0:03c3` and `10f0:03e5` preserving the verified `0x20c -> 10a0:275f` and `0x20b -> 10a0:2718` split. This improves the live NE handoff without justifying a headline progress-estimate change yet. -- The compiled cheat/control lane is now split more cleanly. `cheat_code_check` (`0007:0d0a`) is still the sole hidden cheat-sequence matcher (5-byte table via `DS:0x2833`, index `DS:0x283d`), and it toggles `DS:0x844` (`cheats_enabled`) plus mirror `DS:0x6045`, then emits event `0x103`. The matcher bytes themselves are now rechecked in the live NE image as scan codes `24 1e 1f 1f 17 2e 1e 02 07` = `j a s s i c a 1 6`, with the trailing digits specifically using top-row scan codes `0x02` / `0x07`. Live data-use recovery also tightens the latch story: `0x6045` is written only by `Key_CheckCheatToggle` (`1130:2b72`) and the event-`0x7e` runtime toggle at `13e8:203d`. The live NE F10 proof is stronger than the earlier folklore-level read: inside `Key_HandleOptionKeys` (`1130:0896`), the F10 cheat branch first checks `DAT_1478_085f`, then `0x6045`, then reaches `1130:0afd` and calls helper `11c8:01a8`; the `11c8:018a` helper call in the same function appears later at `1130:0cad`, in a different branch. The helper identity is now closed from the code too: `KeyboardGetExtendedShiftStates` (`11d0:39e6`) uses BIOS `INT 16h, AH=12h`, whose AH bits are `0=left Ctrl`, `1=left Alt`, `2=right Ctrl`, `3=right Alt`, so `11c8:01a8` testing `0x0100|0x0400` is really `KeyEvent_IsCtrlDown`, and `11c8:018a` testing `0x0200|0x0800` is really `KeyEvent_IsAltDown`. Upstream keyboard-path recovery also closes the practical behavior too: the held-key repeat builder at `11b8:0129..022b` samples BIOS extended-shift state through `11d0:39e6`, stores the current `31a4` modifier snapshot into each repeated `KeyEvent`, and queues that event through `11d0:3533`, so holding `F10` first and then pressing physical `Ctrl` lets later repeated F10 events reach the immortality branch with refreshed modifier bits. The same repeated F10 event synthesis plus missing debounce explains the multi-modal on/off spam. The F10 immortality sub-branch also only runs for a live current NPC (`NPC_IsDead` gate at `10e8:1fed`). `DAT_1478_085f` is now tighter too: it is set during `Game_Start` (`1020:0127`), cleared at the end of `ComputerGump_CreateGump` (`1398:01f5`), and restored by `ComputerGump_CloseAndResumeGameplay` (`1398:0212`) during the paired computer-gump teardown path before falling into generic gump cleanup. Current safest read is a broader gameplay-input / option-key-active state rather than any cheat-state bit. Separately, event `0x410` at `000c:9703` does **not** toggle immortality; it boolean-toggles `DS:0x604f` / `g_cdTransferDisplayActive` and posts the `CD TRANSFER DISPLAY ACTIVE/INACTIVE` notifications under the broader `0x844` gate, which matches both the user's runtime observation and the old `crusader-disasm` note `CTRL-Q = 0x410`. The older `DS:0x6050` lane at `immortality_activate` (`000c:8231`) remains a separate secondary entity/process path. The old seg109 "cheat menu" label is now narrowed further: in the live NE database, `000b:9a86`, `000b:9c0d`, `000b:b3b1`, `000b:b62c`, `000b:15ac`, `000b:0b52`, `000b:0b06`, and `000b:2882` now read more defensibly as `usecode_debugger_*` helpers, with menu labels like `Open Unit`, `View File`, `Watch`, `Inspect`, `Find`, and `Break to TDP`. Current best read is a hidden usecode debugger / unit inspector, not a retail scrollable cheat list. This also tightens the `-laurie` split: `-laurie` enables `0x844`-gated event cheats and debugger-side paths, but not the low-level `0x6045` keyboard latch, which matches the observed `F`-overlay-on / `F10`-refill-off behavior. Renamed in this area: `FUN_000c_8231` -> `immortality_activate`, `FUN_000c_834a` -> `immortality_conditional_activate`, `FUN_000c_8486` -> `immortality_activate_and_reset`, `FUN_000c_743f` -> `immortality_entity_process_create`, `FUN_000b_9a86` -> `usecode_debugger_open_for_current_unit`, `FUN_000b_9c0d` -> `usecode_debugger_open_modal`, `FUN_000b_b3b1` -> `usecode_debugger_gump_create`, `FUN_000b_b62c` -> `usecode_debugger_handle_event`, `FUN_000b_15ac` -> `usecode_debugger_load_unit_file`, `FUN_000b_0b52` -> `usecode_debugger_center_on_line`, `FUN_000b_0b06` -> `usecode_debugger_set_line_selection`, `FUN_000b_2882` -> `usecode_debugger_build_menubar`, `FUN_1398_0212` -> `ComputerGump_CloseAndResumeGameplay`. +- The next live-NE caller-family pass closes the remaining direct `0005:295f` callers too. Old `0006:c5f0` now lands at `1128:0ff0` inside `Item_ReceiveHit`, where the non-NPC damage path probes `Item_GetDamaged` with hitter sentinel `0x4000`, packed `(damagetype << 8) | damage_lo`, and a local flag-out byte; old `0007:3584` now lands at `1138:1384` inside `SuperSprite_HitAndFinish`, where the non-NPC collision lane probes the same helper with packed `(firetype << 8) | damage` before optionally falling through to local `Item_ReceiveHit` knockback logic. Live comments now anchor both sites, so the selector frontier has moved upstream again to an earlier subtype/class-family producer rather than another direct caller search. +- The compiled cheat/control lane is now split more cleanly. `cheat_code_check` (`0007:0d0a`) is still the sole hidden cheat-sequence matcher (5-byte table via `DS:0x2833`, index `DS:0x283d`), and it toggles `DS:0x844` (`cheats_enabled`) plus mirror `DS:0x6045`, then emits event `0x103`. The matcher bytes themselves are now rechecked in the live NE image as scan codes `24 1e 1f 1f 17 2e 1e 02 07` = `j a s s i c a 1 6`, with the trailing digits specifically using top-row scan codes `0x02` / `0x07`. Live data-use recovery also tightens the latch story: `0x6045` is written only by `Key_CheckCheatToggle` (`1130:2b72`) and the event-`0x7e` runtime toggle at `13e8:203d`. The live NE F10 proof is stronger than the earlier folklore-level read: inside `Key_HandleOptionKeys` (`1130:0896`), the F10 cheat branch first checks `DAT_1478_085f`, then `0x6045`, then reaches `1130:0afd` and calls helper `11c8:01a8`; the `11c8:018a` helper call in the same function appears later at `1130:0cad`, in a different branch. The helper identity is now closed from the code too: `KeyboardGetExtendedShiftStates` (`11d0:39e6`) uses BIOS `INT 16h, AH=12h`, whose AH bits are `0=left Ctrl`, `1=left Alt`, `2=right Ctrl`, `3=right Alt`, so `11c8:01a8` testing `0x0100|0x0400` is really `KeyEvent_IsCtrlDown`, and `11c8:018a` testing `0x0200|0x0800` is really `KeyEvent_IsAltDown`. Upstream keyboard-path recovery also closes the practical behavior too: the held-key repeat builder at `11b8:0129..022b` samples BIOS extended-shift state through `11d0:39e6`, stores the current `31a4` modifier snapshot into each repeated `KeyEvent`, and queues that event through `11d0:3533`, so holding `F10` first and then pressing physical `Ctrl` lets later repeated F10 events reach the immortality branch with refreshed modifier bits. The same repeated F10 event synthesis plus missing debounce explains the multi-modal on/off spam. The F10 immortality sub-branch also only runs for a live current NPC (`NPC_IsDead` gate at `10e8:1fed`). `DAT_1478_085f` is now tighter too: it is set during `Game_Start` (`1020:0127`), cleared at the end of `ComputerGump_CreateGump` (`1398:01f5`), and restored by `ComputerGump_CloseAndResumeGameplay` (`1398:0212`) during the paired computer-gump teardown path before falling into generic gump cleanup. Current safest read is a broader gameplay-input / option-key-active state rather than any cheat-state bit. Separately, event `0x410` at `000c:9703` does **not** toggle immortality; it boolean-toggles `DS:0x604f` / `g_cdTransferDisplayActive` and posts the `CD TRANSFER DISPLAY ACTIVE/INACTIVE` notifications under the broader `0x844` gate, which matches both the user's runtime observation and the old `crusader-disasm` note `CTRL-Q = 0x410`. The older `DS:0x6050` lane at `immortality_activate` (`000c:8231`) remains a separate secondary entity/process path. The older seg109 hidden-menu label is now narrowed further: in the live NE database, `000b:9a86`, `000b:9c0d`, `000b:b3b1`, `000b:b62c`, `000b:15ac`, `000b:0b52`, `000b:0b06`, and `000b:2882` now read more defensibly as `usecode_debugger_*` helpers, with menu labels like `Open Unit`, `View File`, `Watch`, `Inspect`, `Find`, and `Break to TDP`. Current best read is a hidden usecode debugger / unit inspector, not a retail scrollable cheat list. This also tightens the `-laurie` split: `-laurie` enables `0x844`-gated event cheats and debugger-side paths, but not the low-level `0x6045` keyboard latch, which matches the observed `F`-overlay-on / `F10`-refill-off behavior. Renamed in this area: `FUN_000c_8231` -> `immortality_activate`, `FUN_000c_834a` -> `immortality_conditional_activate`, `FUN_000c_8486` -> `immortality_activate_and_reset`, `FUN_000c_743f` -> `immortality_entity_process_create`, `FUN_000b_9a86` -> `usecode_debugger_open_for_current_unit`, `FUN_000b_9c0d` -> `usecode_debugger_open_modal`, `FUN_000b_b3b1` -> `usecode_debugger_gump_create`, `FUN_000b_b62c` -> `usecode_debugger_handle_event`, `FUN_000b_15ac` -> `usecode_debugger_load_unit_file`, `FUN_000b_0b52` -> `usecode_debugger_center_on_line`, `FUN_000b_0b06` -> `usecode_debugger_set_line_selection`, `FUN_000b_2882` -> `usecode_debugger_build_menubar`, `FUN_1398_0212` -> `ComputerGump_CloseAndResumeGameplay`. +- The same cheat/control lane is now a little cleaner at the user-facing hotkey level too. A focused live NE pass closed three folklore items: `~` is a real runtime cheat-latch toggle at `13e8:203d` under the broader `0x844` gate; the online `Ctrl+C = show current location` claim is wrong for this build and is really `Ctrl+L`, whose popup branch formats `1478:610c` at `13e8:255e`; and the missing third overlay is not bogus after all, because a separate `Ctrl+F7` branch at `13e8:1a20` toggles `1478:0ee0` while the other two F7-family toggles write `1478:2bc9` and `1478:2bca`. +- The follow-up pass closes the `~` versus `jassica16` confusion more tightly too. `jassica16` is the earlier raw scan-code matcher that toggles both `1478:0844` and `1478:6045`, sets `1478:8c52`, and can therefore bootstrap the whole cheat state from cold; `~` is only the later translated logical-`0x7e` branch, so Shift is the expected normal gesture on a US layout and that hotkey can only flip `1478:6045` after `1478:0844` is already enabled. The same pass also improves the third-overlay classification: `Ctrl+F7` is not a third generic camera grid but an `EggHatcherProcess` trigger-range overlay, which can legitimately appear blank on maps without eligible live egg/hatcher processes. +- The next cheat/overlay refinement pass is now folded back into the docs too. `docs/ne-segment1.md` now has a consolidated live-NE cheat/debug key matrix, the practical `-laurie` plus `Shift+~` bootstrap recipe for full keyboard cheats, and a fuller egg-hatcher note grounded in `EggHatcher_CreateProcess` / `EggHatcherProcess_Run`: non-monster egg families are enter/leave trigger items with X/Y/Z range checks, while `Ctrl+F7` visualizes the live egg-hatcher ranges and `Alt+F7` visualizes the related snap-process egg list. - The `0x85f` reader side is now clearer too. The live NE database now names the paired `13e8` transition wrappers as `Game_DisableGameplayInputAndRefreshCamera` (`13e8:0e7d`) and `Game_RestoreGameplayInputAndClearModalState` (`13e8:0ef9`), which matches their concrete behavior: `13e8:0e7d` clears the controller/key-input latch `1478:27cb`, raises the modal overlay-suppression state at `1478:2c64` / `1478:8c53`, preserves `1478:8c54` from `1478:2d24`, and refreshes camera state; `13e8:0ef9` performs the inverse restore path and clears the secondary `1478:6050` latch. The Laurie-only wrapper side is clearer as well: `Game_ShowLaurieHintComputerGump` (`13e8:0e31`) is the hidden `-laurie` computer-gump hint path, while `Game_ShowLaurieHintIfGameplayInputActive` (`13e8:0f4a`) only calls it when `0x85f` is high. The main camera pass consuming the same gate is now `Camera_RedrawViewportAndGameplayOverlays` (`1180:19c1`), with comment-backed `1188:010f` / `1188:0394` overlay helpers bracketing the viewport redraw. - The next blocker layer is narrower too. Those modal wrappers are not abstract helpers; inside `World_HandleKeyboardInput_13e8_14b4` they already wrap concrete user-facing lanes including exit-to-DOS confirmation (`0x22d`), quick save (`0x13f`), quick load (`0x13e`), restart/main-menu handling (`Game_RestartMaybe`), and the neighboring load/menu gump lanes. Separately, event `0x7e` remains the only other recovered writer of `0x6045` besides `Key_CheckCheatToggle`, so a successful `jassica16` match can still be undone later by that independent runtime path. `Key_CheckCheatToggle` itself is now comment-backed as keydown-only and still requires top-row `1` / `6` scan codes at the tail, leaving keypad digits and other non-matching input routes as a still-live explanation for failed tests. - Cross-game verification against the currently opened `REGRET.EXE` now has a runtime correction too. The F10 branch at `1148:0d0e` still reaches the same modifier helper at `11e0:01a8`, and live testing shows the practical gesture is hold `F10` first and then press `Ctrl`, not `Alt`. The same BIOS-backed helper swap should be verified directly in that target before promoting renames there. The same runtime test also explains the repeated immortality popups: the F10 branch is not debounced, so holding the keys lets repeated F10 keydown events flip immortality on and off multiple times. The real gameplay difference remains the latch code: `1148:34d2` (`Key_CheckSecretCodeSequences`) still contains a `jassica16` table at `1480:2ff0`, but the latch-enabling sequence in No Regret is the second table at `1480:2ffc`, decoded as `loosecannon`, which toggles `1480:0ac0` and mirrors the result into the F10 latch byte `1480:009b`. @@ -112,10 +120,17 @@ Detailed completed analysis belongs in the files under `docs/`, not in this plan Both apply/restore cleanly on a disposable retail copy and are the next runtime tests. - Full chronology for this patch line now lives in `docs/retail-debugger-patch-attempts.md`, including the failed global callback rewrite, direct wrapper call, single-step `65af` build, break-next `65af` build, guarded `0474` trampoline, shared `046f` method patch, and the current private-vtable candidate. - The hidden-menu orphan model is now materially stronger too. New live renames in seg1408 (`usecode_debugger_break_state_create`, `usecode_debugger_maybe_break_on_current_line`, `usecode_debugger_breakpoint_insert_sorted`, `usecode_debugger_has_breakpoint`, `usecode_debugger_callstack_push_entry`, `usecode_debugger_callstack_pop_entry`, `usecode_debugger_enable_single_step`, `usecode_debugger_clear_step_state`, `usecode_debugger_current_entry_get_unit_name`) line up with the seg109 UI in a way the cheat-only hook never did. The concrete interpreter-side handoff at `1418:04aa..04b5` now calls `usecode_debugger_maybe_break_on_current_line` whenever the far pointer at `0x659c/0x659e` is non-null, and that helper checks `(file,line)` breakpoints before callbacking through the debugger-state object's vtable. Current best read is therefore that the retail orphan happened one layer earlier than the cheat/event experiments: the seg109 current-unit debugger UI likely used to be entered from this seg1408 breakpoint object, but retail no longer appears to instantiate/store that object at `0x659c/0x659e`. That makes the breakpoint callback lane a stronger original-entry candidate than direct event `0x103` retargeting. +- The follow-up doc reconciliation is now closed too. `docs/ne-segment1.md` no longer presents the seg109/raw-reference UI addresses (`000b:*`) and the live seg1408 breakpoint-state addresses (`1408:*`) as if they were competing versions of one table; it now uses one combined component map that makes the layering explicit and preserves the interpreter callback at `1418:04aa..04b5` as the bridge between them. - The live NE `CRUSADER.EXE` mapping for that hidden-menu lane is now explicit and comment-backed in Ghidra too: direct hook `1130:2b75/2b78`, current-slot wrapper `13a0:0086` with constructor arg site `13a0:008d`, modal wrapper `13a0:020d` with inherited-arg patch subsite `13a0:024a`, listener create/dispatch `13a0:19b1` / `13a0:1df3`, compiled `0x410` CD-transfer-display body `13e8:2303`, deferred controller-side hook `13e8:25dd/25e0`, and the supporting cheat-state data cells at `1020:2833`, `1020:283d`, `1020:0844`, `1020:6045`, `1020:604f`, and `1020:6050`. The `0x410` body is still documented in place rather than renamed because it remains embedded inside the oversized `World_HandleKeyboardInput_13e8_14b4` function object. This improved live handoff and patch reproducibility still does not justify a headline estimate change by itself. +- The retail `-debug` switch is now separated cleanly from that hidden debugger lane too. Live `HandleCommandlineArgs` recovery in `CRUSADER.EXE` confirms a real `"-debug"` branch at `1048:0a93` that sets `g_debugMsgLevel = 10` (`1478:87e0`), prints `Debugging mode ON.`, and writes `1478:0845/0859` (`g_someDebugFlag` / `g_someDebugFlag2`). The `0x87e0` threshold is read by `ConsolePrintf` / `DebugPrintAndWaitForInput`, and `0x0859` is read by the segment `1468` `VideoPlayer_*` neighborhood (`1468:2869`, `1468:2af4`, helper `1468:2de9`). Current best read is `surviving debug-output / media-instrumentation switch`, not `dead parser stub`, and still not `the missing seg109/seg1408 usecode debugger bootstrap`, because the same pass found no evidence that `-debug` constructs or stores the real debugger-state pointer at `1478:659c/659e`. Focused write-up now lives in `docs/retail-debug-arg.md`. +- That `-debug` lane is tighter again after the follow-up deep dive and live Ghidra refinements. The seg1468 readers are now renamed/comment-backed as `VideoPlayer_AdvanceFrameAndHandleSkip`, `VideoPlayer_StreamChunks`, and `VideoPlayer_DrawDebugTimingOverlay`, and the helper body is no longer only `instrumentation-looking`: it writes two `500`-byte marker traces into adjacent scanlines near the bottom of a `0x280`-wide AVI playback buffer, using timing deltas scaled by `6000`. Current best read is therefore `built-in movie-playback timing overlay` plus the separate `g_debugMsgLevel` console/positioned-print threshold, still explicitly distinct from the hidden seg109/seg1408 usecode debugger path at `1478:659c/659e`. +- The same `-debug` lane is now bounded more comprehensively too. The user-confirmed moving bottom-of-video dots match the static two-scanline overlay model, so that AVI timing overlay is now the first closed visible effect. Outside the video lane, `-debug` also changes the global seg12d0 print threshold (`1478:87e0 = 10`) used by `ConsolePrintf`, `DebugPrintAndWaitForInput`, and the positioned print helpers, but the sink side is now tighter as well: `ProbablyPrintDebugMessage` formats through the static stdio-style table at `1478:6c32..6c81` and writes to the handle-`1` entry at `1478:6c46`, so the non-video side is ordinary DOS `stdout` gated by the threshold, not a separate hidden debugger console. Current xrefs still show that lane mostly as existing startup/config/cache/joystick/process diagnostics and a small set of dispatch/gump allocation failure-stop paths, not as a second confirmed hidden feature. The unresolved leftover is still `1478:0845`, which remains a parser-set latch with no recovered downstream consumer. +- The print inventory behind that same `-debug` lane is now materially tighter too. A focused pass recovered concrete `ConsolePrintf` / `DebugPrintAndWaitForInput` strings instead of only caller families: startup/arg strings such as `Debugging mode ON.`, `You DO need help!`, `Enabling ENHANCED mode. (NOT!)`, `Warping to mission %d ...`, `Defaulting to skill level %d`, and `Demo mode.`; init/config strings such as `Using map patch file.`, `Running with partial installation.`, `Running with full installation.`, and `Redirecting mission %d tune to '%s'`; cache/swap progress scaffolding such as `Creating Swap file [` and repeated `.` / bracket fragments; plus stronger failure/debug-stop fingerprints like `COULD NOT CREATE GLOB ITEM!`, `No room for Dispatcher Record/Playback.`, `End of script! (press any key)`, and `Out of Memory! [%u]`. Recovered call levels so far are `0x32` and `0xff`, both above the `-debug` threshold of `10`, which reinforces that the practical scarcity of visible text is about path frequency and graphics-mode presentation, not about the threshold still filtering these known messages out. +- The older folklore claim about flat offset `E69FB` and a possible secondary monochrome monitor is now materially weaker too. Local NE-segment mapping puts `0xE69FB` at live address `1478:2dfb`, which falls inside the `SYSTIMER.C` string in a data/name table (`KeyboardProcess`, `KEYIO.C`, `PRIORITY.C`, `SystemTimer`, `SYSTIMER.C`, `AccWait`), not inside executable instructions. The current retail print lane still points to ordinary `stdout` at `1478:6c46`, and targeted searches found no direct `mono`/`monochrome`/`hercules`/`MDA` strings or obvious monochrome-adapter port/memory references (`0x3b4/0x3b5/0x3b8/0x3ba`, `B000`). Current best read is therefore `folklore or address-mapping mistake`, not evidence for a hidden retail secondary-monitor debug display. ### Recently Closed Or No Longer Live +- The most reusable `misc_crusader_notes.txt` scratch items are no longer loose leads. `STEAM2` event hints are now checked against extracted USECODE rows, the old labels `FUN_1130_0896` / `FUN_1130_32af` / `FUN_1020_0000` / `FUN_1128_026b` are closed against live NE names, `ItemNPC_AnotherCreate` is now explicitly documented as the area-search-gated helper `NPC_CreateIfAreaSearchValid`, `Kernel_11d0_2491` is narrowed to a kernel/process snapshot writer, `FREE::ordinal3C` is constrained to an alert-clearing random `FREE::ordinal21` spawner, and `Int01E` is at least tightened from `unknown fire intrinsic` to `Actor::I_maybeFire` plus live export `1128:11da`. - `ASYLUM.24` is resolved as `_ASS_StopAllSFX`; it is no longer an open plan item. - The cheat/input side lane is complete enough to leave the live queue. - The segment coverage ledger is no longer a missing artifact; only refinement remains. @@ -159,7 +174,7 @@ Detailed completed analysis belongs in the files under `docs/`, not in this plan 12. Tighten the paired-file-family reading of the seg070 twin loops at `0009:67b6` and `0009:6916` by recovering which temporary buffer and record schema each family populates behind `entity_vm_runtime_owner_resource_create`. 13. Promote additional ledger rows where the current docs already justify `Foothold`, `Partial`, or `Deep`. 14. If the VM lane stalls again, revisit `000e:ffb0` from the now-verified `00db/00dc` caller windows and try to recover an adjacent non-overlapped helper before attempting any boundary repair. -15. If the immortality lane is revisited, stay focused on `NPCTRIG` slot `0x0a` first, with slot `0x20` still treated as the typed/setup companion and `EVENT` only as the generic hub baseline; the first anchored `0005:295f` caller family is now closed structurally at `0006:4379` (`0x20c -> 0005:295f`, sibling `0x20b -> 0005:2918` inside one seg031 dispatch-entry family) and comment-backed in the live NE program at `10f0:02d9`, `10f0:0379`, `10f0:03c3`, and `10f0:03e5`, so the next defensible step is the remaining caller families at `0006:c5f0` and `0007:3584`, or an earlier producer that assigns subtype `0x20b/0x20c` into field `+0x3c` before the owner-loaded class choice reaches the VM lane. +15. If the immortality lane is revisited, stay focused on `NPCTRIG` slot `0x0a` first, with slot `0x20` still treated as the typed/setup companion and `EVENT` only as the generic hub baseline; the three currently recovered direct `0005:295f` caller families are now all closed and comment-backed in the live NE program at `10f0:02d9`, `10f0:0379`, `10f0:03c3`, `10f0:03e5`, `1128:0ff0`, and `1138:1384`, so the next defensible step is an earlier producer that assigns subtype `0x20b/0x20c` into field `+0x3c` or otherwise chooses the owner-loaded class family before these generic damage consumers run. 16. Use the new Pentagram-derived parser proof of concept as the first tooling bridge for raw class/slot bodies: extend opcode coverage conservatively, emit IR v1 artifacts, and only then prototype a Ghidra-side annotation importer against compiled anchors like `000d:51fd`, `000d:5572`, `000d:46ec`, `000d:22bc`, and `000d:ebe3`. ## Remaining Work To Reach A Reasonably Complete Decompilation State diff --git a/tools/poc_crusader_usecode_parser.py b/tools/poc_crusader_usecode_parser.py index 2c678d4..7e5cc7a 100644 --- a/tools/poc_crusader_usecode_parser.py +++ b/tools/poc_crusader_usecode_parser.py @@ -4,6 +4,7 @@ import argparse import csv import hashlib import json +import re from dataclasses import dataclass from pathlib import Path from typing import Any @@ -13,6 +14,7 @@ REPO_ROOT = Path(__file__).resolve().parents[1] EXTRACTED_ROOT = REPO_ROOT / "USECODE" / "EUSECODE_extracted" CLASS_EVENT_INDEX = EXTRACTED_ROOT / "class_event_index.tsv" CLASS_LAYOUT_INDEX = EXTRACTED_ROOT / "class_layout_index.tsv" +RUNTIME_VM_IR_INDEX = EXTRACTED_ROOT / "runtime_vm_ir.tsv" CHUNKS_DIR = EXTRACTED_ROOT / "chunks" @@ -412,6 +414,7 @@ INTRINSIC_HINTS: dict[int, str] = { NO_ARG_MNEMONICS = { 0x08: "pop_result", 0x12: "pop_temp", + 0x13: "pop_temp_dword", 0x14: "add", 0x15: "add_dword", 0x16: "concat", @@ -427,6 +430,7 @@ NO_ARG_MNEMONICS = { 0x24: "cmp", 0x25: "cmp_dword", 0x26: "strcmp", + 0x27: "cmp_huge", 0x28: "lt", 0x29: "lt_dword", 0x2A: "le", @@ -456,6 +460,8 @@ NO_ARG_MNEMONICS = { 0x5F: "push_retval_dword", 0x60: "word_to_dword", 0x61: "dword_to_word", + 0x68: "copy_string", + 0x6A: "ptr_to_string", 0x6B: "str_to_ptr", 0x6D: "push_process_result", 0x73: "loopnext", @@ -500,6 +506,41 @@ class ParseResult: unknown_tail: bytes | None = None +@dataclass +class DebugSymbolRecord: + index: int + unknown1: int + type_id: int + type_char: str + bp_offset: int + bp_repr: str + unknown3: int + name: str + + +@dataclass +class DebugSymbolParseResult: + debug_symbols: list[DebugSymbolRecord] + end_offset: int + has_end_opcode: bool + trailing_bytes: bytes + + +@dataclass +class FieldTagRecord: + tag_id: int + bp_offset: int + value_kind: int + name: str + + +@dataclass +class FieldTagParseResult: + field_tags: list[FieldTagRecord] + end_offset: int + trailing_bytes: bytes + + class BodyReader: def __init__(self, data: bytes, offset: int = 0) -> None: self.data = data @@ -566,6 +607,20 @@ def parse_one_op(body: bytes, start: int) -> ParseResult: size = reader.read_u8() operands = {"bp_offset": bp_offset, "target": bp_repr(bp_offset), "size": size} mnemonic = "pop_local_blob" + elif opcode == 0x04: + operands = {"bp_offset": reader.read_u8(), "target": bp_repr(body[start + 1])} + mnemonic = "pop_member_byte" + elif opcode == 0x05: + operands = {"bp_offset": reader.read_u8(), "target": bp_repr(body[start + 1])} + mnemonic = "pop_member_word" + elif opcode == 0x06: + operands = {"bp_offset": reader.read_u8(), "target": bp_repr(body[start + 1])} + mnemonic = "pop_member_dword" + elif opcode == 0x07: + bp_offset = reader.read_u8() + size = reader.read_u8() + operands = {"bp_offset": bp_offset, "target": bp_repr(bp_offset), "size": size} + mnemonic = "pop_member_blob" elif opcode == 0x09: bp_offset = reader.read_u8() element_size = reader.read_u8() @@ -606,6 +661,9 @@ def parse_one_op(body: bytes, start: int) -> ParseResult: "intrinsic_name_hint": INTRINSIC_HINTS.get(intrinsic_ordinal), } mnemonic = "call_intrinsic" + elif opcode == 0x10: + operands = {"target_offset": reader.read_u16()} + mnemonic = "call_near" elif opcode == 0x11: target_class_id = reader.read_u16() target_slot = reader.read_u16() @@ -615,16 +673,21 @@ def parse_one_op(body: bytes, start: int) -> ParseResult: "target_event_name_hint": EVENT_NAME_HINTS.get(target_slot), } mnemonic = "call_class_event" - elif opcode in {0x19, 0x1A, 0x1B}: + elif opcode in {0x18, 0x19, 0x1A, 0x1B}: element_size = reader.read_u8() operands = {"element_size": element_size} - mnemonic = {0x19: "append_slist", 0x1A: "remove_slist", 0x1B: "remove_list"}[opcode] + mnemonic = { + 0x18: "append_unique_inline", + 0x19: "append_unique_indirect", + 0x1A: "remove_matching_indirect", + 0x1B: "remove_matching_inline", + }[opcode] elif opcode == 0x38: element_size = reader.read_u8() slist_flag = reader.read_u8() operands = {"element_size": element_size, "slist_flag": slist_flag} mnemonic = "in_list" - elif opcode in {0x3E, 0x3F, 0x40, 0x41, 0x43, 0x4B, 0x62, 0x63, 0x64, 0x69}: + elif opcode in {0x3E, 0x3F, 0x40, 0x41, 0x43, 0x46, 0x47, 0x48, 0x49, 0x4B, 0x62, 0x63, 0x64, 0x69}: bp_offset = reader.read_u8() operands = {"bp_offset": bp_offset, "target": bp_repr(bp_offset)} mnemonic = { @@ -633,6 +696,10 @@ def parse_one_op(body: bytes, start: int) -> ParseResult: 0x40: "push_local_dword", 0x41: "push_local_string", 0x43: "push_local_slist", + 0x46: "push_member_byte", + 0x47: "push_member_word", + 0x48: "push_member_dword", + 0x49: "push_member_huge", 0x4B: "push_local_addr", 0x62: "free_local_string", 0x63: "free_local_slist", @@ -776,7 +843,9 @@ def load_tsv_rows(path: Path) -> list[dict[str, str]]: def find_chunk_file(entry_index: int) -> Path: - matches = sorted(CHUNKS_DIR.glob(f"chunk_{entry_index}_*.bin")) + matches = sorted(CHUNKS_DIR.glob(f"chunk_{entry_index:03d}_*.bin")) + if not matches: + matches = sorted(CHUNKS_DIR.glob(f"chunk_{entry_index}_*.bin")) if not matches: raise FileNotFoundError(f"No chunk file found for entry_index={entry_index}") return matches[0] @@ -810,18 +879,42 @@ def select_rows(class_name: str, slot: int) -> tuple[dict[str, str], dict[str, s return event_row, layout_row -def annotation_hints(event_row: dict[str, str], payload_shape_hint: str) -> dict[str, Any]: +def load_runtime_ir_rows() -> list[dict[str, str]]: + return load_tsv_rows(RUNTIME_VM_IR_INDEX) + + +def runtime_stage_hints(ops: list[dict[str, Any]]) -> list[dict[str, str]]: + opcode_values = {op["opcode"] for op in ops} + hints: list[dict[str, str]] = [] + for row in load_runtime_ir_rows(): + opcode_or_lane = row.get("opcode_or_lane", "") + if opcode_or_lane.lower().startswith("opcode 0x"): + opcode_value = try_parse_int(opcode_or_lane.split()[1]) + if opcode_value is None or opcode_value not in opcode_values: + continue + elif row.get("stage_address") not in {"000d:177c", "000d:1acb", "000d:2104", "000d:21ed", "000d:22bc"}: + continue + hints.append(row) + return hints + + +def annotation_hints(event_row: dict[str, str], payload_shape_hint: str, ops: list[dict[str, Any]]) -> dict[str, Any]: slot = parse_int(event_row["slot"]) return { "runtime_family": "slot-backed-owner-loaded-body", "payload_shape_hint": payload_shape_hint, "compiled_anchors": [ - {"address": "000d:51fd", "role": "slot_value_loader"}, - {"address": "000d:5572", "role": "slot_value_plus_offset"}, {"address": "000d:46ec", "role": "context_create_from_slot"}, + {"address": "000d:0988", "role": "referent_chain_mutator"}, + {"address": "000d:177c", "role": "push_frame_word_literal"}, + {"address": "000d:1acb", "role": "compare_stream_dword_and_push_bool"}, + {"address": "000d:208b", "role": "materialize_or_forward_value"}, + {"address": "000d:21ed", "role": "prepend_inline_payload"}, {"address": "000d:22bc", "role": "matrix_pushback_stage"}, + {"address": "000d:2104", "role": "finalize_to_outptr"}, {"address": "000d:ebe3", "role": "opcode_sequence_run"}, ], + "runtime_stage_hints": runtime_stage_hints(ops), "slot_taxonomy": {"slot": slot, "event_name_hint": event_row["event_name_hint"] or EVENT_NAME_HINTS.get(slot)}, } @@ -836,6 +929,79 @@ def infer_payload_shape(slot: int) -> str | None: return None +def parse_debug_symbols(body: bytes, start: int) -> DebugSymbolParseResult | None: + if start >= len(body): + return None + if body[start] == 0x7A: + return DebugSymbolParseResult(debug_symbols=[], end_offset=start + 1, has_end_opcode=True, trailing_bytes=body[start + 1:]) + + reader = BodyReader(body, start) + count = reader.read_u8() + debug_symbols: list[DebugSymbolRecord] = [] + + try: + for index in range(count): + unknown1 = reader.read_u8() + type_id = reader.read_u8() + bp_offset = reader.read_u8() + unknown3 = reader.read_u8() + name = reader.read_cstring() + type_char = chr(type_id) if 0x20 <= type_id <= 0x7E else "." + debug_symbols.append( + DebugSymbolRecord( + index=index, + unknown1=unknown1, + type_id=type_id, + type_char=type_char, + bp_offset=bp_offset, + bp_repr=bp_repr(bp_offset), + unknown3=unknown3, + name=name, + ) + ) + except IndexError: + return None + + has_end_opcode = reader.offset < len(body) and body[reader.offset] == 0x7A + end_offset = reader.offset + (1 if has_end_opcode else 0) + trailing_bytes = body[end_offset:] + if not has_end_opcode: + return None + return DebugSymbolParseResult( + debug_symbols=debug_symbols, + end_offset=end_offset, + has_end_opcode=has_end_opcode, + trailing_bytes=trailing_bytes, + ) + + +def parse_field_tags(body: bytes, start: int) -> FieldTagParseResult | None: + if start >= len(body): + return None + + reader = BodyReader(body, start) + field_tags: list[FieldTagRecord] = [] + + try: + while reader.offset < len(body) and body[reader.offset] != 0x7A: + tag_id = reader.read_u8() + bp_offset = reader.read_u8() + value_kind = reader.read_u8() + name = reader.read_cstring() + if not name: + return None + field_tags.append(FieldTagRecord(tag_id=tag_id, bp_offset=bp_offset, value_kind=value_kind, name=name)) + if reader.offset < len(body) and body[reader.offset] == 0x00: + reader.offset += 1 + except IndexError: + return None + + if not field_tags or reader.offset >= len(body) or body[reader.offset] != 0x7A: + return None + end_offset = reader.offset + 1 + return FieldTagParseResult(field_tags=field_tags, end_offset=end_offset, trailing_bytes=body[end_offset:]) + + def parse_body_ir(event_row: dict[str, str], layout_row: dict[str, str]) -> dict[str, Any]: entry_index = parse_int(event_row["entry_index"]) chunk_file = find_chunk_file(entry_index) @@ -849,6 +1015,9 @@ def parse_body_ir(event_row: dict[str, str], layout_row: dict[str, str]) -> dict offset = 0 end_reason = "body_exhausted" unknown_tail = b"" + debug_symbols: list[dict[str, Any]] = [] + debug_symbol_offset: int | None = None + field_tags: list[dict[str, Any]] = [] while offset < len(body): result = parse_one_op(body, offset) @@ -867,6 +1036,86 @@ def parse_body_ir(event_row: dict[str, str], layout_row: dict[str, str]) -> dict if offset >= len(body) and end_reason == "body_exhausted": unknown_tail = b"" + candidate_debug_offsets = sorted( + { + operands["symbol_offset"] + for op in ops + for operands in [op["operands"]] + if op["mnemonic"] == "symbol_info" + and isinstance(operands.get("symbol_offset"), int) + and 0 <= operands["symbol_offset"] < len(body) + } + ) + last_ret_index = next((index for index in range(len(ops) - 1, -1, -1) if ops[index]["mnemonic"] == "ret"), None) + if end_reason == "unknown_opcode" and last_ret_index is not None: + ret_end = ops[last_ret_index]["offset"] + (len(ops[last_ret_index]["raw_bytes"]) // 2) + ret_debug_result = parse_debug_symbols(body, ret_end) + if ret_debug_result is not None: + ops = ops[:last_ret_index + 1] + debug_symbol_offset = ret_end + debug_symbols = [ + { + "index": symbol.index, + "unknown1": symbol.unknown1, + "type_id": symbol.type_id, + "type_char": symbol.type_char, + "bp_offset": symbol.bp_offset, + "bp_repr": symbol.bp_repr, + "unknown3": symbol.unknown3, + "name": symbol.name, + } + for symbol in ret_debug_result.debug_symbols + ] + end_reason = "debug_symbols_then_end" + unknown_tail = ret_debug_result.trailing_bytes + offset = ret_debug_result.end_offset + + if end_reason == "unknown_opcode" and candidate_debug_offsets: + for candidate_offset in reversed(candidate_debug_offsets): + if candidate_offset != offset: + continue + debug_result = parse_debug_symbols(body, candidate_offset) + if debug_result is None: + continue + debug_symbol_offset = candidate_offset + debug_symbols = [ + { + "index": symbol.index, + "unknown1": symbol.unknown1, + "type_id": symbol.type_id, + "type_char": symbol.type_char, + "bp_offset": symbol.bp_offset, + "bp_repr": symbol.bp_repr, + "unknown3": symbol.unknown3, + "name": symbol.name, + } + for symbol in debug_result.debug_symbols + ] + end_reason = "debug_symbols_then_end" + unknown_tail = debug_result.trailing_bytes + offset = debug_result.end_offset + break + + if end_reason == "unknown_opcode" and last_ret_index is not None: + ret_end = ops[last_ret_index]["offset"] + (len(ops[last_ret_index]["raw_bytes"]) // 2) + field_tag_result = parse_field_tags(body, ret_end) + if field_tag_result is not None: + ops = ops[:last_ret_index + 1] + field_tags = [ + { + "tag_id": tag.tag_id, + "bp_offset": tag.bp_offset, + "bp_repr": bp_repr(tag.bp_offset), + "value_kind": tag.value_kind, + "name": tag.name, + "tag_label": f"{tag.tag_id:02X}:{tag.bp_offset:02X}{tag.value_kind:02X}->{tag.name}", + } + for tag in field_tag_result.field_tags + ] + end_reason = "field_tags_then_end" + unknown_tail = field_tag_result.trailing_bytes + offset = field_tag_result.end_offset + slot = parse_int(event_row["slot"]) payload_shape = infer_payload_shape(slot) return { @@ -900,9 +1149,14 @@ def parse_body_ir(event_row: dict[str, str], layout_row: dict[str, str]) -> dict "raw_body_sha1": hashlib.sha1(body).hexdigest(), "unknown_trailing_bytes": unknown_tail.hex(), "decoded_op_count": len(ops), + "debug_symbol_offset": debug_symbol_offset, + "debug_symbol_count": len(debug_symbols), + "field_tag_count": len(field_tags), }, "ops": ops, - "annotation_hints": annotation_hints(event_row, payload_shape), + "debug_symbols": debug_symbols, + "field_tags": field_tags, + "annotation_hints": annotation_hints(event_row, payload_shape, ops), } @@ -1060,23 +1314,823 @@ def render_family_diff_text(diff: dict[str, Any]) -> str: return "\n".join(lines) + "\n" +def build_listing_labels(ir: dict[str, Any]) -> dict[int, str]: + return { + op["operands"]["target_offset"] + ir["event"]["derived_body_start"]: f"L_{op['operands']['target_offset'] + ir['event']['derived_body_start']:04X}" + for op in ir["ops"] + if "target_offset" in op["operands"] and isinstance(op["operands"]["target_offset"], int) + } + + +def build_script_blocks(ir: dict[str, Any]) -> tuple[dict[int, str], list[tuple[str, list[dict[str, Any]]]]]: + ops = ir["ops"] + if not ops: + return {}, [] + + branch_mnemonics = {"jne", "jmp", "foreach_list", "foreach_slist"} + leaders = {ops[0]["absolute_body_offset"]} + for index, op in enumerate(ops): + target_offset = op["operands"].get("target_offset") + if isinstance(target_offset, int): + leaders.add(ir["event"]["derived_body_start"] + target_offset) + if op["mnemonic"] in branch_mnemonics and index + 1 < len(ops): + leaders.add(ops[index + 1]["absolute_body_offset"]) + + ordered_leaders = sorted(leaders) + label_map = {ordered_leaders[0]: "entry"} + for absolute_offset in ordered_leaders[1:]: + label_map[absolute_offset] = f"block_{absolute_offset:04X}" + + blocks: list[tuple[str, list[dict[str, Any]]]] = [] + current_label = label_map[ops[0]["absolute_body_offset"]] + current_ops: list[dict[str, Any]] = [] + for op in ops: + absolute_offset = op["absolute_body_offset"] + if absolute_offset in label_map and current_ops and label_map[absolute_offset] != current_label: + blocks.append((current_label, current_ops)) + current_label = label_map[absolute_offset] + current_ops = [] + current_ops.append(op) + if current_ops: + blocks.append((current_label, current_ops)) + return label_map, blocks + + +def format_script_string(value: str) -> str: + escaped = value.replace("\\", "\\\\").replace('"', '\\"') + return f'"{escaped}"' + + +def format_generic_operands(operands: dict[str, Any], label_map: dict[int, str], body_start: int) -> str: + parts: list[str] = [] + for key, value in operands.items(): + if value is None or value == "": + continue + if key == "target_offset" and isinstance(value, int): + parts.append(f"target={label_map.get(body_start + value, f'0x{body_start + value:04X}')}") + continue + if key == "target_event_name_hint": + parts.append(f"event={value}") + continue + if key == "intrinsic_name_hint": + parts.append(f"hint={value}") + continue + if isinstance(value, int): + if key.endswith("_signed"): + parts.append(f"{key}={value}") + else: + parts.append(f"{key}=0x{value:X}") + continue + parts.append(f"{key}={value}") + return " ".join(parts) + + +def format_script_statement(op: dict[str, Any], label_map: dict[int, str], body_start: int) -> str: + mnemonic = op["mnemonic"] + operands = op["operands"] + + if mnemonic == "init": + return f"init locals 0x{operands['local_bytes']:02X}" + if mnemonic == "push_byte_immediate": + return f"push 0x{operands['value_u8']:02X} ; signed {operands['value_signed']}" + if mnemonic == "push_word_immediate": + return f"push 0x{operands['value_u16']:04X}" + if mnemonic == "push_dword_immediate": + return f"push 0x{operands['value_u32']:08X}" + if mnemonic == "push_string_immediate": + return f"push {format_script_string(operands['string'])}" + if mnemonic.startswith("push_local_") or mnemonic.startswith("push_member_"): + return f"push {operands['target']}" + if mnemonic == "push_local_list": + return f"push {operands['target']}" + if mnemonic == "push_list_element": + return f"push list_element size=0x{operands['element_size']:X} slist=0x{operands['slist_flag']:X}" + if mnemonic == "push_huge": + return f"push huge 0x{operands['value_a']:02X}:0x{operands['value_b']:02X}" + if mnemonic == "push_global": + return f"push global[0x{operands['global_id']:04X}] size=0x{operands['size']:X}" + if mnemonic == "push_local_addr": + return f"push &{operands['target']}" + if mnemonic == "push_string_ptr": + return f"push string_ptr {operands['target']}" + if mnemonic.startswith("pop_local_") or mnemonic.startswith("pop_member_"): + return f"pop -> {operands['target']}" + if mnemonic == "pop_local_blob" or mnemonic == "pop_member_blob": + return f"pop_blob -> {operands['target']} size=0x{operands['size']:X}" + if mnemonic == "pop_list_element": + return f"pop_list_element -> {operands['target']} elem_size=0x{operands['element_size']:X} slist=0x{operands['slist_flag']:X}" + if mnemonic == "pop_global": + return f"pop -> global[0x{operands['global_id']:04X}] size=0x{operands['size']:X}" + if mnemonic == "call_intrinsic": + hint = operands.get("intrinsic_name_hint") or "unknown_intrinsic" + return f"call intrinsic 0x{operands['intrinsic_ordinal']:04X} {hint} args=0x{operands['arg_bytes']:02X}" + if mnemonic == "call_near": + target = label_map.get(body_start + operands["target_offset"], f"0x{body_start + operands['target_offset']:04X}") + return f"call {target}" + if mnemonic == "call_class_event": + event_hint = operands.get("target_event_name_hint") + suffix = f" {event_hint}" if event_hint else "" + return f"call class 0x{operands['target_class_id']:04X}.slot 0x{operands['target_event_slot']:02X}{suffix}" + if mnemonic in {"append_unique_inline", "append_unique_indirect", "remove_matching_indirect", "remove_matching_inline"}: + return f"{mnemonic} size=0x{operands['element_size']:X}" + if mnemonic == "create_list": + return f"create_list elem_size=0x{operands['element_size']:X} count=0x{operands['count']:X}" + if mnemonic == "in_list": + return f"in_list elem_size=0x{operands['element_size']:X} slist=0x{operands['slist_flag']:X}" + if mnemonic == "jne": + target = label_map.get(body_start + operands["target_offset"], f"0x{body_start + operands['target_offset']:04X}") + return f"if pop() != 0 goto {target}" + if mnemonic == "jmp": + target = label_map.get(body_start + operands["target_offset"], f"0x{body_start + operands['target_offset']:04X}") + return f"goto {target}" + if mnemonic in {"foreach_list", "foreach_slist"}: + target = label_map.get(body_start + operands["target_offset"], f"0x{body_start + operands['target_offset']:04X}") + return f"{mnemonic} {operands['target_var']} elem_size=0x{operands['element_size']:X} -> {target}" + if mnemonic == "spawn": + event_hint = operands.get("target_event_name_hint") + suffix = f" {event_hint}" if event_hint else "" + return ( + f"spawn class 0x{operands['target_class_id']:04X}.slot 0x{operands['target_event_slot']:02X}{suffix} " + f"args=0x{operands['arg_bytes']:02X} this_size=0x{operands['this_size']:02X}" + ) + if mnemonic == "spawn_inline": + event_hint = operands.get("target_event_name_hint") + suffix = f" {event_hint}" if event_hint else "" + return ( + f"spawn_inline class 0x{operands['target_class_id']:04X}.slot 0x{operands['target_event_slot']:02X}{suffix} " + f"inline=0x{operands['inline_offset']:04X} this_size=0x{operands['this_size']:02X} unk=0x{operands['unknown']:02X}" + ) + if mnemonic == "line_number": + return f"line {operands['line_number']}" + if mnemonic == "symbol_info": + return f"symbol_info {operands['symbol']} -> 0x{operands['symbol_offset']:04X}" + if mnemonic == "global_address": + return f"push &global[0x{operands['global_id']:04X}]" + if mnemonic == "ret": + return "return" + if mnemonic in NO_ARG_MNEMONICS.values(): + return mnemonic + + rendered_operands = format_generic_operands(operands, label_map, body_start) + return f"{mnemonic} {rendered_operands}".rstrip() + + +def render_script(ir: dict[str, Any]) -> str: + label_map, blocks = build_script_blocks(ir) + slot_name = ir["event"]["event_name_hint"] or f"slot_{ir['event']['slot']:02X}" + lines = [ + ( + f"script {ir['class']['class_name']}.{slot_name} " + f"(entry={ir['class']['entry_index']}, class_id=0x{ir['class']['class_id']:04X}, slot=0x{ir['event']['slot']:02X})" + ), + "{", + f" body_range 0x{ir['event']['derived_body_start']:04X}..0x{ir['event']['derived_body_end']:04X}", + f" raw_event_word 0x{ir['event']['raw_event_entry_word']:04X}", + f" raw_code_offset 0x{ir['event']['raw_code_offset']:08X}", + f" end_reason {ir['body']['end_reason']}", + ] + + if ir["debug_symbols"]: + lines.append(" locals") + lines.append(" {") + for symbol in ir["debug_symbols"]: + lines.append( + f" {symbol['bp_repr']} {symbol['name']} ; type=0x{symbol['type_id']:02X} ('{symbol['type_char']}') unk1=0x{symbol['unknown1']:02X} unk3=0x{symbol['unknown3']:02X}" + ) + lines.append(" }") + + lines.append("") + for label, ops in blocks: + lines.append(f" {label}:") + for op in ops: + statement = format_script_statement(op, label_map, ir["event"]["derived_body_start"]) + lines.append(f" {statement} ; {op['absolute_body_offset']:04X}: {op['raw_bytes']}") + lines.append("") + + if ir["field_tags"]: + lines.append(" field_tags") + lines.append(" {") + for tag in ir["field_tags"]: + lines.append( + f" {tag['bp_repr']} {tag['name']} ; tag=0x{tag['tag_id']:02X} kind=0x{tag['value_kind']:02X}" + ) + lines.append(" }") + + if ir["body"]["unknown_trailing_bytes"]: + lines.append(f" unknown_trailing_bytes {ir['body']['unknown_trailing_bytes']}") + + lines.append("}") + return "\n".join(lines) + "\n" + + +def sanitize_identifier(name: str) -> str: + cleaned = [char if char.isalnum() or char == "_" else "_" for char in name.strip()] + identifier = "".join(cleaned).strip("_") or "var" + if identifier[0].isdigit(): + identifier = f"v_{identifier}" + return identifier + + +def build_local_name_map(ir: dict[str, Any]) -> dict[int, str]: + return { + symbol["bp_offset"]: sanitize_identifier(symbol["name"]) + for symbol in ir["debug_symbols"] + } + + +def format_bp_name(bp_offset: int, local_name_map: dict[int, str]) -> str: + if bp_offset in local_name_map: + return local_name_map[bp_offset] + disp = signed_byte(bp_offset) + if disp >= 0: + return f"arg_{disp:02X}" + return f"local_{abs(disp):02X}" + + +def intrinsic_display_name(name_hint: str | None, ordinal: int) -> str: + if not name_hint: + return f"intrinsic_{ordinal:04X}" + display = name_hint.replace("::", ".") + paren = display.find("(") + if paren != -1: + display = display[:paren] + return display + + +def push_expr_from_op(op: dict[str, Any], local_name_map: dict[int, str]) -> tuple[str, int] | None: + mnemonic = op["mnemonic"] + operands = op["operands"] + + if mnemonic == "push_byte_immediate": + return (str(operands["value_signed"]), 1) + if mnemonic == "push_word_immediate": + return (f"0x{operands['value_u16']:04X}", 2) + if mnemonic == "push_dword_immediate": + return (f"0x{operands['value_u32']:08X}", 4) + if mnemonic == "push_string_immediate": + return (format_script_string(operands["string"]), max(2, operands["declared_length"])) + if mnemonic in {"push_local_byte", "push_local_word", "push_local_dword", "push_local_string", "push_local_slist", "push_local_addr", "push_string_ptr"}: + return (format_bp_name(operands["bp_offset"], local_name_map), 4 if mnemonic in {"push_local_dword", "push_local_addr", "push_string_ptr"} else 2) + if mnemonic in {"push_member_byte", "push_member_word", "push_member_dword", "push_member_huge"}: + return (f"member.{format_bp_name(operands['bp_offset'], local_name_map)}", 4 if mnemonic in {"push_member_dword", "push_member_huge"} else 2) + if mnemonic == "push_local_list": + return (format_bp_name(operands["bp_offset"], local_name_map), max(2, operands["element_size"])) + if mnemonic == "push_list_element": + return (f"list_element(size=0x{operands['element_size']:X})", max(1, operands["element_size"])) + if mnemonic == "push_huge": + return (f"0x{operands['value_a']:02X}{operands['value_b']:02X}", 4) + if mnemonic == "push_global": + return (f"global[0x{operands['global_id']:04X}]", max(1, operands["size"])) + if mnemonic == "push_pid": + return ("pid", 2) + if mnemonic == "push_process_result": + return ("process_result", 2) + return None + + +def pop_stack_bytes(stack: list[tuple[str, int]], byte_count: int) -> list[str]: + if byte_count <= 0: + return [] + parts: list[str] = [] + consumed = 0 + while stack and consumed < byte_count: + expr, width = stack.pop() + parts.append(expr) + consumed += max(1, width) + parts.reverse() + return parts + + +def combine_binary(stack: list[tuple[str, int]], operator: str, result_width: int = 2) -> None: + if len(stack) < 2: + return + right_expr, _ = stack.pop() + left_expr, _ = stack.pop() + stack.append((f"({left_expr} {operator} {right_expr})", result_width)) + + +def decompile_pseudocode_blocks(ir: dict[str, Any]) -> list[tuple[str, list[str]]]: + label_map, blocks = build_script_blocks(ir) + local_name_map = build_local_name_map(ir) + skip_mnemonics = {"line_number", "symbol_info", "add_sp", "init"} + pending_result: str | None + rendered_blocks: list[tuple[str, list[str]]] = [] + + for label, ops in blocks: + stack: list[tuple[str, int]] = [] + pending_result = None + block_lines: list[str] = [] + index = 0 + while index < len(ops): + op = ops[index] + mnemonic = op["mnemonic"] + operands = op["operands"] + + pushed = push_expr_from_op(op, local_name_map) + if pushed is not None: + stack.append(pushed) + index += 1 + continue + + if mnemonic in skip_mnemonics: + index += 1 + continue + + if mnemonic == "push_indirect": + if stack: + expr, _ = stack.pop() + stack.append((f"*({expr})", max(1, operands["size"]))) + index += 1 + continue + + if mnemonic == "set_info": + args = ", ".join(expr for expr, _ in stack) if stack else "" + stack.clear() + block_lines.append(f"set_info({args});") + index += 1 + continue + + if mnemonic == "process_exclude": + block_lines.append("process_exclude();") + index += 1 + continue + + if mnemonic == "call_intrinsic": + arg_exprs = pop_stack_bytes(stack, operands["arg_bytes"]) + pending_result = f"{intrinsic_display_name(operands.get('intrinsic_name_hint'), operands['intrinsic_ordinal'])}({', '.join(arg_exprs)})" + index += 1 + continue + + if mnemonic == "push_retval_byte": + stack.append((pending_result or "retval", 1)) + pending_result = None + index += 1 + continue + + if mnemonic == "push_retval_word": + stack.append((pending_result or "retval", 2)) + pending_result = None + index += 1 + continue + + if mnemonic == "push_retval_dword": + stack.append((pending_result or "retval", 4)) + pending_result = None + index += 1 + continue + + if mnemonic == "call_class_event": + arg_text = ", ".join(expr for expr, _ in stack) + stack.clear() + event_name = operands.get("target_event_name_hint") or f"slot_{operands['target_event_slot']:02X}" + block_lines.append( + f"class_{operands['target_class_id']:04X}_{sanitize_identifier(event_name)}({arg_text});" + ) + pending_result = None + index += 1 + continue + + if mnemonic == "spawn": + arg_text = ", ".join(expr for expr, _ in stack) + stack.clear() + event_name = operands.get("target_event_name_hint") or f"slot_{operands['target_event_slot']:02X}" + block_lines.append( + f"spawn class_{operands['target_class_id']:04X}_{sanitize_identifier(event_name)}({arg_text});" + ) + pending_result = None + index += 1 + continue + + if mnemonic == "spawn_inline": + arg_text = ", ".join(expr for expr, _ in stack) + stack.clear() + event_name = operands.get("target_event_name_hint") or f"slot_{operands['target_event_slot']:02X}" + block_lines.append( + f"spawn_inline class_{operands['target_class_id']:04X}_{sanitize_identifier(event_name)}({arg_text}) /* inline=0x{operands['inline_offset']:04X} */;" + ) + pending_result = None + index += 1 + continue + + if mnemonic in {"add", "add_dword"}: + combine_binary(stack, "+", 4 if mnemonic.endswith("dword") else 2) + index += 1 + continue + + if mnemonic in {"sub", "sub_dword"}: + combine_binary(stack, "-", 4 if mnemonic.endswith("dword") else 2) + index += 1 + continue + + if mnemonic in {"mul", "mul_dword"}: + combine_binary(stack, "*", 4 if mnemonic.endswith("dword") else 2) + index += 1 + continue + + if mnemonic in {"div", "div_dword"}: + combine_binary(stack, "/", 4 if mnemonic.endswith("dword") else 2) + index += 1 + continue + + if mnemonic == "bit_and": + combine_binary(stack, "&") + index += 1 + continue + + if mnemonic == "bit_or": + combine_binary(stack, "|") + index += 1 + continue + + if mnemonic == "and": + combine_binary(stack, "&&") + index += 1 + continue + + if mnemonic == "or": + combine_binary(stack, "||") + index += 1 + continue + + if mnemonic == "cmp": + combine_binary(stack, "!=") + index += 1 + continue + + if mnemonic == "ne": + combine_binary(stack, "!=") + index += 1 + continue + + if mnemonic == "lt": + combine_binary(stack, "<") + index += 1 + continue + + if mnemonic == "le": + combine_binary(stack, "<=") + index += 1 + continue + + if mnemonic == "gt": + combine_binary(stack, ">") + index += 1 + continue + + if mnemonic == "ge": + combine_binary(stack, ">=") + index += 1 + continue + + if mnemonic == "not": + if stack: + expr, width = stack.pop() + stack.append((f"(!{expr})", width)) + index += 1 + continue + + if mnemonic == "implies": + expr = stack.pop()[0] if stack else "retval" + stack.append((f"implies({expr}, 0x{operands['arg0']:X}, 0x{operands['arg1']:X})", 1)) + index += 1 + continue + + if mnemonic == "pop_temp": + if stack: + stack.pop() + index += 1 + continue + + if mnemonic == "suspend": + block_lines.append("suspend;") + stack.clear() + index += 1 + continue + + if mnemonic == "jne": + target = label_map.get(ir["event"]["derived_body_start"] + operands["target_offset"], f"block_{ir['event']['derived_body_start'] + operands['target_offset']:04X}") + condition = stack.pop()[0] if stack else "condition" + block_lines.append(f"if {condition} goto {target};") + index += 1 + continue + + if mnemonic == "jmp": + target = label_map.get(ir["event"]["derived_body_start"] + operands["target_offset"], f"block_{ir['event']['derived_body_start'] + operands['target_offset']:04X}") + block_lines.append(f"goto {target};") + stack.clear() + index += 1 + continue + + if mnemonic in {"foreach_list", "foreach_slist"}: + target = label_map.get(ir["event"]["derived_body_start"] + operands["target_offset"], f"block_{ir['event']['derived_body_start'] + operands['target_offset']:04X}") + block_lines.append( + f"{mnemonic} {format_bp_name(operands['bp_offset'], local_name_map)} -> {target};" + ) + index += 1 + continue + + if mnemonic == "ret": + block_lines.append("return;") + stack.clear() + break + + if mnemonic.startswith("pop_local_") or mnemonic.startswith("pop_member_"): + if stack: + expr, _ = stack.pop() + else: + expr = "value" + target_name = format_bp_name(operands["bp_offset"], local_name_map) + block_lines.append(f"{target_name} = {expr};") + index += 1 + continue + + rendered_operands = format_generic_operands(operands, label_map, ir["event"]["derived_body_start"]) + block_lines.append(f"/* {mnemonic} {rendered_operands} */") + index += 1 + + rendered_blocks.append((label, block_lines)) + + return rendered_blocks + + +@dataclass(frozen=True) +class TerminalStatement: + kind: str + condition: str | None = None + target: str | None = None + + +def parse_terminal_statement(statement: str) -> TerminalStatement | None: + if statement == "return;": + return TerminalStatement("return") + + goto_match = re.fullmatch(r"goto ([A-Za-z0-9_]+);", statement) + if goto_match is not None: + return TerminalStatement("goto", target=goto_match.group(1)) + + if_match = re.fullmatch(r"if (.+) goto ([A-Za-z0-9_]+);", statement) + if if_match is not None: + return TerminalStatement("if", condition=if_match.group(1), target=if_match.group(2)) + + return None + + +def strip_outer_parens(expr: str) -> str: + text = expr.strip() + while text.startswith("(") and text.endswith(")"): + depth = 0 + balanced = True + for index, char in enumerate(text): + if char == "(": + depth += 1 + elif char == ")": + depth -= 1 + if depth == 0 and index != len(text) - 1: + balanced = False + break + if depth < 0: + balanced = False + break + if not balanced or depth != 0: + break + text = text[1:-1].strip() + return text + + +def invert_condition_text(condition: str) -> str: + expr = strip_outer_parens(condition) + comparisons = { + " != ": " == ", + " == ": " != ", + " <= ": " > ", + " >= ": " < ", + " < ": " >= ", + " > ": " <= ", + } + for source, replacement in comparisons.items(): + if source in expr: + return expr.replace(source, replacement, 1) + if expr.startswith("!"): + return strip_outer_parens(expr[1:]) + if re.fullmatch(r"[A-Za-z_][A-Za-z0-9_:.]*(\(.*\))?", expr): + return f"!{expr}" + return f"!({expr})" + + +def indent_lines(lines: list[str], prefix: str = " ") -> list[str]: + return [f"{prefix}{line}" if line else "" for line in lines] + + +def detect_noop_compare_chain( + blocks: list[tuple[str, list[str]]], + label_to_index: dict[str, int], + start_index: int, + end_index: int, +) -> int | None: + cursor = start_index + common_target: str | None = None + + while cursor + 1 < end_index: + _, compare_statements = blocks[cursor] + _, goto_statements = blocks[cursor + 1] + if len(compare_statements) != 1 or len(goto_statements) != 1: + return None + + compare_terminal = parse_terminal_statement(compare_statements[0]) + goto_terminal = parse_terminal_statement(goto_statements[0]) + if compare_terminal is None or compare_terminal.kind != "if": + return None + if goto_terminal is None or goto_terminal.kind != "goto": + return None + + if common_target is None: + common_target = goto_terminal.target + elif goto_terminal.target != common_target: + return None + + if compare_terminal.target == common_target: + body_index = label_to_index.get(common_target or "") + if body_index is None or body_index != cursor + 2 or body_index >= end_index: + return None + return body_index + + next_index = label_to_index.get(compare_terminal.target or "") + if next_index is None or next_index != cursor + 2 or next_index >= end_index: + return None + cursor += 2 + + return None + + +def render_structured_region( + blocks: list[tuple[str, list[str]]], + label_to_index: dict[str, int], + start_index: int, + end_index: int, + return_labels: set[str], +) -> tuple[list[str], bool] | None: + lines: list[str] = [] + index = start_index + + while index < end_index: + skipped_index = detect_noop_compare_chain(blocks, label_to_index, index, end_index) + if skipped_index is not None: + index = skipped_index + continue + + _, statements = blocks[index] + if not statements: + index += 1 + continue + + terminal = parse_terminal_statement(statements[-1]) + if terminal is None: + lines.extend(statements) + index += 1 + continue + + lines.extend(statements[:-1]) + + if terminal.kind == "return": + lines.append("return;") + return lines, False + + if terminal.kind == "goto": + target_label = terminal.target or "" + target_index = label_to_index.get(target_label) + if target_label in return_labels: + lines.append("return;") + return lines, False + if target_index is None: + return None + if target_index == index + 1: + index += 1 + continue + if index < target_index < end_index: + index = target_index + continue + return None + + target_label = terminal.target or "" + target_index = label_to_index.get(target_label) + if target_index is None or target_index <= index or target_index > end_index: + return None + if target_index == index + 1: + index += 1 + continue + + inner_result = render_structured_region(blocks, label_to_index, index + 1, target_index, return_labels) + if inner_result is None: + return None + + inner_lines, inner_falls_through = inner_result + if inner_lines: + lines.append(f"if ({invert_condition_text(terminal.condition or 'condition')}) {{") + lines.extend(indent_lines(inner_lines)) + lines.append("}") + elif not inner_falls_through: + lines.append(f"if ({invert_condition_text(terminal.condition or 'condition')}) {{") + lines.append("}") + + index = target_index + + return lines, True + + +def render_structured_pseudocode(blocks: list[tuple[str, list[str]]]) -> list[str] | None: + if not blocks: + return [] + + label_to_index = {label: index for index, (label, _) in enumerate(blocks)} + return_labels = { + label + for label, statements in blocks + if len(statements) == 1 and statements[0] == "return;" + } + structured = render_structured_region(blocks, label_to_index, 0, len(blocks), return_labels) + if structured is None: + return None + return structured[0] + + +def render_pseudocode(ir: dict[str, Any]) -> str: + slot_name = sanitize_identifier(ir["event"]["event_name_hint"] or f"slot_{ir['event']['slot']:02X}") + lines = [ + ( + f"function {sanitize_identifier(ir['class']['class_name'].lower())}_{slot_name}() " + f"/* entry={ir['class']['entry_index']} class_id=0x{ir['class']['class_id']:04X} slot=0x{ir['event']['slot']:02X} */" + ), + "{", + ] + + if ir["debug_symbols"]: + lines.append(" var") + for index, symbol in enumerate(ir["debug_symbols"]): + separator = "," if index + 1 < len(ir["debug_symbols"]) else ";" + lines.append(f" {sanitize_identifier(symbol['name'])}{separator} /* {symbol['bp_repr']} type=0x{symbol['type_id']:02X} */") + lines.append("") + + rendered_blocks = decompile_pseudocode_blocks(ir) + structured_lines = render_structured_pseudocode(rendered_blocks) + if structured_lines is not None: + for statement in structured_lines: + lines.append(f" {statement}" if statement else "") + else: + for label, statements in rendered_blocks: + lines.append(f" {label}:") + for statement in statements: + lines.append(f" {statement}") + lines.append("") + + lines.append("}") + return "\n".join(lines) + "\n" + + def render_text(ir: dict[str, Any]) -> str: + labels = build_listing_labels(ir) + + def format_operand(key: str, value: Any) -> str: + if value is None or value == "": + return "" + if key == "intrinsic_name_hint" and value: + return f"hint={value}" + if key == "target_event_name_hint" and value: + return f"event={value}" + if key == "target_offset" and isinstance(value, int): + label = labels.get(value + ir["event"]["derived_body_start"]) + return f"->{label or f'0x{value + ir['event']['derived_body_start']:04X}'}" + if isinstance(value, int): + if key.endswith("_signed"): + return f"{key}={value}" + return f"{key}=0x{value:X}" + return f"{key}={value}" + lines = [ f"Class {ir['class']['class_name']} entry={ir['class']['entry_index']} class_id=0x{ir['class']['class_id']:X}", - f"Slot 0x{ir['event']['slot']:02X} hint={ir['event']['event_name_hint']} body=0x{ir['event']['derived_body_start']:04X}..0x{ir['event']['derived_body_end']:04X}", - f"End reason: {ir['body']['end_reason']} ops={ir['body']['decoded_op_count']} sha1={ir['body']['raw_body_sha1']}", + f"Slot 0x{ir['event']['slot']:02X} hint={ir['event']['event_name_hint']} raw_word=0x{ir['event']['raw_event_entry_word']:04X} raw_code_off=0x{ir['event']['raw_code_offset']:08X}", + f"Body 0x{ir['event']['derived_body_start']:04X}..0x{ir['event']['derived_body_end']:04X} len={ir['event']['derived_body_length']} end={ir['body']['end_reason']} ops={ir['body']['decoded_op_count']}", + f"SHA1 {ir['body']['raw_body_sha1']}", "", ] for op in ir["ops"]: - operand_items = [] - for key, value in op["operands"].items(): - if isinstance(value, int): - operand_items.append(f"{key}=0x{value:X}") - else: - operand_items.append(f"{key}={value}") - lines.append( - f"{op['absolute_body_offset']:04X}: {op['opcode']:02X} {op['mnemonic']} {' '.join(operand_items)} raw={op['raw_bytes']}" - ) + absolute_offset = op["absolute_body_offset"] + label = labels.get(absolute_offset) + if label is not None: + lines.extend(["", f"{label}:"]) + operand_items = [formatted for key, value in op["operands"].items() if (formatted := format_operand(key, value))] + lines.append(f"{absolute_offset:04X}: {op['opcode']:02X} {op['mnemonic']:<24} {' '.join(operand_items)} raw={op['raw_bytes']}") + if ir["debug_symbols"]: + lines.extend(["", f"Debug symbols @ 0x{ir['body']['debug_symbol_offset']:04X}:"]) + for symbol in ir["debug_symbols"]: + lines.append( + f" {symbol['index']:02X}: unk1=0x{symbol['unknown1']:02X} type=0x{symbol['type_id']:02X} ('{symbol['type_char']}') {symbol['bp_repr']} unk3=0x{symbol['unknown3']:02X} name={symbol['name']}" + ) + if ir["field_tags"]: + lines.extend(["", "Field tags:"]) + for tag in ir["field_tags"]: + lines.append( + f" {tag['tag_label']} ({tag['bp_repr']})" + ) if ir["body"]["unknown_trailing_bytes"]: lines.extend(["", f"unknown_trailing_bytes={ir['body']['unknown_trailing_bytes']}"]) return "\n".join(lines) + "\n" @@ -1089,6 +2143,10 @@ def main() -> None: parser.add_argument("--output", help="Write IR JSON to this file instead of stdout") parser.add_argument("--emit-text", action="store_true", help="Emit a readable text listing beside the JSON") parser.add_argument("--text-output", help="Write the text listing to this file") + parser.add_argument("--emit-script", action="store_true", help="Emit a decompiled script-style view beside the JSON") + parser.add_argument("--script-output", help="Write the script-style decompilation to this file") + parser.add_argument("--emit-pseudocode", action="store_true", help="Emit a higher-level pseudocode view beside the JSON") + parser.add_argument("--pseudocode-output", help="Write the pseudocode view to this file") parser.add_argument("--family-diff", action="store_true", help="Emit repeated-body family diff report instead of (or alongside) the IR") parser.add_argument("--family-diff-output", help="Write the family diff JSON to this file") parser.add_argument("--family-diff-text-output", help="Write the family diff text report to this file") @@ -1111,6 +2169,20 @@ def main() -> None: else: print(rendered_text) + if args.emit_script: + rendered_script = render_script(ir) + if args.script_output: + Path(args.script_output).write_text(rendered_script, encoding="utf-8") + else: + print(rendered_script) + + if args.emit_pseudocode: + rendered_pseudocode = render_pseudocode(ir) + if args.pseudocode_output: + Path(args.pseudocode_output).write_text(rendered_pseudocode, encoding="utf-8") + else: + print(rendered_pseudocode) + if args.family_diff: diff = compute_family_diff(args.class_name, slot) diff_json = json.dumps(diff, indent=2) diff --git a/tools/pyghidra_crusader/__pycache__/cli.cpython-311.pyc b/tools/pyghidra_crusader/__pycache__/cli.cpython-311.pyc index ccc61f3..08f9331 100644 Binary files a/tools/pyghidra_crusader/__pycache__/cli.cpython-311.pyc and b/tools/pyghidra_crusader/__pycache__/cli.cpython-311.pyc differ diff --git a/tools/pyghidra_crusader/__pycache__/common.cpython-311.pyc b/tools/pyghidra_crusader/__pycache__/common.cpython-311.pyc index a92f121..9419d92 100644 Binary files a/tools/pyghidra_crusader/__pycache__/common.cpython-311.pyc and b/tools/pyghidra_crusader/__pycache__/common.cpython-311.pyc differ diff --git a/tools/pyghidra_crusader/_tmp_patch_hidden_cheat_menu.py b/tools/pyghidra_crusader/_tmp_patch_hidden_cheat_menu.py index 12d3539..bf2abe5 100644 --- a/tools/pyghidra_crusader/_tmp_patch_hidden_cheat_menu.py +++ b/tools/pyghidra_crusader/_tmp_patch_hidden_cheat_menu.py @@ -56,7 +56,7 @@ def print_instructions(address_text: str, count: int) -> None: instruction = instruction.getNext() -tx = program.startTransaction("Patch hidden cheat menu") +tx = program.startTransaction("Patch hidden usecode debugger entry") commit = False try: write_bytes("1130:2b78", bytes.fromhex("9A 76 04 D8 12"), bytes.fromhex("9A 86 00 A0 13")) diff --git a/tools/pyghidra_crusader/_tmp_patch_hidden_cheat_menu_deferred.py b/tools/pyghidra_crusader/_tmp_patch_hidden_cheat_menu_deferred.py index c7b1c73..aa0bf578 100644 --- a/tools/pyghidra_crusader/_tmp_patch_hidden_cheat_menu_deferred.py +++ b/tools/pyghidra_crusader/_tmp_patch_hidden_cheat_menu_deferred.py @@ -56,7 +56,7 @@ def print_instructions(address_text: str, count: int) -> None: instruction = instruction.getNext() -tx = program.startTransaction("Patch hidden cheat menu via deferred 0x103 lane") +tx = program.startTransaction("Patch hidden usecode debugger via deferred 0x103 lane") commit = False try: write_bytes("1130:2b78", bytes.fromhex("9A 86 00 A0 13"), bytes.fromhex("9A 76 04 D8 12"))