diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-30 15:11:22 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-30 15:11:22 -0400 |
commit | a4e406b821808db73574193e0bfdffd6ee756687 (patch) | |
tree | dd3bff339f85de031af3c977f9d7f72c9164e5db /arm9 | |
parent | 1d92bac012170fda7ec543433eb9572f75f9b710 (diff) | |
parent | b45ab57b275ffbd0a46852c62f824e6cff73e116 (diff) |
Merge branch 'master' of https://github.com/martmists/pokediamond into pikalax_work
Diffstat (limited to 'arm9')
-rw-r--r-- | arm9/Makefile | 4 | ||||
-rw-r--r-- | arm9/asm/arm9_itcm.s | 84 | ||||
-rw-r--r-- | arm9/global.inc | 1 | ||||
-rw-r--r-- | arm9/lib/include/OS_reset.h | 1 | ||||
-rw-r--r-- | arm9/lib/include/SND_main.h | 2 | ||||
-rw-r--r-- | arm9/lib/include/registers.h | 4 | ||||
-rw-r--r-- | arm9/lib/src/OS_reset.c | 63 | ||||
-rw-r--r-- | arm9/lib/src/SND_alarm.c | 1 | ||||
-rw-r--r-- | arm9/lib/src/SND_bank.c | 1 | ||||
-rw-r--r-- | arm9/lib/src/SND_command.c | 46 | ||||
-rw-r--r-- | arm9/lib/src/SND_interface.c | 12 | ||||
-rw-r--r-- | arm9/lib/src/SND_main.c | 3 | ||||
-rw-r--r-- | arm9/src/filesystem.c | 54 | ||||
-rw-r--r-- | arm9/src/unk_02006234.c | 8 |
14 files changed, 142 insertions, 142 deletions
diff --git a/arm9/Makefile b/arm9/Makefile index 17da8ea8..ebd74715 100644 --- a/arm9/Makefile +++ b/arm9/Makefile @@ -184,8 +184,8 @@ OBJCOPY := $(CROSS)objcopy # ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm9_thumb.s -o arm9.o ASFLAGS = -proc arm5te -i .. -CFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -ir ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int -D$(GAME_VERSION) -D$(GAME_LANGUAGE) -CXXFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -ir ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int -D$(GAME_VERSION) -D$(GAME_LANGUAGE) +CFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -ir ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int -W all -D$(GAME_VERSION) -D$(GAME_LANGUAGE) +CXXFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -ir ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int -W all -D$(GAME_VERSION) -D$(GAME_LANGUAGE) LDFLAGS = -map -nodead -w off -proc v5te -interworking -map -symtab -m _start ####################### Other Tools ######################### diff --git a/arm9/asm/arm9_itcm.s b/arm9/asm/arm9_itcm.s index 33a26758..e08b6500 100644 --- a/arm9/asm/arm9_itcm.s +++ b/arm9/asm/arm9_itcm.s @@ -3,90 +3,6 @@ .section .text ; OS - arm_func_start OSi_ReadCardRom32 ;OS_reset.c -OSi_ReadCardRom32: ; 01FF8294 - stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - sub sp, sp, #4 - ldr r4, _01FF8390 - ldr r3, _01FF8394 - ldr r4, [r4] - and r3, r0, r3 - bic r4, r4, #117440512 ; 0x7000000 - orr sl, r4, #-1593835520 ; 0xa1000000 - rsb r9, r3, #0 - ldr r4, _01FF8398 -_01FF82BC: - ldr r3, [r4] - ands r3, r3, #-2147483648 ; 0x80000000 - bne _01FF82BC - ldr r3, _01FF839C - mov r4, #128 ; 0x80 - cmp r9, r2 - addge sp, sp, #4 - strb r4, [r3] - add r0, r0, r9 - ldmgeia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - bxge lr - ldr r3, _01FF83A0 - ldr ip, _01FF8398 - ldr r5, _01FF83A4 - ldr r4, _01FF83A8 - mov r7, r0, lsr #8 - mov r6, #183 ; 0xb7 - mov lr, #0 -_01FF8304: - strb r6, [r5] - mov r8, r0, lsr #24 - strb r8, [r4] - ldr r8, _01FF83AC - mov fp, r0, lsr #16 - strb fp, [r8] - ldr r8, _01FF83B0 - strb r7, [r8] - ldr r8, _01FF83B4 - strb r0, [r8] - ldr r8, _01FF83B8 - strb lr, [r8] - ldr r8, _01FF83BC - strb lr, [r8] - ldr r8, _01FF83C0 - strb lr, [r8] - str sl, [ip] -_01FF8348: - ldr r8, [ip] - ands fp, r8, #8388608 ; 0x800000 - beq _01FF836C - cmp r9, #0 - ldr fp, [r3] - blt _01FF8368 - cmp r9, r2 - strlt fp, [r1, r9] -_01FF8368: - add r9, r9, #4 -_01FF836C: - ands r8, r8, #-2147483648 ; 0x80000000 - bne _01FF8348 - cmp r9, r2 - add r7, r7, #2 - add r0, r0, #512 ; 0x200 - blt _01FF8304 - add sp, sp, #4 - ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - bx lr -_01FF8390: .word 0x027FFE60 -_01FF8394: .word 0x000001FF -_01FF8398: .word 0x040001A4 -_01FF839C: .word 0x040001A1 -_01FF83A0: .word 0x04100010 -_01FF83A4: .word 0x040001A8 -_01FF83A8: .word 0x040001A9 -_01FF83AC: .word 0x040001AA -_01FF83B0: .word 0x040001AB -_01FF83B4: .word 0x040001AC -_01FF83B8: .word 0x040001AD -_01FF83BC: .word 0x040001AE -_01FF83C0: .word 0x040001AF - arm_func_start OSi_ReloadRomData ;OS_reset.c OSi_ReloadRomData: ; 0x01FF83C4 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} diff --git a/arm9/global.inc b/arm9/global.inc index 8d9128fd..153dd133 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -7289,6 +7289,7 @@ .extern OSi_MainExArenaEnabled
.extern OSi_NeedResetTimer
.extern OSi_PreviousVCount
+.extern OSi_ReadCardRom32
.extern OSi_ReferSymbol
.extern OSi_RemoveMutexLinkFromQueue
.extern OSi_RescheduleCount
diff --git a/arm9/lib/include/OS_reset.h b/arm9/lib/include/OS_reset.h index 1efc3f2d..d3cb4355 100644 --- a/arm9/lib/include/OS_reset.h +++ b/arm9/lib/include/OS_reset.h @@ -18,6 +18,7 @@ static void OSi_SendToPxi(u16 data); void OS_ResetSystem(u32 parameter); void OSi_DoBoot(void); static void OSi_CpuClear32(register u32 data, register void *destp, register u32 size); +void OSi_ReadCardRom32(u32 src, void *dst, s32 len); static inline u32 OS_GetResetParameter(void) { diff --git a/arm9/lib/include/SND_main.h b/arm9/lib/include/SND_main.h index 7412c1ae..e35f1ee1 100644 --- a/arm9/lib/include/SND_main.h +++ b/arm9/lib/include/SND_main.h @@ -19,7 +19,7 @@ struct SNDBinaryFileHeader { typedef struct SNDBinaryBlockHeader { u32 type; // 0x0 u32 size; // 0x4 -}; // size = 0x8 +} SNDBinaryBlockHeader; // size = 0x8 struct SNDWaveParam { u8 format; // 0x0 diff --git a/arm9/lib/include/registers.h b/arm9/lib/include/registers.h index 366f4654..a1536eb8 100644 --- a/arm9/lib/include/registers.h +++ b/arm9/lib/include/registers.h @@ -98,9 +98,12 @@ #define reg_PXI_SEND_FIFO (*(REGType32v *)0x4000188) #define reg_MI_MCCNT0 (*(REGType16v *)0x40001a0) +#define reg_CARD_MASTERCNT (*(REGType8v *)0x40001a1) //? #define reg_MI_MCD0 (*(REGType16v *)0x40001a2) #define reg_MI_MCCNT1 (*(REGType32v *)0x40001a4) +#define reg_CARD_CNT (*(REGType32v *)0x40001a4) //? #define reg_MI_MCCMD0 (*(REGType32v *)0x40001a8) +#define reg_CARD_CMD (*(REGType8v *)0x40001a8) //? #define reg_MI_MCCMD1 (*(REGType32v *)0x40001ac) #define reg_MI_EXMEMCNT (*(REGType16v *)0x4000204) @@ -355,6 +358,7 @@ #define reg_PXI_RECV_FIFO (*(REGType32v *)0x4100000) #define reg_MI_MCD1 (*(REGType32v *)0x4100010) +#define reg_CARD_DATA (*(REGType32v *)0x4100010) //? #define REG_PAD_KEYINPUT_L_SHIFT 9 #define REG_PAD_KEYINPUT_L_SIZE 1 diff --git a/arm9/lib/src/OS_reset.c b/arm9/lib/src/OS_reset.c index 6389fe45..a5ef6987 100644 --- a/arm9/lib/src/OS_reset.c +++ b/arm9/lib/src/OS_reset.c @@ -121,4 +121,67 @@ _01FF8284: blt _01FF8284 bx lr } + +enum +{ + CARD_MASTER_SELECT_ROM = 0x0, + CARD_MASTER_ENABLE = 0x80, + CARD_CMD_READ_PAGE = 0xb7, + CARD_CTRL_CMD_MASK = 0x07000000, + CARD_CTRL_CMD_PAGE = 0x01000000, + CARD_CTRL_READ = 0x00000000, + CARD_CTRL_RESET_HI = 0x20000000, + CARD_CTRL_START = 0x80000000, + CARD_CTRL_READY = 0x00800000, + CARD_ENUM_END +}; + +void OSi_ReadCardRom32(u32 src, void *dst, s32 len) //should be static, can't mark as such +{ + vu32 *const hdr_GAME_BUF = (vu32 *)(HW_ROM_HEADER_BUF + 0x60); + + const u32 ctrl_start = (u32)((*hdr_GAME_BUF &~CARD_CTRL_CMD_MASK) + | (CARD_CTRL_CMD_PAGE | CARD_CTRL_READ + | CARD_CTRL_START | CARD_CTRL_RESET_HI)); + + s32 pos = -(s32)(src & 511); + + while (reg_CARD_CNT & CARD_CTRL_START) {} + reg_CARD_MASTERCNT = (u32)(CARD_MASTER_SELECT_ROM | CARD_MASTER_ENABLE); + + for (src = (u32)(src + pos); pos < len; src += 512) + { + (®_CARD_CMD)[0] = (u8)(CARD_CMD_READ_PAGE); + (®_CARD_CMD)[1] = (u8)(src >> 24); + (®_CARD_CMD)[2] = (u8)(src >> 16); + (®_CARD_CMD)[3] = (u8)(src >> 8); + (®_CARD_CMD)[4] = (u8)(src >> 0); + (®_CARD_CMD)[5] = 0; + (®_CARD_CMD)[6] = 0; + (®_CARD_CMD)[7] = 0; + + reg_CARD_CNT = ctrl_start; + for (;;) + { + u32 ctrl = reg_CARD_CNT; + + if ((ctrl & CARD_CTRL_READY)) + { + const u32 data = reg_CARD_DATA; + + if ((pos >= 0) && (pos < len)) + { + *(u32 *)((u32)dst + pos) = data; + } + + pos += sizeof(u32); + } + + if (!(ctrl & CARD_CTRL_START)) + { + break; + } + } + } +} #pragma section ITCM end diff --git a/arm9/lib/src/SND_alarm.c b/arm9/lib/src/SND_alarm.c index b6178c8d..e216c02c 100644 --- a/arm9/lib/src/SND_alarm.c +++ b/arm9/lib/src/SND_alarm.c @@ -4,6 +4,7 @@ struct AlarmCallback { SNDAlarmCallback cb; void *data; u8 id; + u8 padding[3]; }; static struct AlarmCallback sCallbackTable[SND_ALARM_COUNT]; diff --git a/arm9/lib/src/SND_bank.c b/arm9/lib/src/SND_bank.c index bc339234..7f5bd94a 100644 --- a/arm9/lib/src/SND_bank.c +++ b/arm9/lib/src/SND_bank.c @@ -95,6 +95,7 @@ ARM_FUNC void SND_DestroyWaveArc(struct SNDWaveArc *waveArc) { } ARM_FUNC struct SNDInstPos SND_GetFirstInstDataPos(const struct SNDBankData *bankData) { +#pragma unused (bankData) struct SNDInstPos retval; retval.program = 0; retval.index = 0; diff --git a/arm9/lib/src/SND_command.c b/arm9/lib/src/SND_command.c index 4a867ce3..11622761 100644 --- a/arm9/lib/src/SND_command.c +++ b/arm9/lib/src/SND_command.c @@ -21,6 +21,7 @@ static struct SNDCommand *sFreeList; extern s32 PXI_SendWordByFifo(u32, u32, u32); extern void PXI_SetFifoRecvCallback(u32, void (*)(s32, s32)); extern BOOL PXI_IsCallbackReady(u32, u32); +extern void DC_FlushRange(void*, u32); static void InitPXI(void); static void RequestCommandProc(void); @@ -52,7 +53,7 @@ ARM_FUNC void SND_CommandInit(void) { cmd->id = SND_CMD_SET_SHARED_WORK; cmd->arg[0] = (u32)SNDi_SharedWork; SND_PushCommand(cmd); - SND_FlushCommand(SND_CMD_FLAG_BLOCK); + (void)SND_FlushCommand(SND_CMD_FLAG_BLOCK); } ARM_FUNC const struct SNDCommand *SND_RecvCommandReply(u32 flags) { @@ -61,7 +62,7 @@ ARM_FUNC const struct SNDCommand *SND_RecvCommandReply(u32 flags) { if (flags & SND_CMD_FLAG_BLOCK) { u32 tag = SNDi_GetFinishedCommandTag(); while (sFinishedTag == tag) { - OS_RestoreInterrupts(oldirq); + (void)OS_RestoreInterrupts(oldirq); OS_SpinWait(100); oldirq = OS_DisableInterrupts(); tag = SNDi_GetFinishedCommandTag(); @@ -69,7 +70,7 @@ ARM_FUNC const struct SNDCommand *SND_RecvCommandReply(u32 flags) { } else { u32 tag = SNDi_GetFinishedCommandTag(); if (sFinishedTag == tag) { - OS_RestoreInterrupts(oldirq); + (void)OS_RestoreInterrupts(oldirq); return NULL; } } @@ -93,7 +94,7 @@ ARM_FUNC const struct SNDCommand *SND_RecvCommandReply(u32 flags) { sWaitingCommandListCount--; sFinishedTag++; - OS_RestoreInterrupts(oldirq); + (void)OS_RestoreInterrupts(oldirq); return queueRead; } @@ -116,13 +117,13 @@ ARM_FUNC struct SNDCommand *SND_AllocCommand(u32 flags) { if (cmd != NULL) return cmd; } else { - SND_FlushCommand(SND_CMD_FLAG_BLOCK); + (void)SND_FlushCommand(SND_CMD_FLAG_BLOCK); } RequestCommandProc(); do { - SND_RecvCommandReply(SND_CMD_FLAG_BLOCK); + (void)SND_RecvCommandReply(SND_CMD_FLAG_BLOCK); cmd = AllocCommand(); } while (cmd == NULL); return cmd; @@ -142,25 +143,25 @@ ARM_FUNC void SND_PushCommand(struct SNDCommand *cmd) { cmd->llNext = NULL; - OS_RestoreInterrupts(oldirq); + (void)OS_RestoreInterrupts(oldirq); } ARM_FUNC BOOL SND_FlushCommand(u32 flags) { OSIntrMode oldirq = OS_DisableInterrupts(); if (sReserveList == NULL) { - OS_RestoreInterrupts(oldirq); + (void)OS_RestoreInterrupts(oldirq); return TRUE; } if (sWaitingCommandListCount >= SND_CMD_WAIT_QUEUE_COUNT) { if ((flags & SND_CMD_FLAG_BLOCK) == 0) { - OS_RestoreInterrupts(oldirq); + (void)OS_RestoreInterrupts(oldirq); return FALSE; } do { - SND_RecvCommandReply(SND_CMD_FLAG_BLOCK); + (void)SND_RecvCommandReply(SND_CMD_FLAG_BLOCK); } while (sWaitingCommandListCount >= SND_CMD_WAIT_QUEUE_COUNT); } @@ -169,13 +170,13 @@ ARM_FUNC BOOL SND_FlushCommand(u32 flags) { s32 result = PXI_SendWordByFifo(7, (u32)sReserveList, 0); if (result < 0) { if ((flags & SND_CMD_FLAG_BLOCK) == 0) { - OS_RestoreInterrupts(oldirq); + (void)OS_RestoreInterrupts(oldirq); return FALSE; } result = PXI_SendWordByFifo(7, (u32)sReserveList, 0); while (result < 0) { - OS_RestoreInterrupts(oldirq); + (void)OS_RestoreInterrupts(oldirq); OS_SpinWait(100); oldirq = OS_DisableInterrupts(); result = PXI_SendWordByFifo(7, (u32)sReserveList, 0); @@ -197,7 +198,7 @@ ARM_FUNC BOOL SND_FlushCommand(u32 flags) { sWaitingCommandListCount++; sCurrentTag++; - OS_RestoreInterrupts(oldirq); + (void)OS_RestoreInterrupts(oldirq); return TRUE; } @@ -216,7 +217,7 @@ ARM_FUNC void SND_WaitForCommandProc(u32 tag) { return; do { - SND_RecvCommandReply(SND_CMD_FLAG_BLOCK); + (void)SND_RecvCommandReply(SND_CMD_FLAG_BLOCK); } while (SND_IsFinishedCommandTag(tag) == 0); } @@ -229,7 +230,7 @@ ARM_FUNC u32 SND_GetCurrentCommandTag(void) { else retval = sCurrentTag; - OS_RestoreInterrupts(oldirq); + (void)OS_RestoreInterrupts(oldirq); return retval; } @@ -249,7 +250,7 @@ ARM_FUNC BOOL SND_IsFinishedCommandTag(u32 tag) { result = FALSE; } - OS_RestoreInterrupts(oldirq); + (void)OS_RestoreInterrupts(oldirq); return result; } @@ -260,7 +261,7 @@ ARM_FUNC s32 SND_CountFreeCommand(void) { for (struct SNDCommand *cmd = sFreeList; cmd != NULL; cmd = cmd->llNext) count++; - OS_RestoreInterrupts(oldirq); + (void)OS_RestoreInterrupts(oldirq); return count; } @@ -271,7 +272,7 @@ ARM_FUNC s32 SND_CountReservedCommand(void) { for (struct SNDCommand *cmd = sReserveList; cmd != NULL; cmd = cmd->llNext) count++; - OS_RestoreInterrupts(oldirq); + (void)OS_RestoreInterrupts(oldirq); return count; } @@ -280,9 +281,10 @@ ARM_FUNC s32 SND_CountWaitingCommand(void) { } ARM_FUNC static void PxiFifoCallback(s32 a, s32 b) { +#pragma unused (a) OSIntrMode oldirq = OS_DisableInterrupts(); SNDi_CallAlarmHandler(b); - OS_RestoreInterrupts(oldirq); + (void)OS_RestoreInterrupts(oldirq); } ARM_FUNC static void InitPXI(void) { @@ -306,7 +308,7 @@ ARM_FUNC static void RequestCommandProc(void) { ARM_FUNC static struct SNDCommand *AllocCommand(void) { OSIntrMode oldirq = OS_DisableInterrupts(); if (sFreeList == NULL) { - OS_RestoreInterrupts(oldirq); + (void)OS_RestoreInterrupts(oldirq); return NULL; } @@ -315,7 +317,7 @@ ARM_FUNC static struct SNDCommand *AllocCommand(void) { sFreeList = sFreeList->llNext; if (sFreeList == NULL) sFreeListEnd = NULL; - OS_RestoreInterrupts(oldirq); + (void)OS_RestoreInterrupts(oldirq); return retval; } @@ -328,6 +330,6 @@ ARM_FUNC static BOOL IsCommandAvailable(void) { // is this some kind of debug or ensata register? *(vu32 *)0x4FFF200 = 0x10; u32 resp = *(vu32 *)0x4FFF200; - OS_RestoreInterrupts(oldirq); + (void)OS_RestoreInterrupts(oldirq); return resp != 0; } diff --git a/arm9/lib/src/SND_interface.c b/arm9/lib/src/SND_interface.c index e8369477..42b5ff42 100644 --- a/arm9/lib/src/SND_interface.c +++ b/arm9/lib/src/SND_interface.c @@ -30,11 +30,11 @@ ARM_FUNC void SND_PauseSeq(s32 player, BOOL flag) { // ARM_FUNC void SND_SetPlayerTempoRatio(s32 player, s32 ratio) { } ARM_FUNC void SND_SetPlayerVolume(s32 player, s32 volume) { - SNDi_SetPlayerParam(player, 6, volume, 2); + SNDi_SetPlayerParam(player, 6, (u32)volume, 2); } ARM_FUNC void SND_SetPlayerChannelPriority(s32 player, s32 prio) { - SNDi_SetPlayerParam(player, 4, prio, 1); + SNDi_SetPlayerParam(player, 4, (u32)prio, 1); } // ARM_FUNC void SND_SetPlayerLocalVariable(s32 player, s32 varNo, s16 var) { } @@ -44,11 +44,11 @@ ARM_FUNC void SND_SetPlayerChannelPriority(s32 player, s32 prio) { // ARM_FUNC void SND_SetTrackVolume(s32 player, u32 trackBitMask, s32 volume) { } ARM_FUNC void SND_SetTrackPitch(s32 player, u32 trackBitMask, s32 pitch) { - SNDi_SetTrackParam(player, trackBitMask, 12, pitch, 2); + SNDi_SetTrackParam(player, trackBitMask, 12, (u32)pitch, 2); } ARM_FUNC void SND_SetTrackPan(s32 player, u32 trackBitMask, s32 pan) { - SNDi_SetTrackParam(player, trackBitMask, 9, pan, 1); + SNDi_SetTrackParam(player, trackBitMask, 9, (u32)pan, 1); } ARM_FUNC void SND_SetTrackAllocatableChannel(s32 player, u32 trackBitMask, u32 chnBitMask) { @@ -65,7 +65,7 @@ ARM_FUNC void SND_StopTimer(u32 chnBitMask, u32 capBitMask, u32 alarmBitMask, u3 while (i < SND_ALARM_COUNT && tmpMask != 0) { if (tmpMask & 1) - SNDi_IncAlarmId(i); + SNDi_IncAlarmId((u32)i); i++; tmpMask >>= 1; } @@ -79,7 +79,7 @@ ARM_FUNC void SND_SetupCapture(s32 capture, s32 format, void *bufferPtr, u32 len } ARM_FUNC void SND_SetupAlarm(s32 alarm, u32 tick, u32 period, SNDAlarmCallback cb, void *userData) { - PushCmd4(SND_CMD_SETUP_ALARM, alarm, tick, period, SNDi_SetAlarmHandler(alarm, cb, userData)); + PushCmd4(SND_CMD_SETUP_ALARM, alarm, tick, period, SNDi_SetAlarmHandler((u32)alarm, cb, userData)); } // ARM_FUNC void SND_SetTrackMute(s32 player, u32 trackBitMask, BOOL flag) { } diff --git a/arm9/lib/src/SND_main.c b/arm9/lib/src/SND_main.c index f533b87c..34b839b1 100644 --- a/arm9/lib/src/SND_main.c +++ b/arm9/lib/src/SND_main.c @@ -1,4 +1,6 @@ #include "SND_main.h" +#include "SND_command.h" +#include "SND_alarm.h" #include "global.h" #include "OS_mutex.h" @@ -7,6 +9,7 @@ static struct OSMutex sSndMutex; static s32 sSndInitialized; // TODO remove these declarations once we have the functions in the headers +void OS_InitMutex(struct OSMutex *); void OS_UnlockMutex(struct OSMutex *); void OS_LockMutex(struct OSMutex *); diff --git a/arm9/src/filesystem.c b/arm9/src/filesystem.c index 16258195..3775b0b8 100644 --- a/arm9/src/filesystem.c +++ b/arm9/src/filesystem.c @@ -172,27 +172,27 @@ THUMB_FUNC void ReadFromNarcMemberByPathAndId(void * dest, const char * path, s3 FS_SeekFile(&file, 12, FS_SEEK_SET); FS_ReadFile(&file, &chunk_size, 2); chunk_starts[0] = chunk_size; - FS_SeekFile(&file, chunk_starts[0] + 4, FS_SEEK_SET); + FS_SeekFile(&file, (s32)(chunk_starts[0] + 4), FS_SEEK_SET); FS_ReadFile(&file, &chunk_size, 4); FS_ReadFile(&file, &num_files, 2); if (num_files <= file_idx) ErrorHandling(); chunk_starts[1] = chunk_starts[0] + chunk_size; - FS_SeekFile(&file, chunk_starts[1] + 4, FS_SEEK_SET); + FS_SeekFile(&file, (s32)(chunk_starts[1] + 4), FS_SEEK_SET); FS_ReadFile(&file, &chunk_size, 4); btnf_size = chunk_size; - FS_SeekFile(&file, chunk_starts[0] + 12 + 8 * file_idx, FS_SEEK_SET); + FS_SeekFile(&file, (s32)(chunk_starts[0] + 12 + 8 * file_idx), FS_SEEK_SET); FS_ReadFile(&file, &file_start, 4); FS_ReadFile(&file, &file_end, 4); chunk_starts[2] = chunk_starts[1] + btnf_size; - FS_SeekFile(&file, chunk_starts[2] + 8 + file_start + offset, FS_SEEK_SET); + FS_SeekFile(&file, (s32)(chunk_starts[2] + 8 + file_start + offset), FS_SEEK_SET); if (size == 0) chunk_size = file_end - file_start; else chunk_size = size; if (chunk_size == 0) ErrorHandling(); - FS_ReadFile(&file, dest, chunk_size); + FS_ReadFile(&file, dest, (s32)chunk_size); FS_CloseFile(&file); } @@ -213,20 +213,20 @@ THUMB_FUNC void * AllocAndReadFromNarcMemberByPathAndId(const char * path, s32 f FS_SeekFile(&file, 12, FS_SEEK_SET); FS_ReadFile(&file, &chunk_size, 2); chunk_starts[0] = chunk_size; - FS_SeekFile(&file, chunk_starts[0] + 4, FS_SEEK_SET); + FS_SeekFile(&file, (s32)(chunk_starts[0] + 4), FS_SEEK_SET); FS_ReadFile(&file, &chunk_size, 4); FS_ReadFile(&file, &num_files, 2); if (num_files <= file_idx) ErrorHandling(); chunk_starts[1] = chunk_starts[0] + chunk_size; - FS_SeekFile(&file, chunk_starts[1] + 4, FS_SEEK_SET); + FS_SeekFile(&file, (s32)(chunk_starts[1] + 4), FS_SEEK_SET); FS_ReadFile(&file, &chunk_size, 4); btnf_size = chunk_size; - FS_SeekFile(&file, chunk_starts[0] + 12 + 8 * file_idx, FS_SEEK_SET); + FS_SeekFile(&file, (s32)(chunk_starts[0] + 12 + 8 * file_idx), FS_SEEK_SET); FS_ReadFile(&file, &file_start, 4); FS_ReadFile(&file, &file_end, 4); chunk_starts[2] = chunk_starts[1] + btnf_size; - FS_SeekFile(&file, chunk_starts[2] + 8 + file_start + offset, FS_SEEK_SET); + FS_SeekFile(&file, (s32)(chunk_starts[2] + 8 + file_start + offset), FS_SEEK_SET); if (size == 0) chunk_size = file_end - file_start; else @@ -242,7 +242,7 @@ THUMB_FUNC void * AllocAndReadFromNarcMemberByPathAndId(const char * path, s32 f dest = AllocFromHeapAtEnd(heap_id, chunk_size); break; } - FS_ReadFile(&file, dest, chunk_size); + FS_ReadFile(&file, dest, (s32)chunk_size); FS_CloseFile(&file); return dest; } @@ -293,20 +293,20 @@ THUMB_FUNC u32 GetNarcMemberSizeByIdPair(NarcId narc_id, s32 file_idx) FS_SeekFile(&file, 12, FS_SEEK_SET); FS_ReadFile(&file, &chunk_size, 2); chunk_starts[0] = chunk_size; - FS_SeekFile(&file, chunk_starts[0] + 4, FS_SEEK_SET); + FS_SeekFile(&file, (s32)(chunk_starts[0] + 4), FS_SEEK_SET); FS_ReadFile(&file, &chunk_size, 4); FS_ReadFile(&file, &num_files, 2); if (num_files <= file_idx) ErrorHandling(); chunk_starts[1] = chunk_starts[0] + chunk_size; - FS_SeekFile(&file, chunk_starts[1] + 4, FS_SEEK_SET); + FS_SeekFile(&file, (s32)(chunk_starts[1] + 4), FS_SEEK_SET); FS_ReadFile(&file, &chunk_size, 4); btnf_size = chunk_size; - FS_SeekFile(&file, chunk_starts[0] + 12 + 8 * file_idx, FS_SEEK_SET); + FS_SeekFile(&file, (s32)(chunk_starts[0] + 12 + 8 * file_idx), FS_SEEK_SET); FS_ReadFile(&file, &file_start, 4); FS_ReadFile(&file, &file_end, 4); chunk_starts[2] = chunk_starts[1] + btnf_size; - FS_SeekFile(&file, chunk_starts[2] + 8 + file_start + 0, FS_SEEK_SET); + FS_SeekFile(&file, (s32)(chunk_starts[2] + 8 + file_start + 0), FS_SEEK_SET); chunk_size = file_end - file_start; if (chunk_size == 0) ErrorHandling(); @@ -326,11 +326,11 @@ THUMB_FUNC NARC * NARC_ctor(NarcId narc_id, u32 heap_id) FS_OpenFile(&narc->file, sNarcFileList[narc_id]); FS_SeekFile(&narc->file, 12, FS_SEEK_SET); FS_ReadFile(&narc->file, &narc->btaf_start, 2); - FS_SeekFile(&narc->file, narc->btaf_start + 4, FS_SEEK_SET); + FS_SeekFile(&narc->file, (s32)(narc->btaf_start + 4), FS_SEEK_SET); FS_ReadFile(&narc->file, &chunk_size, 4); FS_ReadFile(&narc->file, &narc->num_files, 2); btnf_start = narc->btaf_start + chunk_size; - FS_SeekFile(&narc->file, btnf_start + 4, FS_SEEK_SET); + FS_SeekFile(&narc->file, (s32)(btnf_start + 4), FS_SEEK_SET); FS_ReadFile(&narc->file, &chunk_size, 4); narc->gmif_start = btnf_start + chunk_size; } @@ -350,14 +350,14 @@ THUMB_FUNC void * NARC_AllocAndReadWholeMember(NARC * narc, u32 file_id, u32 hea void * dest; if (narc->num_files <= file_id) ErrorHandling(); - FS_SeekFile(&narc->file, narc->btaf_start + 12 + 8 * file_id, FS_SEEK_SET); + FS_SeekFile(&narc->file, (s32)(narc->btaf_start + 12 + 8 * file_id), FS_SEEK_SET); FS_ReadFile(&narc->file, &file_start, 4); FS_ReadFile(&narc->file, &file_end, 4); - FS_SeekFile(&narc->file, narc->gmif_start + 8 + file_start, FS_SEEK_SET); + FS_SeekFile(&narc->file, (s32)(narc->gmif_start + 8 + file_start), FS_SEEK_SET); dest = AllocFromHeap(heap_id, file_end - file_start); if (dest != NULL) { - FS_ReadFile(&narc->file, dest, file_end - file_start); + FS_ReadFile(&narc->file, dest, (s32)(file_end - file_start)); } return dest; } @@ -368,11 +368,11 @@ THUMB_FUNC void NARC_ReadWholeMember(NARC * narc, u32 file_id, void * dest) u32 file_end; if (narc->num_files <= file_id) ErrorHandling(); - FS_SeekFile(&narc->file, narc->btaf_start + 12 + 8 * file_id, FS_SEEK_SET); + FS_SeekFile(&narc->file, (s32)(narc->btaf_start + 12 + 8 * file_id), FS_SEEK_SET); FS_ReadFile(&narc->file, &file_start, 4); FS_ReadFile(&narc->file, &file_end, 4); - FS_SeekFile(&narc->file, narc->gmif_start + 8 + file_start, FS_SEEK_SET); - FS_ReadFile(&narc->file, dest, file_end - file_start); + FS_SeekFile(&narc->file, (s32)(narc->gmif_start + 8 + file_start), FS_SEEK_SET); + FS_ReadFile(&narc->file, dest, (s32)(file_end - file_start)); } THUMB_FUNC u32 NARC_GetMemberSize(NARC * narc, u32 file_id) @@ -381,7 +381,7 @@ THUMB_FUNC u32 NARC_GetMemberSize(NARC * narc, u32 file_id) u32 file_end; if (narc->num_files <= file_id) ErrorHandling(); - FS_SeekFile(&narc->file, narc->btaf_start + 12 + 8 * file_id, FS_SEEK_SET); + FS_SeekFile(&narc->file, (s32)(narc->btaf_start + 12 + 8 * file_id), FS_SEEK_SET); FS_ReadFile(&narc->file, &file_start, 4); FS_ReadFile(&narc->file, &file_end, 4); return file_end - file_start; @@ -392,15 +392,15 @@ THUMB_FUNC void NARC_ReadFromMember(NARC * narc, u32 file_id, u32 pos, u32 size, u32 file_start; if (narc->num_files <= file_id) ErrorHandling(); - FS_SeekFile(&narc->file, narc->btaf_start + 12 + 8 * file_id, FS_SEEK_SET); + FS_SeekFile(&narc->file, (s32)(narc->btaf_start + 12 + 8 * file_id), FS_SEEK_SET); FS_ReadFile(&narc->file, &file_start, 4); - FS_SeekFile(&narc->file, narc->gmif_start + 8 + file_start + pos, FS_SEEK_SET); - FS_ReadFile(&narc->file, dest, size); + FS_SeekFile(&narc->file, (s32)(narc->gmif_start + 8 + file_start + pos), FS_SEEK_SET); + FS_ReadFile(&narc->file, dest, (s32)size); } THUMB_FUNC void NARC_ReadFile(NARC * narc, u32 size, void * dest) { - FS_ReadFile(&narc->file, dest, size); + FS_ReadFile(&narc->file, dest, (s32)size); } THUMB_FUNC u16 NARC_GetFileCount(NARC * narc) diff --git a/arm9/src/unk_02006234.c b/arm9/src/unk_02006234.c index 8915ab83..af93ed3e 100644 --- a/arm9/src/unk_02006234.c +++ b/arm9/src/unk_02006234.c @@ -3,6 +3,14 @@ #include "poke_overlay.h" #include "heap.h" +struct UnkStruct_02006234 * FUN_02006234(struct Unk21DBE18 * ovly_mgr, int * a1, u32 heap_id); //todo header? +void FUN_02006260(struct UnkStruct_02006234 * a0); +void * FUN_02006268(struct UnkStruct_02006234 * a0, u32 size, u32 heap_id); +void * FUN_02006278(struct UnkStruct_02006234 * a0); +void FUN_0200627C(struct UnkStruct_02006234 * a0); +int * FUN_0200628C(struct UnkStruct_02006234 * a0); +BOOL FUN_02006290(struct UnkStruct_02006234 * a0); + THUMB_FUNC struct UnkStruct_02006234 * FUN_02006234(struct Unk21DBE18 * ovly_mgr, int * a1, u32 heap_id) { struct UnkStruct_02006234 * ret = (struct UnkStruct_02006234 *)AllocFromHeap(heap_id, sizeof(struct UnkStruct_02006234)); |