Matched osInitialize using libreultra/sm64 and a little grunt work

This commit is contained in:
Ryan Myers
2021-10-21 14:14:55 -04:00
parent 6ca793fcc3
commit e3ef4bd3cc
8 changed files with 29 additions and 268 deletions
+1 -1
View File
@@ -472,7 +472,7 @@ $(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) | $(ALL_ASSETS_BUILT)
$(V)$(CPP) $(VERSION_CFLAGS) -DBUILD_DIR=$(BUILD_DIR) -MMD -MP -MT $@ -MF $@.d -o $@ $<
$(BUILD_DIR)/$(TARGET).elf: $(O_FILES) $(BUILD_DIR)/$(LD_SCRIPT) | $(ALL_ASSETS_BUILT)
@$(PRINT) "$(GREEN)Linking ELF file: $(BLUE)$@ $(NO_COL)\n"
@$(PRINT) "$(GREEN)Linking ELF file: $(BLUE)$@ $(NO_COL)\n"
$(V)$(LD) $(LDFLAGS) -o $@ $(O_FILES) $(LIBS)
$(BUILD_DIR)/$(TARGET).bin: $(BUILD_DIR)/$(TARGET).elf | $(ALL_ASSETS_BUILT)
@@ -1,180 +0,0 @@
glabel osInitialize
/* 0CD1A0 800CC5A0 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 0CD1A4 800CC5A4 AFBF001C */ sw $ra, 0x1c($sp)
/* 0CD1A8 800CC5A8 240E0001 */ li $t6, 1
/* 0CD1AC 800CC5AC 3C018013 */ lui $at, %hi(gThread30Stack) # $at, 0x8013
/* 0CD1B0 800CC5B0 AFB00018 */ sw $s0, 0x18($sp)
/* 0CD1B4 800CC5B4 AFA00038 */ sw $zero, 0x38($sp)
/* 0CD1B8 800CC5B8 0C03515C */ jal __osGetSR
/* 0CD1BC 800CC5BC AC2ECCC0 */ sw $t6, %lo(gThread30Stack)($at)
/* 0CD1C0 800CC5C0 00408025 */ move $s0, $v0
/* 0CD1C4 800CC5C4 3C012000 */ lui $at, 0x2000
/* 0CD1C8 800CC5C8 0C035158 */ jal __osSetSR
/* 0CD1CC 800CC5CC 02012025 */ or $a0, $s0, $at
/* 0CD1D0 800CC5D0 3C040100 */ lui $a0, (0x01000800 >> 16) # lui $a0, 0x100
/* 0CD1D4 800CC5D4 0C035160 */ jal __osSetFpcCsr
/* 0CD1D8 800CC5D8 34840800 */ ori $a0, (0x01000800 & 0xFFFF) # ori $a0, $a0, 0x800
/* 0CD1DC 800CC5DC 3C041FC0 */ lui $a0, (0x1FC007FC >> 16) # lui $a0, 0x1fc0
/* 0CD1E0 800CC5E0 348407FC */ ori $a0, (0x1FC007FC & 0xFFFF) # ori $a0, $a0, 0x7fc
/* 0CD1E4 800CC5E4 0C035164 */ jal __osSiRawReadIo
/* 0CD1E8 800CC5E8 27A5003C */ addiu $a1, $sp, 0x3c
/* 0CD1EC 800CC5EC 10400007 */ beqz $v0, .L800CC60C
/* 0CD1F0 800CC5F0 00000000 */ nop
.L800CC5F4:
/* 0CD1F4 800CC5F4 3C041FC0 */ lui $a0, (0x1FC007FC >> 16) # lui $a0, 0x1fc0
/* 0CD1F8 800CC5F8 348407FC */ ori $a0, (0x1FC007FC & 0xFFFF) # ori $a0, $a0, 0x7fc
/* 0CD1FC 800CC5FC 0C035164 */ jal __osSiRawReadIo
/* 0CD200 800CC600 27A5003C */ addiu $a1, $sp, 0x3c
/* 0CD204 800CC604 1440FFFB */ bnez $v0, .L800CC5F4
/* 0CD208 800CC608 00000000 */ nop
.L800CC60C:
/* 0CD20C 800CC60C 8FA5003C */ lw $a1, 0x3c($sp)
/* 0CD210 800CC610 3C041FC0 */ lui $a0, (0x1FC007FC >> 16) # lui $a0, 0x1fc0
/* 0CD214 800CC614 348407FC */ ori $a0, (0x1FC007FC & 0xFFFF) # ori $a0, $a0, 0x7fc
/* 0CD218 800CC618 34AF0008 */ ori $t7, $a1, 8
/* 0CD21C 800CC61C 0C035178 */ jal __osSiRawWriteIo
/* 0CD220 800CC620 01E02825 */ move $a1, $t7
/* 0CD224 800CC624 10400009 */ beqz $v0, .L800CC64C
/* 0CD228 800CC628 00000000 */ nop
.L800CC62C:
/* 0CD22C 800CC62C 8FA5003C */ lw $a1, 0x3c($sp)
/* 0CD230 800CC630 3C041FC0 */ lui $a0, (0x1FC007FC >> 16) # lui $a0, 0x1fc0
/* 0CD234 800CC634 348407FC */ ori $a0, (0x1FC007FC & 0xFFFF) # ori $a0, $a0, 0x7fc
/* 0CD238 800CC638 34B80008 */ ori $t8, $a1, 8
/* 0CD23C 800CC63C 0C035178 */ jal __osSiRawWriteIo
/* 0CD240 800CC640 03002825 */ move $a1, $t8
/* 0CD244 800CC644 1440FFF9 */ bnez $v0, .L800CC62C
/* 0CD248 800CC648 00000000 */ nop
.L800CC64C:
/* 0CD24C 800CC64C 3C08800D */ lui $t0, %hi(__osExceptionPreamble) # $t0, 0x800d
/* 0CD250 800CC650 25082CB0 */ addiu $t0, %lo(__osExceptionPreamble) # addiu $t0, $t0, 0x2cb0
/* 0CD254 800CC654 8D010000 */ lw $at, ($t0)
/* 0CD258 800CC658 3C198000 */ lui $t9, 0x8000
/* 0CD25C 800CC65C 3C0D800D */ lui $t5, %hi(__osExceptionPreamble) # $t5, 0x800d
/* 0CD260 800CC660 AF210000 */ sw $at, ($t9)
/* 0CD264 800CC664 8D0B0004 */ lw $t3, 4($t0)
/* 0CD268 800CC668 25AD2CB0 */ addiu $t5, %lo(__osExceptionPreamble) # addiu $t5, $t5, 0x2cb0
/* 0CD26C 800CC66C 3C0C8000 */ lui $t4, 0x8000
/* 0CD270 800CC670 AF2B0004 */ sw $t3, 4($t9)
/* 0CD274 800CC674 8D010008 */ lw $at, 8($t0)
/* 0CD278 800CC678 358C0080 */ ori $t4, (0x80000080 & 0xFFFF) # ori $t4, $t4, 0x80
/* 0CD27C 800CC67C 3C09800D */ lui $t1, %hi(__osExceptionPreamble) # $t1, 0x800d
/* 0CD280 800CC680 AF210008 */ sw $at, 8($t9)
/* 0CD284 800CC684 8D0B000C */ lw $t3, 0xc($t0)
/* 0CD288 800CC688 25292CB0 */ addiu $t1, %lo(__osExceptionPreamble) # addiu $t1, $t1, 0x2cb0
/* 0CD28C 800CC68C 3C0A8000 */ lui $t2, 0x8000
/* 0CD290 800CC690 AF2B000C */ sw $t3, 0xc($t9)
/* 0CD294 800CC694 8DA10000 */ lw $at, ($t5)
/* 0CD298 800CC698 354A0100 */ ori $t2, (0x80000100 & 0xFFFF) # ori $t2, $t2, 0x100
/* 0CD29C 800CC69C 3C0E800D */ lui $t6, %hi(__osExceptionPreamble) # $t6, 0x800d
/* 0CD2A0 800CC6A0 AD810000 */ sw $at, ($t4)
/* 0CD2A4 800CC6A4 8DB80004 */ lw $t8, 4($t5)
/* 0CD2A8 800CC6A8 25CE2CB0 */ addiu $t6, %lo(__osExceptionPreamble) # addiu $t6, $t6, 0x2cb0
/* 0CD2AC 800CC6AC 3C0F8000 */ lui $t7, 0x8000
/* 0CD2B0 800CC6B0 AD980004 */ sw $t8, 4($t4)
/* 0CD2B4 800CC6B4 8DA10008 */ lw $at, 8($t5)
/* 0CD2B8 800CC6B8 35EF0180 */ ori $t7, (0x80000180 & 0xFFFF) # ori $t7, $t7, 0x180
/* 0CD2BC 800CC6BC 3C048000 */ lui $a0, 0x8000
/* 0CD2C0 800CC6C0 AD810008 */ sw $at, 8($t4)
/* 0CD2C4 800CC6C4 8DB8000C */ lw $t8, 0xc($t5)
/* 0CD2C8 800CC6C8 24050190 */ li $a1, 400
/* 0CD2CC 800CC6CC AD98000C */ sw $t8, 0xc($t4)
/* 0CD2D0 800CC6D0 8D210000 */ lw $at, ($t1)
/* 0CD2D4 800CC6D4 AD410000 */ sw $at, ($t2)
/* 0CD2D8 800CC6D8 8D2B0004 */ lw $t3, 4($t1)
/* 0CD2DC 800CC6DC AD4B0004 */ sw $t3, 4($t2)
/* 0CD2E0 800CC6E0 8D210008 */ lw $at, 8($t1)
/* 0CD2E4 800CC6E4 AD410008 */ sw $at, 8($t2)
/* 0CD2E8 800CC6E8 8D2B000C */ lw $t3, 0xc($t1)
/* 0CD2EC 800CC6EC AD4B000C */ sw $t3, 0xc($t2)
/* 0CD2F0 800CC6F0 8DC10000 */ lw $at, ($t6)
/* 0CD2F4 800CC6F4 ADE10000 */ sw $at, ($t7)
/* 0CD2F8 800CC6F8 8DD80004 */ lw $t8, 4($t6)
/* 0CD2FC 800CC6FC ADF80004 */ sw $t8, 4($t7)
/* 0CD300 800CC700 8DC10008 */ lw $at, 8($t6)
/* 0CD304 800CC704 ADE10008 */ sw $at, 8($t7)
/* 0CD308 800CC708 8DD8000C */ lw $t8, 0xc($t6)
/* 0CD30C 800CC70C 0C03518C */ jal osWritebackDCache
/* 0CD310 800CC710 ADF8000C */ sw $t8, 0xC($t7)
/* 0CD314 800CC714 3C048000 */ lui $a0, 0x8000
/* 0CD318 800CC718 0C0351AC */ jal osInvalICache
/* 0CD31C 800CC71C 24050190 */ li $a1, 400
/* 0CD320 800CC720 0C0351CC */ jal osMapTLBRdb
/* 0CD324 800CC724 00000000 */ nop
/* 0CD328 800CC728 24040004 */ li $a0, 4
/* 0CD32C 800CC72C 0C0351E4 */ jal osPiRawWriteIo
/* 0CD330 800CC730 27A50038 */ addiu $a1, $sp, 0x38
/* 0CD334 800CC734 8FA80038 */ lw $t0, 0x38($sp)
/* 0CD338 800CC738 2401FFF0 */ li $at, -16
/* 0CD33C 800CC73C 0101C824 */ and $t9, $t0, $at
/* 0CD340 800CC740 13200006 */ beqz $t9, .L800CC75C
/* 0CD344 800CC744 AFB90038 */ sw $t9, 0x38($sp)
/* 0CD348 800CC748 3C01800E */ lui $at, %hi(osClockRate) # $at, 0x800e
/* 0CD34C 800CC74C 03205825 */ move $t3, $t9
/* 0CD350 800CC750 240A0000 */ li $t2, 0
/* 0CD354 800CC754 AC2A38A0 */ sw $t2, %lo(osClockRate)($at)
/* 0CD358 800CC758 AC2B38A4 */ sw $t3, %lo(osClockRate+4)($at)
.L800CC75C:
/* 0CD35C 800CC75C 3C04800E */ lui $a0, %hi(osClockRate) # $a0, 0x800e
/* 0CD360 800CC760 3C05800E */ lui $a1, %hi(osClockRate+4) # $a1, 0x800e
/* 0CD364 800CC764 8CA538A4 */ lw $a1, %lo(osClockRate+4)($a1)
/* 0CD368 800CC768 8C8438A0 */ lw $a0, %lo(osClockRate)($a0)
/* 0CD36C 800CC76C 24060000 */ li $a2, 0
/* 0CD370 800CC770 0C033AF2 */ jal __ll_mul
/* 0CD374 800CC774 24070003 */ li $a3, 3
/* 0CD378 800CC778 AFA20020 */ sw $v0, 0x20($sp)
/* 0CD37C 800CC77C AFA30024 */ sw $v1, 0x24($sp)
/* 0CD380 800CC780 8FA50024 */ lw $a1, 0x24($sp)
/* 0CD384 800CC784 8FA40020 */ lw $a0, 0x20($sp)
/* 0CD388 800CC788 24060000 */ li $a2, 0
/* 0CD38C 800CC78C 0C033AB2 */ jal __ull_div
/* 0CD390 800CC790 24070004 */ li $a3, 4
/* 0CD394 800CC794 3C098000 */ lui $t1, %hi(osResetType) # $t1, 0x8000
/* 0CD398 800CC798 8D29030C */ lw $t1, %lo(osResetType)($t1)
/* 0CD39C 800CC79C 3C01800E */ lui $at, %hi(osClockRate) # $at, 0x800e
/* 0CD3A0 800CC7A0 AC2238A0 */ sw $v0, %lo(osClockRate)($at)
/* 0CD3A4 800CC7A4 15200005 */ bnez $t1, .L800CC7BC
/* 0CD3A8 800CC7A8 AC2338A4 */ sw $v1, %lo(osClockRate+4)($at)
/* 0CD3AC 800CC7AC 3C048000 */ lui $a0, %hi(osAppNMIBuffer) # $a0, 0x8000
/* 0CD3B0 800CC7B0 2484031C */ addiu $a0, %lo(osAppNMIBuffer) # addiu $a0, $a0, 0x31c
/* 0CD3B4 800CC7B4 0C034138 */ jal bzero
/* 0CD3B8 800CC7B8 24050040 */ li $a1, 64
.L800CC7BC:
/* 0CD3BC 800CC7BC 3C0DA460 */ lui $t5, %hi(PI_STATUS_REG) # $t5, 0xa460
/* 0CD3C0 800CC7C0 8DAC0010 */ lw $t4, %lo(PI_STATUS_REG)($t5)
/* 0CD3C4 800CC7C4 318F0003 */ andi $t7, $t4, 3
/* 0CD3C8 800CC7C8 11E00008 */ beqz $t7, .L800CC7EC
/* 0CD3CC 800CC7CC AFAC0030 */ sw $t4, 0x30($sp)
.L800CC7D0:
/* 0CD3D0 800CC7D0 3C0EA460 */ lui $t6, %hi(PI_STATUS_REG) # $t6, 0xa460
/* 0CD3D4 800CC7D4 8DD80010 */ lw $t8, %lo(PI_STATUS_REG)($t6)
/* 0CD3D8 800CC7D8 AFB80030 */ sw $t8, 0x30($sp)
/* 0CD3DC 800CC7DC 8FA80030 */ lw $t0, 0x30($sp)
/* 0CD3E0 800CC7E0 31190003 */ andi $t9, $t0, 3
/* 0CD3E4 800CC7E4 1720FFFA */ bnez $t9, .L800CC7D0
/* 0CD3E8 800CC7E8 00000000 */ nop
.L800CC7EC:
/* 0CD3EC 800CC7EC 3C0AA500 */ lui $t2, %hi(LEO_STATUS) # $t2, 0xa500
/* 0CD3F0 800CC7F0 8D4B0508 */ lw $t3, %lo(LEO_STATUS)($t2)
/* 0CD3F4 800CC7F4 3169FFFF */ andi $t1, $t3, 0xffff
/* 0CD3F8 800CC7F8 1520000A */ bnez $t1, .L800CC824
/* 0CD3FC 800CC7FC AFAB0034 */ sw $t3, 0x34($sp)
/* 0CD400 800CC800 240D0001 */ li $t5, 1
/* 0CD404 800CC804 3C01800E */ lui $at, %hi(D_800E38B0) # $at, 0x800e
/* 0CD408 800CC808 3C05800C */ lui $a1, %hi(func_800C7340) # $a1, 0x800c
/* 0CD40C 800CC80C AC2D38B0 */ sw $t5, %lo(D_800E38B0)($at)
/* 0CD410 800CC810 24A57340 */ addiu $a1, %lo(func_800C7340) # addiu $a1, $a1, 0x7340
/* 0CD414 800CC814 0C0351FC */ jal __osSetHWIntrRoutine
/* 0CD418 800CC818 24040001 */ li $a0, 1
/* 0CD41C 800CC81C 10000003 */ b .L800CC82C
/* 0CD420 800CC820 00000000 */ nop
.L800CC824:
/* 0CD424 800CC824 3C01800E */ lui $at, %hi(D_800E38B0) # $at, 0x800e
/* 0CD428 800CC828 AC2038B0 */ sw $zero, %lo(D_800E38B0)($at)
.L800CC82C:
/* 0CD42C 800CC82C 8FBF001C */ lw $ra, 0x1c($sp)
/* 0CD430 800CC830 8FB00018 */ lw $s0, 0x18($sp)
/* 0CD434 800CC834 27BD0040 */ addiu $sp, $sp, 0x40
/* 0CD438 800CC838 03E00008 */ jr $ra
/* 0CD43C 800CC83C 00000000 */ nop
@@ -1,22 +0,0 @@
glabel __osSetHWIntrRoutine
/* 0D53F0 800D47F0 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 0D53F4 800D47F4 AFBF001C */ sw $ra, 0x1c($sp)
/* 0D53F8 800D47F8 AFA40028 */ sw $a0, 0x28($sp)
/* 0D53FC 800D47FC AFA5002C */ sw $a1, 0x2c($sp)
/* 0D5400 800D4800 0C034958 */ jal __osDisableInt
/* 0D5404 800D4804 AFB00018 */ sw $s0, 0x18($sp)
/* 0D5408 800D4808 8FAF0028 */ lw $t7, 0x28($sp)
/* 0D540C 800D480C 8FAE002C */ lw $t6, 0x2c($sp)
/* 0D5410 800D4810 3C01800E */ lui $at, %hi(__osHwIntTable) # $at, 0x800e
/* 0D5414 800D4814 000FC080 */ sll $t8, $t7, 2
/* 0D5418 800D4818 00408025 */ move $s0, $v0
/* 0D541C 800D481C 00380821 */ addu $at, $at, $t8
/* 0D5420 800D4820 02002025 */ move $a0, $s0
/* 0D5424 800D4824 0C034960 */ jal __osRestoreInt
/* 0D5428 800D4828 AC2E48A0 */ sw $t6, %lo(__osHwIntTable)($at)
/* 0D542C 800D482C 8FBF001C */ lw $ra, 0x1c($sp)
/* 0D5430 800D4830 8FB00018 */ lw $s0, 0x18($sp)
/* 0D5434 800D4834 27BD0028 */ addiu $sp, $sp, 0x28
/* 0D5438 800D4838 03E00008 */ jr $ra
/* 0D543C 800D483C 00000000 */ nop
@@ -1,28 +0,0 @@
glabel osPiRawWriteIo
/* 0D5390 800D4790 3C0EA460 */ lui $t6, %hi(PI_STATUS_REG) # $t6, 0xa460
/* 0D5394 800D4794 8DC60010 */ lw $a2, %lo(PI_STATUS_REG)($t6)
/* 0D5398 800D4798 27BDFFF8 */ addiu $sp, $sp, -8
/* 0D539C 800D479C 30CF0003 */ andi $t7, $a2, 3
/* 0D53A0 800D47A0 11E00006 */ beqz $t7, .L800D47BC
/* 0D53A4 800D47A4 00000000 */ nop
.L800D47A8:
/* 0D53A8 800D47A8 3C18A460 */ lui $t8, %hi(PI_STATUS_REG) # $t8, 0xa460
/* 0D53AC 800D47AC 8F060010 */ lw $a2, %lo(PI_STATUS_REG)($t8)
/* 0D53B0 800D47B0 30D90003 */ andi $t9, $a2, 3
/* 0D53B4 800D47B4 1720FFFC */ bnez $t9, .L800D47A8
/* 0D53B8 800D47B8 00000000 */ nop
.L800D47BC:
/* 0D53BC 800D47BC 3C088000 */ lui $t0, %hi(osRomBase) # $t0, 0x8000
/* 0D53C0 800D47C0 8D080308 */ lw $t0, %lo(osRomBase)($t0)
/* 0D53C4 800D47C4 3C01A000 */ lui $at, 0xa000
/* 0D53C8 800D47C8 00001025 */ move $v0, $zero
/* 0D53CC 800D47CC 01044825 */ or $t1, $t0, $a0
/* 0D53D0 800D47D0 01215025 */ or $t2, $t1, $at
/* 0D53D4 800D47D4 8D4B0000 */ lw $t3, ($t2)
/* 0D53D8 800D47D8 27BD0008 */ addiu $sp, $sp, 8
/* 0D53DC 800D47DC 03E00008 */ jr $ra
/* 0D53E0 800D47E0 ACAB0000 */ sw $t3, ($a1)
/* 0D53E4 800D47E4 00000000 */ nop
/* 0D53E8 800D47E8 00000000 */ nop
/* 0D53EC 800D47EC 00000000 */ nop
@@ -3,7 +3,7 @@
#include "types.h"
//Called only in osInitialize
s32 func_800C7340(void) {
//This has been blanked out for some reason
s32 __osLeoInterrupt(void) {
return 0;
}
+24 -33
View File
@@ -1,10 +1,9 @@
/* The comment below is needed for this file to be picked up by generate_ld */
/* RAM_POS: 0x800CC5A0 */
#include "types.h"
#include "macros.h"
#include "ultra64.h"
#include "libultra_internal.h"
#include "viint.h"
#include "piint.h"
typedef struct
{
@@ -18,28 +17,26 @@ extern __osExceptionVector __osExceptionPreamble;
OSTime osClockRate = OS_CLOCK_RATE;
u32 __osShutdown = 0;
u32 __OSGlobalIntMask = OS_IM_ALL;
s32 D_800E38B0 = 0; // 64DD flag? (Hints from SM64 code)
s32 gLeoFound = FALSE;
s32 __osLeoInterrupt(void);
#if 0
//Declaring this variable breaks things right away
extern s32 osViClock; //This is defined in another file somehow
u32 __osFinalrom;
void osInitialize()
{
extern s32 gThread30Stack; //TODO: This should be __osFinalrom. Is this reused?
//u32 __osFinalrom;
void osInitialize() {
u32 pifdata;
u32 clock = 0;
__osFinalrom = TRUE;
u32 leostatus;
u32 pistatus;
//__osFinalrom = TRUE;
gThread30Stack = TRUE; //TODO: This should be __osFinalrom. Is this reused?
__osSetSR(__osGetSR() | SR_CU1); //enable fpu
__osSetFpcCsr(FPCSR_FS | FPCSR_EV); //flush denorm to zero, enable invalid operation
while (__osSiRawReadIo(PIF_RAM_END - 3, &pifdata)) //last byte of joychannel ram
{
;
}
{;}
while (__osSiRawWriteIo(PIF_RAM_END - 3, pifdata | 8))
{
; //todo: magic contant
}
{;} //todo: magic contant
*(__osExceptionVector *)UT_VEC = __osExceptionPreamble;
*(__osExceptionVector *)XUT_VEC = __osExceptionPreamble;
*(__osExceptionVector *)ECC_VEC = __osExceptionPreamble;
@@ -49,27 +46,21 @@ void osInitialize()
osMapTLBRdb();
osPiRawReadIo(4, &clock); //TODO: remove magic constant;
clock &= ~0xf; //clear lower 4 bits
if (clock != 0)
{
if (clock != 0) {
osClockRate = clock;
}
osClockRate = osClockRate * 3 / 4;
if (osResetType == 0 /*cold reset */)
{
if (osResetType == 0 /*cold reset */) {
bzero(osAppNmiBuffer, sizeof(osAppNmiBuffer));
}
if (osTvType == OS_TV_TYPE_PAL) {
osViClock = VI_PAL_CLOCK;
}
else if (osTvType == OS_TV_TYPE_MPAL)
{
osViClock = VI_MPAL_CLOCK;
}
else
{
osViClock = VI_NTSC_CLOCK;
pistatus = IO_READ(PI_STATUS_REG);
while (pistatus & PI_STATUS_ERROR) {
pistatus = IO_READ(PI_STATUS_REG);
};
if (!((leostatus = IO_READ(LEO_STATUS)) & LEO_STATUS_PRESENCE_MASK)) {
gLeoFound = TRUE;
__osSetHWIntrRoutine(1, __osLeoInterrupt);
} else {
gLeoFound = FALSE;
}
}
#else
GLOBAL_ASM("lib/asm/non_matchings/unknown_0CCF90/osInitialize.s")
#endif
@@ -5,7 +5,7 @@
#include "libultra_internal.h"
#include "piint.h"
s32 osPiRawWriteIo(u32 devAddr, u32 *data) {
s32 osPiRawReadIo(u32 devAddr, u32 *data) {
register u32 stat;
WAIT_ON_IOBUSY(stat);
*data = IO_READ((u32)osRomBase | devAddr);
+1 -1
View File
@@ -2,7 +2,7 @@ osTvType = 0x80000300;
osRomBase = 0x80000308;
osResetType = 0x8000030C;
osCicId = 0x80000310;
osAppNMIBuffer = 0x8000031C;
osAppNmiBuffer = 0x8000031C;
D_A0000200 = 0xA0000200;
D_A0000284 = 0xA0000284;