mirror of
https://github.com/pret/pokediamond.git
synced 2026-09-29 03:46:47 -05:00
Merge pull request #146 from red031000/master
finally finish OS_reset and stop git being stupid
This commit is contained in:
@@ -2,27 +2,6 @@
|
||||
.include "global.inc"
|
||||
.section .text
|
||||
|
||||
; OS
|
||||
arm_func_start OSi_DoResetSystem ;OS_reset.c
|
||||
OSi_DoResetSystem: ; 0x01FF84A4
|
||||
stmfd sp!, {lr}
|
||||
sub sp, sp, #4
|
||||
ldr r0, _01FF84DC
|
||||
_01FF84B0:
|
||||
ldrh r1, [r0]
|
||||
cmp r1, #0
|
||||
beq _01FF84B0
|
||||
ldr r0, _01FF84E0
|
||||
mov r1, #0
|
||||
strh r1, [r0]
|
||||
bl OSi_ReloadRomData
|
||||
bl OSi_DoBoot
|
||||
add sp, sp, #4
|
||||
ldmfd sp!, {lr}
|
||||
bx lr
|
||||
_01FF84DC: .word OSi_IsResetOccurred
|
||||
_01FF84E0: .word 0x04000208
|
||||
|
||||
; MI
|
||||
arm_func_start MIi_DmaSetParams_wait_noInt
|
||||
MIi_DmaSetParams_wait_noInt: ; 0x01FF84E4
|
||||
|
||||
3
arm9/lib/.gitignore
vendored
Normal file
3
arm9/lib/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
libsyscall.a
|
||||
|
||||
syscall/*.o
|
||||
@@ -16,10 +16,11 @@ void OS_InitReset(void);
|
||||
static void OSi_CommonCallback(PXIFifoTag tag, u32 data, BOOL err);
|
||||
static void OSi_SendToPxi(u16 data);
|
||||
void OS_ResetSystem(u32 parameter);
|
||||
static void OSi_DoResetSystem(void);
|
||||
void OSi_DoBoot(void);
|
||||
static void OSi_CpuClear32(register u32 data, register void *destp, register u32 size);
|
||||
void OSi_ReloadRomData(void);
|
||||
void OSi_ReadCardRom32(u32 src, void *dst, s32 len);
|
||||
static void OSi_ReloadRomData(void);
|
||||
static void OSi_ReadCardRom32(u32 src, void *dst, s32 len);
|
||||
|
||||
static inline u32 OS_GetResetParameter(void)
|
||||
{
|
||||
|
||||
@@ -23,7 +23,6 @@ extern void DC_StoreAll(void);
|
||||
extern void DC_InvalidateAll(void);
|
||||
extern void IC_InvalidateAll(void);
|
||||
extern void DC_WaitWriteBufferEmpty(void);
|
||||
extern void OSi_DoResetSystem(void); //in itcm, should technically be in this file
|
||||
|
||||
ARM_FUNC void OS_InitReset(void) {
|
||||
if (OSi_IsInitReset) {
|
||||
@@ -64,10 +63,19 @@ ARM_FUNC void OS_ResetSystem(u32 parameter) {
|
||||
(void)OS_ResetRequestIrqMask((u32)~0);
|
||||
*(u32 *)HW_RESET_PARAMETER_BUF = parameter;
|
||||
OSi_SendToPxi(OS_PXI_COMMAND_RESET);
|
||||
OSi_DoResetSystem(); //oh boy this is in itcm, that's gonna be fun to deal with Kappa
|
||||
OSi_DoResetSystem();
|
||||
}
|
||||
|
||||
#pragma section ITCM begin
|
||||
ARM_FUNC static void OSi_DoResetSystem(void)
|
||||
{
|
||||
while (!OSi_IsResetOccurred) { }
|
||||
|
||||
reg_OS_IME = 0;
|
||||
OSi_ReloadRomData();
|
||||
OSi_DoBoot();
|
||||
}
|
||||
|
||||
ARM_FUNC asm void OSi_DoBoot(void)
|
||||
{
|
||||
mov ip, #0x04000000
|
||||
@@ -127,22 +135,7 @@ _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
|
||||
};
|
||||
|
||||
|
||||
ARM_FUNC void OSi_ReloadRomData(void)
|
||||
ARM_FUNC static void OSi_ReloadRomData(void)
|
||||
{
|
||||
u32 header = (u32)HW_ROM_HEADER_BUF;
|
||||
const u32 rom_base = *(u32 *)HW_ROM_BASE_OFFSET_BUF;
|
||||
@@ -182,7 +175,21 @@ ARM_FUNC void OSi_ReloadRomData(void)
|
||||
OSi_ReadCardRom32(src_arm7, (void *)dst_arm7, (s32)len_arm7);
|
||||
}
|
||||
|
||||
ARM_FUNC void OSi_ReadCardRom32(u32 src, void *dst, s32 len) //should be static, can't mark as such
|
||||
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
|
||||
};
|
||||
|
||||
ARM_FUNC static void OSi_ReadCardRom32(u32 src, void *dst, s32 len)
|
||||
{
|
||||
vu32 *const hdr_GAME_BUF = (vu32 *)(HW_ROM_HEADER_BUF + 0x60);
|
||||
|
||||
|
||||
2
files/.gitattributes
vendored
Normal file
2
files/.gitattributes
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
*.bin binary
|
||||
*.txt eol=crlf
|
||||
Reference in New Issue
Block a user