From 4540eced4e1d2fa5af4d0cc4b2cf2d491a9e1f35 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 13 Jul 2026 11:24:48 -0700 Subject: [PATCH] Labeled/decomped MI_SwapWord --- asm/include/main_02075600.inc | 2 +- lib/NitroSDK/asm/include/fx_vec.inc | 2 +- lib/NitroSDK/asm/include/g2.inc | 2 +- lib/NitroSDK/asm/include/gx.inc | 2 +- lib/NitroSDK/asm/include/gx_bgcnt.inc | 2 +- lib/NitroSDK/asm/include/gx_load2d.inc | 2 +- lib/NitroSDK/asm/include/mtx.inc | 2 +- lib/NitroSDK/asm/include/os_arena.inc | 2 +- lib/NitroSDK/asm/include/os_exception.inc | 2 +- lib/NitroSDK/asm/include/os_interrupt.inc | 2 +- lib/NitroSDK/asm/include/os_spinlock.inc | 2 +- lib/NitroSDK/asm/include/os_thread.inc | 2 +- lib/NitroSDK/asm/include/os_timer.inc | 2 +- lib/NitroSDK/asm/mi_memory_1.s | 16 +++++++++++----- lib/NitroSDK/asm/os_spinlock.s | 2 +- lib/NitroSDK/src/mi/mi_swap.c | 18 ++++++++++++++++++ lib/include/nitro/mi.h | 1 + lib/include/nitro/mi/swap.h | 18 ++++++++++++++++++ main.lsf | 2 +- 19 files changed, 63 insertions(+), 20 deletions(-) create mode 100644 lib/NitroSDK/src/mi/mi_swap.c create mode 100644 lib/include/nitro/mi/swap.h diff --git a/asm/include/main_02075600.inc b/asm/include/main_02075600.inc index f607492e..0d6311f6 100644 --- a/asm/include/main_02075600.inc +++ b/asm/include/main_02075600.inc @@ -32,7 +32,7 @@ .public _ll_udiv .public _s32_div_f .public _secure -.public AtomicExchange +.public MI_SwapWord .public CARD_Init .public ClearIrqFlag .public CP_SaveContext diff --git a/lib/NitroSDK/asm/include/fx_vec.inc b/lib/NitroSDK/asm/include/fx_vec.inc index 4f3b7c26..fc66d852 100644 --- a/lib/NitroSDK/asm/include/fx_vec.inc +++ b/lib/NitroSDK/asm/include/fx_vec.inc @@ -33,7 +33,7 @@ .public _ll_udiv .public _s32_div_f .public _secure -.public AtomicExchange +.public MI_SwapWord .public CARD_Init .public ClearIrqFlag .public CP_SaveContext diff --git a/lib/NitroSDK/asm/include/g2.inc b/lib/NitroSDK/asm/include/g2.inc index 53e3adea..03eb50dc 100644 --- a/lib/NitroSDK/asm/include/g2.inc +++ b/lib/NitroSDK/asm/include/g2.inc @@ -32,7 +32,7 @@ .public _ll_udiv .public _s32_div_f .public _secure -.public AtomicExchange +.public MI_SwapWord .public CARD_Init .public ClearIrqFlag .public CP_SaveContext diff --git a/lib/NitroSDK/asm/include/gx.inc b/lib/NitroSDK/asm/include/gx.inc index f255ab4d..3c21404c 100644 --- a/lib/NitroSDK/asm/include/gx.inc +++ b/lib/NitroSDK/asm/include/gx.inc @@ -32,7 +32,7 @@ .public _ll_udiv .public _s32_div_f .public _secure -.public AtomicExchange +.public MI_SwapWord .public CARD_Init .public ClearIrqFlag .public CP_SaveContext diff --git a/lib/NitroSDK/asm/include/gx_bgcnt.inc b/lib/NitroSDK/asm/include/gx_bgcnt.inc index 481b269c..16b15dba 100644 --- a/lib/NitroSDK/asm/include/gx_bgcnt.inc +++ b/lib/NitroSDK/asm/include/gx_bgcnt.inc @@ -33,7 +33,7 @@ .public _ll_udiv .public _s32_div_f .public _secure -.public AtomicExchange +.public MI_SwapWord .public CARD_Init .public ClearIrqFlag .public CP_SaveContext diff --git a/lib/NitroSDK/asm/include/gx_load2d.inc b/lib/NitroSDK/asm/include/gx_load2d.inc index 95285071..4a737da1 100644 --- a/lib/NitroSDK/asm/include/gx_load2d.inc +++ b/lib/NitroSDK/asm/include/gx_load2d.inc @@ -32,7 +32,7 @@ .public _ll_udiv .public _s32_div_f .public _secure -.public AtomicExchange +.public MI_SwapWord .public CARD_Init .public ClearIrqFlag .public CP_SaveContext diff --git a/lib/NitroSDK/asm/include/mtx.inc b/lib/NitroSDK/asm/include/mtx.inc index f577ce57..196b7002 100644 --- a/lib/NitroSDK/asm/include/mtx.inc +++ b/lib/NitroSDK/asm/include/mtx.inc @@ -32,7 +32,7 @@ .public _ll_udiv .public _s32_div_f .public _secure -.public AtomicExchange +.public MI_SwapWord .public CARD_Init .public ClearIrqFlag .public CP_SaveContext diff --git a/lib/NitroSDK/asm/include/os_arena.inc b/lib/NitroSDK/asm/include/os_arena.inc index 777583b8..2e7b366a 100644 --- a/lib/NitroSDK/asm/include/os_arena.inc +++ b/lib/NitroSDK/asm/include/os_arena.inc @@ -33,7 +33,7 @@ .public _ll_udiv .public _s32_div_f .public _secure -.public AtomicExchange +.public MI_SwapWord .public CARD_Init .public ClearIrqFlag .public CP_SaveContext diff --git a/lib/NitroSDK/asm/include/os_exception.inc b/lib/NitroSDK/asm/include/os_exception.inc index f6357b37..62219b5f 100644 --- a/lib/NitroSDK/asm/include/os_exception.inc +++ b/lib/NitroSDK/asm/include/os_exception.inc @@ -33,7 +33,7 @@ .public _ll_udiv .public _s32_div_f .public _secure -.public AtomicExchange +.public MI_SwapWord .public CARD_Init .public ClearIrqFlag .public CP_SaveContext diff --git a/lib/NitroSDK/asm/include/os_interrupt.inc b/lib/NitroSDK/asm/include/os_interrupt.inc index 3f192788..f0c6fb9a 100644 --- a/lib/NitroSDK/asm/include/os_interrupt.inc +++ b/lib/NitroSDK/asm/include/os_interrupt.inc @@ -33,7 +33,7 @@ .public _ll_udiv .public _s32_div_f .public _secure -.public AtomicExchange +.public MI_SwapWord .public CARD_Init .public ClearIrqFlag .public CP_SaveContext diff --git a/lib/NitroSDK/asm/include/os_spinlock.inc b/lib/NitroSDK/asm/include/os_spinlock.inc index 0a512bc7..4d1b4ac9 100644 --- a/lib/NitroSDK/asm/include/os_spinlock.inc +++ b/lib/NitroSDK/asm/include/os_spinlock.inc @@ -32,7 +32,7 @@ .public _ll_udiv .public _s32_div_f .public _secure -.public AtomicExchange +.public MI_SwapWord .public CARD_Init .public ClearIrqFlag .public CP_SaveContext diff --git a/lib/NitroSDK/asm/include/os_thread.inc b/lib/NitroSDK/asm/include/os_thread.inc index 6ff4aa31..e29d6737 100644 --- a/lib/NitroSDK/asm/include/os_thread.inc +++ b/lib/NitroSDK/asm/include/os_thread.inc @@ -33,7 +33,7 @@ .public _ll_udiv .public _s32_div_f .public _secure -.public AtomicExchange +.public MI_SwapWord .public CARD_Init .public ClearIrqFlag .public CP_SaveContext diff --git a/lib/NitroSDK/asm/include/os_timer.inc b/lib/NitroSDK/asm/include/os_timer.inc index 2b070647..367479f1 100644 --- a/lib/NitroSDK/asm/include/os_timer.inc +++ b/lib/NitroSDK/asm/include/os_timer.inc @@ -33,7 +33,7 @@ .public _ll_udiv .public _s32_div_f .public _secure -.public AtomicExchange +.public MI_SwapWord .public CARD_Init .public ClearIrqFlag .public CP_SaveContext diff --git a/lib/NitroSDK/asm/mi_memory_1.s b/lib/NitroSDK/asm/mi_memory_1.s index db587dc7..a9cf5243 100644 --- a/lib/NitroSDK/asm/mi_memory_1.s +++ b/lib/NitroSDK/asm/mi_memory_1.s @@ -3,9 +3,15 @@ .text - arm_func_start AtomicExchange -AtomicExchange: ; 0x0207C648 - .word 0xE1010090 - bx lr - arm_func_end AtomicExchange +; arm_func_start MI_SwapWord +;MI_SwapWord: ; 0x0207C648 +; .word 0xE1010090 +; bx lr +; arm_func_end MI_SwapWord + + arm_func_start MI_SwapWord +MI_SwapWord: ; 0x020D4BE0 + swp r0, r0, [r1] + bx lr + arm_func_end MI_SwapWord diff --git a/lib/NitroSDK/asm/os_spinlock.s b/lib/NitroSDK/asm/os_spinlock.s index 77e95729..d19df75f 100644 --- a/lib/NitroSDK/asm/os_spinlock.s +++ b/lib/NitroSDK/asm/os_spinlock.s @@ -157,7 +157,7 @@ _02078EF8: mov r5, r0 mov r0, sb mov r1, r8 - bl AtomicExchange + bl MI_SwapWord movs r4, r0 bne _02078F20 cmp r7, #0 diff --git a/lib/NitroSDK/src/mi/mi_swap.c b/lib/NitroSDK/src/mi/mi_swap.c new file mode 100644 index 00000000..77c1e8e6 --- /dev/null +++ b/lib/NitroSDK/src/mi/mi_swap.c @@ -0,0 +1,18 @@ +#include +#include + +#include + +asm u32 MI_SwapWord (register u32 setData, register vu32 * destp) +{ + swp r0, r0, [r1] + bx lr +} + +// asm u8 MI_SwapByte (register u32 setData, register vu8 * destp) +// { +// swpb r0, r0, [r1] +// bx lr +// } + +#include diff --git a/lib/include/nitro/mi.h b/lib/include/nitro/mi.h index 47e981b1..d6af156b 100644 --- a/lib/include/nitro/mi.h +++ b/lib/include/nitro/mi.h @@ -7,5 +7,6 @@ #include #include #include +#include #endif //NITRO_MI_H_ diff --git a/lib/include/nitro/mi/swap.h b/lib/include/nitro/mi/swap.h new file mode 100644 index 00000000..46f9ac4d --- /dev/null +++ b/lib/include/nitro/mi/swap.h @@ -0,0 +1,18 @@ +#ifndef NITRO_MI_SWAP_H_ +#define NITRO_MI_SWAP_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +u32 MI_SwapWord(u32 setData, volatile u32 * destp); +u8 MI_SwapByte(u32 setData, volatile u8 * destp); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/main.lsf b/main.lsf index 7fdff36b..2da2ffad 100644 --- a/main.lsf +++ b/main.lsf @@ -279,7 +279,7 @@ Static main Object lib/NitroSDK/src/mi/mi_wram.o Object lib/NitroSDK/src/mi/mi_dma.o Object lib/NitroSDK/src/mi/mi_memory.o - Object lib/NitroSDK/asm/mi_memory_1.o + Object lib/NitroSDK/src/mi/mi_swap.o Object lib/NitroSDK/src/mi/mi_uncompress.o Object lib/NitroSDK/src/mi/mi_dma_card.o Object lib/NitroSDK/src/mi/mi_init.o