summaryrefslogtreecommitdiff
path: root/src/m_Do/m_Do_printf.cpp
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2025-05-25 13:29:53 -0700
committerGitHub <noreply@github.com>2025-05-25 23:29:53 +0300
commit0e35bbddb929763e929b4b189b4b7e865561ede8 (patch)
treec2099473b4f26de13caa7e3050c735e81f9b76b4 /src/m_Do/m_Do_printf.cpp
parentde30e871af895a1c8227b0a3a5da213861bab9e6 (diff)
d_menu_dmap mostly done (#2456)
* d_menu_dmap mostly done * d_npc_lib equivalent * m_Do_printf matching
Diffstat (limited to 'src/m_Do/m_Do_printf.cpp')
-rw-r--r--src/m_Do/m_Do_printf.cpp29
1 files changed, 26 insertions, 3 deletions
diff --git a/src/m_Do/m_Do_printf.cpp b/src/m_Do/m_Do_printf.cpp
index 9569a4f869..00ed254f0c 100644
--- a/src/m_Do/m_Do_printf.cpp
+++ b/src/m_Do/m_Do_printf.cpp
@@ -21,10 +21,33 @@ u8 __OSReport_System_disable;
u8 __OSReport_enable;
/* 80006798-800067C8 0010D8 0030+00 1/1 0/0 0/0 .text OSSwitchFiberEx__FUlUlUlUlUlUl */
-void OSSwitchFiberEx(u32 param_0, u32 param_1, u32 param_2, u32 param_3, u32 param_4,
- u32 param_5) {
- // NONMATCHING
+#ifdef __GEKKO__
+asm void OSSwitchFiberEx(register u32 param_0, register u32 param_1, register u32 param_2, register u32 param_3, register u32 code, register u32 stack) {
+ nofralloc
+
+ mflr r0
+
+ // Back chain
+ mr r9, r1
+ stwu r9, -8(stack)
+
+ // LR save
+ mr r1, stack
+ stw r0, 4(r9)
+
+ // Call function
+ mtlr code
+ blrl
+
+ // Switch back
+ lwz r5, 0(r1)
+ lwz r0, 4(r5)
+ mtlr r0
+ mr r1, r5
+
+ blr
}
+#endif
/* 800067C8-800067F4 001108 002C+00 3/3 0/0 0/0 .text my_PutString__FPCc */
void my_PutString(const char* string) {