From 01d9e0a514a946fe8f2e3534bf17898325a30904 Mon Sep 17 00:00:00 2001 From: hatal175 Date: Mon, 3 Jul 2023 22:04:51 +0300 Subject: [PATCH] d_event_manager OK, d_kankyo rain WIP (#360) * d_event_manager OK, d_kankyo rain WIP * Match createTimg --- Progress.md | 8 +- .../getEventData__16dEvent_manager_cFs.s | 26 - ...etHeartCnt__12dFile_info_cFP10dSv_save_c.s | 97 ---- asm/m_Do/m_Do_graphic/createTimg__FUsUsUl.s | 45 -- include/d/event/d_event_manager.h | 2 +- include/d/kankyo/d_kankyo.h | 6 + include/d/kankyo/d_kankyo_wether.h | 13 +- include/m_Do/m_Do_mtx.h | 4 + src/d/event/d_event_data.cpp | 10 +- src/d/event/d_event_manager.cpp | 126 ----- src/d/file/d_file_sel_info.cpp | 22 +- src/d/kankyo/d_kankyo_data.cpp | 14 - src/d/kankyo/d_kankyo_rain.cpp | 468 ++++++++++++++++-- src/d/kankyo/d_kankyo_wether.cpp | 10 +- src/m_Do/m_Do_graphic.cpp | 15 +- 15 files changed, 473 insertions(+), 393 deletions(-) delete mode 100644 asm/d/event/d_event_manager/getEventData__16dEvent_manager_cFs.s delete mode 100644 asm/d/file/d_file_sel_info/setHeartCnt__12dFile_info_cFP10dSv_save_c.s delete mode 100644 asm/m_Do/m_Do_graphic/createTimg__FUsUsUl.s diff --git a/Progress.md b/Progress.md index 4b2940e43d5..1d25b35060c 100644 --- a/Progress.md +++ b/Progress.md @@ -7,22 +7,22 @@ Section | Percentage | Decompiled (bytes) | Total (bytes) .init | 97.972973% | 9280 | 9472 .extab | 100.000000% | 96 | 96 .extabindex | 100.000000% | 96 | 96 -.text | 28.003550% | 1007160 | 3596544 +.text | 28.020678% | 1007776 | 3596544 .ctors | 100.000000% | 448 | 448 .dtors | 100.000000% | 32 | 32 .rodata | 100.000000% | 193856 | 193856 .data | 100.000000% | 197632 | 197632 .sdata | 100.000000% | 1408 | 1408 .sdata2 | 100.000000% | 20832 | 20832 -Total | 35.593453% | 1431096 | 4020672 +Total | 35.608774% | 1431712 | 4020672 ## Total Section | Percentage | Decompiled (bytes) | Total (bytes) ---|---|---|--- -main.dol | 35.593453% | 1431096 | 4020672 +main.dol | 35.608774% | 1431712 | 4020672 RELs | 33.680860% | 3873408 | 11500324 -Total | 34.176312% | 5304504 | 15520996 +Total | 34.180281% | 5305120 | 15520996 ## RELs diff --git a/asm/d/event/d_event_manager/getEventData__16dEvent_manager_cFs.s b/asm/d/event/d_event_manager/getEventData__16dEvent_manager_cFs.s deleted file mode 100644 index 2c8b0ae9278..00000000000 --- a/asm/d/event/d_event_manager/getEventData__16dEvent_manager_cFs.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_800474BC: -/* 800474BC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800474C0 7C 08 02 A6 */ mflr r0 -/* 800474C4 90 01 00 14 */ stw r0, 0x14(r1) -/* 800474C8 7C 86 07 34 */ extsh r6, r4 -/* 800474CC 2C 06 FF FF */ cmpwi r6, -1 -/* 800474D0 40 82 00 0C */ bne lbl_800474DC -/* 800474D4 38 60 00 00 */ li r3, 0 -/* 800474D8 48 00 00 2C */ b lbl_80047504 -lbl_800474DC: -/* 800474DC 38 06 00 01 */ addi r0, r6, 1 -/* 800474E0 30 00 FF FF */ addic r0, r0, -1 -/* 800474E4 7C A0 01 10 */ subfe r5, r0, r0 -/* 800474E8 7C C0 46 70 */ srawi r0, r6, 8 -/* 800474EC 7C 05 28 78 */ andc r5, r0, r5 -/* 800474F0 38 00 FF FF */ li r0, -1 -/* 800474F4 41 82 00 08 */ beq lbl_800474FC -/* 800474F8 54 80 06 3E */ clrlwi r0, r4, 0x18 -lbl_800474FC: -/* 800474FC 7C 04 03 78 */ mr r4, r0 -/* 80047500 4B FF FF 55 */ bl getEventData__16dEvent_manager_cFsi -lbl_80047504: -/* 80047504 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80047508 7C 08 03 A6 */ mtlr r0 -/* 8004750C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80047510 4E 80 00 20 */ blr diff --git a/asm/d/file/d_file_sel_info/setHeartCnt__12dFile_info_cFP10dSv_save_c.s b/asm/d/file/d_file_sel_info/setHeartCnt__12dFile_info_cFP10dSv_save_c.s deleted file mode 100644 index 8f2b604f132..00000000000 --- a/asm/d/file/d_file_sel_info/setHeartCnt__12dFile_info_cFP10dSv_save_c.s +++ /dev/null @@ -1,97 +0,0 @@ -lbl_80192AA0: -/* 80192AA0 94 21 FF 80 */ stwu r1, -0x80(r1) -/* 80192AA4 7C 08 02 A6 */ mflr r0 -/* 80192AA8 90 01 00 84 */ stw r0, 0x84(r1) -/* 80192AAC 39 61 00 80 */ addi r11, r1, 0x80 -/* 80192AB0 48 1C F7 11 */ bl _savegpr_22 -/* 80192AB4 7C 78 1B 78 */ mr r24, r3 -/* 80192AB8 7C 99 23 78 */ mr r25, r4 -/* 80192ABC A0 84 00 02 */ lhz r4, 2(r4) -/* 80192AC0 54 80 04 3E */ clrlwi r0, r4, 0x10 -/* 80192AC4 38 60 00 05 */ li r3, 5 -/* 80192AC8 7F 80 1B D6 */ divw r28, r0, r3 -/* 80192ACC 7C 04 1B D6 */ divw r0, r4, r3 -/* 80192AD0 7C 00 19 D6 */ mullw r0, r0, r3 -/* 80192AD4 7F 60 20 51 */ subf. r27, r0, r4 -/* 80192AD8 41 82 00 08 */ beq lbl_80192AE0 -/* 80192ADC 3B 9C 00 01 */ addi r28, r28, 1 -lbl_80192AE0: -/* 80192AE0 3B 40 00 00 */ li r26, 0 -/* 80192AE4 3A E0 00 00 */ li r23, 0 -/* 80192AE8 3A C0 00 00 */ li r22, 0 -/* 80192AEC 57 64 10 3A */ slwi r4, r27, 2 -/* 80192AF0 3C 60 80 3C */ lis r3, amariheartTex@ha /* 0x803BB548@ha */ -/* 80192AF4 38 03 B5 48 */ addi r0, r3, amariheartTex@l /* 0x803BB548@l */ -/* 80192AF8 7C 60 22 14 */ add r3, r0, r4 -/* 80192AFC 3B C3 FF FC */ addi r30, r3, -4 -/* 80192B00 3C 60 80 3C */ lis r3, l_htag@ha /* 0x803BB4A8@ha */ -/* 80192B04 3B E3 B4 A8 */ addi r31, r3, l_htag@l /* 0x803BB4A8@l */ -/* 80192B08 3B A1 00 08 */ addi r29, r1, 8 -lbl_80192B0C: -/* 80192B0C 80 78 00 0C */ lwz r3, 0xc(r24) -/* 80192B10 7C 9F B2 14 */ add r4, r31, r22 -/* 80192B14 80 A4 00 00 */ lwz r5, 0(r4) -/* 80192B18 80 C4 00 04 */ lwz r6, 4(r4) -/* 80192B1C 81 83 00 00 */ lwz r12, 0(r3) -/* 80192B20 81 8C 00 3C */ lwz r12, 0x3c(r12) -/* 80192B24 7D 89 03 A6 */ mtctr r12 -/* 80192B28 4E 80 04 21 */ bctrl -/* 80192B2C 7C 7D B9 2E */ stwx r3, r29, r23 -/* 80192B30 A0 79 00 00 */ lhz r3, 0(r25) -/* 80192B34 38 00 00 05 */ li r0, 5 -/* 80192B38 7C 03 03 D6 */ divw r0, r3, r0 -/* 80192B3C 7C 1A 00 00 */ cmpw r26, r0 -/* 80192B40 40 80 00 90 */ bge lbl_80192BD0 -/* 80192B44 38 00 00 01 */ li r0, 1 -/* 80192B48 7C 7D B8 2E */ lwzx r3, r29, r23 -/* 80192B4C 98 03 00 B0 */ stb r0, 0xb0(r3) -/* 80192B50 7C 1A E0 00 */ cmpw r26, r28 -/* 80192B54 40 80 00 58 */ bge lbl_80192BAC -/* 80192B58 2C 1B 00 00 */ cmpwi r27, 0 -/* 80192B5C 41 82 00 2C */ beq lbl_80192B88 -/* 80192B60 38 1C FF FF */ addi r0, r28, -1 -/* 80192B64 7C 1A 00 00 */ cmpw r26, r0 -/* 80192B68 40 82 00 20 */ bne lbl_80192B88 -/* 80192B6C 80 9E 00 00 */ lwz r4, 0(r30) -/* 80192B70 38 A0 00 00 */ li r5, 0 -/* 80192B74 81 83 00 00 */ lwz r12, 0(r3) -/* 80192B78 81 8C 01 14 */ lwz r12, 0x114(r12) -/* 80192B7C 7D 89 03 A6 */ mtctr r12 -/* 80192B80 4E 80 04 21 */ bctrl -/* 80192B84 48 00 00 58 */ b lbl_80192BDC -lbl_80192B88: -/* 80192B88 3C 80 80 39 */ lis r4, d_file_d_file_sel_info__stringBase0@ha /* 0x803948B8@ha */ -/* 80192B8C 38 84 48 B8 */ addi r4, r4, d_file_d_file_sel_info__stringBase0@l /* 0x803948B8@l */ -/* 80192B90 38 84 00 21 */ addi r4, r4, 0x21 -/* 80192B94 38 A0 00 00 */ li r5, 0 -/* 80192B98 81 83 00 00 */ lwz r12, 0(r3) -/* 80192B9C 81 8C 01 14 */ lwz r12, 0x114(r12) -/* 80192BA0 7D 89 03 A6 */ mtctr r12 -/* 80192BA4 4E 80 04 21 */ bctrl -/* 80192BA8 48 00 00 34 */ b lbl_80192BDC -lbl_80192BAC: -/* 80192BAC 3C 80 80 39 */ lis r4, d_file_d_file_sel_info__stringBase0@ha /* 0x803948B8@ha */ -/* 80192BB0 38 84 48 B8 */ addi r4, r4, d_file_d_file_sel_info__stringBase0@l /* 0x803948B8@l */ -/* 80192BB4 38 84 00 21 */ addi r4, r4, 0x21 -/* 80192BB8 38 A0 00 00 */ li r5, 0 -/* 80192BBC 81 83 00 00 */ lwz r12, 0(r3) -/* 80192BC0 81 8C 01 14 */ lwz r12, 0x114(r12) -/* 80192BC4 7D 89 03 A6 */ mtctr r12 -/* 80192BC8 4E 80 04 21 */ bctrl -/* 80192BCC 48 00 00 10 */ b lbl_80192BDC -lbl_80192BD0: -/* 80192BD0 38 00 00 00 */ li r0, 0 -/* 80192BD4 7C 7D B8 2E */ lwzx r3, r29, r23 -/* 80192BD8 98 03 00 B0 */ stb r0, 0xb0(r3) -lbl_80192BDC: -/* 80192BDC 3B 5A 00 01 */ addi r26, r26, 1 -/* 80192BE0 2C 1A 00 14 */ cmpwi r26, 0x14 -/* 80192BE4 3A F7 00 04 */ addi r23, r23, 4 -/* 80192BE8 3A D6 00 08 */ addi r22, r22, 8 -/* 80192BEC 41 80 FF 20 */ blt lbl_80192B0C -/* 80192BF0 39 61 00 80 */ addi r11, r1, 0x80 -/* 80192BF4 48 1C F6 19 */ bl _restgpr_22 -/* 80192BF8 80 01 00 84 */ lwz r0, 0x84(r1) -/* 80192BFC 7C 08 03 A6 */ mtlr r0 -/* 80192C00 38 21 00 80 */ addi r1, r1, 0x80 -/* 80192C04 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_graphic/createTimg__FUsUsUl.s b/asm/m_Do/m_Do_graphic/createTimg__FUsUsUl.s deleted file mode 100644 index 9ea4e136458..00000000000 --- a/asm/m_Do/m_Do_graphic/createTimg__FUsUsUl.s +++ /dev/null @@ -1,45 +0,0 @@ -lbl_80007D9C: -/* 80007D9C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80007DA0 7C 08 02 A6 */ mflr r0 -/* 80007DA4 90 01 00 24 */ stw r0, 0x24(r1) -/* 80007DA8 39 61 00 20 */ addi r11, r1, 0x20 -/* 80007DAC 48 35 A4 29 */ bl _savegpr_27 -/* 80007DB0 7C 7B 1B 78 */ mr r27, r3 -/* 80007DB4 7C 9C 23 78 */ mr r28, r4 -/* 80007DB8 7C BD 2B 78 */ mr r29, r5 -/* 80007DBC 38 C0 00 00 */ li r6, 0 -/* 80007DC0 38 E0 00 00 */ li r7, 0 -/* 80007DC4 48 35 5E 59 */ bl GXGetTexBufferSize -/* 80007DC8 3B E3 00 20 */ addi r31, r3, 0x20 -/* 80007DCC 7F E3 FB 78 */ mr r3, r31 -/* 80007DD0 38 80 00 20 */ li r4, 0x20 -/* 80007DD4 38 A0 00 00 */ li r5, 0 -/* 80007DD8 48 2C 66 9D */ bl alloc__7JKRHeapFUliP7JKRHeap -/* 80007DDC 7C 60 1B 78 */ mr r0, r3 -/* 80007DE0 7C 1E 03 79 */ or. r30, r0, r0 -/* 80007DE4 40 82 00 0C */ bne lbl_80007DF0 -/* 80007DE8 38 60 00 00 */ li r3, 0 -/* 80007DEC 48 00 00 40 */ b lbl_80007E2C -lbl_80007DF0: -/* 80007DF0 38 80 00 00 */ li r4, 0 -/* 80007DF4 7F E5 FB 78 */ mr r5, r31 -/* 80007DF8 48 26 7B 65 */ bl cLib_memSet__FPviUl -/* 80007DFC 9B BE 00 00 */ stb r29, 0(r30) -/* 80007E00 38 00 00 00 */ li r0, 0 -/* 80007E04 98 1E 00 01 */ stb r0, 1(r30) -/* 80007E08 B3 7E 00 02 */ sth r27, 2(r30) -/* 80007E0C B3 9E 00 04 */ sth r28, 4(r30) -/* 80007E10 38 00 00 01 */ li r0, 1 -/* 80007E14 98 1E 00 14 */ stb r0, 0x14(r30) -/* 80007E18 98 1E 00 15 */ stb r0, 0x15(r30) -/* 80007E1C 98 1E 00 18 */ stb r0, 0x18(r30) -/* 80007E20 38 00 00 20 */ li r0, 0x20 -/* 80007E24 90 1E 00 1C */ stw r0, 0x1c(r30) -/* 80007E28 7F C3 F3 78 */ mr r3, r30 -lbl_80007E2C: -/* 80007E2C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80007E30 48 35 A3 F1 */ bl _restgpr_27 -/* 80007E34 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80007E38 7C 08 03 A6 */ mtlr r0 -/* 80007E3C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80007E40 4E 80 00 20 */ blr diff --git a/include/d/event/d_event_manager.h b/include/d/event/d_event_manager.h index 3993688b761..a2bf7475591 100644 --- a/include/d/event/d_event_manager.h +++ b/include/d/event/d_event_manager.h @@ -81,7 +81,7 @@ public: bool dataLoaded() { return mDataLoaded; } int flagCheck(int flag) { return mFlags.flagCheck(flag); } - static int getIndexCompositId(s16 param_0) { return param_0 != -1 ? (u8)param_0 : -1; } + inline static s16 getIndexCompositId(s16 param_0) { return param_0 != -1 ? (s16)(param_0 & 0xff) : (s16)-1; } static int getTypeCompositId(s16 param_0) { return param_0 == -1 ? 0 : param_0 >> 8; } static s16 makeCompositId(s16 a, int b) { return a | (b << 8); } diff --git a/include/d/kankyo/d_kankyo.h b/include/d/kankyo/d_kankyo.h index f8d93aab24d..a1655a0773c 100644 --- a/include/d/kankyo/d_kankyo.h +++ b/include/d/kankyo/d_kankyo.h @@ -567,5 +567,11 @@ void dKy_plight_priority_set(LIGHT_INFLUENCE* param_0); void dKy_tevstr_init(dKy_tevstr_c* param_0, s8 param_1, u8 param_2); SND_INFLUENCE* dKy_Sound_get(); void dKy_plight_cut(LIGHT_INFLUENCE* param_0); +int dKy_rain_check(); +void dKy_set_actcol_ratio(f32 ratio); +void dKy_set_bgcol_ratio(f32 ratio); +void dKy_set_fogcol_ratio(f32 ratio); +void dKy_set_vrboxcol_ratio(f32 ratio); +f32 dKy_get_parcent(f32 param_0, f32 param_1, f32 param_2); #endif /* D_KANKYO_D_KANKYO_H */ diff --git a/include/d/kankyo/d_kankyo_wether.h b/include/d/kankyo/d_kankyo_wether.h index 2a99d418b5d..2242f483861 100644 --- a/include/d/kankyo/d_kankyo_wether.h +++ b/include/d/kankyo/d_kankyo_wether.h @@ -42,11 +42,7 @@ public: /* 0x38 */ u8* mpResMoon_A_A01; /* 0x3C */ u8* mpResMoon_A_A02; /* 0x40 */ u8* mpResMoon_A_A03; - /* 0x44 */ int field_0x44; - /* 0x48 */ int field_0x48; - /* 0x4C */ int field_0x4c; - /* 0x50 */ int field_0x50; - /* 0x54 */ int field_0x54; + /* 0x44 */ u32 field_0x44[5]; /* 0x58 */ int field_0x58; /* 0x5C */ f32 field_0x5c; /* 0x60 */ f32 field_0x60; @@ -54,7 +50,7 @@ public: /* 0x68 */ f32 field_0x68; /* 0x6C */ f32 field_0x6c; /* 0x70 */ GXColor mColor; - /* 0x74 */ u8 field_0x74[4]; + /* 0x74 */ GXColor field_0x74; }; // Size: 0x78 class dKankyo_sunlenz_Packet : public J3DPacket { @@ -68,10 +64,11 @@ public: /* 0x1C */ u8* mpResRing_A; /* 0x20 */ u8* mpResLenz; /* 0x24 */ cXyz mPositions[8]; - /* 0x84 */ u8 field_0x84[8]; + /* 0x84 */ f32 field_0x84; + /* 0x88 */ f32 field_0x88; /* 0x8C */ f32 field_0x8c; /* 0x90 */ f32 field_0x90; - /* 0x94 */ u8 field_0x94[4]; + /* 0x94 */ f32 field_0x94; /* 0x98 */ f32 field_0x98; /* 0x9C */ u8 field_0x9c[2]; /* 0x9E */ bool mDrawLenzInSky; diff --git a/include/m_Do/m_Do_mtx.h b/include/m_Do/m_Do_mtx.h index c45e5fd3344..12c00c59210 100644 --- a/include/m_Do/m_Do_mtx.h +++ b/include/m_Do/m_Do_mtx.h @@ -35,6 +35,10 @@ inline void cMtx_concat(const Mtx a, const Mtx b, Mtx ab) { PSMTXConcat(a, b, ab); } +inline void cMtx_scale(Mtx m, f32 x, f32 y, f32 z) { + PSMTXScale(m, x, y, z); +} + inline void mDoMtx_multVec(Mtx m, const Vec* src, Vec* dst) { PSMTXMultVec(m, src, dst); } diff --git a/src/d/event/d_event_data.cpp b/src/d/event/d_event_data.cpp index 89eb2ec5947..a75bc1533c5 100644 --- a/src/d/event/d_event_data.cpp +++ b/src/d/event/d_event_data.cpp @@ -306,10 +306,10 @@ static int dEvDt_Next_Stage(int index, int wipe_type) { point = stgInfo->mStart; roomNo = (s8)stgInfo->mRoom; layer = dStage_sclsInfo_getSceneLayer(stgInfo); - wipe = (s8)dStage_sclsInfo_getWipe(stgInfo); + wipe = (s8)stgInfo->mWipe; wipe_time = dStage_sclsInfo_getWipeTime(stgInfo); - if (wipe == 15) { + if (stgInfo->mWipe == 15) { wipe = 0; } @@ -1237,6 +1237,7 @@ SECTION_DEAD static char const* const stringBase_80379F18 = "OffsetAngY"; SECTION_SDATA2 static f32 lit_5057 = 10.0f; /* 80045878-80045AFC 0401B8 0284+00 1/1 0/0 0/0 .text specialProcPackage__12dEvDtStaff_cFv */ +// Matches without literals #ifdef NONMATCHING void dEvDtStaff_c::specialProcPackage() { dMsgObject_c* msgObj = dComIfGp_getMsgObjectClass(); @@ -1267,9 +1268,10 @@ void dEvDtStaff_c::specialProcPackage() { } // should not save event from g_dComIfG_gameInfo to register - u8* demoData = (u8*)i_dComIfGp_getEvent().getStbDemoData(fileName); + dComIfG_play_c& info = g_dComIfG_gameInfo.play; + u8* demoData = (u8*)info.getEvent().getStbDemoData(fileName); dDemo_c::start(demoData, offsetPos, offsetAngY); - dComIfGp_event_setCullRate(10.0f); + info.getEvent().setCullRate(10.0f); int* eventFlagP = dComIfGp_evmng_getMyIntegerP(staffId, "EventFlag"); if (eventFlagP != NULL) { diff --git a/src/d/event/d_event_manager.cpp b/src/d/event/d_event_manager.cpp index 4fea4c76949..a17180d08a8 100644 --- a/src/d/event/d_event_manager.cpp +++ b/src/d/event/d_event_manager.cpp @@ -11,7 +11,6 @@ #include "d/com/d_com_inf_game.h" #include "d/d_camera.h" #include "d/d_stage.h" -#include "dol2asm.h" #include "dolphin/types.h" #include "f_op/f_op_actor_mng.h" #include "global.h" @@ -21,123 +20,10 @@ // Forward References: // -extern "C" void init__18dEvent_exception_cFv(); -extern "C" void setStartDemo__18dEvent_exception_cFi(); -extern "C" void getEventName__18dEvent_exception_cFv(); -extern "C" void getSubstance__16dEvent_manager_cFP11dEvDtData_ci(); -extern "C" void __ct__16dEvent_manager_cFv(); -extern "C" void __ct__11dEvDtBase_cFv(); -extern "C" void create__16dEvent_manager_cFv(); -extern "C" void setObjectArchive__16dEvent_manager_cFPc(); -extern "C" void demoInit__16dEvent_manager_cFv(); -extern "C" void roomInit__16dEvent_manager_cFi(); -extern "C" void roomFinish__16dEvent_manager_cFi(); -extern "C" void orderStartDemo__16dEvent_manager_cFv(); -extern "C" void remove__16dEvent_manager_cFv(); -extern "C" static void extraOnObjectCallBack__FP10fopAc_ac_cPv(); -extern "C" static void extraOffObjectCallBack__FP10fopAc_ac_cPv(); -extern "C" static void allOffObjectCallBack__FP10fopAc_ac_cPv(); -extern "C" void startProc__16dEvent_manager_cFP12dEvDtEvent_c(); -extern "C" void closeProc__16dEvent_manager_cFP12dEvDtEvent_c(); -extern "C" void endProc__16dEvent_manager_cFsi(); -extern "C" void Sequencer__16dEvent_manager_cFv(); -extern "C" void Experts__16dEvent_manager_cFv(); -extern "C" void getEventData__16dEvent_manager_cFsi(); -extern "C" void getEventData__16dEvent_manager_cFs(); -extern "C" void getEventIdx__16dEvent_manager_cFPCcUcl(); -extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cUc(); -extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cPCcUc(); -extern "C" void isMapToolCamera__16dEvent_manager_cFUcl(); -extern "C" void order__16dEvent_manager_cFs(); -extern "C" void startCheck__16dEvent_manager_cFs(); -extern "C" void startCheckOld__16dEvent_manager_cFPCc(); -extern "C" void endCheck__16dEvent_manager_cFs(); -extern "C" void endCheckOld__16dEvent_manager_cFPCc(); -extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci(); -extern "C" void getIsAddvance__16dEvent_manager_cFi(); -extern "C" static void dEvmng_strcmp__FPCcPc(); -extern "C" void getMyActIdx__16dEvent_manager_cFiPCPCciii(); -extern "C" void getMyNowCutName__16dEvent_manager_cFi(); -extern "C" void getMyDataP__16dEvent_manager_cFiPCci(); -extern "C" void getMySubstanceP__16dEvent_manager_cFiPCci(); -extern "C" void getMySubstanceNum__16dEvent_manager_cFiPCc(); -extern "C" void cutEnd__16dEvent_manager_cFi(); -extern "C" void getEventPrio__16dEvent_manager_cFP10fopAc_ac_cs(); -extern "C" void issueStaff__16dEvent_manager_cFPCc(); -extern "C" void cancelStaff__16dEvent_manager_cFPCc(); -extern "C" void setGoal__16dEvent_manager_cFP4cXyz(); -extern "C" void getGoal__16dEvent_manager_cFv(); -extern "C" void getRunEventName__16dEvent_manager_cFv(); -extern "C" static void findShutterCallBack__FP10fopAc_ac_cPv(); -extern "C" void specialCast_Shutter__16dEvent_manager_cFsi(); -extern "C" void specialCast__16dEvent_manager_cFPCci(); -extern "C" static void dEv_talkman_get_action__Fi(); -extern "C" void ChkPresentEnd__16dEvent_manager_cFv(); -extern "C" void checkStartDemo__16dEvent_manager_cFv(); -extern "C" extern char const* const d_event_d_event_manager__stringBase0; - // // External References: // -extern "C" void fopAcIt_Judge__FPFPvPv_PvPv(); -extern "C" void fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs(); -extern "C" void fopAcM_orderMapToolAutoNextEvent__FP10fopAc_ac_cUcsUsUsUs(); -extern "C" void fopAcM_searchFromName4Event__FPCcs(); -extern "C" void getStatusRoomDt__20dStage_roomControl_cFi(); -extern "C" void dComIfG_getStageRes__FPCc(); -extern "C" void dComIfG_getRoomArcName__Fi(); -extern "C" void dComIfGp_SelectWarpPt_get__Fv(); -extern "C" void __dt__11dEvDtBase_cFv(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void dEv_defaultSkipProc__FPvi(); -extern "C" void dEv_defaultSkipZev__FPvi(); -extern "C" void dEv_defaultSkipStb__FPvi(); -extern "C" void setSkipProc__14dEvt_control_cFPvPFPvi_ii(); -extern "C" void onSkipFade__14dEvt_control_cFv(); -extern "C" void getStageEventDt__14dEvt_control_cFv(); -extern "C" void sceneChange__14dEvt_control_cFi(); -extern "C" void convPId__14dEvt_control_cFUi(); -extern "C" void searchMapEventData__14dEvt_control_cFUcl(); -extern "C" void runningEventID__14dEvt_control_cFs(); -extern "C" void setPt2__14dEvt_control_cFPv(); -extern "C" void setPtI__14dEvt_control_cFPv(); -extern "C" void setPtD__14dEvt_control_cFPv(); -extern "C" void flagSet__11dEvDtFlag_cFi(); -extern "C" void init__11dEvDtFlag_cFv(); -extern "C" void finishCheck__12dEvDtEvent_cFv(); -extern "C" void specialStaffProc__12dEvDtEvent_cFP12dEvDtStaff_c(); -extern "C" void init__12dEvDtStaff_cFv(); -extern "C" void init__11dEvDtBase_cFv(); -extern "C" void init__11dEvDtBase_cFPci(); -extern "C" void advanceCut__11dEvDtBase_cFP12dEvDtEvent_c(); -extern "C" void EventRecoverNotime__9dCamera_cFv(); -extern "C" void dCam_getBody__Fv(); -extern "C" void Center__9dCamera_cFv(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void setDemoName__11Z2StatusMgrFPc(); -extern "C" void __construct_array(); -extern "C" void _savegpr_20(); -extern "C" void _savegpr_22(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_20(); -extern "C" void _restgpr_22(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" u8 mDemoArcName__20dStage_roomControl_c[10 + 2 /* padding */]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; - BOOL daPy_py_c::checkNowWolf() { return dComIfGp_getLinkPlayer()->i_checkWolf(); } @@ -629,26 +515,14 @@ dEvDtEvent_c* dEvent_manager_c::getEventData(s16 param_0, int idx) { /* 800474BC-80047514 041DFC 0058+00 9/9 3/3 4/4 .text getEventData__16dEvent_manager_cFs */ -#ifdef NONMATCHING dEvDtEvent_c* dEvent_manager_c::getEventData(s16 eventCompositId) { if (eventCompositId == -1) { return NULL; } else { - // extsh instead of mr here return getEventData(getIndexCompositId(eventCompositId), getTypeCompositId(eventCompositId)); } } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dEvDtEvent_c* dEvent_manager_c::getEventData(s16 eventCompositId) { - nofralloc -#include "asm/d/event/d_event_manager/getEventData__16dEvent_manager_cFs.s" -} -#pragma pop -#endif /* 80047514-80047698 041E54 0184+00 3/3 8/8 3/3 .text getEventIdx__16dEvent_manager_cFPCcUcl */ s16 dEvent_manager_c::getEventIdx(char const* eventName, u8 mapToolID, s32 roomNo) { diff --git a/src/d/file/d_file_sel_info.cpp b/src/d/file/d_file_sel_info.cpp index c1c243a5613..d3ca3c1fcde 100644 --- a/src/d/file/d_file_sel_info.cpp +++ b/src/d/file/d_file_sel_info.cpp @@ -261,11 +261,9 @@ int dFile_info_c::setSaveData(dSv_save_c* save, int checksumValid, u8 data_num) } /* 80192AA0-80192C08 18D3E0 0168+00 1/1 0/0 0/0 .text setHeartCnt__12dFile_info_cFP10dSv_save_c */ -// close -#ifdef NONMATCHING void dFile_info_c::setHeartCnt(dSv_save_c* save) { u16 life = save->getPlayer().getPlayerStatusA().getLife(); - s32 count = (u8)(life) / 5; + s32 count = (life & 0xffff) / 5; s32 quarter_count = life % 5; if (quarter_count != 0) { count++; @@ -278,7 +276,7 @@ void dFile_info_c::setHeartCnt(dSv_save_c* save) { if (i < save->getPlayer().getPlayerStatusA().getMaxLife() / 5) { heartP[i]->show(); if (i < count) { - if (quarter_count != 0 && i == --count) { + if (quarter_count != 0 && i == count - 1) { heartP[i]->changeTexture(amariheartTex[quarter_count - 1], 0); } else { heartP[i]->changeTexture("tt_heart_00.bti", 0); @@ -291,16 +289,6 @@ void dFile_info_c::setHeartCnt(dSv_save_c* save) { } } } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dFile_info_c::setHeartCnt(dSv_save_c* param_0) { - nofralloc -#include "asm/d/file/d_file_sel_info/setHeartCnt__12dFile_info_cFP10dSv_save_c.s" -} -#pragma pop -#endif /* 80192C08-80192C70 18D548 0068+00 1/1 0/0 0/0 .text setSaveDate__12dFile_info_cFP10dSv_save_c */ void dFile_info_c::setSaveDate(dSv_save_c* save) { @@ -352,14 +340,16 @@ SECTION_SDATA2 static u8 lit_4001[4] = { }; /* 80192D9C-80192E88 18D6DC 00EC+00 1/0 0/0 0/0 .text draw__16dDlst_FileInfo_cFv */ -// close +// vtable order issue #ifdef NONMATCHING void dDlst_FileInfo_c::draw() { Mtx m; J2DGrafContext* ctx = dComIfGp_getCurrentGrafPort(); if (mBasePane != NULL) { - MtxP glbMtx = mBasePane->getGlbMtx(); + MtxP glbMtx2 = mBasePane->getGlbMtx(); + // Fake match + MtxP glbMtx = (MtxP)&glbMtx2[0][0]; PSMTXScale(m, mBasePane->getWidth() / field_0x10->getWidth(), mBasePane->getHeight() / field_0x10->getHeight(), 1.0f); PSMTXConcat(glbMtx, m, glbMtx); diff --git a/src/d/kankyo/d_kankyo_data.cpp b/src/d/kankyo/d_kankyo_data.cpp index d30985334f2..d9c21852160 100644 --- a/src/d/kankyo/d_kankyo_data.cpp +++ b/src/d/kankyo/d_kankyo_data.cpp @@ -23,20 +23,6 @@ struct dKyd_l_vr_box_data_struct { // Forward References: // -extern "C" void dKyd_dmpalet_getp__Fv(); -extern "C" void dKyd_dmpselect_getp__Fv(); -extern "C" void dKyd_dmenvr_getp__Fv(); -extern "C" void dKyd_dmvrbox_getp__Fv(); -extern "C" void dKyd_schejule_getp__Fv(); -extern "C" void dKyd_schejule_boss_getp__Fv(); -extern "C" void dKyd_xfog_table_set__FUc(); -extern "C" void dKyd_maple_col_getp__Fv(); -extern "C" void dKyd_darkworld_tbl_getp__Fv(); -extern "C" void dKyd_light_size_tbl_getp__Fv(); -extern "C" void dKyd_light_tw_size_tbl_getp__Fv(); -extern "C" void dKyd_BloomInf_tbl_getp__Fi(); -extern "C" extern char const* const d_kankyo_d_kankyo_data__stringBase0; - // // Declarations: // diff --git a/src/d/kankyo/d_kankyo_rain.cpp b/src/d/kankyo/d_kankyo_rain.cpp index 3d3b2e607de..6190cf95c0c 100644 --- a/src/d/kankyo/d_kankyo_rain.cpp +++ b/src/d/kankyo/d_kankyo_rain.cpp @@ -12,6 +12,9 @@ #include "dol2asm.h" #include "dolphin/types.h" #include "f_op/f_op_actor_mng.h" +#include "m_Do/m_Do_lib.h" +#include "SSystem/SComponent/c_math.h" +#include "JSystem/JKernel/JKRHeap.h" // // Forward References: @@ -303,7 +306,7 @@ static asm void dKy_set_eyevect_calc2(camera_class* param_0, Vec* param_1, f32 p SECTION_SDATA2 static f32 lit_3992 = 0.125f; /* 804521C4-804521C8 0007C4 0004+00 9/9 0/0 0/0 .sdata2 @3993 */ -SECTION_SDATA2 static f32 lit_3993 = 1.0f / 100.0f; +SECTION_SDATA2 static f32 lit_3993 = 0.01f; /* 804521C8-804521D0 0007C8 0008+00 15/15 0/0 0/0 .sdata2 @3995 */ SECTION_SDATA2 static f64 lit_3995 = 4503601774854144.0 /* cast s32 to float */; @@ -342,7 +345,7 @@ static void dKyr_set_btitex(GXTexObj* i_obj, ResTIMG* i_img) { /* ############################################################################################## */ /* 804521D0-804521D4 0007D0 0004+00 4/4 0/0 0/0 .sdata2 @4103 */ -SECTION_SDATA2 static f32 lit_4103 = 9.999999747378752e-05f; +SECTION_SDATA2 static f32 lit_4103 = 0.0001; /* 804521D4-804521D8 0007D4 0004+00 4/4 0/0 0/0 .sdata2 @4104 */ SECTION_SDATA2 static f32 lit_4104 = 4000.0f; @@ -378,6 +381,54 @@ SECTION_SDATA2 static f32 lit_4113 = 110.0f; SECTION_SDATA2 static f32 lit_4114 = 4100.0f; /* 8005BA48-8005BED8 056388 0490+00 0/0 1/1 0/0 .text dKyr_lenzflare_move__Fv */ +// Matches with literals +#ifdef NONMATCHING +void dKyr_lenzflare_move() { + dKankyo_sun_Packet* sunPacket = g_env_light.mpSunPacket; + dKankyo_sunlenz_Packet* sunLenzPacket = g_env_light.mpSunLenzPacket; + camera_class* iVar6 = dComIfGp_getCamera(0); + + cXyz cStack_48; + cXyz cStack_54; + cXyz local_60; + cXyz cStack_6c; + if (sunPacket->field_0x5c < 0.0001) { + return; + } + dKy_set_eyevect_calc(iVar6, &cStack_48, 4000.0f, 4000.0f); + dKyr_get_vectle_calc(&cStack_48, sunPacket->mPos, &local_60); + sunLenzPacket->mPositions[0] = sunPacket->mPos[0]; + sunLenzPacket->mPositions[1] = sunPacket->mPos[0]; + cXyz local_78; + cXyz cStack_84; + cXyz local_90; + mDoLib_project(sunLenzPacket->mPositions, &cStack_84); + local_90.x = 304.0f; + local_90.y = 224.0f; + local_90.z = 0.0054931640625f; // Maybe 45 / 8192 + dKyr_get_vectle_calc(&local_90, &cStack_84, &local_78); + sunLenzPacket->field_0x94 = cM_atan2s(local_78.x, local_78.y); + sunLenzPacket->field_0x94 *= 0.0054931640625f; + sunLenzPacket->field_0x94 += 180.0f; + dKyr_get_vectle_calc(&iVar6->mLookat.mEye, &iVar6->mLookat.mCenter, &cStack_6c); + + for (int i = 2; i < 8; i++) { + if (i == 2) { + f32 fVar3 = local_60.abs(cStack_6c); + f32 fVar4 = 250.0f + 600.0f * fVar3; + sunLenzPacket->mPositions[i].x = sunPacket->mPos[0].x - local_60.x * fVar4 * i; + sunLenzPacket->mPositions[i].y = sunPacket->mPos[0].y - local_60.y * fVar4 * i; + sunLenzPacket->mPositions[i].z = sunPacket->mPos[0].z - local_60.z * fVar4 * i; + } else { + f32 fVar3 = local_60.abs(cStack_6c); + f32 fVar4 = 250.0f + 110.0f * fVar3; + sunLenzPacket->mPositions[i].x = sunPacket->mPos[0].x - (4100.0f * local_60.x + local_60.x * fVar4 * i); + sunLenzPacket->mPositions[i].y = sunPacket->mPos[0].y - (4100.0f * local_60.y + local_60.y * fVar4 * i); + sunLenzPacket->mPositions[i].z = sunPacket->mPos[0].z - (4100.0f * local_60.z + local_60.z * fVar4 * i); + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -386,20 +437,26 @@ asm void dKyr_lenzflare_move() { #include "asm/d/kankyo/d_kankyo_rain/dKyr_lenzflare_move__Fv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80452208-8045220C 000808 0004+00 3/3 0/0 0/0 .sdata2 @4126 */ SECTION_SDATA2 static f32 lit_4126 = 285.0f; /* 8005BED8-8005BF08 056818 0030+00 1/1 0/0 0/0 .text dKyr_moon_arrival_check__Fv */ -static bool dKyr_moon_arrival_check() { - return g_env_light.mDaytime > lit_4126 || g_env_light.mDaytime < 67.5f; +static int dKyr_moon_arrival_check() { + int rv = 0; + if (g_env_light.mDaytime > lit_4126 || g_env_light.mDaytime < 67.5f) { + rv = 1; + } + + return rv; } /* ############################################################################################## */ /* 8037A4C0-8037A4E8 006B20 0028+00 1/1 0/0 0/0 .rodata sun_chkpnt$4155 */ -SECTION_RODATA static f32 const sun_chkpnt[10] = { - 0.0f, 0.0f, -10.0f, -20.0f, 10.0f, 20.0f, -20.0f, 10.0f, 20.0f, -10.0f, +SECTION_RODATA static f32 const sun_chkpnt[5][2] = { + {0.0f, 0.0f}, {-10.0f, -20.0f}, {10.0f, 20.0f}, {-20.0f, 10.0f}, {20.0f, -10.0f}, }; COMPILER_STRIP_GATE(0x8037A4C0, &sun_chkpnt); @@ -430,7 +487,7 @@ static f32 S_parcent_bak; /* 80450EEC-80450EF0 -00001 0004+00 2/2 0/0 0/0 .sbss None */ /* 80450EEC 0002+00 data_80450EEC None */ /* 80450EEE 0002+00 data_80450EEE S_rot_work1$7554 */ -static u8 struct_80450EEC[4]; +static s8 struct_80450EEC[4]; /* 80452210-80452214 000810 0004+00 4/4 0/0 0/0 .sdata2 @4353 */ SECTION_SDATA2 static f32 lit_4353 = 8000.0f; @@ -442,13 +499,13 @@ SECTION_SDATA2 static f32 lit_4354 = 1.0f; SECTION_SDATA2 static f32 lit_4355 = 77.5f; /* 8045221C-80452220 00081C 0004+00 5/5 0/0 0/0 .sdata2 @4356 */ -SECTION_SDATA2 static f32 lit_4356 = 1.0f / 20.0f; +SECTION_SDATA2 static f32 lit_4356 = 0.05f; /* 80452220-80452224 000820 0004+00 14/14 0/0 0/0 .sdata2 @4357 */ -SECTION_SDATA2 static f32 lit_4357 = 1.0f / 10.0f; +SECTION_SDATA2 static f32 lit_4357 = 0.1f; /* 80452224-80452228 000824 0004+00 2/2 0/0 0/0 .sdata2 @4358 */ -SECTION_SDATA2 static f32 lit_4358 = 9.999999747378752e-06f; +SECTION_SDATA2 static f32 lit_4358 = 0.00001f; /* 80452228-8045222C 000828 0004+00 2/2 0/0 0/0 .sdata2 @4359 */ SECTION_SDATA2 static f32 lit_4359 = 458.0f; @@ -463,19 +520,19 @@ SECTION_SDATA2 static f32 lit_4361 = 1000000000.0f; SECTION_SDATA2 static f32 lit_4362 = 450.0f; /* 80452238-8045223C 000838 0004+00 10/10 0/0 0/0 .sdata2 @4363 */ -SECTION_SDATA2 static f32 lit_4363 = 0.0010000000474974513f; +SECTION_SDATA2 static f32 lit_4363 = 0.001f; /* 8045223C-80452240 00083C 0004+00 18/18 0/0 0/0 .sdata2 @4364 */ SECTION_SDATA2 static f32 lit_4364 = 0.5f; /* 80452240-80452244 000840 0004+00 13/13 0/0 0/0 .sdata2 @4365 */ -SECTION_SDATA2 static f32 lit_4365 = 1.0f / 5.0f; +SECTION_SDATA2 static f32 lit_4365 = 0.2f; /* 80452244-80452248 000844 0004+00 11/11 0/0 0/0 .sdata2 @4366 */ -SECTION_SDATA2 static f32 lit_4366 = 3.0f / 10.0f; +SECTION_SDATA2 static f32 lit_4366 = 0.3f; /* 80452248-8045224C 000848 0004+00 8/8 0/0 0/0 .sdata2 @4367 */ -SECTION_SDATA2 static f32 lit_4367 = 4.0f / 5.0f; +SECTION_SDATA2 static f32 lit_4367 = 0.8f; /* 8045224C-80452250 00084C 0004+00 12/12 0/0 0/0 .sdata2 @4368 */ SECTION_SDATA2 static f32 lit_4368 = 255.0f; @@ -508,6 +565,242 @@ SECTION_SDATA2 static f32 lit_4376 = 21678.0f; SECTION_SDATA2 static f64 lit_4379 = 4503599627370496.0 /* cast u32 to float */; /* 8005BF08-8005CC5C 056848 0D54+00 0/0 1/1 0/0 .text dKyr_sun_move__Fv */ +// regalloc +#ifdef NONMATCHING +void dKyr_sun_move() { + dKankyo_sun_Packet* sunPacket = g_env_light.mpSunPacket; + dKankyo_sunlenz_Packet* sunLenzPacket = g_env_light.mpSunLenzPacket; + cXyz local_90; + cXyz cStack_9c; + f32 dVar20; + camera_class* pCamera = dComIfGp_getCamera(0); + f32 dVar19 = 0.0f; + if (struct_80450EEC[0] == 0) { + S_parcent_bak = dVar19; + struct_80450EEC[0] = 1; + } + u8 r22 = 0; + u8 r21 = 0; + s32 r20 = 0; + u32 stType = dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()); + if ((g_env_light.mBaseLightInfluence.mColor.r == 0) && (stType != 2)) { + dKyr_get_vectle_calc(&pCamera->mLookat.mEye, &g_env_light.mBaseLightInfluence.mPosition, &local_90); + } else { + dKyr_get_vectle_calc(&pCamera->mLookat.mEye, &g_env_light.mSunPos2, &local_90); + } + + sunPacket->mPos[0].x = pCamera->mLookat.mEye.x + 8000.0f * local_90.x; + sunPacket->mPos[0].y = pCamera->mLookat.mEye.y + 8000.0f * local_90.y; + sunPacket->mPos[0].z = pCamera->mLookat.mEye.z + 8000.0f * local_90.z; + + f32 fVar4 = (sunPacket->mPos[0].y - pCamera->mLookat.mEye.y) / 8000.0f; + if (fVar4 < 0.0f) { + fVar4 = 0.0f; + } + + if (fVar4 >= 1.0f) { + fVar4 = 1.0f; + } + + fVar4 = 1.0f - fVar4; + fVar4 *= fVar4; + dVar20 = 1.0f - fVar4; + + if (i_dComIfGp_getStage()->getStagInfo() != 0) { + dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()); + } + + if (sunPacket->field_0x28) { + sunPacket->field_0x28--; + } + + sunPacket->field_0x29 = 0; + if (g_env_light.mDaytime > 77.5f && g_env_light.mDaytime < 285.0f && dKy_rain_check() < 0x14 && + strcmp(dComIfGp_getStartStageName(), "F_SP200") != 0 && + strcmp(dComIfGp_getStartStageName(), "D_MN09B") != 0) { + f32 local_f8 = 0.0f; + cLib_addCalc( + &sunPacket->field_0x60, + 1.0f, + 1.0f / 20.0f, + 1.0f / 10.0f, + 0.00001f); + + if (pCamera != 0) { + local_f8 = pCamera->mCamera.TrimHeight(); + } + cXyz cStack_a8; + mDoLib_project(sunPacket->mPos, &cStack_a8); + for (int i = 0; i < 5; i++) { + cXyz local_b4 = cStack_a8; + local_b4.x -= sun_chkpnt[i][0]; + local_b4.y -= sun_chkpnt[i][1]; + if (local_b4.x > 0.0f && + local_b4.x < 608.0f && + local_b4.y > local_f8 && + local_b4.y < 458.0f - local_f8) + { + if ((sunPacket->field_0x44)[i] >= 0x00FFFFFF){ + r22++; + if (i == 0) { + r21++; + } + } + dComIfGd_peekZ(local_b4.x, local_b4.y, sunPacket->field_0x44 + i); + } else { + sunPacket->field_0x44[i] = 0; + r20++; + } + } + if (r20 != 0 && r22 != 0 && r21 != 0) { + r21 = 1; + r22 = 5; + } + if (r22 != 0) { + if (sunPacket->field_0x28 < 5) { + sunPacket->field_0x28 += 2; + } + sunPacket->field_0x29 = 1; + } + sunLenzPacket->field_0x84 = sunLenzPacket->field_0x8c; + sunLenzPacket->field_0x88 = sunLenzPacket->field_0x90; + sunLenzPacket->field_0x8c = 1000000000.0f; + sunLenzPacket->field_0x90 = 0.0f; + cXyz local_cc; + local_cc.x = 304.0f; + local_cc.y = 224.0f; + local_cc.z = 0.0f; + sunLenzPacket->field_0x98 = local_cc.abs(cStack_a8); + sunLenzPacket->field_0x98 /= 450.0f; + if (sunLenzPacket->field_0x98 > 1.0f) { + sunLenzPacket->field_0x98 = 1.0f; + } + sunLenzPacket->field_0x98 = 1.0f - sunLenzPacket->field_0x98; + dVar19 = sunLenzPacket->field_0x98 * sunLenzPacket->field_0x98; + sunLenzPacket->field_0x98 = 1.0f - dVar19; + } else { + cLib_addCalc(&sunPacket->field_0x60, 0.0f, 0.1f, 0.05f, 0.001f); + r22 = 0; + sunPacket->field_0x28 = 0; + sunPacket->field_0x29 = 0; + } + + + if (g_env_light.mColpatWeather != 0 || g_env_light.mSnowCount > 10) { + r21 = 0; + r22 = 0; + } + + if (stType == 2) { + r21 = 0; + r22 = 0; + } + + if (r21 != 0) { + if (r22 == 4) { + cLib_addCalc(&sunPacket->field_0x5c, 1.0f, 0.5f, 0.5f, 0.01f); + } else { + cLib_addCalc(&sunPacket->field_0x5c, 1.0f, 0.2f, 0.3f, 0.001f); + } + } else { + if (r22 < 1) { + cLib_addCalc(&sunPacket->field_0x5c, 0.0f, 0.5f, 0.5f, 0.001f); + } else { + cLib_addCalc(&sunPacket->field_0x5c, 0.0f, 0.2f, 0.3f, 0.001f); + } + } + + if (sunPacket->field_0x5c <= 0.0f) { + g_env_light.mpSunLenzPacket->mDrawLenzInSky = 1; + } else { + g_env_light.mpSunLenzPacket->mDrawLenzInSky = 0; + } + + if (local_90.y > 0.0f && g_env_light.mpSunLenzPacket->mDrawLenzInSky == 0) { + if (dStage_stagInfo_GetArg0(i_dComIfGp_getStage()->getStagInfo()) != 0) { + f32 dVar3; + if (S_parcent_bak < dVar19) { + dVar3 = dVar19 - S_parcent_bak; + } else { + dVar3 = S_parcent_bak - dVar19;; + } + if (dVar3 < 0.3f) { + dKy_set_actcol_ratio(1.0f - dVar19 * sunPacket->field_0x5c); + dKy_set_bgcol_ratio(1.0f - dVar19 * sunPacket->field_0x5c); + dKy_set_fogcol_ratio(1.0f - dVar20 * (dVar19 * sunPacket->field_0x5c)); + dKy_set_vrboxcol_ratio(1.0f - 0.8f * (dVar20 * (dVar19 * sunPacket->field_0x5c))); + } + S_parcent_bak = dVar19; + } + } + + if (g_env_light.mDaytime < 255.0f && g_env_light.mColpatWeather == 0) { + cLib_addCalc(&sunPacket->field_0x6c, 1.0f, 0.1f, 0.01f, 0.0001f); + } else { + cLib_addCalc(&sunPacket->field_0x6c, 0.0f, 0.5f, 0.1f, 0.001f); + } + + if (g_env_light.mDaytime < 180.0f) { + f32 fVar7; + if (g_env_light.mDaytime < 90.0f) { + fVar7 = 0.0f; + } else if (g_env_light.mDaytime < 105.0f) { + fVar7 = dKy_get_parcent(105.0f, 90.0f, g_env_light.mDaytime); + } else { + fVar7 = 1.0f; + } + + sunPacket->mColor.r = (f32)sun_color[0].r + fVar7 * ((f32)sun_color[1].r - (f32)sun_color[0].r); + sunPacket->mColor.g = (f32)sun_color[0].g + fVar7 * ((f32)sun_color[1].g - (f32)sun_color[0].g); + sunPacket->mColor.b = (f32)sun_color[0].b + fVar7 * ((f32)sun_color[1].b - (f32)sun_color[0].b); + + sunPacket->field_0x74.r = (f32)sun_color2[0].r + fVar7 * ((f32)sun_color2[1].r - (f32)sun_color2[0].r); + sunPacket->field_0x74.g = (f32)sun_color2[0].g + fVar7 * ((f32)sun_color2[1].g - (f32)sun_color2[0].g); + sunPacket->field_0x74.b = (f32)sun_color2[0].b + fVar7 * ((f32)sun_color2[1].b - (f32)sun_color2[0].b); + } else { + f32 fVar7; + if (g_env_light.mDaytime < 247.5f) { + fVar7 = 1.0f; + } else if (g_env_light.mDaytime < 270.0f) { + fVar7 = 1.0f - dKy_get_parcent(270.0f, 247.5f, g_env_light.mDaytime); + } else { + fVar7 = 0.0f; + } + + sunPacket->mColor.r = (f32)sun_color[2].r + fVar7 * ((f32)sun_color[1].r - (f32)sun_color[2].r); + sunPacket->mColor.g = (f32)sun_color[2].g + fVar7 * ((f32)sun_color[1].g - (f32)sun_color[2].g); + sunPacket->mColor.b = (f32)sun_color[2].b + fVar7 * ((f32)sun_color[1].b - (f32)sun_color[2].b); + + sunPacket->field_0x74.r = (f32)sun_color2[2].r + fVar7 * ((f32)sun_color2[1].r - (f32)sun_color2[2].r); + sunPacket->field_0x74.g = (f32)sun_color2[2].g + fVar7 * ((f32)sun_color2[1].g - (f32)sun_color2[2].g); + sunPacket->field_0x74.b = (f32)sun_color2[2].b + fVar7 * ((f32)sun_color2[1].b - (f32)sun_color2[2].b); + } + + if (dKyr_moon_arrival_check()) { + f32 fVar6 = (sunPacket->mPos[0].y - pCamera->mLookat.mEye.y) / -8000.0f; + fVar6 *= fVar6; + fVar6 *= 6.0f; + + if (fVar6 > 1.0f) { + fVar6 = 1.0f; + } + + cLib_addCalc(&sunPacket->field_0x68, fVar6, 0.2f, 0.01f, 0.001f); + } else { + cLib_addCalc(&sunPacket->field_0x68, 0.0f, 0.2f, 0.01f, 0.001f); + } + + if (g_env_light.mCameraInWater == 0 && g_env_light.mDaytime > 255.0f && sunPacket->field_0x60 >= 0.2f) { + cXyz local_d8; + dKyr_get_vectle_calc(&pCamera->mLookat.mEye, &g_env_light.mSunPos2, &local_90); + local_d8.x = pCamera->mLookat.mEye.x + 30160.0f * local_90.x; + local_d8.y = pCamera->mLookat.mEye.y + 30160.0f * local_90.y; + local_d8.z = pCamera->mLookat.mEye.z + 30160.0f * local_90.z; + local_d8.y -= 21678.0f; + sunPacket->field_0x58 = dComIfGp_particle_set(sunPacket->field_0x58, 0x11c, &local_d8, 0, 0); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -516,6 +809,7 @@ asm void dKyr_sun_move() { #include "asm/d/kankyo/d_kankyo_rain/dKyr_sun_move__Fv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 8037A578-8037A578 006BD8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -525,6 +819,31 @@ SECTION_DEAD static char const* const stringBase_8037A588 = "Always"; #pragma pop /* 8005CC5C-8005CDA8 05759C 014C+00 0/0 1/1 0/0 .text dKyr_rain_init__Fv */ +// Matches with literals +#ifdef NONMATCHING +void dKyr_rain_init() { + camera_class* pCamera = g_dComIfG_gameInfo.play.mCameraInfo[0].mCamera; + g_env_light.mpRainPacket->mpTex = (u8*)dComIfG_getObjectRes("Always", 0x4a); + g_env_light.mpRainPacket->mpTex2 = (u8*)dComIfG_getObjectRes("Always", 0x57); + g_env_light.mpRainPacket->mCamEyePos = pCamera->mLookat.mEye; + g_env_light.mpRainPacket->mCamCenterPos = pCamera->mLookat.mCenter; + g_env_light.mpRainPacket->mCenterDeltaMul = 0.0f; + g_env_light.mpRainPacket->field_0x3700 = 0.0f; + g_env_light.mpRainPacket->mSibukiAlpha = 0.0f; + g_env_light.mpRainPacket->mOverheadFade = 0.0f; + g_env_light.mpRainPacket->mFwdFade1 = 0.0f; + g_env_light.mpRainPacket->mFwdFade2 = 0.0f; + g_env_light.mpRainPacket->mStatus = 0.0f; + g_env_light.mpRainPacket->mCenterDelta.x = 0.0f; + g_env_light.mpRainPacket->mCenterDelta.y = 0.0f; + g_env_light.mpRainPacket->mCenterDelta.z = 0.0f; + + for (int i = 0; i < 250; i++) { + g_env_light.mpRainPacket->mRainEff[i].mStatus = 0; + } + g_env_light.mpRainPacket->mRainCount = 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -533,6 +852,7 @@ asm void dKyr_rain_init() { #include "asm/d/kankyo/d_kankyo_rain/dKyr_rain_init__Fv.s" } #pragma pop +#endif /* 8005CDA8-8005CDD0 0576E8 0028+00 1/1 0/0 0/0 .text rain_bg_chk__FP19dKankyo_rain_Packeti */ static void rain_bg_chk(dKankyo_rain_Packet* i_packet, int i_idx) { @@ -596,6 +916,40 @@ static asm void overhead_bg_chk() { /* 8005CF78-8005D18C 0578B8 0214+00 1/1 0/0 0/0 .text forward_overhead_bg_chk__FP4cXyzf */ +// Matches with literals +#ifdef NONMATCHING +static int forward_overhead_bg_chk(cXyz* param_0, f32 param_1) { + camera_class* iVar7 = dComIfGp_getCamera(0); + u32 r30 = 0; + dBgS_ObjGndChk_All adStack_88; + dBgS_RoofChk adStack_d8; + cXyz local_e8; + cXyz local_f4; + dKyr_get_vectle_calc(&iVar7->mLookat.mEye, &iVar7->mLookat.mCenter, &local_f4); + local_e8.x = iVar7->mLookat.mEye.x + local_f4.x * param_1; + local_e8.y = iVar7->mLookat.mEye.y + local_f4.y * param_1; + local_e8.z = iVar7->mLookat.mEye.z + local_f4.z * param_1; + local_e8.y = 50.0f + iVar7->mLookat.mEye.y; + *param_0 = local_e8; + adStack_d8.i_SetPos(local_e8); + if (1000000000.0f != dComIfG_Bgsp().RoofChk(&adStack_d8)) { + r30 = 1; + if (strcmp(dComIfGp_getStartStageName(), "F_SP122") == 0) { + if (dStage_roomControl_c::getStayNo() == 17) { + return 0; + } + } + } + + local_e8.y += 10000.0f; + adStack_88.SetPos(&local_e8); + + if (dComIfG_Bgsp().GroundCross(&adStack_88) > 50.0f + iVar7->mLookat.mEye.y) { + r30 = 1; + } + return r30; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -604,6 +958,7 @@ static asm void forward_overhead_bg_chk(cXyz* param_0, f32 param_1) { #include "asm/d/kankyo/d_kankyo_rain/forward_overhead_bg_chk__FP4cXyzf.s" } #pragma pop +#endif /* ############################################################################################## */ /* 8037A578-8037A578 006BD8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -870,6 +1225,34 @@ asm void dKyr_housi_move() { #pragma pop /* 8005FBDC-8005FD48 05A51C 016C+00 0/0 1/1 0/0 .text dKyr_snow_init__Fv */ +// Matches with literals +#ifdef NONMATCHING +void dKyr_snow_init() { + camera_class* pCamera = g_dComIfG_gameInfo.play.mCameraInfo[0].mCamera; + g_env_light.mpSnowPacket = new (32) dKankyo_snow_Packet(); + + if (g_env_light.mpSnowPacket == NULL) { + return; + } + + g_env_light.mpSnowPacket->mpTex = (u8*)dComIfG_getObjectRes("Always", 0x56); + + for (int i = 0; i < 500; i++) { + g_env_light.mpSnowPacket->mSnowEff[i].mStatus = 0; + } + + g_env_light.mpSnowPacket->field_0x6d88 = 0; + g_env_light.mpSnowPacket->field_0x6d74 = pCamera->mLookat.mEye; + g_env_light.mpSnowPacket->field_0x6d80 = 0.0f; + g_env_light.mpSnowPacket->field_0x6d84 = 0.0f; + g_env_light.mpSnowPacket->field_0x6d8a = 0; + g_env_light.mpSnowPacket->field_0x6d8c = 0; + g_env_light.mpSnowPacket->field_0x6d90 = 0; + g_env_light.mpSnowPacket->field_0x6d91 = 0; + g_env_light.mpSnowPacket->field_0x6d92 = 0; + g_env_light.mpSnowPacket->field_0x6d93 = 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -878,6 +1261,7 @@ asm void dKyr_snow_init() { #include "asm/d/kankyo/d_kankyo_rain/dKyr_snow_init__Fv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 8037A578-8037A578 006BD8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -943,6 +1327,21 @@ asm void dKyr_snow_move() { #pragma pop /* 80061324-8006140C 05BC64 00E8+00 0/0 1/1 0/0 .text dKyr_star_init__Fv */ +// Matches without literals +#ifdef NONMATCHING +void dKyr_star_init() { + camera_class* pCamera = g_dComIfG_gameInfo.play.mCameraInfo[0].mCamera; + g_env_light.mpStarPacket = new (32) dKankyo_star_Packet(); + + if (g_env_light.mpStarPacket == NULL) { + return; + } + + g_env_light.mpStarPacket->field_0x10 = (u8*)dComIfG_getObjectRes("Always", 0x4a); + g_env_light.mpStarPacket->mEffect[0].field_0x28 = 1.0f; + g_env_light.mpStarPacket->mEffectNum = 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -951,6 +1350,7 @@ asm void dKyr_star_init() { #include "asm/d/kankyo/d_kankyo_rain/dKyr_star_init__Fv.s" } #pragma pop +#endif /* 8006140C-80061438 05BD4C 002C+00 0/0 1/1 0/0 .text dKyr_star_move__Fv */ void dKyr_star_move() { @@ -1124,7 +1524,7 @@ SECTION_SDATA2 static f32 lit_7211 = 0.01745329238474369f; SECTION_SDATA2 static f32 lit_7212 = 11000.0f; /* 80452468-8045246C 000A68 0004+00 2/2 0/0 0/0 .sdata2 @7213 */ -SECTION_SDATA2 static f32 lit_7213 = 23.0f / 10.0f; +SECTION_SDATA2 static f32 lit_7213 = 2.3f; /* 80062B4C-80063670 05D48C 0B24+00 2/1 0/0 0/0 .text dKyr_draw_rev_moon__FPA4_fPPUc */ #pragma push @@ -1209,7 +1609,7 @@ static u8 struct_80450EF0[4]; static u8 data_80450EF4[4]; /* 8045247C-80452480 000A7C 0004+00 1/1 0/0 0/0 .sdata2 @7882 */ -SECTION_SDATA2 static f32 lit_7882 = 29.0f / 10.0f; +SECTION_SDATA2 static f32 lit_7882 = 2.9f; /* 80452480-80452484 000A80 0004+00 2/2 0/0 0/0 .sdata2 @7883 */ SECTION_SDATA2 static f32 lit_7883 = 34.0f; @@ -1218,22 +1618,22 @@ SECTION_SDATA2 static f32 lit_7883 = 34.0f; SECTION_SDATA2 static f32 lit_7884 = 160.0f; /* 80452488-8045248C 000A88 0004+00 1/1 0/0 0/0 .sdata2 @7885 */ -SECTION_SDATA2 static f32 lit_7885 = 43.0f / 50.0f; +SECTION_SDATA2 static f32 lit_7885 = 0.86f; /* 8045248C-80452490 000A8C 0004+00 1/1 0/0 0/0 .sdata2 @7886 */ -SECTION_SDATA2 static f32 lit_7886 = 123.0f / 50.0f; +SECTION_SDATA2 static f32 lit_7886 = 2.46f; /* 80452490-80452494 000A90 0004+00 2/2 0/0 0/0 .sdata2 @7887 */ -SECTION_SDATA2 static f32 lit_7887 = 11.0f / 10.0f; +SECTION_SDATA2 static f32 lit_7887 = 1.1f; /* 80452494-80452498 000A94 0004+00 1/1 0/0 0/0 .sdata2 @7888 */ -SECTION_SDATA2 static f32 lit_7888 = 1.0f / 25.0f; +SECTION_SDATA2 static f32 lit_7888 = 0.04f; /* 80452498-8045249C 000A98 0004+00 1/1 0/0 0/0 .sdata2 @7889 */ -SECTION_SDATA2 static f32 lit_7889 = 3.0f / 40.0f; +SECTION_SDATA2 static f32 lit_7889 = 0.075f; /* 8045249C-804524A0 000A9C 0004+00 1/1 0/0 0/0 .sdata2 @7890 */ -SECTION_SDATA2 static f32 lit_7890 = 22.0f / 25.0f; +SECTION_SDATA2 static f32 lit_7890 = 0.88f; /* 804524A0-804524A4 000AA0 0004+00 1/1 0/0 0/0 .sdata2 @7891 */ SECTION_SDATA2 static f32 lit_7891 = 30.599998474121094f; @@ -1242,7 +1642,7 @@ SECTION_SDATA2 static f32 lit_7891 = 30.599998474121094f; SECTION_SDATA2 static f32 lit_7892 = 140.0f; /* 804524A8-804524AC 000AA8 0004+00 1/1 0/0 0/0 .sdata2 @7893 */ -SECTION_SDATA2 static f32 lit_7893 = 17.0f / 20.0f; +SECTION_SDATA2 static f32 lit_7893 = 0.85f; /* 804524AC-804524B0 000AAC 0004+00 2/2 0/0 0/0 .sdata2 @7894 */ SECTION_SDATA2 static f32 lit_7894 = 60.0f; @@ -1368,7 +1768,7 @@ SECTION_SDATA2 static f32 lit_8919 = 123.0f; SECTION_SDATA2 static f32 lit_8920 = 8.0f; /* 804524E4-804524E8 000AE4 0004+00 1/1 0/0 0/0 .sdata2 @8921 */ -SECTION_SDATA2 static f32 lit_8921 = -9.0f / 10.0f; +SECTION_SDATA2 static f32 lit_8921 = -0.9f; /* 804524E8-804524EC 000AE8 0004+00 1/1 0/0 0/0 .sdata2 @8922 */ SECTION_SDATA2 static f32 lit_8922 = 213.0f; @@ -1622,10 +2022,10 @@ static f32 rot_9421; static u8 struct_80450F1C[4]; /* 80452554-80452558 000B54 0004+00 2/2 0/0 0/0 .sdata2 @9833 */ -SECTION_SDATA2 static f32 lit_9833 = 13.0f / 20.0f; +SECTION_SDATA2 static f32 lit_9833 = 0.65f; /* 80452558-8045255C 000B58 0004+00 1/1 0/0 0/0 .sdata2 @9834 */ -SECTION_SDATA2 static f32 lit_9834 = 7.0f / 25.0f; +SECTION_SDATA2 static f32 lit_9834 = 0.28f; /* 8045255C-80452560 000B5C 0004+00 1/1 0/0 0/0 .sdata2 @9835 */ SECTION_SDATA2 static f32 lit_9835 = 540.0f; @@ -1663,10 +2063,10 @@ SECTION_SDATA2 static u32 lit_9851 = 0xFFFFFFFF; SECTION_SDATA2 static u32 lit_9852 = 0xFFFFFFFF; /* 80452574-80452578 000B74 0004+00 2/2 0/0 0/0 .sdata2 @10030 */ -SECTION_SDATA2 static f32 lit_10030 = 11.0f / 20.0f; +SECTION_SDATA2 static f32 lit_10030 = 0.55f; /* 80452578-8045257C 000B78 0004+00 2/2 0/0 0/0 .sdata2 @10031 */ -SECTION_SDATA2 static f32 lit_10031 = 49.0f / 100.0f; +SECTION_SDATA2 static f32 lit_10031 = 0.49f; /* 8006950C-8006A090 063E4C 0B84+00 0/0 1/1 0/0 .text drawCloudShadow__FPA4_fPPUc */ #pragma push @@ -1695,31 +2095,31 @@ static u8 data_80450F2C[4]; SECTION_SDATA2 static f32 lit_10593 = 240.0f; /* 80452580-80452584 000B80 0004+00 1/1 0/0 0/0 .sdata2 @10594 */ -SECTION_SDATA2 static f32 lit_10594 = 1.000000013351432e-10f; +SECTION_SDATA2 static f32 lit_10594 = 0.0000000001; /* 80452584-80452588 000B84 0004+00 1/1 0/0 0/0 .sdata2 @10595 */ SECTION_SDATA2 static f32 lit_10595 = 0.0625f; /* 80452588-8045258C 000B88 0004+00 1/1 0/0 0/0 .sdata2 @10596 */ -SECTION_SDATA2 static f32 lit_10596 = 21.0f / 25.0f; +SECTION_SDATA2 static f32 lit_10596 = 0.84f; /* 8045258C-80452590 000B8C 0004+00 1/1 0/0 0/0 .sdata2 @10597 */ -SECTION_SDATA2 static f32 lit_10597 = 23.0f / 25.0f; +SECTION_SDATA2 static f32 lit_10597 = 0.92f; /* 80452590-80452594 000B90 0004+00 1/1 0/0 0/0 .sdata2 @10598 */ -SECTION_SDATA2 static f32 lit_10598 = 19.0f / 10.0f; +SECTION_SDATA2 static f32 lit_10598 = 1.9f; /* 80452594-80452598 000B94 0004+00 1/1 0/0 0/0 .sdata2 @10599 */ SECTION_SDATA2 static f32 lit_10599 = 16.0f; /* 80452598-8045259C 000B98 0004+00 2/2 0/0 0/0 .sdata2 @10600 */ -SECTION_SDATA2 static f32 lit_10600 = 9.0f / 10.0f; +SECTION_SDATA2 static f32 lit_10600 = 0.9f; /* 8045259C-804525A0 000B9C 0004+00 1/1 0/0 0/0 .sdata2 @10601 */ SECTION_SDATA2 static f32 lit_10601 = -4.0f; /* 804525A0-804525A4 000BA0 0004+00 1/1 0/0 0/0 .sdata2 @10602 */ -SECTION_SDATA2 static f32 lit_10602 = 121.0f / 100.0f; +SECTION_SDATA2 static f32 lit_10602 = 1.21f; /* 804525A4-804525A8 000BA4 0004+00 1/1 0/0 0/0 .sdata2 @10603 */ SECTION_SDATA2 static f32 lit_10603 = 708.0f; diff --git a/src/d/kankyo/d_kankyo_wether.cpp b/src/d/kankyo/d_kankyo_wether.cpp index 81dbab3a972..3775bd00fec 100644 --- a/src/d/kankyo/d_kankyo_wether.cpp +++ b/src/d/kankyo/d_kankyo_wether.cpp @@ -841,11 +841,11 @@ static void wether_move_sun() { } else { g_env_light.mpSunPacket->field_0x6c = tmp0; } - g_env_light.mpSunPacket->field_0x44 = 0; - g_env_light.mpSunPacket->field_0x48 = 0; - g_env_light.mpSunPacket->field_0x4c = 0; - g_env_light.mpSunPacket->field_0x50 = 0; - g_env_light.mpSunPacket->field_0x54 = 0; + g_env_light.mpSunPacket->field_0x44[0] = 0; + g_env_light.mpSunPacket->field_0x44[1] = 0; + g_env_light.mpSunPacket->field_0x44[2] = 0; + g_env_light.mpSunPacket->field_0x44[3] = 0; + g_env_light.mpSunPacket->field_0x44[4] = 0; g_env_light.mpSunPacket->field_0x58 = 0; g_env_light.mpSunLenzPacket->mpResBall = diff --git a/src/m_Do/m_Do_graphic.cpp b/src/m_Do/m_Do_graphic.cpp index 55d0a570ce6..4ad3a705178 100644 --- a/src/m_Do/m_Do_graphic.cpp +++ b/src/m_Do/m_Do_graphic.cpp @@ -166,13 +166,12 @@ extern "C" u8 sManager__10JUTProcBar[4]; // /* 80007D9C-80007E44 0026DC 00A8+00 1/1 0/0 0/0 .text createTimg__FUsUsUl */ -// extra mr optimized out? -#ifdef NONMATCHING static ResTIMG* createTimg(u16 width, u16 height, u32 format) { u32 bufferSize = GXGetTexBufferSize(width, height, format, GX_FALSE, 0) + 0x20; ResTIMG* timg; - timg = (ResTIMG*)JKRHeap::alloc(bufferSize, 0x20, NULL); + void* alloc_res = JKRHeap::alloc(bufferSize, 0x20, NULL); + timg = (ResTIMG*) alloc_res; if (timg == NULL) { return NULL; @@ -189,16 +188,6 @@ static ResTIMG* createTimg(u16 width, u16 height, u32 format) { timg->imageOffset = 0x20; return timg; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm ResTIMG* createTimg(u16 param_0, u16 param_1, u32 param_2) { - nofralloc -#include "asm/m_Do/m_Do_graphic/createTimg__FUsUsUl.s" -} -#pragma pop -#endif /* ############################################################################################## */ /* 80450590-80450594 000010 0004+00 2/2 1/1 0/0 .sdata mBackColor__13mDoGph_gInf_c */