From 2b766ef3ba779975f3156c0448edde6fb2979c13 Mon Sep 17 00:00:00 2001 From: Caroline Madsen <69010899+randomsalience@users.noreply.github.com> Date: Fri, 3 Nov 2023 19:16:36 -0400 Subject: [PATCH] Fix d_msg_flow linkage (#1975) --- ...w_cFP20mesg_flow_node_eventP10fopAc_ac_c.s | 11 ++++++++++ asm/d/msg/d_msg_flow/func_8024DAB0.s | 9 ++++++++ src/d/msg/d_msg_flow.cpp | 21 +++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 asm/d/msg/d_msg_flow/event021__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c.s create mode 100644 asm/d/msg/d_msg_flow/func_8024DAB0.s diff --git a/asm/d/msg/d_msg_flow/event021__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c.s b/asm/d/msg/d_msg_flow/event021__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c.s new file mode 100644 index 00000000000..38c66bf81a1 --- /dev/null +++ b/asm/d/msg/d_msg_flow/event021__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c.s @@ -0,0 +1,11 @@ +lbl_8024CD84: +/* 8024CD84 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 8024CD88 7C 08 02 A6 */ mflr r0 +/* 8024CD8C 90 01 00 14 */ stw r0, 0x14(r1) +/* 8024CD90 38 63 00 3C */ addi r3, r3, 0x3c +/* 8024CD94 48 00 0D 1D */ bl func_8024DAB0 +/* 8024CD98 38 60 00 01 */ li r3, 1 +/* 8024CD9C 80 01 00 14 */ lwz r0, 0x14(r1) +/* 8024CDA0 7C 08 03 A6 */ mtlr r0 +/* 8024CDA4 38 21 00 10 */ addi r1, r1, 0x10 +/* 8024CDA8 4E 80 00 20 */ blr diff --git a/asm/d/msg/d_msg_flow/func_8024DAB0.s b/asm/d/msg/d_msg_flow/func_8024DAB0.s new file mode 100644 index 00000000000..e0a6da14f8f --- /dev/null +++ b/asm/d/msg/d_msg_flow/func_8024DAB0.s @@ -0,0 +1,9 @@ +lbl_8024DAB0: +/* 8024DAB0 80 83 00 00 */ lwz r4, 0(r3) +/* 8024DAB4 2C 04 00 00 */ cmpwi r4, 0 +/* 8024DAB8 41 82 00 0C */ beq lbl_8024DAC4 +/* 8024DABC 38 04 FF FF */ addi r0, r4, -1 +/* 8024DAC0 90 03 00 00 */ stw r0, 0(r3) +lbl_8024DAC4: +/* 8024DAC4 80 63 00 00 */ lwz r3, 0(r3) +/* 8024DAC8 4E 80 00 20 */ blr diff --git a/src/d/msg/d_msg_flow.cpp b/src/d/msg/d_msg_flow.cpp index 411417285d1..37b0635d81e 100644 --- a/src/d/msg/d_msg_flow.cpp +++ b/src/d/msg/d_msg_flow.cpp @@ -2114,10 +2114,21 @@ int dMsgFlow_c::event020(mesg_flow_node_event* flow_node, fopAc_ac_c* actor) { /* 8024CD84-8024CDAC 2476C4 0028+00 1/0 0/0 0/0 .text * event021__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c */ +#ifdef NONMATCHING int dMsgFlow_c::event021(mesg_flow_node_event* param_0, fopAc_ac_c* param_1) { cLib_calcTimer(&field_0x3c); return 1; } +#else +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm int dMsgFlow_c::event021(mesg_flow_node_event* param_0, fopAc_ac_c* param_1) { + nofralloc +#include "asm/d/msg/d_msg_flow/event021__10dMsgFlow_cFP20mesg_flow_node_eventP10fopAc_ac_c.s" +} +#pragma pop +#endif /* ############################################################################################## */ /* 80454DA8-80454DAC 0033A8 0004+00 1/1 0/0 0/0 .sdata2 @6273 */ @@ -2605,4 +2616,14 @@ int dMsgFlow_c::event042(mesg_flow_node_event*, fopAc_ac_c*) { return 1; } +/* 8024DAB0-8024DACC 2483F0 001C+00 3/3 0/0 0/0 .text cLib_calcTimer__FPl */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +extern "C" asm void func_8024DAB0(void* _this, s32* param_0) { + nofralloc +#include "asm/d/msg/d_msg_flow/func_8024DAB0.s" +} +#pragma pop + /* 80399CB0-80399CB0 026310 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */