mirror of https://github.com/zeldaret/mm.git
Restructure how buffers are set up (#77)
This commit is contained in:
parent
807db1ca54
commit
6536afc6d3
4
Makefile
4
Makefile
|
@ -171,8 +171,8 @@ asm/non_matchings/%: asm/%.asm
|
||||||
|
|
||||||
asm/%.asm: disasm ;
|
asm/%.asm: disasm ;
|
||||||
|
|
||||||
disasm: tables/files.txt tables/functions.txt tables/objects.txt tables/variables.txt tables/vrom_variables.txt tables/pre_boot_variables.txt
|
disasm: tables/files.txt tables/functions.txt tables/objects.txt tables/variables.txt tables/vrom_variables.txt
|
||||||
./tools/disasm.py -d ./asm -u . -l ./tables/files.txt -f ./tables/functions.txt -o ./tables/objects.txt -v ./tables/variables.txt -v ./tables/vrom_variables.txt -v ./tables/pre_boot_variables.txt
|
./tools/disasm.py -d ./asm -l ./tables/files.txt -f ./tables/functions.txt -o ./tables/objects.txt -v ./tables/variables.txt -v ./tables/vrom_variables.txt
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(ROM) $(UNCOMPRESSED_ROM) -r build asm
|
rm -f $(ROM) $(UNCOMPRESSED_ROM) -r build asm
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
#ifndef _PRE_BOOT_VARIABLES_H_
|
|
||||||
#define _PRE_BOOT_VARIABLES_H_
|
|
||||||
|
|
||||||
#include <PR/ultratypes.h>
|
|
||||||
|
|
||||||
extern UNK_TYPE osTvType; // D_80000300
|
|
||||||
extern UNK_TYPE osRomType; // D_80000304
|
|
||||||
extern UNK_TYPE osRomBase; // D_80000308
|
|
||||||
extern UNK_TYPE osResetType; // D_8000030C
|
|
||||||
extern UNK_TYPE osCicId; // D_80000310
|
|
||||||
extern UNK_TYPE osVersion; // D_80000314
|
|
||||||
extern UNK_TYPE osMemSize; // D_80000318
|
|
||||||
extern UNK_TYPE D_8000031C; // D_8000031C
|
|
||||||
extern UNK_TYPE D_80000500; // D_80000500
|
|
||||||
extern UNK_TYPE D_80025D00; // D_80025D00
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
#include <PR/ultratypes.h>
|
#include <PR/ultratypes.h>
|
||||||
|
|
||||||
|
#define OS_YIELD_DATA_SIZE 0xC00
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/* 0x0 */ u32 type;
|
/* 0x0 */ u32 type;
|
||||||
/* 0x4 */ u32 flags;
|
/* 0x4 */ u32 flags;
|
||||||
|
|
|
@ -13,5 +13,6 @@
|
||||||
#define UNK_FUN_ARG void(*)(void)
|
#define UNK_FUN_ARG void(*)(void)
|
||||||
#define UNK_FUN_PTR(name) void(*name)(void)
|
#define UNK_FUN_PTR(name) void(*name)(void)
|
||||||
#define UNK_ARGS void
|
#define UNK_ARGS void
|
||||||
|
#define UNK_SIZE 1
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -5,7 +5,19 @@
|
||||||
#include <segment_symbols.h>
|
#include <segment_symbols.h>
|
||||||
#include <segment.h>
|
#include <segment.h>
|
||||||
#include <section.h>
|
#include <section.h>
|
||||||
#include <pre_boot_variables.h>
|
|
||||||
|
// pre-boot variables
|
||||||
|
extern UNK_TYPE osTvType;
|
||||||
|
extern UNK_TYPE osRomType;
|
||||||
|
extern UNK_TYPE osRomBase;
|
||||||
|
extern UNK_TYPE osResetType;
|
||||||
|
extern UNK_TYPE osCicId;
|
||||||
|
extern UNK_TYPE osVersion;
|
||||||
|
extern UNK_TYPE osMemSize;
|
||||||
|
extern s32 osAppNmiBuffer[0x10];
|
||||||
|
extern u16 gFramebuffer1[SCREEN_HEIGHT][SCREEN_WIDTH]; // at 0x80000500
|
||||||
|
extern u16 gFramebufferHighRes1[SCREEN_HEIGHT_HIGH_RES][SCREEN_WIDTH_HIGH_RES]; // at 0x80000500
|
||||||
|
extern u8 D_80025D00[];
|
||||||
|
|
||||||
// data
|
// data
|
||||||
extern UNK_TYPE1 D_800969C0;
|
extern UNK_TYPE1 D_800969C0;
|
||||||
|
@ -4514,14 +4526,15 @@ extern OSMesg D_80203290[1];
|
||||||
// extern UNK_TYPE1 D_80208E98;
|
// extern UNK_TYPE1 D_80208E98;
|
||||||
// extern UNK_TYPE1 D_80208E99;
|
// extern UNK_TYPE1 D_80208E99;
|
||||||
// extern UNK_TYPE1 D_80208E9C;
|
// extern UNK_TYPE1 D_80208E9C;
|
||||||
// extern UNK_TYPE1 D_80208EA0;
|
extern u8 gGfxSPTaskYieldBuffer[OS_YIELD_DATA_SIZE];
|
||||||
// extern UNK_TYPE1 D_80209AA0;
|
extern u8 gGfxSPTaskStack[0x400];
|
||||||
extern GfxPool gGfxPools[2];
|
extern GfxPool gGfxPools[2];
|
||||||
extern u8 gAudioHeap[1277952];
|
extern u8 gAudioHeap[0x138000];
|
||||||
extern u32 gSystemHeap[1046224];
|
extern u32 gSystemHeap[UNK_SIZE];
|
||||||
extern u8 D_80780000[17920];
|
extern u16 gFramebufferHighRes0[SCREEN_HEIGHT_HIGH_RES][SCREEN_WIDTH_HIGH_RES]; // at 0x80780000
|
||||||
extern u8 D_80784600[352768];
|
extern u8 D_80780000[0x4600];
|
||||||
extern u16 D_807DA800[76800];
|
extern u8 D_80784600[0x56200];
|
||||||
|
extern u16 gFramebuffer0[SCREEN_HEIGHT][SCREEN_WIDTH]; // at 0x807DA800
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,12 @@
|
||||||
#include <z64object.h>
|
#include <z64object.h>
|
||||||
#include <z64scene.h>
|
#include <z64scene.h>
|
||||||
|
|
||||||
|
#define SCREEN_WIDTH 320
|
||||||
|
#define SCREEN_HEIGHT 240
|
||||||
|
|
||||||
|
#define SCREEN_WIDTH_HIGH_RES 576
|
||||||
|
#define SCREEN_HEIGHT_HIGH_RES 454
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/* 0x0 */ s16 priority; // Lower means higher priority. -1 means it ignores priority
|
/* 0x0 */ s16 priority; // Lower means higher priority. -1 means it ignores priority
|
||||||
/* 0x2 */ s16 length;
|
/* 0x2 */ s16 length;
|
||||||
|
|
|
@ -625,6 +625,23 @@ SECTIONS
|
||||||
. += 0x24F00;
|
. += 0x24F00;
|
||||||
code_bss_end = .;
|
code_bss_end = .;
|
||||||
|
|
||||||
|
buffers ALIGN(0x10):
|
||||||
|
{
|
||||||
|
build/src/buffers/gfxbuffers.o(.bss)
|
||||||
|
build/src/buffers/heaps.o(.bss)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Framebuffers */
|
||||||
|
gFramebuffer1 = 0x80000500;
|
||||||
|
gFramebuffer0 = 0x80800000 - 320*240*2; /* SCREEN_WIDTH*SCREEN_HEIGHT*sizeof(s16) */
|
||||||
|
gFramebufferHighRes1 = 0x80000500;
|
||||||
|
gFramebufferHighRes0 = 0x80780000;
|
||||||
|
|
||||||
|
/* Unkown buffers */
|
||||||
|
D_80025D00 = 0x80025D00; /* Used in z_vr_box.c */
|
||||||
|
D_80780000 = 0x80780000;
|
||||||
|
D_80784600 = 0x80784600;
|
||||||
|
|
||||||
. = 0x80800000;
|
. = 0x80800000;
|
||||||
SegmentStart = .;
|
SegmentStart = .;
|
||||||
_ovl_titleSegmentStart = SegmentStart;
|
_ovl_titleSegmentStart = SegmentStart;
|
||||||
|
|
|
@ -27,9 +27,9 @@ void Idle_InitFramebuffer(u32* ptr, u32 numBytes, u32 value) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void Idle_InitScreen(void) {
|
void Idle_InitScreen(void) {
|
||||||
Idle_InitFramebuffer((u32*)&D_80000500, 0x25800, 0x00010001);
|
Idle_InitFramebuffer((u32*)&gFramebuffer1, 0x25800, 0x00010001);
|
||||||
ViConfig_UpdateVi(0);
|
ViConfig_UpdateVi(0);
|
||||||
osViSwapBuffer(&D_80000500);
|
osViSwapBuffer(&gFramebuffer1);
|
||||||
osViBlack(0);
|
osViBlack(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ void Idle_InitMemory(void) {
|
||||||
u32 pad;
|
u32 pad;
|
||||||
void* memEnd = (void*)(0x80000000 + osMemSize);
|
void* memEnd = (void*)(0x80000000 + osMemSize);
|
||||||
|
|
||||||
Idle_ClearMemory((void*)0x80000400, &D_80000500);
|
Idle_ClearMemory((void*)0x80000400, &gFramebuffer1);
|
||||||
Idle_ClearMemory(&D_80025D00, (int*)&boot_text_start);
|
Idle_ClearMemory(&D_80025D00, (int*)&boot_text_start);
|
||||||
Idle_ClearMemory(&code_bss_end, memEnd);
|
Idle_ClearMemory(&code_bss_end, memEnd);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
#include <ultra64.h>
|
||||||
|
#include <global.h>
|
||||||
|
|
||||||
|
u8 gGfxSPTaskYieldBuffer[OS_YIELD_DATA_SIZE];
|
||||||
|
|
||||||
|
u8 gGfxSPTaskStack[0x400];
|
||||||
|
|
||||||
|
GfxPool gGfxPools[2];
|
|
@ -0,0 +1,6 @@
|
||||||
|
#include <ultra64.h>
|
||||||
|
#include <global.h>
|
||||||
|
|
||||||
|
u8 gAudioHeap[0x138000];
|
||||||
|
|
||||||
|
u32 gSystemHeap[UNK_SIZE];
|
|
@ -48,7 +48,7 @@ void osInitialize(void) {
|
||||||
D_80097E50 = (D_80097E50 * 3) / 4;
|
D_80097E50 = (D_80097E50 * 3) / 4;
|
||||||
|
|
||||||
if (osResetType == 0) {
|
if (osResetType == 0) {
|
||||||
_blkclr((u8*)&D_8000031C, 64);
|
_blkclr((u8*)&osAppNmiBuffer, 64);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (osTvType == 0) {
|
if (osTvType == 0) {
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
# Follows the format of Address:(Name, Type, Array Info, Size)
|
|
||||||
{
|
|
||||||
0x80000300:("osTvType","UNK_TYPE","",0x4),
|
|
||||||
0x80000304:("osRomType","UNK_TYPE","",0x4),
|
|
||||||
0x80000308:("osRomBase","UNK_TYPE","",0x4),
|
|
||||||
0x8000030C:("osResetType","UNK_TYPE","",0x4),
|
|
||||||
0x80000310:("osCicId","UNK_TYPE","",0x4),
|
|
||||||
0x80000314:("osVersion","UNK_TYPE","",0x4),
|
|
||||||
0x80000318:("osMemSize","UNK_TYPE","",0x4),
|
|
||||||
0x8000031C:("D_8000031C","UNK_TYPE","",0x4), # TODO size
|
|
||||||
0x80000500:("D_80000500","UNK_TYPE","",0x1), # TODO size
|
|
||||||
0x80025D00:("D_80025D00","UNK_TYPE","",0x1), # TODO size
|
|
||||||
}
|
|
|
@ -1,5 +1,15 @@
|
||||||
# Follows the format of Entry Point Address:(Name, Type, Array Info, Size)
|
# Follows the format of Entry Point Address:(Name, Type, Array Info, Size)
|
||||||
{
|
{
|
||||||
|
0x80000300:("osTvType","UNK_TYPE","",0x4),
|
||||||
|
0x80000304:("osRomType","UNK_TYPE","",0x4),
|
||||||
|
0x80000308:("osRomBase","UNK_TYPE","",0x4),
|
||||||
|
0x8000030C:("osResetType","UNK_TYPE","",0x4),
|
||||||
|
0x80000310:("osCicId","UNK_TYPE","",0x4),
|
||||||
|
0x80000314:("osVersion","UNK_TYPE","",0x4),
|
||||||
|
0x80000318:("osMemSize","UNK_TYPE","",0x4),
|
||||||
|
0x8000031C:("osAppNmiBuffer","s32","[0x10]",0x40),
|
||||||
|
0x80000500:("gFramebuffer1","u16","[SCREEN_HEIGHT][SCREEN_WIDTH]",0x25800),
|
||||||
|
0x80025D00:("D_80025D00","u8","[]",0x1), # TODO size
|
||||||
0x800969C0:("D_800969C0","UNK_TYPE1","",0x1),
|
0x800969C0:("D_800969C0","UNK_TYPE1","",0x1),
|
||||||
0x80096B20:("D_80096B20","u8","",0x1),
|
0x80096B20:("D_80096B20","u8","",0x1),
|
||||||
0x80096B24:("gViConfigUseDefault","vu8","",0x1),
|
0x80096B24:("gViConfigUseDefault","vu8","",0x1),
|
||||||
|
@ -4626,14 +4636,14 @@
|
||||||
0x80208E98:("D_80208E98","UNK_TYPE1","",0x1),
|
0x80208E98:("D_80208E98","UNK_TYPE1","",0x1),
|
||||||
0x80208E99:("D_80208E99","UNK_TYPE1","",0x1),
|
0x80208E99:("D_80208E99","UNK_TYPE1","",0x1),
|
||||||
0x80208E9C:("D_80208E9C","UNK_TYPE1","",0x1),
|
0x80208E9C:("D_80208E9C","UNK_TYPE1","",0x1),
|
||||||
0x80208EA0:("D_80208EA0","UNK_TYPE1","",0x1),
|
0x80208EA0:("gGfxSPTaskYieldBuffer","u8","[OS_YIELD_DATA_SIZE]",0xC00),
|
||||||
0x80209AA0:("D_80209AA0","UNK_TYPE1","",0x1),
|
0x80209AA0:("gGfxSPTaskStack","u8","[0x400]",0x400),
|
||||||
0x80209EA0:("gGfxPools","GfxPool","[2]",0x40620),
|
0x80209EA0:("gGfxPools","GfxPool","[2]",0x40620),
|
||||||
0x8024A4C0:("gAudioHeap","u8","[1277952]",0x138000),
|
0x8024A4C0:("gAudioHeap","u8","[0x138000]",0x138000),
|
||||||
0x803824C0:("gSystemHeap","u32","[1046224]",0x3fdb40),
|
0x803824C0:("gSystemHeap","u32","[UNK_SIZE]",0x3fdb40),
|
||||||
0x80780000:("D_80780000","u8","[17920]",0x4600),
|
0x80780000:("D_80780000","u8","[0x4600]",0x4600),
|
||||||
0x80784600:("D_80784600","u8","[352768]",0x56200),
|
0x80784600:("D_80784600","u8","[0x56200]",0x56200),
|
||||||
0x807DA800:("D_807DA800","u16","[76800]",0x25800),
|
0x807DA800:("gFramebuffer0","u16","[SCREEN_HEIGHT][SCREEN_WIDTH]",0x25800),
|
||||||
0x80800860:("titleRotation","s16","",0x2),
|
0x80800860:("titleRotation","s16","",0x2),
|
||||||
0x80800868:("D_80800868","UNK_TYPE1","",0x1),
|
0x80800868:("D_80800868","UNK_TYPE1","",0x1),
|
||||||
0x80800870:("D_80800870","UNK_TYPE1","",0x1),
|
0x80800870:("D_80800870","UNK_TYPE1","",0x1),
|
||||||
|
|
12
undef.txt
12
undef.txt
|
@ -5,9 +5,7 @@ osResetType = 0x8000030C;
|
||||||
osCicId = 0x80000310;
|
osCicId = 0x80000310;
|
||||||
osVersion = 0x80000314;
|
osVersion = 0x80000314;
|
||||||
osMemSize = 0x80000318;
|
osMemSize = 0x80000318;
|
||||||
D_8000031C = 0x8000031C;
|
osAppNmiBuffer = 0x8000031C;
|
||||||
D_80000500 = 0x80000500;
|
|
||||||
D_80025D00 = 0x80025D00;
|
|
||||||
sBootThreadInfo = boot_bss_start + 0x00000000;
|
sBootThreadInfo = boot_bss_start + 0x00000000;
|
||||||
sIdleThread = boot_bss_start + 0x00000020;
|
sIdleThread = boot_bss_start + 0x00000020;
|
||||||
sIdleThreadStack = boot_bss_start + 0x000001D0;
|
sIdleThreadStack = boot_bss_start + 0x000001D0;
|
||||||
|
@ -793,14 +791,6 @@ D_80208E94 = code_bss_start + 0x00024EF4;
|
||||||
D_80208E98 = code_bss_start + 0x00024EF8;
|
D_80208E98 = code_bss_start + 0x00024EF8;
|
||||||
D_80208E99 = code_bss_start + 0x00024EF9;
|
D_80208E99 = code_bss_start + 0x00024EF9;
|
||||||
D_80208E9C = code_bss_start + 0x00024EFC;
|
D_80208E9C = code_bss_start + 0x00024EFC;
|
||||||
D_80208EA0 = code_bss_start + 0x00024F00;
|
|
||||||
D_80209AA0 = code_bss_start + 0x00025B00;
|
|
||||||
gGfxPools = code_bss_start + 0x00025F00;
|
|
||||||
gAudioHeap = code_bss_start + 0x00066520;
|
|
||||||
gSystemHeap = code_bss_start + 0x0019E520;
|
|
||||||
D_80780000 = code_bss_start + 0x0059C060;
|
|
||||||
D_80784600 = code_bss_start + 0x005A0660;
|
|
||||||
D_807DA800 = code_bss_start + 0x005F6860;
|
|
||||||
D_80814E80 = ovl_file_choose_bss_start + 0x00000000;
|
D_80814E80 = ovl_file_choose_bss_start + 0x00000000;
|
||||||
D_80814E90 = ovl_file_choose_bss_start + 0x00000010;
|
D_80814E90 = ovl_file_choose_bss_start + 0x00000010;
|
||||||
D_8082DA50 = ovl_kaleido_scope_bss_start + 0x00000000;
|
D_8082DA50 = ovl_kaleido_scope_bss_start + 0x00000000;
|
||||||
|
|
Loading…
Reference in New Issue