diff --git a/asm/d/a/d_a_alink/checkSetNpcTks__9daAlink_cFP4cXyzii.s b/asm/d/a/d_a_alink/checkSetNpcTks__9daAlink_cFP4cXyzii.s deleted file mode 100644 index b3c23752a5a..00000000000 --- a/asm/d/a/d_a_alink/checkSetNpcTks__9daAlink_cFP4cXyzii.s +++ /dev/null @@ -1,117 +0,0 @@ -lbl_80115D08: -/* 80115D08 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 80115D0C 7C 08 02 A6 */ mflr r0 -/* 80115D10 90 01 00 44 */ stw r0, 0x44(r1) -/* 80115D14 39 61 00 40 */ addi r11, r1, 0x40 -/* 80115D18 48 24 C4 BD */ bl _savegpr_27 -/* 80115D1C 7C 7C 1B 78 */ mr r28, r3 -/* 80115D20 7C 9D 23 78 */ mr r29, r4 -/* 80115D24 7C BE 2B 78 */ mr r30, r5 -/* 80115D28 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80115D2C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80115D30 80 03 0D D0 */ lwz r0, 0xdd0(r3) -/* 80115D34 54 1F 07 3E */ clrlwi r31, r0, 0x1c -/* 80115D38 2C 06 00 00 */ cmpwi r6, 0 -/* 80115D3C 41 82 01 68 */ beq lbl_80115EA4 -/* 80115D40 4B FA A5 D1 */ bl checkDungeon__9daAlink_cFv -/* 80115D44 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80115D48 41 82 01 5C */ beq lbl_80115EA4 -/* 80115D4C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80115D50 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80115D54 3B 63 4E 20 */ addi r27, r3, 0x4e20 -/* 80115D58 7F 63 DB 78 */ mr r3, r27 -/* 80115D5C 81 9B 00 00 */ lwz r12, 0(r27) -/* 80115D60 81 8C 00 BC */ lwz r12, 0xbc(r12) -/* 80115D64 7D 89 03 A6 */ mtctr r12 -/* 80115D68 4E 80 04 21 */ bctrl -/* 80115D6C 88 03 00 09 */ lbz r0, 9(r3) -/* 80115D70 54 00 FE FE */ rlwinm r0, r0, 0x1f, 0x1b, 0x1f -/* 80115D74 2C 00 00 17 */ cmpwi r0, 0x17 -/* 80115D78 41 82 01 2C */ beq lbl_80115EA4 -/* 80115D7C 7F 63 DB 78 */ mr r3, r27 -/* 80115D80 81 9B 00 00 */ lwz r12, 0(r27) -/* 80115D84 81 8C 00 BC */ lwz r12, 0xbc(r12) -/* 80115D88 7D 89 03 A6 */ mtctr r12 -/* 80115D8C 4E 80 04 21 */ bctrl -/* 80115D90 88 03 00 09 */ lbz r0, 9(r3) -/* 80115D94 54 00 FE FE */ rlwinm r0, r0, 0x1f, 0x1b, 0x1f -/* 80115D98 2C 00 00 18 */ cmpwi r0, 0x18 -/* 80115D9C 41 82 01 08 */ beq lbl_80115EA4 -/* 80115DA0 38 60 00 2D */ li r3, 0x2d -/* 80115DA4 38 80 00 01 */ li r4, 1 -/* 80115DA8 4B F8 21 39 */ bl checkItemGet__FUci -/* 80115DAC 2C 03 00 00 */ cmpwi r3, 0 -/* 80115DB0 40 82 00 24 */ bne lbl_80115DD4 -/* 80115DB4 38 60 00 27 */ li r3, 0x27 -/* 80115DB8 38 80 00 01 */ li r4, 1 -/* 80115DBC 4B F8 21 25 */ bl checkItemGet__FUci -/* 80115DC0 2C 03 00 00 */ cmpwi r3, 0 -/* 80115DC4 41 82 00 E0 */ beq lbl_80115EA4 -/* 80115DC8 48 00 90 79 */ bl checkLv7DungeonShop__9daAlink_cFv -/* 80115DCC 2C 03 00 00 */ cmpwi r3, 0 -/* 80115DD0 40 82 00 D4 */ bne lbl_80115EA4 -lbl_80115DD4: -/* 80115DD4 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80115DD8 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80115DDC 3B 63 09 58 */ addi r27, r3, 0x958 -/* 80115DE0 7F 63 DB 78 */ mr r3, r27 -/* 80115DE4 38 80 00 06 */ li r4, 6 -/* 80115DE8 4B F1 EB 4D */ bl isDungeonItem__12dSv_memBit_cCFi -/* 80115DEC 2C 03 00 00 */ cmpwi r3, 0 -/* 80115DF0 41 82 00 B4 */ beq lbl_80115EA4 -/* 80115DF4 7F 63 DB 78 */ mr r3, r27 -/* 80115DF8 38 80 00 03 */ li r4, 3 -/* 80115DFC 4B F1 EB 39 */ bl isDungeonItem__12dSv_memBit_cCFi -/* 80115E00 2C 03 00 00 */ cmpwi r3, 0 -/* 80115E04 40 82 00 A0 */ bne lbl_80115EA4 -/* 80115E08 3B 60 00 05 */ li r27, 5 -/* 80115E0C 3C 60 80 39 */ lis r3, d_a_d_a_alink__stringBase0@ha /* 0x80392094@ha */ -/* 80115E10 38 63 20 94 */ addi r3, r3, d_a_d_a_alink__stringBase0@l /* 0x80392094@l */ -/* 80115E14 38 63 00 BB */ addi r3, r3, 0xbb -/* 80115E18 4B F8 7C 49 */ bl checkStageName__9daAlink_cFPCc -/* 80115E1C 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80115E20 41 82 00 2C */ beq lbl_80115E4C -/* 80115E24 38 60 00 01 */ li r3, 1 -/* 80115E28 38 80 00 00 */ li r4, 0 -/* 80115E2C 38 A1 00 10 */ addi r5, r1, 0x10 -/* 80115E30 38 C1 00 08 */ addi r6, r1, 8 -/* 80115E34 48 03 F9 41 */ bl daNpcF_getPlayerInfoFromPlayerList__FiiR4cXyzR5csXyz -/* 80115E38 3B A1 00 10 */ addi r29, r1, 0x10 -/* 80115E3C 28 1F 00 0C */ cmplwi r31, 0xc -/* 80115E40 41 82 00 48 */ beq lbl_80115E88 -/* 80115E44 3B 60 00 08 */ li r27, 8 -/* 80115E48 48 00 00 40 */ b lbl_80115E88 -lbl_80115E4C: -/* 80115E4C 3C 60 80 39 */ lis r3, d_a_d_a_alink__stringBase0@ha /* 0x80392094@ha */ -/* 80115E50 38 63 20 94 */ addi r3, r3, d_a_d_a_alink__stringBase0@l /* 0x80392094@l */ -/* 80115E54 38 63 00 C2 */ addi r3, r3, 0xc2 -/* 80115E58 4B F8 7C 09 */ bl checkStageName__9daAlink_cFPCc -/* 80115E5C 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80115E60 40 82 00 1C */ bne lbl_80115E7C -/* 80115E64 3C 60 80 39 */ lis r3, d_a_d_a_alink__stringBase0@ha /* 0x80392094@ha */ -/* 80115E68 38 63 20 94 */ addi r3, r3, d_a_d_a_alink__stringBase0@l /* 0x80392094@l */ -/* 80115E6C 38 63 00 C9 */ addi r3, r3, 0xc9 -/* 80115E70 4B F8 7B F1 */ bl checkStageName__9daAlink_cFPCc -/* 80115E74 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80115E78 41 82 00 10 */ beq lbl_80115E88 -lbl_80115E7C: -/* 80115E7C 28 1F 00 0C */ cmplwi r31, 0xc -/* 80115E80 41 82 00 08 */ beq lbl_80115E88 -/* 80115E84 3B 60 00 09 */ li r27, 9 -lbl_80115E88: -/* 80115E88 7F 83 E3 78 */ mr r3, r28 -/* 80115E8C 7F A4 EB 78 */ mr r4, r29 -/* 80115E90 7F C5 F3 78 */ mr r5, r30 -/* 80115E94 7F 66 DB 78 */ mr r6, r27 -/* 80115E98 4B FF FD B9 */ bl createNpcTks__9daAlink_cFP4cXyziUl -/* 80115E9C 38 60 00 01 */ li r3, 1 -/* 80115EA0 48 00 00 08 */ b lbl_80115EA8 -lbl_80115EA4: -/* 80115EA4 38 60 00 00 */ li r3, 0 -lbl_80115EA8: -/* 80115EA8 39 61 00 40 */ addi r11, r1, 0x40 -/* 80115EAC 48 24 C3 75 */ bl _restgpr_27 -/* 80115EB0 80 01 00 44 */ lwz r0, 0x44(r1) -/* 80115EB4 7C 08 03 A6 */ mtlr r0 -/* 80115EB8 38 21 00 40 */ addi r1, r1, 0x40 -/* 80115EBC 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/decideDoStatus__9daAlink_cFv.s b/asm/d/a/d_a_alink/decideDoStatus__9daAlink_cFv.s deleted file mode 100644 index 9e871448ddb..00000000000 --- a/asm/d/a/d_a_alink/decideDoStatus__9daAlink_cFv.s +++ /dev/null @@ -1,452 +0,0 @@ -lbl_800B5284: -/* 800B5284 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800B5288 7C 08 02 A6 */ mflr r0 -/* 800B528C 90 01 00 14 */ stw r0, 0x14(r1) -/* 800B5290 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800B5294 93 C1 00 08 */ stw r30, 8(r1) -/* 800B5298 7C 7E 1B 78 */ mr r30, r3 -/* 800B529C 38 60 00 00 */ li r3, 0 -/* 800B52A0 A0 1E 1F BC */ lhz r0, 0x1fbc(r30) -/* 800B52A4 28 00 00 62 */ cmplwi r0, 0x62 -/* 800B52A8 41 82 00 10 */ beq lbl_800B52B8 -/* 800B52AC 54 00 04 3E */ clrlwi r0, r0, 0x10 -/* 800B52B0 28 00 02 A0 */ cmplwi r0, 0x2a0 -/* 800B52B4 40 82 00 08 */ bne lbl_800B52BC -lbl_800B52B8: -/* 800B52B8 38 60 00 01 */ li r3, 1 -lbl_800B52BC: -/* 800B52BC 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 800B52C0 40 82 06 14 */ bne lbl_800B58D4 -/* 800B52C4 80 1E 05 70 */ lwz r0, 0x570(r30) -/* 800B52C8 54 00 01 CF */ rlwinm. r0, r0, 0, 7, 7 -/* 800B52CC 41 82 00 10 */ beq lbl_800B52DC -/* 800B52D0 7F C3 F3 78 */ mr r3, r30 -/* 800B52D4 38 80 00 62 */ li r4, 0x62 -/* 800B52D8 4B FF DF 91 */ bl setDoStatusEmphasys__9daAlink_cFUc -lbl_800B52DC: -/* 800B52DC 80 1E 27 EC */ lwz r0, 0x27ec(r30) -/* 800B52E0 28 00 00 00 */ cmplwi r0, 0 -/* 800B52E4 40 82 00 60 */ bne lbl_800B5344 -/* 800B52E8 80 1E 27 E4 */ lwz r0, 0x27e4(r30) -/* 800B52EC 28 00 00 00 */ cmplwi r0, 0 -/* 800B52F0 40 82 00 54 */ bne lbl_800B5344 -/* 800B52F4 80 1E 05 80 */ lwz r0, 0x580(r30) -/* 800B52F8 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c -/* 800B52FC 41 82 00 48 */ beq lbl_800B5344 -/* 800B5300 7F C3 F3 78 */ mr r3, r30 -/* 800B5304 38 80 00 15 */ li r4, 0x15 -/* 800B5308 38 A0 00 02 */ li r5, 2 -/* 800B530C 48 03 2B C5 */ bl setWallGrabStatus__9daAlink_cFUcUc -/* 800B5310 88 1E 2F 91 */ lbz r0, 0x2f91(r30) -/* 800B5314 28 00 00 07 */ cmplwi r0, 7 -/* 800B5318 41 82 00 1C */ beq lbl_800B5334 -/* 800B531C 28 00 00 08 */ cmplwi r0, 8 -/* 800B5320 41 82 00 14 */ beq lbl_800B5334 -/* 800B5324 28 00 00 06 */ cmplwi r0, 6 -/* 800B5328 41 82 00 0C */ beq lbl_800B5334 -/* 800B532C 28 00 00 09 */ cmplwi r0, 9 -/* 800B5330 40 82 05 A4 */ bne lbl_800B58D4 -lbl_800B5334: -/* 800B5334 7F C3 F3 78 */ mr r3, r30 -/* 800B5338 38 80 00 20 */ li r4, 0x20 -/* 800B533C 4B FF DF 15 */ bl setDoStatus__9daAlink_cFUc -/* 800B5340 48 00 05 94 */ b lbl_800B58D4 -lbl_800B5344: -/* 800B5344 7F C3 F3 78 */ mr r3, r30 -/* 800B5348 48 03 26 B1 */ bl searchFmChainPos__9daAlink_cFv -/* 800B534C 2C 03 00 00 */ cmpwi r3, 0 -/* 800B5350 41 82 00 18 */ beq lbl_800B5368 -/* 800B5354 7F C3 F3 78 */ mr r3, r30 -/* 800B5358 38 80 00 96 */ li r4, 0x96 -/* 800B535C 38 A0 00 02 */ li r5, 2 -/* 800B5360 48 03 2B 71 */ bl setWallGrabStatus__9daAlink_cFUcUc -/* 800B5364 48 00 05 68 */ b lbl_800B58CC -lbl_800B5368: -/* 800B5368 80 9E 27 E4 */ lwz r4, 0x27e4(r30) -/* 800B536C 28 04 00 00 */ cmplwi r4, 0 -/* 800B5370 41 82 05 5C */ beq lbl_800B58CC -/* 800B5374 80 7E 27 F4 */ lwz r3, 0x27f4(r30) -/* 800B5378 AB E3 00 08 */ lha r31, 8(r3) -/* 800B537C 80 04 00 0C */ lwz r0, 0xc(r4) -/* 800B5380 28 00 00 05 */ cmplwi r0, 5 -/* 800B5384 41 82 00 30 */ beq lbl_800B53B4 -/* 800B5388 28 00 00 06 */ cmplwi r0, 6 -/* 800B538C 40 82 00 38 */ bne lbl_800B53C4 -/* 800B5390 80 1E 05 74 */ lwz r0, 0x574(r30) -/* 800B5394 54 00 01 8D */ rlwinm. r0, r0, 0, 6, 6 -/* 800B5398 41 82 00 1C */ beq lbl_800B53B4 -/* 800B539C 81 83 05 9C */ lwz r12, 0x59c(r3) -/* 800B53A0 81 8C 00 28 */ lwz r12, 0x28(r12) -/* 800B53A4 7D 89 03 A6 */ mtctr r12 -/* 800B53A8 4E 80 04 21 */ bctrl -/* 800B53AC 2C 03 00 00 */ cmpwi r3, 0 -/* 800B53B0 41 82 00 14 */ beq lbl_800B53C4 -lbl_800B53B4: -/* 800B53B4 7F C3 F3 78 */ mr r3, r30 -/* 800B53B8 38 80 00 06 */ li r4, 6 -/* 800B53BC 4B FF DE 95 */ bl setDoStatus__9daAlink_cFUc -/* 800B53C0 48 00 05 0C */ b lbl_800B58CC -lbl_800B53C4: -/* 800B53C4 80 7E 27 E4 */ lwz r3, 0x27e4(r30) -/* 800B53C8 80 63 00 0C */ lwz r3, 0xc(r3) -/* 800B53CC 28 03 00 07 */ cmplwi r3, 7 -/* 800B53D0 40 82 00 1C */ bne lbl_800B53EC -/* 800B53D4 2C 1F 02 AF */ cmpwi r31, 0x2af -/* 800B53D8 40 82 00 14 */ bne lbl_800B53EC -/* 800B53DC 7F C3 F3 78 */ mr r3, r30 -/* 800B53E0 38 80 00 89 */ li r4, 0x89 -/* 800B53E4 4B FF DE 6D */ bl setDoStatus__9daAlink_cFUc -/* 800B53E8 48 00 04 E4 */ b lbl_800B58CC -lbl_800B53EC: -/* 800B53EC 80 1E 05 74 */ lwz r0, 0x574(r30) -/* 800B53F0 54 00 01 8D */ rlwinm. r0, r0, 0, 6, 6 -/* 800B53F4 41 82 02 98 */ beq lbl_800B568C -/* 800B53F8 28 03 00 04 */ cmplwi r3, 4 -/* 800B53FC 40 82 00 C0 */ bne lbl_800B54BC -/* 800B5400 80 9E 27 F4 */ lwz r4, 0x27f4(r30) -/* 800B5404 80 04 04 9C */ lwz r0, 0x49c(r4) -/* 800B5408 54 00 04 A5 */ rlwinm. r0, r0, 0, 0x12, 0x12 -/* 800B540C 40 82 00 B0 */ bne lbl_800B54BC -/* 800B5410 88 04 04 9A */ lbz r0, 0x49a(r4) -/* 800B5414 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b -/* 800B5418 41 82 00 A4 */ beq lbl_800B54BC -/* 800B541C 2C 1F 02 16 */ cmpwi r31, 0x216 -/* 800B5420 40 82 00 14 */ bne lbl_800B5434 -/* 800B5424 7F C3 F3 78 */ mr r3, r30 -/* 800B5428 38 80 00 91 */ li r4, 0x91 -/* 800B542C 4B FF DE 25 */ bl setDoStatus__9daAlink_cFUc -/* 800B5430 48 00 04 9C */ b lbl_800B58CC -lbl_800B5434: -/* 800B5434 2C 1F 01 4D */ cmpwi r31, 0x14d -/* 800B5438 40 82 00 14 */ bne lbl_800B544C -/* 800B543C 7F C3 F3 78 */ mr r3, r30 -/* 800B5440 38 80 00 05 */ li r4, 5 -/* 800B5444 4B FF DE 25 */ bl setDoStatusEmphasys__9daAlink_cFUc -/* 800B5448 48 00 04 84 */ b lbl_800B58CC -lbl_800B544C: -/* 800B544C 2C 1F 02 FD */ cmpwi r31, 0x2fd -/* 800B5450 40 82 00 14 */ bne lbl_800B5464 -/* 800B5454 7F C3 F3 78 */ mr r3, r30 -/* 800B5458 38 80 00 47 */ li r4, 0x47 -/* 800B545C 4B FF DD F5 */ bl setDoStatus__9daAlink_cFUc -/* 800B5460 48 00 04 6C */ b lbl_800B58CC -lbl_800B5464: -/* 800B5464 2C 1F 02 1F */ cmpwi r31, 0x21f -/* 800B5468 41 82 00 14 */ beq lbl_800B547C -/* 800B546C 2C 1F 01 AC */ cmpwi r31, 0x1ac -/* 800B5470 41 82 00 0C */ beq lbl_800B547C -/* 800B5474 2C 1F 02 19 */ cmpwi r31, 0x219 -/* 800B5478 40 82 00 14 */ bne lbl_800B548C -lbl_800B547C: -/* 800B547C 7F C3 F3 78 */ mr r3, r30 -/* 800B5480 38 80 00 39 */ li r4, 0x39 -/* 800B5484 4B FF DD E5 */ bl setDoStatusEmphasys__9daAlink_cFUc -/* 800B5488 48 00 04 44 */ b lbl_800B58CC -lbl_800B548C: -/* 800B548C 7F C3 F3 78 */ mr r3, r30 -/* 800B5490 48 03 2E 21 */ bl checkGoatCatchActor__9daAlink_cFP10fopAc_ac_c -/* 800B5494 2C 03 00 00 */ cmpwi r3, 0 -/* 800B5498 40 82 04 34 */ bne lbl_800B58CC -/* 800B549C 7F C3 F3 78 */ mr r3, r30 -/* 800B54A0 48 02 E4 4D */ bl checkGrabLineCheck__9daAlink_cFv -/* 800B54A4 2C 03 00 00 */ cmpwi r3, 0 -/* 800B54A8 40 82 04 24 */ bne lbl_800B58CC -/* 800B54AC 7F C3 F3 78 */ mr r3, r30 -/* 800B54B0 38 80 00 0C */ li r4, 0xc -/* 800B54B4 4B FF DD B5 */ bl setDoStatusEmphasys__9daAlink_cFUc -/* 800B54B8 48 00 04 14 */ b lbl_800B58CC -lbl_800B54BC: -/* 800B54BC 80 7E 27 EC */ lwz r3, 0x27ec(r30) -/* 800B54C0 28 03 00 00 */ cmplwi r3, 0 -/* 800B54C4 41 82 00 5C */ beq lbl_800B5520 -/* 800B54C8 A8 03 00 08 */ lha r0, 8(r3) -/* 800B54CC 2C 00 02 16 */ cmpwi r0, 0x216 -/* 800B54D0 40 82 00 50 */ bne lbl_800B5520 -/* 800B54D4 80 7E 27 E0 */ lwz r3, 0x27e0(r30) -/* 800B54D8 4B FB B3 A9 */ bl getActionBtnB__12dAttention_cFv -/* 800B54DC 28 03 00 00 */ cmplwi r3, 0 -/* 800B54E0 41 82 00 40 */ beq lbl_800B5520 -/* 800B54E4 80 7E 27 E0 */ lwz r3, 0x27e0(r30) -/* 800B54E8 4B FB B3 99 */ bl getActionBtnB__12dAttention_cFv -/* 800B54EC 80 03 00 0C */ lwz r0, 0xc(r3) -/* 800B54F0 28 00 00 04 */ cmplwi r0, 4 -/* 800B54F4 40 82 00 2C */ bne lbl_800B5520 -/* 800B54F8 80 7E 27 E0 */ lwz r3, 0x27e0(r30) -/* 800B54FC 4B FB B3 85 */ bl getActionBtnB__12dAttention_cFv -/* 800B5500 4B FB E3 65 */ bl getActor__10dAttList_cFv -/* 800B5504 80 1E 27 EC */ lwz r0, 0x27ec(r30) -/* 800B5508 7C 03 00 40 */ cmplw r3, r0 -/* 800B550C 40 82 00 14 */ bne lbl_800B5520 -/* 800B5510 7F C3 F3 78 */ mr r3, r30 -/* 800B5514 38 80 00 91 */ li r4, 0x91 -/* 800B5518 4B FF DD 39 */ bl setDoStatus__9daAlink_cFUc -/* 800B551C 48 00 03 B0 */ b lbl_800B58CC -lbl_800B5520: -/* 800B5520 80 7E 27 EC */ lwz r3, 0x27ec(r30) -/* 800B5524 28 03 00 00 */ cmplwi r3, 0 -/* 800B5528 41 82 00 74 */ beq lbl_800B559C -/* 800B552C A8 03 00 08 */ lha r0, 8(r3) -/* 800B5530 2C 00 01 F4 */ cmpwi r0, 0x1f4 -/* 800B5534 40 82 00 68 */ bne lbl_800B559C -/* 800B5538 80 7E 27 E0 */ lwz r3, 0x27e0(r30) -/* 800B553C 4B FB B3 45 */ bl getActionBtnB__12dAttention_cFv -/* 800B5540 28 03 00 00 */ cmplwi r3, 0 -/* 800B5544 41 82 00 58 */ beq lbl_800B559C -/* 800B5548 80 7E 27 E0 */ lwz r3, 0x27e0(r30) -/* 800B554C 4B FB B3 35 */ bl getActionBtnB__12dAttention_cFv -/* 800B5550 80 03 00 0C */ lwz r0, 0xc(r3) -/* 800B5554 28 00 00 07 */ cmplwi r0, 7 -/* 800B5558 40 82 00 44 */ bne lbl_800B559C -/* 800B555C 80 7E 27 E0 */ lwz r3, 0x27e0(r30) -/* 800B5560 4B FB B3 21 */ bl getActionBtnB__12dAttention_cFv -/* 800B5564 4B FB E3 01 */ bl getActor__10dAttList_cFv -/* 800B5568 80 1E 27 EC */ lwz r0, 0x27ec(r30) -/* 800B556C 7C 03 00 40 */ cmplw r3, r0 -/* 800B5570 40 82 00 2C */ bne lbl_800B559C -/* 800B5574 80 1E 05 8C */ lwz r0, 0x58c(r30) -/* 800B5578 64 00 00 10 */ oris r0, r0, 0x10 -/* 800B557C 90 1E 05 8C */ stw r0, 0x58c(r30) -/* 800B5580 A8 1E 30 AC */ lha r0, 0x30ac(r30) -/* 800B5584 2C 00 00 00 */ cmpwi r0, 0 -/* 800B5588 41 82 03 44 */ beq lbl_800B58CC -/* 800B558C 7F C3 F3 78 */ mr r3, r30 -/* 800B5590 38 80 00 02 */ li r4, 2 -/* 800B5594 48 07 27 BD */ bl setWolfDigStatus__9daAlink_cFUc -/* 800B5598 48 00 03 34 */ b lbl_800B58CC -lbl_800B559C: -/* 800B559C 80 7E 27 E4 */ lwz r3, 0x27e4(r30) -/* 800B55A0 80 03 00 0C */ lwz r0, 0xc(r3) -/* 800B55A4 28 00 00 07 */ cmplwi r0, 7 -/* 800B55A8 40 82 00 A8 */ bne lbl_800B5650 -/* 800B55AC 80 1E 27 F4 */ lwz r0, 0x27f4(r30) -/* 800B55B0 28 00 00 00 */ cmplwi r0, 0 -/* 800B55B4 41 82 00 9C */ beq lbl_800B5650 -/* 800B55B8 38 1F FF AE */ addi r0, r31, -82 -/* 800B55BC 54 00 04 3E */ clrlwi r0, r0, 0x10 -/* 800B55C0 28 00 00 01 */ cmplwi r0, 1 -/* 800B55C4 40 81 00 1C */ ble lbl_800B55E0 -/* 800B55C8 2C 1F 00 90 */ cmpwi r31, 0x90 -/* 800B55CC 41 82 00 14 */ beq lbl_800B55E0 -/* 800B55D0 2C 1F 00 A9 */ cmpwi r31, 0xa9 -/* 800B55D4 41 82 00 0C */ beq lbl_800B55E0 -/* 800B55D8 2C 1F 01 F4 */ cmpwi r31, 0x1f4 -/* 800B55DC 40 82 00 2C */ bne lbl_800B5608 -lbl_800B55E0: -/* 800B55E0 80 1E 05 8C */ lwz r0, 0x58c(r30) -/* 800B55E4 64 00 00 10 */ oris r0, r0, 0x10 -/* 800B55E8 90 1E 05 8C */ stw r0, 0x58c(r30) -/* 800B55EC A8 1E 30 AC */ lha r0, 0x30ac(r30) -/* 800B55F0 2C 00 00 00 */ cmpwi r0, 0 -/* 800B55F4 41 82 02 D8 */ beq lbl_800B58CC -/* 800B55F8 7F C3 F3 78 */ mr r3, r30 -/* 800B55FC 38 80 00 02 */ li r4, 2 -/* 800B5600 48 07 27 51 */ bl setWolfDigStatus__9daAlink_cFUc -/* 800B5604 48 00 02 C8 */ b lbl_800B58CC -lbl_800B5608: -/* 800B5608 2C 1F 02 D4 */ cmpwi r31, 0x2d4 -/* 800B560C 41 82 00 1C */ beq lbl_800B5628 -/* 800B5610 2C 1F 01 8A */ cmpwi r31, 0x18a -/* 800B5614 41 82 00 14 */ beq lbl_800B5628 -/* 800B5618 2C 1F 01 8D */ cmpwi r31, 0x18d -/* 800B561C 41 82 00 0C */ beq lbl_800B5628 -/* 800B5620 2C 1F 01 8B */ cmpwi r31, 0x18b -/* 800B5624 40 82 00 14 */ bne lbl_800B5638 -lbl_800B5628: -/* 800B5628 7F C3 F3 78 */ mr r3, r30 -/* 800B562C 38 80 00 05 */ li r4, 5 -/* 800B5630 4B FF DC 39 */ bl setDoStatusEmphasys__9daAlink_cFUc -/* 800B5634 48 00 02 98 */ b lbl_800B58CC -lbl_800B5638: -/* 800B5638 2C 1F 02 AD */ cmpwi r31, 0x2ad -/* 800B563C 40 82 02 90 */ bne lbl_800B58CC -/* 800B5640 7F C3 F3 78 */ mr r3, r30 -/* 800B5644 38 80 00 45 */ li r4, 0x45 -/* 800B5648 4B FF DC 21 */ bl setDoStatusEmphasys__9daAlink_cFUc -/* 800B564C 48 00 02 80 */ b lbl_800B58CC -lbl_800B5650: -/* 800B5650 80 7E 27 EC */ lwz r3, 0x27ec(r30) -/* 800B5654 28 03 00 00 */ cmplwi r3, 0 -/* 800B5658 41 82 00 28 */ beq lbl_800B5680 -/* 800B565C 80 1E 27 F4 */ lwz r0, 0x27f4(r30) -/* 800B5660 7C 00 18 40 */ cmplw r0, r3 -/* 800B5664 40 82 00 1C */ bne lbl_800B5680 -/* 800B5668 2C 1F 01 59 */ cmpwi r31, 0x159 -/* 800B566C 40 82 00 14 */ bne lbl_800B5680 -/* 800B5670 7F C3 F3 78 */ mr r3, r30 -/* 800B5674 38 80 00 7B */ li r4, 0x7b -/* 800B5678 4B FF DB F1 */ bl setDoStatusEmphasys__9daAlink_cFUc -/* 800B567C 48 00 02 50 */ b lbl_800B58CC -lbl_800B5680: -/* 800B5680 7F C3 F3 78 */ mr r3, r30 -/* 800B5684 4B FF F3 85 */ bl setTalkStatus__9daAlink_cFv -/* 800B5688 48 00 02 44 */ b lbl_800B58CC -lbl_800B568C: -/* 800B568C 28 03 00 07 */ cmplwi r3, 7 -/* 800B5690 40 82 00 E4 */ bne lbl_800B5774 -/* 800B5694 7F C3 F3 78 */ mr r3, r30 -/* 800B5698 48 00 5D 71 */ bl checkMagicArmorHeavy__9daAlink_cCFv -/* 800B569C 2C 03 00 00 */ cmpwi r3, 0 -/* 800B56A0 40 82 00 24 */ bne lbl_800B56C4 -/* 800B56A4 2C 1F 00 EE */ cmpwi r31, 0xee -/* 800B56A8 41 82 00 0C */ beq lbl_800B56B4 -/* 800B56AC 2C 1F 00 EF */ cmpwi r31, 0xef -/* 800B56B0 40 82 00 14 */ bne lbl_800B56C4 -lbl_800B56B4: -/* 800B56B4 7F C3 F3 78 */ mr r3, r30 -/* 800B56B8 48 03 72 41 */ bl checkReinRideBgCheck__9daAlink_cFv -/* 800B56BC 2C 03 00 00 */ cmpwi r3, 0 -/* 800B56C0 40 82 00 14 */ bne lbl_800B56D4 -lbl_800B56C4: -/* 800B56C4 2C 1F 00 ED */ cmpwi r31, 0xed -/* 800B56C8 41 82 00 0C */ beq lbl_800B56D4 -/* 800B56CC 2C 1F 01 87 */ cmpwi r31, 0x187 -/* 800B56D0 40 82 00 14 */ bne lbl_800B56E4 -lbl_800B56D4: -/* 800B56D4 7F C3 F3 78 */ mr r3, r30 -/* 800B56D8 38 80 00 17 */ li r4, 0x17 -/* 800B56DC 4B FF DB 75 */ bl setDoStatus__9daAlink_cFUc -/* 800B56E0 48 00 01 EC */ b lbl_800B58CC -lbl_800B56E4: -/* 800B56E4 2C 1F 01 06 */ cmpwi r31, 0x106 -/* 800B56E8 40 82 00 14 */ bne lbl_800B56FC -/* 800B56EC 7F C3 F3 78 */ mr r3, r30 -/* 800B56F0 38 80 00 38 */ li r4, 0x38 -/* 800B56F4 4B FF DB 5D */ bl setDoStatus__9daAlink_cFUc -/* 800B56F8 48 00 01 D4 */ b lbl_800B58CC -lbl_800B56FC: -/* 800B56FC 2C 1F 00 CC */ cmpwi r31, 0xcc -/* 800B5700 40 82 00 14 */ bne lbl_800B5714 -/* 800B5704 7F C3 F3 78 */ mr r3, r30 -/* 800B5708 38 80 00 99 */ li r4, 0x99 -/* 800B570C 4B FF DB 5D */ bl setDoStatusEmphasys__9daAlink_cFUc -/* 800B5710 48 00 01 BC */ b lbl_800B58CC -lbl_800B5714: -/* 800B5714 2C 1F 02 C9 */ cmpwi r31, 0x2c9 -/* 800B5718 41 82 00 30 */ beq lbl_800B5748 -/* 800B571C 2C 1F 02 EB */ cmpwi r31, 0x2eb -/* 800B5720 40 82 01 AC */ bne lbl_800B58CC -/* 800B5724 80 7E 27 F4 */ lwz r3, 0x27f4(r30) -/* 800B5728 80 03 00 B0 */ lwz r0, 0xb0(r3) -/* 800B572C 54 03 46 3E */ srwi r3, r0, 0x18 -/* 800B5730 38 03 FF 01 */ addi r0, r3, -255 -/* 800B5734 30 00 FF FF */ addic r0, r0, -1 -/* 800B5738 7C 00 01 10 */ subfe r0, r0, r0 -/* 800B573C 7C 60 00 78 */ andc r0, r3, r0 -/* 800B5740 2C 00 00 03 */ cmpwi r0, 3 -/* 800B5744 40 82 01 88 */ bne lbl_800B58CC -lbl_800B5748: -/* 800B5748 7F C3 F3 78 */ mr r3, r30 -/* 800B574C 48 00 3B F5 */ bl checkEquipAnime__9daAlink_cCFv -/* 800B5750 2C 03 00 00 */ cmpwi r3, 0 -/* 800B5754 40 82 01 78 */ bne lbl_800B58CC -/* 800B5758 48 0A 9C 41 */ bl checkMasterSwordEquip__9daPy_py_cFv -/* 800B575C 2C 03 00 00 */ cmpwi r3, 0 -/* 800B5760 41 82 01 6C */ beq lbl_800B58CC -/* 800B5764 7F C3 F3 78 */ mr r3, r30 -/* 800B5768 38 80 00 63 */ li r4, 0x63 -/* 800B576C 4B FF DA E5 */ bl setDoStatus__9daAlink_cFUc -/* 800B5770 48 00 01 5C */ b lbl_800B58CC -lbl_800B5774: -/* 800B5774 80 9E 27 EC */ lwz r4, 0x27ec(r30) -/* 800B5778 28 04 00 00 */ cmplwi r4, 0 -/* 800B577C 41 82 00 60 */ beq lbl_800B57DC -/* 800B5780 7F C3 F3 78 */ mr r3, r30 -/* 800B5784 48 03 2B 2D */ bl checkGoatCatchActor__9daAlink_cFP10fopAc_ac_c -/* 800B5788 2C 03 00 00 */ cmpwi r3, 0 -/* 800B578C 41 82 00 50 */ beq lbl_800B57DC -/* 800B5790 80 7E 27 E0 */ lwz r3, 0x27e0(r30) -/* 800B5794 4B FB B0 ED */ bl getActionBtnB__12dAttention_cFv -/* 800B5798 28 03 00 00 */ cmplwi r3, 0 -/* 800B579C 41 82 00 40 */ beq lbl_800B57DC -/* 800B57A0 80 7E 27 E0 */ lwz r3, 0x27e0(r30) -/* 800B57A4 4B FB B0 DD */ bl getActionBtnB__12dAttention_cFv -/* 800B57A8 80 03 00 0C */ lwz r0, 0xc(r3) -/* 800B57AC 28 00 00 04 */ cmplwi r0, 4 -/* 800B57B0 40 82 00 2C */ bne lbl_800B57DC -/* 800B57B4 80 7E 27 E0 */ lwz r3, 0x27e0(r30) -/* 800B57B8 4B FB B0 C9 */ bl getActionBtnB__12dAttention_cFv -/* 800B57BC 4B FB E0 A9 */ bl getActor__10dAttList_cFv -/* 800B57C0 80 1E 27 EC */ lwz r0, 0x27ec(r30) -/* 800B57C4 7C 03 00 40 */ cmplw r3, r0 -/* 800B57C8 40 82 00 14 */ bne lbl_800B57DC -/* 800B57CC 7F C3 F3 78 */ mr r3, r30 -/* 800B57D0 38 80 00 91 */ li r4, 0x91 -/* 800B57D4 4B FF DA 7D */ bl setDoStatus__9daAlink_cFUc -/* 800B57D8 48 00 00 F4 */ b lbl_800B58CC -lbl_800B57DC: -/* 800B57DC 80 7E 27 E4 */ lwz r3, 0x27e4(r30) -/* 800B57E0 80 03 00 0C */ lwz r0, 0xc(r3) -/* 800B57E4 28 00 00 04 */ cmplwi r0, 4 -/* 800B57E8 40 82 00 DC */ bne lbl_800B58C4 -/* 800B57EC 80 9E 27 F4 */ lwz r4, 0x27f4(r30) -/* 800B57F0 80 04 04 9C */ lwz r0, 0x49c(r4) -/* 800B57F4 54 00 04 A5 */ rlwinm. r0, r0, 0, 0x12, 0x12 -/* 800B57F8 40 82 00 D4 */ bne lbl_800B58CC -/* 800B57FC 7F C3 F3 78 */ mr r3, r30 -/* 800B5800 48 03 2A B1 */ bl checkGoatCatchActor__9daAlink_cFP10fopAc_ac_c -/* 800B5804 2C 03 00 00 */ cmpwi r3, 0 -/* 800B5808 41 82 00 14 */ beq lbl_800B581C -/* 800B580C 7F C3 F3 78 */ mr r3, r30 -/* 800B5810 38 80 00 91 */ li r4, 0x91 -/* 800B5814 4B FF DA 3D */ bl setDoStatus__9daAlink_cFUc -/* 800B5818 48 00 00 B4 */ b lbl_800B58CC -lbl_800B581C: -/* 800B581C 80 1E 05 70 */ lwz r0, 0x570(r30) -/* 800B5820 54 00 04 E7 */ rlwinm. r0, r0, 0, 0x13, 0x13 -/* 800B5824 40 82 00 A8 */ bne lbl_800B58CC -/* 800B5828 7F C3 F3 78 */ mr r3, r30 -/* 800B582C 80 9E 27 F4 */ lwz r4, 0x27f4(r30) -/* 800B5830 48 03 18 91 */ bl checkInsectActorName__9daAlink_cFP10fopAc_ac_c -/* 800B5834 2C 03 00 00 */ cmpwi r3, 0 -/* 800B5838 41 82 00 14 */ beq lbl_800B584C -/* 800B583C 7F C3 F3 78 */ mr r3, r30 -/* 800B5840 38 80 00 98 */ li r4, 0x98 -/* 800B5844 4B FF DA 25 */ bl setDoStatusEmphasys__9daAlink_cFUc -/* 800B5848 48 00 00 84 */ b lbl_800B58CC -lbl_800B584C: -/* 800B584C 2C 1F 02 19 */ cmpwi r31, 0x219 -/* 800B5850 40 82 00 14 */ bne lbl_800B5864 -/* 800B5854 7F C3 F3 78 */ mr r3, r30 -/* 800B5858 38 80 00 39 */ li r4, 0x39 -/* 800B585C 4B FF DA 0D */ bl setDoStatusEmphasys__9daAlink_cFUc -/* 800B5860 48 00 00 6C */ b lbl_800B58CC -lbl_800B5864: -/* 800B5864 7F C3 F3 78 */ mr r3, r30 -/* 800B5868 48 02 E0 85 */ bl checkGrabLineCheck__9daAlink_cFv -/* 800B586C 2C 03 00 00 */ cmpwi r3, 0 -/* 800B5870 40 82 00 5C */ bne lbl_800B58CC -/* 800B5874 2C 1F 01 4D */ cmpwi r31, 0x14d -/* 800B5878 40 82 00 14 */ bne lbl_800B588C -/* 800B587C 7F C3 F3 78 */ mr r3, r30 -/* 800B5880 38 80 00 2B */ li r4, 0x2b -/* 800B5884 4B FF D9 CD */ bl setDoStatus__9daAlink_cFUc -/* 800B5888 48 00 00 44 */ b lbl_800B58CC -lbl_800B588C: -/* 800B588C 80 7E 27 F4 */ lwz r3, 0x27f4(r30) -/* 800B5890 88 03 04 9A */ lbz r0, 0x49a(r3) -/* 800B5894 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c -/* 800B5898 41 82 00 14 */ beq lbl_800B58AC -/* 800B589C 7F C3 F3 78 */ mr r3, r30 -/* 800B58A0 38 80 00 34 */ li r4, 0x34 -/* 800B58A4 4B FF D9 C5 */ bl setDoStatusEmphasys__9daAlink_cFUc -/* 800B58A8 48 00 00 24 */ b lbl_800B58CC -lbl_800B58AC: -/* 800B58AC 2C 1F 02 16 */ cmpwi r31, 0x216 -/* 800B58B0 41 82 00 1C */ beq lbl_800B58CC -/* 800B58B4 7F C3 F3 78 */ mr r3, r30 -/* 800B58B8 38 80 00 1F */ li r4, 0x1f -/* 800B58BC 4B FF D9 AD */ bl setDoStatusEmphasys__9daAlink_cFUc -/* 800B58C0 48 00 00 0C */ b lbl_800B58CC -lbl_800B58C4: -/* 800B58C4 7F C3 F3 78 */ mr r3, r30 -/* 800B58C8 4B FF F1 41 */ bl setTalkStatus__9daAlink_cFv -lbl_800B58CC: -/* 800B58CC 7F C3 F3 78 */ mr r3, r30 -/* 800B58D0 4B FF F2 AD */ bl decideCommonDoStatus__9daAlink_cFv -lbl_800B58D4: -/* 800B58D4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800B58D8 83 C1 00 08 */ lwz r30, 8(r1) -/* 800B58DC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800B58E0 7C 08 03 A6 */ mtlr r0 -/* 800B58E4 38 21 00 10 */ addi r1, r1, 0x10 -/* 800B58E8 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/procCoFogDeadInit__9daAlink_cFv.s b/asm/d/a/d_a_alink/procCoFogDeadInit__9daAlink_cFv.s deleted file mode 100644 index 315acb423cb..00000000000 --- a/asm/d/a/d_a_alink/procCoFogDeadInit__9daAlink_cFv.s +++ /dev/null @@ -1,105 +0,0 @@ -lbl_8011CDE0: -/* 8011CDE0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8011CDE4 7C 08 02 A6 */ mflr r0 -/* 8011CDE8 90 01 00 14 */ stw r0, 0x14(r1) -/* 8011CDEC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8011CDF0 93 C1 00 08 */ stw r30, 8(r1) -/* 8011CDF4 7C 7F 1B 78 */ mr r31, r3 -/* 8011CDF8 38 80 01 51 */ li r4, 0x151 -/* 8011CDFC 4B FA 5F A9 */ bl commonProcInitNotSameProc__9daAlink_cFQ29daAlink_c12daAlink_PROC -/* 8011CE00 2C 03 00 00 */ cmpwi r3, 0 -/* 8011CE04 40 82 00 0C */ bne lbl_8011CE10 -/* 8011CE08 38 60 00 01 */ li r3, 1 -/* 8011CE0C 48 00 01 3C */ b lbl_8011CF48 -lbl_8011CE10: -/* 8011CE10 C0 02 92 C0 */ lfs f0, lit_6108(r2) -/* 8011CE14 D0 1F 33 98 */ stfs f0, 0x3398(r31) -/* 8011CE18 38 00 00 00 */ li r0, 0 -/* 8011CE1C B0 1F 05 6C */ sth r0, 0x56c(r31) -/* 8011CE20 80 1F 19 9C */ lwz r0, 0x199c(r31) -/* 8011CE24 54 00 06 B5 */ rlwinm. r0, r0, 0, 0x1a, 0x1a -/* 8011CE28 41 82 00 74 */ beq lbl_8011CE9C -/* 8011CE2C 80 1F 05 74 */ lwz r0, 0x574(r31) -/* 8011CE30 54 00 01 8D */ rlwinm. r0, r0, 0, 6, 6 -/* 8011CE34 41 82 00 3C */ beq lbl_8011CE70 -/* 8011CE38 7F E3 FB 78 */ mr r3, r31 -/* 8011CE3C 38 80 00 7B */ li r4, 0x7b -/* 8011CE40 48 00 C8 39 */ bl setSingleAnimeWolfBase__9daAlink_cFQ29daAlink_c12daAlink_WANM -/* 8011CE44 7F E3 FB 78 */ mr r3, r31 -/* 8011CE48 38 80 00 9C */ li r4, 0x9c -/* 8011CE4C 4B F9 2A 55 */ bl setFaceBasicTexture__9daAlink_cFQ29daAlink_c13daAlink_FTANM -/* 8011CE50 7F E3 FB 78 */ mr r3, r31 -/* 8011CE54 3C 80 00 01 */ lis r4, 0x0001 /* 0x00010043@ha */ -/* 8011CE58 38 84 00 43 */ addi r4, r4, 0x0043 /* 0x00010043@l */ -/* 8011CE5C 81 9F 06 28 */ lwz r12, 0x628(r31) -/* 8011CE60 81 8C 01 14 */ lwz r12, 0x114(r12) -/* 8011CE64 7D 89 03 A6 */ mtctr r12 -/* 8011CE68 4E 80 04 21 */ bctrl -/* 8011CE6C 48 00 00 80 */ b lbl_8011CEEC -lbl_8011CE70: -/* 8011CE70 7F E3 FB 78 */ mr r3, r31 -/* 8011CE74 38 80 01 16 */ li r4, 0x116 -/* 8011CE78 4B F9 01 09 */ bl setSingleAnimeBase__9daAlink_cFQ29daAlink_c11daAlink_ANM -/* 8011CE7C 7F E3 FB 78 */ mr r3, r31 -/* 8011CE80 3C 80 00 01 */ lis r4, 0x0001 /* 0x00010016@ha */ -/* 8011CE84 38 84 00 16 */ addi r4, r4, 0x0016 /* 0x00010016@l */ -/* 8011CE88 81 9F 06 28 */ lwz r12, 0x628(r31) -/* 8011CE8C 81 8C 01 14 */ lwz r12, 0x114(r12) -/* 8011CE90 7D 89 03 A6 */ mtctr r12 -/* 8011CE94 4E 80 04 21 */ bctrl -/* 8011CE98 48 00 00 54 */ b lbl_8011CEEC -lbl_8011CE9C: -/* 8011CE9C 7F E3 FB 78 */ mr r3, r31 -/* 8011CEA0 4B F9 7A 31 */ bl setJumpMode__9daAlink_cFv -/* 8011CEA4 80 1F 05 74 */ lwz r0, 0x574(r31) -/* 8011CEA8 54 00 01 8D */ rlwinm. r0, r0, 0, 6, 6 -/* 8011CEAC 41 82 00 24 */ beq lbl_8011CED0 -/* 8011CEB0 7F E3 FB 78 */ mr r3, r31 -/* 8011CEB4 38 80 00 60 */ li r4, 0x60 -/* 8011CEB8 C0 22 92 C0 */ lfs f1, lit_6108(r2) -/* 8011CEBC 3C A0 80 39 */ lis r5, m__23daAlinkHIO_wlDamFall_c0@ha /* 0x8038F374@ha */ -/* 8011CEC0 38 A5 F3 74 */ addi r5, r5, m__23daAlinkHIO_wlDamFall_c0@l /* 0x8038F374@l */ -/* 8011CEC4 C0 45 00 3C */ lfs f2, 0x3c(r5) -/* 8011CEC8 48 00 C8 11 */ bl setSingleAnimeWolfBaseSpeed__9daAlink_cFQ29daAlink_c12daAlink_WANMff -/* 8011CECC 48 00 00 20 */ b lbl_8011CEEC -lbl_8011CED0: -/* 8011CED0 7F E3 FB 78 */ mr r3, r31 -/* 8011CED4 38 80 00 8C */ li r4, 0x8c -/* 8011CED8 C0 22 92 C0 */ lfs f1, lit_6108(r2) -/* 8011CEDC 3C A0 80 39 */ lis r5, m__21daAlinkHIO_damFall_c0@ha /* 0x8038E454@ha */ -/* 8011CEE0 38 A5 E4 54 */ addi r5, r5, m__21daAlinkHIO_damFall_c0@l /* 0x8038E454@l */ -/* 8011CEE4 C0 45 00 44 */ lfs f2, 0x44(r5) -/* 8011CEE8 4B F9 00 F9 */ bl setSingleAnimeBaseSpeed__9daAlink_cFQ29daAlink_c11daAlink_ANMff -lbl_8011CEEC: -/* 8011CEEC 38 00 00 00 */ li r0, 0 -/* 8011CEF0 90 1F 31 94 */ stw r0, 0x3194(r31) -/* 8011CEF4 28 1F 00 00 */ cmplwi r31, 0 -/* 8011CEF8 41 82 00 0C */ beq lbl_8011CF04 -/* 8011CEFC 83 DF 00 04 */ lwz r30, 4(r31) -/* 8011CF00 48 00 00 08 */ b lbl_8011CF08 -lbl_8011CF04: -/* 8011CF04 3B C0 FF FF */ li r30, -1 -lbl_8011CF08: -/* 8011CF08 48 06 47 39 */ bl dCam_getBody__Fv -/* 8011CF0C 38 80 00 13 */ li r4, 0x13 -/* 8011CF10 7F C5 F3 78 */ mr r5, r30 -/* 8011CF14 3C C0 80 39 */ lis r6, d_a_d_a_alink__stringBase0@ha /* 0x80392094@ha */ -/* 8011CF18 38 C6 20 94 */ addi r6, r6, d_a_d_a_alink__stringBase0@l /* 0x80392094@l */ -/* 8011CF1C 38 C6 00 43 */ addi r6, r6, 0x43 -/* 8011CF20 38 E0 00 01 */ li r7, 1 -/* 8011CF24 39 1F 31 94 */ addi r8, r31, 0x3194 -/* 8011CF28 39 20 00 00 */ li r9, 0 -/* 8011CF2C 4C C6 31 82 */ crclr 6 -/* 8011CF30 4B F6 BB 4D */ bl StartEventCamera__9dCamera_cFiie -/* 8011CF34 38 00 00 3C */ li r0, 0x3c -/* 8011CF38 B0 1F 30 08 */ sth r0, 0x3008(r31) -/* 8011CF3C 38 00 00 00 */ li r0, 0 -/* 8011CF40 B0 1F 30 0C */ sth r0, 0x300c(r31) -/* 8011CF44 38 60 00 01 */ li r3, 1 -lbl_8011CF48: -/* 8011CF48 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8011CF4C 83 C1 00 08 */ lwz r30, 8(r1) -/* 8011CF50 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8011CF54 7C 08 03 A6 */ mtlr r0 -/* 8011CF58 38 21 00 10 */ addi r1, r1, 0x10 -/* 8011CF5C 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/procCoGetReadySitInit__9daAlink_cFv.s b/asm/d/a/d_a_alink/procCoGetReadySitInit__9daAlink_cFv.s deleted file mode 100644 index 5dfe04eaa24..00000000000 --- a/asm/d/a/d_a_alink/procCoGetReadySitInit__9daAlink_cFv.s +++ /dev/null @@ -1,73 +0,0 @@ -lbl_8011D544: -/* 8011D544 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8011D548 7C 08 02 A6 */ mflr r0 -/* 8011D54C 90 01 00 14 */ stw r0, 0x14(r1) -/* 8011D550 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8011D554 7C 7F 1B 78 */ mr r31, r3 -/* 8011D558 A0 03 2F E8 */ lhz r0, 0x2fe8(r3) -/* 8011D55C 28 00 01 57 */ cmplwi r0, 0x157 -/* 8011D560 41 82 00 18 */ beq lbl_8011D578 -/* 8011D564 28 00 00 00 */ cmplwi r0, 0 -/* 8011D568 40 82 00 18 */ bne lbl_8011D580 -/* 8011D56C 4B F9 BC E9 */ bl checkNoUpperAnime__9daAlink_cCFv -/* 8011D570 2C 03 00 00 */ cmpwi r3, 0 -/* 8011D574 40 82 00 0C */ bne lbl_8011D580 -lbl_8011D578: -/* 8011D578 38 60 00 01 */ li r3, 1 -/* 8011D57C 48 00 00 BC */ b lbl_8011D638 -lbl_8011D580: -/* 8011D580 A0 1F 2F DC */ lhz r0, 0x2fdc(r31) -/* 8011D584 28 00 00 FF */ cmplwi r0, 0xff -/* 8011D588 41 82 00 24 */ beq lbl_8011D5AC -/* 8011D58C 80 1F 05 74 */ lwz r0, 0x574(r31) -/* 8011D590 54 00 01 8D */ rlwinm. r0, r0, 0, 6, 6 -/* 8011D594 40 82 00 18 */ bne lbl_8011D5AC -/* 8011D598 7F E3 FB 78 */ mr r3, r31 -/* 8011D59C 38 80 01 57 */ li r4, 0x157 -/* 8011D5A0 38 A0 00 00 */ li r5, 0 -/* 8011D5A4 4B FA 58 39 */ bl procPreActionUnequipInit__9daAlink_cFiP10fopAc_ac_c -/* 8011D5A8 48 00 00 90 */ b lbl_8011D638 -lbl_8011D5AC: -/* 8011D5AC 7F E3 FB 78 */ mr r3, r31 -/* 8011D5B0 38 80 01 57 */ li r4, 0x157 -/* 8011D5B4 4B FA 49 B9 */ bl commonProcInit__9daAlink_cFQ29daAlink_c12daAlink_PROC -/* 8011D5B8 80 1F 05 74 */ lwz r0, 0x574(r31) -/* 8011D5BC 54 00 01 8D */ rlwinm. r0, r0, 0, 6, 6 -/* 8011D5C0 41 82 00 2C */ beq lbl_8011D5EC -/* 8011D5C4 7F E3 FB 78 */ mr r3, r31 -/* 8011D5C8 38 80 00 00 */ li r4, 0 -/* 8011D5CC 3C A0 80 39 */ lis r5, m__20daAlinkHIO_wlMove_c0@ha /* 0x8038EE28@ha */ -/* 8011D5D0 38 A5 EE 28 */ addi r5, r5, m__20daAlinkHIO_wlMove_c0@l /* 0x8038EE28@l */ -/* 8011D5D4 C0 25 00 70 */ lfs f1, 0x70(r5) -/* 8011D5D8 C0 42 92 C4 */ lfs f2, lit_6109(r2) -/* 8011D5DC 48 00 C0 FD */ bl setSingleAnimeWolfBaseSpeed__9daAlink_cFQ29daAlink_c12daAlink_WANMff -/* 8011D5E0 38 00 00 01 */ li r0, 1 -/* 8011D5E4 B0 1F 30 0C */ sth r0, 0x300c(r31) -/* 8011D5E8 48 00 00 4C */ b lbl_8011D634 -lbl_8011D5EC: -/* 8011D5EC 7F E3 FB 78 */ mr r3, r31 -/* 8011D5F0 38 80 00 CF */ li r4, 0xcf -/* 8011D5F4 C0 22 92 B8 */ lfs f1, lit_6040(r2) -/* 8011D5F8 C0 42 93 80 */ lfs f2, lit_8780(r2) -/* 8011D5FC 38 A0 FF FF */ li r5, -1 -/* 8011D600 C0 62 92 C4 */ lfs f3, lit_6109(r2) -/* 8011D604 4B F8 FA 09 */ bl setSingleAnime__9daAlink_cFQ29daAlink_c11daAlink_ANMffsf -/* 8011D608 38 00 00 00 */ li r0, 0 -/* 8011D60C B0 1F 30 0C */ sth r0, 0x300c(r31) -/* 8011D610 3C 60 80 42 */ lis r3, l_waitBaseAnime@ha /* 0x80425514@ha */ -/* 8011D614 C4 03 55 14 */ lfsu f0, l_waitBaseAnime@l(r3) /* 0x80425514@l */ -/* 8011D618 D0 1F 35 88 */ stfs f0, 0x3588(r31) -/* 8011D61C C0 03 00 04 */ lfs f0, 4(r3) -/* 8011D620 D0 1F 35 8C */ stfs f0, 0x358c(r31) -/* 8011D624 C0 03 00 08 */ lfs f0, 8(r3) -/* 8011D628 D0 1F 35 90 */ stfs f0, 0x3590(r31) -/* 8011D62C 38 00 00 0C */ li r0, 0xc -/* 8011D630 98 1F 2F 99 */ stb r0, 0x2f99(r31) -lbl_8011D634: -/* 8011D634 38 60 00 01 */ li r3, 1 -lbl_8011D638: -/* 8011D638 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8011D63C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8011D640 7C 08 03 A6 */ mtlr r0 -/* 8011D644 38 21 00 10 */ addi r1, r1, 0x10 -/* 8011D648 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/procCoLookAroundInit__9daAlink_cFv.s b/asm/d/a/d_a_alink/procCoLookAroundInit__9daAlink_cFv.s deleted file mode 100644 index c813d8101aa..00000000000 --- a/asm/d/a/d_a_alink/procCoLookAroundInit__9daAlink_cFv.s +++ /dev/null @@ -1,83 +0,0 @@ -lbl_8011C62C: -/* 8011C62C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8011C630 7C 08 02 A6 */ mflr r0 -/* 8011C634 90 01 00 14 */ stw r0, 0x14(r1) -/* 8011C638 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8011C63C 93 C1 00 08 */ stw r30, 8(r1) -/* 8011C640 7C 7E 1B 78 */ mr r30, r3 -/* 8011C644 3C 80 80 42 */ lis r4, lit_4409@ha /* 0x80425508@ha */ -/* 8011C648 3B E4 55 08 */ addi r31, r4, lit_4409@l /* 0x80425508@l */ -/* 8011C64C 38 80 01 52 */ li r4, 0x152 -/* 8011C650 4B FA 67 55 */ bl commonProcInitNotSameProc__9daAlink_cFQ29daAlink_c12daAlink_PROC -/* 8011C654 2C 03 00 00 */ cmpwi r3, 0 -/* 8011C658 40 82 00 0C */ bne lbl_8011C664 -/* 8011C65C 38 60 00 00 */ li r3, 0 -/* 8011C660 48 00 00 E8 */ b lbl_8011C748 -lbl_8011C664: -/* 8011C664 38 00 00 00 */ li r0, 0 -/* 8011C668 B0 1E 30 0E */ sth r0, 0x300e(r30) -/* 8011C66C 80 1E 05 74 */ lwz r0, 0x574(r30) -/* 8011C670 54 00 01 8D */ rlwinm. r0, r0, 0, 6, 6 -/* 8011C674 41 82 00 58 */ beq lbl_8011C6CC -/* 8011C678 7F C3 F3 78 */ mr r3, r30 -/* 8011C67C 38 80 00 82 */ li r4, 0x82 -/* 8011C680 48 00 CF F9 */ bl setSingleAnimeWolfBase__9daAlink_cFQ29daAlink_c12daAlink_WANM -/* 8011C684 7F C3 F3 78 */ mr r3, r30 -/* 8011C688 38 80 00 A0 */ li r4, 0xa0 -/* 8011C68C 4B F9 32 15 */ bl setFaceBasicTexture__9daAlink_cFQ29daAlink_c13daAlink_FTANM -/* 8011C690 C0 1F 01 14 */ lfs f0, 0x114(r31) -/* 8011C694 D0 1E 35 88 */ stfs f0, 0x3588(r30) -/* 8011C698 38 7F 01 14 */ addi r3, r31, 0x114 -/* 8011C69C C0 03 00 04 */ lfs f0, 4(r3) -/* 8011C6A0 D0 1E 35 8C */ stfs f0, 0x358c(r30) -/* 8011C6A4 C0 03 00 08 */ lfs f0, 8(r3) -/* 8011C6A8 D0 1E 35 90 */ stfs f0, 0x3590(r30) -/* 8011C6AC 7F C3 F3 78 */ mr r3, r30 -/* 8011C6B0 3C 80 00 01 */ lis r4, 0x0001 /* 0x000100BB@ha */ -/* 8011C6B4 38 84 00 BB */ addi r4, r4, 0x00BB /* 0x000100BB@l */ -/* 8011C6B8 81 9E 06 28 */ lwz r12, 0x628(r30) -/* 8011C6BC 81 8C 01 14 */ lwz r12, 0x114(r12) -/* 8011C6C0 7D 89 03 A6 */ mtctr r12 -/* 8011C6C4 4E 80 04 21 */ bctrl -/* 8011C6C8 48 00 00 6C */ b lbl_8011C734 -lbl_8011C6CC: -/* 8011C6CC 80 1E 06 0C */ lwz r0, 0x60c(r30) -/* 8011C6D0 2C 00 00 01 */ cmpwi r0, 1 -/* 8011C6D4 40 82 00 30 */ bne lbl_8011C704 -/* 8011C6D8 7F C3 F3 78 */ mr r3, r30 -/* 8011C6DC 38 80 01 9C */ li r4, 0x19c -/* 8011C6E0 4B F9 08 A1 */ bl setSingleAnimeBase__9daAlink_cFQ29daAlink_c11daAlink_ANM -/* 8011C6E4 C0 1F 00 3C */ lfs f0, 0x3c(r31) -/* 8011C6E8 D0 1E 35 88 */ stfs f0, 0x3588(r30) -/* 8011C6EC 38 7F 00 3C */ addi r3, r31, 0x3c -/* 8011C6F0 C0 03 00 04 */ lfs f0, 4(r3) -/* 8011C6F4 D0 1E 35 8C */ stfs f0, 0x358c(r30) -/* 8011C6F8 C0 03 00 08 */ lfs f0, 8(r3) -/* 8011C6FC D0 1E 35 90 */ stfs f0, 0x3590(r30) -/* 8011C700 48 00 00 34 */ b lbl_8011C734 -lbl_8011C704: -/* 8011C704 7F C3 F3 78 */ mr r3, r30 -/* 8011C708 38 80 01 24 */ li r4, 0x124 -/* 8011C70C 4B F9 08 75 */ bl setSingleAnimeBase__9daAlink_cFQ29daAlink_c11daAlink_ANM -/* 8011C710 C0 1F 00 0C */ lfs f0, 0xc(r31) -/* 8011C714 D0 1E 35 88 */ stfs f0, 0x3588(r30) -/* 8011C718 38 7F 00 0C */ addi r3, r31, 0xc -/* 8011C71C C0 03 00 04 */ lfs f0, 4(r3) -/* 8011C720 D0 1E 35 8C */ stfs f0, 0x358c(r30) -/* 8011C724 C0 03 00 08 */ lfs f0, 8(r3) -/* 8011C728 D0 1E 35 90 */ stfs f0, 0x3590(r30) -/* 8011C72C 38 00 00 01 */ li r0, 1 -/* 8011C730 B0 1E 30 0E */ sth r0, 0x300e(r30) -lbl_8011C734: -/* 8011C734 C0 02 92 C0 */ lfs f0, lit_6108(r2) -/* 8011C738 D0 1E 33 98 */ stfs f0, 0x3398(r30) -/* 8011C73C 38 00 00 00 */ li r0, 0 -/* 8011C740 B0 1E 30 0C */ sth r0, 0x300c(r30) -/* 8011C744 38 60 00 01 */ li r3, 1 -lbl_8011C748: -/* 8011C748 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8011C74C 83 C1 00 08 */ lwz r30, 8(r1) -/* 8011C750 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8011C754 7C 08 03 A6 */ mtlr r0 -/* 8011C758 38 21 00 10 */ addi r1, r1, 0x10 -/* 8011C75C 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/procNotUseItem__9daAlink_cFv.s b/asm/d/a/d_a_alink/procNotUseItem__9daAlink_cFv.s deleted file mode 100644 index 729e82aee64..00000000000 --- a/asm/d/a/d_a_alink/procNotUseItem__9daAlink_cFv.s +++ /dev/null @@ -1,98 +0,0 @@ -lbl_8011E57C: -/* 8011E57C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8011E580 7C 08 02 A6 */ mflr r0 -/* 8011E584 90 01 00 14 */ stw r0, 0x14(r1) -/* 8011E588 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8011E58C 93 C1 00 08 */ stw r30, 8(r1) -/* 8011E590 7C 7F 1B 78 */ mr r31, r3 -/* 8011E594 A8 03 30 0C */ lha r0, 0x300c(r3) -/* 8011E598 2C 00 00 00 */ cmpwi r0, 0 -/* 8011E59C 40 82 00 44 */ bne lbl_8011E5E0 -/* 8011E5A0 38 7F 04 D0 */ addi r3, r31, 0x4d0 -/* 8011E5A4 80 9F 31 98 */ lwz r4, 0x3198(r31) -/* 8011E5A8 38 A0 00 05 */ li r5, 5 -/* 8011E5AC 38 C0 FF FF */ li r6, -1 -/* 8011E5B0 88 1F 04 E2 */ lbz r0, 0x4e2(r31) -/* 8011E5B4 7C 07 07 74 */ extsb r7, r0 -/* 8011E5B8 39 1F 04 E4 */ addi r8, r31, 0x4e4 -/* 8011E5BC 39 3F 04 EC */ addi r9, r31, 0x4ec -/* 8011E5C0 4B EF D6 29 */ bl fopAcM_createItemForPresentDemo__FPC4cXyziUciiPC5csXyzPC4cXyz -/* 8011E5C4 7C 64 1B 78 */ mr r4, r3 -/* 8011E5C8 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8011E5CC 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8011E5D0 38 63 4E C8 */ addi r3, r3, 0x4ec8 -/* 8011E5D4 4B F2 51 19 */ bl setPtI_Id__14dEvt_control_cFUi -/* 8011E5D8 38 00 00 01 */ li r0, 1 -/* 8011E5DC B0 1F 30 0C */ sth r0, 0x300c(r31) -lbl_8011E5E0: -/* 8011E5E0 A8 1F 30 0E */ lha r0, 0x300e(r31) -/* 8011E5E4 2C 00 00 00 */ cmpwi r0, 0 -/* 8011E5E8 41 82 00 A0 */ beq lbl_8011E688 -/* 8011E5EC 7F E3 FB 78 */ mr r3, r31 -/* 8011E5F0 4B EF D5 55 */ bl fopAcM_getItemEventPartner__FPC10fopAc_ac_c -/* 8011E5F4 7C 7E 1B 79 */ or. r30, r3, r3 -/* 8011E5F8 41 82 00 CC */ beq lbl_8011E6C4 -/* 8011E5FC 41 82 00 0C */ beq lbl_8011E608 -/* 8011E600 80 7E 00 04 */ lwz r3, 4(r30) -/* 8011E604 48 00 00 08 */ b lbl_8011E60C -lbl_8011E608: -/* 8011E608 38 60 FF FF */ li r3, -1 -lbl_8011E60C: -/* 8011E60C 4B F0 3B 2D */ bl fpcM_IsCreating__FUi -/* 8011E610 2C 03 00 00 */ cmpwi r3, 0 -/* 8011E614 40 82 00 B0 */ bne lbl_8011E6C4 -/* 8011E618 38 7F 28 0C */ addi r3, r31, 0x280c -/* 8011E61C 7F C4 F3 78 */ mr r4, r30 -/* 8011E620 48 04 06 99 */ bl setData__16daPy_actorKeep_cFP10fopAc_ac_c -/* 8011E624 7F C3 F3 78 */ mr r3, r30 -/* 8011E628 4B F1 94 4D */ bl show__12daItemBase_cFv -/* 8011E62C A8 1F 30 10 */ lha r0, 0x3010(r31) -/* 8011E630 2C 00 00 00 */ cmpwi r0, 0 -/* 8011E634 40 82 00 28 */ bne lbl_8011E65C -/* 8011E638 38 00 00 01 */ li r0, 1 -/* 8011E63C B0 1F 30 10 */ sth r0, 0x3010(r31) -/* 8011E640 7F E3 FB 78 */ mr r3, r31 -/* 8011E644 3C 80 00 02 */ lis r4, 0x0002 /* 0x0002004F@ha */ -/* 8011E648 38 84 00 4F */ addi r4, r4, 0x004F /* 0x0002004F@l */ -/* 8011E64C 81 9F 06 28 */ lwz r12, 0x628(r31) -/* 8011E650 81 8C 01 18 */ lwz r12, 0x118(r12) -/* 8011E654 7D 89 03 A6 */ mtctr r12 -/* 8011E658 4E 80 04 21 */ bctrl -lbl_8011E65C: -/* 8011E65C 7F E3 FB 78 */ mr r3, r31 -/* 8011E660 38 80 05 31 */ li r4, 0x531 -/* 8011E664 4B FF A1 51 */ bl checkEndMessage__9daAlink_cFUl -/* 8011E668 2C 03 00 00 */ cmpwi r3, 0 -/* 8011E66C 41 82 00 58 */ beq lbl_8011E6C4 -/* 8011E670 7F E3 FB 78 */ mr r3, r31 -/* 8011E674 4B FA 12 11 */ bl returnKeepItemData__9daAlink_cFv -/* 8011E678 7F E3 FB 78 */ mr r3, r31 -/* 8011E67C 4B FF 96 15 */ bl resetSpecialEvent__9daAlink_cFv -/* 8011E680 38 60 00 01 */ li r3, 1 -/* 8011E684 48 00 00 44 */ b lbl_8011E6C8 -lbl_8011E688: -/* 8011E688 38 7F 1F D0 */ addi r3, r31, 0x1fd0 -/* 8011E68C 48 03 FE 41 */ bl checkAnmEnd__16daPy_frameCtrl_cFv -/* 8011E690 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8011E694 41 82 00 28 */ beq lbl_8011E6BC -/* 8011E698 7F E3 FB 78 */ mr r3, r31 -/* 8011E69C 38 80 01 89 */ li r4, 0x189 -/* 8011E6A0 4B F8 E8 E1 */ bl setSingleAnimeBase__9daAlink_cFQ29daAlink_c11daAlink_ANM -/* 8011E6A4 80 1F 31 A0 */ lwz r0, 0x31a0(r31) -/* 8011E6A8 60 00 01 00 */ ori r0, r0, 0x100 -/* 8011E6AC 90 1F 31 A0 */ stw r0, 0x31a0(r31) -/* 8011E6B0 38 00 00 01 */ li r0, 1 -/* 8011E6B4 B0 1F 30 0E */ sth r0, 0x300e(r31) -/* 8011E6B8 48 00 00 0C */ b lbl_8011E6C4 -lbl_8011E6BC: -/* 8011E6BC 7F E3 FB 78 */ mr r3, r31 -/* 8011E6C0 4B FF A0 B9 */ bl setTradeItemOutHand__9daAlink_cFv -lbl_8011E6C4: -/* 8011E6C4 38 60 00 01 */ li r3, 1 -lbl_8011E6C8: -/* 8011E6C8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8011E6CC 83 C1 00 08 */ lwz r30, 8(r1) -/* 8011E6D0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8011E6D4 7C 08 03 A6 */ mtlr r0 -/* 8011E6D8 38 21 00 10 */ addi r1, r1, 0x10 -/* 8011E6DC 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/setGetItemFace__9daAlink_cFUs.s b/asm/d/a/d_a_alink/setGetItemFace__9daAlink_cFUs.s deleted file mode 100644 index c782a671fe9..00000000000 --- a/asm/d/a/d_a_alink/setGetItemFace__9daAlink_cFUs.s +++ /dev/null @@ -1,85 +0,0 @@ -lbl_801181A0: -/* 801181A0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 801181A4 7C 08 02 A6 */ mflr r0 -/* 801181A8 90 01 00 14 */ stw r0, 0x14(r1) -/* 801181AC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 801181B0 7C 7F 1B 78 */ mr r31, r3 -/* 801181B4 38 04 FF FA */ addi r0, r4, -6 -/* 801181B8 54 00 04 3E */ clrlwi r0, r0, 0x10 -/* 801181BC 28 00 00 01 */ cmplwi r0, 1 -/* 801181C0 40 81 00 84 */ ble lbl_80118244 -/* 801181C4 38 04 FF DF */ addi r0, r4, -33 -/* 801181C8 54 00 04 3E */ clrlwi r0, r0, 0x10 -/* 801181CC 28 00 00 01 */ cmplwi r0, 1 -/* 801181D0 40 81 00 74 */ ble lbl_80118244 -/* 801181D4 54 80 04 3E */ clrlwi r0, r4, 0x10 -/* 801181D8 28 00 00 31 */ cmplwi r0, 0x31 -/* 801181DC 41 82 00 68 */ beq lbl_80118244 -/* 801181E0 28 00 00 36 */ cmplwi r0, 0x36 -/* 801181E4 41 82 00 60 */ beq lbl_80118244 -/* 801181E8 28 00 00 40 */ cmplwi r0, 0x40 -/* 801181EC 41 80 00 0C */ blt lbl_801181F8 -/* 801181F0 28 00 00 47 */ cmplwi r0, 0x47 -/* 801181F4 40 81 00 50 */ ble lbl_80118244 -lbl_801181F8: -/* 801181F8 54 83 04 3E */ clrlwi r3, r4, 0x10 -/* 801181FC 28 03 00 4A */ cmplwi r3, 0x4a -/* 80118200 41 82 00 44 */ beq lbl_80118244 -/* 80118204 28 03 00 56 */ cmplwi r3, 0x56 -/* 80118208 41 82 00 3C */ beq lbl_80118244 -/* 8011820C 28 03 00 ED */ cmplwi r3, 0xed -/* 80118210 41 82 00 34 */ beq lbl_80118244 -/* 80118214 28 03 00 73 */ cmplwi r3, 0x73 -/* 80118218 41 82 00 2C */ beq lbl_80118244 -/* 8011821C 28 03 00 75 */ cmplwi r3, 0x75 -/* 80118220 41 82 00 24 */ beq lbl_80118244 -/* 80118224 28 03 00 EB */ cmplwi r3, 0xeb -/* 80118228 41 82 00 1C */ beq lbl_80118244 -/* 8011822C 38 04 FF 5F */ addi r0, r4, -161 -/* 80118230 54 00 04 3E */ clrlwi r0, r0, 0x10 -/* 80118234 28 00 00 01 */ cmplwi r0, 1 -/* 80118238 40 81 00 0C */ ble lbl_80118244 -/* 8011823C 28 03 00 A3 */ cmplwi r3, 0xa3 -/* 80118240 40 82 00 20 */ bne lbl_80118260 -lbl_80118244: -/* 80118244 7F E3 FB 78 */ mr r3, r31 -/* 80118248 38 80 01 43 */ li r4, 0x143 -/* 8011824C 38 A0 00 00 */ li r5, 0 -/* 80118250 3C C0 00 01 */ lis r6, 0x0001 /* 0x0000FFFF@ha */ -/* 80118254 38 C6 FF FF */ addi r6, r6, 0xFFFF /* 0x0000FFFF@l */ -/* 80118258 4B F9 72 59 */ bl setFaceBck__9daAlink_cFUsiUs -/* 8011825C 48 00 00 64 */ b lbl_801182C0 -lbl_80118260: -/* 80118260 28 03 00 25 */ cmplwi r3, 0x25 -/* 80118264 41 82 00 0C */ beq lbl_80118270 -/* 80118268 28 03 00 EC */ cmplwi r3, 0xec -/* 8011826C 40 82 00 2C */ bne lbl_80118298 -lbl_80118270: -/* 80118270 7F E3 FB 78 */ mr r3, r31 -/* 80118274 38 80 00 7C */ li r4, 0x7c -/* 80118278 4B F9 76 29 */ bl setFaceBasicTexture__9daAlink_cFQ29daAlink_c13daAlink_FTANM -/* 8011827C 7F E3 FB 78 */ mr r3, r31 -/* 80118280 38 80 01 49 */ li r4, 0x149 -/* 80118284 38 A0 00 00 */ li r5, 0 -/* 80118288 3C C0 00 01 */ lis r6, 0x0001 /* 0x0000FFFF@ha */ -/* 8011828C 38 C6 FF FF */ addi r6, r6, 0xFFFF /* 0x0000FFFF@l */ -/* 80118290 4B F9 72 21 */ bl setFaceBck__9daAlink_cFUsiUs -/* 80118294 48 00 00 2C */ b lbl_801182C0 -lbl_80118298: -/* 80118298 28 03 00 F4 */ cmplwi r3, 0xf4 -/* 8011829C 41 82 00 0C */ beq lbl_801182A8 -/* 801182A0 28 03 00 F5 */ cmplwi r3, 0xf5 -/* 801182A4 40 82 00 1C */ bne lbl_801182C0 -lbl_801182A8: -/* 801182A8 7F E3 FB 78 */ mr r3, r31 -/* 801182AC 38 80 01 46 */ li r4, 0x146 -/* 801182B0 38 A0 00 00 */ li r5, 0 -/* 801182B4 3C C0 00 01 */ lis r6, 0x0001 /* 0x0000FFFF@ha */ -/* 801182B8 38 C6 FF FF */ addi r6, r6, 0xFFFF /* 0x0000FFFF@l */ -/* 801182BC 4B F9 71 F5 */ bl setFaceBck__9daAlink_cFUsiUs -lbl_801182C0: -/* 801182C0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 801182C4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 801182C8 7C 08 03 A6 */ mtlr r0 -/* 801182CC 38 21 00 10 */ addi r1, r1, 0x10 -/* 801182D0 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/setShapeAngleToTalkActor__9daAlink_cFv.s b/asm/d/a/d_a_alink/setShapeAngleToTalkActor__9daAlink_cFv.s deleted file mode 100644 index 03f2b5364fb..00000000000 --- a/asm/d/a/d_a_alink/setShapeAngleToTalkActor__9daAlink_cFv.s +++ /dev/null @@ -1,66 +0,0 @@ -lbl_8011856C: -/* 8011856C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80118570 7C 08 02 A6 */ mflr r0 -/* 80118574 90 01 00 24 */ stw r0, 0x24(r1) -/* 80118578 39 61 00 20 */ addi r11, r1, 0x20 -/* 8011857C 48 24 9C 61 */ bl _savegpr_29 -/* 80118580 7C 7D 1B 78 */ mr r29, r3 -/* 80118584 4B F0 35 91 */ bl fopAcM_getTalkEventPartner__FPC10fopAc_ac_c -/* 80118588 7C 7E 1B 79 */ or. r30, r3, r3 -/* 8011858C 41 82 00 B0 */ beq lbl_8011863C -/* 80118590 AB FE 00 08 */ lha r31, 8(r30) -/* 80118594 2C 1F 02 32 */ cmpwi r31, 0x232 -/* 80118598 41 82 00 A4 */ beq lbl_8011863C -/* 8011859C 2C 1F 02 C3 */ cmpwi r31, 0x2c3 -/* 801185A0 40 82 00 24 */ bne lbl_801185C4 -/* 801185A4 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 801185A8 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 801185AC 88 9E 05 69 */ lbz r4, 0x569(r30) -/* 801185B0 88 1E 04 BA */ lbz r0, 0x4ba(r30) -/* 801185B4 7C 05 07 74 */ extsb r5, r0 -/* 801185B8 4B F1 CD A9 */ bl isSwitch__10dSv_info_cCFii -/* 801185BC 2C 03 00 00 */ cmpwi r3, 0 -/* 801185C0 40 82 00 7C */ bne lbl_8011863C -lbl_801185C4: -/* 801185C4 2C 1F 02 C1 */ cmpwi r31, 0x2c1 -/* 801185C8 40 82 00 10 */ bne lbl_801185D8 -/* 801185CC 88 1E 05 6D */ lbz r0, 0x56d(r30) -/* 801185D0 28 00 00 FF */ cmplwi r0, 0xff -/* 801185D4 41 82 00 68 */ beq lbl_8011863C -lbl_801185D8: -/* 801185D8 2C 1F 02 C4 */ cmpwi r31, 0x2c4 -/* 801185DC 40 82 00 10 */ bne lbl_801185EC -/* 801185E0 88 1E 05 6B */ lbz r0, 0x56b(r30) -/* 801185E4 28 00 00 FF */ cmplwi r0, 0xff -/* 801185E8 41 82 00 54 */ beq lbl_8011863C -lbl_801185EC: -/* 801185EC 2C 1F 00 FF */ cmpwi r31, 0xff -/* 801185F0 41 82 00 4C */ beq lbl_8011863C -/* 801185F4 2C 1F 02 C1 */ cmpwi r31, 0x2c1 -/* 801185F8 41 82 00 0C */ beq lbl_80118604 -/* 801185FC 2C 1F 02 C4 */ cmpwi r31, 0x2c4 -/* 80118600 40 82 00 18 */ bne lbl_80118618 -lbl_80118604: -/* 80118604 38 7D 04 D0 */ addi r3, r29, 0x4d0 -/* 80118608 38 9E 05 38 */ addi r4, r30, 0x538 -/* 8011860C 48 15 85 F9 */ bl cLib_targetAngleY__FPC3VecPC3Vec -/* 80118610 7C 64 1B 78 */ mr r4, r3 -/* 80118614 48 00 00 14 */ b lbl_80118628 -lbl_80118618: -/* 80118618 7F A3 EB 78 */ mr r3, r29 -/* 8011861C 7F C4 F3 78 */ mr r4, r30 -/* 80118620 4B F0 20 F1 */ bl fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c -/* 80118624 7C 64 1B 78 */ mr r4, r3 -lbl_80118628: -/* 80118628 38 7D 04 E6 */ addi r3, r29, 0x4e6 -/* 8011862C 38 A0 00 04 */ li r5, 4 -/* 80118630 38 C0 10 00 */ li r6, 0x1000 -/* 80118634 38 E0 02 00 */ li r7, 0x200 -/* 80118638 48 15 7F 09 */ bl cLib_addCalcAngleS__FPsssss -lbl_8011863C: -/* 8011863C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80118640 48 24 9B E9 */ bl _restgpr_29 -/* 80118644 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80118648 7C 08 03 A6 */ mtlr r0 -/* 8011864C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80118650 4E 80 00 20 */ blr diff --git a/include/d/a/d_a_alink.h b/include/d/a/d_a_alink.h index ab1acab141c..e3df5d0ab6c 100644 --- a/include/d/a/d_a_alink.h +++ b/include/d/a/d_a_alink.h @@ -650,6 +650,7 @@ public: }; enum daAlink_FTANM { + FTANM_UNK_0 = 0, FTANM_UNK_3 = 3, FTANM_UNK_4 = 4, FTANM_UNK_8 = 8, @@ -667,11 +668,15 @@ public: FTANM_UNK_8A = 0x8A, FTANM_UNK_90 = 0x90, FTANM_UNK_96 = 0x96, + FTANM_UNK_9C = 0x9C, + FTANM_UNK_9D = 0x9D, FTANM_UNK_9F = 0x9F, + FTANM_UNK_A0 = 0xA0, }; enum daAlink_WARP_MAT_MODE { - WARP_MAT_MODE_1 = 1, + WARP_MAT_MODE_0, + WARP_MAT_MODE_1, }; enum daAlink_WANM { @@ -1340,7 +1345,7 @@ public: /* 800AC738 */ void setDoubleAnimeBlendRatio(f32); /* 800AC754 */ void commonDoubleAnime(J3DAnmTransform*, J3DAnmTransform*, J3DAnmTransform*, J3DAnmTransform*, f32, f32, f32, int); - /* 800ACA14 */ void setDoubleAnime(f32, f32, f32, daAlink_c::daAlink_ANM, + /* 800ACA14 */ int setDoubleAnime(f32, f32, f32, daAlink_c::daAlink_ANM, daAlink_c::daAlink_ANM, int, f32); /* 800ACD40 */ void commonSingleAnime(J3DAnmTransform*, J3DAnmTransform*, f32, f32, s16); /* 800ACF80 */ void setSingleAnimeBase(daAlink_c::daAlink_ANM anmID); @@ -1483,7 +1488,7 @@ public: /* 800B994C */ BOOL checkItemChangeFromButton(); /* 800B9D2C */ BOOL checkNextActionFromButton(); /* 800B9F50 */ BOOL checkGroundSpecialMode(); - /* 800BA09C */ void commonCheckNextAction(int); + /* 800BA09C */ int commonCheckNextAction(int); /* 800BA0D0 */ int checkNextAction(int); /* 800BA6A0 */ void commonChangeItem(); /* 800BA914 */ void setItemAction(); @@ -1702,7 +1707,7 @@ public: /* 800D23C0 */ int checkCutAction(); /* 800D26EC */ int getCutDirection(); /* 800D2760 */ BOOL checkCutCancelNextMode(int); - /* 800D27E4 */ void checkDoCutAction(); + /* 800D27E4 */ BOOL checkDoCutAction(); /* 800D2890 */ BOOL checkCutBackState(); /* 800D28F4 */ BOOL checkCutHeadState(); /* 800D29D4 */ BOOL checkDownAttackState(); @@ -1818,7 +1823,7 @@ public: /* 800DDBA8 */ int procGuardAttack(); /* 800DDE58 */ int procGuardBreakInit(); /* 800DDF2C */ int procGuardBreak(); - /* 800DE008 */ bool procTurnMoveInit(int); + /* 800DE008 */ int procTurnMoveInit(int); /* 800DE380 */ int procTurnMove(); /* 800DE64C */ void getArrowFlyData(f32*, f32*, int) const; /* 800DE740 */ f32 getArrowIncAtR() const; @@ -1935,7 +1940,7 @@ public: /* 800E3800 */ f32 getBombWaterMaxFallSpeed() const; /* 800E3810 */ f32 getBombExplodeWaterEffectLimit() const; /* 800E3820 */ s16 getBombInsectLimitAngle() const; - /* 800E38EC */ void checkGrabLineCheck(); + /* 800E38EC */ BOOL checkGrabLineCheck(); /* 800E3BCC */ f32 getGrabThrowRate(); /* 800E3C1C */ BOOL checkGrabThrowAnime() const; /* 800E3C6C */ BOOL checkGrabAnime() const; @@ -1973,7 +1978,7 @@ public: /* 800E6E0C */ int procGrabRebound(); /* 800E6EEC */ int procGrabStandInit(); /* 800E6FE0 */ int procGrabStand(); - /* 800E70C0 */ bool checkInsectActorName(fopAc_ac_c*); + /* 800E70C0 */ BOOL checkInsectActorName(fopAc_ac_c*); /* 800E70FC */ int procInsectCatchInit(); /* 800E71D4 */ bool procInsectCatch(); /* 800E7254 */ int procPickUpInit(); @@ -1983,7 +1988,7 @@ public: /* 800E7894 */ void checkSetChainPullAnime(s16); /* 800E794C */ s16 getChainStickAngleY(s16) const; /* 800E7994 */ u8 checkChainEmphasys(); - /* 800E79F8 */ u8 searchFmChainPos(); + /* 800E79F8 */ BOOL searchFmChainPos(); /* 800E7AEC */ void setFmChainPosFromOut(fopAc_ac_c*, cXyz*, int); /* 800E7C30 */ int procFmChainUpInit(); /* 800E7CC0 */ int procFmChainUp(); @@ -1991,8 +1996,8 @@ public: /* 800E7E50 */ int procFmChainStrongPull(); /* 800E7ED0 */ void setWallGrabStatus(u8, u8); /* 800E7EE4 */ int getWallGrabStatus(); - /* 800E7EF4 */ void wallGrabTrigger(); - /* 800E7F18 */ void wallGrabButton(); + /* 800E7EF4 */ BOOL wallGrabTrigger(); + /* 800E7F18 */ BOOL wallGrabButton(); /* 800E7F3C */ void setPushPullKeepData(dBgW_Base::PushPullLabel, int); /* 800E80A4 */ void checkPushPullTurnBlock(); /* 800E8148 */ void checkPullBehindWall(); @@ -2337,7 +2342,7 @@ public: /* 80101D70 */ void swimBgCheck(f32); /* 801023E4 */ void setSpeedAndAngleSwim(); /* 801029C8 */ int checkNextActionSwim(); - /* 80102B1C */ void checkSwimAction(int); + /* 80102B1C */ int checkSwimAction(int); /* 80103058 */ int checkSwimUpAction(); /* 801032C8 */ void swimOutAfter(int); /* 80103398 */ bool checkSwimFall(); @@ -2557,7 +2562,7 @@ public: /* 80118FF8 */ void setHighModelBck(mDoExt_bckAnm*, u16); /* 801190A4 */ void setHighModelFaceBtk(u16); /* 80119134 */ void setDemoBrk(J3DAnmTevRegKey**, J3DModel*, u16); - /* 801191C4 */ void setStickAnmData(J3DAnmBase*, int, int, u16, int); + /* 801191C4 */ f32 setStickAnmData(J3DAnmBase*, int, int, u16, int); /* 801195C0 */ int procDemoCommon(); /* 801195F8 */ int procCoToolDemoInit(); /* 801196D8 */ int procCoToolDemo(); @@ -2644,13 +2649,13 @@ public: /* 8011F658 */ bool checkAcceptWarp(); /* 8011F7D8 */ void dungeonReturnWarp(); /* 8011F9EC */ void checkWarpStart(); - /* 8011FBC0 */ void warpModelTexScroll(); + /* 8011FBC0 */ int warpModelTexScroll(); /* 8011FD4C */ int procCoWarpInit(int, int); /* 80120124 */ int procCoWarp(); - /* 80120440 */ void commonWaitTurnInit(); + /* 80120440 */ int commonWaitTurnInit(); /* 80120474 */ int commonGrabPutInit(); - /* 80120500 */ void commonLargeDamageUpInit(int, int, s16, s16); - /* 80120534 */ void commonFallInit(int); + /* 80120500 */ int commonLargeDamageUpInit(int, int, s16, s16); + /* 80120534 */ int commonFallInit(int); /* 80120580 */ JPABaseEmitter* setEmitter(u32*, u16, cXyz const*, csXyz const*); /* 80120634 */ JPABaseEmitter* setEmitterPolyColor(u32*, u16, cBgS_PolyInfo&, cXyz const*, csXyz const*); /* 801206C4 */ JPABaseEmitter* setEmitterColor(u32*, u16, cXyz const*, csXyz const*); @@ -3083,7 +3088,7 @@ public: virtual bool checkCanoeFishingGetRight() const; virtual u8 checkBeeChildDrink() const; virtual void skipPortalObjWarp(); - virtual bool checkTreasureRupeeReturn(int) const; + virtual BOOL checkTreasureRupeeReturn(int) const; virtual void setSumouReady(fopAc_ac_c*); virtual bool checkAcceptDungeonWarpAlink(int); virtual s16 getSumouCounter() const; @@ -3180,6 +3185,7 @@ public: bool checkBoomerangCatchAnime() const { return checkUpperAnime(0x52); } BOOL checkCopyRodReadyAnime() const { return mEquipItem == COPY_ROD && checkUpperAnime(0x54); } BOOL checkCanoeFishingWaitAnime() const { return checkUpperAnime(0x5D) || checkUpperAnime(0x260); } + BOOL checkCopyRodControllAnime() const { return checkUpperAnime(0x202); } s16 checkWolfEyeUp() const { return mWolfEyeUp; } void onModeFlg(u32 flag) { mModeFlg |= flag; } @@ -3206,6 +3212,13 @@ public: void setFaceBasicBck(u16 param_0) { setFaceBck(param_0, 0, 0xFFFF); } void setFaceBasicBtp(u16 param_0) { setFaceBtp(param_0, 0, 0xFFFF); } void setFaceBasicBtk(u16 param_0) { setFaceBtk(param_0, 0, 0xFFFF); } + void setFaceDemoBck(u16 param_0) { setFaceBck(param_0, 0, 0); } + void setFaceDemoBtp(u16 param_0) { setFaceBtp(param_0, 0, 0); } + void setFaceDemoBtk(u16 param_0) { setFaceBtk(param_0, 0, 0); } + + void setGrabStatus(u8 i_status, u8 param_1) { setWallGrabStatus(i_status, param_1); } + void setChainGrabStatus(u8 i_status) { setGrabStatus(i_status, 2); } + void cancelFmChainGrabFromOut() { field_0x2fa3 = 0; field_0x2844.clearData(); @@ -3280,6 +3293,8 @@ public: bool checkGrabGlide() { return checkGrabRooster(); } bool checkCopyRodRevive() const { return mProcID == PROC_COPY_ROD_REVIVE; } + bool checkHorseGetOffMode() const { return mProcID == PROC_HORSE_GETOFF; } + bool checkHorseRideOn() const { return mProcID == PROC_HORSE_RIDE; } BOOL i_checkRideOn() const { return mRideStatus != 0; } @@ -3346,7 +3361,13 @@ public: static u8 const m_handLeftInSidePos[12]; static u8 const m_handRightInSidePos[12]; static u8 m_procInitTable[5632]; + + #ifdef NONMATCHING + static daAlink_procFunc m_demoInitTable[]; + #else static u8 m_demoInitTable[1140]; + #endif + static u8 m_fEffParamProc[72]; private: @@ -3375,7 +3396,7 @@ private: /* 0x0068C */ J3DAnmTextureSRTKey* field_0x068c; /* 0x00690 */ mDoExt_bckAnm* mpDemoFCTmpBck; /* 0x00694 */ J3DDeformData* mpDemoFCTmpBls; - /* 0x00698 */ void* field_0x0698; + /* 0x00698 */ J3DAnmCluster* field_0x0698; /* 0x0069C */ mDoExt_blkAnm* field_0x069c; /* 0x006A0 */ J3DModel* mpDemoHLTmpModel; /* 0x006A4 */ mDoExt_bckAnm* mpDemoHLTmpBck; @@ -3399,7 +3420,7 @@ private: /* 0x006EC */ J3DShape* field_0x06ec; /* 0x006F0 */ J3DShape* field_0x06f0; /* 0x006F4 */ J3DAnmTevRegKey* field_0x06f4; - /* 0x006F8 */ J3DAnmBase* field_0x06f8; + /* 0x006F8 */ J3DAnmTevRegKey* field_0x06f8; /* 0x006FC */ J3DModel* field_0x06fc; // related to human link /* 0x00700 */ J3DModel* field_0x0700; /* 0x00704 */ J3DAnmBase* field_0x0704; @@ -3510,7 +3531,7 @@ private: /* 0x0285C */ daPy_actorKeep_c field_0x285c; /* 0x02864 */ dMsgFlow_c mMsgFlow; /* 0x028B0 */ int field_0x28b0[0x10]; - /* 0x028F0 */ u32 mMsgClassID; + /* 0x028F0 */ unsigned int mMsgClassID; /* 0x028F4 */ int mAtnActorID; /* 0x028F8 */ int field_0x28f8; /* 0x028FC */ int field_0x28fc; @@ -3818,8 +3839,7 @@ private: /* 0x03220 */ u32 field_0x3220; /* 0x03224 */ u32 field_0x3224; /* 0x03228 */ u32 field_0x3228[2][3]; - /* 0x03240 */ u32 field_0x3240; - /* 0x03244 */ u8 field_0x3244[20]; + /* 0x03240 */ u32 field_0x3240[6]; /* 0x03258 */ u32 field_0x3258; /* 0x0325C */ u32 field_0x325c; /* 0x03260 */ u32 field_0x3260[2]; diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h index 51c171dd8fa..cffa2f06329 100644 --- a/include/d/a/d_a_player.h +++ b/include/d/a/d_a_player.h @@ -140,6 +140,11 @@ class daBoomerang_c; class daPy_demo_c { public: + enum { + DEMO_LAST_e = 0x5F, + DEMO_NEW_ANM0_e = 0x200, + }; + void setSpecialDemoType(); void setDemoType(u16 pType) { mDemoType = pType; } @@ -147,6 +152,7 @@ public: void setDemoMode(u32 mode) { mDemoMode = mode; } u32 getDemoMode() const { return mDemoMode; } int getParam1() const { return mParam1; } + s16 getParam2() const { return mParam2; } void setOriginalDemoType() { setDemoType(3); } void i_setSpecialDemoType() { setDemoType(5); } void setSystemDemoType() { setDemoType(2); } @@ -159,6 +165,12 @@ public: void setParam1(int value) { mParam1 = value;} void setParam2(int value) { mParam2 = value;} void setPos0(const cXyz* pos) { mDemoPos0 = *pos;} + void setToolDemoType() { setDemoType(1); } + s16 getTimer() const { return mTimer; } + void decTimer() { mTimer--; } + void setTimer(s16 i_timer) { mTimer = i_timer; } + cXyz* getPos0() { return &mDemoPos0; } + void resetDemoType() { setDemoType(0); } private: /* 0x00 */ u16 mDemoType; @@ -215,6 +227,7 @@ public: FLG0_UNK_10000000 = 0x10000000, FLG0_UNK_1000000 = 0x1000000, FLG0_UNDERWATER = 0x800000, + FLG0_UNK_200000 = 0x200000, FLG0_UNK_100000 = 0x100000, FLG0_UNK_80000 = 0x80000, FLG0_UNK_40000 = 0x40000, @@ -224,6 +237,7 @@ public: FLG0_UNK_2000 = 0x2000, FLG0_MAGNE_BOOTS_ON = 0x1000, FLG0_PUSH_PULL_KEEP = 0x800, + FLG0_UNK_400 = 0x400, FLG0_UNK_100 = 0x100, FLG0_UNK_80 = 0x80, FLG0_UNK_40 = 0x40, @@ -235,6 +249,7 @@ public: FLG0_HVY_STATE = FLG0_UNK_40000000 | FLG0_EQUIP_HVY_BOOTS | FLG0_UNK_20000, FLG0_UNK_14000 = 0x14000, + FLG0_UNK_10400 = 0x10400, FLG0_UNK_18 = FLG0_UNK_10 | FLG0_UNK_8, }; @@ -251,6 +266,7 @@ public: FLG1_UNK_2000 = 0x2000, FLG1_UNK_1000 = 0x1000, FLG1_UNK_800 = 0x800, + FLG1_UNK_200 = 0x200, FLG1_UNK_80 = 0x80, FLG1_UNK_40 = 0x40, FLG1_UNK_20 = 0x20, @@ -346,6 +362,7 @@ public: ERFLG1_UNK_20000000 = 0x20000000, ERFLG1_UNK_10000000 = 0x10000000, ERFLG1_UNK_4000000 = 0x4000000, + ERFLG1_UNK_100000 = 0x100000, ERFLG1_UNK_40000 = 0x40000, ERFLG1_UNK_2000 = 0x2000, ERFLG1_UNK_800 = 0x800, @@ -371,6 +388,7 @@ public: enum daPy_RFLG0 { RFLG0_UNK_8000000 = 0x8000000, RFLG0_UNK_4000000 = 0x4000000, + RFLG0_UNK_20000 = 0x20000, RFLG0_UNK_4000 = 0x4000, RFLG0_FRONT_ROLL_CRASH = 0x2000, RFLG0_ENEMY_ATTN_LOCK = 0x1000, @@ -380,10 +398,12 @@ public: RFLG0_UNK_80 = 0x80, RFLG0_UNK_40 = 0x40, RFLG0_UNK_10 = 0x10, + RFLG0_UNK_8 = 0x8, RFLG0_UNK_2 = 0x2, }; enum daPy_RFLG1 { + RFLG1_UNK_100 = 0x100, RFLG1_UNK_30 = 0x30, RFLG1_UNK_2 = 0x2, RFLG1_WOLF_ATTACK_REVERSE = 0x1, @@ -654,7 +674,7 @@ public: virtual bool checkCanoeFishingGetRight() const; virtual u8 checkBeeChildDrink() const; virtual void skipPortalObjWarp(); - virtual bool checkTreasureRupeeReturn(int) const; + virtual BOOL checkTreasureRupeeReturn(int) const; virtual void setSumouReady(fopAc_ac_c*); virtual bool checkAcceptDungeonWarpAlink(int); virtual s16 getSumouCounter() const; diff --git a/include/d/bg/d_bg_s_acch.h b/include/d/bg/d_bg_s_acch.h index 5fc99e03443..f067b030a61 100644 --- a/include/d/bg/d_bg_s_acch.h +++ b/include/d/bg/d_bg_s_acch.h @@ -161,6 +161,8 @@ public: void SetWallHit() { m_flags |= WALL_HIT; } void ClrWallNone() { m_flags &= ~WALL_NONE; } void OnLineCheckNone() { m_flags |= LINE_CHECK_NONE; } + void OffLineCheckNone() { m_flags &= ~LINE_CHECK_NONE; } + void SetWallNone() { m_flags |= WALL_NONE; } cM3dGCyl* GetWallBmdCylP() { return &m_wall_cyl; } // inline dupe diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index 1265d0be105..b4a2b67e08f 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -3002,6 +3002,14 @@ inline void dComIfGp_evmng_cutEnd(int param_0) { dComIfGp_getPEvtManager()->cutEnd(param_0); } +inline cXyz* dComIfGp_evmng_getGoal() { + return dComIfGp_getPEvtManager()->getGoal(); +} + +inline BOOL i_dComIfGp_evmng_startCheck(char const* i_event) { + return g_dComIfG_gameInfo.play.getEvtManager().startCheckOld(i_event); +} + inline BOOL dComIfGp_evmng_endCheck(const char* event) { return g_dComIfG_gameInfo.play.getEvtManager().endCheckOld(event); } @@ -3022,6 +3030,10 @@ inline void dComIfGp_event_setItemPartnerId(unsigned int id) { g_dComIfG_gameInfo.play.getEvent().setPtI_Id(id); } +inline u8 dComIfGp_event_getGtItm() { + return g_dComIfG_gameInfo.play.getEvent().getGtItm(); +} + inline int dComIfGp_evmng_startDemo(int param_0) { return dComIfGp_getPEvtManager()->setStartDemo(param_0); } diff --git a/include/d/d_demo.h b/include/d/d_demo.h index 582e4946f4c..25f38deb37a 100644 --- a/include/d/d_demo.h +++ b/include/d/d_demo.h @@ -56,7 +56,7 @@ public: /* 80038128 */ fopAc_ac_c* getActor(); /* 8003815C */ void setActor(fopAc_ac_c*); /* 8003819C */ f32 getPrm_Morf(); - /* 80038338 */ void getDemoIDData(int*, int*, int*, u16*, u8*); + /* 80038338 */ int getDemoIDData(int*, int*, int*, u16*, u8*); /* 80038098 */ virtual ~dDemo_actor_c(); /* 800387EC */ virtual void JSGSetData(u32, void const*, u32); @@ -280,6 +280,7 @@ public: static void onStatus(u32 status) { m_status |= status; } static void offStatus(u32 status) { m_status &= ~status; } static void setBranchData(const u8* p_data) { m_branchData = p_data; } + static s16 getBranchId() { return m_branchId; } static s16 m_branchId; static dDemo_system_c* m_system; diff --git a/include/d/d_gameover.h b/include/d/d_gameover.h index dfb13d6e97b..c23ce015fc5 100644 --- a/include/d/d_gameover.h +++ b/include/d/d_gameover.h @@ -80,6 +80,7 @@ public: /* 8019B864 */ int _delete(); s32 deleteCheck() { return mProc == 8; } + void animeStart() { mIsDemoSave = true; } /* 0x0FC */ dMenu_save_c* dMs_c; /* 0x100 */ dDlst_GameOverScrnDraw_c* dgo_screen_c; @@ -109,4 +110,19 @@ inline s32 d_GameOver_CheckDelete(unsigned int& id) { return 0; } +inline s32 d_GameOver_animeStart(unsigned int& id) { + if (id != UINT32_MAX) { + dGameover_c* gameover = (dGameover_c*)fopMsgM_SearchByID(id); + + if (gameover != NULL) { + gameover->animeStart(); + return 1; + } else { + return 0; + } + } + + return 0; +} + #endif /* D_D_GAMEOVER_H */ diff --git a/include/d/event/d_event.h b/include/d/event/d_event.h index 21d8bb42510..d3393d2619c 100644 --- a/include/d/event/d_event.h +++ b/include/d/event/d_event.h @@ -161,6 +161,7 @@ public: fopAc_ac_c* getPtT() { return convPId(mPtT); } bool isChangeOK(void* param_0) { return mChangeOK == param_0; } u8 getPreItemNo() { return mPreItemNo; } + u8 getGtItm() { return mGtItm; } public: /* 0x000 */ u8 field_0x0[4]; diff --git a/include/d/kankyo/d_kankyo.h b/include/d/kankyo/d_kankyo.h index b4c0ab2947b..8c48817384f 100644 --- a/include/d/kankyo/d_kankyo.h +++ b/include/d/kankyo/d_kankyo.h @@ -50,6 +50,7 @@ static void dKy_twilight_camelight_set(); u8 dKy_shadow_mode_check(u8 mode); void dKy_shadow_mode_set(u8 mode); void dKy_shadow_mode_reset(u8 mode); +void dKy_Itemgetcol_chg_on(); struct LIGHT_INFLUENCE { /* 0x00 */ cXyz mPosition; diff --git a/include/d/meter/d_meter2_info.h b/include/d/meter/d_meter2_info.h index 50689ce936d..1fce97bb83a 100644 --- a/include/d/meter/d_meter2_info.h +++ b/include/d/meter/d_meter2_info.h @@ -30,7 +30,7 @@ class J2DPicture; class dMeterMap_c; enum dMeter2Info_warpStatus { - /* 0x3 */ WARP_DECIDED = 3, + /* 0x3 */ WARP_STATUS_DECIDED_e = 3, }; class dMeter2Info_c { diff --git a/include/rel/d/a/d_a_canoe/d_a_canoe.h b/include/rel/d/a/d_a_canoe/d_a_canoe.h index c22727bdda0..70ffc9d0a79 100644 --- a/include/rel/d/a/d_a_canoe/d_a_canoe.h +++ b/include/rel/d/a/d_a_canoe/d_a_canoe.h @@ -30,6 +30,7 @@ public: bool checkJumpRideFlg() { return mJumpRideFlg; } void incShapeOffsetY(f32 offset) { mShapeOffsetY += offset; } void incShapeAngleZ(s16 incZ) { shape_angle.z += incZ; } + void onRodID(unsigned int i_rodID) { mRodID = i_rodID; } /* 0x0568 */ request_of_phase_process_class mPhaseReq; /* 0x0570 */ J3DModel* mpModel; diff --git a/include/rel/d/a/d_a_cow/d_a_cow.h b/include/rel/d/a/d_a_cow/d_a_cow.h index 04e0c1904f6..e46d9f00701 100644 --- a/include/rel/d/a/d_a_cow/d_a_cow.h +++ b/include/rel/d/a/d_a_cow/d_a_cow.h @@ -1,6 +1,98 @@ #ifndef D_A_COW_H #define D_A_COW_H -#include "dolphin/types.h" +#include "f_op/f_op_actor_mng.h" + +class daCow_c : public fopAc_ac_c { +public: + /* 806585CC */ void calcRunAnime(int); + /* 80658730 */ void setBck(int, u8, f32, f32); + /* 806587D4 */ void checkBck(int); + /* 80658830 */ void setEffect(); + /* 80658AA4 */ void isChaseCowGame(); + /* 80658B10 */ void setCarryStatus(); + /* 80658C18 */ void setActetcStatus(); + /* 80658C78 */ void checkNadeNadeFinish(); + /* 80658CA4 */ void checkNadeNade(); + /* 80658CD0 */ void setSeSnort(); + /* 80658D3C */ void setRushVibration(int); + /* 80658DB8 */ void checkThrow(); + /* 80658E98 */ void setBodyAngle(s16); + /* 80658F94 */ void setBodyAngle2(s16); + /* 806590E8 */ void checkProcess(void (daCow_c::*)()); + /* 80659114 */ void setProcess(void (daCow_c::*)(), int); + /* 806591BC */ void damage_check(); + /* 8065945C */ void setEnterCow20(); + /* 80659540 */ void setEnterCow10(); + /* 80659630 */ void setGroundAngle(); + /* 80659970 */ void checkRun(); + /* 806599C0 */ void checkNearCowRun(); + /* 80659ADC */ void action_wait(); + /* 8065A0E8 */ void action_eat(); + /* 8065A594 */ void action_moo(); + /* 8065A8A4 */ void action_shake(); + /* 8065ACC8 */ void checkNearWolf(); + /* 8065AD2C */ void checkPlayerWait(); + /* 8065ADB0 */ void checkPlayerSurprise(); + /* 8065AE88 */ void checkPlayerPos(); + /* 8065B034 */ void checkBeforeBg(); + /* 8065B760 */ void checkOutOfGate(cXyz); + /* 8065B8A8 */ void getCowshedAngle(); + /* 8065B8D8 */ void getCowshedDist(); + /* 8065BA30 */ void checkCowIn(f32, f32); + /* 8065BB34 */ void checkCowInOwn(int); + /* 8065BC68 */ void action_run(); + /* 8065C32C */ void checkCurringPen(); + /* 8065C508 */ void setCowInCage(); + /* 8065C680 */ void setEnterCount(); + /* 8065C70C */ void action_enter(); + /* 8065CFBC */ void isAngry(); + /* 8065D03C */ void isGuardFad(); + /* 8065D0B8 */ void setAngryHit(); + /* 8065D17C */ void checkBeforeBgAngry(s16); + /* 8065D230 */ void setRedTev(); + /* 8065D29C */ void setAngryTurn(); + /* 8065D2F0 */ void action_angry(); + /* 8065DC08 */ void calcCatchPos(f32, int); + /* 8065DE70 */ void executeCrazyWait(); + /* 8065DF40 */ void executeCrazyDash(); + /* 8065E6BC */ void initCrazyBeforeCatch(int); + /* 8065E6E8 */ void executeCrazyBeforeCatch(); + /* 8065E7D0 */ void initCrazyCatch(int); + /* 8065E888 */ void executeCrazyCatch(); + /* 8065EAF4 */ void initCrazyThrow(int); + /* 8065EBF0 */ void executeCrazyThrow(); + /* 8065F088 */ void initCrazyAttack(int); + /* 8065F144 */ void executeCrazyAttack(); + /* 8065F308 */ void initCrazyAway(int); + /* 8065F37C */ void executeCrazyAway(); + /* 8065F6E0 */ void executeCrazyEnd(); + /* 8065F744 */ void initCrazyBack(int); + /* 8065F7DC */ void executeCrazyBack(); + /* 8065FE50 */ void action_crazy(); + /* 8066010C */ void executeCrazyBack2(); + /* 80660544 */ void action_thrown(); + /* 806607B8 */ void checkWolfBusters(); + /* 806608F0 */ void action_wolf(); + /* 806612DC */ void action_damage(); + /* 806613EC */ void action(); + /* 80661580 */ void setMtx(); + /* 806615EC */ void setAttnPos(); + /* 80661720 */ void setCollisions(); + /* 80661940 */ void Execute(); + /* 80661AF0 */ void CreateHeap(); + /* 80661D24 */ void createHeapCallBack(fopAc_ac_c*); + /* 80661D44 */ void initialize(); + /* 80662228 */ void create(); + /* 80662710 */ void ctrlJoint(J3DJoint*, J3DModel*); + /* 80662920 */ void ctrlJointCallBack(J3DJoint*, int); + /* 8066296C */ void Draw(); + /* 80662BE4 */ void Delete(); + /* 80662D70 */ void getShapeAngle(); + + void setNaderu() { field_0x568 |= 0x80; } + + /* 0x568 */ u16 field_0x568; +}; #endif /* D_A_COW_H */ diff --git a/include/rel/d/a/d_a_horse/d_a_horse.h b/include/rel/d/a/d_a_horse/d_a_horse.h index 30b13495153..59b434f4b8c 100644 --- a/include/rel/d/a/d_a_horse/d_a_horse.h +++ b/include/rel/d/a/d_a_horse/d_a_horse.h @@ -195,6 +195,7 @@ public: bool checkLand() const { return field_0x16b4 == 5 && field_0x171a == 0; } bool checkGetOff() const { return fabsf(speedF) < 3.0f; } bool checkEnemySearch() { return checkResetStateFlg0(ENEMY_SEARCH); } + bool checkOriginalDemo() const { return field_0x16b8 == 3; } void onTagJump(f32 param_0, f32 param_1, f32 param_2) { field_0x1768 = param_0; diff --git a/include/rel/d/a/d_a_midna/d_a_midna.h b/include/rel/d/a/d_a_midna/d_a_midna.h index 9d65fc96004..ac1347e7ad7 100644 --- a/include/rel/d/a/d_a_midna/d_a_midna.h +++ b/include/rel/d/a/d_a_midna/d_a_midna.h @@ -35,6 +35,7 @@ public: }; enum daMidna_FLG1 { + FLG1_UNK_100 = 0x100, FLG1_FORCE_NORMAL_COL = 8, FLG1_FORCE_TIRED_COL = 4, FLG1_SHADOW_MODEL_DRAW_DEMO_FORCE = 2, @@ -96,6 +97,8 @@ public: void onEndResetStateFlg0(daMidna_ERFLG0 pFlg) { mEndResetStateFlg0 |= pFlg; } void onStateFlg0(daMidna_FLG0 i_flag) { mStateFlg0 |= i_flag; } void offStateFlg0(daMidna_FLG0 i_flag) { mStateFlg0 &= ~i_flag; } + void onStateFlg1(daMidna_FLG1 i_flag) { mStateFlg1 |= i_flag; } + void offStateFlg1(daMidna_FLG1 i_flag) { mStateFlg1 &= ~i_flag; } u32 checkStateFlg0(daMidna_FLG0 flag) const { return mStateFlg0 & flag; } u32 checkStateFlg1(daMidna_FLG1 flag) const { return mStateFlg1 & flag; } void setFaceNum(int num) { mFaceNum = num; } @@ -130,6 +133,10 @@ public: onStateFlg0(FLG0_UNK_80000000); } + void onSideWarp() { + onStateFlg1(FLG1_UNK_100); + } + bool checkReturnAnime() const { return field_0x5e4[0].getIdx() == 0x1CA; } diff --git a/include/rel/d/a/d_a_tbox/d_a_tbox.h b/include/rel/d/a/d_a_tbox/d_a_tbox.h index e58d779d21c..0ad9312400b 100644 --- a/include/rel/d/a/d_a_tbox/d_a_tbox.h +++ b/include/rel/d/a/d_a_tbox/d_a_tbox.h @@ -116,7 +116,8 @@ public: /* 80495AF0 */ int Draw(); /* 80495C9C */ int Delete(); /* 804961B0 */ int Create(); - /* 804961B8 */ bool checkSmallTbox(); + + /* 804961B8 */ virtual BOOL checkSmallTbox(); u32 getEvent() { return fopAcM_GetParam(this) >> 24; } int getShapeType() { return (fopAcM_GetParam(this) >> 20) & 0xf; } diff --git a/include/rel/d/a/kytag/d_a_kytag04/d_a_kytag04.h b/include/rel/d/a/kytag/d_a_kytag04/d_a_kytag04.h index 1ac6aa03b81..ce09fb7edf9 100644 --- a/include/rel/d/a/kytag/d_a_kytag04/d_a_kytag04.h +++ b/include/rel/d/a/kytag/d_a_kytag04/d_a_kytag04.h @@ -1,6 +1,33 @@ #ifndef D_A_KYTAG04_H #define D_A_KYTAG04_H -#include "dolphin/types.h" +#include "f_op/f_op_actor_mng.h" + +class kytag04_class : public fopAc_ac_c { +public: + /* 0x568 */ J3DModel* mpModel; + /* 0x56C */ mDoExt_btkAnm mBtk; + /* 0x584 */ mDoExt_brkAnm mBrk; + /* 0x59C */ request_of_phase_process_class mPhaseReq; + /* 0x5A4 */ JPABaseEmitter* field_0x5a4; + /* 0x5A8 */ JPABaseEmitter* field_0x5a8; + /* 0x5AC */ JPABaseEmitter* field_0x5ac; + /* 0x5B0 */ int mStageNo; + /* 0x5B4 */ u8 field_0x5b4; + /* 0x5B5 */ u8 field_0x5b5; + /* 0x5B6 */ u8 field_0x5b6; + /* 0x5B7 */ u8 field_0x5b7; + /* 0x5B8 */ u8 field_0x5b8; + /* 0x5B9 */ u8 field_0x5b9; + /* 0x5BC */ u32 mExitID; + /* 0x5C0 */ int field_0x5c0; + /* 0x5C4 */ u8 field_0x5c4; + /* 0x5C5 */ u8 field_0x5c5; + /* 0x5C6 */ u8 mNeedDropNum; + /* 0x5C8 */ f32 field_0x5c8; + /* 0x5CC */ int field_0x5cc; + /* 0x5D0 */ u8 field_0x5d0; + /* 0x5D1 */ u8 field_0x5d1; +}; #endif /* D_A_KYTAG04_H */ diff --git a/include/rel/d/a/tag/d_a_tag_Lv6Gate/d_a_tag_Lv6Gate.h b/include/rel/d/a/tag/d_a_tag_Lv6Gate/d_a_tag_Lv6Gate.h index 599421331cc..b2714592dbe 100644 --- a/include/rel/d/a/tag/d_a_tag_Lv6Gate/d_a_tag_Lv6Gate.h +++ b/include/rel/d/a/tag/d_a_tag_Lv6Gate/d_a_tag_Lv6Gate.h @@ -1,6 +1,19 @@ #ifndef D_A_TAG_LV6GATE_H #define D_A_TAG_LV6GATE_H -#include "dolphin/types.h" +#include "f_op/f_op_actor_mng.h" + +class daTagLv6Gate_c : public fopAc_ac_c { +public: + /* 80D4F8B8 */ void createHeap(); + /* 80D4FBD8 */ void create(); + /* 80D4FEDC */ void execute(); + /* 80D506AC */ void draw(); + + void stabMasterSword() { field_0x76a = 1; } + + /* 0x568 */ u8 field_0x568[0x76A - 0x568]; + /* 0x76A */ u8 field_0x76a; +}; #endif /* D_A_TAG_LV6GATE_H */ diff --git a/include/rel/d/a/tag/d_a_tag_kmsg/d_a_tag_kmsg.h b/include/rel/d/a/tag/d_a_tag_kmsg/d_a_tag_kmsg.h index f6c95d40db6..3c46b5173cf 100644 --- a/include/rel/d/a/tag/d_a_tag_kmsg/d_a_tag_kmsg.h +++ b/include/rel/d/a/tag/d_a_tag_kmsg/d_a_tag_kmsg.h @@ -1,6 +1,34 @@ #ifndef D_A_TAG_KMSG_H #define D_A_TAG_KMSG_H -#include "dolphin/types.h" +#include "f_op/f_op_actor_mng.h" + +struct daTag_KMsg_c : public fopAc_ac_c { +public: + /* 8048DE78 */ void create(); + /* 8048DFDC */ void Delete(); + /* 8048E010 */ void Execute(); + /* 8048E8B8 */ bool Draw(); + /* 8048E8C0 */ void isDelete(); + /* 8048EA30 */ ~daTag_KMsg_c(); + + void stabMasterSword() { field_0x5c2 = 1; } + + int getType() { + int param = fopAcM_GetParam(this) >> 0x18; + int type; + + if (param == 0xFF) { + type = 0; + } else { + type = param; + } + + return type; + } + + /* 0x568 */ u8 field_0x568[0x5C2 - 0x568]; + /* 0x5C2 */ u8 field_0x5c2; +}; #endif /* D_A_TAG_KMSG_H */ diff --git a/include/rel/d/a/tag/d_a_tag_mwait/d_a_tag_mwait.h b/include/rel/d/a/tag/d_a_tag_mwait/d_a_tag_mwait.h index 89da5922532..7da50c0ec7a 100644 --- a/include/rel/d/a/tag/d_a_tag_mwait/d_a_tag_mwait.h +++ b/include/rel/d/a/tag/d_a_tag_mwait/d_a_tag_mwait.h @@ -10,6 +10,8 @@ public: /* 80D5C01C */ ~daTagMwait_c(); /* 80D5C0A8 */ int execute(); + bool checkEndMessage() {return i_fopAcM_isSwitch(this, mEnterSw); } + /* 0x568 */ u8 mOnSw; /* 0x569 */ u8 mEnterSw; /* 0x56A */ bool mInitMsgFlow; diff --git a/include/rel/d/a/tag/d_a_tag_wljump/d_a_tag_wljump.h b/include/rel/d/a/tag/d_a_tag_wljump/d_a_tag_wljump.h index b9aca220c62..a9f4d8d2d76 100644 --- a/include/rel/d/a/tag/d_a_tag_wljump/d_a_tag_wljump.h +++ b/include/rel/d/a/tag/d_a_tag_wljump/d_a_tag_wljump.h @@ -6,12 +6,21 @@ struct dPath; -struct daTagWljump_c : fopAc_ac_c { +class daTagWljump_c : public fopAc_ac_c { +public: /* 80D64EB8 */ int create(); /* 80D65004 */ ~daTagWljump_c(); /* 80D65090 */ int execute(); /* 80D6589C */ int draw(); + const cXyz* getLockPos() const { + if (field_0x568 < 0) { + return NULL; + } else { + return &mEyePos; + } + } + /* 0x568 */ s8 field_0x568; /* 0x568 */ s8 field_0x569; /* 0x568 */ u8 field_0x56a; diff --git a/rel/d/a/d_a_cow/d_a_cow.cpp b/rel/d/a/d_a_cow/d_a_cow.cpp index e8d206e6861..f192cdf03f7 100644 --- a/rel/d/a/d_a_cow/d_a_cow.cpp +++ b/rel/d/a/d_a_cow/d_a_cow.cpp @@ -3,7 +3,8 @@ // Translation Unit: d_a_cow // -#include "rel/d/a/d_a_cow/d_a_cow.h" +// #include "rel/d/a/d_a_cow/d_a_cow.h" +#include "dolphin/types.h" #include "dol2asm.h" // diff --git a/rel/d/a/kytag/d_a_kytag04/d_a_kytag04.cpp b/rel/d/a/kytag/d_a_kytag04/d_a_kytag04.cpp index bd8ae52701b..5ee006a7686 100644 --- a/rel/d/a/kytag/d_a_kytag04/d_a_kytag04.cpp +++ b/rel/d/a/kytag/d_a_kytag04/d_a_kytag04.cpp @@ -3,7 +3,8 @@ // Translation Unit: d_a_kytag04 // -#include "rel/d/a/kytag/d_a_kytag04/d_a_kytag04.h" +// #include "rel/d/a/kytag/d_a_kytag04/d_a_kytag04.h" +#include "dolphin/types.h" #include "dol2asm.h" // diff --git a/rel/d/a/tag/d_a_tag_Lv6Gate/d_a_tag_Lv6Gate.cpp b/rel/d/a/tag/d_a_tag_Lv6Gate/d_a_tag_Lv6Gate.cpp index ce914926b08..b06f9ff64af 100644 --- a/rel/d/a/tag/d_a_tag_Lv6Gate/d_a_tag_Lv6Gate.cpp +++ b/rel/d/a/tag/d_a_tag_Lv6Gate/d_a_tag_Lv6Gate.cpp @@ -3,7 +3,8 @@ // Translation Unit: d_a_tag_Lv6Gate // -#include "rel/d/a/tag/d_a_tag_Lv6Gate/d_a_tag_Lv6Gate.h" +// #include "rel/d/a/tag/d_a_tag_Lv6Gate/d_a_tag_Lv6Gate.h" +#include "dolphin/types.h" #include "dol2asm.h" // diff --git a/rel/d/a/tag/d_a_tag_kmsg/d_a_tag_kmsg.cpp b/rel/d/a/tag/d_a_tag_kmsg/d_a_tag_kmsg.cpp index a80dece7872..8418cbe37c7 100644 --- a/rel/d/a/tag/d_a_tag_kmsg/d_a_tag_kmsg.cpp +++ b/rel/d/a/tag/d_a_tag_kmsg/d_a_tag_kmsg.cpp @@ -3,7 +3,8 @@ // Translation Unit: d_a_tag_kmsg // -#include "rel/d/a/tag/d_a_tag_kmsg/d_a_tag_kmsg.h" +// #include "rel/d/a/tag/d_a_tag_kmsg/d_a_tag_kmsg.h" +#include "dolphin/types.h" #include "dol2asm.h" // diff --git a/src/d/a/d_a_alink.cpp b/src/d/a/d_a_alink.cpp index d8a7f51392f..a861df8b208 100644 --- a/src/d/a/d_a_alink.cpp +++ b/src/d/a/d_a_alink.cpp @@ -10,6 +10,7 @@ #include "JSystem/JKernel/JKRExpHeap.h" #include "JSystem/JMath/JMath.h" #include "SSystem/SComponent/c_math.h" +#include "d/a/d_a_npc.h" #include "d/d_item.h" #include "d/d_procname.h" #include "d/meter/d_meter2_draw.h" @@ -20,14 +21,18 @@ #include "rel/d/a/d_a_crod/d_a_crod.h" #include "rel/d/a/d_a_horse/d_a_horse.h" #include "rel/d/a/d_a_mg_rod/d_a_mg_rod.h" +#include "rel/d/a/d_a_midna/d_a_midna.h" +#include "rel/d/a/d_a_mirror/d_a_mirror.h" #include "rel/d/a/d_a_scene_exit/d_a_scene_exit.h" #include "rel/d/a/d_a_spinner/d_a_spinner.h" +#include "rel/d/a/d_a_tbox/d_a_tbox.h" #include "rel/d/a/e/d_a_e_wb/d_a_e_wb.h" #include "rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h" +#include "rel/d/a/tag/d_a_tag_Lv6Gate/d_a_tag_Lv6Gate.h" +#include "rel/d/a/tag/d_a_tag_kmsg/d_a_tag_kmsg.h" #include "rel/d/a/tag/d_a_tag_magne/d_a_tag_magne.h" #include "rel/d/a/tag/d_a_tag_mist/d_a_tag_mist.h" -#include "rel/d/a/d_a_mirror/d_a_mirror.h" -#include "rel/d/a/d_a_midna/d_a_midna.h" +#include "rel/d/a/tag/d_a_tag_wljump/d_a_tag_wljump.h" // // Types: @@ -51,10 +56,6 @@ struct daObj { daObjMovebox::Act_c::Prm_e); }; -struct daNpcT_ActorMngr_c { - /* 80145708 */ void getActorP(); -}; - struct JAISeq { /* 802A0A8C */ JAISeq(JAISeqMgr*, JAISoundStrategyMgr*); }; @@ -5698,57 +5699,41 @@ COMPILER_STRIP_GATE(0x8039190C, &daAlink_c::m_handRightInSidePos); /* 80391918-80391924 01DF78 000C+00 0/1 0/0 0/0 .rodata horseLocalLeft$17678 */ #pragma push #pragma force_active on -static const Vec horseLocalLeft = { - 20.0f, 0.0f, 0.0f -}; +static const Vec horseLocalLeft = {20.0f, 0.0f, 0.0f}; #pragma pop /* 80391924-80391930 01DF84 000C+00 0/1 0/0 0/0 .rodata horseLocalRight$17679 */ #pragma push #pragma force_active on -static const Vec horseLocalRight = { - -20.0f, 0.0f, 0.0f -}; +static const Vec horseLocalRight = {-20.0f, 0.0f, 0.0f}; #pragma pop /* 80391930-8039193C 01DF90 000C+00 0/1 0/0 0/0 .rodata horseLocalBack$17680 */ #pragma push #pragma force_active on -static const Vec horseLocalBack = { - 0.0f, 0.0f, -200.0f -}; +static const Vec horseLocalBack = {0.0f, 0.0f, -200.0f}; #pragma pop /* 8039193C-80391948 01DF9C 000C+00 0/1 0/0 0/0 .rodata boarLocalLeft$17681 */ #pragma push #pragma force_active on -static const Vec boarLocalLeft = { - 200.0f, 0.0f, -18.0f -}; +static const Vec boarLocalLeft = {200.0f, 0.0f, -18.0f}; #pragma pop /* 80391948-80391954 01DFA8 000C+00 0/1 0/0 0/0 .rodata boarLocalRight$17682 */ #pragma push #pragma force_active on -static const Vec boarLocalRight = { - -200.0f, 0.0f, -18.0f -}; +static const Vec boarLocalRight = {-200.0f, 0.0f, -18.0f}; #pragma pop /* 80391954-80391960 01DFB4 000C+00 1/1 0/0 0/0 .rodata localHorseRun$18095 */ -static const Vec localHorseRun_18095 = { - 15.0f, 0.0f, -45.0f -}; +static const Vec localHorseRun_18095 = {15.0f, 0.0f, -45.0f}; /* 80391960-8039196C 01DFC0 000C+00 1/1 0/0 0/0 .rodata localHorseRun$18103 */ -static const Vec localHorseRun_18103 = { - 30.0f, 0.0f, -10.0f -}; +static const Vec localHorseRun_18103 = {30.0f, 0.0f, -10.0f}; /* 8039196C-80391978 01DFCC 000C+00 1/1 0/0 0/0 .rodata localOffset$18237 */ -static const Vec localOffset_18237 = { - -30.0f, -18.0f, 0.0f -}; +static const Vec localOffset_18237 = {-30.0f, -18.0f, 0.0f}; /* 80391978-80391984 01DFD8 000C+00 1/1 0/0 0/0 .rodata @18938 */ SECTION_RODATA static u8 const lit_18938[12] = { @@ -5912,8 +5897,8 @@ static u32 const heartPieceMessage[5] = {0x86, 0x9C, 0x9D, 0x9E, 0x9F}; /* 80391BA0-80391BAC 01E200 000C+00 0/1 0/0 0/0 .rodata effName$39419 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const effName_39419[12] = { - 0x09, 0xF5, 0x09, 0xF6, 0x09, 0xF7, 0x09, 0xF8, 0x09, 0xF9, 0x09, 0xFA, +SECTION_RODATA static u16 const effName_39419[] = { + 0x09F5, 0x09F6, 0x09F7, 0x09F8, 0x09F9, 0x09FA, }; COMPILER_STRIP_GATE(0x80391BA0, &effName_39419); #pragma pop @@ -11154,6 +11139,105 @@ SECTION_DATA static void* lit_4831[3] = { #pragma pop /* 803B22E0-803B2754 00F400 0474+00 1/2 0/0 0/0 .data m_demoInitTable__9daAlink_c */ +#ifdef NONMATCHING +daAlink_procFunc daAlink_c::m_demoInitTable[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + &daAlink_c::commonWaitTurnInit, + NULL, + NULL, + NULL, + NULL, + &daAlink_c::procCoOpenTreasureInit, + &daAlink_c::procCoGetItemInit, + &daAlink_c::procCoUnequipInit, + &daAlink_c::commonGrabPutInit, + NULL, + NULL, + NULL, + NULL, + NULL, + &daAlink_c::procMonkeyMoveInit, + &daAlink_c::procCoLookAroundInit, + NULL, + NULL, + NULL, + NULL, + &daAlink_c::procCoTurnBackInit, + NULL, + NULL, + &daAlink_c::procDemoBoomerangCatchInit, + &daAlink_c::procHawkCatchInit, + &daAlink_c::procSwordUnequipSpInit, + NULL, + &daAlink_c::procCoDemoPushPullWaitInit, + &daAlink_c::procCoDemoPushMoveInit, + &daAlink_c::procBossAtnWaitInit, + &daAlink_c::procDoorOpenInit, + NULL, + &daAlink_c::procTradeItemOutInit, + NULL, + &daAlink_c::procKandelaarSwingInit, + &daAlink_c::procFrontRollInit, + &daAlink_c::procCrouchInit, + NULL, + NULL, + NULL, + NULL, + &daAlink_c::procCoCaughtInit, + &daAlink_c::procLookUpInit, + &daAlink_c::procLookUpToGetItemInit, + &daAlink_c::procHandPatInit, + &daAlink_c::procWolfMidnaRideShockInit, + &daAlink_c::procSumouShikoInit, + &daAlink_c::procCoFogDeadInit, + &daAlink_c::procWolfSmellWaitInit, + NULL, + NULL, + &daAlink_c::procWolfCargoCarryInit, + &daAlink_c::procCoMetamorphoseInit, + &daAlink_c::procCoMetamorphoseInit, + &daAlink_c::procHorseGetKeyInit, + &daAlink_c::procCoNodInit, + &daAlink_c::procCoGlareInit, + &daAlink_c::procCoEyeAwayInit, + &daAlink_c::procGoatStopReadyInit, + &daAlink_c::procCoGetReadySitInit, + NULL, + &daAlink_c::procCoTwGateInit, + &daAlink_c::procFmChainStrongPullInit, + &daAlink_c::procWolfSnowEscapeInit, + &daAlink_c::procZoraMoveInit, + &daAlink_c::procCoMetamorphoseOnlyInit, + &daAlink_c::procCoMetamorphoseOnlyInit, + &daAlink_c::procLookAroundTurnInit, + NULL, + &daAlink_c::procCoQuakeWaitInit, + &daAlink_c::procGuardAttackInit, + &daAlink_c::procSwordReadyInit, + &daAlink_c::procDungeonWarpInit, + &daAlink_c::procDungeonWarpSceneStartInit, + &daAlink_c::procMasterSwordStickInit, + &daAlink_c::procMasterSwordPullInit, + &daAlink_c::procCutDownInit, + NULL, + &daAlink_c::procCutHeadInit, + NULL, + NULL, + &daAlink_c::procCutLargeJumpInit, + &daAlink_c::procCutFastReadyInit, + &daAlink_c::procCopyRodReviveInit, + &daAlink_c::procSwordPushInit, + &daAlink_c::procGanonFinishInit, + NULL, + NULL, + &daAlink_c::procHorseLookDownInit, + NULL, +}; +#else SECTION_DATA u8 daAlink_c::m_demoInitTable[1140] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -11228,6 +11312,7 @@ SECTION_DATA u8 daAlink_c::m_demoInitTable[1140] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; +#endif /* 803B2754-803B2798 00F874 0044+00 0/1 0/0 0/0 .data l_cylSrc */ static dCcD_SrcCyl l_cylSrc = { @@ -11252,12 +11337,10 @@ static dCcD_SrcSph l_sphSrc = { {dCcD_SE_NONE, 6, 0, 0, {0}}, {0}, }, - { - { - {0.0f, 0.0f, 0.0f}, - 40.0f, - } - }, + {{ + {0.0f, 0.0f, 0.0f}, + 40.0f, + }}, }; /* 803B27D8-803B281C 00F8F8 0044+00 0/1 0/0 0/0 .data l_atCylSrc */ @@ -11283,13 +11366,11 @@ static dCcD_SrcCps l_atCpsSrc = { {dCcD_SE_NONE, 0, 0, 0, {0}}, {0}, }, - { - { - {0.0f, 0.0f, 0.0f}, - {0.0f, 0.0f, 0.0f}, - 20.0f, - } - }, + {{ + {0.0f, 0.0f, 0.0f}, + {0.0f, 0.0f, 0.0f}, + 20.0f, + }}, }; /* 803B2868-803B2880 00F988 0018+00 1/0 0/0 0/0 .data l_jntColPos0 */ @@ -13976,16 +14057,99 @@ asm void daAlink_c::commonDoubleAnime(J3DAnmTransform* param_0, J3DAnmTransform* /* 800ACA14-800ACD40 0A7354 032C+00 14/14 0/0 0/0 .text * setDoubleAnime__9daAlink_cFfffQ29daAlink_c11daAlink_ANMQ29daAlink_c11daAlink_ANMif */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::setDoubleAnime(f32 i_blendRate, f32 i_anmSpeedA, f32 i_anmSpeedB, + daAlink_c::daAlink_ANM i_anmA, daAlink_c::daAlink_ANM i_anmB, + int param_5, f32 i_morf) { +#ifdef DEBUG + if (checkWolf()) { + // "Player is Wolf, but setting Link animation\n" + OSReport("狼なのにリンクアニメ設定\n"); + JUT_ASSERT(8591, 0); + } +#endif + + J3DAnmTransform* under_bckA; + J3DAnmTransform* upper_bckA; + J3DAnmTransform* under_bckB; + J3DAnmTransform* upper_bckB; + + int temp_r3 = getUnderUpperAnime(i_anmA, &under_bckA, &upper_bckA, 0, 0x2C00); + int temp_r0 = getUnderUpperAnime(i_anmB, &under_bckB, &upper_bckB, 1, 0x2C00); + + if ((temp_r3 | temp_r0) != 0 && i_morf < 0.0f) { + if (i_anmA == ANM_WAIT_B && i_checkModeFlg(1)) { + i_morf = daAlinkHIO_move_c0::m.mWaitBInterpolation; + } else { + i_morf = daAlinkHIO_basic_c0::m.mAnmBlendFactor; + } + + if (i_checkNoResetFlg0(FLG0_UNDERWATER)) { + if (checkZoraWearAbility()) { + i_morf *= (1.0f / daAlinkHIO_magneBoots_c0::m.mZoraWaterAnmSpeed); + } else { + i_morf *= (1.0f / daAlinkHIO_magneBoots_c0::m.mWaterStartWalkAnmRate); + } + } + } else if (i_anmA == ANM_WAIT_B && i_checkModeFlg(1) && i_morf > 0.0f) { + i_morf = daAlinkHIO_move_c0::m.mWaitBInterpolation; + + if (i_checkNoResetFlg0(FLG0_UNDERWATER)) { + if (checkZoraWearAbility()) { + i_morf *= (1.0f / daAlinkHIO_magneBoots_c0::m.mZoraWaterAnmSpeed); + } else { + i_morf *= (1.0f / daAlinkHIO_magneBoots_c0::m.mWaterStartWalkAnmRate); + } + } + } + + commonDoubleAnime(under_bckA, upper_bckA, under_bckB, upper_bckB, i_blendRate, i_anmSpeedA, + i_anmSpeedB, param_5); + if (i_morf >= 0.0f) { + field_0x2060->initOldFrameMorf(i_morf, 0, 35); + } + + setHandIndex(i_anmA); + + if (i_checkReinRide()) { + if (checkRestHPAnime() && + (checkUnderMove0BckNoArc(ANM_HORSE_WAIT) || checkUnderMove0BckNoArc(ANM_HORSE_WALK_A) || + checkUnderMove0BckNoArc(ANM_HORSE_WALK_B))) + { + if (checkNoUpperAnime()) { + setUpperAnimeBaseMorf(0x263, daAlinkHIO_horse_c0::m.mTiredWaitInterpolation); + } + + setFaceBasicAnime(ANM_WAIT_TIRED); + setTiredVoice(&mUpperFrameCtrl[2]); + } else { + if (checkHorseTiredAnime()) { + resetUpperAnime(UPPER_2, 3.0f); + } + + setFaceBasicAnime(i_anmA); + } + } else if ((i_anmB == ANM_WALK_HEAVY && i_anmA == ANM_WAIT) || i_anmB == ANM_HORSE_DASH_B) { + setFaceBasicAnime(i_anmB); + } else { + setFaceBasicAnime(i_anmA); + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::setDoubleAnime(f32 param_0, f32 param_1, f32 param_2, - daAlink_c::daAlink_ANM param_3, daAlink_c::daAlink_ANM param_4, - int param_5, f32 param_6) { +asm int daAlink_c::setDoubleAnime(f32 param_0, f32 param_1, f32 param_2, + daAlink_c::daAlink_ANM param_3, daAlink_c::daAlink_ANM param_4, + int param_5, f32 param_6) { nofralloc #include "asm/d/a/d_a_alink/setDoubleAnime__9daAlink_cFfffQ29daAlink_c11daAlink_ANMQ29daAlink_c11daAlink_ANMif.s" } #pragma pop +#endif /* 800ACD40-800ACF80 0A7680 0240+00 2/2 0/0 0/0 .text * commonSingleAnime__9daAlink_cFP15J3DAnmTransformP15J3DAnmTransformffs */ @@ -15349,6 +15513,144 @@ f32 daAlink_c::getFrontRollRate() { /* 800B4B7C-800B5284 0AF4BC 0708+00 2/2 0/0 0/0 .text decideCommonDoStatus__9daAlink_cFv */ +// almost, small branch issues and need fix for i_checkAttentionLock +#ifdef NONMATCHING +void daAlink_c::decideCommonDoStatus() { + if (!i_checkFmChainGrabAnime() && i_dComIfGp_getDoStatus() == 0) { + bool temp_r3 = checkStageName("R_SP127"); + + if (checkRoomOnly() && !i_checkWolf() && !temp_r3) { + if ((checkNoUpperAnime() || checkIronBallWaitAnime()) && + (mEquipItem != NO_ITEM && i_checkModeFlg(4) && mEquipItem != 0x102)) + { + if (checkCopyRodControllAnime()) { + setDoStatus(0x2A); + } else { + setDoStatus(4); + } + } else if (mFastShotTime != 0) { + setDoStatus(0x12); + } + } else if (i_checkWolf()) { + if (checkDownAttackState()) { + setDoStatusEmphasys(0x30); + } else if (checkCutHeadState()) { + setDoStatusEmphasys(0x77); + } else if (checkWolfSideStep()) { + setDoStatusEmphasys(0x19); + } else { + if (mTargetedActor != NULL) { + if (fopAcM_GetName(mTargetedActor) == PROC_Tag_Wljump) { + if (static_cast(mTargetedActor)->getLockPos() != NULL) { + if (!getMidnaActor()->checkNoInput()) { + setDoStatus(0x93); + } + + i_onResetFlg0(RFLG0_UNK_20000); + field_0x3738 = + *static_cast(mTargetedActor)->getLockPos(); + } + } else { + setDoStatus(0x8B); + } + } else if (i_checkAttentionLock()) { + setDoStatus(0x8B); + } else if (field_0x30d2 == 0 && + (field_0x33a8 > getFrontRollRate() || i_checkAttentionLock())) + { + setDoStatus(9); + } + } + + if (checkNotJumpSinkLimit() && + (i_dComIfGp_getDoStatus() == 0x8B || i_dComIfGp_getDoStatus() == 0x30 || + i_dComIfGp_getDoStatus() == 0x77 || i_dComIfGp_getDoStatus() == 0x19 || + i_dComIfGp_getDoStatus() == 9 || i_dComIfGp_getDoStatus() == 0x93)) + { + setDoStatus(0); + } + } else { + int direction = getDirectionFromShapeAngle(); + f32 temp_f31 = getFrontRollRate(); + + if (i_checkAttentionLock() || + (mTargetedActor != NULL && (mTargetedActor == mThrowBoomerangAcKeep.getActor() || + mTargetedActor == mCopyRodAcKeep.getActor()))) + { + if (checkInputOnR() && direction != DIR_FORWARD) { + if (mEquipItem == 0x103 && checkDownAttackState()) { + setDoStatusEmphasys(0x30); + } else if (mEquipItem == 0x103 && checkCutHeadState()) { + setDoStatusEmphasys(0x77); + } else { + setDoStatusEmphasys(0x19); + } + } else if (!i_checkSmallUpperGuardAnime() && + (mEquipItem == 0x103 || mEquipItem == 0x102)) + { + if (mEquipItem == 0x102) { + setDoStatus(0x13); + } else if (mEquipItem == 0x103 && checkDownAttackState()) { + setDoStatusEmphasys(0x30); + } else if (mEquipItem == 0x103 && checkCutHeadState()) { + setDoStatusEmphasys(0x77); + } else { + setDoStatus(0x86); + } + } else { + setDoStatus(0x79); + } + } else if (((checkNoUpperAnime()) || checkIronBallWaitAnime() || + checkCopyRodControllAnime()) && + mEquipItem != NO_ITEM && i_checkModeFlg(4) && field_0x33a8 <= temp_f31) + { + if (mEquipItem == 0x102) { + if (checkAttentionState()) { + setDoStatus(0x13); + } else { + setDoStatus(0x14); + } + } else { + setDoStatus(4); + } + } else if (field_0x33a8 > temp_f31) { + if (mEquipItem == 0x102) { + setDoStatus(0x13); + } else { + setDoStatus(0x79); + } + } else if (mFastShotTime != 0) { + setDoStatus(0x12); + } + + if ((((i_checkMagneBootsOn() || checkIronBallWaitAnime() || checkNotJumpSinkLimit()) || + (i_dComIfGp_getDoStatus() == 0x79 || i_dComIfGp_getDoStatus() == 0x86 || + i_dComIfGp_getDoStatus() == 0x30 || i_dComIfGp_getDoStatus() == 0x77 || + i_dComIfGp_getDoStatus() == 0x19)) || + (i_dComIfGp_getDoStatus() == 0x79 && + (checkKandelaarSwingAnime() || field_0x2fa8 == 6 || checkCopyRodThrowAnime() || + checkBoomerangThrowAnime()))) && + (!i_checkMagneBootsOn() || i_dComIfGp_getDoStatus() != 0x79 || + !cBgW_CheckBGround(mMagneBootsTopVec.y))) + { + if (mEquipItem == 0x42 && i_checkModeFlg(4)) { + setDoStatus(4); + } else { + setDoStatus(0); + } + } + + if (temp_r3 && i_dComIfGp_getDoStatus() == 0x19) { + setDoStatus(0); + } + + if (i_dComIfGp_getDoStatus() == 4 && checkCopyRodControllAnime()) { + setDoStatus(0x2A); + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -15357,16 +15659,147 @@ asm void daAlink_c::decideCommonDoStatus() { #include "asm/d/a/d_a_alink/decideCommonDoStatus__9daAlink_cFv.s" } #pragma pop +#endif /* 800B5284-800B58EC 0AFBC4 0668+00 1/1 0/0 0/0 .text decideDoStatus__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::decideDoStatus() { - nofralloc -#include "asm/d/a/d_a_alink/decideDoStatus__9daAlink_cFv.s" +void daAlink_c::decideDoStatus() { + if (!i_checkFmChainGrabAnime()) { + if (i_checkNoResetFlg0(FLG0_UNK_1000000)) { + setDoStatusEmphasys(0x62); + } + + if (mTargetedActor == NULL && mAttList == NULL && i_checkResetFlg0(RFLG0_UNK_8)) { + setWallGrabStatus(0x15, 2); + + if (field_0x2f91 == 7 || field_0x2f91 == 8 || field_0x2f91 == 6 || field_0x2f91 == 9) { + setDoStatus(0x20); + } + } else { + if (searchFmChainPos()) { + setChainGrabStatus(0x96); + } else if (mAttList != NULL) { + s16 actor_name = fopAcM_GetName(field_0x27f4); + + if (mAttList->mType == 5 || + (mAttList->mType == 6 && + (!i_checkWolf() || static_cast(field_0x27f4)->checkSmallTbox()))) + { + setDoStatus(6); + } else if (mAttList->mType == 7 && actor_name == PROC_KYTAG05) { + setDoStatus(0x89); + } else if (i_checkWolf()) { + if (mAttList->mType == 4 && !fopAcM_checkCarryNow(field_0x27f4) && + fopAcM_CheckCarryType(field_0x27f4, fopAcM_CARRY_LIGHT)) + { + if (actor_name == PROC_B_MGN) { + setDoStatus(0x91); + } else if (actor_name == PROC_Obj_Yobikusa) { + setDoStatusEmphasys(5); + } else if (actor_name == PROC_Obj_Stone) { + setDoStatus(0x47); + } else if (actor_name == PROC_Obj_Drop || actor_name == PROC_Obj_Sword || + actor_name == PROC_Obj_SmallKey) + { + setDoStatusEmphasys(0x39); + } else if (!checkGoatCatchActor(field_0x27f4) && !checkGrabLineCheck()) { + setDoStatusEmphasys(0xC); + } + } else if (mTargetedActor != NULL && + fopAcM_GetName(mTargetedActor) == PROC_B_MGN && + mAttention->getActionBtnB() != NULL && + mAttention->getActionBtnB()->mType == 4 && + mAttention->getActionBtnB()->getActor() == mTargetedActor) + { + setDoStatus(0x91); + } else if (mTargetedActor != NULL && + fopAcM_GetName(mTargetedActor) == PROC_E_YM && + mAttention->getActionBtnB() != NULL && + mAttention->getActionBtnB()->mType == 7 && + mAttention->getActionBtnB()->getActor() == mTargetedActor) + { + i_onEndResetFlg1(ERFLG1_UNK_100000); + if (mWolfEyeUp != 0) { + setWolfDigStatus(2); + } + } else if (mAttList->mType == 7 && field_0x27f4 != NULL) { + if (actor_name == PROC_Obj_Digpl || actor_name == PROC_Obj_Digholl || + actor_name == PROC_Obj_DigSnow || actor_name == PROC_Obj_Lv4DigSand || + actor_name == PROC_E_YM) + { + i_onEndResetFlg1(ERFLG1_UNK_100000); + if (mWolfEyeUp != 0) { + setWolfDigStatus(2); + } + } else if (actor_name == PROC_TAG_HOWL || + actor_name == PROC_Obj_WindStone || + actor_name == PROC_Obj_SmWStone || + actor_name == PROC_Tag_WaraHowl) + { + setDoStatusEmphasys(5); + } else if (actor_name == PROC_KYTAG03) { + setDoStatusEmphasys(0x45); + } + } else if (mTargetedActor != NULL && field_0x27f4 == mTargetedActor && + actor_name == PROC_Obj_Wchain) + { + setDoStatusEmphasys(0x7B); + } else { + setTalkStatus(); + } + } else if (mAttList->mType == 7) { + if ((!checkMagicArmorHeavy() && + (actor_name == PROC_HORSE || actor_name == PROC_E_WB) && + checkReinRideBgCheck()) || + actor_name == PROC_CANOE || actor_name == PROC_Obj_IceLeaf) + { + setDoStatus(0x17); + } else if (actor_name == PROC_COW) { + setDoStatus(0x38); + } else if (actor_name == PROC_Obj_YIblltray) { + setDoStatusEmphasys(0x99); + } else if (actor_name == PROC_Tag_Lv6Gate || + (actor_name == PROC_TAG_KMSG && + static_cast(field_0x27f4)->getType() == 3)) + { + if (!checkEquipAnime() && checkMasterSwordEquip()) { + setDoStatus(0x63); + } + } + } else if (mTargetedActor != NULL && checkGoatCatchActor(mTargetedActor) && + mAttention->getActionBtnB() != NULL && + mAttention->getActionBtnB()->mType == 4 && + mAttention->getActionBtnB()->getActor() == mTargetedActor) + { + setDoStatus(0x91); + } else if (mAttList->mType == 4) { + if (!fopAcM_checkCarryNow(field_0x27f4)) { + if (checkGoatCatchActor(field_0x27f4)) { + setDoStatus(0x91); + } else if (!i_checkMagneBootsOn()) { + if (checkInsectActorName(field_0x27f4)) { + setDoStatusEmphasys(0x98); + } else if (actor_name == PROC_Obj_SmallKey) { + setDoStatusEmphasys(0x39); + } else if (!checkGrabLineCheck()) { + if (actor_name == PROC_Obj_Yobikusa) { + setDoStatus(0x2B); + } else if (fopAcM_CheckCarryType(field_0x27f4, fopAcM_CARRY_TYPE_8)) + { + setDoStatusEmphasys(0x34); + } else if (actor_name != PROC_B_MGN) { + setDoStatusEmphasys(0x1F); + } + } + } + } + } else { + setTalkStatus(); + } + } + decideCommonDoStatus(); + } + } } -#pragma pop /* 800B58EC-800B5BC0 0B022C 02D4+00 25/25 0/0 0/0 .text checkWaitAction__9daAlink_cFv */ #pragma push @@ -15773,6 +16206,188 @@ asm int daAlink_c::orderZTalk() { #pragma pop /* 800B8374-800B8930 0B2CB4 05BC+00 1/1 0/0 0/0 .text checkNormalAction__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::checkNormalAction() { + int wall_grab_status = getWallGrabStatus(); + + if (wallGrabTrigger()) { + if (wall_grab_status == 0x15) { + return procCoPushPullWaitInit(1); + } + + if (wall_grab_status == 0x96 && searchFmChainPos()) { + if (i_checkWolf()) { + return procWolfChainUpInit(); + } else { + return procFmChainUpInit(); + } + } + } + + if (orderTalk(1)) { + return 1; + } + + if (doTrigger()) { + if (i_dComIfGp_getDoStatus() == 0x89) { + orderPeep(); + return 1; + } + + if (i_dComIfGp_getDoStatus() == 7) { + if (i_checkWolf()) { + return procWolfLieStartInit(1); + } else { + return procCrawlStartInit(); + } + } + + if (i_dComIfGp_getDoStatus() == 12) { + return procWolfGrabUpInit(); + } + + if (i_dComIfGp_getDoStatus() == 0x7B) { + return procWolfChainReadyInit(); + } + + if (i_dComIfGp_getDoStatus() == 0x47) { + return procWolfPushInit(); + } + + if (i_dComIfGp_getDoStatus() == 0x17) { + if (fopAcM_GetName(field_0x27f4) == PROC_Obj_IceLeaf) { + return procBoardRideInit(); + } + + if (fopAcM_GetName(field_0x27f4) == PROC_CANOE) { + if (i_checkModeFlg(0x40000)) { + return procCanoeRideInit(); + } else { + return procSmallJumpInit(1); + } + } + + if (checkStageName("F_SP103") && + fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchKolin, NULL)) + { + return procWaitInit(); + } else { + return procHorseRideInit(); + } + } + + if (i_dComIfGp_getDoStatus() == 0x20) { + if (i_checkWolf()) { + return procWolfHangReadyInit(); + } else { + if (field_0x2f91 == 7) { + return procHangWallCatchInit(); + } else { + return procHangReadyInit(); + } + } + } + + if (i_dComIfGp_getDoStatus() == 6) { + if (mAttList->mType == 5) { + if (!checkStageName("F_SP103") || + !fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchBouDoor, NULL)) + { + fopAcM_orderDoorEvent(this, field_0x27f4, 0, 0); + } + checkWaitAction(); + } else { + fopAcM_orderTreasureEvent(this, field_0x27f4, 0, 0); + } + + return 1; + } + + if (i_dComIfGp_getDoStatus() == 0x2B) { + return procGrassWhistleGetInit(); + } + + if (i_dComIfGp_getDoStatus() == 0x38) { + return procGoatStrokeInit(); + } + + if (i_dComIfGp_getDoStatus() == 0x63) { + if (fopAcM_GetName(field_0x27f4) == PROC_Tag_Lv6Gate) { + static_cast(field_0x27f4)->stabMasterSword(); + } else { + static_cast(field_0x27f4)->stabMasterSword(); + } + + procWaitInit(); + return 1; + } + + if (i_dComIfGp_getDoStatus() == 0x91) { + i_onNoResetFlg0(FLG0_UNK_10000000); + + if (field_0x27f4->current.pos.abs2XZ(current.pos) < getGoatCatchDistance2()) { + if (i_checkWolf()) { + return procWolfGanonCatchInit(); + } else { + return procGoatCatchInit(field_0x27f4, 0.0f); + } + } + } else if (i_dComIfGp_getDoStatus() == 0x98) { + return procInsectCatchInit(); + } else if (i_dComIfGp_getDoStatus() == 0x1F || i_dComIfGp_getDoStatus() == 0x39 || + i_dComIfGp_getDoStatus() == 0x34) + { + if (i_checkWolf()) { + return procWolfGrabUpInit(); + } else { + if (fopAcM_CheckCarryType(field_0x27f4, fopAcM_CARRY_ITEM)) { + return procPickUpInit(); + } else { + return procGrabReadyInit(); + } + } + } else if (i_dComIfGp_getDoStatus() == 0x99) { + return procHangLeverDownInit(); + } else if (i_dComIfGp_getDoStatus() == 0x30) { + if (i_checkWolf()) { + return procWolfDownAttackInit(); + } else { + return checkDoCutAction(); + } + } else if (i_dComIfGp_getDoStatus() == 0x77) { + if (i_checkWolf()) { + return procWolfJumpAttackInit(1); + } else { + return checkDoCutAction(); + } + } else if (i_dComIfGp_getDoStatus() == 0x8B) { + return procWolfJumpAttackInit(1); + } else if (i_dComIfGp_getDoStatus() == 0x62) { + changeCutFast(); + return 1; + } else if (i_dComIfGp_getDoStatus() == 0x86) { + return checkDoCutAction(); + } else if (i_dComIfGp_getDoStatus() == 5) { + return procWolfHowlDemoInit(); + } else if (i_dComIfGp_getDoStatus() == 0x45) { + return procWolfGetSmellInit(); + } else if (i_dComIfGp_getDoStatus() == 0x93) { + return procWolfTagJumpInit(field_0x27f4); + } + } else if (i_checkNoResetFlg0(FLG0_UNK_10000000) && i_dComIfGp_getDoStatus() == 0x91) { + if (field_0x27f4->current.pos.abs2XZ(current.pos) < getGoatCatchDistance2()) { + if (i_checkWolf()) { + return procWolfGanonCatchInit(); + } else { + return procGoatCatchInit(field_0x27f4, 0.0f); + } + } + } + + return 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -15780,6 +16395,7 @@ asm int daAlink_c::checkNormalAction(){nofralloc #include "asm/d/a/d_a_alink/checkNormalAction__9daAlink_cFv.s" } #pragma pop +#endif u16 daAlink_c::getReadyItem() { return dComIfGp_getSelectItem(mSelectItemId); @@ -16183,11 +16799,11 @@ BOOL daAlink_c::checkGroundSpecialMode() { /* 800BA09C-800BA0D0 0B49DC 0034+00 4/4 0/0 0/0 .text commonCheckNextAction__9daAlink_cFi */ -void daAlink_c::commonCheckNextAction(int param_0) { +int daAlink_c::commonCheckNextAction(int param_0) { if (i_checkWolf()) { - checkNextActionWolf(param_0); + return checkNextActionWolf(param_0); } else { - checkNextAction(param_0); + return checkNextAction(param_0); } } diff --git a/src/d/a/d_a_alink_cut.inc b/src/d/a/d_a_alink_cut.inc index a07a62907c7..241e85ed8d0 100644 --- a/src/d/a/d_a_alink_cut.inc +++ b/src/d/a/d_a_alink_cut.inc @@ -651,16 +651,16 @@ BOOL daAlink_c::checkCutCancelNextMode(int param_0) { } /* 800D27E4-800D2890 0CD124 00AC+00 4/4 0/0 0/0 .text checkDoCutAction__9daAlink_cFv */ -void daAlink_c::checkDoCutAction() { +BOOL daAlink_c::checkDoCutAction() { // event flag 0x2A40: Learned Jump Strike if (doButton() && (i_dComIfGs_isEventBit(0x2A40) || i_checkNoResetFlg3(FLG3_UNK_200))) { - procCutLargeJumpChargeInit(); + return procCutLargeJumpChargeInit(); } else if (checkDownAttackState()) { - procCutDownInit(); + return procCutDownInit(); } else if (checkCutHeadState()) { - procCutHeadInit(); + return procCutHeadInit(); } else { - procCutJumpInit(0); + return procCutJumpInit(0); } } diff --git a/src/d/a/d_a_alink_demo.inc b/src/d/a/d_a_alink_demo.inc index 22642ea7f37..7faea5ddf5b 100644 --- a/src/d/a/d_a_alink_demo.inc +++ b/src/d/a/d_a_alink_demo.inc @@ -3,7 +3,18 @@ * Player Cutscene / Event action handling */ +#include "d/a/d_a_alink.h" +#include "d/com/d_com_inf_game.h" +#include "d/d_demo.h" +#include "d/d_gameover.h" #include "f_op/f_op_msg_mng.h" +#include "f_op/f_op_overlap_mng.h" +#include "m_Do/m_Do_controller_pad.h" +#include "rel/d/a/kytag/d_a_kytag04/d_a_kytag04.h" +#include "rel/d/a/tag/d_a_tag_mhint/d_a_tag_mhint.h" +#include "rel/d/a/tag/d_a_tag_mist/d_a_tag_mist.h" +#include "rel/d/a/tag/d_a_tag_mstop/d_a_tag_mstop.h" +#include "rel/d/a/tag/d_a_tag_mwait/d_a_tag_mwait.h" /* 80115C20-80115C50 110560 0030+00 72/72 0/0 0/0 .text checkEventRun__9daAlink_cCFv */ BOOL daAlink_c::checkEventRun() const { @@ -12,6 +23,15 @@ BOOL daAlink_c::checkEventRun() const { /* 80115C50-80115D08 110590 00B8+00 2/2 0/0 0/0 .text createNpcTks__9daAlink_cFP4cXyziUl */ +// matches with literals +#ifdef NONMATCHING +void daAlink_c::createNpcTks(cXyz* i_basePos, int i_roomNo, u32 i_parameters) { + cXyz pos(i_basePos->x + cM_ssin(shape_angle.y) * 200.0f, i_basePos->y, + i_basePos->z + cM_scos(shape_angle.y) * 200.0f); + csXyz angle(0, shape_angle.y + 0x8000, 0); + fopAcM_create(PROC_NPC_TKS, i_parameters, &pos, i_roomNo, &angle, NULL, -1); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -20,19 +40,436 @@ asm void daAlink_c::createNpcTks(cXyz* param_0, int param_1, u32 param_2) { #include "asm/d/a/d_a_alink/createNpcTks__9daAlink_cFP4cXyziUl.s" } #pragma pop +#endif /* 80115D08-80115EC0 110648 01B8+00 1/0 0/0 0/0 .text checkSetNpcTks__9daAlink_cFP4cXyzii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkSetNpcTks(cXyz* param_0, int param_1, int param_2) { - nofralloc -#include "asm/d/a/d_a_alink/checkSetNpcTks__9daAlink_cFP4cXyzii.s" +bool daAlink_c::checkSetNpcTks(cXyz* i_basePos, int i_roomNo, int param_2) { + u32 scene_mode = getLastSceneMode(); + + if (param_2 != 0 && checkDungeon() && + i_dStage_stagInfo_GetSaveTbl(i_dComIfGp_getStage()->getStagInfo()) != 0x17 && + i_dStage_stagInfo_GetSaveTbl(i_dComIfGp_getStage()->getStagInfo()) != 0x18 && + (checkItemGet(TKS_LETTER, 1) || + (checkItemGet(DUNGEON_BACK, 1) && !checkLv7DungeonShop())) && + dComIfGs_isDungeonItemWarp()) + { + if (!dComIfGs_isStageBossEnemy()) { + cXyz pos; + csXyz angle; + + u32 parameters = 5; + if (checkStageName("D_MN01")) { + daNpcF_getPlayerInfoFromPlayerList(1, 0, pos, angle); + i_basePos = &pos; + if (scene_mode != 0xC) { + parameters = 8; + } + } else if ((checkStageName("D_MN06") != 0 || checkStageName("D_MN05")) && + scene_mode != 0xC) + { + parameters = 9; + } + + createNpcTks(i_basePos, i_roomNo, parameters); + return true; + } + } + + return false; } -#pragma pop /* 80115EC0-80116E60 110800 0FA0+00 1/1 0/0 0/0 .text checkDemoAction__9daAlink_cFv */ +// matches with literals / a fix for g_dComIfG_gameInfo.play.mEvent load +#ifdef NONMATCHING +int daAlink_c::checkDemoAction() { + if (i_dComIfGp_getEvent().i_isOrderOK()) { + if (!i_dComIfGp_event_runCheck()) { + i_offNoResetFlg0(FLG0_UNK_200000); + } + return 0; + } + + u32 demoMode = mDemo.getDemoMode(); + JUT_ASSERT(155, + (demoMode < daPy_demo_c::DEMO_LAST_e) || (demoMode == daPy_demo_c::DEMO_NEW_ANM0_e)); + + if (demoMode != 6 && demoMode != 8) { + i_offNoResetFlg0(FLG0_UNK_400); + } + + if (demoMode != 0x33 && mSpecialMode == 1) { + return procSumouReadyInit(); + } + + if (mProcID == PROC_WOLF_GIANT_PUZZLE) { + return 0; + } + + if (!i_checkModeFlg(0x400) && demoMode != daPy_demo_c::DEMO_NEW_ANM0_e && demoMode != 0x46 && + demoMode != 0x47 && demoMode != 0x39 && demoMode != 0x3A && demoMode != 9 && + demoMode != 0x11 && demoMode != 0x18 && demoMode != 7 && demoMode != 0x13 && + demoMode != 4 && demoMode != 0x38 && demoMode != 0x45 && demoMode != 0xA && + demoMode != 0x2D && demoMode != 0x23 && demoMode != 0x43 && demoMode != 0x34 && + (demoMode != 0xB || !i_checkModeFlg(0x10040)) && + !i_dComIfGp_checkPlayerStatus0(0, 0x100000) && !checkFlyAtnWait() && + ((!mLinkAcch.ChkGroundHit() && !i_checkMagneBootsOn()) || i_checkModeFlg(0x70C52))) + { + return 0; + } + + if (checkSpinnerRide()) { + current.pos.x = field_0x37a4.x; + current.pos.z = field_0x37a4.z; + } + + if (demoMode != daPy_demo_c::DEMO_NEW_ANM0_e) { + endHighModel(); + } + + if (demoMode == daPy_demo_c::DEMO_NEW_ANM0_e) { + i_onNoResetFlg0(FLG0_UNK_100000); + return procCoToolDemoInit(); + } + + if (m_demoInitTable[demoMode] != NULL) { + i_onNoResetFlg0(FLG0_UNK_100000); + return (this->*m_demoInitTable[demoMode])(); + } + + if (demoMode == 6 || demoMode == 8) { + if (mDemo.getParam1() != 1 && !i_checkNoResetFlg0(FLG0_UNK_400)) { + seStartSystem(Z2SE_SY_TALK_START); + i_onNoResetFlg0(FLG0_UNK_400); + } + + if (mProcID == PROC_SPINNER_WAIT) { + return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + } + + if (i_checkModeFlg(0x4000000) || i_checkModeFlg(0x40000) || checkHorseRide() || + checkBoarRide() || checkCanoeRide()) + { + if (demoMode == 6 && (checkHorseRide() || checkBoarRide())) { + if (mEquipItem != NO_ITEM && mEquipItem != KANTERA && !checkEquipAnime()) { + allUnequip(1); + } + } + + if (checkHorseRide()) { + if (fopAcM_getTalkEventPartner(this) == daPy_py_c::getMidnaActor()) { + daHorse_c* horse_p = i_dComIfGp_getHorseActor(); + + if (!horse_p->checkOriginalDemo()) { + horse_p->i_changeOriginalDemo(); + horse_p->i_changeDemoMode(14, 0); + } + } + } + + field_0x3000 = 0; + return 1; + } + + i_onNoResetFlg0(FLG0_UNK_100000); + if (mGrabItemAcKeep.getActor() != NULL) { + if (fopAcM_getTalkEventPartner(this) != NULL && + checkGrabTalkActor(fopAcM_getTalkEventPartner(this))) + { + return procGrabWaitInit(); + } else { + return commonGrabPutInit(); + } + } + + return procCoTalkInit(); + } else if (demoMode == 4) { + int var_r28; + if (i_checkWolf()) { + var_r28 = procWolfWaitInit(); + } else { + if (mDemo.getParam0() != 0) { + freeGrabItem(); + + if (mDemo.getParam0() == 1 && i_checkSwordGet()) { + if (mEquipItem != 0x103) { + deleteEquipItem(FALSE, TRUE); + if (checkEquipAnime()) { + resetUpperAnime(UPPER_2, -1.0f); + } + + setSwordModel(); + } + } else if (mDemo.getParam0() == 2) { + deleteEquipItem(FALSE, TRUE); + } else if (mDemo.getParam0() == 4) { + if (!checkFishingRodItem(mEquipItem)) { + deleteEquipItem(FALSE, TRUE); + mEquipItem = FISHING_ROD_1; + setGroundFishingRodActor(); + } + } else if (mDemo.getParam0() == 3) { + if (!checkCanoeRide()) { + daCanoe_c* canoe_p = + (daCanoe_c*)fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchCanoe, NULL); + unsigned int rodID = + fopAcM_create(PROC_MG_ROD, 0xD, &mLeftHandPos, -1, NULL, NULL, -1); + canoe_p->onRodID(rodID); + return procCanoeJumpRideInit(NULL); + } + return 1; + } else if (mDemo.getParam0() == 5) { + if (!checkBoardRide()) { + fopAc_ac_c* board_p = (fopAc_ac_c*)fopAcIt_Judge( + (fopAcIt_JudgeFunc)daAlink_searchIceLeaf, NULL); + if (board_p != NULL) { + field_0x2fa8 = 5; + return procBoardWaitInit(board_p); + } + } else { + return 1; + } + } else if (mDemo.getParam0() == 6 && checkHorseRide()) { + mDemo.setParam0(0); + return 1; + } + + mDemo.setParam0(0); + } + + var_r28 = procWaitInit(); + } + + if (var_r28 != 0) { + field_0x2060->initOldFrameMorf(0.0f, 0, field_0x30c6); + } + return var_r28; + } else if (demoMode == 9) { + i_onNoResetFlg0(FLG0_UNK_100000); + if (mProcID == PROC_LARGE_DAMAGE_UP || mProcID == PROC_WOLF_LARGE_DAMAGE_UP || + mProcID == PROC_LARGE_DAMAGE_WALL) + { + return 0; + } + + if (i_checkModeFlg(0x40000)) { + dComIfGp_evmng_cutEnd(field_0x3184); + return 0; + } + + return procCoLargeDamageInit(-2, 1, 0, 0, NULL, 0); + } else if (demoMode == 0x24) { + i_onNoResetFlg0(FLG0_UNK_100000); + int prm0 = mDemo.getParam0(); + if (mProcID == PROC_CUT_NORMAL || mProcID == PROC_CUT_FINISH || mProcID == PROC_CUT_TURN) { + return 0; + } + + if (prm0 < 5) { + return procCutNormalInit(prm0); + } + + if (prm0 - 20 >= 0 && prm0 - 20 < 6) { + return procCutFinishInit(prm0 - 20); + } else { + return procCutTurnInit(1, 1); + } + } else if (demoMode == 0x52) { + i_onNoResetFlg0(FLG0_UNK_100000); + if (mProcID == PROC_TURN_MOVE || mProcID == PROC_CUT_FINISH_JUMP_UP || + mProcID == PROC_CUT_FINISH_JUMP_UP_LAND) + { + return 1; + } + + return procTurnMoveInit(2); + } else if (demoMode == 0x54) { + i_onNoResetFlg0(FLG0_UNK_100000); + if (mProcID != PROC_CUT_FINISH) { + i_onNoResetFlg0(FLG0_UNK_1000000); + changeCutFast(); + } + + return 1; + } else if (demoMode == 0x2B) { + i_onNoResetFlg0(FLG0_UNK_100000); + int prm0 = mDemo.getParam0(); + + if (mProcID == PROC_WOLF_WAIT_ATTACK) { + return 0; + } + + if (prm0 >= 4) { + return procWolfWaitAttackInit(0); + } else { + return procWolfWaitAttackInit(prm0); + } + } else if (demoMode == 0x1B) { + i_onNoResetFlg0(FLG0_UNK_100000); + + if (mDemo.getDemoType() == 1) { + return commonLargeDamageUpInit(-2, 1, 0, 0); + } else if (mDemo.getParam0() == 1) { + return commonLargeDamageUpInit(-5, 1, 0, 0); + } else { + return commonLargeDamageUpInit(-3, 1, 0, 0); + } + } else if (demoMode == 0xF) { + i_onNoResetFlg0(FLG0_UNK_100000); + return procWolfSitInit(1); + } else if (demoMode == 0x15) { + i_onNoResetFlg0(FLG0_UNK_100000); + return procWolfHowlInit(0); + } else if (demoMode == 0x16) { + i_onNoResetFlg0(FLG0_UNK_100000); + return procWolfHowlInit(1); + } else if (demoMode == 0x2D) { + i_onNoResetFlg0(FLG0_UNK_100000); + return procCoWarpInit(mDemo.getParam0(), mDemo.getParam1()); + } else if (demoMode == 0x18) { + i_onNoResetFlg0(FLG0_UNK_100000); + return procAutoJumpInit(1); + } else if (demoMode == 0x5B) { + if (mProcID == PROC_CUT_TURN_MOVE || mProcID == PROC_CUT_TURN_CHARGE) { + return 1; + } + + i_onNoResetFlg0(FLG0_UNK_100000); + return procCutTurnChargeInit(); + } else if (demoMode == 0x5E) { + if (mProcID == PROC_WOLF_SERVICE_WAIT) { + return 0; + } + + if (i_checkModeFlg(0x40000)) { + return 0; + } + + i_onNoResetFlg0(FLG0_UNK_100000); + return procWolfServiceWaitInit(0); + } else if (demoMode == 0x5C) { + if (mProcID == PROC_CUT_LARGE_JUMP_CHARGE || mProcID == PROC_CUT_TURN_MOVE) { + return 1; + } + + i_onNoResetFlg0(FLG0_UNK_100000); + return procCutLargeJumpChargeInit(); + } else if (demoMode == 0x49) { + i_onNoResetFlg0(FLG0_UNK_100000); + return procSideRollInit(mDemo.getParam0() ? 3 : 2); + } else if (demoMode == 0x10) { + i_onNoResetFlg0(FLG0_UNK_100000); + if (i_checkWolf()) { + if (mProcID == PROC_WOLF_BACKJUMP_LAND || mProcID == PROC_WOLF_SIDESTEP_LAND || + mProcID == PROC_WOLF_BACKJUMP || mProcID == PROC_WOLF_SIDESTEP) + { + return 0; + } + + field_0x2f98 = mDemo.getParam0(); + if (field_0x2f98 == 1) { + field_0x2fcc = 1; + } + + return procWolfSideStepInit(0); + } + + if (mProcID == PROC_BACK_JUMP_LAND || mProcID == PROC_SIDESTEP_LAND || + mProcID == PROC_BACK_JUMP || mProcID == PROC_SIDESTEP) + { + return 0; + } + + if (mDemo.getParam0() == 0) { + mDemo.setParam0(1); + } + + return procSideStepInit(mDemo.getParam0()); + } else if (demoMode == 0x2C) { + i_onNoResetFlg0(FLG0_UNK_100000); + return procWolfLieMoveInit(0); + } else if (demoMode == 0x11) { + i_onNoResetFlg0(FLG0_UNK_100000); + return commonFallInit(1); + } else if (demoMode == 0x2A) { + i_onNoResetFlg0(FLG0_UNK_100000); + return procBottleDrinkInit(mDemo.getParam0()); + } else if (demoMode == 0x1F) { + i_onNoResetFlg0(FLG0_UNK_100000); + if (!i_checkModeFlg(0x4070C52) && + (checkUpperReadyThrowAnime() || field_0x2f8c == 2 || field_0x2f8c == 1 || + field_0x2f8c == 3 || field_0x2f8c == 8 || mProcID == PROC_GRAB_WAIT || + mProcID == PROC_TALK || field_0x2f8c == 9)) + { + return procCoLookWaitInit(); + } + + dComIfGp_evmng_cutEnd(field_0x3184); + return 1; + } else if (demoMode == 7) { + i_offNoResetFlg0(FLG0_UNK_100000); + if (checkUpperReadyThrowAnime() || checkGrabAnime()) { + resetUpperAnime(UPPER_2, -1.0f); + } + + if (!i_checkModeFlg(0x400)) { + initForceRideHorse(); + } + + return checkNextActionHorse(); + } else if (checkFlyAtnWait()) { + return procAtnActorWaitInit(); + } else if ((i_checkNoResetFlg0(FLG0_UNK_100000) || checkUpperReadyThrowAnime() || + i_checkModeFlg(0x400) || mProcID == PROC_SWIM_SUBJECTIVITY || + mProcID == PROC_FISHING_CAST || mProcID == PROC_SUBJECTIVITY) && + (demoMode == 1 || checkDemoMoveMode(demoMode) || demoMode == 0x17 || + demoMode == 0x1F || demoMode == 0x12 || + (checkSpinnerRide() && + (demoMode == 0x1A || (demoMode == 0xE && mDemo.getParam0() == 0))))) + { + i_offNoResetFlg0(FLG0_UNK_100000); + if (checkUpperReadyThrowAnime()) { + resetUpperAnime(UPPER_2, -1.0f); + } + + if (i_checkReinRide()) { + if (mDemo.getDemoMode() == 0x17 && !checkEquipAnime() && mEquipItem != 0x103 && + (mDemo.getParam1() == 2 || mDemo.getParam1() == 3)) + { + swordEquip(0); + } + + if (checkHorseGetOffMode() || checkHorseRideOn()) { + fopAc_ac_c* rideAc_p = mRideAcKeep.getActor(); + if (rideAc_p == NULL) { + return commonCheckNextAction(0); + } + + commonInitForceRideRein(); + + if (rideAc_p == i_dComIfGp_getHorseActor()) { + static_cast(rideAc_p)->onRideFlg(); + mZ2Link.setRiding(true); + } else { + static_cast(rideAc_p)->setPlayerRide(); + } + } + + return checkNextActionHorse(); + } else if (checkCanoeRide()) { + return checkNextActionCanoe(); + } else if (checkBoardRide()) { + return checkNextActionBoard(); + } else if (checkSpinnerRide()) { + return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + } + + return commonCheckNextAction(0); + } + + return 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -41,6 +478,7 @@ asm int daAlink_c::checkDemoAction() { #include "asm/d/a/d_a_alink/checkDemoAction__9daAlink_cFv.s" } #pragma pop +#endif /* 80116E60-80116E9C 1117A0 003C+00 4/4 0/0 0/0 .text checkDemoMoveMode__9daAlink_cCFUl */ @@ -49,6 +487,46 @@ bool daAlink_c::checkDemoMoveMode(u32 i_mode) const { } /* 80116E9C-80117064 1117DC 01C8+00 1/1 0/0 0/0 .text setDemoMoveData__9daAlink_cFPUlPC4cXyz */ +// matches with literals +#ifdef NONMATCHING +void daAlink_c::setDemoMoveData(u32* param_0, cXyz const* param_1) { + cXyz sp20; + sp20 = *param_1 - current.pos; + + f32 temp_f30; + f32 temp_f29; + f32 temp_f28; + f32 var_f27; + if (i_checkWolf()) { + var_f27 = daAlinkHIO_wlMoveNoP_c0::m.field_0x8 / daAlinkHIO_move_c0::m.mMaxSpeed; + var_f27 *= var_f27; + } else { + var_f27 = 1.0f; + } + + temp_f30 = var_f27 * 100.0f; + temp_f29 = var_f27 * 400.0f; + temp_f28 = var_f27 * 2500.0f; + + f32 dist_to_pos = sp20.abs2XZ(); + if (dist_to_pos < var_f27 * 25.0f) { + *param_0 = 1; + + if (!i_checkModeFlg(0x2)) { + mNormalSpeed = 0.0f; + } + } else if (dist_to_pos < temp_f30 || (dist_to_pos < temp_f28 && checkZeroSpeedF())) { + *param_0 = 1; + } else if ((*param_0 == 2 && dist_to_pos < temp_f29) || dist_to_pos < temp_f28) { + *param_0 = 2; + mDemo.setStick(0.35f); + } else if (mDemo.getDemoType() == 3) { + mDemo.setStick(1.0f); + } + + mDemo.setMoveAngle(sp20.atan2sX_Z()); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -57,6 +535,7 @@ asm void daAlink_c::setDemoMoveData(u32* param_0, cXyz const* param_1) { #include "asm/d/a/d_a_alink/setDemoMoveData__9daAlink_cFPUlPC4cXyz.s" } #pragma pop +#endif /* 80117064-801171F4 1119A4 0190+00 1/1 0/0 0/0 .text setNoDrawSwordShield__9daAlink_cFiUs */ #pragma push @@ -69,6 +548,281 @@ asm void daAlink_c::setNoDrawSwordShield(int param_0, u16 param_1) { #pragma pop /* 801171F4-80117B90 111B34 099C+00 1/1 0/0 0/0 .text setDemoData__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +void daAlink_c::setDemoData() { + if (i_dComIfGp_getEvent().i_isOrderOK()) { + if (checkPlayerDemoMode() && mClothesChangeWaitTimer == 0) { + endDemoMode(); + } + + if (mMidnaTalkDelayTimer != 0) { + mMidnaTalkDelayTimer--; + } + } else { + dDemo_actor_c* demo_actor_p = dDemo_c::getActor(mDemoActorId); + cXyz* pos_p = NULL; + s16 angle; + u32 demo_mode = 1; + int* prm0_p = NULL; + int* prm1_p = NULL; + + dComIfGp_clearPlayerStatus0(0, 0x600000); + i_offNoResetFlg3(FLG3_COPY_ROD_THROW_AFTER); + field_0x30d0 = 0; + + if (mProcID == PROC_SUBJECTIVITY) { + if (i_checkWolf()) { + procWolfWaitInit(); + } else { + procWaitInit(); + } + } else if (mProcID == PROC_SWIM_SUBJECTIVITY) { + if (i_checkWolf()) { + procWolfSwimWaitInit(0); + } else { + procSwimWaitInit(0); + } + } + + if (mDemo.getDemoType() == 4 && !dComIfGp_evmng_checkStartDemo()) { + mDemo.setSystemDemoType(); + } + + if (demo_actor_p != NULL) { + demo_actor_p->setModel(mpLinkModel); + field_0x3184 = -1; + + if (mDemo.getDemoType() != 1) { + mDemo.setToolDemoType(); + mDemo.setDemoMode(1); + freeGrabItem(); + + if (i_dComIfGp_evmng_startCheck("R22-opening")) { + if (mEquipItem == IRONBALL) { + deleteEquipItem(FALSE, FALSE); + } + } else { + deleteEquipItem(FALSE, TRUE); + } + + if (checkIronBallWaitAnime()) { + resetUpperAnime(UPPER_2, -1.0f); + } + + if (i_checkWolf()) { + procWolfWaitInit(); + } else { + procWaitInit(); + } + } + + if (demo_actor_p->checkEnable(0x20)) { + demo_mode = demo_actor_p->getAnmId(); + } else { + demo_mode = mDemo.getDemoMode(); + } + + if (demo_actor_p->checkEnable(0x2)) { + pos_p = &demo_actor_p->getTrans(); + } else { + pos_p = ¤t.pos; + } + + if (demo_actor_p->checkEnable(0x8)) { + angle = demo_actor_p->getRatate().y; + } else { + angle = shape_angle.y; + } + + int sp14; + int sp10; + int spC; + u16 sp8; + while (demo_actor_p->getDemoIDData(&sp14, &sp10, &spC, &sp8, NULL) != 0) { + if (sp14 == 0 && sp10 == 0) { + setNoDrawSwordShield(spC, sp8); + } + } + } else { + BOOL var_r28 = FALSE; + if (checkPlayerDemoMode() == 0) { + mDemo.setSystemDemoType(); + var_r28 = TRUE; + + if (mDemo.getDemoMode() == 0) { + demo_mode = 0x41; + } + } + + if (field_0x3184 != -1) { + if (mProcID == PROC_DUNGEON_WARP_READY) { + mDemo.setSystemDemoType(); + } + + char* cut_name = dComIfGp_getPEvtManager()->getMyNowCutName(field_0x3184); + if (cut_name != NULL) { + // Take the first 3 chars in cut_name, convert them to integers, and calculate + // demo_mode + demo_mode = ((cut_name[0] - '0') * 100) + ((cut_name[1] - '0') * 10) + + (cut_name[2] - '0'); + if (mDemo.getDemoType() != 4 && (demo_mode == 1 || demo_mode == 0x17) && + mLinkAcch.ChkGroundHit() && !i_checkModeFlg(0x70C52)) + { + mNormalSpeed = 0.0f; + speedF = 0.0f; + } + + if (demo_mode == 0x32 && !daMidna_c::checkMidnaRealBody()) { + demo_mode = 1; + } + + pos_p = dComIfGp_evmng_getMyXyzP(field_0x3184, "pos"); + if (pos_p == NULL) { + pos_p = dComIfGp_evmng_getGoal(); + } + + int* angle_p = dComIfGp_evmng_getMyIntegerP(field_0x3184, "angle"); + if (angle_p != NULL) { + angle = *angle_p; + } else if (demo_mode == 5) { + angle = mDemo.getMoveAngle(); + } else { + angle = shape_angle.y; + } + + prm0_p = dComIfGp_evmng_getMyIntegerP(field_0x3184, "prm0"); + prm1_p = dComIfGp_evmng_getMyIntegerP(field_0x3184, "prm1"); + + if (mDemo.getDemoType() == 2) { + f32* stick_p = dComIfGp_evmng_getMyFloatP(field_0x3184, "stick"); + + if (stick_p != NULL) { + mDemo.setStick(*stick_p); + } else { + mDemo.setStick(1.0f); + } + } + + if ((demo_mode == 2 || demo_mode == 3) && prm1_p != NULL && *prm1_p == 1) { + cXyz goal_pos; + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(shape_angle.y); + mDoMtx_stack_c::multVec(pos_p, &goal_pos); + dComIfGp_evmng_setGoal(&goal_pos); + dComIfGp_evmng_cutEnd(field_0x3184); + } + } + } + + if ((mEquipItem == IRONBALL || checkFishingRodItem(mEquipItem)) && demo_mode != 1 && + demo_mode != 0x1F && (field_0x3184 != -1 || mDemo.getDemoType() == 3) && + (demo_mode != 6 || (var_r28 == 0 && !checkEquipAnime()))) + { + deleteEquipItem(FALSE, TRUE); + if (checkIronBallWaitAnime()) { + resetUpperAnime(UPPER_2, 3.0f); + } + } + } + + if (mDemo.getDemoType() == 4) { + if (mDemo.getDemoMode() == 0xE) { + if (mDemo.getTimer() != 0) { + mDemo.decTimer(); + + cXyz tmp_sp = current.pos - orig.pos; + if (tmp_sp.abs2XZ() > 90000.0f) { + mDemo.setTimer(0); + dComIfGp_evmng_cutEnd(field_0x3184); + } + } else { + dComIfGp_evmng_cutEnd(field_0x3184); + } + } + } else { + if (mDemo.getDemoType() == 1 || (mDemo.getDemoType() == 2 && field_0x3184 != -1)) { + if (prm0_p != NULL) { + mDemo.setParam0(*prm0_p); + } else { + mDemo.setParam0(0); + } + + if (prm1_p != NULL) { + mDemo.setParam1(*prm1_p); + } else { + mDemo.setParam1(0); + } + + if (demo_mode == 4) { + mNormalSpeed = 0.0f; + speedF = 0.0f; + field_0x814.ClrCcMove(); + setPlayerPosAndAngle(pos_p, angle, 0); + mDemo.setMoveAngle(angle); + } else if (checkDemoMoveMode(demo_mode)) { + setDemoMoveData(&demo_mode, pos_p); + } else if (demo_mode == 5) { + mDemo.setMoveAngle(angle); + } + + mDemo.setDemoMode(demo_mode); + } else if (mDemo.getDemoType() == 3) { + demo_mode = mDemo.getDemoMode(); + + if (checkDemoMoveMode(demo_mode)) { + setDemoMoveData(&demo_mode, mDemo.getPos0()); + mDemo.setDemoMode(demo_mode); + } else if (demo_mode == 0x41) { + mDemo.setDemoMode(1); + } + } else { + mDemo.setDemoMode(demo_mode); + } + + if (i_checkModeFlg(0x80000) || mDemo.getDemoMode() == 6 || mDemo.getDemoMode() == 8) { + dComIfGp_setPlayerStatus0(0, 0x10); + mMidnaTalkDelayTimer = 30; + } else { + dComIfGp_clearPlayerStatus0(0, 0x10); + } + + if (field_0x3184 != -1 && + (demo_mode == 1 || demo_mode == 4 || demo_mode == 0x17 || demo_mode == 0xE || + demo_mode == 0x11 || demo_mode == 0x18 || demo_mode == 7 || demo_mode == 0xF || + demo_mode == 0x15 || demo_mode == 0x16 || demo_mode == 6 || demo_mode == 8 || + demo_mode == 0x29 || demo_mode == 0x12)) + { + dComIfGp_evmng_cutEnd(field_0x3184); + } + + s16 prm2 = mDemo.getParam2(); + if (prm2 != 0) { + if (!i_checkWolf()) { + if (prm2 == 1) { + setFacePriTexture(FTANM_UNK_0); + setFacePriBck(0x15A); + } else if (prm2 == 2) { + setFacePriBtp(0x3E1); + field_0x2154->setFrame(field_0x2154->getFrameMax()); + + setFacePriBtk(0x37B); + mpFaceBtk->setFrame(mpFaceBtk->getFrameMax()); + + setFacePriBck(0x149); + } + + i_offNoResetFlg1(FLG1_UNK_2000); + i_onNoResetFlg1(FLG1_UNK_200); + } + } else if (i_checkNoResetFlg1(FLG1_UNK_200)) { + i_offNoResetFlg1(FLG1_UNK_200); + resetFacePriAnime(); + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -77,6 +831,7 @@ asm void daAlink_c::setDemoData() { #include "asm/d/a/d_a_alink/setDemoData__9daAlink_cFv.s" } #pragma pop +#endif /* 80117B90-80117C34 1124D0 00A4+00 1/1 0/0 0/0 .text resetDemoBck__9daAlink_cFv */ void daAlink_c::resetDemoBck() { @@ -119,6 +874,104 @@ void daAlink_c::resetSpecialEvent() { } /* 80117CF8-801180EC 112638 03F4+00 4/4 0/0 0/0 .text endDemoMode__9daAlink_cFv */ +// one wrong branch +#ifdef NONMATCHING +void daAlink_c::endDemoMode() { + BOOL temp_r30 = checkFlyAtnWait(); + endHighModel(); + i_offNoResetFlg0(FLG0_UNK_10400); + field_0x06f4 = NULL; + + if (field_0x06f8 != NULL) { + if (mpDemoHLTmpModel != NULL) { + mpDemoHLTmpModel->getModelData()->removeTevRegAnimator(field_0x06f8); + } + field_0x06f8 = NULL; + } + + if (mpDemoHDTmpBck != NULL && mpLinkHatModel != NULL && mClothesChangeWaitTimer == 0) { + mpDemoHDTmpBck->remove(mpLinkHatModel->getModelData()); + } + + i_offNoResetFlg0(FLG0_UNK_100000); + dComIfGp_clearPlayerStatus0(0, 0x10); + + BOOL temp_r29 = mDemo.getDemoType() == 4; + BOOL var_r0 = mDemo.getDemoMode() == 0xE || mDemo.getDemoMode() == 0x1A; + + mDemo.resetDemoType(); + mDemo.setDemoMode(0); + mDemo.setParam0(0); + mDemo.setParam1(0); + + if (i_checkNoResetFlg1(FLG1_UNK_200)) { + i_offNoResetFlg1(FLG1_UNK_200); + resetFacePriAnime(); + } + + mDemo.setParam2(0); + mDemo.setStick(1.0f); + field_0x3184 = -1; + + if (i_checkReinRide()) { + field_0x2fab &= ~0x8; + if (mProcID != PROC_HORSE_COMEBACK) { + procHorseWaitInit(); + } + } else if (!checkSpinnerRide() && mProcID != PROC_FISHING_CAST) { + if (temp_r30) { + if (checkSwimAction(1)) { + if (i_checkWolf()) { + procWolfSwimMoveInit(); + } else { + procSwimMoveInit(); + } + } else { + checkWaitAction(); + } + } else if ((mLinkAcch.ChkGroundHit() && (!checkUpperReadyThrowAnime() || var_r0 == 0) && + !i_checkModeFlg(0x4070C52) && mProcID != PROC_LARGE_DAMAGE_UP && + mProcID != PROC_WOLF_LARGE_DAMAGE_UP) || + i_checkMagneBootsOn()) + { + if (temp_r29 && (mProcID == PROC_MOVE || mProcID == PROC_WOLF_MOVE)) { + field_0x33a8 = mDoCPd_c::getStickValue(PAD_1); + mStickAngle = mDoCPd_c::getStickAngle(PAD_1) + 0x8000; + field_0x2fe2 = + mStickAngle + dCam_getControledAngleY(dComIfGp_getCamera(field_0x317c)); + mNormalSpeed = speedF; + commonCheckNextAction(0); + } else if (mProcID == PROC_HAWK_CATCH || mProcID == PROC_HAWK_SUBJECT) { + procHawkSubjectInit(); + } else if (mProcID != PROC_GRASS_WHISTLE_WAIT) { + if (mDemo.getDemoMode() == 0x2D && mProcID == PROC_WARP) { + return; + } + + if (mProcID == PROC_TALK && i_dComIfGp_checkPlayerStatus0(0, 0x8000000)) { + procWolfLieMoveInit(0); + } else { + checkWaitAction(); + } + } + } else if (mProcID == PROC_CAUGHT) { + if (i_checkModeFlg(0x40000)) { + if (i_checkWolf()) { + procWolfSwimWaitInit(0); + } else { + procSwimWaitInit(0); + } + } else { + checkWaitAction(); + } + } else if (mProcID == PROC_MONKEY_MOVE) { + procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + } else if (checkCanoeRide()) { + procCanoeWaitInit(0); + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -127,6 +980,7 @@ asm void daAlink_c::endDemoMode() { #include "asm/d/a/d_a_alink/endDemoMode__9daAlink_cFv.s" } #pragma pop +#endif /* 801180EC-80118170 112A2C 0084+00 2/2 0/0 0/0 .text getDemoLookActor__9daAlink_cFv */ // weird gameinfo load @@ -161,14 +1015,20 @@ BOOL daAlink_c::checkFlyAtnWait() { } /* 801181A0-801182D4 112AE0 0134+00 2/2 0/0 0/0 .text setGetItemFace__9daAlink_cFUs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setGetItemFace(u16 param_0) { - nofralloc -#include "asm/d/a/d_a_alink/setGetItemFace__9daAlink_cFUs.s" +void daAlink_c::setGetItemFace(u16 param_0) { + if (param_0 == 7 || param_0 == 6 || param_0 == 0x21 || param_0 == 0x22 || param_0 == 0x31 || + param_0 == 0x36 || (param_0 >= 0x40 && param_0 <= 0x47) || param_0 == 0x4A || + param_0 == 0x56 || param_0 == 0xED || param_0 == 0x73 || param_0 == 0x75 || + param_0 == 0xEB || param_0 == 0xA1 || param_0 == 0xA2 || param_0 == 0xA3) + { + setFaceBasicBck(0x143); + } else if (param_0 == 0x25 || param_0 == 0xEC) { + setFaceBasicTexture(FTANM_UNK_7C); + setFaceBasicBck(0x149); + } else if (param_0 == 0xF4 || param_0 == 0xF5) { + setFaceBasicBck(0x146); + } } -#pragma pop /* 801182D4-80118308 112C14 0034+00 2/2 0/0 0/0 .text checkGrabTalkActor__9daAlink_cFP10fopAc_ac_c */ @@ -180,6 +1040,40 @@ BOOL daAlink_c::checkGrabTalkActor(fopAc_ac_c* i_actor) { /* 80118308-8011856C 112C48 0264+00 2/2 0/0 0/0 .text setTalkStartBack__9daAlink_cFP4cXyz */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::setTalkStartBack(cXyz* param_0) { + fopAc_ac_c* partner_p = fopAcM_getTalkEventPartner(this); + if (partner_p != NULL) { + s16 partner_name = fopAcM_GetName(partner_p); + if (partner_name == PROC_MIDNA || partner_name == PROC_Tag_Wljump || + partner_name == PROC_Tag_Mhint || partner_name == PROC_Tag_Mstop || + partner_name == PROC_Tag_Mwait) + { + return 0; + } + + cXyz sp24 = current.pos - partner_p->current.pos; + f32 var_f1 = sp24.absXZ(); + if (var_f1 < 100.0f && var_f1 > 1.0f) { + f32 temp_f2_2 = 100.0f / var_f1; + param_0->x = partner_p->current.pos.x + temp_f2_2 * sp24.x; + param_0->y = current.pos.y + l_autoUpHeight; + param_0->z = partner_p->current.pos.z + temp_f2_2 * sp24.z; + mLinkGndChk.SetPos(param_0); + + if (dComIfG_Bgsp().GroundCross(&mLinkGndChk) - current.pos.y >= l_autoDownHeight) { + current.angle.y = sp24.atan2sX_Z(); + mNormalSpeed = 5.0f; + setSingleAnimeBaseSpeed(ANM_WALK, -daAlinkHIO_move_c0::m.mWalkAnmSpeed, 3.0f); + return 1; + } + } + } + + return 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -188,16 +1082,34 @@ asm int daAlink_c::setTalkStartBack(cXyz* param_0) { #include "asm/d/a/d_a_alink/setTalkStartBack__9daAlink_cFP4cXyz.s" } #pragma pop +#endif /* 8011856C-80118654 112EAC 00E8+00 4/4 0/0 0/0 .text setShapeAngleToTalkActor__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setShapeAngleToTalkActor() { - nofralloc -#include "asm/d/a/d_a_alink/setShapeAngleToTalkActor__9daAlink_cFv.s" +void daAlink_c::setShapeAngleToTalkActor() { + fopAc_ac_c* partner_p = fopAcM_getTalkEventPartner(this); + if (partner_p != NULL) { + s16 partner_name = fopAcM_GetName(partner_p); + + if (partner_name != PROC_MYNA && + (partner_name != PROC_Tag_Mwait || + !static_cast(partner_p)->checkEndMessage()) && + (partner_name != PROC_Tag_Mhint || + !static_cast(partner_p)->checkNoAttention()) && + (partner_name != PROC_Tag_Mstop || + !static_cast(partner_p)->checkNoAttention()) && + partner_name != PROC_MIDNA) + { + s16 target; + if (partner_name == PROC_Tag_Mhint || partner_name == PROC_Tag_Mstop) { + target = cLib_targetAngleY(¤t.pos, &partner_p->mEyePos); + } else { + target = fopAcM_searchActorAngleY(this, partner_p); + } + + cLib_addCalcAngleS(&shape_angle.y, target, 4, 0x1000, 0x200); + } + } } -#pragma pop /* 80118654-801186D4 112F94 0080+00 2/2 0/0 0/0 .text setTalkAnime__9daAlink_cFv */ void daAlink_c::setTalkAnime() { @@ -415,10 +1327,10 @@ asm BOOL daAlink_c::checkDeadAction(int param_0) { /* 80118FF8-801190A4 113938 00AC+00 1/1 0/0 0/0 .text * setHighModelBck__9daAlink_cFP13mDoExt_bckAnmUs */ -void daAlink_c::setHighModelBck(mDoExt_bckAnm* i_bck, u16 param_1) { +void daAlink_c::setHighModelBck(mDoExt_bckAnm* i_bck, u16 i_anmID) { if (i_bck != NULL) { J3DAnmTransform* bck = (J3DAnmTransform*)dComIfG_getObjectIDRes( - dStage_roomControl_c::getDemoArcName(), param_1); + dStage_roomControl_c::getDemoArcName(), i_anmID); if (bck != NULL && i_bck->getBckAnm() != bck) { if (field_0x06b4 == bck) { @@ -434,9 +1346,9 @@ void daAlink_c::setHighModelBck(mDoExt_bckAnm* i_bck, u16 param_1) { */ // extra mr #ifdef NONMATCHING -void daAlink_c::setHighModelFaceBtk(u16 param_0) { +void daAlink_c::setHighModelFaceBtk(u16 i_anmID) { J3DAnmTextureSRTKey* btk = (J3DAnmTextureSRTKey*)dComIfG_getObjectIDRes( - dStage_roomControl_c::getDemoArcName(), param_0); + dStage_roomControl_c::getDemoArcName(), i_anmID); if (btk != NULL && field_0x068c != btk) { btk->searchUpdateMaterialID(mpDemoFCTongueModel->getModelData()); @@ -461,9 +1373,9 @@ asm void daAlink_c::setHighModelFaceBtk(u16 param_0) { * setDemoBrk__9daAlink_cFPP15J3DAnmTevRegKeyP8J3DModelUs */ // extra mr #ifdef NONMATCHING -void daAlink_c::setDemoBrk(J3DAnmTevRegKey** param_0, J3DModel* param_1, u16 param_2) { +void daAlink_c::setDemoBrk(J3DAnmTevRegKey** param_0, J3DModel* param_1, u16 i_anmID) { J3DAnmTevRegKey* brk = - (J3DAnmTevRegKey*)dComIfG_getObjectIDRes(dStage_roomControl_c::getDemoArcName(), param_2); + (J3DAnmTevRegKey*)dComIfG_getObjectIDRes(dStage_roomControl_c::getDemoArcName(), i_anmID); if (brk != NULL && *param_0 != brk) { brk->searchUpdateMaterialID(param_1->getModelData()); @@ -486,15 +1398,87 @@ asm void daAlink_c::setDemoBrk(J3DAnmTevRegKey** param_0, J3DModel* param_1, u16 /* 801191C4-80119464 113B04 02A0+00 1/1 0/0 0/0 .text * setStickAnmData__9daAlink_cFP10J3DAnmBaseiiUsi */ +// matches with literals +#ifdef NONMATCHING +f32 daAlink_c::setStickAnmData(J3DAnmBase* i_anm, int param_1, int param_2, u16 param_3, + int param_4) { + dDemo_actor_c* demo_actor_p = dDemo_c::getActor(mDemoActorId); + + f32 var_f31; + if (i_anm != NULL) { + var_f31 = i_anm->getFrame(); + } else { + var_f31 = 0.0f; + } + + if (param_4 == 0 || (checkInputOnR() && param_4 == getDirectionFromAngle(mStickAngle) + 1)) { + if (param_4 != 0) { + dDemo_c::setBranchId(1, 1); + } + + if (param_1 == 1) { + if (param_2 == 2) { + setDemoBodyBck(demo_actor_p, param_3); + + if (param_4 == 0) { + if (demo_actor_p->checkEnable(0x40)) { + var_f31 = demo_actor_p->getAnmFrame(); + } else { + var_f31 = 0.0f; + } + } + } + } else if (param_1 == 9) { + if (param_2 == 2) { + if (i_checkNoResetFlg1(FLG1_UNK_10)) { + setHighModelBck(mpDemoFCTmpBck, param_3); + return 0.0f; + } + + setFaceDemoBck(param_3); + } else if (param_2 == 3) { + if (i_checkNoResetFlg1(FLG1_UNK_10)) { + setHighModelFaceBtk(param_3); + return 0.0f; + } + + setFaceDemoBtk(param_3); + } else if (param_2 == 5) { + setFaceDemoBtp(param_3); + } + + if (param_4 != 0 && i_anm != NULL) { + for (; var_f31 > i_anm->getFrameMax(); var_f31 -= i_anm->getFrameMax()) { + } + i_anm->setFrame(var_f31); + } + } else if (param_1 == 5) { + setHighModelBck(mpDemoHRTmpBck, param_3); + } else if (param_1 == 6) { + setHighModelBck(mpDemoHLTmpBck, param_3); + } else if (param_1 == 4) { + setHighModelBck(mpDemoHDTmpBck, param_3); + } + } + + if (param_4 != 0 && i_anm != NULL) { + for (; var_f31 > i_anm->getFrameMax(); var_f31 -= i_anm->getFrameMax()) { + } + } + + return var_f31; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::setStickAnmData(J3DAnmBase* param_0, int param_1, int param_2, u16 param_3, - int param_4) { +asm f32 daAlink_c::setStickAnmData(J3DAnmBase* param_0, int param_1, int param_2, u16 param_3, + int param_4) { nofralloc #include "asm/d/a/d_a_alink/setStickAnmData__9daAlink_cFP10J3DAnmBaseiiUsi.s" } #pragma pop +#endif /* ############################################################################################## */ /* 804256B8-804256CC 0523D8 0014+00 1/1 0/0 0/0 .bss dummy$36763 */ @@ -505,8 +1489,8 @@ static u8 dummy[20]; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void daAlink_c_getDemoIDData(dDemo_actor_c* param_0, int* param_1, int* param_2, - int* param_3, u16* param_4, int* param_5, int* param_6) { +static asm int daAlink_c_getDemoIDData(dDemo_actor_c* param_0, int* param_1, int* param_2, + int* param_3, u16* param_4, int* param_5, int* param_6) { nofralloc #include "asm/d/a/d_a_alink/daAlink_c_getDemoIDData__FP13dDemo_actor_cPiPiPiPUsPiPi.s" } @@ -553,6 +1537,214 @@ int daAlink_c::procCoToolDemoInit() { } /* 801196D8-80119D98 114018 06C0+00 1/0 0/0 0/0 .text procCoToolDemo__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procCoToolDemo() { + dDemo_actor_c* demo_actor_p = dDemo_c::getActor(mDemoActorId); + BOOL var_r29 = 0; + + i_onEndResetFlg1(ERFLG1_GANON_FINISH); + field_0x3198 = 0; + field_0x300e.y = 0; + field_0x2fab = 0; + + if (demo_actor_p != NULL) { + f32 var_f31 = 0.0f; + + if (demo_actor_p->checkEnable(2)) { + current.pos = demo_actor_p->getTrans(); + } + + if (demo_actor_p->checkEnable(8)) { + shape_angle = demo_actor_p->getRatate(); + current.angle = shape_angle; + } + + if (demo_actor_p->checkEnable(0x40)) { + var_f31 = demo_actor_p->getAnmFrame(); + } + + if (demo_actor_p->checkEnable(1)) { + int sp1C; + int sp18; + int sp14; + int sp10; + int spC; + u16 sp8; + while (daAlink_c_getDemoIDData(demo_actor_p, &sp1C, &sp18, &sp14, &sp8, &sp10, &spC)) { + if (sp10 != 0 && dDemo_c::getBranchId() == -1) { + dDemo_c::setBranchId(1, 0); + } + + if (sp1C == 0) { + if (sp18 == 5) { + field_0x2f93 = setDemoRightHandIndex(sp8); + } else if (sp18 == 6) { + field_0x2f92 = setDemoLeftHandIndex(sp8); + } else if (sp18 == 9) { + if (sp8 == 1 && mpDemoFCBlendModel != NULL && mpDemoFCTongueModel != NULL) { + i_onNoResetFlg1(FLG1_UNK_10); + var_r29 = 1; + } else { + endHighModel(); + } + } else if (sp18 == 7) { + if (sp8 == 1) { + field_0x2fab |= 2; + } + } else if (sp18 == 8) { + if (sp8 == 1) { + field_0x2fab |= 1; + } + } else if (sp18 == 0) { + if (sp14 == 1) { + field_0x3198 = sp8; + } else if (sp14 == 2) { + setDemoRide(sp8); + } else if (sp14 == 4 && + (field_0x300c == 0 || (sp8 != 0 && field_0x300c == 1) || + (sp8 == 0 && field_0x300c == 2))) + { + if (field_0x300c == 0) { + changeWarpMaterial(WARP_MAT_MODE_0); + } + + if (sp8 != 0) { + field_0x3484 = 1.0f; + field_0x3480 = -0.5f; + + if (i_checkWolf()) { + field_0x347c = 3.5f; + } else { + field_0x347c = 5.5f; + } + + field_0x300c = 2; + } else { + field_0x3484 = 0.0f; + mTevStr.field_0x344 = 0.0f; + field_0x347c = -0.5f; + + if (i_checkWolf()) { + field_0x3480 = 3.5f; + } else { + field_0x3480 = 5.5f; + } + + field_0x300c = 1; + } + } + } + } else if (sp1C == 1) { + JUT_ASSERT(2345, 0); + } else if (sp1C == 2) { + if (sp18 == 1) { + if (sp14 == 2) { + var_f31 = + setStickAnmData(getNowAnmPackUnder(UNDER_0), sp18, sp14, sp8, sp10); + } else if (sp14 == 4) { + J3DAnmTevRegKey* btk_p = (J3DAnmTevRegKey*)dComIfG_getObjectIDRes( + dStage_roomControl_c::getDemoArcName(), sp8); + if (btk_p != NULL && field_0x06f4 != btk_p) { + btk_p->setFrame(0.0f); + field_0x06f4 = btk_p; + } + + if (btk_p != NULL && spC == 0) { + btk_p->setFrame(var_f31); + } + } + } else if (sp18 == 4) { + if (sp14 == 2) { + setStickAnmData(NULL, sp18, sp14, sp8, sp10); + + if (mpDemoHDTmpBck != NULL && spC == 0) { + mpDemoHDTmpBck->setFrame(var_f31); + } + } + } else if (sp18 == 6) { + if (sp14 == 2) { + setStickAnmData(NULL, sp18, sp14, sp8, sp10); + + if (mpDemoHLTmpBck != NULL && spC == 0) { + mpDemoHLTmpBck->setFrame(var_f31); + } + } else if (sp14 == 4 && field_0x2f92 == 0xFB) { + setDemoBrk(&field_0x06f8, mpDemoHLTmpModel, sp8); + if (field_0x06f8 != NULL && spC == 0) { + field_0x06f8->setFrame(var_f31); + } + } + } else if (sp18 == 5) { + if (sp14 == 2) { + setStickAnmData(NULL, sp18, sp14, sp8, sp10); + + if (mpDemoHRTmpBck != NULL && spC == 0) { + mpDemoHRTmpBck->setFrame(var_f31); + } + } + } else if (sp18 == 9) { + if (sp14 == 2) { + setStickAnmData(field_0x2164.getBckAnm(), sp18, sp14, sp8, sp10); + + if (mpDemoFCTmpBck != NULL && spC == 0) { + mpDemoFCTmpBck->setFrame(var_f31); + } + } else if (sp14 == 3) { + setStickAnmData(mpFaceBtk, sp18, sp14, sp8, sp10); + + if (mpFaceBtk != NULL && spC == 0) { + mpFaceBtk->setFrame(var_f31); + } + } else if (sp14 == 5) { + setStickAnmData(field_0x2154, sp18, sp14, sp8, sp10); + + if (field_0x2154 != NULL && spC == 0) { + field_0x2154->setFrame(var_f31); + } + } else if (sp14 == 7) { + J3DAnmCluster* blk_p = (J3DAnmCluster*)dComIfG_getObjectIDRes( + dStage_roomControl_c::getDemoArcName(), sp8); + if (field_0x0698 != blk_p) { + field_0x0698 = blk_p; + field_0x069c->init(mpDemoFCTmpBls, field_0x0698, FALSE, + J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1); + field_0x069c->getBlkAnm()->setFrame(0.0f); + } + + if (spC == 0) { + if (field_0x069c != NULL && field_0x069c->getBlkAnm() != NULL) { + field_0x069c->getBlkAnm()->setFrame(var_f31); + } + } + } + } + } + } + } + + if (demo_actor_p->checkEnable(0x40)) { + getNowAnmPackUnder(UNDER_0)->setFrame(var_f31); + demo_actor_p->setAnmFrameMax(getNowAnmPackUnder(UNDER_0)->getFrameMax()); + mUnderFrameCtrl[0].setFrame(var_f31); + } + } + + if (field_0x300c != 0) { + warpModelTexScroll(); + } + + if (var_r29 == 0) { + endHighModel(); + } + + if (demo_actor_p == NULL) { + checkNextAction(0); + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -561,8 +1753,74 @@ asm int daAlink_c::procCoToolDemo() { #include "asm/d/a/d_a_alink/procCoToolDemo__9daAlink_cFv.s" } #pragma pop +#endif /* 80119D98-80119F64 1146D8 01CC+00 1/1 0/0 0/0 .text procCoTalkInit__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procCoTalkInit() { + if (mProcID == PROC_TALK) { + return 0; + } + + int var_r30; + if (mProcID == PROC_WOLF_LIE_START) { + var_r30 = 1; + } else if (mProcID == PROC_WOLF_LIE_MOVE) { + var_r30 = 2; + } else { + var_r30 = 0; + } + + commonProcInit(PROC_TALK); + + if (mDemo.getDemoMode() == 6) { + if (mEquipItem != KANTERA && mEquipItem != NO_ITEM) { + allUnequip(1); + } + } + + if (i_checkWolf()) { + field_0x3198 = 0; + mNormalSpeed = 0.0f; + + if (var_r30 == 0) { + setBlendWolfMoveAnime(daAlinkHIO_wlMove_c0::m.field_0xBC); + } else { + if (var_r30 == 1) { + field_0x2f99 = 13; + setSingleAnimeWolfBaseSpeed(WANM_CROUCH_WALK, 0.0f, + daAlinkHIO_wlLie_c0::m.field_0x40); + } else { + field_0x2f99 = 13; + daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl; + + if (fabsf(frameCtrl_p->getFrame() - 15.0f) / 15.0f < 0.5f) { + frameCtrl_p->setFrame(15.0f); + } else { + frameCtrl_p->setFrame(0.0f); + } + + frameCtrl_p->setRate(0.0f); + getNowAnmPackUnder(UNDER_0)->setFrame(frameCtrl_p->getFrame()); + field_0x2060->initOldFrameMorf(3.0f, 0, 40); + } + + dComIfGp_setPlayerStatus0(0, 0x8000000); + } + } else { + field_0x3198 = setTalkStartBack(&field_0x37c8); + if (!field_0x3198) { + setTalkAnime(); + mNormalSpeed = 0.0f; + } + } + + field_0x3008 = 30; + dComIfGp_setPlayerStatus0(0, 0x10); + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -571,8 +1829,61 @@ asm int daAlink_c::procCoTalkInit() { #include "asm/d/a/d_a_alink/procCoTalkInit__9daAlink_cFv.s" } #pragma pop +#endif /* 80119F64-8011A214 1148A4 02B0+00 1/0 0/0 0/0 .text procCoTalk__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procCoTalk() { + if (i_dComIfGp_checkPlayerStatus0(0, 0x8000000)) { + field_0x2f99 = 13; + } + + setShapeAngleToTalkActor(); + + if (field_0x3198 != 0) { + cXyz sp24 = field_0x37c8 - current.pos; + int var_r30 = 0; + + if (mLinkAcch.ChkWallHit()) { + dBgS_AcchCir* acchCir_p = field_0x18B0; + for (int i = 0; i < 3; i++) { + if (acchCir_p->ChkWallHit()) { + var_r30 = cLib_distanceAngleS(acchCir_p->GetWallAngleY(), current.angle.y); + break; + } + acchCir_p++; + } + } + + if (sp24.absXZ() < 0.001f || + cLib_distanceAngleS(sp24.atan2sX_Z(), current.angle.y) > 0x4000 || var_r30 > 0x4000) + { + current.pos.x = field_0x37c8.x; + current.pos.z = field_0x37c8.z; + field_0x3198 = 0; + setTalkAnime(); + mNormalSpeed = 0.0f; + } else if (field_0x3008 != 0) { + field_0x3008--; + } else { + field_0x3198 = 0; + setTalkAnime(); + mNormalSpeed = 0.0f; + } + } else { + if (mEquipItem == KANTERA) { + if (mUpperAnmHeap[0].getIdx() != getMainBckData(ANM_WAIT)->m_upperID) { + setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, 3.0f); + } + } + + current.angle.y = shape_angle.y; + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -581,8 +1892,72 @@ asm int daAlink_c::procCoTalk() { #include "asm/d/a/d_a_alink/procCoTalk__9daAlink_cFv.s" } #pragma pop +#endif /* 8011A214-8011A42C 114B54 0218+00 1/0 0/0 0/0 .text procCoOpenTreasureInit__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procCoOpenTreasureInit() { + if (!commonProcInitNotSameProc(PROC_OPEN_TREASURE)) { + return 1; + } + + f32 var_f31; + if (i_checkWolf()) { + setSingleAnimeWolfBase(WANM_TRES_OPEN); + if (mDemo.getParam0() != 1) { + mUnderFrameCtrl[0].setEnd(21); + } + + var_f31 = 130.0f; + field_0x3588 = l_wolfBaseAnime; + } else { + daAlink_ANM open_anm; + if (mDemo.getParam0() == 2) { + open_anm = ANM_TRES_OPEN_BIG; + var_f31 = 111.0f; + mDoAud_subBgmStart(Z2BGM_OPEN_BOX); + } else { + var_f31 = 88.0f; + + if (mDemo.getParam0() == 1) { + open_anm = ANM_TRES_OPEN_KICK; + } else { + open_anm = ANM_TRES_OPEN_SMALL; + } + } + + setSingleAnimeBase(open_anm); + field_0x3588 = l_waitBaseAnime; + } + + mNormalSpeed = 0.0f; + + fopAc_ac_c* partner_p = fopAcM_getEventPartner(this); + if (partner_p != NULL) { + shape_angle.y = partner_p->shape_angle.y + 0x8000; + current.angle.y = shape_angle.y; + + current.pos.x = partner_p->current.pos.x - var_f31 * cM_ssin(shape_angle.y); + current.pos.z = partner_p->current.pos.z - var_f31 * cM_scos(shape_angle.y); + current.pos.y = partner_p->current.pos.y; + } + + if (!i_checkWolf()) { + deleteEquipItem(FALSE, FALSE); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::YrotM(shape_angle.y); + mDoMtx_stack_c::transM(60.0f, 45.0f, 30.0f); + field_0x06fc->i_setBaseTRMtx(mDoMtx_stack_c::get()); + } + + field_0x300c = 0; + mLinkAcch.SetWallNone(); + mLinkAcch.OffLineCheck(); + i_onEndResetFlg1(ERFLG1_UNK_8); + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -591,6 +1966,7 @@ asm int daAlink_c::procCoOpenTreasureInit() { #include "asm/d/a/d_a_alink/procCoOpenTreasureInit__9daAlink_cFv.s" } #pragma pop +#endif /* 8011A42C-8011A4C0 114D6C 0094+00 1/0 0/0 0/0 .text procCoOpenTreasure__9daAlink_cFv */ int daAlink_c::procCoOpenTreasure() { @@ -612,6 +1988,40 @@ int daAlink_c::procCoOpenTreasure() { } /* 8011A4C0-8011A5CC 114E00 010C+00 1/0 0/0 0/0 .text procCoUnequipInit__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procCoUnequipInit() { + if (!commonProcInitNotSameProc(PROC_UNEQUIP)) { + return 0; + } + + mNormalSpeed = 0.0f; + field_0x300c = 0; + field_0x300e.x = 0; + + if (i_checkWolf()) { + setBlendWolfMoveAnime(daAlinkHIO_wlMove_c0::m.field_0x94); + } else { + setBlendMoveAnime(daAlinkHIO_basic_c0::m.mAnmBlendFactor); + + if (mDemo.getParam1() == 0) { + if (mEquipItem != NO_ITEM) { + allUnequip(0); + } + } else if (mDemo.getParam1() == 1) { + if (mEquipItem != 0x103) { + swordEquip(0); + } + } else if (mDemo.getParam1() == 2) { + field_0x300c = 1; + field_0x300e.x = 1; + setSingleAnime(ANM_TRADE_ITEM_PULL_OUT, 1.0f, 0.0f, 39, 3.0f); + } + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -620,6 +2030,7 @@ asm int daAlink_c::procCoUnequipInit() { #include "asm/d/a/d_a_alink/procCoUnequipInit__9daAlink_cFv.s" } #pragma pop +#endif /* 8011A5CC-8011A688 114F0C 00BC+00 1/0 0/0 0/0 .text procCoUnequip__9daAlink_cFv */ int daAlink_c::procCoUnequip() { @@ -648,8 +2059,8 @@ int daAlink_c::procCoUnequip() { } /* 8011A688-8011A6FC 114FC8 0074+00 4/4 0/0 0/0 .text setGetSubBgm__9daAlink_cFi */ -void daAlink_c::setGetSubBgm(int param_0) { - u32 se_type = getSeType[param_0]; +void daAlink_c::setGetSubBgm(int i_seTypeIdx) { + u32 se_type = getSeType[i_seTypeIdx]; if (se_type == 3 && field_0x300e.y == 0) { se_type = 7; @@ -662,7 +2073,7 @@ void daAlink_c::setGetSubBgm(int param_0) { } /* 8011A6FC-8011A798 11503C 009C+00 1/0 0/0 0/0 .text checkTreasureRupeeReturn__9daAlink_cCFi */ -bool daAlink_c::checkTreasureRupeeReturn(int i_itemNo) const { +BOOL daAlink_c::checkTreasureRupeeReturn(int i_itemNo) const { if (i_itemNo == LINKS_SAVINGS) { i_itemNo = PURPLE_RUPEE; } @@ -676,6 +2087,147 @@ bool daAlink_c::checkTreasureRupeeReturn(int i_itemNo) const { } /* 8011A798-8011AC28 1150D8 0490+00 2/1 0/0 0/0 .text procCoGetItemInit__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procCoGetItemInit() { + BOOL var_r31 = 0; + BOOL var_r30 = 0; + if (mProcID == PROC_GET_ITEM || mProcID == PROC_INSECT_CATCH || + (mProcID == PROC_PREACTION_UNEQUIP && !checkNoUpperAnime())) + { + return 1; + } + + if (mProcID == PROC_OPEN_TREASURE || mProcID == PROC_GET_READY_SIT) { + if (mProcID == PROC_OPEN_TREASURE) { + var_r31 = 1; + } + var_r30 = 1; + } + + mLinkAcch.ClrWallNone(); + + if (!i_checkWolf() && mEquipItem != NO_ITEM && var_r30 == 0) { + if (i_checkModeFlg(0x400) || (checkStageName("D_MN05B") && mEquipItem == BOOMERANG && + !i_dComIfGs_isItemFirstBit(BOOMERANG))) + { + deleteEquipItem(0, 0); + } else { + return procPreActionUnequipInit(PROC_GET_ITEM, NULL); + } + } + + commonProcInit(PROC_GET_ITEM); + mNormalSpeed = 0.0f; + field_0x300a = 0; + field_0x3478 = 0.0f; + + if (mDemo.getParam0() != 0) { + int item_no; + if (mDemo.getParam0() != 0x100) { + item_no = mDemo.getParam0(); + } else { + item_no = dComIfGp_event_getGtItm(); + } + + int item_partner_id = fopAcM_createItemForPresentDemo(¤t.pos, item_no, 0, -1, + fopAcM_GetRoomNo(this), NULL, NULL); + if (item_partner_id != 0xFFFFFFFF) { + dComIfGp_event_setItemPartnerId(item_partner_id); + } + + field_0x300c = item_no; + } else { + daItemBase_c* item_partner_p = (daItemBase_c*)fopAcM_getItemEventPartner(this); + if (item_partner_p != NULL) { + field_0x300c = item_partner_p->getItemNo(); + } else { + field_0x300c = -1; + } + } + + if (i_checkWolf()) { + if (var_r30 != 0) { + setSingleAnimeWolfBase(WANM_GET_A); + } else { + setSingleAnimeWolf(WANM_GET_A, 1.0f, 10.0f, -1, 3.0f); + } + + field_0x2f99 = 12; + field_0x3588 = l_wolfBaseAnime; + field_0x347c = 10.0f; + field_0x3480 = 19.0f; + field_0x3484 = 0.1111111f; + } else if (i_checkModeFlg(0x400)) { + setSingleAnimeBase(ANM_HORSE_GET_ITEM); + + if (field_0x300c != -1) { + setGetItemFace(field_0x300c); + } + + if (i_checkReinRide()) { + setSyncRidePos(); + if (checkBoarRide()) { + setUnderAnime(0x26E, UNDER_2, 1.0f, 0.0f, -1, -1.0f); + } + } + field_0x3478 = 9.0f; + field_0x300a = 1; + } else { + if (var_r30 != 0) { + setSingleAnimeBase(ANM_GET_A); + } else { + setSingleAnimeBase(ANM_GET_A_WAIT); + + if (field_0x300c != -1) { + setGetItemFace(field_0x300c); + } + field_0x300a = -7; + } + + field_0x347c = 9.0f; + field_0x3480 = 16.0f; + field_0x3484 = 0.1428571f; + field_0x2f99 = 0xC; + field_0x3588 = l_waitBaseAnime; + } + + field_0x300e.y = 0; + + if (var_r31 != 0) { + field_0x300e.x = -0x8000; + field_0x300e.y = 1; + } else if (mDemo.getParam1() == 2) { + field_0x300e.x = 0; + } else { + field_0x300e.x = + shape_angle.y - (fopCamM_GetAngleY(dComIfGp_getCamera(field_0x317c)) + 0x8000); + s16 temp_r28 = field_0x300e.x + 0x16C1; + s16 temp_r31 = field_0x300e.x - 0x16C1; + + if (abs(temp_r28) > abs(temp_r31)) { + field_0x300e.x = temp_r31; + } else { + field_0x300e.x = temp_r28; + } + } + + current.angle.y = shape_angle.y; + mMsgClassID = -1; + field_0x3008 = 0; + field_0x3198 = 0; + field_0x32cc = 0; + field_0x300e.z = 0; + dKy_Itemgetcol_chg_on(); + + dComIfGp_setPlayerStatus1(0, 0x4000000); + if (field_0x300e.y != 0) { + i_onEndResetFlg1(ERFLG1_UNK_8); + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -684,8 +2236,207 @@ asm int daAlink_c::procCoGetItemInit() { #include "asm/d/a/d_a_alink/procCoGetItemInit__9daAlink_cFv.s" } #pragma pop +#endif /* 8011AC28-8011B3F0 115568 07C8+00 1/0 0/0 0/0 .text procCoGetItem__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procCoGetItem() { + if (field_0x300e.y != 0) { + i_onEndResetFlg1(ERFLG1_UNK_8); + } + + if (field_0x3198 != 0) { + if (i_checkModeFlg(0x400) && i_checkReinRide()) { + setSyncRidePos(); + } + + dComIfGp_evmng_cutEnd(field_0x3184); + return 1; + } + + daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl; + + if (i_checkModeFlg(0x400)) { + if (i_checkReinRide()) { + setSyncRidePos(); + } + } else if (field_0x2f99 != 12) { + field_0x2f99 = 4; + } + + if (field_0x300a == 0 && !(frameCtrl_p->getFrame() < field_0x347c)) { + if (frameCtrl_p->getFrame() < field_0x3480) { + shape_angle.y = + current.angle.y - + (field_0x3484 * (field_0x300e.x * (frameCtrl_p->getFrame() - field_0x347c))); + + if (field_0x300e.y != 0 && i_checkWolf()) { + current.pos.x -= cM_ssin(current.angle.y) * 3.888889f; + current.pos.z -= cM_scos(current.angle.y) * 3.888889f; + } + } else { + shape_angle.y = current.angle.y - field_0x300e.x; + } + } + + daItemBase_c* item_partner_p = (daItemBase_c*)fopAcM_getItemEventPartner(this); +#ifdef DEBUG + if (item_partner_p != NULL && fopAcM_GetName(item_partner_p) != PROC_ITEM && + fopAcM_GetName(item_partner_p) != PROC_Demo_Item) + { + // "Get Item is not an item!!! %d\n" + OSReport("ゲットするアイテムがアイテムじゃない!!! %d\n", + fopAcM_GetName(item_partner_p)); + JUT_ASSERT(3415, 0); + } +#endif + + if (field_0x300c == -1 && item_partner_p != NULL) { + field_0x300c = item_partner_p->getItemNo(); + + if (!i_checkWolf() && (checkUnderMove0BckNoArc(ANM_GET_A_WAIT) || i_checkModeFlg(0x400))) { + setGetItemFace(field_0x300c); + } + } + + field_0x3478 += 1.0f; + if (field_0x3478 > 100.0f) { + field_0x3478 = 100.0f; + } + + if (field_0x3478 >= 9.0f && field_0x3008 == 0 && field_0x300c != -1) { + field_0x3008 = 1; + + int get_bgm_type = field_0x300c; + if (field_0x300c == 33 && (dComIfGs_getMaxLife() % 5) == 4) { + get_bgm_type = 34; + } + + setGetSubBgm(get_bgm_type); + } + + BOOL var_r27 = true; + if (((field_0x300a == 0 && frameCtrl_p->getFrame() >= (f32)frameCtrl_p->getEnd() - 5.0f) || + field_0x300a != 0) && + item_partner_p != NULL) + { + field_0x280c.setData(item_partner_p); + item_partner_p->show(); + var_r27 = false; + } + + if (checkAnmEnd(frameCtrl_p)) { + field_0x300a = 1; + + if (i_checkWolf()) { + setSingleAnimeWolfBase(WANM_GET); + } else { + setSingleAnimeBase(ANM_GET_A_WAIT); + setGetItemFace(field_0x300c); + } + + field_0x2f99 = 12; + if (mDemo.getParam1() == 1) { + dComIfGp_evmng_cutEnd(field_0x3184); + } + } else if (field_0x300a != 0) { + if (mDemo.getParam1() == 1 && i_checkModeFlg(0x400)) { + dComIfGp_evmng_cutEnd(field_0x3184); + } + + if (field_0x300a < 0) { + field_0x300a++; + + if (field_0x300a == 0) { + field_0x300a = 1; + shape_angle.y = current.angle.y - field_0x300e.x; + + if (mDemo.getParam1() == 1) { + dComIfGp_evmng_cutEnd(field_0x3184); + } + } else { + shape_angle.y = + current.angle.y - (field_0x300e.x * (field_0x300a + 7)) * (1.0f / 7.0f); + } + } + + if (item_partner_p != NULL) { + if (!fpcM_IsCreating(fpcM_GetID(item_partner_p))) { + if (field_0x32cc == 0 && field_0x300c != -1) { + if (field_0x300c == 0x70 && checkStageName("F_SP115")) { + field_0x32cc = 0x6E; + } else if (field_0x300c == 0x23 && checkStageName("D_MN11")) { + field_0x32cc = 0x5C0; + } else if (field_0x300c == 0xE0) { + if (dComIfGs_getPohSpiritNum() == 20) { + field_0x32cc = 0x4CF; + } else if (dComIfGs_getPohSpiritNum() == 60) { + field_0x32cc = 0x4D0; + } else { + field_0x32cc = field_0x300c + 0x65; + } + } else if (field_0x300c == 0x21) { + field_0x32cc = heartPieceMessage[dComIfGs_getMaxLife() % 5]; + } else if (field_0x300c == 0x33 && checkStageName("D_MN07")) { + field_0x32cc = 0x151; + } else { + field_0x32cc = field_0x300c + 0x65; + } + } + + if (field_0x32cc != 0 && checkEndMessage(field_0x32cc)) { + if (field_0x32cc < 0x164) { + if (field_0x300c >= 0xC0 && field_0x300c <= 0xD7 && + i_dComIfGs_isItemFirstBit(field_0x300c)) + { + field_0x32cc += 2000; + mMsgClassID = -1; + return 1; + } + + if (field_0x300e.y != 0 && checkTreasureRupeeReturn(field_0x300c)) { + if (field_0x300c == 0xED) { + field_0x32cc = 0x6A; + } + + field_0x32cc += 0x5DC; + mMsgClassID = -1; + return 1; + } + } + + dComIfGp_evmng_cutEnd(field_0x3184); + item_partner_p->dead(); + field_0x3198 = 1; + field_0x2f99 = 12; + + if (i_checkWolf()) { + setBlendWolfMoveAnime(daAlinkHIO_wlMove_c0::m.field_0x94); + } else { + if (mEquipItem == KANTERA) { + field_0x2f94 = 0; + } + + current.angle.y = shape_angle.y; + if (i_checkModeFlg(0x400)) { + setDoubleAnime(0.0f, 1.0f, 1.0f, ANM_HORSE_WAIT, ANM_HORSE_WAIT, 10, + 3.0f); + field_0x2f99 = 0x60; + } else { + setBlendMoveAnime(daAlinkHIO_basic_c0::m.mAnmBlendFactor); + } + } + } + } + } + } else if (var_r27 && item_partner_p != NULL) { + item_partner_p->hide(); + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -694,6 +2445,7 @@ asm int daAlink_c::procCoGetItem() { #include "asm/d/a/d_a_alink/procCoGetItem__9daAlink_cFv.s" } #pragma pop +#endif /* 8011B3F0-8011B46C 115D30 007C+00 1/0 0/0 0/0 .text procCoTurnBackInit__9daAlink_cFv */ int daAlink_c::procCoTurnBackInit() { @@ -713,6 +2465,35 @@ int daAlink_c::procCoTurnBackInit() { } /* 8011B46C-8011B57C 115DAC 0110+00 1/0 0/0 0/0 .text procCoTurnBack__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procCoTurnBack() { + daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl; + + if (checkAnmEnd(frameCtrl_p)) { + if (field_0x300c == 0) { + if (i_checkWolf()) { + setBlendWolfMoveAnime(5.0f); + } else { + setDoubleAnime(0.0f, daAlinkHIO_noActAtnMove_c0::m.mWaitAnmSpeed, + daAlinkHIO_noActAtnMove_c0::m.mWaitAnmSpeed, ANM_WAIT_B, ANM_WAIT_B, + 2, 3.0f); + } + + field_0x300c = 1; + } + + dComIfGp_evmng_cutEnd(field_0x3184); + } else if (field_0x300c != 0) { + dComIfGp_evmng_cutEnd(field_0x3184); + } else if (!i_checkWolf() && frameCtrl_p->getFrame() >= 29.0f) { + field_0x2f92 = 1; + field_0x2f93 = 6; + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -721,8 +2502,74 @@ asm int daAlink_c::procCoTurnBack() { #include "asm/d/a/d_a_alink/procCoTurnBack__9daAlink_cFv.s" } #pragma pop +#endif /* 8011B57C-8011B71C 115EBC 01A0+00 1/0 0/0 0/0 .text procDoorOpenInit__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procDoorOpenInit() { + if (!commonProcInitNotSameProc(PROC_DOOR_OPEN)) { + return 1; + } + + daAlink_ANM open_anm; + f32 start_f = 0.0f; + s16 end_f = -1; + + field_0x3478 = daAlinkHIO_basic_c0::m.mAnmBlendFactor; + field_0x3008 = 0; + + if (mDemo.getParam0() == 4) { + open_anm = ANM_DOOR_OPEN_ROLL; + field_0x300c = 1; + field_0x300e.x = 1; + field_0x300e.y = 0; + } else if (mDemo.getParam0() == 5) { + open_anm = ANM_DOOR_OPEN_SLIDE; + field_0x300c = 1; + field_0x300e.x = 1; + field_0x300e.y = 0; + } else { + field_0x300e.x = 0; + + if (mDemo.getParam0() & 1) { + open_anm = ANM_DOOR_OPEN_RIGHT; + field_0x347c = 42.0f; + } else { + open_anm = ANM_DOOR_OPEN_LEFT; + field_0x347c = 46.0f; + } + + if (mDemo.getParam0() & 4) { + field_0x3478 = 10.0f; + field_0x3008 = 10; + + if (open_anm == ANM_DOOR_OPEN_LEFT) { + end_f = 14; + } else { + end_f = 18; + } + } else if (mDemo.getParam0() & 2) { + start_f = 38.0f; + field_0x2f99 = 5; + field_0x34d4 = l_waitBaseAnime; + } + + field_0x300e.y = 1; + field_0x300c = 0; + } + + setSingleAnime(open_anm, 1.0f, start_f, end_f, 0.0f); + mNormalSpeed = 0.0f; + + mLinkAcch.SetWallNone(); + mLinkAcch.OnLineCheckNone(); + field_0x3588 = l_waitBaseAnime; + field_0x3198 = 0; + field_0x300e.z = 0; + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -731,8 +2578,68 @@ asm int daAlink_c::procDoorOpenInit() { #include "asm/d/a/d_a_alink/procDoorOpenInit__9daAlink_cFv.s" } #pragma pop +#endif /* 8011B71C-8011B914 11605C 01F8+00 1/0 0/0 0/0 .text procDoorOpen__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procDoorOpen() { + daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl; + + if (field_0x3198 == 0) { + if (field_0x300c == 0 && field_0x300e.y != 0) { + if (frameCtrl_p->getFrame() >= 9.0f && frameCtrl_p->getFrame() < field_0x347c) { + field_0x2f92 = 3; + } else { + field_0x2f92 = 4; + } + } else if (frameCtrl_p->checkPass(18.0f) && field_0x300e.x != 0) { + voiceStart(Z2SE_AL_V_PUSH_ROCK); + field_0x300e.x = 0; + } + } + + if (checkAnmEnd(frameCtrl_p)) { + if (field_0x3008 != 0) { + daAlink_ANM open_anm; + if (mDemo.getParam0() & 1) { + open_anm = ANM_DOOR_OPEN_LOCK_RIGHT; + } else { + open_anm = ANM_DOOR_OPEN_LOCK_LEFT; + } + + seStartMapInfo(Z2SE_OBJ_KNOB_DOOR_LOCKED); + setSingleAnimeBaseMorf(open_anm, 0.0f); + field_0x3008 = 0; + field_0x2f99 = 5; + field_0x300e.y = 0; + } else { + mLinkAcch.ClrWallNone(); + mLinkAcch.OffLineCheckNone(); + dComIfGp_evmng_cutEnd(field_0x3184); + onModeFlg(1); + offModeFlg(0x4000); + + if (field_0x300c == 0) { + setBlendMoveAnime(field_0x3478); + } + field_0x3198 = 1; + } + } else if (field_0x3198 == 0) { + if (field_0x300c == 0) { + if (field_0x300e.z == 0) { + field_0x300e.z = 1; + } else { + field_0x2f99 = 5; + } + } + } else { + dComIfGp_evmng_cutEnd(field_0x3184); + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -741,8 +2648,39 @@ asm int daAlink_c::procDoorOpen() { #include "asm/d/a/d_a_alink/procDoorOpen__9daAlink_cFv.s" } #pragma pop +#endif /* 8011B914-8011BA20 116254 010C+00 1/1 0/0 0/0 .text procCoLookWaitInit__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procCoLookWaitInit() { + if (!commonProcInitNotSameProc(PROC_LOOK_WAIT)) { + return 0; + } + + i_onNoResetFlg0(FLG0_UNK_100000); + + if (mGrabItemAcKeep.getActor() != NULL && (checkGrabAnime() || checkWolfGrabAnime())) { + onModeFlg(0x100000); + + if (!i_checkWolf()) { + setWaterInAnmRate(&mUpperFrameCtrl[2], 1.0f); + } + } + + mNormalSpeed = 0.0f; + + if (i_checkWolf()) { + setBlendWolfMoveAnime(daAlinkHIO_wlMove_c0::m.field_0x94); + } else { + setBlendMoveAnime(daAlinkHIO_basic_c0::m.mAnmBlendFactor); + } + + current.angle.y = shape_angle.y; + field_0x2f98 = 4; + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -751,6 +2689,7 @@ asm int daAlink_c::procCoLookWaitInit() { #include "asm/d/a/d_a_alink/procCoLookWaitInit__9daAlink_cFv.s" } #pragma pop +#endif /* 8011BA20-8011BABC 116360 009C+00 1/0 0/0 0/0 .text procCoLookWait__9daAlink_cFv */ int daAlink_c::procCoLookWait() { @@ -894,6 +2833,102 @@ int daAlink_c::procDemoBoomerangCatch() { } /* 8011BE54-8011C1B4 116794 0360+00 2/2 0/0 0/0 .text procCoDeadInit__9daAlink_cFi */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procCoDeadInit(int param_0) { + if (!commonProcInitNotSameProc(PROC_DEAD)) { + return 1; + } + + dComIfGp_event_compulsory(this, NULL, 0xFFFF); + mDemo.i_setSpecialDemoType(); + mNormalSpeed = 0.0f; + mDamageTimer = 0; + + if (i_checkWolf()) { + field_0x300e.y = 2; + } else { + field_0x300e.y = 2; + } + + setDeadRideSyncPos(); + + if (i_checkNoResetFlg2(FLG2_UNK_40000)) { + if (param_0) { + if (i_checkWolf()) { + setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMove_c0::m.field_0x70, 3.0f); + } else { + setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, 3.0f); + } + } + + field_0x3478 = 0.38f; + } else { + if (i_checkWolf()) { + if (i_checkModeFlg(0x40000)) { + setSingleAnimeWolfBase(WANM_SWIM_DIE); + setFaceBasicTexture(FTANM_UNK_9D); + dComIfGp_setPlayerStatus0(0, 0x100000); + voiceStart(Z2SE_WL_V_DIE_WATER); + } else { + setSingleAnimeWolfBase(WANM_DIE); + setFaceBasicTexture(FTANM_UNK_9C); + voiceStart(Z2SE_WL_V_DIE); + } + } else { + daAlink_ANM die_anm; + + if (i_checkModeFlg(0x400)) { + if (i_checkReinRide()) { + die_anm = ANM_HORSE_DIE; + + if (checkHorseUnderItemAnime()) { + resetUnderAnime(UNDER_2, -1.0f); + } + + if (checkHorseRide()) { + daHorse_c* horse_p = i_dComIfGp_getHorseActor(); + horse_p->i_changeOriginalDemo(); + horse_p->i_changeDemoMode(5, 0); + } else { + mRideAcKeep.getActor()->speedF = 0.0f; + } + } + + voiceStart(Z2SE_AL_V_DIE_SHORT); + } else if (i_checkModeFlg(0x40000)) { + die_anm = ANM_SWIM_DIE; + dComIfGp_setPlayerStatus0(0, 0x100000); + voiceStart(Z2SE_AL_V_DIE_SHORT); + + if (speed.y < 0.0f) { + speed.y = 0.0f; + } + } else { + die_anm = ANM_DIE; + onModeFlg(0x2000000); + field_0x33cc = 0.0f; + voiceStart(Z2SE_AL_V_DIE); + } + + setSingleAnimeBase(die_anm); + } + + field_0x3478 = 1.0f; + } + + field_0x300e.x = 0; + field_0x3008 = 0; + dComIfGp_setPlayerStatus0(0, 0x20000000); + mMsgClassID = 0; + setFootEffectProcType(4); + field_0x300c = 0; + field_0x3080 = 0; + field_0x300e.z = 0x3F; + field_0x3198 = -1; + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -902,8 +2937,110 @@ asm int daAlink_c::procCoDeadInit(int param_0) { #include "asm/d/a/d_a_alink/procCoDeadInit__9daAlink_cFi.s" } #pragma pop +#endif /* 8011C1B4-8011C62C 116AF4 0478+00 1/0 0/0 0/0 .text procCoDead__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procCoDead() { + daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl; + + if (field_0x3008 == 0) { + setDeadRideSyncPos(); + field_0x3008 = 1; + return 1; + } + + if (mMsgClassID == 0) { + mMsgClassID = d_GameOver_Create(0); + if (mMsgClassID == 0) { + return 1; + } + + mDoAud_bgmStart(Z2BGM_GAME_OVER); + } + + if (!i_checkNoResetFlg2(FLG2_UNK_40000)) { + field_0x300e.x++; + if (field_0x300e.x == 2) { + dCam_getBody()->StartEventCamera(9, fopAcM_GetID(this), 0); + } else if (field_0x300e.x > 10) { + field_0x300e.x = 10; + } + + if (!i_checkModeFlg(0x400)) { + if (i_checkModeFlg(0x40000)) { + if (i_checkNoResetFlg0(FLG0_UNK_80) && current.pos.y > mWaterY) { + current.pos.y = mWaterY; + i_onNoResetFlg0(FLG0_UNK_100); + } + } else { + field_0x33cc = (frameCtrl_p->getFrame() - 101.0f) / 19.0f; + + if ((!i_checkWolf() && frameCtrl_p->checkPass(122.0f)) || + (i_checkWolf() && frameCtrl_p->checkPass(114.0f))) + { + field_0x2f9d = 4; + } + } + } + } + + setDeadRideSyncPos(); + + if (checkAnmEnd(frameCtrl_p) || ((i_checkModeFlg(0x40000) && frameCtrl_p->getFrame() > 70.0f) || + i_checkNoResetFlg2(FLG2_UNK_40000))) + { + cLib_chaseF(&field_0x3478, 0.0f, 0.01f); + if (field_0x3478 < 0.38f) { + d_GameOver_animeStart(mMsgClassID); + } + + if (field_0x300c == 0 && d_GameOver_CheckDelete(mMsgClassID)) { + field_0x300c = 1; + } + + if (field_0x300c != 0 && dComIfGp_getGameoverStatus() == 2 && + !i_checkNoResetFlg0(FLG0_UNK_4000)) + { + i_dComIfGp_setItemLifeCount(-(i_dComIfGs_getLife() - 12), 0); + + u32 var_r31; + int room_no = fopAcM_GetRoomNo(this); + if (checkStageName("F_SP102") || (checkStageName("D_MN08D") && room_no == 55)) { + var_r31 = 0; + } else { + var_r31 = 5; + } + + int var_r30 = -1; + int var_r3_2; + if (checkStageName("D_MN09A") && room_no == 50 && + (dComIfG_play_c::getLayerNo(0) == 0 || dComIfG_play_c::getLayerNo(0) == 1)) + { + var_r3_2 = dComIfG_play_c::getLayerNo(0) + 1; + } else if (checkBossRoom() && + (((room_no == 50 && !dComIfGs_isStageBossEnemy()) || + (room_no == 51 && !dComIfGs_isStageMiddleBoss())) || + (checkStageName("D_MN08C") && !i_dComIfGs_isEventBit(0x2880)))) + { + var_r3_2 = 0; + } else if (field_0x300e.z != 0x3F) { + var_r3_2 = field_0x300e.z; + var_r30 = field_0x3198; + } else { + startRestartRoom(var_r31, 0xC9, 0, 1); + return 1; + } + + i_onNoResetFlg0(FLG0_UNK_4000); + dStage_changeScene(var_r3_2, 0.0f, var_r31, var_r30, shape_angle.y, -1); + } + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -912,17 +3049,37 @@ asm int daAlink_c::procCoDead() { #include "asm/d/a/d_a_alink/procCoDead__9daAlink_cFv.s" } #pragma pop +#endif /* 8011C62C-8011C760 116F6C 0134+00 1/0 0/0 0/0 .text procCoLookAroundInit__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int daAlink_c::procCoLookAroundInit() { - nofralloc -#include "asm/d/a/d_a_alink/procCoLookAroundInit__9daAlink_cFv.s" +int daAlink_c::procCoLookAroundInit() { + if (!commonProcInitNotSameProc(PROC_LOOK_AROUND)) { + return 0; + } + + field_0x300e.x = 0; + + if (i_checkWolf()) { + setSingleAnimeWolfBase(WANM_ENTRANCE); + setFaceBasicTexture(FTANM_UNK_A0); + field_0x3588 = l_wolfBaseAnime; + voiceStart(Z2SE_WL_V_ENTRANCE); + } else { + if (mDemo.getParam0() == 1) { + setSingleAnimeBase(ANM_ODOROKU); + field_0x3588 = l_halfAtnWaitBaseAnime; + } else { + setSingleAnimeBase(ANM_ENTRANCE); + field_0x3588 = l_waitBaseAnime; + field_0x300e.x = 1; + } + } + + mNormalSpeed = FLOAT_LABEL(lit_6108); + field_0x300c = 0; + return 1; } -#pragma pop /* 8011C760-8011C81C 1170A0 00BC+00 1/0 0/0 0/0 .text procCoLookAround__9daAlink_cFv */ int daAlink_c::procCoLookAround() { @@ -1076,6 +3233,42 @@ int daAlink_c::procHandPatInit() { } /* 8011CCA8-8011CDE0 1175E8 0138+00 1/0 0/0 0/0 .text procHandPat__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procHandPat() { + daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl; + + if (field_0x300c != 0) { + if (checkAnmEnd(frameCtrl_p)) { + dComIfGp_evmng_cutEnd(field_0x3184); + + if (field_0x300e.x == 0) { + setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, 3.0f); + field_0x300e.x = 1; + } + } + } else { + if (field_0x2f99 != 13) { + field_0x2f99 = 5; + } + + if (checkAnmEnd(frameCtrl_p)) { + setSingleAnimeBase(ANM_WAIT_B_TO_A); + field_0x300c = 1; + shape_angle.y += 0x8000; + field_0x2fe6 = shape_angle.y; + current.angle.y = shape_angle.y; + setOldRootQuaternion(0, -0x8000, 0); + field_0x2f99 = 0x30; + } else if (frameCtrl_p->getFrame() >= 81.0f) { + field_0x2f92 = 1; + field_0x2f93 = 6; + } + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1084,18 +3277,77 @@ asm int daAlink_c::procHandPat() { #include "asm/d/a/d_a_alink/procHandPat__9daAlink_cFv.s" } #pragma pop +#endif /* 8011CDE0-8011CF60 117720 0180+00 1/0 0/0 0/0 .text procCoFogDeadInit__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int daAlink_c::procCoFogDeadInit() { - nofralloc -#include "asm/d/a/d_a_alink/procCoFogDeadInit__9daAlink_cFv.s" +int daAlink_c::procCoFogDeadInit() { + if (!commonProcInitNotSameProc(PROC_FOG_DEAD)) { + return 1; + } + + mNormalSpeed = FLOAT_LABEL(lit_6108); + mDamageTimer = 0; + + if (mLinkAcch.ChkGroundHit()) { + if (i_checkWolf()) { + setSingleAnimeWolfBase(WANM_DIE); + setFaceBasicTexture(FTANM_UNK_9C); + voiceStart(Z2SE_WL_V_DIE); + } else { + setSingleAnimeBase(ANM_DIE); + voiceStart(Z2SE_AL_V_DIE); + } + } else { + setJumpMode(); + + if (i_checkWolf()) { + setSingleAnimeWolfBaseSpeed(WANM_FALL_LAND, FLOAT_LABEL(lit_6108), + daAlinkHIO_wlDamFall_c0::m.field_0x3C); + } else { + setSingleAnimeBaseSpeed(ANM_DMG_FALL, FLOAT_LABEL(lit_6108), + daAlinkHIO_damFall_c0::m.mFallAnmMorf); + } + } + + field_0x3194 = 0; + + dCam_getBody()->StartEventCamera(0x13, fopAcM_GetID(this), "Type", 1, &field_0x3194, 0); + field_0x3008 = 60; + field_0x300c = 0; + return 1; } -#pragma pop /* 8011CF60-8011D0A0 1178A0 0140+00 1/0 0/0 0/0 .text procCoFogDead__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procCoFogDead() { + if (mLinkAcch.ChkGroundHit() && i_checkModeFlg(0x2)) { + offModeFlg(0x2); + + if (i_checkWolf()) { + setSingleAnimeWolfBase(WANM_DIE); + setFaceBasicTexture(FTANM_UNK_9C); + voiceStart(Z2SE_WL_V_DIE); + } else { + setSingleAnimeBase(ANM_DIE); + voiceStart(Z2SE_AL_V_DIE); + } + } + + if (field_0x3008 > 0) { + field_0x3008--; + } else if (field_0x3008 == 0) { + if (dStage_changeScene(daTagMist_c::getPlayerNo(), 0.0f, 5, fopAcM_GetRoomNo(this), + shape_angle.y, -1)) + { + seStartSystem(Z2SE_FORCE_BACK); + field_0x3008--; + } + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1104,6 +3356,7 @@ asm int daAlink_c::procCoFogDead() { #include "asm/d/a/d_a_alink/procCoFogDead__9daAlink_cFv.s" } #pragma pop +#endif /* 8011D0A0-8011D110 1179E0 0070+00 1/0 0/0 0/0 .text procWolfSmellWaitInit__9daAlink_cFv */ @@ -1256,14 +3509,31 @@ int daAlink_c::procGoatStopReady() { /* 8011D544-8011D64C 117E84 0108+00 2/1 0/0 0/0 .text procCoGetReadySitInit__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int daAlink_c::procCoGetReadySitInit() { - nofralloc -#include "asm/d/a/d_a_alink/procCoGetReadySitInit__9daAlink_cFv.s" +int daAlink_c::procCoGetReadySitInit() { + if (mProcID == PROC_GET_READY_SIT || + (mProcID == PROC_PREACTION_UNEQUIP && !checkNoUpperAnime())) + { + return 1; + } + + if (mEquipItem != NO_ITEM && !i_checkWolf()) { + return procPreActionUnequipInit(PROC_GET_READY_SIT, NULL); + } + + commonProcInit(PROC_GET_READY_SIT); + + if (i_checkWolf()) { + setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMove_c0::m.field_0x70, lit_6109); + field_0x300c = 1; + } else { + setSingleAnime(ANM_TRES_OPEN_SMALL, lit_6040, lit_8780, -1, lit_6109); + field_0x300c = 0; + field_0x3588 = l_waitBaseAnime; + field_0x2f99 = 12; + } + + return 1; } -#pragma pop /* 8011D64C-8011D6D0 117F8C 0084+00 1/0 0/0 0/0 .text procCoGetReadySit__9daAlink_cFv */ int daAlink_c::procCoGetReadySit() { @@ -1283,6 +3553,30 @@ int daAlink_c::procCoGetReadySit() { } /* 8011D6D0-8011D7D4 118010 0104+00 1/0 0/0 0/0 .text procCoTwGateInit__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procCoTwGateInit() { + if (!commonProcInitNotSameProc(PROC_TW_GATE)) { + return 1; + } + + if (i_checkWolf()) { + setSingleAnimeWolfBase(WANM_TWGATE_PULL); + field_0x3588 = l_wolfBaseAnime; + voiceStart(Z2SE_WL_V_TW_PULL); + } else { + setSingleAnimeBase(ANM_TWGATE_PULLED_IN); + field_0x3588 = l_waitBaseAnime; + voiceStart(Z2SE_AL_V_TW_PULL); + } + + field_0x33b0 = field_0x3588.y; + mNormalSpeed = 0.0f; + setSpecialGravity(0.0f, mMaxFallSpeed, 0); + speed.y = 0.0f; + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1291,6 +3585,7 @@ asm int daAlink_c::procCoTwGateInit() { #include "asm/d/a/d_a_alink/procCoTwGateInit__9daAlink_cFv.s" } #pragma pop +#endif /* 8011D7D4-8011D82C 118114 0058+00 1/0 0/0 0/0 .text procCoTwGate__9daAlink_cFv */ int daAlink_c::procCoTwGate() { @@ -1321,6 +3616,53 @@ int daAlink_c::procWolfSnowEscapeInit() { } /* 8011D8F8-8011DB04 118238 020C+00 1/0 0/0 0/0 .text procWolfSnowEscape__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procWolfSnowEscape() { + daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl; + + if (field_0x300e.x != 0) { + dComIfGp_evmng_cutEnd(field_0x3184); + return 1; + } + + if (field_0x2f99 != 13) { + field_0x2f99 = 5; + } + + f32 var_f1 = (0.5f - field_0x3478 * (frameCtrl_p->getFrame() - frameCtrl_p->getStart())) * 2.0f; + if (var_f1 < -1.0f) { + var_f1 = -1.0f; + } + + field_0x3588.x = l_wolfBaseAnime.x * var_f1; + field_0x3588.z = l_wolfBaseAnime.z * var_f1; + + if (checkAnmEnd(frameCtrl_p)) { + setOldRootQuaternion(0, -0x8000, 0); + shape_angle.y += 0x8000; + field_0x2fe6 = shape_angle.y; + current.angle.y = shape_angle.y; + + if (field_0x300c == 0) { + field_0x300c = 1; + setSingleAnimeWolfParam(WANM_SLIDE_FORWARD_START, &daAlinkHIO_wlSlide_c0::m.field_0x0); + field_0x3588 = l_wolfBaseAnime; + field_0x3478 = 1.0f / (f32)frameCtrl_p->getEnd(); + field_0x2f99 = 13; + voiceStart(Z2SE_WL_V_SLIP_ROLL); + } else { + setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMove_c0::m.field_0x70, 3.0f); + field_0x2f99 = 0x30; + field_0x300e.x = 1; + } + } else if (frameCtrl_p->checkPass(12.0f)) { + mNormalSpeed = 0.0f; + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1329,6 +3671,7 @@ asm int daAlink_c::procWolfSnowEscape() { #include "asm/d/a/d_a_alink/procWolfSnowEscape__9daAlink_cFv.s" } #pragma pop +#endif /* 8011DB04-8011DB9C 118444 0098+00 1/0 0/0 0/0 .text procZoraMoveInit__9daAlink_cFv */ int daAlink_c::procZoraMoveInit() { @@ -1360,6 +3703,31 @@ asm int daAlink_c::procZoraMove() { #pragma pop /* 8011DDD4-8011DED8 118714 0104+00 1/0 0/0 0/0 .text procLookAroundTurnInit__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procLookAroundTurnInit() { + if (!commonProcInitNotSameProc(PROC_LOOK_AROUND_TURN)) { + return 0; + } + + mNormalSpeed = 0.0f; + + if (mDemo.getParam0() == 3) { + setSingleAnimeBase(ANM_ASHIMOTO); + } else if (mDemo.getParam0() == 2) { + setSingleAnime(ANM_DEMO_MHOP, 1.0f, 0.0f, 89, 3.0f); + } else if (mDemo.getParam0() == 1) { + setSingleAnime(ANM_DEMO_MHOP, 1.0f, 0.0f, 93, 3.0f); + setFaceBasicBtp(0x3DC); + setFaceBasicBtk(0x340); + setFaceBasicBck(0x143); + } else { + setSingleAnimeBase(ANM_DEMO_MHOP); + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1368,6 +3736,7 @@ asm int daAlink_c::procLookAroundTurnInit() { #include "asm/d/a/d_a_alink/procLookAroundTurnInit__9daAlink_cFv.s" } #pragma pop +#endif /* 8011DED8-8011DF68 118818 0090+00 1/0 0/0 0/0 .text procLookAroundTurn__9daAlink_cFv */ int daAlink_c::procLookAroundTurn() { @@ -1419,6 +3788,84 @@ int daAlink_c::procTradeItemOutInit() { } /* 8011E060-8011E3D8 1189A0 0378+00 1/0 0/0 0/0 .text procTradeItemOut__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procTradeItemOut() { + setShapeAngleToTalkActor(); + + if (field_0x3198 != 0) { + cXyz sp24 = field_0x37c8 - current.pos; + int var_r30 = 0; + + if (mLinkAcch.ChkWallHit()) { + dBgS_AcchCir* acchCir_p = field_0x18B0; + + for (int i = 0; i < 3; i++) { + if (acchCir_p->ChkWallHit()) { + var_r30 = cLib_distanceAngleS(acchCir_p->GetWallAngleY(), current.angle.y); + break; + } + acchCir_p++; + } + } + + if (sp24.absXZ() < 0.001f || + cLib_distanceAngleS(sp24.atan2sX_Z(), current.angle.y) > 0x4000 || var_r30 > 0x4000) + { + current.pos.x = field_0x37c8.x; + current.pos.z = field_0x37c8.z; + field_0x3198 = 0; + field_0x300c = setTradeItemAnime(); + mNormalSpeed = 0.0f; + } else if (field_0x3008 != 0) { + field_0x3008--; + } else { + field_0x3198 = 0; + field_0x300c = setTradeItemAnime(); + mNormalSpeed = 0.0f; + } + } else { + current.angle.y = shape_angle.y; + + if (field_0x300e.x != 0) { + if (mDemo.getParam0() == 1) { + dComIfGp_evmng_cutEnd(field_0x3184); + } else { + daItemBase_c* item_partner_p = (daItemBase_c*)fopAcM_getItemEventPartner(this); + if (item_partner_p != NULL) { + if (!fpcM_IsCreating(fpcM_GetID(item_partner_p))) { + if (fopAcM_GetName(item_partner_p) == PROC_ITEM || + fopAcM_GetName(item_partner_p) == PROC_Demo_Item) + { + field_0x280c.setData(item_partner_p); + item_partner_p->show(); + + if (field_0x300e.y == 0) { + field_0x300e.y = 1; + seStartOnlyReverb(Z2SE_AL_OPEN_LETTER); + } + + if (mDemo.getParam0() == 2) { + i_onResetFlg1(RFLG1_UNK_100); + } + } + + dComIfGp_evmng_cutEnd(field_0x3184); + } + } + } + } else if (checkAnmEnd(mUnderFrameCtrl)) { + setSingleAnimeBase(ANM_TRADE_ITEM_WAIT); + onModeFlg(0x100); + field_0x300e.x = 1; + } else { + setTradeItemOutHand(); + } + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1427,6 +3874,7 @@ asm int daAlink_c::procTradeItemOut() { #include "asm/d/a/d_a_alink/procTradeItemOut__9daAlink_cFv.s" } #pragma pop +#endif /* 8011E3D8-8011E448 118D18 0070+00 2/2 0/0 0/0 .text checkLetterItem__9daAlink_cFi */ BOOL daAlink_c::checkLetterItem(int i_itemNo) { @@ -1435,6 +3883,37 @@ BOOL daAlink_c::checkLetterItem(int i_itemNo) { } /* 8011E448-8011E57C 118D88 0134+00 1/1 0/0 0/0 .text procNotUseItemInit__9daAlink_cFi */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procNotUseItemInit(int param_0) { + if (!dComIfGp_event_compulsory(this, NULL, 0xFFFF)) { + return 0; + } + + mDemo.i_setSpecialDemoType(); + commonProcInit(PROC_NOT_USE_ITEM); + setSingleAnimeBase(ANM_TRADE_ITEM_PULL_OUT); + + mNormalSpeed = FLOAT_LABEL(lit_6108); + mMsgClassID = -1; + field_0x3198 = param_0; + field_0x300c = 0; + field_0x300e.x = 0; + current.angle.y = shape_angle.y; + field_0x3194 = 3; + + dCam_getBody()->StartEventCamera(0x12, fopAcM_GetID(this), "Type", 1, &field_0x3194, 0); + keepItemData(); + dComIfGp_setPlayerStatus1(0, 0x4000800); + + if (checkLetterItem(param_0)) { + field_0x300e.y = 0; + } else { + field_0x300e.y = 0; + } + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1443,16 +3922,56 @@ asm int daAlink_c::procNotUseItemInit(int param_0) { #include "asm/d/a/d_a_alink/procNotUseItemInit__9daAlink_cFi.s" } #pragma pop +#endif /* 8011E57C-8011E6E0 118EBC 0164+00 1/0 0/0 0/0 .text procNotUseItem__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int daAlink_c::procNotUseItem() { - nofralloc -#include "asm/d/a/d_a_alink/procNotUseItem__9daAlink_cFv.s" +int daAlink_c::procNotUseItem() { + if (field_0x300c == 0) { + u32 item_partner_id = fopAcM_createItemForPresentDemo( + ¤t.pos, field_0x3198, 5, -1, fopAcM_GetRoomNo(this), &shape_angle, &mScale); + dComIfGp_event_setItemPartnerId(item_partner_id); + field_0x300c = 1; + } + + if (field_0x300e.x != 0) { + daItemBase_c* item_partner_p = (daItemBase_c*)fopAcM_getItemEventPartner(this); +#ifdef DEBUG + if (item_partner_p != NULL && fopAcM_GetName(item_partner_p) != PROC_ITEM && + fopAcM_GetName(item_partner_p) != PROC_Demo_Item) + { + // "Present Item is not this Item!!! %d\n" + OSReport("差し出すアイテムがアイテムじゃない!!! %d\n", + fopAcM_GetName(item_partner_p)); + JUT_ASSERT(5506, 0); + } +#endif + if (item_partner_p != NULL) { + if (!fpcM_IsCreating(fpcM_GetID(item_partner_p))) { + field_0x280c.setData(item_partner_p); + item_partner_p->show(); + + if (field_0x300e.y == 0) { + field_0x300e.y = 1; + seStartOnlyReverb(Z2SE_AL_OPEN_LETTER); + } + + if (checkEndMessage(0x531)) { + returnKeepItemData(); + resetSpecialEvent(); + return 1; + } + } + } + } else if (checkAnmEnd(mUnderFrameCtrl)) { + setSingleAnimeBase(ANM_TRADE_ITEM_WAIT); + onModeFlg(0x100); + field_0x300e.x = 1; + } else { + setTradeItemOutHand(); + } + + return 1; } -#pragma pop /* 8011E6E0-8011E748 119020 0068+00 1/0 0/0 0/0 .text procSwordReadyInit__9daAlink_cFv */ int daAlink_c::procSwordReadyInit() { @@ -1787,6 +4306,31 @@ asm int daAlink_c::procDungeonWarp() { /* 8011F360-8011F460 119CA0 0100+00 2/1 0/0 0/0 .text procDungeonWarpSceneStartInit__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procDungeonWarpSceneStartInit() { + commonProcInit(PROC_DUNGEON_WARP_SCN_START); + + setSpecialGravity(0.0f, mMaxFallSpeed, 0); + setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, + daAlinkHIO_basic_c0::m.mAnmBlendFactor); + + if (checkDungeon() && !checkLv7DungeonShop()) { + createNpcTks(¤t.pos, fopAcM_GetRoomNo(this), 4); + } + + field_0x300c = 0x4000; + field_0x300e.x = 0x20; + field_0x300e.y = 0; + + current.pos.y += 120.0f; + shape_angle.y += 0x7F7A; + + mScale.set(0.0f, 1.5f, 0.0f); + mpLinkModel->setBaseScale(mScale); + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1795,8 +4339,43 @@ asm int daAlink_c::procDungeonWarpSceneStartInit() { #include "asm/d/a/d_a_alink/procDungeonWarpSceneStartInit__9daAlink_cFv.s" } #pragma pop +#endif /* 8011F460-8011F5D4 119DA0 0174+00 1/0 0/0 0/0 .text procDungeonWarpSceneStart__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procDungeonWarpSceneStart() { + if (field_0x300e.y == 0) { + field_0x300e.y = 1; + seStartOnlyReverb(Z2SE_TKC_WARP_OUT); + } + + if (fopOvlpM_IsPeek() == true) { + return 1; + } + + BOOL var_r31 = cLib_chaseF(&mScale.x, 1.0f, 0.05f); + mScale.z = mScale.x; + cLib_chaseF(&mScale.y, 1.0f, 0.025f); + mpLinkModel->setBaseScale(mScale); + + if (!var_r31) { + current.pos.y -= 5.0f; + } else { + field_0x300c -= 0x200; + if (field_0x300c < 0) { + return checkNextAction(0); + } + + current.pos.y -= 1.0f; + } + + f32 sin = cM_ssin(field_0x300c); + shape_angle.y += (s16)(sin * 14336.0f); + field_0x300e.x = (sin * 8.0f) + ((1.0f - mScale.x) * 24.0f); + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1805,6 +4384,7 @@ asm int daAlink_c::procDungeonWarpSceneStart() { #include "asm/d/a/d_a_alink/procDungeonWarpSceneStart__9daAlink_cFv.s" } #pragma pop +#endif /* 8011F5D4-8011F658 119F14 0084+00 2/2 0/0 0/0 .text daAlink_searchPortal__FP10fopAc_ac_cPv */ // matches with literals @@ -1909,11 +4489,11 @@ void daAlink_c::skipPortalObjWarp() { /* 8011F9EC-8011FBC0 11A32C 01D4+00 1/1 0/0 0/0 .text checkWarpStart__9daAlink_cFv */ void daAlink_c::checkWarpStart() { if (dMeter2Info_getWarpStatus() != 0) { - if (dMeter2Info_getWarpStatus() == WARP_DECIDED || + if (dMeter2Info_getWarpStatus() == WARP_STATUS_DECIDED_e || dComIfGp_event_compulsory(this, 0, 0xFFFF)) { i_onNoResetFlg0(FLG0_UNK_4000); - if (dMeter2Info_getWarpStatus() == WARP_DECIDED) { + if (dMeter2Info_getWarpStatus() == WARP_STATUS_DECIDED_e) { const char* portal; if (!i_checkMidnaRide()) { if (dComIfGp_TargetWarpPt_get() == 3) { @@ -1955,13 +4535,133 @@ void daAlink_c::checkWarpStart() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::warpModelTexScroll() { +asm int daAlink_c::warpModelTexScroll() { nofralloc #include "asm/d/a/d_a_alink/warpModelTexScroll__9daAlink_cFv.s" } #pragma pop /* 8011FD4C-80120124 11A68C 03D8+00 2/2 0/0 0/0 .text procCoWarpInit__9daAlink_cFii */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procCoWarpInit(int param_0, int param_1) { + if (!commonProcInitNotSameProc(PROC_WARP)) { + return 0; + } + + changeWarpMaterial(WARP_MAT_MODE_0); + mNormalSpeed = 0.0f; + deleteEquipItem(FALSE, TRUE); + + if (i_checkWolf()) { + setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMove_c0::m.field_0x70, 3.0f); + } else { + setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, 3.0f); + } + + u32 var_r29; + BOOL var_r27 = param_1 == 0 && ((checkStageName("F_SP125") && fopAcM_GetRoomNo(this) == 4) || + (checkStageName("D_MN08") && fopAcM_GetRoomNo(this) == 0)); + + field_0x3478 = 0.0f; + field_0x300c = param_0; + field_0x300e.z = 1; + field_0x300a = 0; + field_0x300e.y = 0xFF; + field_0x3488 = 1.0f; + + if (field_0x300c == 0) { + field_0x3480 = -0.5f; + field_0x3008 = 0; + + if (i_checkWolf()) { + field_0x347c = 3.5f; + + if (var_r27) { + field_0x32cc = 0x88C8; + getMidnaActor()->onSideWarp(); + var_r29 = Z2SE_WOLF_WARP_IN_YOKO; + } else { + field_0x32cc = 0x9FB; + var_r29 = Z2SE_WOLF_WARP_IN_TATE; + } + + if (param_1) { + if (!i_checkMidnaRide()) { + i_onPlayerNoDraw(); + } + } + } else { + field_0x347c = 5.5f; + + if (var_r27) { + field_0x32cc = 0x88C7; + var_r29 = Z2SE_AL_WARP_IN_YOKO; + } else { + var_r29 = Z2SE_AL_WARP_IN_TATE; + + if (checkBossRoom() && fopAcM_GetRoomNo(this) == 50) { + char sp8[32]; + strcpy(sp8, dComIfGp_getStartStageName()); + + for (int i = 0; i < 32; i++) { + s64 value = sp8[i]; + + if (value == 0) { + sp8[i - 1] = 0; + break; + } + } + + if (checkItemGet(DUNGEON_EXIT, 1) || + (checkItemGet(DUNGEON_BACK, 1) && + strcmp(sp8, dComIfGs_getWarpStageName()) == 0)) + { + dComIfGs_setItem(SLOT_18, NO_ITEM); + dComIfGs_resetLastWarpAcceptStage(); + } + } + + field_0x32cc = 0x9F4; + } + } + field_0x3484 = 1.0f; + } else { + field_0x347c = -0.5f; + field_0x3008 = 45; + + if (i_checkWolf()) { + field_0x3480 = 3.5f; + field_0x300e.z = 0; + field_0x3488 = -1.0f; + } else { + field_0x3480 = 5.5f; + var_r29 = Z2SE_AL_WARP_OUT; + setEmitter(&field_0x3240, 0x9F3, ¤t.pos, &shape_angle); + } + + field_0x3484 = 0.0f; + if (!mLinkAcch.ChkGroundHit()) { + setSpecialGravity(0.0f, mMaxFallSpeed, 0); + field_0x300a = 1; + } + + kytag04_class* kytag04_p = + (kytag04_class*)fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchPortal, ¤t.pos); + if (kytag04_p != NULL) { + field_0x300e.y = kytag04_p->mNeedDropNum; + } + } + + if (field_0x3488 > 0.0f) { + seStartOnlyReverb(var_r29); + } + + field_0x300e.x = param_1; + warpModelTexScroll(); + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1970,8 +4670,84 @@ asm int daAlink_c::procCoWarpInit(int param_0, int param_1) { #include "asm/d/a/d_a_alink/procCoWarpInit__9daAlink_cFii.s" } #pragma pop +#endif /* 80120124-80120440 11AA64 031C+00 1/0 0/0 0/0 .text procCoWarp__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procCoWarp() { + if (field_0x300a != 0 && mLinkAcch.ChkGroundHit()) { + field_0x300a = 0; + + f32 var_f1; + if (i_checkWolf()) { + var_f1 = daAlinkHIO_wlAutoJump_c0::m.field_0x58; + } else { + var_f1 = daAlinkHIO_autoJump_c0::m.mGravity; + } + + setSpecialGravity(var_f1, mMaxFallSpeed, 1); + } + + if (mDemo.getDemoMode() == 0x2D) { + if (field_0x300e.z == 0) { + field_0x300e.z = 1; + } + + if (i_checkWolf() && field_0x300c != 0) { + for (int i = 0; i < 6; i++) { + setEmitter(&field_0x3240[i], effName_39419[i], ¤t.pos, &shape_angle); + } + } + } + + if (field_0x300c != 0 && !i_checkWolf()) { + setEmitter(&field_0x3240[0], 0x9F3, ¤t.pos, &shape_angle); + } + + if (field_0x300e.z != 0 && field_0x3488 < 0.0f) { + seStartOnlyReverb(Z2SE_WOLF_WARP_OUT); + field_0x3488 = 1.0f; + } + + if (field_0x300e.z != 0) { + if (field_0x3008 != 0) { + field_0x3008--; + } else if (warpModelTexScroll()) { + if (field_0x300c != 0) { + if (mDemo.getDemoMode() == 0x2D) { + if (field_0x300a != 0) { + if (field_0x3174 == 4) { + dComIfGp_setNextStage(dComIfGp_getStartStageName(), field_0x300e.y, + fopAcM_GetRoomNo(this), -1, 0.0f, 5, 1, 0, + shape_angle.y, 1, 0); + i_changeOriginalDemo(); + i_changeDemoMode(1, 0, 0, 0); + } else { + resetSpecialEvent(); + } + + return commonFallInit(1); + } + + dComIfGp_evmng_cutEnd(field_0x3184); + } else { + return checkWaitAction(); + } + } else if (field_0x300e.x != 0) { + skipPortalObjWarp(); + } else { + dComIfGp_evmng_cutEnd(field_0x3184); + } + } else if (field_0x300c == 0 && !i_checkNoResetFlg0(FLG0_PLAYER_NO_DRAW)) { + cXyz sp10(current.pos.x, current.pos.y + (field_0x347c - -0.5f) * 30.0f, current.pos.z); + setEmitter(&field_0x3240[0], field_0x32cc, &sp10, &shape_angle); + } + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1980,13 +4756,14 @@ asm int daAlink_c::procCoWarp() { #include "asm/d/a/d_a_alink/procCoWarp__9daAlink_cFv.s" } #pragma pop +#endif /* 80120440-80120474 11AD80 0034+00 1/0 0/0 0/0 .text commonWaitTurnInit__9daAlink_cFv */ -void daAlink_c::commonWaitTurnInit() { +int daAlink_c::commonWaitTurnInit() { if (i_checkWolf()) { - procWolfWaitTurnInit(); + return procWolfWaitTurnInit(); } else { - procWaitTurnInit(); + return procWaitTurnInit(); } } @@ -2009,19 +4786,19 @@ int daAlink_c::commonGrabPutInit() { } /* 80120500-80120534 11AE40 0034+00 3/3 0/0 0/0 .text commonLargeDamageUpInit__9daAlink_cFiiss */ -void daAlink_c::commonLargeDamageUpInit(int param_0, int param_1, s16 param_2, s16 param_3) { +int daAlink_c::commonLargeDamageUpInit(int param_0, int param_1, s16 param_2, s16 param_3) { if (i_checkWolf()) { - procWolfLargeDamageUpInit(param_0, param_1, param_2, param_3); + return procWolfLargeDamageUpInit(param_0, param_1, param_2, param_3); } else { - procLargeDamageUpInit(param_0, param_1, param_2, param_3); + return procLargeDamageUpInit(param_0, param_1, param_2, param_3); } } /* 80120534-80120580 11AE74 004C+00 4/4 0/0 0/0 .text commonFallInit__9daAlink_cFi */ -void daAlink_c::commonFallInit(int param_0) { +int daAlink_c::commonFallInit(int param_0) { if (i_checkWolf()) { - procWolfFallInit(param_0, daAlinkHIO_wlAutoJump_c0::m.field_0x54); + return procWolfFallInit(param_0, daAlinkHIO_wlAutoJump_c0::m.field_0x54); } else { - procFallInit(param_0, daAlinkHIO_autoJump_c0::m.mFallInterpolation); + return procFallInit(param_0, daAlinkHIO_autoJump_c0::m.mFallInterpolation); } } diff --git a/src/d/a/d_a_alink_grab.inc b/src/d/a/d_a_alink_grab.inc index 332840f11b1..09d93e8b7c7 100644 --- a/src/d/a/d_a_alink_grab.inc +++ b/src/d/a/d_a_alink_grab.inc @@ -1,7 +1,8 @@ /* 800E3830-800E3858 0DE170 0028+00 2/2 0/0 0/0 .text daAlink_checkLightBallA__FP10fopAc_ac_c */ static bool daAlink_checkLightBallA(fopAc_ac_c* p_actor) { if (fopAcM_GetName(p_actor) == PROC_Obj_Carry && - static_cast(p_actor)->getType() == daObjCarry_c::TYPE_BALL_S) { + static_cast(p_actor)->getType() == daObjCarry_c::TYPE_BALL_S) + { return true; } return false; @@ -10,7 +11,8 @@ static bool daAlink_checkLightBallA(fopAc_ac_c* p_actor) { /* 800E3858-800E3880 0DE198 0028+00 2/2 0/0 0/0 .text daAlink_checkLightBallB__FP10fopAc_ac_c */ static bool daAlink_checkLightBallB(fopAc_ac_c* p_actor) { if (fopAcM_GetName(p_actor) == PROC_Obj_Carry && - static_cast(p_actor)->getType() == daObjCarry_c::TYPE_BALL_S_2) { + static_cast(p_actor)->getType() == daObjCarry_c::TYPE_BALL_S_2) + { return true; } return false; @@ -19,7 +21,8 @@ static bool daAlink_checkLightBallB(fopAc_ac_c* p_actor) { /* 800E3880-800E38EC 0DE1C0 006C+00 1/1 0/0 0/0 .text daAlink_searchLightBall__FP10fopAc_ac_cPv */ static fopAc_ac_c* daAlink_searchLightBall(fopAc_ac_c* p_actor, void* param_1) { if ((daPy_py_c::checkCarryStartLightBallA() && daAlink_checkLightBallA(p_actor)) || - (daPy_py_c::checkCarryStartLightBallB() && daAlink_checkLightBallB(p_actor))) { + (daPy_py_c::checkCarryStartLightBallB() && daAlink_checkLightBallB(p_actor))) + { return p_actor; } return NULL; @@ -29,7 +32,7 @@ static fopAc_ac_c* daAlink_searchLightBall(fopAc_ac_c* p_actor, void* param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkGrabLineCheck() { +asm BOOL daAlink_c::checkGrabLineCheck() { nofralloc #include "asm/d/a/d_a_alink/checkGrabLineCheck__9daAlink_cFv.s" } @@ -76,7 +79,8 @@ bool daAlink_c::setForceGrab(fopAc_ac_c* p_actor, int param_1, int param_2) { (((mEquipItem == NO_ITEM || (param_2 != 0 && checkHookshotItem(mEquipItem)))) && ((i_checkModeFlg(MODE_UNK_10000000) && (checkHorseNoUpperAnime() || checkHorseTurnAnime())) || - param_2 != 0 && checkHookshotAnime()))) { + param_2 != 0 && checkHookshotAnime()))) + { deleteEquipItem(TRUE, FALSE); setGrabItemActor(p_actor); field_0x33e4 = lit_8785; @@ -156,7 +160,8 @@ asm void daAlink_c::setGrabUpperAnime(f32 param_0) { BOOL daAlink_c::checkGrabRooster() { if (mGrabItemAcKeep.getActor() != NULL && (fopAcM_GetName(mGrabItemAcKeep.getActor()) == PROC_NI || - fopAcM_GetName(mGrabItemAcKeep.getActor()) == PROC_NPC_TKJ2)) { + fopAcM_GetName(mGrabItemAcKeep.getActor()) == PROC_NPC_TKJ2)) + { return true; } @@ -488,7 +493,7 @@ asm int daAlink_c::procGrabStand() { /* 800E70C0-800E70FC 0E1A00 003C+00 1/1 0/0 0/0 .text * checkInsectActorName__9daAlink_cFP10fopAc_ac_c */ -bool daAlink_c::checkInsectActorName(fopAc_ac_c* insectActor) { +BOOL daAlink_c::checkInsectActorName(fopAc_ac_c* insectActor) { s16 insectName = fopAcM_GetName(insectActor); for (int i = 0; i < 12; i++) { @@ -605,7 +610,7 @@ asm u8 daAlink_c::checkChainEmphasys() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm u8 daAlink_c::searchFmChainPos() { +asm BOOL daAlink_c::searchFmChainPos() { nofralloc #include "asm/d/a/d_a_alink/searchFmChainPos__9daAlink_cFv.s" } @@ -629,7 +634,8 @@ bool daAlink_c::checkChainBlockPushPull() { if (actor != NULL) { s16 name = fopAcM_GetName(actor); if (name == PROC_Obj_ChainBlock || name == PROC_Obj_SwChain || - name == PROC_Obj_ChainWall) { + name == PROC_Obj_ChainWall) + { return true; } } @@ -695,13 +701,13 @@ int daAlink_c::getWallGrabStatus() { } /* 800E7EF4-800E7F18 0E2834 0024+00 1/1 0/0 0/0 .text wallGrabTrigger__9daAlink_cFv */ -void daAlink_c::wallGrabTrigger() { - itemTriggerCheck(BTN_R); +BOOL daAlink_c::wallGrabTrigger() { + return itemTriggerCheck(BTN_R); } /* 800E7F18-800E7F3C 0E2858 0024+00 4/4 0/0 0/0 .text wallGrabButton__9daAlink_cFv */ -void daAlink_c::wallGrabButton() { - itemButtonCheck(BTN_R); +BOOL daAlink_c::wallGrabButton() { + return itemButtonCheck(BTN_R); } /* 800E7F3C-800E80A4 0E287C 0168+00 4/4 0/0 0/0 .text @@ -749,7 +755,8 @@ void daAlink_c::offGoatStopGame() { * checkGoatCatchActor__9daAlink_cFP10fopAc_ac_c */ BOOL daAlink_c::checkGoatCatchActor(fopAc_ac_c* param_0) { s16 name = fopAcM_GetName(param_0); - return name == PROC_E_GOB || (name == PROC_OBJ_GRA && checkSpecialNpc(param_0)) || name == PROC_COW; + return name == PROC_E_GOB || (name == PROC_OBJ_GRA && checkSpecialNpc(param_0)) || + name == PROC_COW; } /* 800E8314-800E8334 0E2C54 0020+00 2/2 0/0 0/0 .text getGoatCatchDistance2__9daAlink_cFv @@ -929,6 +936,31 @@ asm int daAlink_c::procGoatCatch() { #pragma pop /* 800EA2A8-800EA3AC 0E4BE8 0104+00 2/2 0/0 0/0 .text procGoatStrokeInit__9daAlink_cFv */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::procGoatStrokeInit() { + if (mEquipItem != NO_ITEM) { + return procPreActionUnequipInit(PROC_GOAT_STROKE, field_0x27f4); + } + + commonProcInit(PROC_GOAT_STROKE); + field_0x280c.setData(field_0x27f4); + setSingleAnimeBase(ANM_COW_STROKE); + + static_cast(field_0x280c.getActor())->setNaderu(); + mNormalSpeed = 0.0f; + + if ((s16)(fopAcM_searchActorAngleY(field_0x27f4, this) - field_0x27f4->shape_angle.y) > 0) { + shape_angle.y = field_0x27f4->shape_angle.y - 0x4000; + } else { + shape_angle.y = field_0x27f4->shape_angle.y + 0x4000; + } + + current.pos.x = field_0x27f4->current.pos.x - cM_ssin(shape_angle.y) * 100.0f; + current.pos.z = field_0x27f4->current.pos.z - cM_scos(shape_angle.y) * 100.0f; + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -937,6 +969,7 @@ asm int daAlink_c::procGoatStrokeInit() { #include "asm/d/a/d_a_alink/procGoatStrokeInit__9daAlink_cFv.s" } #pragma pop +#endif /* 800EA3AC-800EA3F4 0E4CEC 0048+00 1/0 0/0 0/0 .text procGoatStroke__9daAlink_cFv */ int daAlink_c::procGoatStroke() { diff --git a/src/d/a/d_a_alink_guard.inc b/src/d/a/d_a_alink_guard.inc index 7aaf8bb1567..2aab1e1d8e0 100644 --- a/src/d/a/d_a_alink_guard.inc +++ b/src/d/a/d_a_alink_guard.inc @@ -219,7 +219,7 @@ asm int daAlink_c::procGuardBreak() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm bool daAlink_c::procTurnMoveInit(int param_0) { +asm int daAlink_c::procTurnMoveInit(int param_0) { nofralloc #include "asm/d/a/d_a_alink/procTurnMoveInit__9daAlink_cFi.s" } diff --git a/src/d/a/d_a_alink_swim.inc b/src/d/a/d_a_alink_swim.inc index d163eb2035e..54d5eed54d5 100644 --- a/src/d/a/d_a_alink_swim.inc +++ b/src/d/a/d_a_alink_swim.inc @@ -264,7 +264,7 @@ int daAlink_c::checkNextActionSwim() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkSwimAction(int param_0) { +asm int daAlink_c::checkSwimAction(int param_0) { nofralloc #include "asm/d/a/d_a_alink/checkSwimAction__9daAlink_cFi.s" } diff --git a/src/d/a/d_a_alink_weakfn.inc b/src/d/a/d_a_alink_weakfn.inc index 870952cab24..19e715566da 100644 --- a/src/d/a/d_a_alink_weakfn.inc +++ b/src/d/a/d_a_alink_weakfn.inc @@ -1127,7 +1127,7 @@ void daPy_py_c::skipPortalObjWarp() { } /* 80141840-80141848 13C180 0008+00 1/0 0/0 0/0 .text checkTreasureRupeeReturn__9daPy_py_cCFi */ -bool daPy_py_c::checkTreasureRupeeReturn(int param_0) const { +BOOL daPy_py_c::checkTreasureRupeeReturn(int param_0) const { return false; } diff --git a/src/d/d_demo.cpp b/src/d/d_demo.cpp index 71621ab7932..f159ec256de 100644 --- a/src/d/d_demo.cpp +++ b/src/d/d_demo.cpp @@ -752,7 +752,7 @@ static int it; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dDemo_actor_c::getDemoIDData(int* param_0, int* param_1, int* param_2, u16* param_3, +asm int dDemo_actor_c::getDemoIDData(int* param_0, int* param_1, int* param_2, u16* param_3, u8* param_4) { nofralloc #include "asm/d/d_demo/getDemoIDData__13dDemo_actor_cFPiPiPiPUsPUc.s"