more file splitting

This commit is contained in:
Seth Barberee
2026-06-01 10:35:27 -07:00
parent b9e41e47d7
commit 495bfb5d3d
19 changed files with 1627 additions and 1564 deletions

View File

@@ -38,3 +38,7 @@
.public strchr
.public strlen
.public strncpy
.public _flush_buffer
.public _prep_buffer
.public _load_buffer

View File

@@ -3,112 +3,6 @@
.text
arm_func_start _convert_from_newlines
_convert_from_newlines: ; 0x02086568
bx lr
arm_func_end _convert_from_newlines
arm_func_start _convert_to_newlines
_convert_to_newlines: ; 0x0208656C
bx lr
arm_func_end _convert_to_newlines
arm_func_start _prep_buffer
_prep_buffer: ; 0x02086570
ldr r1, [r0, #0x1c]
str r1, [r0, #0x24]
ldr r3, [r0, #0x20]
str r3, [r0, #0x28]
ldr r2, [r0, #0x18]
ldr r1, [r0, #0x2c]
and r1, r2, r1
sub r1, r3, r1
str r1, [r0, #0x28]
ldr r1, [r0, #0x18]
str r1, [r0, #0x34]
bx lr
arm_func_end _prep_buffer
arm_func_start _load_buffer
_load_buffer: ; 0x020865A0
stmdb sp!, {r4, r5, r6, lr}
mov r5, r2
mov r4, r0
mov r6, r1
bl _prep_buffer
cmp r5, #1
ldreq r0, [r4, #0x20]
add r2, r4, #0x28
streq r0, [r4, #0x28]
ldr r0, [r4]
ldr r1, [r4, #0x1c]
ldr r3, [r4, #0x48]
ldr ip, [r4, #0x3c]
blx ip
cmp r0, #2
moveq r1, #0
streq r1, [r4, #0x28]
cmp r6, #0
ldrne r1, [r4, #0x28]
strne r1, [r6]
cmp r0, #0
ldmneia sp!, {r4, r5, r6, pc}
ldr r1, [r4, #0x18]
ldr r0, [r4, #0x28]
add r0, r1, r0
str r0, [r4, #0x18]
ldr r0, [r4, #4]
mov r0, r0, lsl #0x13
movs r0, r0, lsr #0x1f
bne _02086624
ldr r0, [r4, #0x1c]
add r1, r4, #0x28
bl _convert_to_newlines
_02086624:
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
arm_func_end _load_buffer
arm_func_start _flush_buffer
_flush_buffer: ; 0x0208662C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldr r2, [r5, #0x24]
ldr r0, [r5, #0x1c]
mov r4, r1
subs r0, r2, r0
beq _020866A4
str r0, [r5, #0x28]
ldr r0, [r5, #4]
mov r0, r0, lsl #0x13
movs r0, r0, lsr #0x1f
bne _02086668
ldr r0, [r5, #0x1c]
add r1, r5, #0x28
bl _convert_from_newlines
_02086668:
ldr r0, [r5]
ldr r1, [r5, #0x1c]
ldr r3, [r5, #0x48]
ldr ip, [r5, #0x40]
add r2, r5, #0x28
blx ip
cmp r4, #0
ldrne r1, [r5, #0x28]
strne r1, [r4]
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
ldr r1, [r5, #0x18]
ldr r0, [r5, #0x28]
add r0, r1, r0
str r0, [r5, #0x18]
_020866A4:
mov r0, r5
bl _prep_buffer
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
arm_func_end _flush_buffer
arm_func_start fread
fread: ; 0x020866B4
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}

View File

@@ -0,0 +1,110 @@
.include "asm/macros.inc"
.text
arm_func_start _convert_from_newlines
_convert_from_newlines: ; 0x02086568
bx lr
arm_func_end _convert_from_newlines
arm_func_start _convert_to_newlines
_convert_to_newlines: ; 0x0208656C
bx lr
arm_func_end _convert_to_newlines
arm_func_start _prep_buffer
_prep_buffer: ; 0x02086570
ldr r1, [r0, #0x1c]
str r1, [r0, #0x24]
ldr r3, [r0, #0x20]
str r3, [r0, #0x28]
ldr r2, [r0, #0x18]
ldr r1, [r0, #0x2c]
and r1, r2, r1
sub r1, r3, r1
str r1, [r0, #0x28]
ldr r1, [r0, #0x18]
str r1, [r0, #0x34]
bx lr
arm_func_end _prep_buffer
arm_func_start _load_buffer
_load_buffer: ; 0x020865A0
stmdb sp!, {r4, r5, r6, lr}
mov r5, r2
mov r4, r0
mov r6, r1
bl _prep_buffer
cmp r5, #1
ldreq r0, [r4, #0x20]
add r2, r4, #0x28
streq r0, [r4, #0x28]
ldr r0, [r4]
ldr r1, [r4, #0x1c]
ldr r3, [r4, #0x48]
ldr ip, [r4, #0x3c]
blx ip
cmp r0, #2
moveq r1, #0
streq r1, [r4, #0x28]
cmp r6, #0
ldrne r1, [r4, #0x28]
strne r1, [r6]
cmp r0, #0
ldmneia sp!, {r4, r5, r6, pc}
ldr r1, [r4, #0x18]
ldr r0, [r4, #0x28]
add r0, r1, r0
str r0, [r4, #0x18]
ldr r0, [r4, #4]
mov r0, r0, lsl #0x13
movs r0, r0, lsr #0x1f
bne _02086624
ldr r0, [r4, #0x1c]
add r1, r4, #0x28
bl _convert_to_newlines
_02086624:
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
arm_func_end _load_buffer
arm_func_start _flush_buffer
_flush_buffer: ; 0x0208662C
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldr r2, [r5, #0x24]
ldr r0, [r5, #0x1c]
mov r4, r1
subs r0, r2, r0
beq _020866A4
str r0, [r5, #0x28]
ldr r0, [r5, #4]
mov r0, r0, lsl #0x13
movs r0, r0, lsr #0x1f
bne _02086668
ldr r0, [r5, #0x1c]
add r1, r5, #0x28
bl _convert_from_newlines
_02086668:
ldr r0, [r5]
ldr r1, [r5, #0x1c]
ldr r3, [r5, #0x48]
ldr ip, [r5, #0x40]
add r2, r5, #0x28
blx ip
cmp r4, #0
ldrne r1, [r5, #0x28]
strne r1, [r4]
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
ldr r1, [r5, #0x18]
ldr r0, [r5, #0x28]
add r0, r1, r0
str r0, [r5, #0x18]
_020866A4:
mov r0, r5
bl _prep_buffer
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
arm_func_end _flush_buffer

View File

@@ -0,0 +1,59 @@
.include "asm/macros.inc"
.include "include/g3x.inc"
.text
arm_func_start G3i_OrthoW_
G3i_OrthoW_: ; 0x02077C48
stmdb sp!, {r4, lr}
sub sp, sp, #0x50
ldr ip, [sp, #0x58]
ldr lr, [sp, #0x5c]
str ip, [sp]
ldr r4, [sp, #0x68]
ldr ip, [sp, #0x60]
str lr, [sp, #4]
cmp r4, #0
addeq r4, sp, #0x10
str ip, [sp, #8]
str r4, [sp, #0xc]
bl MTX_OrthoW
ldr r0, [sp, #0x64]
cmp r0, #0
addeq sp, sp, #0x50
ldmeqia sp!, {r4, pc}
ldr r1, _02077CA8 ; =0x04000440
mov r2, #0
mov r0, r4
str r2, [r1]
bl G3_LoadMtx44
add sp, sp, #0x50
ldmia sp!, {r4, pc}
.align 2, 0
_02077CA8: .word 0x04000440
arm_func_end G3i_OrthoW_
arm_func_start G3i_LookAt_
G3i_LookAt_: ; 0x02077CAC
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x30
ldr r4, [sp, #0x40]
mov r5, r3
cmp r4, #0
addeq r4, sp, #0
mov r3, r4
bl MTX_LookAt
cmp r5, #0
addeq sp, sp, #0x30
ldmeqia sp!, {r3, r4, r5, pc}
ldr r1, _02077CF4 ; =0x04000440
mov r2, #2
mov r0, r4
str r2, [r1]
bl G3_LoadMtx43
add sp, sp, #0x30
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02077CF4: .word 0x04000440
arm_func_end G3i_LookAt_

View File

@@ -351,56 +351,3 @@ GXi_NopClearFifo128_: ; 0x02077BB4
bx lr
arm_func_end GXi_NopClearFifo128_
arm_func_start G3i_OrthoW_
G3i_OrthoW_: ; 0x02077C48
stmdb sp!, {r4, lr}
sub sp, sp, #0x50
ldr ip, [sp, #0x58]
ldr lr, [sp, #0x5c]
str ip, [sp]
ldr r4, [sp, #0x68]
ldr ip, [sp, #0x60]
str lr, [sp, #4]
cmp r4, #0
addeq r4, sp, #0x10
str ip, [sp, #8]
str r4, [sp, #0xc]
bl MTX_OrthoW
ldr r0, [sp, #0x64]
cmp r0, #0
addeq sp, sp, #0x50
ldmeqia sp!, {r4, pc}
ldr r1, _02077CA8 ; =0x04000440
mov r2, #0
mov r0, r4
str r2, [r1]
bl G3_LoadMtx44
add sp, sp, #0x50
ldmia sp!, {r4, pc}
.align 2, 0
_02077CA8: .word 0x04000440
arm_func_end G3i_OrthoW_
arm_func_start G3i_LookAt_
G3i_LookAt_: ; 0x02077CAC
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x30
ldr r4, [sp, #0x40]
mov r5, r3
cmp r4, #0
addeq r4, sp, #0
mov r3, r4
bl MTX_LookAt
cmp r5, #0
addeq sp, sp, #0x30
ldmeqia sp!, {r3, r4, r5, pc}
ldr r1, _02077CF4 ; =0x04000440
mov r2, #2
mov r0, r4
str r2, [r1]
bl G3_LoadMtx43
add sp, sp, #0x30
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02077CF4: .word 0x04000440
arm_func_end G3i_LookAt_

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,35 @@
.include "asm/macros.inc"
.include "include/gx.inc"
.text
arm_func_start GX_InitGXState
GX_InitGXState: ; 0x0207634C
ldr r0, _020763A4 ; =gGXState
mov r2, #0
strh r2, [r0]
strh r2, [r0, #2]
strh r2, [r0, #4]
strh r2, [r0, #6]
strh r2, [r0, #8]
strh r2, [r0, #0xa]
strh r2, [r0, #0xc]
strh r2, [r0, #0xe]
strh r2, [r0, #0x10]
strh r2, [r0, #0x12]
strh r2, [r0, #0x14]
strh r2, [r0, #0x16]
ldr r1, _020763A8 ; =0x04000240
strh r2, [r0, #0x18]
str r2, [r1]
strb r2, [r1, #4]
strb r2, [r1, #5]
strb r2, [r1, #6]
strh r2, [r1, #8]
bx lr
.align 2, 0
_020763A4: .word gGXState
_020763A8: .word 0x04000240
arm_func_end GX_InitGXState

View File

@@ -53,6 +53,7 @@
.public GetGameMode
.public GetProcessorMode
.public gGXState
.public GX_InitGXState
.public GXi_DmaId
.public GXi_VRamLockId
.public MI_DmaCopy16

View File

@@ -166,13 +166,3 @@ OSi_DequeueItem: ; 0x0207A1FC
bx lr
arm_func_end OSi_DequeueItem
arm_func_start DC_Enable
DC_Enable: ; 0x0207A220
mrc p15, 0, r1, c1, c0, 0
and r0, r1, #4
mov r0, r0, lsr #2
orr r1, r1, #4
mcr p15, 0, r1, c1, c0, 0
bx lr
arm_func_end DC_Enable

View File

@@ -1,44 +0,0 @@
.include "asm/macros.inc"
.include "include/nitro.inc"
.text
arm_func_start SND_Init
SND_Init: ; 0x0207CC10
stmdb sp!, {r3, lr}
ldr r1, _0207CC40 ; =_022B99EC
ldr r0, [r1]
cmp r0, #0
ldmneia sp!, {r3, pc}
ldr r0, _0207CC44 ; =sSndMutex
mov r2, #1
str r2, [r1]
bl OS_InitMutex
bl SND_CommandInit
bl Snd_AlarmInit
ldmia sp!, {r3, pc}
.align 2, 0
_0207CC40: .word _022B99EC
_0207CC44: .word sSndMutex
arm_func_end SND_Init
arm_func_start Sndi_LockMutex
Sndi_LockMutex: ; 0x0207CC48
ldr ip, _0207CC54 ; =OS_LockMutex
ldr r0, _0207CC58 ; =sSndMutex
bx ip
.align 2, 0
_0207CC54: .word OS_LockMutex
_0207CC58: .word sSndMutex
arm_func_end Sndi_LockMutex
arm_func_start Sndi_UnlockMutex
Sndi_UnlockMutex: ; 0x0207CC5C
ldr ip, _0207CC68 ; =OS_UnlockMutex
ldr r0, _0207CC6C ; =sSndMutex
bx ip
.align 2, 0
_0207CC68: .word OS_UnlockMutex
_0207CC6C: .word sSndMutex
arm_func_end Sndi_UnlockMutex

View File

@@ -1,5 +1,14 @@
#include <nitro.h>
asm BOOL DC_Enable (void) {
mrc p15, 0, r1, c1, c0, 0
and r0, r1, #HW_C1_DCACHE_ENABLE
mov r0, r0, LSR #HW_C1_DCACHE_ENABLE_SHIFT
orr r1, r1, #HW_C1_DCACHE_ENABLE
mcr p15, 0, r1, c1, c0, 0
bx lr
}
asm void DC_InvalidateAll(void) {
mov r0, #0
mcr p15, 0, r0, c7, c6, 0

View File

@@ -0,0 +1,35 @@
#include <nitro.h>
//static OSMutex sSndMutex;
extern OSMutex sSndMutex;
extern BOOL _022B99EC; // static bool initialized = FALSE
extern void OS_InitMutex(OSMutex *);
extern void OS_LockMutex(OSMutex *);
extern void OS_UnlockMutex(OSMutex *);
extern void SND_CommandInit(void);
extern void Snd_AlarmInit(void);
void SND_Init (void)
{
{
if (_022B99EC)
return;
_022B99EC = TRUE;
}
OS_InitMutex(&sSndMutex);
SND_CommandInit();
Snd_AlarmInit();
}
void Sndi_LockMutex (void)
{
OS_LockMutex(&sSndMutex);
}
void Sndi_UnlockMutex (void)
{
OS_UnlockMutex(&sSndMutex);
}

View File

@@ -7,5 +7,6 @@
#include <nitro/pxi.h>
#include <nitro/gx.h>
#include <nitro/mi.h>
#include <nitro/snd.h>
#endif //NITRO_H_

View File

@@ -1,6 +1,7 @@
#ifndef NITRO_OS_CACHE_H_
#define NITRO_OS_CACHE_H_
BOOL DC_Enable (void);
void DC_FlushAll(void);
void DC_InvalidateRange(register void * startAddr, register u32 nBytes);
void DC_StoreRange(register void * startAddr, register u32 nBytes);

6
lib/include/nitro/snd.h Normal file
View File

@@ -0,0 +1,6 @@
#ifndef NITRO_SND_H_
#define NITRO_SND_H_
#include <nitro/snd/common/main.h>
#endif //NITRO_SND_H_

View File

@@ -0,0 +1,35 @@
#ifndef NITRO_SND_COMMON_MAIN_H_
#define NITRO_SND_COMMON_MAIN_H_
#include <nitro/types.h>
#include <nitro/os.h>
#ifdef __cplusplus
extern "C" {
#endif
#define SND_PROC_INTERVAL 0xAA8
#define SND_MESSAGE_PERIODIC 1
#define SND_MESSAGE_WAKEUP_THREAD 2
//#ifdef SDK_ARM9
void SND_Init(void);
// #else
// void SND_Init(u32 threadPrio);
// void SND_CreateThread(u32 threadPrio);
// BOOL SND_SetThreadPriority(u32 prio);
// void SND_InitIntervalTimer(void);
// void SND_StartIntervalTimer(void);
// void SND_StopIntervalTimer(void);
// OSMessage SND_WaitForIntervalTimer(void);
// BOOL SND_SendWakeupMessage(void);
// #endif
void Sndi_LockMutex(void);
void Sndi_UnlockMutex(void);
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -226,10 +226,13 @@ Static main
Object lib/NitroSDK/asm/fx_cp.o
Object lib/NitroSDK/asm/fx_vec.o
Object lib/NitroSDK/asm/gx.o
Object lib/NitroSDK/asm/gxstate.o
Object lib/NitroSDK/asm/gx_vramcnt.o
Object lib/NitroSDK/asm/gx_bgcnt.o
Object lib/NitroSDK/asm/g2.o
Object lib/NitroSDK/asm/g3imm.o
Object lib/NitroSDK/asm/g3x.o
Object lib/NitroSDK/asm/g3_util.o
Object lib/NitroSDK/asm/gx_load2d.o
Object lib/NitroSDK/asm/gx_load3d.o
Object lib/NitroSDK/src/gxasm.o
@@ -265,7 +268,7 @@ Static main
Object lib/NitroSDK/asm/mi_dma_card.o
Object lib/NitroSDK/src/mi_init.o
Object lib/NitroSDK/asm/snd_interface.o
Object lib/NitroSDK/asm/snd_main.o
Object lib/NitroSDK/src/snd_main.o
Object lib/NitroSDK/asm/snd_command.o
Object lib/NitroSDK/asm/snd_alarm.o
Object lib/NitroSDK/asm/snd_work.o
@@ -282,6 +285,7 @@ Static main
Object src/main_0207F818.o
Object asm/main_0207F894.o
Object lib/MSL_C/src/arith.o
Object lib/MSL_C/asm/MSL_Common_buffer_io.o
Object asm/main_02086568.o
Object src/main_02089678.o
Object asm/main_02089694.o

View File

@@ -18,7 +18,6 @@ extern void sub_020082F4(u32*);
extern void sub_0204A5D0();
extern void FX_Init();
extern void OS_DisableScheduler();
extern void DC_Enable();
extern u32 OS_GetArenaHi(u32);
extern u32 OS_GetArenaLo(u32);
extern u32 OS_SetArenaLo(u32, u32);