mirror of https://github.com/zeldaret/tp.git
d_envse mostly OK. more work on kankyo_rain (#1969)
* d_envse OK, work on kankyo_rain * remove asm
This commit is contained in:
parent
95d103b237
commit
e2d51bf956
|
|
@ -1,11 +0,0 @@
|
|||
lbl_801835D0:
|
||||
/* 801835D0 38 80 00 00 */ li r4, 0
|
||||
/* 801835D4 98 83 00 FC */ stb r4, 0xfc(r3)
|
||||
/* 801835D8 98 83 00 FD */ stb r4, 0xfd(r3)
|
||||
/* 801835DC 98 83 00 FE */ stb r4, 0xfe(r3)
|
||||
/* 801835E0 98 83 00 FF */ stb r4, 0xff(r3)
|
||||
/* 801835E4 38 00 00 FF */ li r0, 0xff
|
||||
/* 801835E8 90 03 01 04 */ stw r0, 0x104(r3)
|
||||
/* 801835EC 90 83 01 08 */ stw r4, 0x108(r3)
|
||||
/* 801835F0 38 60 00 04 */ li r3, 4
|
||||
/* 801835F4 4E 80 00 20 */ blr
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
lbl_801835A0:
|
||||
/* 801835A0 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 801835A4 7C 08 02 A6 */ mflr r0
|
||||
/* 801835A8 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 801835AC 4B FF FE D5 */ bl execute__8dEnvSe_cFv
|
||||
/* 801835B0 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 801835B4 7C 08 03 A6 */ mtlr r0
|
||||
/* 801835B8 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 801835BC 4E 80 00 20 */ blr
|
||||
|
|
@ -1,76 +0,0 @@
|
|||
lbl_80183480:
|
||||
/* 80183480 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 80183484 7C 08 02 A6 */ mflr r0
|
||||
/* 80183488 90 01 00 24 */ stw r0, 0x24(r1)
|
||||
/* 8018348C 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 80183490 48 1D ED 49 */ bl _savegpr_28
|
||||
/* 80183494 7C 7C 1B 78 */ mr r28, r3
|
||||
/* 80183498 8B CD 87 E4 */ lbz r30, mStayNo__20dStage_roomControl_c+0x0(r13)
|
||||
/* 8018349C 7F DE 07 74 */ extsb r30, r30
|
||||
/* 801834A0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
|
||||
/* 801834A4 3B E3 61 C0 */ addi r31, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */
|
||||
/* 801834A8 38 7F 4E C4 */ addi r3, r31, 0x4ec4
|
||||
/* 801834AC 7F C4 F3 78 */ mr r4, r30
|
||||
/* 801834B0 4B EA 0E D5 */ bl getStatusRoomDt__20dStage_roomControl_cFi
|
||||
/* 801834B4 7C 7D 1B 79 */ or. r29, r3, r3
|
||||
/* 801834B8 40 82 00 0C */ bne lbl_801834C4
|
||||
/* 801834BC 38 60 00 01 */ li r3, 1
|
||||
/* 801834C0 48 00 00 C8 */ b lbl_80183588
|
||||
lbl_801834C4:
|
||||
/* 801834C4 80 1C 01 04 */ lwz r0, 0x104(r28)
|
||||
/* 801834C8 7C 00 F0 00 */ cmpw r0, r30
|
||||
/* 801834CC 41 82 00 18 */ beq lbl_801834E4
|
||||
/* 801834D0 38 00 00 00 */ li r0, 0
|
||||
/* 801834D4 98 1C 00 FC */ stb r0, 0xfc(r28)
|
||||
/* 801834D8 98 1C 00 FD */ stb r0, 0xfd(r28)
|
||||
/* 801834DC 90 1C 01 08 */ stw r0, 0x108(r28)
|
||||
/* 801834E0 93 DC 01 04 */ stw r30, 0x104(r28)
|
||||
lbl_801834E4:
|
||||
/* 801834E4 7F A3 EB 78 */ mr r3, r29
|
||||
/* 801834E8 81 9D 00 00 */ lwz r12, 0(r29)
|
||||
/* 801834EC 81 8C 00 F4 */ lwz r12, 0xf4(r12)
|
||||
/* 801834F0 7D 89 03 A6 */ mtctr r12
|
||||
/* 801834F4 4E 80 04 21 */ bctrl
|
||||
/* 801834F8 7C 64 1B 78 */ mr r4, r3
|
||||
/* 801834FC 7F 83 E3 78 */ mr r3, r28
|
||||
/* 80183500 38 BC 00 FC */ addi r5, r28, 0xfc
|
||||
/* 80183504 38 C0 00 01 */ li r6, 1
|
||||
/* 80183508 4B FF FA D1 */ bl execute_common__8dEnvSe_cFP18dStage_SoundInfo_cPScUc
|
||||
/* 8018350C 7F A3 EB 78 */ mr r3, r29
|
||||
/* 80183510 81 9D 00 00 */ lwz r12, 0(r29)
|
||||
/* 80183514 81 8C 00 EC */ lwz r12, 0xec(r12)
|
||||
/* 80183518 7D 89 03 A6 */ mtctr r12
|
||||
/* 8018351C 4E 80 04 21 */ bctrl
|
||||
/* 80183520 7C 64 1B 78 */ mr r4, r3
|
||||
/* 80183524 7F 83 E3 78 */ mr r3, r28
|
||||
/* 80183528 38 BC 00 FD */ addi r5, r28, 0xfd
|
||||
/* 8018352C 38 C0 00 01 */ li r6, 1
|
||||
/* 80183530 4B FF FA A9 */ bl execute_common__8dEnvSe_cFP18dStage_SoundInfo_cPScUc
|
||||
/* 80183534 3B BF 4E 20 */ addi r29, r31, 0x4e20
|
||||
/* 80183538 7F A3 EB 78 */ mr r3, r29
|
||||
/* 8018353C 81 9D 00 00 */ lwz r12, 0(r29)
|
||||
/* 80183540 81 8C 00 F4 */ lwz r12, 0xf4(r12)
|
||||
/* 80183544 7D 89 03 A6 */ mtctr r12
|
||||
/* 80183548 4E 80 04 21 */ bctrl
|
||||
/* 8018354C 7C 64 1B 78 */ mr r4, r3
|
||||
/* 80183550 7F 83 E3 78 */ mr r3, r28
|
||||
/* 80183554 38 BC 00 FE */ addi r5, r28, 0xfe
|
||||
/* 80183558 38 C0 00 00 */ li r6, 0
|
||||
/* 8018355C 4B FF FA 7D */ bl execute_common__8dEnvSe_cFP18dStage_SoundInfo_cPScUc
|
||||
/* 80183560 7F A3 EB 78 */ mr r3, r29
|
||||
/* 80183564 81 9D 00 00 */ lwz r12, 0(r29)
|
||||
/* 80183568 81 8C 00 EC */ lwz r12, 0xec(r12)
|
||||
/* 8018356C 7D 89 03 A6 */ mtctr r12
|
||||
/* 80183570 4E 80 04 21 */ bctrl
|
||||
/* 80183574 7C 64 1B 78 */ mr r4, r3
|
||||
/* 80183578 7F 83 E3 78 */ mr r3, r28
|
||||
/* 8018357C 38 BC 00 FF */ addi r5, r28, 0xff
|
||||
/* 80183580 38 C0 00 00 */ li r6, 0
|
||||
/* 80183584 4B FF FA 55 */ bl execute_common__8dEnvSe_cFP18dStage_SoundInfo_cPScUc
|
||||
lbl_80183588:
|
||||
/* 80183588 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 8018358C 48 1D EC 99 */ bl _restgpr_28
|
||||
/* 80183590 80 01 00 24 */ lwz r0, 0x24(r1)
|
||||
/* 80183594 7C 08 03 A6 */ mtlr r0
|
||||
/* 80183598 38 21 00 20 */ addi r1, r1, 0x20
|
||||
/* 8018359C 4E 80 00 20 */ blr
|
||||
|
|
@ -1,328 +0,0 @@
|
|||
lbl_80182FD8:
|
||||
/* 80182FD8 94 21 FF 90 */ stwu r1, -0x70(r1)
|
||||
/* 80182FDC 7C 08 02 A6 */ mflr r0
|
||||
/* 80182FE0 90 01 00 74 */ stw r0, 0x74(r1)
|
||||
/* 80182FE4 DB E1 00 60 */ stfd f31, 0x60(r1)
|
||||
/* 80182FE8 F3 E1 00 68 */ psq_st f31, 104(r1), 0, 0 /* qr0 */
|
||||
/* 80182FEC 39 61 00 60 */ addi r11, r1, 0x60
|
||||
/* 80182FF0 48 1D F1 D1 */ bl _savegpr_22
|
||||
/* 80182FF4 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 80182FF8 7C BD 2B 78 */ mr r29, r5
|
||||
/* 80182FFC 7C D6 33 78 */ mr r22, r6
|
||||
/* 80183000 8B 6D 87 E4 */ lbz r27, mStayNo__20dStage_roomControl_c+0x0(r13)
|
||||
/* 80183004 7F 7B 07 74 */ extsb r27, r27
|
||||
/* 80183008 7F 7C DB 78 */ mr r28, r27
|
||||
/* 8018300C 3B 20 00 00 */ li r25, 0
|
||||
/* 80183010 28 04 00 00 */ cmplwi r4, 0
|
||||
/* 80183014 40 82 00 0C */ bne lbl_80183020
|
||||
/* 80183018 38 60 00 01 */ li r3, 1
|
||||
/* 8018301C 48 00 04 44 */ b lbl_80183460
|
||||
lbl_80183020:
|
||||
/* 80183020 83 44 00 00 */ lwz r26, 0(r4)
|
||||
/* 80183024 83 E4 00 04 */ lwz r31, 4(r4)
|
||||
/* 80183028 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
|
||||
/* 8018302C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */
|
||||
/* 80183030 88 03 5D B0 */ lbz r0, 0x5db0(r3)
|
||||
/* 80183034 7C 00 07 74 */ extsb r0, r0
|
||||
/* 80183038 1C 00 00 38 */ mulli r0, r0, 0x38
|
||||
/* 8018303C 7C 63 02 14 */ add r3, r3, r0
|
||||
/* 80183040 80 83 5D 74 */ lwz r4, 0x5d74(r3)
|
||||
/* 80183044 38 61 00 08 */ addi r3, r1, 8
|
||||
/* 80183048 38 84 02 48 */ addi r4, r4, 0x248
|
||||
/* 8018304C 4B FF EE 19 */ bl Eye__9dCamera_cFv
|
||||
/* 80183050 C0 01 00 08 */ lfs f0, 8(r1)
|
||||
/* 80183054 D0 01 00 20 */ stfs f0, 0x20(r1)
|
||||
/* 80183058 C0 01 00 0C */ lfs f0, 0xc(r1)
|
||||
/* 8018305C D0 01 00 24 */ stfs f0, 0x24(r1)
|
||||
/* 80183060 C0 01 00 10 */ lfs f0, 0x10(r1)
|
||||
/* 80183064 D0 01 00 28 */ stfs f0, 0x28(r1)
|
||||
/* 80183068 56 C0 06 3F */ clrlwi. r0, r22, 0x18
|
||||
/* 8018306C 40 82 00 08 */ bne lbl_80183074
|
||||
/* 80183070 3B 80 FF FF */ li r28, -1
|
||||
lbl_80183074:
|
||||
/* 80183074 3C 60 80 39 */ lis r3, d_d_envse__stringBase0@ha /* 0x80394308@ha */
|
||||
/* 80183078 3B 03 43 08 */ addi r24, r3, d_d_envse__stringBase0@l /* 0x80394308@l */
|
||||
/* 8018307C 48 00 03 D8 */ b lbl_80183454
|
||||
lbl_80183080:
|
||||
/* 80183080 7F E3 FB 78 */ mr r3, r31
|
||||
/* 80183084 7F 04 C3 78 */ mr r4, r24
|
||||
/* 80183088 38 A0 00 06 */ li r5, 6
|
||||
/* 8018308C 48 1E 30 01 */ bl memcmp
|
||||
/* 80183090 2C 03 00 00 */ cmpwi r3, 0
|
||||
/* 80183094 40 82 00 6C */ bne lbl_80183100
|
||||
/* 80183098 88 1D 00 00 */ lbz r0, 0(r29)
|
||||
/* 8018309C 54 00 07 FF */ clrlwi. r0, r0, 0x1f
|
||||
/* 801830A0 40 82 00 38 */ bne lbl_801830D8
|
||||
/* 801830A4 88 9F 00 17 */ lbz r4, 0x17(r31)
|
||||
/* 801830A8 28 04 00 00 */ cmplwi r4, 0
|
||||
/* 801830AC 41 82 00 20 */ beq lbl_801830CC
|
||||
/* 801830B0 3C 60 80 43 */ lis r3, g_mEnvSeMgr@ha /* 0x8042DD70@ha */
|
||||
/* 801830B4 38 63 DD 70 */ addi r3, r3, g_mEnvSeMgr@l /* 0x8042DD70@l */
|
||||
/* 801830B8 88 BF 00 14 */ lbz r5, 0x14(r31)
|
||||
/* 801830BC 88 DF 00 19 */ lbz r6, 0x19(r31)
|
||||
/* 801830C0 88 FF 00 1A */ lbz r7, 0x1a(r31)
|
||||
/* 801830C4 39 1F 00 08 */ addi r8, r31, 8
|
||||
/* 801830C8 48 14 3B BD */ bl initStaticEnvSe__10Z2EnvSeMgrFUcUcUcUcP3Vec
|
||||
lbl_801830CC:
|
||||
/* 801830CC 88 1D 00 00 */ lbz r0, 0(r29)
|
||||
/* 801830D0 60 00 00 01 */ ori r0, r0, 1
|
||||
/* 801830D4 98 1D 00 00 */ stb r0, 0(r29)
|
||||
lbl_801830D8:
|
||||
/* 801830D8 2C 19 00 00 */ cmpwi r25, 0
|
||||
/* 801830DC 40 82 00 1C */ bne lbl_801830F8
|
||||
/* 801830E0 7F 63 DB 78 */ mr r3, r27
|
||||
/* 801830E4 4B EA 9F 89 */ bl dComIfGp_getReverb__Fi
|
||||
/* 801830E8 7C 64 1B 78 */ mr r4, r3
|
||||
/* 801830EC 3C 60 80 43 */ lis r3, g_mEnvSeMgr@ha /* 0x8042DD70@ha */
|
||||
/* 801830F0 38 63 DD 70 */ addi r3, r3, g_mEnvSeMgr@l /* 0x8042DD70@l */
|
||||
/* 801830F4 48 14 3F D5 */ bl startStaticEnvSe__10Z2EnvSeMgrFSc
|
||||
lbl_801830F8:
|
||||
/* 801830F8 3B 20 00 01 */ li r25, 1
|
||||
/* 801830FC 48 00 03 50 */ b lbl_8018344C
|
||||
lbl_80183100:
|
||||
/* 80183100 88 9F 00 17 */ lbz r4, 0x17(r31)
|
||||
/* 80183104 28 04 00 08 */ cmplwi r4, 8
|
||||
/* 80183108 40 80 00 A0 */ bge lbl_801831A8
|
||||
/* 8018310C 88 1D 00 00 */ lbz r0, 0(r29)
|
||||
/* 80183110 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e
|
||||
/* 80183114 40 82 00 28 */ bne lbl_8018313C
|
||||
/* 80183118 3C 60 80 43 */ lis r3, g_mEnvSeMgr@ha /* 0x8042DD70@ha */
|
||||
/* 8018311C 38 63 DD 70 */ addi r3, r3, g_mEnvSeMgr@l /* 0x8042DD70@l */
|
||||
/* 80183120 88 BF 00 14 */ lbz r5, 0x14(r31)
|
||||
/* 80183124 88 DF 00 19 */ lbz r6, 0x19(r31)
|
||||
/* 80183128 88 FF 00 1A */ lbz r7, 0x1a(r31)
|
||||
/* 8018312C 48 14 4F CD */ bl initRiverSe__10Z2EnvSeMgrFUcUcUcUc
|
||||
/* 80183130 88 1D 00 00 */ lbz r0, 0(r29)
|
||||
/* 80183134 60 00 00 02 */ ori r0, r0, 2
|
||||
/* 80183138 98 1D 00 00 */ stb r0, 0(r29)
|
||||
lbl_8018313C:
|
||||
/* 8018313C 88 7F 00 18 */ lbz r3, 0x18(r31)
|
||||
/* 80183140 7F 84 E3 78 */ mr r4, r28
|
||||
/* 80183144 4B EC E6 A9 */ bl dPath_GetRoomPath__Fii
|
||||
/* 80183148 7C 76 1B 78 */ mr r22, r3
|
||||
/* 8018314C 3C 60 80 43 */ lis r3, g_mEnvSeMgr@ha /* 0x8042DD70@ha */
|
||||
/* 80183150 3A E3 DD 70 */ addi r23, r3, g_mEnvSeMgr@l /* 0x8042DD70@l */
|
||||
/* 80183154 48 00 00 30 */ b lbl_80183184
|
||||
lbl_80183158:
|
||||
/* 80183158 38 7E 00 DC */ addi r3, r30, 0xdc
|
||||
/* 8018315C 38 81 00 20 */ addi r4, r1, 0x20
|
||||
/* 80183160 7E C5 B3 78 */ mr r5, r22
|
||||
/* 80183164 4B FF FC 79 */ bl dEnvSe_getNearPathPos__FP4cXyzP4cXyzP5dPath
|
||||
/* 80183168 7E E3 BB 78 */ mr r3, r23
|
||||
/* 8018316C 38 9E 00 DC */ addi r4, r30, 0xdc
|
||||
/* 80183170 48 14 50 C5 */ bl registRiverSePos__10Z2EnvSeMgrFP3Vec
|
||||
/* 80183174 7E C3 B3 78 */ mr r3, r22
|
||||
/* 80183178 7F 84 E3 78 */ mr r4, r28
|
||||
/* 8018317C 4B EC E7 1D */ bl dPath_GetNextRoomPath__FPC5dPathi
|
||||
/* 80183180 7C 76 1B 78 */ mr r22, r3
|
||||
lbl_80183184:
|
||||
/* 80183184 28 16 00 00 */ cmplwi r22, 0
|
||||
/* 80183188 40 82 FF D0 */ bne lbl_80183158
|
||||
/* 8018318C 7F 63 DB 78 */ mr r3, r27
|
||||
/* 80183190 4B EA 9E DD */ bl dComIfGp_getReverb__Fi
|
||||
/* 80183194 7C 64 1B 78 */ mr r4, r3
|
||||
/* 80183198 3C 60 80 43 */ lis r3, g_mEnvSeMgr@ha /* 0x8042DD70@ha */
|
||||
/* 8018319C 38 63 DD 70 */ addi r3, r3, g_mEnvSeMgr@l /* 0x8042DD70@l */
|
||||
/* 801831A0 48 14 51 61 */ bl startRiverSe__10Z2EnvSeMgrFSc
|
||||
/* 801831A4 48 00 02 A8 */ b lbl_8018344C
|
||||
lbl_801831A8:
|
||||
/* 801831A8 28 04 00 10 */ cmplwi r4, 0x10
|
||||
/* 801831AC 40 80 00 F0 */ bge lbl_8018329C
|
||||
/* 801831B0 3C 60 80 45 */ lis r3, __float_max@ha /* 0x80450AE8@ha */
|
||||
/* 801831B4 C3 E3 0A E8 */ lfs f31, __float_max@l(r3) /* 0x80450AE8@l */
|
||||
/* 801831B8 88 1D 00 00 */ lbz r0, 0(r29)
|
||||
/* 801831BC 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d
|
||||
/* 801831C0 40 82 00 28 */ bne lbl_801831E8
|
||||
/* 801831C4 3C 60 80 43 */ lis r3, g_mEnvSeMgr@ha /* 0x8042DD70@ha */
|
||||
/* 801831C8 38 63 DD 70 */ addi r3, r3, g_mEnvSeMgr@l /* 0x8042DD70@l */
|
||||
/* 801831CC 88 BF 00 14 */ lbz r5, 0x14(r31)
|
||||
/* 801831D0 88 DF 00 19 */ lbz r6, 0x19(r31)
|
||||
/* 801831D4 88 FF 00 1A */ lbz r7, 0x1a(r31)
|
||||
/* 801831D8 48 14 55 59 */ bl initFallSe__10Z2EnvSeMgrFUcUcUcUc
|
||||
/* 801831DC 88 1D 00 00 */ lbz r0, 0(r29)
|
||||
/* 801831E0 60 00 00 04 */ ori r0, r0, 4
|
||||
/* 801831E4 98 1D 00 00 */ stb r0, 0(r29)
|
||||
lbl_801831E8:
|
||||
/* 801831E8 C0 01 00 20 */ lfs f0, 0x20(r1)
|
||||
/* 801831EC D0 1E 00 DC */ stfs f0, 0xdc(r30)
|
||||
/* 801831F0 C0 01 00 24 */ lfs f0, 0x24(r1)
|
||||
/* 801831F4 D0 1E 00 E0 */ stfs f0, 0xe0(r30)
|
||||
/* 801831F8 C0 01 00 28 */ lfs f0, 0x28(r1)
|
||||
/* 801831FC D0 1E 00 E4 */ stfs f0, 0xe4(r30)
|
||||
/* 80183200 88 7F 00 18 */ lbz r3, 0x18(r31)
|
||||
/* 80183204 7F 84 E3 78 */ mr r4, r28
|
||||
/* 80183208 4B EC E5 E5 */ bl dPath_GetRoomPath__Fii
|
||||
/* 8018320C 7C 76 1B 78 */ mr r22, r3
|
||||
/* 80183210 3C 60 80 43 */ lis r3, g_mEnvSeMgr@ha /* 0x8042DD70@ha */
|
||||
/* 80183214 3A E3 DD 70 */ addi r23, r3, g_mEnvSeMgr@l /* 0x8042DD70@l */
|
||||
/* 80183218 48 00 00 60 */ b lbl_80183278
|
||||
lbl_8018321C:
|
||||
/* 8018321C 38 61 00 14 */ addi r3, r1, 0x14
|
||||
/* 80183220 38 81 00 20 */ addi r4, r1, 0x20
|
||||
/* 80183224 7E C5 B3 78 */ mr r5, r22
|
||||
/* 80183228 4B FF FB B5 */ bl dEnvSe_getNearPathPos__FP4cXyzP4cXyzP5dPath
|
||||
/* 8018322C 38 61 00 14 */ addi r3, r1, 0x14
|
||||
/* 80183230 38 81 00 20 */ addi r4, r1, 0x20
|
||||
/* 80183234 48 1C 41 69 */ bl PSVECSquareDistance
|
||||
/* 80183238 FC 01 F8 40 */ fcmpo cr0, f1, f31
|
||||
/* 8018323C 40 80 00 20 */ bge lbl_8018325C
|
||||
/* 80183240 FF E0 08 90 */ fmr f31, f1
|
||||
/* 80183244 C0 01 00 14 */ lfs f0, 0x14(r1)
|
||||
/* 80183248 D0 1E 00 DC */ stfs f0, 0xdc(r30)
|
||||
/* 8018324C C0 01 00 18 */ lfs f0, 0x18(r1)
|
||||
/* 80183250 D0 1E 00 E0 */ stfs f0, 0xe0(r30)
|
||||
/* 80183254 C0 01 00 1C */ lfs f0, 0x1c(r1)
|
||||
/* 80183258 D0 1E 00 E4 */ stfs f0, 0xe4(r30)
|
||||
lbl_8018325C:
|
||||
/* 8018325C 7E E3 BB 78 */ mr r3, r23
|
||||
/* 80183260 38 81 00 14 */ addi r4, r1, 0x14
|
||||
/* 80183264 48 14 56 09 */ bl registFallSePos__10Z2EnvSeMgrFP3Vec
|
||||
/* 80183268 7E C3 B3 78 */ mr r3, r22
|
||||
/* 8018326C 7F 84 E3 78 */ mr r4, r28
|
||||
/* 80183270 4B EC E6 29 */ bl dPath_GetNextRoomPath__FPC5dPathi
|
||||
/* 80183274 7C 76 1B 78 */ mr r22, r3
|
||||
lbl_80183278:
|
||||
/* 80183278 28 16 00 00 */ cmplwi r22, 0
|
||||
/* 8018327C 40 82 FF A0 */ bne lbl_8018321C
|
||||
/* 80183280 7F 63 DB 78 */ mr r3, r27
|
||||
/* 80183284 4B EA 9D E9 */ bl dComIfGp_getReverb__Fi
|
||||
/* 80183288 7C 64 1B 78 */ mr r4, r3
|
||||
/* 8018328C 3C 60 80 43 */ lis r3, g_mEnvSeMgr@ha /* 0x8042DD70@ha */
|
||||
/* 80183290 38 63 DD 70 */ addi r3, r3, g_mEnvSeMgr@l /* 0x8042DD70@l */
|
||||
/* 80183294 48 14 55 FD */ bl startFallSe__10Z2EnvSeMgrFSc
|
||||
/* 80183298 48 00 01 B4 */ b lbl_8018344C
|
||||
lbl_8018329C:
|
||||
/* 8018329C 28 04 00 20 */ cmplwi r4, 0x20
|
||||
/* 801832A0 40 80 00 A0 */ bge lbl_80183340
|
||||
/* 801832A4 88 1D 00 00 */ lbz r0, 0(r29)
|
||||
/* 801832A8 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c
|
||||
/* 801832AC 40 82 00 28 */ bne lbl_801832D4
|
||||
/* 801832B0 3C 60 80 43 */ lis r3, g_mEnvSeMgr@ha /* 0x8042DD70@ha */
|
||||
/* 801832B4 38 63 DD 70 */ addi r3, r3, g_mEnvSeMgr@l /* 0x8042DD70@l */
|
||||
/* 801832B8 88 BF 00 14 */ lbz r5, 0x14(r31)
|
||||
/* 801832BC 88 DF 00 19 */ lbz r6, 0x19(r31)
|
||||
/* 801832C0 88 FF 00 1A */ lbz r7, 0x1a(r31)
|
||||
/* 801832C4 48 14 57 CD */ bl initEtcSe__10Z2EnvSeMgrFUcUcUcUc
|
||||
/* 801832C8 88 1D 00 00 */ lbz r0, 0(r29)
|
||||
/* 801832CC 60 00 00 08 */ ori r0, r0, 8
|
||||
/* 801832D0 98 1D 00 00 */ stb r0, 0(r29)
|
||||
lbl_801832D4:
|
||||
/* 801832D4 88 7F 00 18 */ lbz r3, 0x18(r31)
|
||||
/* 801832D8 7F 84 E3 78 */ mr r4, r28
|
||||
/* 801832DC 4B EC E5 11 */ bl dPath_GetRoomPath__Fii
|
||||
/* 801832E0 7C 76 1B 78 */ mr r22, r3
|
||||
/* 801832E4 3C 60 80 43 */ lis r3, g_mEnvSeMgr@ha /* 0x8042DD70@ha */
|
||||
/* 801832E8 3A E3 DD 70 */ addi r23, r3, g_mEnvSeMgr@l /* 0x8042DD70@l */
|
||||
/* 801832EC 48 00 00 30 */ b lbl_8018331C
|
||||
lbl_801832F0:
|
||||
/* 801832F0 38 7E 00 DC */ addi r3, r30, 0xdc
|
||||
/* 801832F4 38 81 00 20 */ addi r4, r1, 0x20
|
||||
/* 801832F8 7E C5 B3 78 */ mr r5, r22
|
||||
/* 801832FC 4B FF FA E1 */ bl dEnvSe_getNearPathPos__FP4cXyzP4cXyzP5dPath
|
||||
/* 80183300 7E E3 BB 78 */ mr r3, r23
|
||||
/* 80183304 38 9E 00 DC */ addi r4, r30, 0xdc
|
||||
/* 80183308 48 14 59 1D */ bl registEtcSePos__10Z2EnvSeMgrFP3Vec
|
||||
/* 8018330C 7E C3 B3 78 */ mr r3, r22
|
||||
/* 80183310 7F 84 E3 78 */ mr r4, r28
|
||||
/* 80183314 4B EC E5 85 */ bl dPath_GetNextRoomPath__FPC5dPathi
|
||||
/* 80183318 7C 76 1B 78 */ mr r22, r3
|
||||
lbl_8018331C:
|
||||
/* 8018331C 28 16 00 00 */ cmplwi r22, 0
|
||||
/* 80183320 40 82 FF D0 */ bne lbl_801832F0
|
||||
/* 80183324 7F 63 DB 78 */ mr r3, r27
|
||||
/* 80183328 4B EA 9D 45 */ bl dComIfGp_getReverb__Fi
|
||||
/* 8018332C 7C 64 1B 78 */ mr r4, r3
|
||||
/* 80183330 3C 60 80 43 */ lis r3, g_mEnvSeMgr@ha /* 0x8042DD70@ha */
|
||||
/* 80183334 38 63 DD 70 */ addi r3, r3, g_mEnvSeMgr@l /* 0x8042DD70@l */
|
||||
/* 80183338 48 14 59 11 */ bl startEtcSe__10Z2EnvSeMgrFSc
|
||||
/* 8018333C 48 00 01 10 */ b lbl_8018344C
|
||||
lbl_80183340:
|
||||
/* 80183340 28 04 00 40 */ cmplwi r4, 0x40
|
||||
/* 80183344 40 80 00 58 */ bge lbl_8018339C
|
||||
/* 80183348 88 7F 00 18 */ lbz r3, 0x18(r31)
|
||||
/* 8018334C 7F 84 E3 78 */ mr r4, r28
|
||||
/* 80183350 4B EC E4 9D */ bl dPath_GetRoomPath__Fii
|
||||
/* 80183354 7C 76 1B 78 */ mr r22, r3
|
||||
/* 80183358 3C 60 80 43 */ lis r3, g_mEnvSeMgr@ha /* 0x8042DD70@ha */
|
||||
/* 8018335C 3A E3 DD 70 */ addi r23, r3, g_mEnvSeMgr@l /* 0x8042DD70@l */
|
||||
/* 80183360 48 00 00 30 */ b lbl_80183390
|
||||
lbl_80183364:
|
||||
/* 80183364 38 7E 00 DC */ addi r3, r30, 0xdc
|
||||
/* 80183368 38 81 00 20 */ addi r4, r1, 0x20
|
||||
/* 8018336C 7E C5 B3 78 */ mr r5, r22
|
||||
/* 80183370 4B FF FA 6D */ bl dEnvSe_getNearPathPos__FP4cXyzP4cXyzP5dPath
|
||||
/* 80183374 7E E3 BB 78 */ mr r3, r23
|
||||
/* 80183378 38 9E 00 DC */ addi r4, r30, 0xdc
|
||||
/* 8018337C 48 14 44 91 */ bl registWindowPos__10Z2EnvSeMgrFP3Vec
|
||||
/* 80183380 7E C3 B3 78 */ mr r3, r22
|
||||
/* 80183384 7F 84 E3 78 */ mr r4, r28
|
||||
/* 80183388 4B EC E5 11 */ bl dPath_GetNextRoomPath__FPC5dPathi
|
||||
/* 8018338C 7C 76 1B 78 */ mr r22, r3
|
||||
lbl_80183390:
|
||||
/* 80183390 28 16 00 00 */ cmplwi r22, 0
|
||||
/* 80183394 40 82 FF D0 */ bne lbl_80183364
|
||||
/* 80183398 48 00 00 B4 */ b lbl_8018344C
|
||||
lbl_8018339C:
|
||||
/* 8018339C 28 04 00 64 */ cmplwi r4, 0x64
|
||||
/* 801833A0 41 80 00 AC */ blt lbl_8018344C
|
||||
/* 801833A4 80 1E 01 08 */ lwz r0, 0x108(r30)
|
||||
/* 801833A8 7C 00 D6 30 */ sraw r0, r0, r26
|
||||
/* 801833AC 54 00 07 FF */ clrlwi. r0, r0, 0x1f
|
||||
/* 801833B0 40 82 00 30 */ bne lbl_801833E0
|
||||
/* 801833B4 3C 60 80 43 */ lis r3, g_mEnvSeMgr@ha /* 0x8042DD70@ha */
|
||||
/* 801833B8 38 63 DD 70 */ addi r3, r3, g_mEnvSeMgr@l /* 0x8042DD70@l */
|
||||
/* 801833BC 88 BF 00 14 */ lbz r5, 0x14(r31)
|
||||
/* 801833C0 88 DF 00 19 */ lbz r6, 0x19(r31)
|
||||
/* 801833C4 88 FF 00 1A */ lbz r7, 0x1a(r31)
|
||||
/* 801833C8 48 14 61 45 */ bl initLv3WaterSe__10Z2EnvSeMgrFUcUcUcUc
|
||||
/* 801833CC 80 7E 01 08 */ lwz r3, 0x108(r30)
|
||||
/* 801833D0 38 00 00 01 */ li r0, 1
|
||||
/* 801833D4 7C 00 D0 30 */ slw r0, r0, r26
|
||||
/* 801833D8 7C 60 03 78 */ or r0, r3, r0
|
||||
/* 801833DC 90 1E 01 08 */ stw r0, 0x108(r30)
|
||||
lbl_801833E0:
|
||||
/* 801833E0 88 7F 00 18 */ lbz r3, 0x18(r31)
|
||||
/* 801833E4 7F 84 E3 78 */ mr r4, r28
|
||||
/* 801833E8 4B EC E4 05 */ bl dPath_GetRoomPath__Fii
|
||||
/* 801833EC 7C 76 1B 78 */ mr r22, r3
|
||||
/* 801833F0 3C 60 80 43 */ lis r3, g_mEnvSeMgr@ha /* 0x8042DD70@ha */
|
||||
/* 801833F4 3A E3 DD 70 */ addi r23, r3, g_mEnvSeMgr@l /* 0x8042DD70@l */
|
||||
/* 801833F8 48 00 00 34 */ b lbl_8018342C
|
||||
lbl_801833FC:
|
||||
/* 801833FC 38 7E 00 DC */ addi r3, r30, 0xdc
|
||||
/* 80183400 38 81 00 20 */ addi r4, r1, 0x20
|
||||
/* 80183404 7E C5 B3 78 */ mr r5, r22
|
||||
/* 80183408 4B FF F9 D5 */ bl dEnvSe_getNearPathPos__FP4cXyzP4cXyzP5dPath
|
||||
/* 8018340C 7E E3 BB 78 */ mr r3, r23
|
||||
/* 80183410 88 9F 00 17 */ lbz r4, 0x17(r31)
|
||||
/* 80183414 38 BE 00 DC */ addi r5, r30, 0xdc
|
||||
/* 80183418 48 14 6B 41 */ bl registLv3WaterSePos__10Z2EnvSeMgrFUcP3Vec
|
||||
/* 8018341C 7E C3 B3 78 */ mr r3, r22
|
||||
/* 80183420 7F 84 E3 78 */ mr r4, r28
|
||||
/* 80183424 4B EC E4 75 */ bl dPath_GetNextRoomPath__FPC5dPathi
|
||||
/* 80183428 7C 76 1B 78 */ mr r22, r3
|
||||
lbl_8018342C:
|
||||
/* 8018342C 28 16 00 00 */ cmplwi r22, 0
|
||||
/* 80183430 40 82 FF CC */ bne lbl_801833FC
|
||||
/* 80183434 7F 63 DB 78 */ mr r3, r27
|
||||
/* 80183438 4B EA 9C 35 */ bl dComIfGp_getReverb__Fi
|
||||
/* 8018343C 7C 64 1B 78 */ mr r4, r3
|
||||
/* 80183440 3C 60 80 43 */ lis r3, g_mEnvSeMgr@ha /* 0x8042DD70@ha */
|
||||
/* 80183444 38 63 DD 70 */ addi r3, r3, g_mEnvSeMgr@l /* 0x8042DD70@l */
|
||||
/* 80183448 48 14 73 4D */ bl startLv3WaterSe__10Z2EnvSeMgrFSc
|
||||
lbl_8018344C:
|
||||
/* 8018344C 3B FF 00 1C */ addi r31, r31, 0x1c
|
||||
/* 80183450 3B 5A FF FF */ addi r26, r26, -1
|
||||
lbl_80183454:
|
||||
/* 80183454 2C 1A 00 00 */ cmpwi r26, 0
|
||||
/* 80183458 40 82 FC 28 */ bne lbl_80183080
|
||||
/* 8018345C 38 60 00 01 */ li r3, 1
|
||||
lbl_80183460:
|
||||
/* 80183460 E3 E1 00 68 */ psq_l f31, 104(r1), 0, 0 /* qr0 */
|
||||
/* 80183464 CB E1 00 60 */ lfd f31, 0x60(r1)
|
||||
/* 80183468 39 61 00 60 */ addi r11, r1, 0x60
|
||||
/* 8018346C 48 1D ED A1 */ bl _restgpr_22
|
||||
/* 80183470 80 01 00 74 */ lwz r0, 0x74(r1)
|
||||
/* 80183474 7C 08 03 A6 */ mtlr r0
|
||||
/* 80183478 38 21 00 70 */ addi r1, r1, 0x70
|
||||
/* 8018347C 4E 80 00 20 */ blr
|
||||
|
|
@ -19,7 +19,6 @@ public:
|
|||
const cXyz& GetPointP() { return m_pos; }
|
||||
u32 GetWallPrecheck() const { return mWallPrecheck; }
|
||||
|
||||
private:
|
||||
/* 0x24 */ cXyz m_pos;
|
||||
/* 0x30 */ u32 mFlags;
|
||||
/* 0x34 */ f32 mNowY;
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include "MSL_C/math.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "dolphin/mtx/vec.h"
|
||||
|
||||
class cM3dGAab;
|
||||
class cM3dGCps;
|
||||
|
|
@ -95,4 +96,8 @@ inline bool cM3d_IsZero_inverted(f32 param_0) {
|
|||
return !(fabsf(param_0) < G_CM3D_F_ABS_MIN);
|
||||
}
|
||||
|
||||
inline f32 cM3d_LenSq(const Vec* a, const Vec* b) {
|
||||
return VECSquareDistance(a, b);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -20,6 +20,8 @@ public:
|
|||
void CalcPos(Vec*, f32) const;
|
||||
void CalcVec(Vec* pOut) const { VECSubtract(&this->mEnd, &this->mStart, pOut); }
|
||||
void SetEnd(const cXyz&);
|
||||
|
||||
void set(const Vec& i_start, const Vec& i_end) { SetStartEnd(i_start, i_end); }
|
||||
const cXyz& GetStartP(void) const { return mStart; }
|
||||
cXyz& GetStartP(void) { return mStart; }
|
||||
const cXyz& GetEndP(void) const { return mEnd; }
|
||||
|
|
|
|||
|
|
@ -80,6 +80,11 @@ struct Z2EnvSeMgr : public JASGlobalInstance<Z2EnvSeMgr> {
|
|||
/* 802CA794 */ void startLv3WaterSe(s8);
|
||||
|
||||
void setWindType(u8 i_type) { mWindType = i_type; }
|
||||
void registSmellSePos(Vec* param_0) { registEtcSePos(param_0); }
|
||||
void startSmellSe(s8 param_0) { startEtcSe(param_0); }
|
||||
void initSmellSe(u8 param_0, u8 param_1, u8 param_2, u8 param_3) {
|
||||
initEtcSe(param_0, param_1, param_2, param_3);
|
||||
}
|
||||
|
||||
/* 0x000 */ Z2EnvSeAutoPan field_0x0;
|
||||
/* 0x01C */ Z2EnvSeAutoPan field_0x1c;
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ struct dBgPc;
|
|||
struct dBgS_CaptPoly;
|
||||
|
||||
struct KC_PrismData {
|
||||
/* 0x0 */ f32 field_0x0;
|
||||
/* 0x0 */ u16 field_0x0[2];
|
||||
/* 0x4 */ u16 field_0x4;
|
||||
/* 0x6 */ u16 field_0x6;
|
||||
/* 0x8 */ u16 field_0x8;
|
||||
|
|
@ -27,8 +27,12 @@ struct pkcdata {
|
|||
/* 0x0C */ KC_PrismData* m_block_data;
|
||||
/* 0x10 */ u8 field_0x10[4];
|
||||
/* 0x14 */ Vec m_area_min_pos;
|
||||
/* 0x20 */ u8 field_0x20[4];
|
||||
/* 0x20 */ u32 field_0x20;
|
||||
/* 0x24 */ u32 field_0x24;
|
||||
/* 0x28 */ u32 field_0x28;
|
||||
/* 0x2C */ u32 field_0x2c;
|
||||
/* 0x30 */ u32 field_0x30;
|
||||
/* 0x34 */ u32 field_0x34;
|
||||
};
|
||||
|
||||
struct KCol_Header {
|
||||
|
|
|
|||
|
|
@ -322,7 +322,7 @@ public:
|
|||
/* 80181560 */ void ForceLockOff(unsigned int);
|
||||
/* 8018159C */ void ForceLockOff(fopAc_ac_c*);
|
||||
/* 80181E20 */ void Up();
|
||||
/* 80181E64 */ void Eye();
|
||||
/* 80181E64 */ cXyz Eye();
|
||||
/* 80181E98 */ cXyz Center();
|
||||
/* 8018295C */ void footHeightOf(fopAc_ac_c*);
|
||||
/* 80182964 */ void push_any_key();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,23 @@
|
|||
#ifndef D_D_ENVSE_H
|
||||
#define D_D_ENVSE_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "f_op/f_op_kankyo.h"
|
||||
|
||||
class dStage_SoundInfo_c;
|
||||
|
||||
class dEnvSe_c : public kankyo_class {
|
||||
public:
|
||||
/* 80182FD8 */ int execute_common(dStage_SoundInfo_c*, s8*, u8);
|
||||
/* 80183480 */ int execute();
|
||||
|
||||
/* 0x0F8 */ u8 field_0xf8[0x0FC - 0x0F8];
|
||||
/* 0x0FC */ s8 field_0xfc;
|
||||
/* 0x0FD */ s8 field_0xfd;
|
||||
/* 0x0FE */ s8 field_0xfe;
|
||||
/* 0x0FF */ s8 field_0xff;
|
||||
/* 0x100 */ u8 field_0x100[0x104 - 0x100];
|
||||
/* 0x104 */ int mRoomNo;
|
||||
/* 0x108 */ int field_0x108;
|
||||
};
|
||||
|
||||
#endif /* D_D_ENVSE_H */
|
||||
|
|
|
|||
|
|
@ -19,7 +19,8 @@ struct dPath {
|
|||
inline int dPath_ChkClose(dPath* i_path) { return (i_path->m_closed & 1); }
|
||||
|
||||
dPath* dPath_GetRoomPath(int path_index, int room_no);
|
||||
dStage_dPnt_c* dPath_GetPnt(dPath const* path, int pnt_index);
|
||||
dPath* dPath_GetNextRoomPath(dPath const* i_path, int room_no);
|
||||
dStage_dPnt_c* dPath_GetPnt(dPath const* i_path, int pnt_index);
|
||||
u8 dPath_GetPolyRoomPathVec(cBgS_PolyInfo const& poly, cXyz* p_pathVec, int* param_2);
|
||||
|
||||
#endif /* D_D_PATH_H */
|
||||
|
|
|
|||
|
|
@ -270,8 +270,8 @@ struct stage_sound_data {
|
|||
|
||||
struct dStage_SoundInfo_c {
|
||||
// SOND
|
||||
/* 0x0 */ int field_0x0;
|
||||
/* 0x4 */ stage_sound_data* field_0x4;
|
||||
/* 0x0 */ int num;
|
||||
/* 0x4 */ stage_sound_data* entries;
|
||||
};
|
||||
|
||||
class dStage_FileList_dt_c {
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ struct SNOW_EFF {
|
|||
/* 80056D58 */ ~SNOW_EFF();
|
||||
/* 80056D94 */ SNOW_EFF();
|
||||
|
||||
/* 0x00 */ u8 mStatus;
|
||||
/* 0x00 */ s8 mStatus;
|
||||
/* 0x04 */ cXyz mPosition;
|
||||
/* 0x10 */ cXyz mBasePos;
|
||||
/* 0x1C */ f32 mPosWaveX;
|
||||
|
|
@ -130,7 +130,7 @@ struct SNOW_EFF {
|
|||
/* 0x24 */ f32 mGravity;
|
||||
/* 0x28 */ f32 mWindSpeed;
|
||||
/* 0x2C */ f32 mScale;
|
||||
/* 0x30 */ u8 field_0x30[4];
|
||||
/* 0x30 */ f32 field_0x30;
|
||||
/* 0x34 */ s16 mTimer;
|
||||
}; // Size: 0x38
|
||||
|
||||
|
|
@ -144,7 +144,7 @@ public:
|
|||
/* 0x6D74 */ cXyz field_0x6d74;
|
||||
/* 0x6D80 */ f32 field_0x6d80;
|
||||
/* 0x6D84 */ f32 field_0x6d84;
|
||||
/* 0x6D88 */ u16 field_0x6d88;
|
||||
/* 0x6D88 */ s16 field_0x6d88;
|
||||
/* 0x6D8A */ u16 field_0x6d8a;
|
||||
/* 0x6D8C */ u32 field_0x6d8c;
|
||||
/* 0x6D90 */ u8 field_0x6d90;
|
||||
|
|
@ -264,7 +264,10 @@ struct EF_ODOUR_EFF {
|
|||
/* 0x00 */ u8 mStatus;
|
||||
/* 0x04 */ cXyz mPosition;
|
||||
/* 0x10 */ cXyz mBasePos;
|
||||
/* 0x1C */ u8 field_0x1c[0x14];
|
||||
/* 0x1C */ u8 field_0x1c[0x24 - 0x1C];
|
||||
/* 0x24 */ f32 field_0x24;
|
||||
/* 0x28 */ f32 field_0x28;
|
||||
/* 0x2C */ f32 field_0x2c;
|
||||
}; // Size: 0x30
|
||||
|
||||
class dKankyo_odour_Packet : public J3DPacket {
|
||||
|
|
|
|||
|
|
@ -153,4 +153,64 @@ inline void mDoAud_mEnvse_setWindType(u8 i_type) {
|
|||
g_mEnvSeMgr.setWindType(i_type);
|
||||
}
|
||||
|
||||
inline void mDoAud_mEnvse_initStaticEnvSe(u8 param_0, u8 param_1, u8 param_2, u8 param_3, const Vec* param_4) {
|
||||
g_mEnvSeMgr.initStaticEnvSe(param_0, param_1, param_2, param_3, (Vec*)param_4);
|
||||
}
|
||||
|
||||
inline void mDoAud_mEnvse_startStaticEnvSe(s8 i_reverb) {
|
||||
g_mEnvSeMgr.startStaticEnvSe(i_reverb);
|
||||
}
|
||||
|
||||
inline void mDoAud_mEnvse_initRiverSe(u8 param_0, u8 param_1, u8 param_2, u8 param_3) {
|
||||
g_mEnvSeMgr.initRiverSe(param_0, param_1, param_2, param_3);
|
||||
}
|
||||
|
||||
inline void mDoAud_mEnvse_registRiverSePos(const Vec* i_pos) {
|
||||
g_mEnvSeMgr.registRiverSePos((Vec*)i_pos);
|
||||
}
|
||||
|
||||
inline void mDoAud_mEnvse_startRiverSe(s8 i_reverb) {
|
||||
g_mEnvSeMgr.startRiverSe(i_reverb);
|
||||
}
|
||||
|
||||
inline void mDoAud_mEnvse_initFallSe(u8 param_0, u8 param_1, u8 param_2, u8 param_3) {
|
||||
g_mEnvSeMgr.initFallSe(param_0, param_1, param_2, param_3);
|
||||
}
|
||||
|
||||
inline void mDoAud_mEnvse_registFallSePos(const Vec* i_pos) {
|
||||
g_mEnvSeMgr.registFallSePos((Vec*)i_pos);
|
||||
}
|
||||
|
||||
inline void mDoAud_mEnvse_startFallSe(s8 i_reverb) {
|
||||
g_mEnvSeMgr.startFallSe(i_reverb);
|
||||
}
|
||||
|
||||
inline void mDoAud_mEnvse_initSmellSe(u8 param_0, u8 param_1, u8 param_2, u8 param_3) {
|
||||
g_mEnvSeMgr.initSmellSe(param_0, param_1, param_2, param_3);
|
||||
}
|
||||
|
||||
inline void mDoAud_mEnvse_registSmellSePos(const Vec* i_pos) {
|
||||
g_mEnvSeMgr.registSmellSePos((Vec*)i_pos);
|
||||
}
|
||||
|
||||
inline void mDoAud_mEnvse_startSmellSe(s8 i_reverb) {
|
||||
g_mEnvSeMgr.startSmellSe(i_reverb);
|
||||
}
|
||||
|
||||
inline void mDoAud_mEnvse_registWindowPos(const Vec* i_pos) {
|
||||
g_mEnvSeMgr.registWindowPos((Vec*)i_pos);
|
||||
}
|
||||
|
||||
inline void mDoAud_initLv3WaterSe(u8 param_0, u8 param_1, u8 param_2, u8 param_3) {
|
||||
g_mEnvSeMgr.initLv3WaterSe(param_0, param_1, param_2, param_3);
|
||||
}
|
||||
|
||||
inline void mDoAud_registLv3WaterSePos(u8 param_0, const Vec* i_pos) {
|
||||
g_mEnvSeMgr.registLv3WaterSePos(param_0, (Vec*)i_pos);
|
||||
}
|
||||
|
||||
inline void mDoAud_startLv3WaterSe(s8 i_reverb) {
|
||||
g_mEnvSeMgr.startLv3WaterSe(i_reverb);
|
||||
}
|
||||
|
||||
#endif /* M_DO_M_DO_AUDIO_H */
|
||||
|
|
|
|||
|
|
@ -5,16 +5,9 @@
|
|||
|
||||
#include "d/bg/d_bg_w_kcol.h"
|
||||
#include "d/bg/d_bg_pc.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "dol2asm.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct cM3dGTri {
|
||||
/* 8026F8C8 */ void set(Vec const*, Vec const*, Vec const*, Vec const*);
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
|
@ -133,7 +126,6 @@ extern "C" void _restgpr_29();
|
|||
extern "C" extern void* __vt__8cM3dGPla[3];
|
||||
extern "C" extern void* __vt__8cM3dGAab[3];
|
||||
extern "C" extern void* __vt__8cM3dGTri[3];
|
||||
extern "C" extern u8 g_dComIfG_gameInfo[122384];
|
||||
extern "C" u8 sincosTable___5JMath[65536];
|
||||
|
||||
//
|
||||
|
|
@ -315,6 +307,93 @@ asm bool dBgWKCol::LineCheck(cBgS_LinChk* param_0) {
|
|||
SECTION_SDATA2 static f32 lit_4293 = 0.014000000432133675f;
|
||||
|
||||
/* 8007F628-8007F9A4 079F68 037C+00 1/0 0/0 0/0 .text GroundCross__8dBgWKColFP11cBgS_GndChk */
|
||||
#ifdef NONMATCHING
|
||||
bool dBgWKCol::GroundCross(cBgS_GndChk* i_chk) {
|
||||
cXyz* point_p = (cXyz*)&i_chk->GetPointP();
|
||||
cXyz sp20;
|
||||
|
||||
VECSubtract(point_p, &m_pkc_head->m_area_min_pos, &sp20);
|
||||
|
||||
u32 temp_r3 = (u32)sp20.x;
|
||||
if (temp_r3 < 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (temp_r3 > ~m_pkc_head->field_0x20) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32 temp_r3_2 = (u32)sp20.z;
|
||||
if (temp_r3_2 < 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (temp_r3_2 > ~m_pkc_head->field_0x28) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32 var_r25 = (u32)sp20.y;
|
||||
if (var_r25 < 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (var_r25 > ~m_pkc_head->field_0x24) {
|
||||
var_r25 = (u32)~m_pkc_head->field_0x24;
|
||||
}
|
||||
|
||||
bool var_r24 = 0;
|
||||
int var_r23 = 0;
|
||||
cXyz sp14;
|
||||
while (var_r25 >= var_r23) {
|
||||
u32 var_r22 = m_pkc_head->field_0x2c;
|
||||
u32 var_r4 = ((temp_r3 >> var_r22) | (((temp_r3_2 >> var_r22) << m_pkc_head->field_0x34) | ((var_r25 >> var_r22) << m_pkc_head->field_0x30))) * 4;
|
||||
|
||||
KC_PrismData* data_p = &m_pkc_head->m_block_data[var_r4];
|
||||
for (; data_p->field_0x0[0] >= 0; data_p++) {
|
||||
var_r22--;
|
||||
var_r4 = ((((((var_r25 >> var_r22) * 2) & 2 & ~4) | (((temp_r3_2 >> var_r22) << 2) & 4)) & ~1) | ((temp_r3 >> var_r22) & 1)) * 4;
|
||||
}
|
||||
|
||||
u16* var_r21 = data_p->field_0x0;
|
||||
while (var_r21[0]++ != 0) {
|
||||
KC_PrismData* temp_r27 = &m_pkc_head->m_prism_data[var_r21[0]];
|
||||
Vec* temp_r20 = &m_pkc_head->field_0x4[temp_r27->field_0x6];
|
||||
|
||||
if (temp_r20->y >= 0.014000000432133675f && !cM3d_IsZero(temp_r20->y) && (cBgW_CheckBWall(temp_r20->y) || i_chk->GetWallPrecheck())) {
|
||||
Vec* temp_r19_2 = &m_pkc_head->field_0x0[temp_r27->field_0x4];
|
||||
sp14.x = i_chk->m_pos.x - temp_r19_2->x;
|
||||
sp14.z = i_chk->m_pos.z - temp_r19_2->z;
|
||||
sp14.y = -(sp14.x * temp_r20->x + sp14.z * temp_r20->z) / temp_r19_2->y;
|
||||
|
||||
if (VECDotProduct(&sp14, &m_pkc_head->field_0x4[temp_r27->field_0x8]) <= 0.0075f &&
|
||||
VECDotProduct(&sp14, &m_pkc_head->field_0x4[temp_r27->field_0xa]) <= 0.0075f &&
|
||||
VECDotProduct(&sp14, &m_pkc_head->field_0x4[temp_r27->field_0xc]) <= 0.0075f)
|
||||
{
|
||||
dBgPc sp64;
|
||||
getPolyCode(var_r21[0], &sp64);
|
||||
cXyz sp40(*temp_r20);
|
||||
|
||||
if (!chkPolyThrough(&sp64, i_chk->GetPolyPassChk(), i_chk->GetGrpPassChk(), sp40)) {
|
||||
f32 tmp_height_kcw = sp14.y + temp_r19_2->y;
|
||||
f32 now_y = i_chk->GetNowY();
|
||||
|
||||
if (now_y < tmp_height_kcw && tmp_height_kcw < i_chk->m_pos.y) {
|
||||
i_chk->SetPolyIndex(var_r21[0]);
|
||||
i_chk->SetNowY(tmp_height_kcw);
|
||||
var_r24 = 1;
|
||||
var_r23 = (u32)(tmp_height_kcw - m_pkc_head->m_area_min_pos.y);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
var_r25 = (var_r25 & ~((1 << var_r22) - 1)) - 1;
|
||||
}
|
||||
|
||||
return var_r24;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -323,6 +402,7 @@ asm bool dBgWKCol::GroundCross(cBgS_GndChk* param_0) {
|
|||
#include "asm/d/bg/d_bg_w_kcol/GroundCross__8dBgWKColFP11cBgS_GndChk.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8007F9A4-8007FF00 07A2E4 055C+00 1/0 0/0 0/0 .text ShdwDraw__8dBgWKColFP13cBgS_ShdwDraw */
|
||||
#pragma push
|
||||
|
|
|
|||
|
|
@ -3624,7 +3624,7 @@ asm void dCamera_c::Up() {
|
|||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void dCamera_c::Eye() {
|
||||
asm cXyz dCamera_c::Eye() {
|
||||
nofralloc
|
||||
#include "asm/d/d_camera/Eye__9dCamera_cFv.s"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,55 +4,11 @@
|
|||
//
|
||||
|
||||
#include "d/d_envse.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "d/d_path.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "dol2asm.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct dStage_roomControl_c {
|
||||
/* 80024384 */ void getStatusRoomDt(int);
|
||||
};
|
||||
|
||||
struct dStage_SoundInfo_c {};
|
||||
|
||||
struct dPath {};
|
||||
|
||||
struct dEnvSe_c {
|
||||
/* 80182FD8 */ void execute_common(dStage_SoundInfo_c*, s8*, u8);
|
||||
/* 80183480 */ void execute();
|
||||
};
|
||||
|
||||
struct dCamera_c {
|
||||
/* 80181E64 */ void Eye();
|
||||
};
|
||||
|
||||
struct cXyz {};
|
||||
|
||||
struct Vec {};
|
||||
|
||||
struct cM3dGLin {
|
||||
/* 8026F31C */ void SetStartEnd(Vec const&, Vec const&);
|
||||
};
|
||||
|
||||
struct Z2EnvSeMgr {
|
||||
/* 802C6C84 */ void initStaticEnvSe(u8, u8, u8, u8, Vec*);
|
||||
/* 802C70C8 */ void startStaticEnvSe(s8);
|
||||
/* 802C780C */ void registWindowPos(Vec*);
|
||||
/* 802C80F8 */ void initRiverSe(u8, u8, u8, u8);
|
||||
/* 802C8234 */ void registRiverSePos(Vec*);
|
||||
/* 802C8300 */ void startRiverSe(s8);
|
||||
/* 802C8730 */ void initFallSe(u8, u8, u8, u8);
|
||||
/* 802C886C */ void registFallSePos(Vec*);
|
||||
/* 802C8890 */ void startFallSe(s8);
|
||||
/* 802C8A90 */ void initEtcSe(u8, u8, u8, u8);
|
||||
/* 802C8C24 */ void registEtcSePos(Vec*);
|
||||
/* 802C8C48 */ void startEtcSe(s8);
|
||||
/* 802C950C */ void initLv3WaterSe(u8, u8, u8, u8);
|
||||
/* 802C9F58 */ void registLv3WaterSePos(u8, Vec*);
|
||||
/* 802CA794 */ void startLv3WaterSe(s8);
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
|
@ -66,7 +22,6 @@ extern "C" static bool dEnvSe_IsDelete__FP8dEnvSe_c();
|
|||
extern "C" static bool dEnvSe_Delete__FP8dEnvSe_c();
|
||||
extern "C" static void dEnvSe_Create__FP8dEnvSe_c();
|
||||
extern "C" extern char const* const d_d_envse__stringBase0;
|
||||
extern "C" extern void* g_profile_ENVSE[10 + 1 /* padding */];
|
||||
|
||||
//
|
||||
// External References:
|
||||
|
|
@ -94,29 +49,21 @@ extern "C" void startEtcSe__10Z2EnvSeMgrFSc();
|
|||
extern "C" void initLv3WaterSe__10Z2EnvSeMgrFUcUcUcUc();
|
||||
extern "C" void registLv3WaterSePos__10Z2EnvSeMgrFUcP3Vec();
|
||||
extern "C" void startLv3WaterSe__10Z2EnvSeMgrFSc();
|
||||
extern "C" void PSVECSquareDistance();
|
||||
extern "C" void _savegpr_22();
|
||||
extern "C" void _savegpr_26();
|
||||
extern "C" void _savegpr_28();
|
||||
extern "C" void _restgpr_22();
|
||||
extern "C" void _restgpr_26();
|
||||
extern "C" void _restgpr_28();
|
||||
extern "C" void memcmp();
|
||||
extern "C" extern void* g_fopKy_Method[5 + 1 /* padding */];
|
||||
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
|
||||
extern "C" extern void* __vt__8cM3dGLin[3];
|
||||
extern "C" extern u8 g_dComIfG_gameInfo[122384];
|
||||
extern "C" extern u8 g_mEnvSeMgr[780];
|
||||
extern "C" extern u32 __float_max;
|
||||
extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* 80182DD4-80182DDC 17D714 0008+00 1/0 0/0 0/0 .text dEnvSe_Draw__FP8dEnvSe_c */
|
||||
static bool dEnvSe_Draw(dEnvSe_c* param_0) {
|
||||
return true;
|
||||
static int dEnvSe_Draw(dEnvSe_c* i_this) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
|
|
@ -128,6 +75,59 @@ SECTION_SBSS2 static u8 data_80456B84[4];
|
|||
|
||||
/* 80182DDC-80182FD8 17D71C 01FC+00 1/1 0/0 0/0 .text dEnvSe_getNearPathPos__FP4cXyzP4cXyzP5dPath
|
||||
*/
|
||||
// stack issues
|
||||
#ifdef NONMATCHING
|
||||
static void dEnvSe_getNearPathPos(cXyz* param_0, cXyz* param_1, dPath* i_path) {
|
||||
int var_r28 = 0;
|
||||
BOOL sp10[2] = {0, 0};
|
||||
f32 sp8;
|
||||
|
||||
f32 var_f31 = FLT_MAX;
|
||||
|
||||
dStage_dPnt_c* point_p = i_path->m_points;
|
||||
|
||||
cXyz sp3C;
|
||||
cXyz sp30;
|
||||
cM3dGLin sp14;
|
||||
|
||||
for (int i = 0; i < i_path->m_num; i++) {
|
||||
sp8 = cM3d_LenSq(param_1, &point_p->m_position);
|
||||
if (var_f31 > sp8) {
|
||||
var_f31 = sp8;
|
||||
var_r28 = i;
|
||||
}
|
||||
|
||||
point_p++;
|
||||
}
|
||||
|
||||
dStage_dPnt_c* point2_p = &i_path->m_points[var_r28];
|
||||
if (var_r28 != 0) {
|
||||
sp14.set(point2_p[-1].m_position, point2_p[0].m_position);
|
||||
sp10[0] = cM3d_Len3dSqPntAndSegLine(&sp14, param_1, &sp30, &sp8);
|
||||
}
|
||||
|
||||
if (var_r28 != i_path->m_num - 1) {
|
||||
sp14.set(point2_p[0].m_position, point2_p[1].m_position);
|
||||
sp10[1] = cM3d_Len3dSqPntAndSegLine(&sp14, param_1, &sp3C, &sp8);
|
||||
}
|
||||
|
||||
if (sp10[0]) {
|
||||
if (sp10[1]) {
|
||||
if (cM3d_LenSq(&sp3C, param_1) > sp8) {
|
||||
*param_0 = sp30;
|
||||
} else {
|
||||
*param_0 = sp3C;
|
||||
}
|
||||
} else {
|
||||
*param_0 = sp30;
|
||||
}
|
||||
} else if (sp10[1]) {
|
||||
*param_0 = sp3C;
|
||||
} else {
|
||||
param_0->set(point2_p[0].m_position);
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -136,89 +136,198 @@ static asm void dEnvSe_getNearPathPos(cXyz* param_0, cXyz* param_1, dPath* param
|
|||
#include "asm/d/d_envse/dEnvSe_getNearPathPos__FP4cXyzP4cXyzP5dPath.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80394308-80394308 020968 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DEAD static char const* const stringBase_80394308 = "sndtag";
|
||||
/* @stringBase0 padding */
|
||||
SECTION_DEAD static char const* const pad_8039430F = "";
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80182FD8-80183480 17D918 04A8+00 1/1 0/0 0/0 .text
|
||||
* execute_common__8dEnvSe_cFP18dStage_SoundInfo_cPScUc */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void dEnvSe_c::execute_common(dStage_SoundInfo_c* param_0, s8* param_1, u8 param_2) {
|
||||
nofralloc
|
||||
#include "asm/d/d_envse/execute_common__8dEnvSe_cFP18dStage_SoundInfo_cPScUc.s"
|
||||
int dEnvSe_c::execute_common(dStage_SoundInfo_c* i_soundInf, s8* param_1, u8 param_2) {
|
||||
s32 roomNo = dComIfGp_roomControl_getStayNo();
|
||||
int path_roomNo = dComIfGp_roomControl_getStayNo();
|
||||
BOOL var_r25 = false;
|
||||
|
||||
if (i_soundInf == NULL) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
int i = i_soundInf->num;
|
||||
stage_sound_data* data_p = i_soundInf->entries;
|
||||
|
||||
cXyz cam_eye = dComIfGp_getCamera(i_dComIfGp_getPlayerCameraID(0))->mCamera.Eye();
|
||||
|
||||
if (param_2 == 0) {
|
||||
path_roomNo = -1;
|
||||
}
|
||||
|
||||
for (; i != 0; i--) {
|
||||
if (memcmp(data_p->field_0x0, "sndtag", 6) == 0) {
|
||||
if (!(*param_1 & 1)) {
|
||||
if (data_p->field_0x17 != 0) {
|
||||
mDoAud_mEnvse_initStaticEnvSe(data_p->field_0x17, data_p->field_0x14,
|
||||
data_p->field_0x19, data_p->field_0x1a,
|
||||
&data_p->field_0x8);
|
||||
}
|
||||
*param_1 |= 1;
|
||||
}
|
||||
|
||||
if (!var_r25) {
|
||||
mDoAud_mEnvse_startStaticEnvSe(dComIfGp_getReverb(roomNo));
|
||||
}
|
||||
var_r25 = true;
|
||||
} else if (data_p->field_0x17 < 8) {
|
||||
if (!(*param_1 & 2)) {
|
||||
mDoAud_mEnvse_initRiverSe(data_p->field_0x17, data_p->field_0x14,
|
||||
data_p->field_0x19, data_p->field_0x1a);
|
||||
*param_1 |= 2;
|
||||
}
|
||||
|
||||
for (dPath* path_p = dPath_GetRoomPath(data_p->field_0x18, path_roomNo); path_p != NULL;
|
||||
path_p = dPath_GetNextRoomPath(path_p, path_roomNo))
|
||||
{
|
||||
dEnvSe_getNearPathPos(&mPos, &cam_eye, path_p);
|
||||
mDoAud_mEnvse_registRiverSePos(&mPos);
|
||||
}
|
||||
|
||||
mDoAud_mEnvse_startRiverSe(dComIfGp_getReverb(roomNo));
|
||||
} else if (data_p->field_0x17 < 16) {
|
||||
cXyz sp14;
|
||||
f32 fvar12 = FLT_MAX;
|
||||
|
||||
if (!(*param_1 & 4)) {
|
||||
mDoAud_mEnvse_initFallSe(data_p->field_0x17, data_p->field_0x14, data_p->field_0x19,
|
||||
data_p->field_0x1a);
|
||||
*param_1 |= 4;
|
||||
}
|
||||
|
||||
mPos = cam_eye;
|
||||
|
||||
for (dPath* path_p = dPath_GetRoomPath(data_p->field_0x18, path_roomNo); path_p != NULL;
|
||||
path_p = dPath_GetNextRoomPath(path_p, path_roomNo))
|
||||
{
|
||||
dEnvSe_getNearPathPos(&sp14, &cam_eye, path_p);
|
||||
|
||||
f32 fvar11 = cM3d_LenSq(&sp14, &cam_eye);
|
||||
if (fvar11 < fvar12) {
|
||||
fvar12 = fvar11;
|
||||
mPos = sp14;
|
||||
}
|
||||
|
||||
mDoAud_mEnvse_registFallSePos(&sp14);
|
||||
}
|
||||
|
||||
mDoAud_mEnvse_startFallSe(dComIfGp_getReverb(roomNo));
|
||||
} else if (data_p->field_0x17 < 32) {
|
||||
if (!(*param_1 & 8)) {
|
||||
mDoAud_mEnvse_initSmellSe(data_p->field_0x17, data_p->field_0x14,
|
||||
data_p->field_0x19, data_p->field_0x1a);
|
||||
*param_1 |= 8;
|
||||
}
|
||||
|
||||
for (dPath* path_p = dPath_GetRoomPath(data_p->field_0x18, path_roomNo); path_p != NULL;
|
||||
path_p = dPath_GetNextRoomPath(path_p, path_roomNo))
|
||||
{
|
||||
dEnvSe_getNearPathPos(&mPos, &cam_eye, path_p);
|
||||
mDoAud_mEnvse_registSmellSePos(&mPos);
|
||||
}
|
||||
|
||||
mDoAud_mEnvse_startSmellSe(dComIfGp_getReverb(roomNo));
|
||||
} else if (data_p->field_0x17 < 64) {
|
||||
for (dPath* path_p = dPath_GetRoomPath(data_p->field_0x18, path_roomNo); path_p != NULL;
|
||||
path_p = dPath_GetNextRoomPath(path_p, path_roomNo))
|
||||
{
|
||||
dEnvSe_getNearPathPos(&mPos, &cam_eye, path_p);
|
||||
mDoAud_mEnvse_registWindowPos(&mPos);
|
||||
}
|
||||
} else if (data_p->field_0x17 >= 100) {
|
||||
if (!((field_0x108 >> i) & 1)) {
|
||||
mDoAud_initLv3WaterSe(data_p->field_0x17, data_p->field_0x14, data_p->field_0x19,
|
||||
data_p->field_0x1a);
|
||||
field_0x108 |= (1 << i);
|
||||
}
|
||||
|
||||
for (dPath* path_p = dPath_GetRoomPath(data_p->field_0x18, path_roomNo); path_p != NULL;
|
||||
path_p = dPath_GetNextRoomPath(path_p, path_roomNo))
|
||||
{
|
||||
dEnvSe_getNearPathPos(&mPos, &cam_eye, path_p);
|
||||
mDoAud_registLv3WaterSePos(data_p->field_0x17, &mPos);
|
||||
}
|
||||
|
||||
mDoAud_startLv3WaterSe(dComIfGp_getReverb(roomNo));
|
||||
}
|
||||
data_p++;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80183480-801835A0 17DDC0 0120+00 1/1 0/0 0/0 .text execute__8dEnvSe_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void dEnvSe_c::execute() {
|
||||
nofralloc
|
||||
#include "asm/d/d_envse/execute__8dEnvSe_cFv.s"
|
||||
int dEnvSe_c::execute() {
|
||||
s32 roomNo = dComIfGp_roomControl_getStayNo();
|
||||
dStage_roomDt_c* roomDt_p = &dComIfGp_roomControl_getStatusRoomDt(roomNo)->mRoomDt;
|
||||
|
||||
if (roomDt_p == NULL) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (mRoomNo != roomNo) {
|
||||
field_0xfc = 0;
|
||||
field_0xfd = 0;
|
||||
field_0x108 = 0;
|
||||
mRoomNo = roomNo;
|
||||
}
|
||||
|
||||
execute_common(roomDt_p->getSoundInfCL(), &field_0xfc, 1);
|
||||
execute_common(roomDt_p->getSoundInf(), &field_0xfd, 1);
|
||||
execute_common(i_dComIfGp_getStage()->getSoundInfCL(), &field_0xfe, 0);
|
||||
|
||||
return execute_common(i_dComIfGp_getStage()->getSoundInf(), &field_0xff, 0);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 801835A0-801835C0 17DEE0 0020+00 1/0 0/0 0/0 .text dEnvSe_Execute__FP8dEnvSe_c */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void dEnvSe_Execute(dEnvSe_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/d/d_envse/dEnvSe_Execute__FP8dEnvSe_c.s"
|
||||
static int dEnvSe_Execute(dEnvSe_c* i_this) {
|
||||
return i_this->execute();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 801835C0-801835C8 17DF00 0008+00 1/0 0/0 0/0 .text dEnvSe_IsDelete__FP8dEnvSe_c */
|
||||
static bool dEnvSe_IsDelete(dEnvSe_c* param_0) {
|
||||
return true;
|
||||
static int dEnvSe_IsDelete(dEnvSe_c* i_this) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 801835C8-801835D0 17DF08 0008+00 1/0 0/0 0/0 .text dEnvSe_Delete__FP8dEnvSe_c */
|
||||
static bool dEnvSe_Delete(dEnvSe_c* param_0) {
|
||||
return true;
|
||||
static int dEnvSe_Delete(dEnvSe_c* i_this) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 801835D0-801835F8 17DF10 0028+00 1/0 0/0 0/0 .text dEnvSe_Create__FP8dEnvSe_c */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void dEnvSe_Create(dEnvSe_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/d/d_envse/dEnvSe_Create__FP8dEnvSe_c.s"
|
||||
static int dEnvSe_Create(dEnvSe_c* i_this) {
|
||||
i_this->field_0xfc = 0;
|
||||
i_this->field_0xfd = 0;
|
||||
i_this->field_0xfe = 0;
|
||||
i_this->field_0xff = 0;
|
||||
i_this->mRoomNo = 0xFF;
|
||||
i_this->field_0x108 = 0;
|
||||
|
||||
return cPhs_COMPLEATE_e;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803BA808-803BA81C -00001 0014+00 1/0 0/0 0/0 .data l_dEnvSe_Method */
|
||||
SECTION_DATA static void* l_dEnvSe_Method[5] = {
|
||||
(void*)dEnvSe_Create__FP8dEnvSe_c, (void*)dEnvSe_Delete__FP8dEnvSe_c,
|
||||
(void*)dEnvSe_Execute__FP8dEnvSe_c, (void*)dEnvSe_IsDelete__FP8dEnvSe_c,
|
||||
(void*)dEnvSe_Draw__FP8dEnvSe_c,
|
||||
static leafdraw_method_class l_dEnvSe_Method = {
|
||||
(process_method_func)dEnvSe_Create, (process_method_func)dEnvSe_Delete,
|
||||
(process_method_func)dEnvSe_Execute, (process_method_func)dEnvSe_IsDelete,
|
||||
(process_method_func)dEnvSe_Draw,
|
||||
};
|
||||
|
||||
/* 803BA81C-803BA848 -00001 0028+04 0/0 0/0 1/0 .data g_profile_ENVSE */
|
||||
SECTION_DATA extern void* g_profile_ENVSE[10 + 1 /* padding */] = {
|
||||
(void*)0xFFFFFFFD,
|
||||
(void*)0x0002FFFD,
|
||||
(void*)0x00150000,
|
||||
(void*)&g_fpcLf_Method,
|
||||
(void*)0x0000010C,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
(void*)&g_fopKy_Method,
|
||||
(void*)0x02B10000,
|
||||
(void*)&l_dEnvSe_Method,
|
||||
/* padding */
|
||||
NULL,
|
||||
extern kankyo_process_profile_definition g_profile_ENVSE = {
|
||||
fpcLy_CURRENT_e,
|
||||
2,
|
||||
fpcPi_CURRENT_e,
|
||||
PROC_ENVSE,
|
||||
&g_fpcLf_Method.mBase,
|
||||
sizeof(dEnvSe_c),
|
||||
0,
|
||||
0,
|
||||
&g_fopKy_Method,
|
||||
689,
|
||||
&l_dEnvSe_Method,
|
||||
};
|
||||
|
||||
/* 80394308-80394308 020968 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
|
|
|
|||
|
|
@ -2044,6 +2044,283 @@ SECTION_SDATA2 static f32 lit_6367 = 9800.0f;
|
|||
SECTION_SDATA2 static f32 lit_6368 = 19.0f / 50.0f;
|
||||
|
||||
/* 8005FD48-80061324 05A688 15DC+00 0/0 1/1 0/0 .text dKyr_snow_move__Fv */
|
||||
// mostly matches, 1 out of order instruction
|
||||
#ifdef NONMATCHING
|
||||
void dKyr_snow_move() {
|
||||
f32* temp_r26;
|
||||
cXyz* temp_r25;
|
||||
dKankyo_snow_Packet* snow_p = g_env_light.mpSnowPacket;
|
||||
SNOW_EFF* effect_p;
|
||||
camera_class* camera_p = (camera_class*)dComIfGp_getCamera(0);
|
||||
fopAc_ac_c* player_p = dComIfGp_getPlayer(0);
|
||||
|
||||
DOUBLE_POS spC8;
|
||||
cXyz spB8;
|
||||
cXyz spAC;
|
||||
cXyz spA0;
|
||||
cXyz sp94 = dKyw_get_wind_vecpow();
|
||||
cXyz sp88 = dKyw_get_wind_vecpow();
|
||||
cXyz sp7C;
|
||||
cXyz sp70;
|
||||
|
||||
dBgS_ObjGndChk_All spE0;
|
||||
cXyz sp64;
|
||||
|
||||
if (snow_p->field_0x6d88 <= g_env_light.mSnowCount) {
|
||||
snow_p->field_0x6d88 = g_env_light.mSnowCount;
|
||||
}
|
||||
|
||||
if (snow_p->field_0x6d88 == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
sp64 = player_p->current.pos;
|
||||
sp64.y += 100.0f;
|
||||
spE0.SetPos(&sp64);
|
||||
f32 temp_f19 = dComIfG_Bgsp().GroundCross(&spE0);
|
||||
|
||||
dKy_set_eyevect_calc2(camera_p, &spB8, 500.0f, 500.0f);
|
||||
dKy_set_eyevect_calc2(camera_p, &spAC, 1000.0f, 1000.0f);
|
||||
|
||||
if (snow_p->field_0x6d74.abs(camera_p->mLookat.mEye) > 1500.0f) {
|
||||
snow_p->field_0x6d88 = 0;
|
||||
}
|
||||
|
||||
snow_p->field_0x6d74 = camera_p->mLookat.mEye;
|
||||
spA0.z = 0.0f;
|
||||
spA0.y = 0.0f;
|
||||
spA0.x = 0.0f;
|
||||
|
||||
cXyz* temp_r21 = dKyw_get_wind_vec();
|
||||
f32 var_f20 = dKyw_get_wind_pow();
|
||||
if (g_env_light.field_0xe92 == 1) {
|
||||
var_f20 *= 1.2f;
|
||||
}
|
||||
|
||||
if (strcmp(dComIfGp_getStartStageName(), "R_SP127") == 0) {
|
||||
sp94.x = 0.3f;
|
||||
sp94.y = 0.0f;
|
||||
sp94.z = 0.0f;
|
||||
var_f20 = 0.3f;
|
||||
}
|
||||
|
||||
cXyz sp58;
|
||||
spC8.x = camera_p->mLookat.mCenter.x - camera_p->mLookat.mEye.x;
|
||||
spC8.y = 0.0f;
|
||||
spC8.z = camera_p->mLookat.mCenter.z - camera_p->mLookat.mEye.z;
|
||||
vectle_calc(&spC8, &sp58);
|
||||
|
||||
snow_p->field_0x6d84 =
|
||||
cM3d_VectorProduct2d(0.0f, 0.0f, -temp_r21->x, -temp_r21->z, sp58.x, sp58.z);
|
||||
|
||||
f32 temp_f20_1 = fabsf((temp_r21->x * sp58.x) + (temp_r21->z * sp58.z));
|
||||
snow_p->field_0x6d80 = ((1.0f - temp_f20_1) * var_f20) * (1.0f - fabsf(temp_r21->y + 0.3f));
|
||||
snow_p->field_0x6d80 *= fabsf(snow_p->field_0x6d84);
|
||||
|
||||
for (int i = snow_p->field_0x6d88 - 1; i >= 0; i--) {
|
||||
f32 temp_f27 = -(2.0f + cM_rndF(0.08f));
|
||||
f32 temp_f26 = 2.0f * (5.0f + (f32)(i & 15));
|
||||
|
||||
effect_p = &snow_p->mSnowEff[i];
|
||||
switch (snow_p->mSnowEff[i].mStatus) {
|
||||
case 0:
|
||||
effect_p->mWindSpeed = temp_f26;
|
||||
effect_p->mGravity = temp_f27;
|
||||
effect_p->mTimer = 0;
|
||||
effect_p->mBasePos.x = spAC.x + cM_rndFX(1100.0f);
|
||||
effect_p->mBasePos.y = spAC.y + 1100.0f;
|
||||
effect_p->mBasePos.z = spAC.z + cM_rndFX(1100.0f);
|
||||
effect_p->mPosition.x = spB8.x + cM_rndFX(550.0f);
|
||||
effect_p->mPosition.y = spB8.y + 550.0f;
|
||||
effect_p->mPosition.z = spB8.z + cM_rndFX(550.0f);
|
||||
effect_p->mScale = 0.0f;
|
||||
effect_p->mPosWaveX = cM_rndF(65536.0f);
|
||||
effect_p->mPosWaveZ = cM_rndF(65536.0f);
|
||||
effect_p->mStatus++;
|
||||
break;
|
||||
case 1:
|
||||
f32 target = cM_rndFX(0.08f);
|
||||
temp_r26 = &effect_p->mWindSpeed;
|
||||
target = effect_p->mWindSpeed - target;
|
||||
|
||||
cLib_addCalc(temp_r26, target, 0.5f, 0.1f, 0.01f);
|
||||
|
||||
cXyz sp4C;
|
||||
sp88 = sp94;
|
||||
temp_r25 = &effect_p->mPosition;
|
||||
if (camera_p->mLookat.mEye.abs(*temp_r25) < 500.0f &&
|
||||
effect_p->mPosition.y < temp_f19 + 250.0f)
|
||||
{
|
||||
f32 var_f1_3 = ((temp_f19 + 250.0f) - effect_p->mPosition.y) / 250.0f;
|
||||
if (var_f1_3 > 1.0f) {
|
||||
var_f1_3 = 1.0f;
|
||||
}
|
||||
|
||||
sp88.y = var_f1_3 * 0.45f;
|
||||
}
|
||||
|
||||
s16 wave_x = effect_p->mPosWaveX;
|
||||
s16 wave_z = effect_p->mPosWaveZ;
|
||||
|
||||
sp4C.x = cM_scos(wave_x) * cM_ssin(wave_z);
|
||||
sp4C.y = cM_ssin(wave_x);
|
||||
sp4C.z = cM_scos(wave_x) * cM_scos(wave_z);
|
||||
|
||||
effect_p->mPosition.x += sp88.x * *temp_r26;
|
||||
effect_p->mPosition.z += sp88.z * *temp_r26;
|
||||
effect_p->mPosition.y += effect_p->mGravity + (sp88.y * *temp_r26);
|
||||
|
||||
effect_p->mPosition.x += sp4C.x * 5.3f;
|
||||
effect_p->mPosition.y += sp4C.y * 5.3f;
|
||||
effect_p->mPosition.z += sp4C.z * 5.3f;
|
||||
|
||||
sp88 = sp94;
|
||||
if (camera_p->mLookat.mEye.abs(*temp_r25) < 500.0f &&
|
||||
effect_p->mBasePos.y < temp_f19 + 250.0f)
|
||||
{
|
||||
f32 var_f1_5 = ((temp_f19 + 250.0f) - effect_p->mBasePos.y) / 250.0f;
|
||||
if (var_f1_5 > 1.0f) {
|
||||
var_f1_5 = 1.0f;
|
||||
}
|
||||
|
||||
sp88.y = var_f1_5 * 0.35f;
|
||||
}
|
||||
|
||||
effect_p->mBasePos.x += sp88.x * *temp_r26;
|
||||
effect_p->mBasePos.z += sp88.z * *temp_r26;
|
||||
effect_p->mBasePos.y += effect_p->mGravity + (sp88.y * *temp_r26);
|
||||
|
||||
effect_p->mBasePos.x += sp4C.x * 5.3f;
|
||||
effect_p->mBasePos.y += sp4C.y * 5.3f;
|
||||
effect_p->mBasePos.z += sp4C.z * 5.3f;
|
||||
|
||||
cLib_addCalc(&effect_p->mPosWaveX, effect_p->mPosWaveX + cM_rndF(3000.0f), 0.25f,
|
||||
1500.0f, 0.001f);
|
||||
cLib_addCalc(&effect_p->mPosWaveZ, effect_p->mPosWaveZ + cM_rndF(3000.0f), 0.25f,
|
||||
1500.0f, 0.001f);
|
||||
|
||||
sp7C = effect_p->mPosition;
|
||||
f32 var_f1_6 = sp7C.abs(spB8);
|
||||
|
||||
if (effect_p->mTimer == 0) {
|
||||
if (var_f1_6 > 550.0f) {
|
||||
effect_p->mTimer = 10;
|
||||
*temp_r26 = temp_f26;
|
||||
effect_p->mGravity = temp_f27;
|
||||
|
||||
if (sp7C.abs(spB8) > 600.0f) {
|
||||
effect_p->mPosition.x = spB8.x + cM_rndFX(550.0f);
|
||||
effect_p->mPosition.y = spB8.y + cM_rndFX(550.0f);
|
||||
effect_p->mPosition.z = spB8.z + cM_rndFX(550.0f);
|
||||
} else {
|
||||
f32 temp_f26_2 = cM_rndFX(27.5f);
|
||||
get_vectle_calc(&sp7C, &spB8, &sp70);
|
||||
|
||||
effect_p->mPosition.x = spB8.x + sp70.x * (temp_f26_2 + 550.0f);
|
||||
effect_p->mPosition.y = spB8.y + sp70.y * (temp_f26_2 + 550.0f);
|
||||
effect_p->mPosition.z = spB8.z + sp70.z * (temp_f26_2 + 550.0f);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
effect_p->mTimer--;
|
||||
}
|
||||
|
||||
sp7C = effect_p->mBasePos;
|
||||
if (sp7C.abs(spAC) > 1100.0f) {
|
||||
if (sp7C.abs(spAC) > 1150.0f) {
|
||||
effect_p->mBasePos.x = spAC.x + cM_rndFX(1100.0f);
|
||||
effect_p->mBasePos.y = spAC.y + cM_rndFX(1100.0f);
|
||||
effect_p->mBasePos.z = spAC.z + cM_rndFX(1100.0f);
|
||||
} else {
|
||||
f32 temp_f26_3 = cM_rndFX(27.5f);
|
||||
get_vectle_calc(&sp7C, &spAC, &sp70);
|
||||
|
||||
effect_p->mBasePos.x = spAC.x + sp70.x * (temp_f26_3 + 1100.0f);
|
||||
effect_p->mBasePos.y = spAC.y + sp70.y * (temp_f26_3 + 1100.0f);
|
||||
effect_p->mBasePos.z = spAC.z + sp70.z * (temp_f26_3 + 1100.0f);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
sp7C = effect_p->mPosition;
|
||||
|
||||
f32 var_f26 = sp7C.abs(camera_p->mLookat.mEye) / 100.0f;
|
||||
if (var_f26 > 1.0) {
|
||||
var_f26 = 1.0;
|
||||
}
|
||||
|
||||
var_f26 *= 0.4f;
|
||||
|
||||
f32 var_f1_11 = sp7C.abs(spB8);
|
||||
if (var_f1_11 > 300.0f) {
|
||||
f32 var_f1_12 = (550.0f - var_f1_11) / 250.0f;
|
||||
if (var_f1_12 < 0.0f) {
|
||||
var_f1_12 = 0.0f;
|
||||
}
|
||||
|
||||
var_f26 *= var_f1_12;
|
||||
}
|
||||
|
||||
if (i > g_env_light.mSnowCount - 1) {
|
||||
cLib_addCalc(&effect_p->mScale, 0.0f, 0.2f, 0.1f, 0.01f);
|
||||
} else {
|
||||
effect_p->mScale = var_f26;
|
||||
}
|
||||
|
||||
if (i > g_env_light.mSnowCount - 1 && effect_p->mScale < 0.01f) {
|
||||
if (i == snow_p->field_0x6d88 - 1) {
|
||||
snow_p->field_0x6d88--;
|
||||
}
|
||||
}
|
||||
|
||||
if (strcmp(dComIfGp_getStartStageName(), "R_SP127") == 0) {
|
||||
if (sp7C.z > -340.0f) {
|
||||
effect_p->mScale = 0.0f;
|
||||
}
|
||||
} else if (strcmp(dComIfGp_getStartStageName(), "F_SP127") == 0) {
|
||||
if (sp7C.z > 9800.0f) {
|
||||
effect_p->mScale = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
sp7C = effect_p->mBasePos;
|
||||
|
||||
f32 var_f26_3 = sp7C.abs(camera_p->mLookat.mEye) / 100.0f;
|
||||
if (var_f26_3 > 1.0) {
|
||||
var_f26_3 = 1.0;
|
||||
}
|
||||
|
||||
var_f26_3 *= 0.38f;
|
||||
|
||||
f32 var_f1_14 = sp7C.abs(spAC);
|
||||
if (var_f1_14 > 850.0f) {
|
||||
f32 var_f1_15 = (1100.0f - var_f1_14) / 250.0f;
|
||||
if (var_f1_15 < 0.0f) {
|
||||
var_f1_15 = 0.0f;
|
||||
}
|
||||
|
||||
var_f26_3 *= var_f1_15;
|
||||
}
|
||||
|
||||
if (i > g_env_light.mSnowCount - 1) {
|
||||
cLib_addCalc(&effect_p->field_0x30, 0.0f, 0.2f, 0.1f, 0.01f);
|
||||
} else {
|
||||
effect_p->field_0x30 = var_f26_3;
|
||||
}
|
||||
|
||||
if (strcmp(dComIfGp_getStartStageName(), "R_SP127") == 0) {
|
||||
if (sp7C.z > -340.0f) {
|
||||
effect_p->field_0x30 = 0.0f;
|
||||
}
|
||||
} else if (strcmp(dComIfGp_getStartStageName(), "F_SP127") == 0) {
|
||||
if (sp7C.z > 9800.0f) {
|
||||
effect_p->field_0x30 = 0.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -2052,6 +2329,7 @@ asm void dKyr_snow_move() {
|
|||
#include "asm/d/kankyo/d_kankyo_rain/dKyr_snow_move__Fv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80061324-8006140C 05BC64 00E8+00 0/0 1/1 0/0 .text dKyr_star_init__Fv */
|
||||
// Matches without literals
|
||||
|
|
@ -2454,6 +2732,144 @@ SECTION_SDATA2 static f32 lit_8360 = 7000.0f;
|
|||
SECTION_SDATA2 static f32 lit_8361 = 3600.0f;
|
||||
|
||||
/* 80066048-8006653C 060988 04F4+00 0/0 1/1 0/0 .text dKyr_drawSibuki__FPA4_fPPUc */
|
||||
// stack issues, double branch weirdness
|
||||
#ifdef NONMATCHING
|
||||
void dKyr_drawSibuki(Mtx param_0, u8** param_1) {
|
||||
camera_class* temp_r30 = (camera_class*)dComIfGp_getCamera(0);
|
||||
dKankyo_rain_Packet* temp_r29 = g_env_light.mpRainPacket;
|
||||
|
||||
Mtx sp88;
|
||||
cXyz sp7C;
|
||||
cXyz sp70;
|
||||
cXyz sp64;
|
||||
cXyz sp58;
|
||||
|
||||
GXTexObj sp38;
|
||||
|
||||
cXyz sp2C;
|
||||
cXyz sp20;
|
||||
cXyz sp14;
|
||||
|
||||
if (g_env_light.mSnowCount == 0 && g_env_light.mCameraInWater == 0 &&
|
||||
dComIfGd_getView() != NULL)
|
||||
{
|
||||
MTXInverse(dComIfGd_getView()->mViewMtxNoTrans, sp88);
|
||||
if (strcmp(dComIfGp_getStartStageName(), "F_SP113") == 0 &&
|
||||
dComIfGp_roomControl_getStayNo() == 1)
|
||||
{
|
||||
if ((temp_r30->mLookat.mEye.z < 5100.0f ||
|
||||
(temp_r30->mLookat.mEye.x < -3250.0f && temp_r30->mLookat.mEye.y < -50.0f)) ||
|
||||
(temp_r30->mLookat.mEye.x < -2700.0f && temp_r30->mLookat.mEye.z > 15750.0f))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
f32 var_f1 = 255.0f;
|
||||
if (temp_r29->mStatus & 1) {
|
||||
var_f1 = 0.0f;
|
||||
} else if (temp_r29->mStatus & 2) {
|
||||
var_f1 = 200.0f;
|
||||
}
|
||||
|
||||
cLib_addCalc(&temp_r29->mSibukiAlpha, var_f1, 0.2f, 30.0f, 0.001f);
|
||||
dKy_set_eyevect_calc(temp_r30, &sp2C, 7000.0f, 4000.0f);
|
||||
dKyr_get_vectle_calc(&temp_r30->mLookat.mEye, &temp_r30->mLookat.mCenter, &sp20);
|
||||
|
||||
f32 var_f1_2 = 0.0f;
|
||||
if (sp20.y > var_f1_2) {
|
||||
if (sp20.y < 0.5f) {
|
||||
var_f1_2 = 1.0f - (sp20.y / 0.5f);
|
||||
}
|
||||
} else {
|
||||
var_f1_2 = 1.0f;
|
||||
}
|
||||
|
||||
GXColor sp10;
|
||||
sp10.r = 0xB4;
|
||||
sp10.g = 0xC8;
|
||||
sp10.b = 0xC8;
|
||||
sp10.a = temp_r29->mSibukiAlpha * var_f1_2;
|
||||
|
||||
dKyr_set_btitex(&sp38, (ResTIMG*)*(++param_1));
|
||||
GXSetNumChans(0);
|
||||
GXSetTevColor(GX_TEVREG0, sp10);
|
||||
GXSetTevColor(GX_TEVREG1, sp10);
|
||||
GXSetNumTexGens(1);
|
||||
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, GX_FALSE, 0x7D);
|
||||
GXSetNumTevStages(1);
|
||||
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
|
||||
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_C1, GX_CC_C0, GX_CC_TEXC, GX_CC_ZERO);
|
||||
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
||||
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_A0, GX_CA_TEXA, GX_CA_ZERO);
|
||||
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
||||
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_ONE, GX_LO_COPY);
|
||||
GXSetAlphaCompare(GX_GREATER, 0, GX_AOP_OR, GX_GREATER, 0);
|
||||
GXSetZMode(GX_TRUE, GX_GEQUAL, GX_FALSE);
|
||||
GXSetClipMode(GX_CLIP_DISABLE);
|
||||
GXSetNumIndStages(0);
|
||||
dKr_cullVtx_Set();
|
||||
GXLoadPosMtxImm(param_0, 0);
|
||||
GXSetCurrentMtx(0);
|
||||
|
||||
f32 var_f30;
|
||||
if (dComIfGd_getView() != NULL) {
|
||||
var_f30 = dComIfGd_getView()->mFovy / 45.0f;
|
||||
var_f30 *= var_f30;
|
||||
if (var_f30 >= 1.0f) {
|
||||
var_f30 = 1.0f;
|
||||
}
|
||||
} else {
|
||||
var_f30 = 0.2f;
|
||||
}
|
||||
|
||||
for (int i = 0; i < g_env_light.mRainCount >> 1; i++) {
|
||||
f32 temp_f27 = var_f30 * (15.0f + cM_rndF(10.0f));
|
||||
|
||||
f32 temp_f28 = cM_rndFX(3600.0f);
|
||||
f32 temp_f29 = cM_rndFX(1500.0f);
|
||||
f32 temp_f1 = cM_rndFX(3600.0f);
|
||||
|
||||
sp14.x = sp2C.x + temp_f28;
|
||||
sp14.y = sp2C.y + temp_f29;
|
||||
sp14.z = sp2C.z + temp_f1;
|
||||
|
||||
sp58.x = sp14.x - temp_f27;
|
||||
sp58.y = sp14.y;
|
||||
sp58.z = sp14.z - temp_f27;
|
||||
|
||||
sp64.x = sp14.x + temp_f27;
|
||||
sp64.y = sp14.y;
|
||||
sp64.z = sp14.z - temp_f27;
|
||||
|
||||
sp70.x = sp14.x + temp_f27;
|
||||
sp70.y = sp14.y;
|
||||
sp70.z = sp14.z + temp_f27;
|
||||
|
||||
sp7C.x = sp14.x - temp_f27;
|
||||
sp7C.y = sp14.y;
|
||||
sp7C.z = sp14.z + temp_f27;
|
||||
|
||||
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
|
||||
GXPosition3f32(sp58.x, sp58.y, sp58.z);
|
||||
GXTexCoord2s16(0, 0);
|
||||
|
||||
GXPosition3f32(sp64.x, sp64.y, sp64.z);
|
||||
GXTexCoord2s16(0x1FF, 0);
|
||||
|
||||
GXPosition3f32(sp70.x, sp70.y, sp70.z);
|
||||
GXTexCoord2s16(0x1FF, 0x1FF);
|
||||
|
||||
GXPosition3f32(sp7C.x, sp7C.y, sp7C.z);
|
||||
GXTexCoord2s16(0, 0x1FF);
|
||||
i_GXEnd();
|
||||
}
|
||||
|
||||
GXSetClipMode(GX_CLIP_ENABLE);
|
||||
J3DShape::resetVcdVatCache();
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -2462,6 +2878,7 @@ asm void dKyr_drawSibuki(Mtx param_0, u8** param_1) {
|
|||
#include "asm/d/kankyo/d_kankyo_rain/dKyr_drawSibuki__FPA4_fPPUc.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 8037A578-8037A578 006BD8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
|
|
@ -3279,6 +3696,20 @@ void dKyr_shstar_init() {}
|
|||
void dKyr_shstar_move() {}
|
||||
|
||||
/* 8006B8E4-8006B924 066224 0040+00 0/0 1/1 0/0 .text dKyr_odour_init__Fv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
void dKyr_odour_init() {
|
||||
dScnKy_env_light_c* env_light = i_dKy_getEnvlight();
|
||||
dKankyo_odour_Packet* odour_p = env_light->mpOdourPacket;
|
||||
|
||||
for (int i = 0; i < 2000; i++) {
|
||||
odour_p->mOdourEff[i].mStatus = 0;
|
||||
odour_p->mOdourEff[i].field_0x28 = 0.0f;
|
||||
odour_p->mOdourEff[i].field_0x2c = 0.0f;
|
||||
odour_p->mOdourEff[i].field_0x24 = 0.0f;
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -3287,6 +3718,7 @@ asm void dKyr_odour_init() {
|
|||
#include "asm/d/kankyo/d_kankyo_rain/dKyr_odour_init__Fv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 804525CC-804525D0 000BCC 0004+00 1/1 0/0 0/0 .sdata2 @10872 */
|
||||
|
|
@ -3409,11 +3841,11 @@ void dKyr_evil_init() {
|
|||
|
||||
/* 8006DA04-8006DA7C 068344 0078+00 0/0 1/1 0/0 .text dKyr_evil_move__Fv */
|
||||
void dKyr_evil_move() {
|
||||
dKankyo_evil_Packet* packet = g_env_light.mpEvilPacket;
|
||||
dKankyo_evil_Packet* evil_p = g_env_light.mpEvilPacket;
|
||||
cXyz vec = dKyw_get_wind_vecpow();
|
||||
|
||||
dBgS_GndChk gndchk;
|
||||
for (int i = 0; i < packet->mEffectNum; i++) {
|
||||
for (int i = 0; i < evil_p->mEffectNum; i++) {
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -3458,14 +3890,32 @@ SECTION_SDATA2 static f32 lit_11953 = 10000000.0f;
|
|||
|
||||
/* 8006E448-8006E6B0 068D88 0268+00 1/1 0/0 0/0 .text dKyr_near_bosslight_check__F4cXyz
|
||||
*/
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
static f32 dKyr_near_bosslight_check(cXyz param_0) {
|
||||
f32 dist = 10000000.0f;
|
||||
dScnKy_env_light_c* env_light = i_dKy_getEnvlight();
|
||||
|
||||
for (int i = 0; i < 6; i++) {
|
||||
if (env_light->field_0x0c18[i].field_0x26 == 1) {
|
||||
if (env_light->field_0x0c18[i].mPos.abs(param_0) < dist) {
|
||||
dist = env_light->field_0x0c18[i].mPos.abs(param_0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return dist;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void dKyr_near_bosslight_check(cXyz param_0) {
|
||||
static asm f32 dKyr_near_bosslight_check(cXyz param_0) {
|
||||
nofralloc
|
||||
#include "asm/d/kankyo/d_kankyo_rain/dKyr_near_bosslight_check__F4cXyz.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80450F48-80450F4C 000448 0004+00 1/1 0/0 0/0 .sbss rot$11958 */
|
||||
|
|
|
|||
Loading…
Reference in New Issue