Merge pull request #398 from Trueffeloot/d_a_boomerang-work

work on d_a_boomerang
This commit is contained in:
hatal175 2023-08-04 08:42:06 +03:00 committed by GitHub
commit 044f4753be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 632 additions and 980 deletions

View File

@ -21,8 +21,8 @@ Total | 37.746227% | 1517652 | 4020672
Section | Percentage | Decompiled (bytes) | Total (bytes)
---|---|---|---
main.dol | 37.746227% | 1517652 | 4020672
RELs | 34.066692% | 3917780 | 11500324
Total | 35.019866% | 5435432 | 15520996
RELs | 34.092883% | 3920792 | 11500324
Total | 35.039272% | 5438444 | 15520996
## RELs
@ -60,7 +60,7 @@ d_a_balloon_2D | 29.886212% | 3572 | 11952
d_a_bd | 31.115418% | 5780 | 18576
d_a_bg | 41.505376% | 3860 | 9300
d_a_bg_obj | 32.434657% | 6304 | 19436
d_a_boomerang | 31.776601% | 7920 | 24924
d_a_boomerang | 43.861338% | 10932 | 24924
d_a_bullet | 42.660550% | 2604 | 6104
d_a_canoe | 28.479263% | 4944 | 17360
d_a_coach_2D | 38.344915% | 2428 | 6332
@ -785,4 +785,4 @@ d_a_vrbox2 | 34.977578% | 2184 | 6244
d_a_warp_bug | 100.000000% | 2024 | 2024
d_a_ykgr | 44.400631% | 2252 | 5072
f_pc_profile_lst | 100.000000% | 28156 | 28156
Total | 34.066692% | 3917780 | 11500324
Total | 34.092883% | 3920792 | 11500324

View File

@ -1,134 +0,0 @@
lbl_8049FE6C:
/* 8049FE6C 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8049FE70 7C 08 02 A6 */ mflr r0
/* 8049FE74 90 01 00 24 */ stw r0, 0x24(r1)
/* 8049FE78 39 61 00 20 */ addi r11, r1, 0x20
/* 8049FE7C 4B EC 23 5D */ bl _savegpr_28
/* 8049FE80 7C 7F 1B 78 */ mr r31, r3
/* 8049FE84 7C 9C 23 78 */ mr r28, r4
/* 8049FE88 7C BD 2B 78 */ mr r29, r5
/* 8049FE8C 38 7F 0C FC */ addi r3, r31, 0xcfc
/* 8049FE90 7F E6 FB 78 */ mr r6, r31
/* 8049FE94 4B BD 7E D1 */ bl Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c
/* 8049FE98 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
/* 8049FE9C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */
/* 8049FEA0 3B C3 0F 38 */ addi r30, r3, 0xf38
/* 8049FEA4 7F C3 F3 78 */ mr r3, r30
/* 8049FEA8 38 9F 0C FC */ addi r4, r31, 0xcfc
/* 8049FEAC 4B BD 45 09 */ bl LineCross__4cBgSFP11cBgS_LinChk
/* 8049FEB0 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 8049FEB4 41 82 00 54 */ beq lbl_8049FF08
/* 8049FEB8 C0 1F 0D 2C */ lfs f0, 0xd2c(r31)
/* 8049FEBC D0 1F 04 D0 */ stfs f0, 0x4d0(r31)
/* 8049FEC0 C0 1F 0D 30 */ lfs f0, 0xd30(r31)
/* 8049FEC4 D0 1F 04 D4 */ stfs f0, 0x4d4(r31)
/* 8049FEC8 C0 1F 0D 34 */ lfs f0, 0xd34(r31)
/* 8049FECC D0 1F 04 D8 */ stfs f0, 0x4d8(r31)
/* 8049FED0 80 1F 09 64 */ lwz r0, 0x964(r31)
/* 8049FED4 60 00 00 01 */ ori r0, r0, 1
/* 8049FED8 90 1F 09 64 */ stw r0, 0x964(r31)
/* 8049FEDC 38 00 00 00 */ li r0, 0
/* 8049FEE0 98 1F 09 57 */ stb r0, 0x957(r31)
/* 8049FEE4 A8 7F 04 DE */ lha r3, 0x4de(r31)
/* 8049FEE8 3C 63 00 01 */ addis r3, r3, 1
/* 8049FEEC 38 03 80 00 */ addi r0, r3, -32768
/* 8049FEF0 B0 1F 04 DE */ sth r0, 0x4de(r31)
/* 8049FEF4 A8 1F 04 DE */ lha r0, 0x4de(r31)
/* 8049FEF8 B0 1F 04 E6 */ sth r0, 0x4e6(r31)
/* 8049FEFC 7F E3 FB 78 */ mr r3, r31
/* 8049FF00 4B FF FA A5 */ bl resetLockActor__13daBoomerang_cFv
/* 8049FF04 48 00 01 50 */ b lbl_804A0054
lbl_8049FF08:
/* 8049FF08 A8 1F 09 62 */ lha r0, 0x962(r31)
/* 8049FF0C 2C 00 00 00 */ cmpwi r0, 0
/* 8049FF10 40 82 01 44 */ bne lbl_804A0054
/* 8049FF14 38 7F 0C 8C */ addi r3, r31, 0xc8c
/* 8049FF18 7F 84 E3 78 */ mr r4, r28
/* 8049FF1C 7F A5 EB 78 */ mr r5, r29
/* 8049FF20 7F E6 FB 78 */ mr r6, r31
/* 8049FF24 4B BD 7E 41 */ bl Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c
/* 8049FF28 7F C3 F3 78 */ mr r3, r30
/* 8049FF2C 38 9F 0C 8C */ addi r4, r31, 0xc8c
/* 8049FF30 4B BD 44 85 */ bl LineCross__4cBgSFP11cBgS_LinChk
/* 8049FF34 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 8049FF38 41 82 01 1C */ beq lbl_804A0054
/* 8049FF3C 80 1F 09 64 */ lwz r0, 0x964(r31)
/* 8049FF40 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16
/* 8049FF44 40 82 01 10 */ bne lbl_804A0054
/* 8049FF48 88 BF 09 51 */ lbz r5, 0x951(r31)
/* 8049FF4C 7C 7F 2A 14 */ add r3, r31, r5
/* 8049FF50 88 03 07 18 */ lbz r0, 0x718(r3)
/* 8049FF54 28 00 00 00 */ cmplwi r0, 0
/* 8049FF58 41 82 00 58 */ beq lbl_8049FFB0
/* 8049FF5C 38 9F 0C BC */ addi r4, r31, 0xcbc
/* 8049FF60 1C 65 00 0C */ mulli r3, r5, 0xc
/* 8049FF64 38 63 06 DC */ addi r3, r3, 0x6dc
/* 8049FF68 7C 7F 1A 14 */ add r3, r31, r3
/* 8049FF6C 4B EA 74 31 */ bl PSVECSquareDistance
/* 8049FF70 3C 60 80 4A */ lis r3, lit_5044@ha /* 0x804A2918@ha */
/* 8049FF74 C0 03 29 18 */ lfs f0, lit_5044@l(r3) /* 0x804A2918@l */
/* 8049FF78 FC 01 00 40 */ fcmpo cr0, f1, f0
/* 8049FF7C 40 80 00 34 */ bge lbl_8049FFB0
/* 8049FF80 88 9F 09 51 */ lbz r4, 0x951(r31)
/* 8049FF84 88 7F 09 50 */ lbz r3, 0x950(r31)
/* 8049FF88 38 03 FF FF */ addi r0, r3, -1
/* 8049FF8C 7C 04 00 00 */ cmpw r4, r0
/* 8049FF90 40 80 00 20 */ bge lbl_8049FFB0
/* 8049FF94 38 00 00 00 */ li r0, 0
/* 8049FF98 7C 7F 22 14 */ add r3, r31, r4
/* 8049FF9C 98 03 07 18 */ stb r0, 0x718(r3)
/* 8049FFA0 88 7F 09 51 */ lbz r3, 0x951(r31)
/* 8049FFA4 38 03 00 01 */ addi r0, r3, 1
/* 8049FFA8 98 1F 09 51 */ stb r0, 0x951(r31)
/* 8049FFAC 48 00 00 A8 */ b lbl_804A0054
lbl_8049FFB0:
/* 8049FFB0 88 1F 09 57 */ lbz r0, 0x957(r31)
/* 8049FFB4 28 00 00 00 */ cmplwi r0, 0
/* 8049FFB8 40 82 00 9C */ bne lbl_804A0054
/* 8049FFBC 80 1F 09 64 */ lwz r0, 0x964(r31)
/* 8049FFC0 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b
/* 8049FFC4 40 82 00 14 */ bne lbl_8049FFD8
/* 8049FFC8 88 7F 09 50 */ lbz r3, 0x950(r31)
/* 8049FFCC 88 1F 09 51 */ lbz r0, 0x951(r31)
/* 8049FFD0 7C 03 00 40 */ cmplw r3, r0
/* 8049FFD4 41 81 00 80 */ bgt lbl_804A0054
lbl_8049FFD8:
/* 8049FFD8 C0 1F 0C BC */ lfs f0, 0xcbc(r31)
/* 8049FFDC D0 1F 04 D0 */ stfs f0, 0x4d0(r31)
/* 8049FFE0 C0 1F 0C C0 */ lfs f0, 0xcc0(r31)
/* 8049FFE4 D0 1F 04 D4 */ stfs f0, 0x4d4(r31)
/* 8049FFE8 C0 1F 0C C4 */ lfs f0, 0xcc4(r31)
/* 8049FFEC D0 1F 04 D8 */ stfs f0, 0x4d8(r31)
/* 8049FFF0 80 1F 09 64 */ lwz r0, 0x964(r31)
/* 8049FFF4 60 00 00 01 */ ori r0, r0, 1
/* 8049FFF8 90 1F 09 64 */ stw r0, 0x964(r31)
/* 8049FFFC 38 00 00 00 */ li r0, 0
/* 804A0000 98 1F 09 57 */ stb r0, 0x957(r31)
/* 804A0004 A8 7F 04 DE */ lha r3, 0x4de(r31)
/* 804A0008 3C 63 00 01 */ addis r3, r3, 1
/* 804A000C 38 03 80 00 */ addi r0, r3, -32768
/* 804A0010 B0 1F 04 DE */ sth r0, 0x4de(r31)
/* 804A0014 38 7F 0C A0 */ addi r3, r31, 0xca0
/* 804A0018 4B BD 5D D5 */ bl dBgS_CheckBRoofPoly__FRC13cBgS_PolyInfo
/* 804A001C 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 804A0020 41 82 00 24 */ beq lbl_804A0044
/* 804A0024 A8 1F 04 DC */ lha r0, 0x4dc(r31)
/* 804A0028 1C 00 FF FF */ mulli r0, r0, -1
/* 804A002C B0 1F 04 DC */ sth r0, 0x4dc(r31)
/* 804A0030 C0 3F 04 D4 */ lfs f1, 0x4d4(r31)
/* 804A0034 3C 60 80 4A */ lis r3, lit_5045@ha /* 0x804A291C@ha */
/* 804A0038 C0 03 29 1C */ lfs f0, lit_5045@l(r3) /* 0x804A291C@l */
/* 804A003C EC 01 00 28 */ fsubs f0, f1, f0
/* 804A0040 D0 1F 04 D4 */ stfs f0, 0x4d4(r31)
lbl_804A0044:
/* 804A0044 A8 1F 04 DE */ lha r0, 0x4de(r31)
/* 804A0048 B0 1F 04 E6 */ sth r0, 0x4e6(r31)
/* 804A004C 7F E3 FB 78 */ mr r3, r31
/* 804A0050 4B FF F9 55 */ bl resetLockActor__13daBoomerang_cFv
lbl_804A0054:
/* 804A0054 39 61 00 20 */ addi r11, r1, 0x20
/* 804A0058 4B EC 21 CD */ bl _restgpr_28
/* 804A005C 80 01 00 24 */ lwz r0, 0x24(r1)
/* 804A0060 7C 08 03 A6 */ mtlr r0
/* 804A0064 38 21 00 20 */ addi r1, r1, 0x20
/* 804A0068 4E 80 00 20 */ blr

View File

@ -1,188 +0,0 @@
lbl_8049E0B8:
/* 8049E0B8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8049E0BC 7C 08 02 A6 */ mflr r0
/* 8049E0C0 90 01 00 14 */ stw r0, 0x14(r1)
/* 8049E0C4 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8049E0C8 93 C1 00 08 */ stw r30, 8(r1)
/* 8049E0CC 7C 7E 1B 78 */ mr r30, r3
/* 8049E0D0 4B BF F7 B5 */ bl getAlinkArcName__9daAlink_cFv
/* 8049E0D4 3C 80 80 40 */ lis r4, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
/* 8049E0D8 38 84 61 C0 */ addi r4, r4, g_dComIfG_gameInfo@l /* 0x804061C0@l */
/* 8049E0DC 3C 84 00 02 */ addis r4, r4, 2
/* 8049E0E0 38 A0 00 80 */ li r5, 0x80
/* 8049E0E4 38 84 C2 F8 */ addi r4, r4, -15624
/* 8049E0E8 4B B9 E0 FD */ bl getResInfo__14dRes_control_cFPCcP11dRes_info_ci
/* 8049E0EC 83 E3 00 14 */ lwz r31, 0x14(r3)
/* 8049E0F0 38 60 01 18 */ li r3, 0x118
/* 8049E0F4 4B E3 0B 59 */ bl __nw__FUl
/* 8049E0F8 7C 60 1B 79 */ or. r0, r3, r3
/* 8049E0FC 41 82 00 0C */ beq lbl_8049E108
/* 8049E100 4B E5 A3 99 */ bl __ct__9J2DScreenFv
/* 8049E104 7C 60 1B 78 */ mr r0, r3
lbl_8049E108:
/* 8049E108 90 1E 00 04 */ stw r0, 4(r30)
/* 8049E10C 80 7E 00 04 */ lwz r3, 4(r30)
/* 8049E110 28 03 00 00 */ cmplwi r3, 0
/* 8049E114 40 82 00 0C */ bne lbl_8049E120
/* 8049E118 38 60 00 00 */ li r3, 0
/* 8049E11C 48 00 02 38 */ b lbl_8049E354
lbl_8049E120:
/* 8049E120 3C 80 80 4A */ lis r4, d_a_boomerang__stringBase0@ha /* 0x804A2990@ha */
/* 8049E124 38 84 29 90 */ addi r4, r4, d_a_boomerang__stringBase0@l /* 0x804A2990@l */
/* 8049E128 3C A0 00 10 */ lis r5, 0x10
/* 8049E12C 7F E6 FB 78 */ mr r6, r31
/* 8049E130 4B E5 A5 19 */ bl setPriority__9J2DScreenFPCcUlP10JKRArchive
/* 8049E134 80 7E 00 04 */ lwz r3, 4(r30)
/* 8049E138 4B DB 6F B1 */ bl dPaneClass_showNullPane__FP9J2DScreen
/* 8049E13C 3C 60 80 4A */ lis r3, d_a_boomerang__stringBase0@ha /* 0x804A2990@ha */
/* 8049E140 38 63 29 90 */ addi r3, r3, d_a_boomerang__stringBase0@l /* 0x804A2990@l */
/* 8049E144 38 63 00 1E */ addi r3, r3, 0x1e
/* 8049E148 7F E4 FB 78 */ mr r4, r31
/* 8049E14C 4B E3 61 25 */ bl getGlbResource__13JKRFileLoaderFPCcP13JKRFileLoader
/* 8049E150 4B E6 A9 1D */ bl load__20J2DAnmLoaderDataBaseFPCv
/* 8049E154 90 7E 00 58 */ stw r3, 0x58(r30)
/* 8049E158 80 1E 00 58 */ lwz r0, 0x58(r30)
/* 8049E15C 28 00 00 00 */ cmplwi r0, 0
/* 8049E160 40 82 00 0C */ bne lbl_8049E16C
/* 8049E164 38 60 00 00 */ li r3, 0
/* 8049E168 48 00 01 EC */ b lbl_8049E354
lbl_8049E16C:
/* 8049E16C 3C 60 80 4A */ lis r3, d_a_boomerang__stringBase0@ha /* 0x804A2990@ha */
/* 8049E170 38 63 29 90 */ addi r3, r3, d_a_boomerang__stringBase0@l /* 0x804A2990@l */
/* 8049E174 38 63 00 3C */ addi r3, r3, 0x3c
/* 8049E178 7F E4 FB 78 */ mr r4, r31
/* 8049E17C 4B E3 60 F5 */ bl getGlbResource__13JKRFileLoaderFPCcP13JKRFileLoader
/* 8049E180 4B E6 A8 ED */ bl load__20J2DAnmLoaderDataBaseFPCv
/* 8049E184 90 7E 00 5C */ stw r3, 0x5c(r30)
/* 8049E188 80 1E 00 5C */ lwz r0, 0x5c(r30)
/* 8049E18C 28 00 00 00 */ cmplwi r0, 0
/* 8049E190 40 82 00 0C */ bne lbl_8049E19C
/* 8049E194 38 60 00 00 */ li r3, 0
/* 8049E198 48 00 01 BC */ b lbl_8049E354
lbl_8049E19C:
/* 8049E19C 3C 60 80 4A */ lis r3, d_a_boomerang__stringBase0@ha /* 0x804A2990@ha */
/* 8049E1A0 38 63 29 90 */ addi r3, r3, d_a_boomerang__stringBase0@l /* 0x804A2990@l */
/* 8049E1A4 38 63 00 5A */ addi r3, r3, 0x5a
/* 8049E1A8 7F E4 FB 78 */ mr r4, r31
/* 8049E1AC 4B E3 60 C5 */ bl getGlbResource__13JKRFileLoaderFPCcP13JKRFileLoader
/* 8049E1B0 4B E6 A8 BD */ bl load__20J2DAnmLoaderDataBaseFPCv
/* 8049E1B4 90 7E 00 18 */ stw r3, 0x18(r30)
/* 8049E1B8 80 1E 00 18 */ lwz r0, 0x18(r30)
/* 8049E1BC 28 00 00 00 */ cmplwi r0, 0
/* 8049E1C0 40 82 00 0C */ bne lbl_8049E1CC
/* 8049E1C4 38 60 00 00 */ li r3, 0
/* 8049E1C8 48 00 01 8C */ b lbl_8049E354
lbl_8049E1CC:
/* 8049E1CC 3C 60 80 4A */ lis r3, d_a_boomerang__stringBase0@ha /* 0x804A2990@ha */
/* 8049E1D0 38 63 29 90 */ addi r3, r3, d_a_boomerang__stringBase0@l /* 0x804A2990@l */
/* 8049E1D4 38 63 00 7B */ addi r3, r3, 0x7b
/* 8049E1D8 7F E4 FB 78 */ mr r4, r31
/* 8049E1DC 4B E3 60 95 */ bl getGlbResource__13JKRFileLoaderFPCcP13JKRFileLoader
/* 8049E1E0 4B E6 A8 8D */ bl load__20J2DAnmLoaderDataBaseFPCv
/* 8049E1E4 90 7E 00 1C */ stw r3, 0x1c(r30)
/* 8049E1E8 80 1E 00 1C */ lwz r0, 0x1c(r30)
/* 8049E1EC 28 00 00 00 */ cmplwi r0, 0
/* 8049E1F0 40 82 00 0C */ bne lbl_8049E1FC
/* 8049E1F4 38 60 00 00 */ li r3, 0
/* 8049E1F8 48 00 01 5C */ b lbl_8049E354
lbl_8049E1FC:
/* 8049E1FC 38 60 01 18 */ li r3, 0x118
/* 8049E200 4B E3 0A 4D */ bl __nw__FUl
/* 8049E204 7C 60 1B 79 */ or. r0, r3, r3
/* 8049E208 41 82 00 0C */ beq lbl_8049E214
/* 8049E20C 4B E5 A2 8D */ bl __ct__9J2DScreenFv
/* 8049E210 7C 60 1B 78 */ mr r0, r3
lbl_8049E214:
/* 8049E214 90 1E 00 20 */ stw r0, 0x20(r30)
/* 8049E218 80 7E 00 20 */ lwz r3, 0x20(r30)
/* 8049E21C 28 03 00 00 */ cmplwi r3, 0
/* 8049E220 40 82 00 0C */ bne lbl_8049E22C
/* 8049E224 38 60 00 00 */ li r3, 0
/* 8049E228 48 00 01 2C */ b lbl_8049E354
lbl_8049E22C:
/* 8049E22C 3C 80 80 4A */ lis r4, d_a_boomerang__stringBase0@ha /* 0x804A2990@ha */
/* 8049E230 38 84 29 90 */ addi r4, r4, d_a_boomerang__stringBase0@l /* 0x804A2990@l */
/* 8049E234 38 84 00 99 */ addi r4, r4, 0x99
/* 8049E238 3C A0 00 10 */ lis r5, 0x10
/* 8049E23C 7F E6 FB 78 */ mr r6, r31
/* 8049E240 4B E5 A4 09 */ bl setPriority__9J2DScreenFPCcUlP10JKRArchive
/* 8049E244 80 7E 00 20 */ lwz r3, 0x20(r30)
/* 8049E248 4B DB 6E A1 */ bl dPaneClass_showNullPane__FP9J2DScreen
/* 8049E24C 3C 60 80 4A */ lis r3, d_a_boomerang__stringBase0@ha /* 0x804A2990@ha */
/* 8049E250 38 63 29 90 */ addi r3, r3, d_a_boomerang__stringBase0@l /* 0x804A2990@l */
/* 8049E254 38 63 00 B4 */ addi r3, r3, 0xb4
/* 8049E258 7F E4 FB 78 */ mr r4, r31
/* 8049E25C 4B E3 60 15 */ bl getGlbResource__13JKRFileLoaderFPCcP13JKRFileLoader
/* 8049E260 4B E6 A8 0D */ bl load__20J2DAnmLoaderDataBaseFPCv
/* 8049E264 90 7E 00 34 */ stw r3, 0x34(r30)
/* 8049E268 80 1E 00 34 */ lwz r0, 0x34(r30)
/* 8049E26C 28 00 00 00 */ cmplwi r0, 0
/* 8049E270 40 82 00 0C */ bne lbl_8049E27C
/* 8049E274 38 60 00 00 */ li r3, 0
/* 8049E278 48 00 00 DC */ b lbl_8049E354
lbl_8049E27C:
/* 8049E27C 3C 60 80 4A */ lis r3, d_a_boomerang__stringBase0@ha /* 0x804A2990@ha */
/* 8049E280 38 63 29 90 */ addi r3, r3, d_a_boomerang__stringBase0@l /* 0x804A2990@l */
/* 8049E284 38 63 00 D2 */ addi r3, r3, 0xd2
/* 8049E288 7F E4 FB 78 */ mr r4, r31
/* 8049E28C 4B E3 5F E5 */ bl getGlbResource__13JKRFileLoaderFPCcP13JKRFileLoader
/* 8049E290 4B E6 A7 DD */ bl load__20J2DAnmLoaderDataBaseFPCv
/* 8049E294 90 7E 00 38 */ stw r3, 0x38(r30)
/* 8049E298 80 1E 00 38 */ lwz r0, 0x38(r30)
/* 8049E29C 28 00 00 00 */ cmplwi r0, 0
/* 8049E2A0 40 82 00 0C */ bne lbl_8049E2AC
/* 8049E2A4 38 60 00 00 */ li r3, 0
/* 8049E2A8 48 00 00 AC */ b lbl_8049E354
lbl_8049E2AC:
/* 8049E2AC 38 60 01 18 */ li r3, 0x118
/* 8049E2B0 4B E3 09 9D */ bl __nw__FUl
/* 8049E2B4 7C 60 1B 79 */ or. r0, r3, r3
/* 8049E2B8 41 82 00 0C */ beq lbl_8049E2C4
/* 8049E2BC 4B E5 A1 DD */ bl __ct__9J2DScreenFv
/* 8049E2C0 7C 60 1B 78 */ mr r0, r3
lbl_8049E2C4:
/* 8049E2C4 90 1E 00 3C */ stw r0, 0x3c(r30)
/* 8049E2C8 80 7E 00 3C */ lwz r3, 0x3c(r30)
/* 8049E2CC 28 03 00 00 */ cmplwi r3, 0
/* 8049E2D0 40 82 00 0C */ bne lbl_8049E2DC
/* 8049E2D4 38 60 00 00 */ li r3, 0
/* 8049E2D8 48 00 00 7C */ b lbl_8049E354
lbl_8049E2DC:
/* 8049E2DC 3C 80 80 4A */ lis r4, d_a_boomerang__stringBase0@ha /* 0x804A2990@ha */
/* 8049E2E0 38 84 29 90 */ addi r4, r4, d_a_boomerang__stringBase0@l /* 0x804A2990@l */
/* 8049E2E4 38 84 00 ED */ addi r4, r4, 0xed
/* 8049E2E8 3C A0 00 10 */ lis r5, 0x10
/* 8049E2EC 7F E6 FB 78 */ mr r6, r31
/* 8049E2F0 4B E5 A3 59 */ bl setPriority__9J2DScreenFPCcUlP10JKRArchive
/* 8049E2F4 80 7E 00 3C */ lwz r3, 0x3c(r30)
/* 8049E2F8 4B DB 6D F1 */ bl dPaneClass_showNullPane__FP9J2DScreen
/* 8049E2FC 3C 60 80 4A */ lis r3, d_a_boomerang__stringBase0@ha /* 0x804A2990@ha */
/* 8049E300 38 63 29 90 */ addi r3, r3, d_a_boomerang__stringBase0@l /* 0x804A2990@l */
/* 8049E304 38 63 01 0B */ addi r3, r3, 0x10b
/* 8049E308 7F E4 FB 78 */ mr r4, r31
/* 8049E30C 4B E3 5F 65 */ bl getGlbResource__13JKRFileLoaderFPCcP13JKRFileLoader
/* 8049E310 4B E6 A7 5D */ bl load__20J2DAnmLoaderDataBaseFPCv
/* 8049E314 90 7E 00 50 */ stw r3, 0x50(r30)
/* 8049E318 80 1E 00 50 */ lwz r0, 0x50(r30)
/* 8049E31C 28 00 00 00 */ cmplwi r0, 0
/* 8049E320 40 82 00 0C */ bne lbl_8049E32C
/* 8049E324 38 60 00 00 */ li r3, 0
/* 8049E328 48 00 00 2C */ b lbl_8049E354
lbl_8049E32C:
/* 8049E32C 3C 60 80 4A */ lis r3, d_a_boomerang__stringBase0@ha /* 0x804A2990@ha */
/* 8049E330 38 63 29 90 */ addi r3, r3, d_a_boomerang__stringBase0@l /* 0x804A2990@l */
/* 8049E334 38 63 01 2C */ addi r3, r3, 0x12c
/* 8049E338 7F E4 FB 78 */ mr r4, r31
/* 8049E33C 4B E3 5F 35 */ bl getGlbResource__13JKRFileLoaderFPCcP13JKRFileLoader
/* 8049E340 4B E6 A7 2D */ bl load__20J2DAnmLoaderDataBaseFPCv
/* 8049E344 90 7E 00 54 */ stw r3, 0x54(r30)
/* 8049E348 80 7E 00 54 */ lwz r3, 0x54(r30)
/* 8049E34C 30 03 FF FF */ addic r0, r3, -1
/* 8049E350 7C 60 19 10 */ subfe r3, r0, r3
lbl_8049E354:
/* 8049E354 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8049E358 83 C1 00 08 */ lwz r30, 8(r1)
/* 8049E35C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8049E360 7C 08 03 A6 */ mtlr r0
/* 8049E364 38 21 00 10 */ addi r1, r1, 0x10
/* 8049E368 4E 80 00 20 */ blr

View File

@ -1,9 +0,0 @@
lbl_804A26F8:
/* 804A26F8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 804A26FC 7C 08 02 A6 */ mflr r0
/* 804A2700 90 01 00 14 */ stw r0, 0x14(r1)
/* 804A2704 4B FF F9 81 */ bl create__13daBoomerang_cFv
/* 804A2708 80 01 00 14 */ lwz r0, 0x14(r1)
/* 804A270C 7C 08 03 A6 */ mtlr r0
/* 804A2710 38 21 00 10 */ addi r1, r1, 0x10
/* 804A2714 4E 80 00 20 */ blr

View File

@ -1,155 +0,0 @@
lbl_8049F39C:
/* 8049F39C 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8049F3A0 7C 08 02 A6 */ mflr r0
/* 8049F3A4 90 01 00 24 */ stw r0, 0x24(r1)
/* 8049F3A8 39 61 00 20 */ addi r11, r1, 0x20
/* 8049F3AC 4B EC 2E 31 */ bl _savegpr_29
/* 8049F3B0 7C 7F 1B 78 */ mr r31, r3
/* 8049F3B4 80 03 09 64 */ lwz r0, 0x964(r3)
/* 8049F3B8 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
/* 8049F3BC 40 82 01 50 */ bne lbl_8049F50C
/* 8049F3C0 3B A0 00 00 */ li r29, 0
/* 8049F3C4 48 00 00 B4 */ b lbl_8049F478
lbl_8049F3C8:
/* 8049F3C8 7C 7F EA 14 */ add r3, r31, r29
/* 8049F3CC 88 03 05 FA */ lbz r0, 0x5fa(r3)
/* 8049F3D0 28 00 00 00 */ cmplwi r0, 0
/* 8049F3D4 41 82 00 A0 */ beq lbl_8049F474
/* 8049F3D8 57 A0 10 3A */ slwi r0, r29, 2
/* 8049F3DC 7F DF 02 14 */ add r30, r31, r0
/* 8049F3E0 80 1E 06 C0 */ lwz r0, 0x6c0(r30)
/* 8049F3E4 28 00 00 00 */ cmplwi r0, 0
/* 8049F3E8 41 82 00 54 */ beq lbl_8049F43C
/* 8049F3EC 80 1E 06 AC */ lwz r0, 0x6ac(r30)
/* 8049F3F0 90 01 00 0C */ stw r0, 0xc(r1)
/* 8049F3F4 3C 60 80 02 */ lis r3, fpcSch_JudgeByID__FPvPv@ha /* 0x80023590@ha */
/* 8049F3F8 38 63 35 90 */ addi r3, r3, fpcSch_JudgeByID__FPvPv@l /* 0x80023590@l */
/* 8049F3FC 38 81 00 0C */ addi r4, r1, 0xc
/* 8049F400 4B B7 A3 F9 */ bl fopAcIt_Judge__FPFPvPv_PvPv
/* 8049F404 90 7E 06 C0 */ stw r3, 0x6c0(r30)
/* 8049F408 80 9E 06 C0 */ lwz r4, 0x6c0(r30)
/* 8049F40C 28 04 00 00 */ cmplwi r4, 0
/* 8049F410 40 82 00 18 */ bne lbl_8049F428
/* 8049F414 7F E3 FB 78 */ mr r3, r31
/* 8049F418 7F A4 EB 78 */ mr r4, r29
/* 8049F41C 48 00 02 F5 */ bl pushLockList__13daBoomerang_cFi
/* 8049F420 3B BD FF FF */ addi r29, r29, -1
/* 8049F424 48 00 00 50 */ b lbl_8049F474
lbl_8049F428:
/* 8049F428 38 7F 05 98 */ addi r3, r31, 0x598
/* 8049F42C 38 84 05 38 */ addi r4, r4, 0x538
/* 8049F430 7F A5 EB 78 */ mr r5, r29
/* 8049F434 4B FF FA 95 */ bl setSight__19daBoomerang_sight_cFPC4cXyzi
/* 8049F438 48 00 00 3C */ b lbl_8049F474
lbl_8049F43C:
/* 8049F43C 88 03 07 18 */ lbz r0, 0x718(r3)
/* 8049F440 28 00 00 00 */ cmplwi r0, 0
/* 8049F444 41 82 00 20 */ beq lbl_8049F464
/* 8049F448 38 7F 05 98 */ addi r3, r31, 0x598
/* 8049F44C 1C 9D 00 0C */ mulli r4, r29, 0xc
/* 8049F450 38 84 06 DC */ addi r4, r4, 0x6dc
/* 8049F454 7C 9F 22 14 */ add r4, r31, r4
/* 8049F458 7F A5 EB 78 */ mr r5, r29
/* 8049F45C 4B FF FA 6D */ bl setSight__19daBoomerang_sight_cFPC4cXyzi
/* 8049F460 48 00 00 14 */ b lbl_8049F474
lbl_8049F464:
/* 8049F464 38 7F 05 98 */ addi r3, r31, 0x598
/* 8049F468 38 80 00 00 */ li r4, 0
/* 8049F46C 7F A5 EB 78 */ mr r5, r29
/* 8049F470 4B FF FA 59 */ bl setSight__19daBoomerang_sight_cFPC4cXyzi
lbl_8049F474:
/* 8049F474 3B BD 00 01 */ addi r29, r29, 1
lbl_8049F478:
/* 8049F478 2C 1D 00 05 */ cmpwi r29, 5
/* 8049F47C 41 80 FF 4C */ blt lbl_8049F3C8
/* 8049F480 88 1F 05 FF */ lbz r0, 0x5ff(r31)
/* 8049F484 28 00 00 00 */ cmplwi r0, 0
/* 8049F488 41 82 00 5C */ beq lbl_8049F4E4
/* 8049F48C 80 1F 06 D8 */ lwz r0, 0x6d8(r31)
/* 8049F490 28 00 00 00 */ cmplwi r0, 0
/* 8049F494 41 82 00 20 */ beq lbl_8049F4B4
/* 8049F498 80 1F 06 D4 */ lwz r0, 0x6d4(r31)
/* 8049F49C 90 01 00 08 */ stw r0, 8(r1)
/* 8049F4A0 3C 60 80 02 */ lis r3, fpcSch_JudgeByID__FPvPv@ha /* 0x80023590@ha */
/* 8049F4A4 38 63 35 90 */ addi r3, r3, fpcSch_JudgeByID__FPvPv@l /* 0x80023590@l */
/* 8049F4A8 38 81 00 08 */ addi r4, r1, 8
/* 8049F4AC 4B B7 A3 4D */ bl fopAcIt_Judge__FPFPvPv_PvPv
/* 8049F4B0 90 7F 06 D8 */ stw r3, 0x6d8(r31)
lbl_8049F4B4:
/* 8049F4B4 80 9F 06 D8 */ lwz r4, 0x6d8(r31)
/* 8049F4B8 28 04 00 00 */ cmplwi r4, 0
/* 8049F4BC 41 82 00 18 */ beq lbl_8049F4D4
/* 8049F4C0 38 7F 05 98 */ addi r3, r31, 0x598
/* 8049F4C4 38 84 05 38 */ addi r4, r4, 0x538
/* 8049F4C8 38 A0 00 05 */ li r5, 5
/* 8049F4CC 4B FF F9 FD */ bl setSight__19daBoomerang_sight_cFPC4cXyzi
/* 8049F4D0 48 00 00 14 */ b lbl_8049F4E4
lbl_8049F4D4:
/* 8049F4D4 38 7F 05 98 */ addi r3, r31, 0x598
/* 8049F4D8 38 80 00 00 */ li r4, 0
/* 8049F4DC 38 A0 00 05 */ li r5, 5
/* 8049F4E0 4B FF F9 E9 */ bl setSight__19daBoomerang_sight_cFPC4cXyzi
lbl_8049F4E4:
/* 8049F4E4 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
/* 8049F4E8 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */
/* 8049F4EC 88 03 4F AD */ lbz r0, 0x4fad(r3)
/* 8049F4F0 28 00 00 00 */ cmplwi r0, 0
/* 8049F4F4 40 82 00 18 */ bne lbl_8049F50C
/* 8049F4F8 38 63 5F 64 */ addi r3, r3, 0x5f64
/* 8049F4FC 38 83 02 3C */ addi r4, r3, 0x23c
/* 8049F500 38 A3 02 40 */ addi r5, r3, 0x240
/* 8049F504 38 DF 05 98 */ addi r6, r31, 0x598
/* 8049F508 4B BB 72 8D */ bl set__12dDlst_list_cFRPP12dDlst_base_cRPP12dDlst_base_cP12dDlst_base_c
lbl_8049F50C:
/* 8049F50C 3C 60 80 43 */ lis r3, g_env_light@ha /* 0x8042CA54@ha */
/* 8049F510 38 63 CA 54 */ addi r3, r3, g_env_light@l /* 0x8042CA54@l */
/* 8049F514 38 80 00 00 */ li r4, 0
/* 8049F518 38 BF 04 D0 */ addi r5, r31, 0x4d0
/* 8049F51C 38 DF 01 0C */ addi r6, r31, 0x10c
/* 8049F520 4B D0 42 A5 */ bl settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c
/* 8049F524 3C 60 80 43 */ lis r3, g_env_light@ha /* 0x8042CA54@ha */
/* 8049F528 38 63 CA 54 */ addi r3, r3, g_env_light@l /* 0x8042CA54@l */
/* 8049F52C 80 9F 05 68 */ lwz r4, 0x568(r31)
/* 8049F530 80 84 00 04 */ lwz r4, 4(r4)
/* 8049F534 38 BF 01 0C */ addi r5, r31, 0x10c
/* 8049F538 4B D0 58 69 */ bl setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c
/* 8049F53C 80 7F 05 68 */ lwz r3, 0x568(r31)
/* 8049F540 4B B6 E7 85 */ bl mDoExt_modelUpdateDL__FP8J3DModel
/* 8049F544 80 7F 05 68 */ lwz r3, 0x568(r31)
/* 8049F548 4B B9 24 05 */ bl entry__10daMirror_cFP8J3DModel
/* 8049F54C 80 1F 00 B0 */ lwz r0, 0xb0(r31)
/* 8049F550 28 00 00 00 */ cmplwi r0, 0
/* 8049F554 41 82 00 30 */ beq lbl_8049F584
/* 8049F558 3C 60 80 43 */ lis r3, g_env_light@ha /* 0x8042CA54@ha */
/* 8049F55C 38 63 CA 54 */ addi r3, r3, g_env_light@l /* 0x8042CA54@l */
/* 8049F560 80 9F 05 6C */ lwz r4, 0x56c(r31)
/* 8049F564 80 84 00 04 */ lwz r4, 4(r4)
/* 8049F568 38 BF 01 0C */ addi r5, r31, 0x10c
/* 8049F56C 4B D0 58 35 */ bl setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c
/* 8049F570 80 7F 05 6C */ lwz r3, 0x56c(r31)
/* 8049F574 4B B6 E7 F1 */ bl mDoExt_modelEntryDL__FP8J3DModel
/* 8049F578 80 7F 05 6C */ lwz r3, 0x56c(r31)
/* 8049F57C 4B B9 23 D1 */ bl entry__10daMirror_cFP8J3DModel
/* 8049F580 48 00 00 38 */ b lbl_8049F5B8
lbl_8049F584:
/* 8049F584 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
/* 8049F588 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */
/* 8049F58C 80 03 5F 18 */ lwz r0, 0x5f18(r3)
/* 8049F590 54 00 03 19 */ rlwinm. r0, r0, 0, 0xc, 0xc
/* 8049F594 41 82 00 24 */ beq lbl_8049F5B8
/* 8049F598 3C 60 80 43 */ lis r3, g_env_light@ha /* 0x8042CA54@ha */
/* 8049F59C 38 63 CA 54 */ addi r3, r3, g_env_light@l /* 0x8042CA54@l */
/* 8049F5A0 80 9F 05 90 */ lwz r4, 0x590(r31)
/* 8049F5A4 80 84 00 04 */ lwz r4, 4(r4)
/* 8049F5A8 38 BF 01 0C */ addi r5, r31, 0x10c
/* 8049F5AC 4B D0 57 F5 */ bl setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c
/* 8049F5B0 80 7F 05 90 */ lwz r3, 0x590(r31)
/* 8049F5B4 4B B6 E7 11 */ bl mDoExt_modelUpdateDL__FP8J3DModel
lbl_8049F5B8:
/* 8049F5B8 38 60 00 01 */ li r3, 1
/* 8049F5BC 39 61 00 20 */ addi r11, r1, 0x20
/* 8049F5C0 4B EC 2C 69 */ bl _restgpr_29
/* 8049F5C4 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8049F5C8 7C 08 03 A6 */ mtlr r0
/* 8049F5CC 38 21 00 20 */ addi r1, r1, 0x20
/* 8049F5D0 4E 80 00 20 */ blr

View File

@ -1,72 +0,0 @@
lbl_8049F710:
/* 8049F710 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8049F714 7C 08 02 A6 */ mflr r0
/* 8049F718 90 01 00 24 */ stw r0, 0x24(r1)
/* 8049F71C 39 61 00 20 */ addi r11, r1, 0x20
/* 8049F720 4B EC 2A B9 */ bl _savegpr_28
/* 8049F724 7C 7F 1B 78 */ mr r31, r3
/* 8049F728 2C 04 00 00 */ cmpwi r4, 0
/* 8049F72C 40 82 00 0C */ bne lbl_8049F738
/* 8049F730 38 00 00 00 */ li r0, 0
/* 8049F734 98 1F 05 F8 */ stb r0, 0x5f8(r31)
lbl_8049F738:
/* 8049F738 80 1F 00 B0 */ lwz r0, 0xb0(r31)
/* 8049F73C 28 00 00 01 */ cmplwi r0, 1
/* 8049F740 40 82 00 18 */ bne lbl_8049F758
/* 8049F744 88 7F 09 51 */ lbz r3, 0x951(r31)
/* 8049F748 7C 04 18 00 */ cmpw r4, r3
/* 8049F74C 40 80 00 0C */ bge lbl_8049F758
/* 8049F750 38 03 FF FF */ addi r0, r3, -1
/* 8049F754 98 1F 09 51 */ stb r0, 0x951(r31)
lbl_8049F758:
/* 8049F758 7C 9C 23 78 */ mr r28, r4
/* 8049F75C 54 9D 10 3A */ slwi r29, r4, 2
/* 8049F760 1F C4 00 0C */ mulli r30, r4, 0xc
/* 8049F764 48 00 00 58 */ b lbl_8049F7BC
lbl_8049F768:
/* 8049F768 7C 7F EA 14 */ add r3, r31, r29
/* 8049F76C 80 03 06 B0 */ lwz r0, 0x6b0(r3)
/* 8049F770 90 03 06 AC */ stw r0, 0x6ac(r3)
/* 8049F774 80 03 06 C4 */ lwz r0, 0x6c4(r3)
/* 8049F778 90 03 06 C0 */ stw r0, 0x6c0(r3)
/* 8049F77C 7C 7F F2 14 */ add r3, r31, r30
/* 8049F780 C0 03 06 E8 */ lfs f0, 0x6e8(r3)
/* 8049F784 D0 03 06 DC */ stfs f0, 0x6dc(r3)
/* 8049F788 C0 03 06 EC */ lfs f0, 0x6ec(r3)
/* 8049F78C D0 03 06 E0 */ stfs f0, 0x6e0(r3)
/* 8049F790 C0 03 06 F0 */ lfs f0, 0x6f0(r3)
/* 8049F794 D0 03 06 E4 */ stfs f0, 0x6e4(r3)
/* 8049F798 7C 7F E2 14 */ add r3, r31, r28
/* 8049F79C 88 03 07 19 */ lbz r0, 0x719(r3)
/* 8049F7A0 98 03 07 18 */ stb r0, 0x718(r3)
/* 8049F7A4 38 7F 05 98 */ addi r3, r31, 0x598
/* 8049F7A8 7F 84 E3 78 */ mr r4, r28
/* 8049F7AC 4B FF F6 3D */ bl copyNumData__19daBoomerang_sight_cFi
/* 8049F7B0 3B 9C 00 01 */ addi r28, r28, 1
/* 8049F7B4 3B DE 00 0C */ addi r30, r30, 0xc
/* 8049F7B8 3B BD 00 04 */ addi r29, r29, 4
lbl_8049F7BC:
/* 8049F7BC 88 7F 09 50 */ lbz r3, 0x950(r31)
/* 8049F7C0 38 03 FF FF */ addi r0, r3, -1
/* 8049F7C4 7C 1C 00 00 */ cmpw r28, r0
/* 8049F7C8 41 80 FF A0 */ blt lbl_8049F768
/* 8049F7CC 38 00 FF FF */ li r0, -1
/* 8049F7D0 57 83 10 3A */ slwi r3, r28, 2
/* 8049F7D4 7C 7F 1A 14 */ add r3, r31, r3
/* 8049F7D8 90 03 06 AC */ stw r0, 0x6ac(r3)
/* 8049F7DC 38 00 00 00 */ li r0, 0
/* 8049F7E0 90 03 06 C0 */ stw r0, 0x6c0(r3)
/* 8049F7E4 7C 7F E2 14 */ add r3, r31, r28
/* 8049F7E8 98 03 07 18 */ stb r0, 0x718(r3)
/* 8049F7EC 88 7F 09 50 */ lbz r3, 0x950(r31)
/* 8049F7F0 28 03 00 00 */ cmplwi r3, 0
/* 8049F7F4 41 82 00 0C */ beq lbl_8049F800
/* 8049F7F8 38 03 FF FF */ addi r0, r3, -1
/* 8049F7FC 98 1F 09 50 */ stb r0, 0x950(r31)
lbl_8049F800:
/* 8049F800 39 61 00 20 */ addi r11, r1, 0x20
/* 8049F804 4B EC 2A 21 */ bl _restgpr_28
/* 8049F808 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8049F80C 7C 08 03 A6 */ mtlr r0
/* 8049F810 38 21 00 20 */ addi r1, r1, 0x20
/* 8049F814 4E 80 00 20 */ blr

View File

@ -1,71 +0,0 @@
lbl_8049FD6C:
/* 8049FD6C 80 03 09 64 */ lwz r0, 0x964(r3)
/* 8049FD70 54 00 07 FF */ clrlwi. r0, r0, 0x1f
/* 8049FD74 41 82 00 38 */ beq lbl_8049FDAC
/* 8049FD78 80 03 00 B0 */ lwz r0, 0xb0(r3)
/* 8049FD7C 28 00 00 01 */ cmplwi r0, 1
/* 8049FD80 4C 82 00 20 */ bnelr
/* 8049FD84 3C 80 80 40 */ lis r4, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
/* 8049FD88 38 84 61 C0 */ addi r4, r4, g_dComIfG_gameInfo@l /* 0x804061C0@l */
/* 8049FD8C 80 84 5D B4 */ lwz r4, 0x5db4(r4)
/* 8049FD90 C0 04 35 34 */ lfs f0, 0x3534(r4)
/* 8049FD94 D0 03 09 90 */ stfs f0, 0x990(r3)
/* 8049FD98 C0 04 35 38 */ lfs f0, 0x3538(r4)
/* 8049FD9C D0 03 09 94 */ stfs f0, 0x994(r3)
/* 8049FDA0 C0 04 35 3C */ lfs f0, 0x353c(r4)
/* 8049FDA4 D0 03 09 98 */ stfs f0, 0x998(r3)
/* 8049FDA8 4E 80 00 20 */ blr
lbl_8049FDAC:
/* 8049FDAC 88 03 09 57 */ lbz r0, 0x957(r3)
/* 8049FDB0 28 00 00 00 */ cmplwi r0, 0
/* 8049FDB4 41 82 00 20 */ beq lbl_8049FDD4
/* 8049FDB8 C0 03 09 AC */ lfs f0, 0x9ac(r3)
/* 8049FDBC D0 03 09 90 */ stfs f0, 0x990(r3)
/* 8049FDC0 C0 03 09 B0 */ lfs f0, 0x9b0(r3)
/* 8049FDC4 D0 03 09 94 */ stfs f0, 0x994(r3)
/* 8049FDC8 C0 03 09 B4 */ lfs f0, 0x9b4(r3)
/* 8049FDCC D0 03 09 98 */ stfs f0, 0x998(r3)
/* 8049FDD0 4E 80 00 20 */ blr
lbl_8049FDD4:
/* 8049FDD4 88 C3 09 51 */ lbz r6, 0x951(r3)
/* 8049FDD8 54 C4 10 3A */ slwi r4, r6, 2
/* 8049FDDC 48 00 00 80 */ b lbl_8049FE5C
lbl_8049FDE0:
/* 8049FDE0 38 04 06 C0 */ addi r0, r4, 0x6c0
/* 8049FDE4 7C 03 00 2E */ lwzx r0, r3, r0
/* 8049FDE8 28 00 00 00 */ cmplwi r0, 0
/* 8049FDEC 41 82 00 28 */ beq lbl_8049FE14
/* 8049FDF0 7C 83 22 14 */ add r4, r3, r4
/* 8049FDF4 80 84 06 C0 */ lwz r4, 0x6c0(r4)
/* 8049FDF8 C0 04 05 38 */ lfs f0, 0x538(r4)
/* 8049FDFC D0 03 09 90 */ stfs f0, 0x990(r3)
/* 8049FE00 C0 04 05 3C */ lfs f0, 0x53c(r4)
/* 8049FE04 D0 03 09 94 */ stfs f0, 0x994(r3)
/* 8049FE08 C0 04 05 40 */ lfs f0, 0x540(r4)
/* 8049FE0C D0 03 09 98 */ stfs f0, 0x998(r3)
/* 8049FE10 4E 80 00 20 */ blr
lbl_8049FE14:
/* 8049FE14 38 06 07 18 */ addi r0, r6, 0x718
/* 8049FE18 7C 03 00 AE */ lbzx r0, r3, r0
/* 8049FE1C 28 00 00 00 */ cmplwi r0, 0
/* 8049FE20 41 82 00 28 */ beq lbl_8049FE48
/* 8049FE24 1C 06 00 0C */ mulli r0, r6, 0xc
/* 8049FE28 7C 83 02 14 */ add r4, r3, r0
/* 8049FE2C C0 04 06 DC */ lfs f0, 0x6dc(r4)
/* 8049FE30 D0 03 09 90 */ stfs f0, 0x990(r3)
/* 8049FE34 C0 04 06 E0 */ lfs f0, 0x6e0(r4)
/* 8049FE38 D0 03 09 94 */ stfs f0, 0x994(r3)
/* 8049FE3C C0 04 06 E4 */ lfs f0, 0x6e4(r4)
/* 8049FE40 D0 03 09 98 */ stfs f0, 0x998(r3)
/* 8049FE44 4E 80 00 20 */ blr
lbl_8049FE48:
/* 8049FE48 88 A3 09 51 */ lbz r5, 0x951(r3)
/* 8049FE4C 38 05 00 01 */ addi r0, r5, 1
/* 8049FE50 98 03 09 51 */ stb r0, 0x951(r3)
/* 8049FE54 38 C6 00 01 */ addi r6, r6, 1
/* 8049FE58 38 84 00 04 */ addi r4, r4, 4
lbl_8049FE5C:
/* 8049FE5C 88 03 09 50 */ lbz r0, 0x950(r3)
/* 8049FE60 7C 06 00 00 */ cmpw r6, r0
/* 8049FE64 41 80 FF 7C */ blt lbl_8049FDE0
/* 8049FE68 4E 80 00 20 */ blr

View File

@ -1,67 +0,0 @@
lbl_8049FAA4:
/* 8049FAA4 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8049FAA8 7C 08 02 A6 */ mflr r0
/* 8049FAAC 90 01 00 24 */ stw r0, 0x24(r1)
/* 8049FAB0 39 61 00 20 */ addi r11, r1, 0x20
/* 8049FAB4 4B EC 27 29 */ bl _savegpr_29
/* 8049FAB8 7C 7D 1B 78 */ mr r29, r3
/* 8049FABC 3C 60 80 4A */ lis r3, lit_4078@ha /* 0x804A2850@ha */
/* 8049FAC0 3B E3 28 50 */ addi r31, r3, lit_4078@l /* 0x804A2850@l */
/* 8049FAC4 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
/* 8049FAC8 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */
/* 8049FACC 83 C3 5D B4 */ lwz r30, 0x5db4(r3)
/* 8049FAD0 7F C3 F3 78 */ mr r3, r30
/* 8049FAD4 81 9E 06 28 */ lwz r12, 0x628(r30)
/* 8049FAD8 81 8C 00 20 */ lwz r12, 0x20(r12)
/* 8049FADC 7D 89 03 A6 */ mtctr r12
/* 8049FAE0 4E 80 04 21 */ bctrl
/* 8049FAE4 3C 80 80 3E */ lis r4, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */
/* 8049FAE8 38 84 D4 70 */ addi r4, r4, now__14mDoMtx_stack_c@l /* 0x803DD470@l */
/* 8049FAEC 4B EA 69 C5 */ bl PSMTXCopy
/* 8049FAF0 C0 3F 00 B4 */ lfs f1, 0xb4(r31)
/* 8049FAF4 C0 5F 00 B8 */ lfs f2, 0xb8(r31)
/* 8049FAF8 C0 7F 00 BC */ lfs f3, 0xbc(r31)
/* 8049FAFC 4B B6 D2 A1 */ bl transM__14mDoMtx_stack_cFfff
/* 8049FB00 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */
/* 8049FB04 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */
/* 8049FB08 38 80 FD 28 */ li r4, -728
/* 8049FB0C 38 A0 1B BB */ li r5, 0x1bbb
/* 8049FB10 38 C0 F9 9A */ li r6, -1638
/* 8049FB14 4B B6 C6 51 */ bl mDoMtx_XYZrotM__FPA4_fsss
/* 8049FB18 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */
/* 8049FB1C 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */
/* 8049FB20 80 9D 05 68 */ lwz r4, 0x568(r29)
/* 8049FB24 38 84 00 24 */ addi r4, r4, 0x24
/* 8049FB28 4B EA 69 89 */ bl PSMTXCopy
/* 8049FB2C 7F C3 F3 78 */ mr r3, r30
/* 8049FB30 81 9E 06 28 */ lwz r12, 0x628(r30)
/* 8049FB34 81 8C 00 20 */ lwz r12, 0x20(r12)
/* 8049FB38 7D 89 03 A6 */ mtctr r12
/* 8049FB3C 4E 80 04 21 */ bctrl
/* 8049FB40 80 9D 05 6C */ lwz r4, 0x56c(r29)
/* 8049FB44 38 84 00 24 */ addi r4, r4, 0x24
/* 8049FB48 4B EA 69 69 */ bl PSMTXCopy
/* 8049FB4C 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */
/* 8049FB50 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */
/* 8049FB54 C0 03 00 0C */ lfs f0, 0xc(r3)
/* 8049FB58 D0 1D 04 D0 */ stfs f0, 0x4d0(r29)
/* 8049FB5C C0 03 00 1C */ lfs f0, 0x1c(r3)
/* 8049FB60 D0 1D 04 D4 */ stfs f0, 0x4d4(r29)
/* 8049FB64 C0 03 00 2C */ lfs f0, 0x2c(r3)
/* 8049FB68 D0 1D 04 D8 */ stfs f0, 0x4d8(r29)
/* 8049FB6C 80 7D 05 94 */ lwz r3, 0x594(r29)
/* 8049FB70 4B C0 96 D9 */ bl simpleAnmPlay__9daAlink_cFP10J3DAnmBase
/* 8049FB74 7F C3 F3 78 */ mr r3, r30
/* 8049FB78 81 9E 06 28 */ lwz r12, 0x628(r30)
/* 8049FB7C 81 8C 00 20 */ lwz r12, 0x20(r12)
/* 8049FB80 7D 89 03 A6 */ mtctr r12
/* 8049FB84 4E 80 04 21 */ bctrl
/* 8049FB88 80 9D 05 90 */ lwz r4, 0x590(r29)
/* 8049FB8C 38 84 00 24 */ addi r4, r4, 0x24
/* 8049FB90 4B EA 69 21 */ bl PSMTXCopy
/* 8049FB94 39 61 00 20 */ addi r11, r1, 0x20
/* 8049FB98 4B EC 26 91 */ bl _restgpr_29
/* 8049FB9C 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8049FBA0 7C 08 03 A6 */ mtlr r0
/* 8049FBA4 38 21 00 20 */ addi r1, r1, 0x20
/* 8049FBA8 4E 80 00 20 */ blr

View File

@ -1,72 +0,0 @@
lbl_8049F8B0:
/* 8049F8B0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8049F8B4 7C 08 02 A6 */ mflr r0
/* 8049F8B8 90 01 00 14 */ stw r0, 0x14(r1)
/* 8049F8BC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8049F8C0 93 C1 00 08 */ stw r30, 8(r1)
/* 8049F8C4 7C 7E 1B 78 */ mr r30, r3
/* 8049F8C8 88 C3 09 50 */ lbz r6, 0x950(r3)
/* 8049F8CC 28 06 00 05 */ cmplwi r6, 5
/* 8049F8D0 41 80 00 0C */ blt lbl_8049F8DC
/* 8049F8D4 38 60 00 00 */ li r3, 0
/* 8049F8D8 48 00 00 B4 */ b lbl_8049F98C
lbl_8049F8DC:
/* 8049F8DC 28 04 00 00 */ cmplwi r4, 0
/* 8049F8E0 41 82 00 0C */ beq lbl_8049F8EC
/* 8049F8E4 83 E4 00 04 */ lwz r31, 4(r4)
/* 8049F8E8 48 00 00 08 */ b lbl_8049F8F0
lbl_8049F8EC:
/* 8049F8EC 3B E0 FF FF */ li r31, -1
lbl_8049F8F0:
/* 8049F8F0 38 60 00 00 */ li r3, 0
/* 8049F8F4 7C C9 03 A6 */ mtctr r6
/* 8049F8F8 2C 06 00 00 */ cmpwi r6, 0
/* 8049F8FC 40 81 00 24 */ ble lbl_8049F920
lbl_8049F900:
/* 8049F900 38 03 06 AC */ addi r0, r3, 0x6ac
/* 8049F904 7C 1E 00 2E */ lwzx r0, r30, r0
/* 8049F908 7C 00 F8 40 */ cmplw r0, r31
/* 8049F90C 40 82 00 0C */ bne lbl_8049F918
/* 8049F910 38 60 00 00 */ li r3, 0
/* 8049F914 48 00 00 78 */ b lbl_8049F98C
lbl_8049F918:
/* 8049F918 38 63 00 04 */ addi r3, r3, 4
/* 8049F91C 42 00 FF E4 */ bdnz lbl_8049F900
lbl_8049F920:
/* 8049F920 2C 05 00 00 */ cmpwi r5, 0
/* 8049F924 41 82 00 30 */ beq lbl_8049F954
/* 8049F928 38 64 05 38 */ addi r3, r4, 0x538
/* 8049F92C 38 9E 04 D0 */ addi r4, r30, 0x4d0
/* 8049F930 4B EA 7A 6D */ bl PSVECSquareDistance
/* 8049F934 C0 1E 09 84 */ lfs f0, 0x984(r30)
/* 8049F938 FC 01 00 40 */ fcmpo cr0, f1, f0
/* 8049F93C 40 81 00 0C */ ble lbl_8049F948
/* 8049F940 38 60 00 00 */ li r3, 0
/* 8049F944 48 00 00 48 */ b lbl_8049F98C
lbl_8049F948:
/* 8049F948 D0 3E 09 84 */ stfs f1, 0x984(r30)
/* 8049F94C 93 FE 06 A8 */ stw r31, 0x6a8(r30)
/* 8049F950 48 00 00 38 */ b lbl_8049F988
lbl_8049F954:
/* 8049F954 54 C0 15 BA */ rlwinm r0, r6, 2, 0x16, 0x1d
/* 8049F958 7C 7E 02 14 */ add r3, r30, r0
/* 8049F95C 93 E3 06 AC */ stw r31, 0x6ac(r3)
/* 8049F960 88 1E 09 50 */ lbz r0, 0x950(r30)
/* 8049F964 54 00 10 3A */ slwi r0, r0, 2
/* 8049F968 7C 7E 02 14 */ add r3, r30, r0
/* 8049F96C 90 83 06 C0 */ stw r4, 0x6c0(r3)
/* 8049F970 38 7E 05 98 */ addi r3, r30, 0x598
/* 8049F974 88 9E 09 50 */ lbz r4, 0x950(r30)
/* 8049F978 4B FF F4 31 */ bl initFrame__19daBoomerang_sight_cFi
/* 8049F97C 88 7E 09 50 */ lbz r3, 0x950(r30)
/* 8049F980 38 03 00 01 */ addi r0, r3, 1
/* 8049F984 98 1E 09 50 */ stb r0, 0x950(r30)
lbl_8049F988:
/* 8049F988 38 60 00 01 */ li r3, 1
lbl_8049F98C:
/* 8049F98C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8049F990 83 C1 00 08 */ lwz r30, 8(r1)
/* 8049F994 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8049F998 7C 08 03 A6 */ mtlr r0
/* 8049F99C 38 21 00 10 */ addi r1, r1, 0x10
/* 8049F9A0 4E 80 00 20 */ blr

View File

@ -1,48 +0,0 @@
lbl_8049F9F0:
/* 8049F9F0 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8049F9F4 7C 08 02 A6 */ mflr r0
/* 8049F9F8 90 01 00 24 */ stw r0, 0x24(r1)
/* 8049F9FC 39 61 00 20 */ addi r11, r1, 0x20
/* 8049FA00 4B EC 27 DD */ bl _savegpr_29
/* 8049FA04 7C 7D 1B 78 */ mr r29, r3
/* 8049FA08 38 7D 0D 6C */ addi r3, r29, 0xd6c
/* 8049FA0C 38 9D 04 D0 */ addi r4, r29, 0x4d0
/* 8049FA10 4B DC 83 19 */ bl SetPos__11cBgS_GndChkFPC4cXyz
/* 8049FA14 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
/* 8049FA18 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */
/* 8049FA1C 3B E3 0F 38 */ addi r31, r3, 0xf38
/* 8049FA20 7F E3 FB 78 */ mr r3, r31
/* 8049FA24 38 9D 0D 6C */ addi r4, r29, 0xd6c
/* 8049FA28 4B BD 4A 79 */ bl GroundCross__4cBgSFP11cBgS_GndChk
/* 8049FA2C D0 3D 09 80 */ stfs f1, 0x980(r29)
/* 8049FA30 3C 60 80 4A */ lis r3, lit_4886@ha /* 0x804A2900@ha */
/* 8049FA34 C0 23 29 00 */ lfs f1, lit_4886@l(r3) /* 0x804A2900@l */
/* 8049FA38 C0 1D 09 80 */ lfs f0, 0x980(r29)
/* 8049FA3C FC 01 00 00 */ fcmpu cr0, f1, f0
/* 8049FA40 41 82 00 28 */ beq lbl_8049FA68
/* 8049FA44 7F E3 FB 78 */ mr r3, r31
/* 8049FA48 38 9D 0D 80 */ addi r4, r29, 0xd80
/* 8049FA4C 4B BD 56 B5 */ bl GetRoomId__4dBgSFRC13cBgS_PolyInfo
/* 8049FA50 7C 7E 1B 78 */ mr r30, r3
/* 8049FA54 7F E3 FB 78 */ mr r3, r31
/* 8049FA58 38 9D 0D 80 */ addi r4, r29, 0xd80
/* 8049FA5C 4B BD 51 8D */ bl GetPolyColor__4dBgSFRC13cBgS_PolyInfo
/* 8049FA60 98 7D 04 8D */ stb r3, 0x48d(r29)
/* 8049FA64 48 00 00 10 */ b lbl_8049FA74
lbl_8049FA68:
/* 8049FA68 3C 60 80 45 */ lis r3, mStayNo__20dStage_roomControl_c+0x0@ha /* 0x80450D64@ha */
/* 8049FA6C 8B C3 0D 64 */ lbz r30, mStayNo__20dStage_roomControl_c+0x0@l(r3) /* 0x80450D64@l */
/* 8049FA70 7F DE 07 74 */ extsb r30, r30
lbl_8049FA74:
/* 8049FA74 9B DD 04 8C */ stb r30, 0x48c(r29)
/* 8049FA78 7F C3 F3 78 */ mr r3, r30
/* 8049FA7C 4B B8 D5 F1 */ bl dComIfGp_getReverb__Fi
/* 8049FA80 98 7D 09 53 */ stb r3, 0x953(r29)
/* 8049FA84 9B DD 09 F2 */ stb r30, 0x9f2(r29)
/* 8049FA88 9B DD 04 E2 */ stb r30, 0x4e2(r29)
/* 8049FA8C 39 61 00 20 */ addi r11, r1, 0x20
/* 8049FA90 4B EC 27 99 */ bl _restgpr_29
/* 8049FA94 80 01 00 24 */ lwz r0, 0x24(r1)
/* 8049FA98 7C 08 03 A6 */ mtlr r0
/* 8049FA9C 38 21 00 20 */ addi r1, r1, 0x20
/* 8049FAA0 4E 80 00 20 */ blr

View File

@ -33,6 +33,10 @@ inline s16 i_cM_deg2s(f32 deg) {
return deg;
}
inline f32 cM_fcos(f32 x) {
return JMASCos(cM_rad2s(x));
}
inline f32 cM_fsin(f32 x) {
return JMASSin(cM_rad2s(x));
}

View File

@ -111,6 +111,7 @@ public:
}; // Size: 0x1404
bool dBgS_CheckBGroundPoly(cBgS_PolyInfo const&);
bool dBgS_CheckBRoofPoly(cBgS_PolyInfo const&);
bool dBgS_CheckBWallPoly(cBgS_PolyInfo const&);
void dBgS_MoveBGProc_Typical(dBgW* param_0, void* param_1, cBgS_PolyInfo const& param_2,
bool param_3, cXyz* param_4, csXyz* param_5, csXyz* param_6);

View File

@ -11,9 +11,9 @@
class daBoomerang_sight_c {
public:
/* 8049E0B8 */ void createHeap();
/* 8049E0B8 */ int createHeap();
/* 8049E36C */ void initialize();
/* 8049EB64 */ void playAnime(int, int);
/* 8049EB64 */ int playAnime(int, int);
/* 8049EDA8 */ void initFrame(int);
/* 8049EDE8 */ void copyNumData(int);
/* 8049EEC8 */ void setSight(cXyz const*, int);
@ -22,6 +22,10 @@ public:
/* 804A278C */ virtual ~daBoomerang_sight_c();
u8 getReserve() const { return mReserve; }
u8 getAlpha(int i_index) { return mAlpha[i_index]; }
void offRedSight() { mRedSight = false; }
void onReserve() { mReserve = 1; }
void offReserve() { mReserve = 0; }
private:
/* 0x04 */ J2DScreen* field_0x4;
@ -29,24 +33,24 @@ private:
/* 0x0C */ J2DPane* field_0xc;
/* 0x10 */ J2DPane* field_0x10;
/* 0x14 */ J2DPane* field_0x14;
/* 0x18 */ J2DAnmBase* field_0x18;
/* 0x1C */ J2DAnmBase* field_0x1c;
/* 0x18 */ J2DAnmTevRegKey* field_0x18;
/* 0x1C */ J2DAnmTevRegKey* field_0x1c;
/* 0x20 */ J2DScreen* field_0x20;
/* 0x24 */ J2DPane* field_0x24;
/* 0x28 */ J2DPane* field_0x28;
/* 0x2C */ J2DPane* field_0x2c;
/* 0x30 */ J2DPane* field_0x30;
/* 0x34 */ J2DAnmBase* field_0x34;
/* 0x38 */ J2DAnmBase* field_0x38;
/* 0x34 */ J2DAnmTevRegKey* field_0x34;
/* 0x38 */ J2DAnmTevRegKey* field_0x38;
/* 0x3C */ J2DScreen* field_0x3c;
/* 0x40 */ J2DPane* field_0x40;
/* 0x44 */ J2DPane* field_0x44;
/* 0x48 */ J2DPane* field_0x48;
/* 0x4C */ J2DPane* field_0x4c;
/* 0x50 */ J2DAnmBase* field_0x50;
/* 0x54 */ J2DAnmBase* field_0x54;
/* 0x58 */ J2DAnmBase* field_0x58;
/* 0x5C */ J2DAnmBase* field_0x5c;
/* 0x50 */ J2DAnmTevRegKey* field_0x50;
/* 0x54 */ J2DAnmTevRegKey* field_0x54;
/* 0x58 */ J2DAnmColor* field_0x58;
/* 0x5C */ J2DAnmTransform* field_0x5c;
/* 0x60 */ bool mRedSight;
/* 0x61 */ u8 mReserve;
/* 0x62 */ u8 mAlpha[6];
@ -62,7 +66,10 @@ class daAlink_c;
class daBoomerang_c : public fopAc_ac_c {
public:
enum daBoomerang_FLG0 {
/* 0x001 */ FLG0_1 = 0x001,
/* 0x004 */ FLG0_UNK = 0x004,
/* 0x010 */ FLG0_10 = 0x010,
/* 0x200 */ FLG0_0x200 = 0x200,
/* 0x800 */ FLG0_LOCK_DIST_CANCEL = 0x800,
/* 0x080 */ WIND_CATCH = 0x80,
};
@ -74,7 +81,7 @@ public:
/* 8049F710 */ void pushLockList(int);
/* 8049F818 */ void cancelLockActorBase(fopAc_ac_c*);
/* 8049F874 */ void setAimActorBase(fopAc_ac_c*);
/* 8049F8B0 */ void setLockActor(fopAc_ac_c*, int);
/* 8049F8B0 */ int setLockActor(fopAc_ac_c*, int);
/* 8049F9A4 */ void resetLockActor();
/* 8049F9F0 */ void setRoomInfo();
/* 8049FAA4 */ void setKeepMatrix();
@ -82,7 +89,7 @@ public:
/* 8049FCD0 */ void setRotAngle();
/* 8049FD6C */ void setAimPos();
/* 8049FE6C */ void checkBgHit(cXyz*, cXyz*);
/* 804A006C */ void setEffectTraceMatrix(u32*, u16);
/* 804A006C */ JPABaseEmitter* setEffectTraceMatrix(u32*, u16);
/* 804A012C */ void setEffect();
/* 804A0874 */ void procWait();
/* 804A0F0C */ void procMove();
@ -92,6 +99,7 @@ public:
/* 804A2084 */ int create();
/* 804A230C */ daBoomerang_c();
u32 checkStateFlg0(daBoomerang_FLG0 i_flag) { return mStateFlg0 & i_flag; }
void onStateFlg0(daBoomerang_FLG0 flag) { mStateFlg0 |= flag; }
void onWindCatch() { onStateFlg0(WIND_CATCH); }
bool checkForceDelete() const { return mForceDelete; }
@ -108,16 +116,16 @@ private:
/* 0x568 */ J3DModel* field_0x568;
/* 0x56C */ J3DModel* field_0x56c;
/* 0x570 */ J3DAnmTextureSRTKey* m_windBtk;
/* 0x574 */ mDoExt_bckAnm field_0x574;
/* 0x574 */ mDoExt_bckAnm mBck;
/* 0x590 */ J3DModel* field_0x590;
/* 0x594 */ J3DAnmTextureSRTKey* m_waitEffBtk;
/* 0x598 */ daBoomerang_sight_c mSight;
/* 0x6A8 */ u32 field_0x6a8;
/* 0x6AC */ u32 field_0x6ac[5];
/* 0x6A8 */ s32 field_0x6a8;
/* 0x6AC */ s32 field_0x6ac[5];
/* 0x6C0 */ fopAc_ac_c* mLockActors[5]; // Actors corresponding to the five target points
/* 0x6D4 */ fopAc_ac_c* field_0x6d4;
/* 0x6D8 */ u8 field_0x6d8[4];
/* 0x6DC */ cXyz field_0x6dc[5];
/* 0x6D4 */ u32 field_0x6d4;
/* 0x6D8 */ fopAc_ac_c* field_0x6d8;
/* 0x6DC */ cXyz mLockActorsPositions[5];
/* 0x718 */ u8 field_0x718[5];
/* 0x720 */ Z2SoundObjSimple field_0x720;
/* 0x740 */ dBgS_Acch field_0x740;
@ -137,7 +145,16 @@ private:
/* 0x960 */ s16 field_0x960;
/* 0x962 */ s16 field_0x962;
/* 0x964 */ u32 mStateFlg0;
/* 0x968 */ u8 field_0x968[0x990 - 0x968];
/* 0x968 */ u32 field_0x968;
/* 0x96C */ u32 field_0x96c;
/* 0x970 */ u32 field_0x970;
/* 0x974 */ u32 field_0x974;
/* 0x978 */ u32 field_0x978;
/* 0x97C */ u32 field_0x97c;
/* 0x980 */ f32 field_0x980;
/* 0x984 */ f32 field_0x984;
/* 0x988 */ f32 field_0x988;
/* 0x98C */ f32 field_0x98c;
/* 0x990 */ cXyz field_0x990;
/* 0x99C */ cXyz field_0x99c;
/* 0x9A8 */ f32 field_0x9a8;

View File

@ -4,12 +4,20 @@
//
#include "rel/d/a/d_a_boomerang/d_a_boomerang.h"
#include "rel/d/a/d_a_mirror/d_a_mirror.h"
#include "JSystem/J2DGraph/J2DAnimation.h"
#include "JSystem/J2DGraph/J2DAnmLoader.h"
#include "JSystem/JKernel/JKRArchive.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JParticle/JPAParticle.h"
#include "SSystem/SComponent/c_math.h"
#include "d/a/d_a_alink.h"
#include "d/com/d_com_inf_game.h"
#include "d/d_procname.h"
#include "d/pane/d_pane_class.h"
#include "dol2asm.h"
#include "f_op/f_op_actor_mng.h"
#include "m_Do/m_Do_lib.h"
#include "rel/d/a/d_a_mirror/d_a_mirror.h"
//
// Types:
@ -249,33 +257,75 @@ extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
// Declarations:
//
/* ############################################################################################## */
/* 804A2990-804A2990 000140 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_804A2990 = "zelda_v_cursor_new_yellow.blo";
SECTION_DEAD static char const* const stringBase_804A29AE = "zelda_v_cursor_new_yellow.bpk";
SECTION_DEAD static char const* const stringBase_804A29CC = "zelda_v_cursor_new_yellow.bck";
SECTION_DEAD static char const* const stringBase_804A29EA = "zelda_v_cursor_new_yellow_02.brk";
SECTION_DEAD static char const* const stringBase_804A2A0B = "zelda_v_cursor_new_yellow.brk";
SECTION_DEAD static char const* const stringBase_804A2A29 = "zelda_v_cursor_new_red.blo";
SECTION_DEAD static char const* const stringBase_804A2A44 = "zelda_v_cursor_new_red_02.brk";
SECTION_DEAD static char const* const stringBase_804A2A62 = "zelda_v_cursor_new_red.brk";
SECTION_DEAD static char const* const stringBase_804A2A7D = "zelda_v_cursor_new_orange.blo";
SECTION_DEAD static char const* const stringBase_804A2A9B = "zelda_v_cursor_new_orange_02.brk";
SECTION_DEAD static char const* const stringBase_804A2ABC = "zelda_v_cursor_new_orange.brk";
#pragma pop
/* 8049E0B8-8049E36C 000078 02B4+00 1/1 0/0 0/0 .text createHeap__19daBoomerang_sight_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daBoomerang_sight_c::createHeap() {
nofralloc
#include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/createHeap__19daBoomerang_sight_cFv.s"
int daBoomerang_sight_c::createHeap() {
void* resource;
char* arcName = daAlink_c::getAlinkArcName();
JKRArchive* loader = dComIfG_getObjectResInfo(arcName)->getArchive();
field_0x4 = new J2DScreen();
if (field_0x4 == NULL) {
return 0;
}
field_0x4->setPriority("zelda_v_cursor_new_yellow.blo", 0x100000, loader);
dPaneClass_showNullPane(field_0x4);
resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_yellow.bpk", loader);
field_0x58 = (J2DAnmColor*)J2DAnmLoaderDataBase::load(resource);
if (field_0x58 == NULL) {
return 0;
}
resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_yellow.bck", loader);
field_0x5c = (J2DAnmTransform*)J2DAnmLoaderDataBase::load(resource);
if (field_0x5c == NULL) {
return 0;
}
resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_yellow_02.brk", loader);
field_0x18 = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(resource);
if (field_0x18 == NULL) {
return 0;
}
resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_yellow.brk", loader);
field_0x1c = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(resource);
if (field_0x1c == NULL) {
return 0;
}
field_0x20 = new J2DScreen();
if (field_0x20 == NULL) {
return 0;
}
field_0x20->setPriority("zelda_v_cursor_new_red.blo", 0x100000, loader);
dPaneClass_showNullPane(field_0x20);
resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_red_02.brk", loader);
field_0x34 = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(resource);
if (field_0x34 == NULL) {
return 0;
}
resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_red.brk", loader);
field_0x38 = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(resource);
if (field_0x38 == NULL) {
return 0;
}
field_0x3c = new J2DScreen();
if (field_0x3c == NULL) {
return 0;
}
field_0x3c->setPriority("zelda_v_cursor_new_orange.blo", 0x100000, loader);
dPaneClass_showNullPane(field_0x3c);
resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_orange_02.brk", loader);
field_0x50 = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(resource);
if (field_0x50 == NULL) {
return 0;
}
resource = JKRFileLoader::getGlbResource("zelda_v_cursor_new_orange.brk", loader);
field_0x54 = (J2DAnmTevRegKey*)J2DAnmLoaderDataBase::load(resource);
if (field_0x54 == NULL) {
return 0;
}
return 1;
}
#pragma pop
/* ############################################################################################## */
/* 804A2850-804A285C 000000 000C+00 7/7 0/0 0/0 .rodata @4078 */
@ -365,14 +415,9 @@ COMPILER_STRIP_GATE(0x804A288C, &daBoomerang_HIO_c0::m_lockWindScale);
#pragma pop
/* 804A2890-804A28A4 000040 0014+00 0/1 0/0 0/0 .rodata l_lockSeFlg */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const l_lockSeFlg[20] = {
0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00,
0x00, 0x6A, 0x00, 0x00, 0x00, 0x6B, 0x00, 0x00, 0x00, 0x6C,
static const u32 l_lockSeFlg[5] = {
104, 105, 106, 107, 108,
};
COMPILER_STRIP_GATE(0x804A2890, &l_lockSeFlg);
#pragma pop
/* 804A28A4-804A28A8 000054 0004+00 2/6 0/0 0/0 .rodata @4432 */
SECTION_RODATA static u8 const lit_4432[4] = {
@ -385,6 +430,100 @@ COMPILER_STRIP_GATE(0x804A28A4, &lit_4432);
/* 8049E36C-8049EB64 00032C 07F8+00 1/1 0/0 0/0 .text initialize__19daBoomerang_sight_cFv
*/
#ifdef NONMATCHING
// Matches with literals
void daBoomerang_sight_c::initialize() {
field_0x8 = field_0x4->search('n_all');
field_0xc = field_0x4->search('cursor0');
field_0x10 = field_0x4->search('cursor1');
field_0x14 = field_0x4->search('cursor2');
field_0x5c->searchUpdateMaterialID(field_0x4);
field_0x8->setAnimation(field_0x5c);
field_0xc->setAnimation(field_0x5c);
field_0x10->setAnimation(field_0x5c);
field_0x14->setAnimation(field_0x5c);
field_0x5c->setFrame(0.0f);
field_0x58->searchUpdateMaterialID(field_0x4);
field_0xc->setAnimation(field_0x58);
field_0x10->setAnimation(field_0x58);
field_0x14->setAnimation(field_0x58);
field_0x4->search('flash')->setAnimation(field_0x58);
field_0x58->setFrame(0.0f);
field_0x18->searchUpdateMaterialID(field_0x4);
field_0x1c->searchUpdateMaterialID(field_0x4);
field_0xc->setAnimation(field_0x18);
field_0x10->setAnimation(field_0x18);
field_0x14->setAnimation(field_0x18);
field_0xc->setAnimation(field_0x1c);
field_0x10->setAnimation(field_0x1c);
field_0x14->setAnimation(field_0x1c);
field_0x18->setFrame(0.0f);
field_0x1c->setFrame(0.0f);
field_0x4->animation();
field_0x4->setUserInfo('n_43');
field_0x8->setUserInfo(' ');
field_0x24 = field_0x20->search('n_all');
field_0x28 = field_0x20->search('cursor0');
field_0x2c = field_0x20->search('cursor1');
field_0x30 = field_0x20->search('cursor2');
field_0x24->setAnimation(field_0x5c);
field_0x28->setAnimation(field_0x5c);
field_0x2c->setAnimation(field_0x5c);
field_0x30->setAnimation(field_0x5c);
field_0x28->setAnimation(field_0x58);
field_0x2c->setAnimation(field_0x58);
field_0x30->setAnimation(field_0x58);
field_0x20->search('flash')->setAnimation(field_0x58);
field_0x34->searchUpdateMaterialID(field_0x20);
field_0x38->searchUpdateMaterialID(field_0x20);
field_0x28->setAnimation(field_0x34);
field_0x2c->setAnimation(field_0x34);
field_0x30->setAnimation(field_0x34);
field_0x28->setAnimation(field_0x38);
field_0x2c->setAnimation(field_0x38);
field_0x30->setAnimation(field_0x38);
field_0x34->setFrame(0.0f);
field_0x38->setFrame(0.0f);
field_0x20->animation();
field_0x20->setUserInfo('n_43');
field_0x24->setUserInfo(' ');
field_0x40 = field_0x3c->search('n_all');
field_0x44 = field_0x3c->search('cursor0');
field_0x48 = field_0x3c->search('cursor1');
field_0x4c = field_0x3c->search('cursor2');
field_0x40->setAnimation(field_0x5c);
field_0x44->setAnimation(field_0x5c);
field_0x48->setAnimation(field_0x5c);
field_0x4c->setAnimation(field_0x5c);
field_0x44->setAnimation(field_0x58);
field_0x48->setAnimation(field_0x58);
field_0x4c->setAnimation(field_0x58);
field_0x3c->search('flash')->setAnimation(field_0x58);
field_0x50->searchUpdateMaterialID(field_0x3c);
field_0x54->searchUpdateMaterialID(field_0x3c);
field_0x44->setAnimation(field_0x50);
field_0x48->setAnimation(field_0x50);
field_0x4c->setAnimation(field_0x50);
field_0x44->setAnimation(field_0x54);
field_0x48->setAnimation(field_0x54);
field_0x4c->setAnimation(field_0x54);
field_0x50->setFrame(0.0f);
field_0x54->setFrame(0.0f);
field_0x3c->animation();
field_0x3c->setUserInfo('n_43');
field_0x40->setUserInfo(' ');
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@ -393,6 +532,7 @@ asm void daBoomerang_sight_c::initialize() {
#include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/initialize__19daBoomerang_sight_cFv.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 804A28A8-804A28AC 000058 0004+00 0/1 0/0 0/0 .rodata @4481 */
@ -442,14 +582,58 @@ COMPILER_STRIP_GATE(0x804A28C0, &lit_4487);
/* 8049EB64-8049EDA8 000B24 0244+00 1/1 0/0 0/0 .text playAnime__19daBoomerang_sight_cFii
*/
#ifdef NONMATCHING
// Matches with literals
int daBoomerang_sight_c::playAnime(int param_0, int param_1) {
int i;
f32* pfVar3 = field_0x98;
f32* pfVar6 = field_0xb0;
u8* alphaPtr = mAlpha;
for (i = 0; i < 5; i++, pfVar3++, pfVar6++, alphaPtr++) {
*pfVar3 += 1.1f;
if (*pfVar3 >= 50.0f) {
*pfVar3 += 29.0f;
}
*pfVar6 += 1.1f;
if (*pfVar6 >= (f32)field_0x18->getFrameMax()) {
*pfVar6 -= (f32)field_0x18->getFrameMax();
}
if (param_0 <= i && param_1 > i) {
cLib_chaseUC(alphaPtr, 0xff, 0x1e);
} else {
cLib_chaseUC(alphaPtr, 0, 0x1e);
if (*alphaPtr == 0 && i == 0) {
mRedSight = false;
}
}
}
if (*pfVar3 < 21.0f) {
*pfVar3 = 21.0f;
}
*pfVar3 += 0.9f;
if (*pfVar3 >= 50.0f) {
*pfVar3 += 29.0f;
}
*pfVar6 += 0.9f;
if (*pfVar6 >= field_0x18->getFrameMax()) {
*pfVar6 -= (f32)field_0x18->getFrameMax();
}
if (mReserve != 0) {
return cLib_chaseUC(alphaPtr, 0x80, 0x1e);
}
return cLib_chaseUC(alphaPtr, 0, 0x1e);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daBoomerang_sight_c::playAnime(int param_0, int param_1) {
asm int daBoomerang_sight_c::playAnime(int param_0, int param_1) {
nofralloc
#include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/playAnime__19daBoomerang_sight_cFii.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 804A28C8-804A28CC 000078 0004+00 1/2 0/0 0/0 .rodata @4495 */
@ -458,6 +642,17 @@ COMPILER_STRIP_GATE(0x804A28C8, &lit_4495);
/* 8049EDA8-8049EDE8 000D68 0040+00 2/2 0/0 0/0 .text initFrame__19daBoomerang_sight_cFi
*/
#ifdef NONMATCHING
// Matches with literals
void daBoomerang_sight_c::initFrame(int i_idx) {
mAlpha[i_idx] = 0;
field_0x98[i_idx] = 4.0f;
field_0xb0[i_idx] = 0.0f;
if (i_idx == 0) {
mRedSight = true;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@ -466,6 +661,7 @@ asm void daBoomerang_sight_c::initFrame(int param_0) {
#include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/initFrame__19daBoomerang_sight_cFi.s"
}
#pragma pop
#endif
/* 8049EDE8-8049EE8C 000DA8 00A4+00 1/1 0/0 0/0 .text copyNumData__19daBoomerang_sight_cFi */
void daBoomerang_sight_c::copyNumData(int i_idx) {
@ -587,6 +783,70 @@ COMPILER_STRIP_GATE(0x804A28F8, &lit_4654);
#pragma pop
/* 8049EF60-8049F280 000F20 0320+00 1/0 0/0 0/0 .text draw__19daBoomerang_sight_cFv */
#ifdef NONMATCHING
// Matches with literals
void daBoomerang_sight_c::draw() {
J2DGrafContext* ctx = dComIfGp_getCurrentGrafPort();
u8* puVar = mAlpha;
J2DPane* pJVar5;
J2DPane* pJVar9;
J2DPane* pJVar8;
J2DScreen* screen;
J2DPane* pJVar4;
f32 f30;
f32 f31;
for (int i = 0; i < 6; i++, puVar++) {
if (*puVar != 0) {
field_0x5c->setFrame(field_0x98[i]);
field_0x58->setFrame(field_0x98[i] > 21.0f ? 21.0f : field_0x98[i]);
if (i == 5) {
field_0x18->setFrame(field_0xb0[i]);
pJVar5 = field_0xc;
pJVar9 = field_0x10;
pJVar8 = field_0x14;
screen = field_0x4;
pJVar4 = field_0x8;
f31 = 80.0f;
} else if (i == 0 && mRedSight != false) {
field_0x34->setFrame(field_0xb0[i]);
pJVar5 = field_0x28;
pJVar9 = field_0x2c;
pJVar8 = field_0x30;
screen = field_0x20;
pJVar4 = field_0x24;
f31 = 35.0f;
} else {
field_0x50->setFrame(field_0xb0[i]);
pJVar5 = field_0x44;
pJVar9 = field_0x48;
pJVar8 = field_0x4c;
screen = field_0x3c;
pJVar4 = field_0x40;
f31 = 35.0f;
}
screen->animation();
pJVar4->scale(0.6f, 0.6f);
pJVar4->translate(field_0x68[i], field_0x80[i]);
field_0x98[i] = field_0x98[i];
if (!(field_0x98[i] < 15.0f)) {
if (field_0x98[i] < 21.0f) {
f30 = f31 * (field_0x98[i] - 15.0f) * 0.1666667f;
} else if (i == 5) {
f30 = f31 * (*puVar * 0.00390625f + 0.5f);
} else {
f30 = f31 * (*puVar * 0.001960784f + 0.5f);
}
pJVar5->translate(0.0f, -f30);
pJVar9->translate(f30 * cM_fcos(2.617994f), f30 * cM_fsin(2.617994f));
pJVar8->translate(f30 * cM_fcos(0.5235988f), f30 * cM_fsin(0.5235988f));
}
screen->draw(0.0f, 0.0f, ctx);
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@ -595,6 +855,7 @@ asm void daBoomerang_sight_c::draw() {
#include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/draw__19daBoomerang_sight_cFv.s"
}
#pragma pop
#endif
/* 8049F280-8049F360 001240 00E0+00 1/1 0/0 0/0 .text windModelCallBack__13daBoomerang_cFv */
void daBoomerang_c::windModelCallBack() {
@ -628,14 +889,56 @@ static int daBoomeang_windModelCallBack(J3DJoint* param_0, int param_1) {
}
/* 8049F39C-8049F5D4 00135C 0238+00 1/1 0/0 0/0 .text draw__13daBoomerang_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daBoomerang_c::draw() {
nofralloc
#include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/draw__13daBoomerang_cFv.s"
int daBoomerang_c::draw() {
if (checkStateFlg0(FLG0_UNK) == 0) {
for (int i = 0; i < 5; i++) {
if (mSight.getAlpha(i) != 0) {
if (mLockActors[i] != NULL) {
mLockActors[i] = fopAcM_SearchByID(field_0x6ac[i]);
if (mLockActors[i] == NULL) {
pushLockList(i);
i--;
} else {
mSight.setSight(&mLockActors[i]->mEyePos, i);
}
} else {
if (field_0x718[i] != 0) {
mSight.setSight(&mLockActorsPositions[i], i);
} else {
mSight.setSight(NULL, i);
}
}
}
}
if (mSight.getAlpha(5) != 0) {
if (field_0x6d8 != NULL) {
field_0x6d8 = fopAcM_SearchByID(field_0x6d4);
}
if (field_0x6d8 != 0) {
mSight.setSight(&field_0x6d8->mEyePos, 5);
} else {
mSight.setSight(NULL, 5);
}
}
if (i_dComIfGp_event_runCheck() == 0) {
dComIfGd_set2DXlu((dDlst_base_c*)&mSight);
}
}
g_env_light.settingTevStruct(0, &current.pos, &mTevStr);
g_env_light.setLightTevColorType_MAJI(field_0x568, &mTevStr);
mDoExt_modelUpdateDL(field_0x568);
daMirror_c::entry(field_0x568);
if (fopAcM_GetParam(this) != 0) {
g_env_light.setLightTevColorType_MAJI(field_0x56c, &mTevStr);
mDoExt_modelEntryDL(field_0x56c);
daMirror_c::entry(field_0x56c);
} else if (i_dComIfGp_checkPlayerStatus0(0, 0x80000) != 0) {
g_env_light.setLightTevColorType_MAJI(field_0x590, &mTevStr);
mDoExt_modelUpdateDL(field_0x590);
}
return 1;
}
#pragma pop
/* 8049F5D4-8049F5F4 001594 0020+00 1/0 0/0 0/0 .text daBoomerang_Draw__FP13daBoomerang_c
*/
@ -689,14 +992,29 @@ static void daBoomerang_moveLineCallback(fopAc_ac_c* i_actorP1, dCcD_GObjInf* pa
}
/* 8049F710-8049F818 0016D0 0108+00 3/3 0/0 0/0 .text pushLockList__13daBoomerang_cFi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daBoomerang_c::pushLockList(int param_0) {
nofralloc
#include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/pushLockList__13daBoomerang_cFi.s"
void daBoomerang_c::pushLockList(int param_0) {
if (param_0 == 0) {
mSight.offRedSight();
}
if (fopAcM_GetParam(this) == 1 && param_0 < field_0x951) {
field_0x951--;
}
int i;
for (i = param_0; i < mLockCnt - 1; i++) {
field_0x6ac[i] = field_0x6ac[i + 1];
mLockActors[i] = mLockActors[i + 1];
mLockActorsPositions[i] = mLockActorsPositions[i + 1];
field_0x718[i] = field_0x718[i + 1];
mSight.copyNumData(i);
}
field_0x6ac[i] = -1;
mLockActors[i] = NULL;
field_0x718[i] = 0;
if (mLockCnt != 0) {
mLockCnt--;
}
}
#pragma pop
/* 8049F818-8049F874 0017D8 005C+00 1/0 0/0 0/0 .text
* cancelLockActorBase__13daBoomerang_cFP10fopAc_ac_c */
@ -720,14 +1038,31 @@ void daBoomerang_c::setAimActorBase(fopAc_ac_c* i_actorP) {
/* 8049F8B0-8049F9A4 001870 00F4+00 2/2 0/0 0/0 .text setLockActor__13daBoomerang_cFP10fopAc_ac_ci
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daBoomerang_c::setLockActor(fopAc_ac_c* param_0, int param_1) {
nofralloc
#include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/setLockActor__13daBoomerang_cFP10fopAc_ac_ci.s"
int daBoomerang_c::setLockActor(fopAc_ac_c* param_0, int param_1) {
if (mLockCnt >= 5) {
return 0;
}
u32 Id = fopAcM_GetID(param_0);
for (int i = 0; i < mLockCnt; i++) {
if (field_0x6ac[i] == Id) {
return 0;
}
}
if (param_1 != 0) {
f32 squareDistance = param_0->mEyePos.abs2(current.pos);
if (squareDistance > field_0x984) {
return 0;
}
field_0x984 = squareDistance;
field_0x6a8 = Id;
} else {
field_0x6ac[mLockCnt] = Id;
mLockActors[mLockCnt] = param_0;
mSight.initFrame(mLockCnt);
mLockCnt++;
}
return 1;
}
#pragma pop
/* 8049F9A4-8049F9F0 001964 004C+00 3/3 0/0 0/0 .text resetLockActor__13daBoomerang_cFv
*/
@ -742,52 +1077,35 @@ void daBoomerang_c::resetLockActor() {
field_0x951 = 0;
}
/* ############################################################################################## */
/* 804A2900-804A2904 0000B0 0004+00 1/1 0/0 0/0 .rodata @4886 */
SECTION_RODATA static f32 const lit_4886 = -1000000000.0f;
COMPILER_STRIP_GATE(0x804A2900, &lit_4886);
/* 8049F9F0-8049FAA4 0019B0 00B4+00 2/2 0/0 0/0 .text setRoomInfo__13daBoomerang_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daBoomerang_c::setRoomInfo() {
nofralloc
#include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/setRoomInfo__13daBoomerang_cFv.s"
void daBoomerang_c::setRoomInfo() {
field_0xd6c.SetPos(&current.pos);
field_0x980 = dComIfG_Bgsp().GroundCross(&field_0xd6c);
int roomNo;
if (field_0x980 != -1000000000.0f) {
roomNo = dComIfG_Bgsp().GetRoomId(field_0xd6c);
mTevStr.mEnvrIdxOverride = dComIfG_Bgsp().GetPolyColor(field_0xd6c);
} else {
roomNo = dComIfGp_roomControl_getStayNo();
}
mTevStr.mRoomNo = roomNo;
field_0x953 = dComIfGp_getReverb(roomNo);
field_0x9d0.SetRoomId(roomNo);
fopAcM_SetRoomNo(this, roomNo);
}
#pragma pop
/* ############################################################################################## */
/* 804A2904-804A2908 0000B4 0004+00 0/1 0/0 0/0 .rodata @4910 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4910 = 32.0f;
COMPILER_STRIP_GATE(0x804A2904, &lit_4910);
#pragma pop
/* 804A2908-804A290C 0000B8 0004+00 0/1 0/0 0/0 .rodata @4911 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4911 = -5.0f;
COMPILER_STRIP_GATE(0x804A2908, &lit_4911);
#pragma pop
/* 804A290C-804A2910 0000BC 0004+00 0/1 0/0 0/0 .rodata @4912 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4912 = -6.0f;
COMPILER_STRIP_GATE(0x804A290C, &lit_4912);
#pragma pop
/* 8049FAA4-8049FBAC 001A64 0108+00 2/2 0/0 0/0 .text setKeepMatrix__13daBoomerang_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daBoomerang_c::setKeepMatrix() {
nofralloc
#include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/setKeepMatrix__13daBoomerang_cFv.s"
void daBoomerang_c::setKeepMatrix() {
daAlink_c* link = daAlink_getAlinkActorClass();
PSMTXCopy(link->getLeftItemMatrix(), mDoMtx_stack_c::now);
mDoMtx_stack_c::transM(32.0f, -5.0f, -6.0f);
mDoMtx_stack_c::XYZrotM(0xfd28, 0x1bbb, 0xf99a);
PSMTXCopy(mDoMtx_stack_c::now, field_0x568->mBaseTransformMtx);
PSMTXCopy(link->getLeftItemMatrix(), field_0x56c->mBaseTransformMtx);
mDoMtx_stack_c::multVecZero(&current.pos);
daAlink_c::simpleAnmPlay(m_waitEffBtk);
PSMTXCopy(link->getLeftItemMatrix(), field_0x590->mBaseTransformMtx);
}
#pragma pop
/* ############################################################################################## */
/* 804A2910-804A2914 0000C0 0004+00 5/8 0/0 0/0 .rodata @4945 */
@ -795,6 +1113,27 @@ SECTION_RODATA static f32 const lit_4945 = 1.0f;
COMPILER_STRIP_GATE(0x804A2910, &lit_4945);
/* 8049FBAC-8049FCD0 001B6C 0124+00 1/1 0/0 0/0 .text setMoveMatrix__13daBoomerang_cFv */
#ifdef NONMATCHING
// Matches with literals
void daBoomerang_c::setMoveMatrix() {
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(shape_angle);
PSMTXCopy(mDoMtx_stack_c::now, field_0x56c->mBaseTransformMtx);
daAlink_c::simpleAnmPlay(m_windBtk);
field_0x98c += 1.0f;
s32 maxFrame = mBck.getBckAnm()->getFrameMax();
if (field_0x98c >= maxFrame) {
field_0x98c -= maxFrame;
}
mBck.entry(field_0x56c->getModelData(), field_0x98c);
field_0x56c->calc();
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(shape_angle);
mDoMtx_stack_c::YrotM(field_0x95a);
mDoMtx_stack_c::XrotM(0x7fff);
PSMTXCopy(mDoMtx_stack_c::now, field_0x568->mBaseTransformMtx);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@ -803,6 +1142,7 @@ asm void daBoomerang_c::setMoveMatrix() {
#include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/setMoveMatrix__13daBoomerang_cFv.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 804A2914-804A2918 0000C4 0004+00 1/2 0/0 0/0 .rodata @4961 */
@ -810,6 +1150,16 @@ SECTION_RODATA static f32 const lit_4961 = -1.0f;
COMPILER_STRIP_GATE(0x804A2914, &lit_4961);
/* 8049FCD0-8049FD6C 001C90 009C+00 1/1 0/0 0/0 .text setRotAngle__13daBoomerang_cFv */
#ifdef NONMATCHING
// Matches with literals
void daBoomerang_c::setRotAngle() {
s16 sVar = field_0x95a;
field_0x95a -= 0x1f00;
if (sVar >= 0 && field_0x95a < 0) {
fopAcM_seStart(this, JA_SE_LK_BOOM_FLY, 0);
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@ -818,46 +1168,101 @@ asm void daBoomerang_c::setRotAngle() {
#include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/setRotAngle__13daBoomerang_cFv.s"
}
#pragma pop
#endif
/* 8049FD6C-8049FE6C 001D2C 0100+00 2/2 0/0 0/0 .text setAimPos__13daBoomerang_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daBoomerang_c::setAimPos() {
nofralloc
#include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/setAimPos__13daBoomerang_cFv.s"
void daBoomerang_c::setAimPos() {
if (checkStateFlg0(FLG0_1) != 0) {
if (fopAcM_GetParam(this) != 1)
return;
field_0x990 = daAlink_getAlinkActorClass()->getBoomerangCatchPos();
return;
}
if (field_0x957 != 0) {
field_0x990 = field_0x9ac;
return;
}
for (int i = field_0x951; i < mLockCnt; i++, field_0x951++) {
if (mLockActors[i] != NULL) {
field_0x990 = mLockActors[i]->mEyePos;
return;
}
if (field_0x718[i] != 0) {
field_0x990 = mLockActorsPositions[i];
return;
}
}
}
#pragma pop
/* ############################################################################################## */
/* 804A2918-804A291C 0000C8 0004+00 1/1 0/0 0/0 .rodata @5044 */
SECTION_RODATA static f32 const lit_5044 = 2500.0f;
COMPILER_STRIP_GATE(0x804A2918, &lit_5044);
/* 804A291C-804A2920 0000CC 0004+00 1/2 0/0 0/0 .rodata @5045 */
SECTION_RODATA static f32 const lit_5045 = 30.0f;
COMPILER_STRIP_GATE(0x804A291C, &lit_5045);
/* 8049FE6C-804A006C 001E2C 0200+00 2/2 0/0 0/0 .text checkBgHit__13daBoomerang_cFP4cXyzP4cXyz */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daBoomerang_c::checkBgHit(cXyz* param_0, cXyz* param_1) {
nofralloc
#include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/checkBgHit__13daBoomerang_cFP4cXyzP4cXyz.s"
void daBoomerang_c::checkBgHit(cXyz* i_start, cXyz* i_end) {
field_0xcfc.Set(i_start, i_end, this);
if (dComIfG_Bgsp().LineCross(&field_0xcfc) != 0) {
current.pos = field_0xcfc.i_GetCross();
onStateFlg0(FLG0_1);
field_0x957 = 0;
current.angle.y -= -0x8000;
shape_angle.y = current.angle.y;
resetLockActor();
return;
}
if (field_0x962 != 0) {
return;
}
field_0xc8c.Set(i_start, i_end, this);
if (dComIfG_Bgsp().LineCross(&field_0xc8c) == 0)
return;
if (checkStateFlg0(FLG0_0x200) != 0) {
return;
}
if (field_0x718[field_0x951] != 0) {
if (mLockActorsPositions[field_0x951].abs2(field_0xc8c.i_GetCross()) < 2500.0f) {
if (field_0x951 < mLockCnt - 1) {
field_0x718[field_0x951] = 0;
field_0x951++;
return;
}
}
}
if (field_0x957 == 0) {
if (checkStateFlg0(FLG0_10) == 0 && mLockCnt > field_0x951) {
return;
}
current.pos = field_0xc8c.i_GetCross();
onStateFlg0(FLG0_1);
field_0x957 = 0;
current.angle.y -= -0x8000;
if (dBgS_CheckBRoofPoly(field_0xc8c) != 0) {
current.angle.x *= -1;
current.pos.y -= 30.0f;
}
shape_angle.y = current.angle.y;
resetLockActor();
}
}
#pragma pop
/* 804A006C-804A012C 00202C 00C0+00 1/1 0/0 0/0 .text setEffectTraceMatrix__13daBoomerang_cFPUlUs
*/
#ifdef NONMATCHING
// Matches with literals
JPABaseEmitter* daBoomerang_c::setEffectTraceMatrix(u32* param_0, u16 param_1) {
*param_0 = dComIfGp_particle_set(*param_0, param_1, &current.pos, &mTevStr);
JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(*param_0);
if (emitter != NULL) {
emitter->setGlobalRTMatrix(field_0x568->getBaseTRMtx());
}
return emitter;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daBoomerang_c::setEffectTraceMatrix(u32* param_0, u16 param_1) {
asm JPABaseEmitter* daBoomerang_c::setEffectTraceMatrix(u32* param_0, u16 param_1) {
nofralloc
#include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/setEffectTraceMatrix__13daBoomerang_cFPUlUs.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 804A2920-804A2924 0000D0 0004+00 0/1 0/0 0/0 .rodata @5385 */
@ -937,7 +1342,7 @@ COMPILER_STRIP_GATE(0x804A2950, &lit_5394);
#pragma pop
/* 804A2ADC-804A2AE8 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
static u8 cNullVec__6Z2Calc[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
@ -971,24 +1376,38 @@ SECTION_DATA static void* lit_5579[3] = {
/* 804A2B14-804A2B60 000038 004C+00 0/1 0/0 0/0 .data l_atCpsSrc */
#pragma push
#pragma force_active on
SECTION_DATA static u8 l_atCpsSrc[76] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x04, 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, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x70, 0x00, 0x00,
static dCcD_SrcCps l_atCpsSrc = {
{
{0, {{AT_TYPE_BOOMERANG, 0, 0x3B}, {0, 0}, 0}},
{dCcD_SE_WOOD, 4, 0, 0, {0}},
{dCcD_SE_NONE, 0, 0, 0, {0}},
{0},
},
{
{
{0.0f, 0.0f, 0.0f},
{0.0f, 0.0f, 0.0f},
15.0f,
},
}
};
#pragma pop
/* 804A2B60-804A2BA4 000084 0044+00 0/1 0/0 0/0 .data l_windAtCylSrc */
#pragma push
#pragma force_active on
SECTION_DATA static u8 l_windAtCylSrc[68] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0D, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, 0x44, 0x16, 0x00, 0x00,
static dCcD_SrcCyl l_windAtCylSrc = {
{
{0, {{AT_TYPE_BOOMERANG, 0, 0x1B}, {0, 0}, 0}},
{dCcD_SE_13, 0, 0, 3, {2}},
{dCcD_SE_NONE, 0, 0, 0, {0}},
{0},
},
{
{0.0f, 0.0f, 0.0f},
150.0f,
600.0f,
}
};
#pragma pop
@ -1416,6 +1835,38 @@ static int daBoomerang_Delete(daBoomerang_c* i_this) {
}
/* 804A1EE4-804A2064 003EA4 0180+00 1/1 0/0 0/0 .text createHeap__13daBoomerang_cFv */
#ifdef NONMATCHING
// Matches with literals
int daBoomerang_c::createHeap() {
if (mSight.createHeap() == 0) {
return 0;
}
mSight.initialize();
J3DModelData* modelData =
(J3DModelData*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x1f);
field_0x568 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
if (field_0x568 == NULL) {
return 0;
}
modelData = (J3DModelData*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x34);
field_0x56c = mDoExt_J3DModel__create(modelData, 0, 0x11000284);
if (field_0x56c == NULL) {
return 0;
}
J3DAnmTransform* transform =
(J3DAnmTransform*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x13);
if (mBck.init(transform, 0, 2, 1.0f, 0, -1, false) == 0) {
return 0;
}
modelData = (J3DModelData*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x19);
field_0x590 = mDoExt_J3DModel__create(modelData, 0, 0x11000284);
if (field_0x590 == NULL) {
return 0;
}
field_0x720.init(&current.pos, 2);
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@ -1424,11 +1875,11 @@ asm int daBoomerang_c::createHeap() {
#include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/createHeap__13daBoomerang_cFv.s"
}
#pragma pop
#endif
/* 804A2064-804A2084 004024 0020+00 1/1 0/0 0/0 .text daBoomerang_createHeap__FP10fopAc_ac_c */
static int daBoomerang_createHeap(fopAc_ac_c* i_this) {
daBoomerang_c* boomerang = (daBoomerang_c*)i_this;
return boomerang->createHeap();
return static_cast<daBoomerang_c*>(i_this)->createHeap();
}
/* ############################################################################################## */
@ -1513,14 +1964,9 @@ extern "C" asm void __dt__12dBgS_ObjAcchFv() {
/* 804A26F8-804A2718 0046B8 0020+00 1/0 0/0 0/0 .text daBoomerang_Create__FP10fopAc_ac_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm int daBoomerang_Create(fopAc_ac_c* param_0) {
nofralloc
#include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/daBoomerang_Create__FP10fopAc_ac_c.s"
static int daBoomerang_Create(fopAc_ac_c* i_this) {
return static_cast<daBoomerang_c*>(i_this)->create();
}
#pragma pop
/* 804A2718-804A271C 0046D8 0004+00 1/0 0/0 0/0 .text draw__12dDlst_base_cFv */
void draw__12dDlst_base_cFv() {