Added specific optimization flags for `boot.c`
Added `bool` type Identified more symbols Finished `black.c` Finished `boot.c`
This commit is contained in:
parent
7ad1f85eac
commit
83f47e75fc
4
Makefile
4
Makefile
|
|
@ -109,6 +109,9 @@ split:
|
||||||
$(V)$(SPLAT)
|
$(V)$(SPLAT)
|
||||||
@touch $(SPLAT_TIMESTAMP)
|
@touch $(SPLAT_TIMESTAMP)
|
||||||
|
|
||||||
|
|
||||||
|
$(BUILD_DIR)/src/boot.c.o: OPTFLAGS = -O0
|
||||||
|
|
||||||
# Run splat and update the timestamp
|
# Run splat and update the timestamp
|
||||||
$(SPLAT_TIMESTAMP) : $(SPLAT_YAML) | $(BUILD_DIR)
|
$(SPLAT_TIMESTAMP) : $(SPLAT_YAML) | $(BUILD_DIR)
|
||||||
@$(P)$(PRINT)$(GREEN)Running splat$(ENDGREEN)$(ENDLINE)
|
@$(P)$(PRINT)$(GREEN)Running splat$(ENDGREEN)$(ENDLINE)
|
||||||
|
|
@ -133,7 +136,6 @@ $(BUILD_DIR)/src/%.c.o: src/%.c $(SPLAT_TIMESTAMP) | $(BUILD_DIR)
|
||||||
@$(P)$(PRINT)$(GREEN)Compiling C file: $(ENDGREEN)$(BLUE)$<$(ENDBLUE)$(ENDLINE)
|
@$(P)$(PRINT)$(GREEN)Compiling C file: $(ENDGREEN)$(BLUE)$<$(ENDBLUE)$(ENDLINE)
|
||||||
@mkdir -p $(shell dirname $@)
|
@mkdir -p $(shell dirname $@)
|
||||||
$(V)$(CC) $(CFLAGS) $(OPTFLAGS) $(CPPFLAGS) -o $@ $<
|
$(V)$(CC) $(CFLAGS) $(OPTFLAGS) $(CPPFLAGS) -o $@ $<
|
||||||
# && mips-linux-gnu-objcopy -N $< $@
|
|
||||||
|
|
||||||
# Assemble .s files with modern gnu as
|
# Assemble .s files with modern gnu as
|
||||||
$(BUILD_DIR)/asm/%.s.o: asm/%.s | $(BUILD_DIR)
|
$(BUILD_DIR)/asm/%.s.o: asm/%.s | $(BUILD_DIR)
|
||||||
|
|
|
||||||
|
|
@ -5,4 +5,9 @@
|
||||||
|
|
||||||
#include <ultra64.h>
|
#include <ultra64.h>
|
||||||
|
|
||||||
|
typedef u8 bool;
|
||||||
|
|
||||||
|
#define false 0
|
||||||
|
#define true 1
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
32
splat.yaml
32
splat.yaml
|
|
@ -37,7 +37,7 @@ segments:
|
||||||
start: 0x1000
|
start: 0x1000
|
||||||
vram: 0x80070C00
|
vram: 0x80070C00
|
||||||
subsegments:
|
subsegments:
|
||||||
- [0x1000, hasm, entry]
|
- [0x1000, asm, entry]
|
||||||
|
|
||||||
- name: main
|
- name: main
|
||||||
type: code
|
type: code
|
||||||
|
|
@ -103,7 +103,7 @@ segments:
|
||||||
- [0x19E10, asm]
|
- [0x19E10, asm]
|
||||||
- [0x19E30, asm, "dma_load_loop"]
|
- [0x19E30, asm, "dma_load_loop"]
|
||||||
- [0x19EB0, asm]
|
- [0x19EB0, asm]
|
||||||
- [0x19FC0, c]
|
- [0x19FC0, c, "black"]
|
||||||
- [0x1A050, c]
|
- [0x1A050, c]
|
||||||
- [0x1A4F0, asm]
|
- [0x1A4F0, asm]
|
||||||
- [0x1A5B0, asm]
|
- [0x1A5B0, asm]
|
||||||
|
|
@ -128,9 +128,12 @@ segments:
|
||||||
- [0x1B650, asm]
|
- [0x1B650, asm]
|
||||||
- [0x1B7A0, asm]
|
- [0x1B7A0, asm]
|
||||||
- [0x1B940, asm]
|
- [0x1B940, asm]
|
||||||
|
- [0x1BC20, asm, "libultra/os/setintmask"]
|
||||||
|
- [0x1BCC0, asm, "libultra/io/pimgr"]
|
||||||
|
- [0x1BE50, asm, "libultra/io/epirawdma"]
|
||||||
- [0x1C040, asm, "libultra/io/epidma"]
|
- [0x1C040, asm, "libultra/io/epidma"]
|
||||||
- [0x1C0E0, asm]
|
- [0x1C0E0, asm]
|
||||||
- [0x1C130, asm, "libultra/os/cartrominit"]
|
- [0x1C130, asm]
|
||||||
- [0x1C2B0, asm]
|
- [0x1C2B0, asm]
|
||||||
- [0x1C670, asm, "libultra/io/piacs"]
|
- [0x1C670, asm, "libultra/io/piacs"]
|
||||||
- [0x1C760, asm, "libultra/io/pidma"]
|
- [0x1C760, asm, "libultra/io/pidma"]
|
||||||
|
|
@ -239,11 +242,11 @@ segments:
|
||||||
- [0x29E50, asm]
|
- [0x29E50, asm]
|
||||||
- [0x29FC0, asm]
|
- [0x29FC0, asm]
|
||||||
- [0x29FE0, asm]
|
- [0x29FE0, asm]
|
||||||
- [0x2AAD0, hasm, "libultra/os/getcause"]
|
- [0x2AAD0, asm, "libultra/os/getcause"]
|
||||||
- [0x2AAE0, hasm, "libultra/os/getcount"]
|
- [0x2AAE0, asm, "libultra/os/getcount"]
|
||||||
- [0x2AAF0, hasm, "libultra/os/getsr"]
|
- [0x2AAF0, asm, "libultra/os/getsr"]
|
||||||
- [0x2AB00, hasm, "libultra/os/setcompare"]
|
- [0x2AB00, asm, "libultra/os/setcompare"]
|
||||||
- [0x2AB10, hasm, "libultra/os/setfpccsr"]
|
- [0x2AB10, asm, "libultra/os/setfpccsr"]
|
||||||
- [0x2AB20, asm, "libultra/os/setsr"]
|
- [0x2AB20, asm, "libultra/os/setsr"]
|
||||||
- [0x2AB30, asm]
|
- [0x2AB30, asm]
|
||||||
- [0x2AB40, asm, "libultra/io/sp"]
|
- [0x2AB40, asm, "libultra/io/sp"]
|
||||||
|
|
@ -253,8 +256,8 @@ segments:
|
||||||
- [0x2AC80, asm]
|
- [0x2AC80, asm]
|
||||||
- [0x2ACD0, asm]
|
- [0x2ACD0, asm]
|
||||||
- [0x2ADC0, asm, "libultra/os/destroythread"]
|
- [0x2ADC0, asm, "libultra/os/destroythread"]
|
||||||
- [0x2AEA0, hasm, "libultra/os/maptlbrdb"]
|
- [0x2AEA0, asm, "libultra/os/maptlbrdb"]
|
||||||
- [0x2AF00, hasm, "libultra/os/unmaptlball"]
|
- [0x2AF00, asm, "libultra/os/unmaptlball"]
|
||||||
- [0x2AF50, asm, "libultra/io/vi"]
|
- [0x2AF50, asm, "libultra/io/vi"]
|
||||||
- [0x2B060, asm]
|
- [0x2B060, asm]
|
||||||
- [0x2B070, asm, "libultra/io/pfschecker"]
|
- [0x2B070, asm, "libultra/io/pfschecker"]
|
||||||
|
|
@ -295,6 +298,9 @@ segments:
|
||||||
- [0x3AB90, asm]
|
- [0x3AB90, asm]
|
||||||
- [0x3ABC0, asm]
|
- [0x3ABC0, asm]
|
||||||
|
|
||||||
|
- [0x3BEC0, asm]
|
||||||
|
|
||||||
|
|
||||||
# - [0x3E198, rodata, "isallocatedpointer"]
|
# - [0x3E198, rodata, "isallocatedpointer"]
|
||||||
# - [0x3E278, rodata]
|
# - [0x3E278, rodata]
|
||||||
# - [0x3E330, rodata]
|
# - [0x3E330, rodata]
|
||||||
|
|
@ -332,7 +338,7 @@ segments:
|
||||||
bss_size: 0x7F690
|
bss_size: 0x7F690
|
||||||
subsegments:
|
subsegments:
|
||||||
- [0x3F1B0, c]
|
- [0x3F1B0, c]
|
||||||
- [0x3FE70, asm]
|
- [0x3FE70, c]
|
||||||
- [0x40640, asm]
|
- [0x40640, asm]
|
||||||
|
|
||||||
- { start: 0x40E80, type: bss, vram: 0x800EB8F0 }
|
- { start: 0x40E80, type: bss, vram: 0x800EB8F0 }
|
||||||
|
|
@ -413,6 +419,8 @@ segments:
|
||||||
# subsegments:
|
# subsegments:
|
||||||
# - [0x23A3A0, asm]
|
# - [0x23A3A0, asm]
|
||||||
|
|
||||||
|
# - [0x23B210, data]
|
||||||
|
|
||||||
# - { start: 0x23B220, type: bss, vram: 0x801D16C0 }
|
# - { start: 0x23B220, type: bss, vram: 0x801D16C0 }
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -428,7 +436,7 @@ segments:
|
||||||
# - [0x241610, asm]
|
# - [0x241610, asm]
|
||||||
# - [0x243F20, asm]
|
# - [0x243F20, asm]
|
||||||
|
|
||||||
- [0x2447A0, bin]
|
# - [0x2447A0, bin]
|
||||||
|
|
||||||
|
|
||||||
# - type: code
|
# - type: code
|
||||||
|
|
|
||||||
14
src/19FC0.c
14
src/19FC0.c
|
|
@ -1,14 +0,0 @@
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
void __calls_osViBlack(u8);
|
|
||||||
|
|
||||||
// INCLUDE_ASM(const s32, "19FC0", func_80089BC0);
|
|
||||||
extern s32 __SCREEN_IS_NOT_BLACK;
|
|
||||||
|
|
||||||
void __set_black(void) {
|
|
||||||
__SCREEN_IS_NOT_BLACK = 0;
|
|
||||||
__calls_osViBlack(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "19FC0", __calls_osViBlack);
|
|
||||||
|
|
@ -67,9 +67,15 @@ void __start_controller_thread(void) {
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "1A050", __controller_thread_80089D9C);
|
INCLUDE_ASM(const s32, "1A050", __controller_thread_80089D9C);
|
||||||
|
|
||||||
|
|
||||||
|
// INCLUDE_ASM(const s32, "1A050", initialise);
|
||||||
|
|
||||||
void initialise(void) {
|
void initialise(void) {
|
||||||
|
extern s32 func_8008BD30();
|
||||||
|
extern s32 D_800E7A20;
|
||||||
|
|
||||||
osCreatePiManager(OS_PRIORITY_PIMGR, &MQ_800BE030, OSMESG_800BE048, sizeof(OSMESG_800BE048) / sizeof(OSMesg));
|
osCreatePiManager(OS_PRIORITY_PIMGR, &MQ_800BE030, OSMESG_800BE048, sizeof(OSMESG_800BE048) / sizeof(OSMesg));
|
||||||
CART_HANDLE = osCartRomInit();
|
D_800E7A20 = func_8008BD30();
|
||||||
}
|
}
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "1A050", romCopy);
|
INCLUDE_ASM(const s32, "1A050", romCopy);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
void __set_black();
|
||||||
|
void __calls_osViBlack(bool black);
|
||||||
|
|
||||||
|
/* 19FC0 80089BC0 */
|
||||||
|
void __set_black() {
|
||||||
|
extern s32 __SCREEN_IS_NOT_BLACK;
|
||||||
|
|
||||||
|
__SCREEN_IS_NOT_BLACK = 0;
|
||||||
|
__calls_osViBlack(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 19FE4 80089BE4 */
|
||||||
|
void __calls_osViBlack(bool black)
|
||||||
|
{
|
||||||
|
if (osTvType == 0)
|
||||||
|
{
|
||||||
|
if (black == 1)
|
||||||
|
osViSetYScale(1.0f);
|
||||||
|
else
|
||||||
|
osViSetYScale(0.833f);
|
||||||
|
}
|
||||||
|
osViBlack(black);
|
||||||
|
}
|
||||||
|
|
||||||
44
src/boot.c
44
src/boot.c
|
|
@ -2,17 +2,43 @@
|
||||||
|
|
||||||
#include <PR/os.h>
|
#include <PR/os.h>
|
||||||
|
|
||||||
|
void boot(void);
|
||||||
void idle(void* arg);
|
void idle(void* arg);
|
||||||
|
|
||||||
// static OSThread IDLE_THREAD;
|
void boot(void) {
|
||||||
// static char SP_THREAD_IDLE[OS_PIM_STACKSIZE];
|
extern OSThread THREAD_IDLE;
|
||||||
|
extern u8 SP_THREAD_IDLE[1];
|
||||||
|
|
||||||
// void boot(void) {
|
osInitialize();
|
||||||
// osInitialize();
|
osCreateThread(&THREAD_IDLE, 1, idle, NULL, SP_THREAD_IDLE, 0xA);
|
||||||
// osCreateThread(&IDLE_THREAD, 1, idle, NULL, &SP_THREAD_IDLE, 0xA);
|
osStartThread(&THREAD_IDLE);
|
||||||
// osStartThread(&IDLE_THREAD);
|
}
|
||||||
// }
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "boot", boot);
|
void idle(void* arg) {
|
||||||
|
extern void main_(void*);
|
||||||
|
extern void __idle_start_4_threads(s32, s32);
|
||||||
|
extern void initialise();
|
||||||
|
extern void (*D_800E7A18)();
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "boot", idle);
|
extern u8 SP_THREAD_FIRST_DMA_LOAD[1];
|
||||||
|
extern OSThread THREAD_FIRST_DMA_LOAD;
|
||||||
|
extern OSThread THREAD_IDLE;
|
||||||
|
|
||||||
|
D_800E7A18 = NULL;
|
||||||
|
|
||||||
|
initialise();
|
||||||
|
__idle_start_4_threads(2, 1);
|
||||||
|
|
||||||
|
osViSetSpecialFeatures(OS_VI_DIVOT_ON | OS_VI_DITHER_FILTER_ON | OS_VI_GAMMA_OFF | OS_VI_GAMMA_DITHER_OFF);
|
||||||
|
|
||||||
|
osCreateThread(&THREAD_FIRST_DMA_LOAD, 3, main_, NULL, SP_THREAD_FIRST_DMA_LOAD, 0xA);
|
||||||
|
osStartThread(&THREAD_FIRST_DMA_LOAD);
|
||||||
|
|
||||||
|
osSetThreadPri(&THREAD_IDLE, OS_PRIORITY_IDLE);
|
||||||
|
|
||||||
|
while(1) {
|
||||||
|
if (D_800E7A18 != NULL) {
|
||||||
|
D_800E7A18();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
#include <PR/os.h>
|
#include <PR/os.h>
|
||||||
|
|
||||||
void func_800EA488(void*);
|
void __calls_romCopy_800EA488(void*);
|
||||||
|
|
||||||
// INCLUDE_ASM(const s32, "overlays/overlay0/3F1B0", func_800E9C20);
|
// INCLUDE_ASM(const s32, "overlays/overlay0/3F1B0", func_800E9C20);
|
||||||
|
|
||||||
|
|
@ -103,7 +103,7 @@ void func_800EA3E4(Arg* arg0) {
|
||||||
|
|
||||||
if (func_80081B08(arg0->handle) == 0) {
|
if (func_80081B08(arg0->handle) == 0) {
|
||||||
D_800EB0E8 = 0;
|
D_800EB0E8 = 0;
|
||||||
func_800EA488(arg0);
|
__calls_romCopy_800EA488(arg0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (arg0->field_0x38 == 0) {
|
if (arg0->field_0x38 == 0) {
|
||||||
|
|
@ -122,7 +122,7 @@ void func_800EA3E4(Arg* arg0) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
INCLUDE_ASM(const s32, "overlays/overlay0/3F1B0", func_800EA488);
|
INCLUDE_ASM(const s32, "overlays/overlay0/3F1B0", __calls_romCopy_800EA488);
|
||||||
|
|
||||||
// INCLUDE_ASM(const s32, "overlays/overlay0/3F1B0", func_800EA568);
|
// INCLUDE_ASM(const s32, "overlays/overlay0/3F1B0", func_800EA568);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
INCLUDE_ASM(const s32, "overlays/overlay0/3FE70", func_800EA8E0);
|
||||||
|
|
||||||
|
INCLUDE_ASM(const s32, "overlays/overlay0/3FE70", func_800EA924);
|
||||||
|
|
||||||
|
INCLUDE_ASM(const s32, "overlays/overlay0/3FE70", func_800EA9BC);
|
||||||
|
|
||||||
|
INCLUDE_ASM(const s32, "overlays/overlay0/3FE70", func_800EAB40);
|
||||||
|
|
||||||
|
INCLUDE_ASM(const s32, "overlays/overlay0/3FE70", func_800EAC24);
|
||||||
|
|
||||||
|
INCLUDE_ASM(const s32, "overlays/overlay0/3FE70", func_800EAF1C);
|
||||||
|
|
||||||
|
INCLUDE_ASM(const s32, "overlays/overlay0/3FE70", func_800EB028);
|
||||||
|
|
@ -11,6 +11,20 @@ D_80197168 = 0x80197168; // size:0x10
|
||||||
D_800E7D90 = 0x800E7D90; // size:0x58
|
D_800E7D90 = 0x800E7D90; // size:0x58
|
||||||
D_800E7DE8 = 0x800E7DE8; // size:0x58
|
D_800E7DE8 = 0x800E7DE8; // size:0x58
|
||||||
|
|
||||||
|
__osException = 0x80098D70;
|
||||||
|
__osExceptionPreamble = 0x80098D60;
|
||||||
|
|
||||||
|
__osSiRawWriteIo = 0x
|
||||||
|
__osFinalrom = 0x800E82C0;
|
||||||
|
osViClock = 0x800ABAC8;
|
||||||
|
__osSiRawReadIo = 0x8009A830;
|
||||||
|
__osSiRawWriteIo = 0x8009A880;
|
||||||
|
osResetType = 0x8000030C;
|
||||||
|
osAppNMIBuffer = 0x8000031C;
|
||||||
|
osClockRate = 0x800ABAC0;
|
||||||
|
osPiRawStartDma = 0x800997F0;
|
||||||
|
osEPiRawStartDma = 0x8008BA50;
|
||||||
|
|
||||||
__SCREEN_IS_NOT_BLACK = 0x800C4BD8;
|
__SCREEN_IS_NOT_BLACK = 0x800C4BD8;
|
||||||
__calls_osViBlack = 0x80089BE4;
|
__calls_osViBlack = 0x80089BE4;
|
||||||
__set_black = 0x80089BC0;
|
__set_black = 0x80089BC0;
|
||||||
|
|
@ -165,6 +179,7 @@ __calls_romCopy_8009DBB8 = 0x8009DBB8;
|
||||||
__calls_romCopy_8009DD38 = 0x8009DD38;
|
__calls_romCopy_8009DD38 = 0x8009DD38;
|
||||||
__calls_romCopy_8009DE40 = 0x8009DE40;
|
__calls_romCopy_8009DE40 = 0x8009DE40;
|
||||||
__calls_romCopy_8009DF48 = 0x8009DF48;
|
__calls_romCopy_8009DF48 = 0x8009DF48;
|
||||||
|
__calls_romCopy_800EA488 = 0x800EA488;
|
||||||
|
|
||||||
__start_thread_800BE1C0 = 0x8008B0B0;
|
__start_thread_800BE1C0 = 0x8008B0B0;
|
||||||
__start_thread_800B9C88 = 0x80089660;
|
__start_thread_800B9C88 = 0x80089660;
|
||||||
|
|
@ -230,8 +245,6 @@ FP_800A9E84 = 0x800A9E84;
|
||||||
__set_fp_800A9E84 = 0x800899D0;
|
__set_fp_800A9E84 = 0x800899D0;
|
||||||
|
|
||||||
romCopy = 0x80089F80;
|
romCopy = 0x80089F80;
|
||||||
CART_HANDLE = 0x800E7A20;
|
|
||||||
__CART_HANDLE_800B1898 = 0x800B1898;
|
|
||||||
|
|
||||||
__GLOBAL_CONTROLLER_DATA = 0x0800C4BF0; // size:0x18
|
__GLOBAL_CONTROLLER_DATA = 0x0800C4BF0; // size:0x18
|
||||||
__GLOBAL_CONTROLLER_DATA_COPY = 0x0800AEE78; // size:0x18
|
__GLOBAL_CONTROLLER_DATA_COPY = 0x0800AEE78; // size:0x18
|
||||||
|
|
@ -356,8 +369,6 @@ guLookAtHilite = 0x800919D4;
|
||||||
guLookAtReflectF = 0x80091AB0;
|
guLookAtReflectF = 0x80091AB0;
|
||||||
guLookAtReflect = 0x80092028;
|
guLookAtReflect = 0x80092028;
|
||||||
|
|
||||||
CartRomHandle = 0x800C4C54;
|
|
||||||
|
|
||||||
osTvType = 0x80000300; // type:s32
|
osTvType = 0x80000300; // type:s32
|
||||||
osRomBase = 0x80000308; // type:s32
|
osRomBase = 0x80000308; // type:s32
|
||||||
|
|
||||||
|
|
@ -377,7 +388,6 @@ osSetThreadPri = 0x80094950;
|
||||||
osWritebackDCache = 0x80090140;
|
osWritebackDCache = 0x80090140;
|
||||||
osWritebackDCacheAll = 0x800901C0;
|
osWritebackDCacheAll = 0x800901C0;
|
||||||
osSetIntMask = 0x8008B820;
|
osSetIntMask = 0x8008B820;
|
||||||
osCartRomInit = 0x8008BD30;
|
|
||||||
osStartThread = 0x80094A20;
|
osStartThread = 0x80094A20;
|
||||||
osJamMesg = 0x800935A0;
|
osJamMesg = 0x800935A0;
|
||||||
osRecvMesg = 0x800936E0;
|
osRecvMesg = 0x800936E0;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue