mirror of
https://github.com/zeldaret/mm.git
synced 2024-10-07 10:13:32 +00:00
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 ;
|
||||
|
||||
disasm: tables/files.txt tables/functions.txt tables/objects.txt tables/variables.txt tables/vrom_variables.txt tables/pre_boot_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
|
||||
disasm: tables/files.txt tables/functions.txt tables/objects.txt tables/variables.txt tables/vrom_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:
|
||||
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>
|
||||
|
||||
#define OS_YIELD_DATA_SIZE 0xC00
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u32 type;
|
||||
/* 0x4 */ u32 flags;
|
||||
|
@ -13,5 +13,6 @@
|
||||
#define UNK_FUN_ARG void(*)(void)
|
||||
#define UNK_FUN_PTR(name) void(*name)(void)
|
||||
#define UNK_ARGS void
|
||||
#define UNK_SIZE 1
|
||||
|
||||
#endif
|
||||
|
@ -5,7 +5,19 @@
|
||||
#include <segment_symbols.h>
|
||||
#include <segment.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
|
||||
extern UNK_TYPE1 D_800969C0;
|
||||
@ -4514,14 +4526,15 @@ extern OSMesg D_80203290[1];
|
||||
// extern UNK_TYPE1 D_80208E98;
|
||||
// extern UNK_TYPE1 D_80208E99;
|
||||
// extern UNK_TYPE1 D_80208E9C;
|
||||
// extern UNK_TYPE1 D_80208EA0;
|
||||
// extern UNK_TYPE1 D_80209AA0;
|
||||
extern u8 gGfxSPTaskYieldBuffer[OS_YIELD_DATA_SIZE];
|
||||
extern u8 gGfxSPTaskStack[0x400];
|
||||
extern GfxPool gGfxPools[2];
|
||||
extern u8 gAudioHeap[1277952];
|
||||
extern u32 gSystemHeap[1046224];
|
||||
extern u8 D_80780000[17920];
|
||||
extern u8 D_80784600[352768];
|
||||
extern u16 D_807DA800[76800];
|
||||
extern u8 gAudioHeap[0x138000];
|
||||
extern u32 gSystemHeap[UNK_SIZE];
|
||||
extern u16 gFramebufferHighRes0[SCREEN_HEIGHT_HIGH_RES][SCREEN_WIDTH_HIGH_RES]; // at 0x80780000
|
||||
extern u8 D_80780000[0x4600];
|
||||
extern u8 D_80784600[0x56200];
|
||||
extern u16 gFramebuffer0[SCREEN_HEIGHT][SCREEN_WIDTH]; // at 0x807DA800
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -27,6 +27,12 @@
|
||||
#include <z64object.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 {
|
||||
/* 0x0 */ s16 priority; // Lower means higher priority. -1 means it ignores priority
|
||||
/* 0x2 */ s16 length;
|
||||
|
@ -625,6 +625,23 @@ SECTIONS
|
||||
. += 0x24F00;
|
||||
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;
|
||||
SegmentStart = .;
|
||||
_ovl_titleSegmentStart = SegmentStart;
|
||||
|
@ -27,9 +27,9 @@ void Idle_InitFramebuffer(u32* ptr, u32 numBytes, u32 value) {
|
||||
#endif
|
||||
|
||||
void Idle_InitScreen(void) {
|
||||
Idle_InitFramebuffer((u32*)&D_80000500, 0x25800, 0x00010001);
|
||||
Idle_InitFramebuffer((u32*)&gFramebuffer1, 0x25800, 0x00010001);
|
||||
ViConfig_UpdateVi(0);
|
||||
osViSwapBuffer(&D_80000500);
|
||||
osViSwapBuffer(&gFramebuffer1);
|
||||
osViBlack(0);
|
||||
}
|
||||
|
||||
@ -37,7 +37,7 @@ void Idle_InitMemory(void) {
|
||||
u32 pad;
|
||||
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(&code_bss_end, memEnd);
|
||||
}
|
||||
|
8
src/buffers/gfxbuffers.c
Normal file
8
src/buffers/gfxbuffers.c
Normal file
@ -0,0 +1,8 @@
|
||||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
|
||||
u8 gGfxSPTaskYieldBuffer[OS_YIELD_DATA_SIZE];
|
||||
|
||||
u8 gGfxSPTaskStack[0x400];
|
||||
|
||||
GfxPool gGfxPools[2];
|
6
src/buffers/heaps.c
Normal file
6
src/buffers/heaps.c
Normal file
@ -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;
|
||||
|
||||
if (osResetType == 0) {
|
||||
_blkclr((u8*)&D_8000031C, 64);
|
||||
_blkclr((u8*)&osAppNmiBuffer, 64);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
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),
|
||||
0x80096B20:("D_80096B20","u8","",0x1),
|
||||
0x80096B24:("gViConfigUseDefault","vu8","",0x1),
|
||||
@ -4626,14 +4636,14 @@
|
||||
0x80208E98:("D_80208E98","UNK_TYPE1","",0x1),
|
||||
0x80208E99:("D_80208E99","UNK_TYPE1","",0x1),
|
||||
0x80208E9C:("D_80208E9C","UNK_TYPE1","",0x1),
|
||||
0x80208EA0:("D_80208EA0","UNK_TYPE1","",0x1),
|
||||
0x80209AA0:("D_80209AA0","UNK_TYPE1","",0x1),
|
||||
0x80208EA0:("gGfxSPTaskYieldBuffer","u8","[OS_YIELD_DATA_SIZE]",0xC00),
|
||||
0x80209AA0:("gGfxSPTaskStack","u8","[0x400]",0x400),
|
||||
0x80209EA0:("gGfxPools","GfxPool","[2]",0x40620),
|
||||
0x8024A4C0:("gAudioHeap","u8","[1277952]",0x138000),
|
||||
0x803824C0:("gSystemHeap","u32","[1046224]",0x3fdb40),
|
||||
0x80780000:("D_80780000","u8","[17920]",0x4600),
|
||||
0x80784600:("D_80784600","u8","[352768]",0x56200),
|
||||
0x807DA800:("D_807DA800","u16","[76800]",0x25800),
|
||||
0x8024A4C0:("gAudioHeap","u8","[0x138000]",0x138000),
|
||||
0x803824C0:("gSystemHeap","u32","[UNK_SIZE]",0x3fdb40),
|
||||
0x80780000:("D_80780000","u8","[0x4600]",0x4600),
|
||||
0x80784600:("D_80784600","u8","[0x56200]",0x56200),
|
||||
0x807DA800:("gFramebuffer0","u16","[SCREEN_HEIGHT][SCREEN_WIDTH]",0x25800),
|
||||
0x80800860:("titleRotation","s16","",0x2),
|
||||
0x80800868:("D_80800868","UNK_TYPE1","",0x1),
|
||||
0x80800870:("D_80800870","UNK_TYPE1","",0x1),
|
||||
|
12
undef.txt
12
undef.txt
@ -5,9 +5,7 @@ osResetType = 0x8000030C;
|
||||
osCicId = 0x80000310;
|
||||
osVersion = 0x80000314;
|
||||
osMemSize = 0x80000318;
|
||||
D_8000031C = 0x8000031C;
|
||||
D_80000500 = 0x80000500;
|
||||
D_80025D00 = 0x80025D00;
|
||||
osAppNmiBuffer = 0x8000031C;
|
||||
sBootThreadInfo = boot_bss_start + 0x00000000;
|
||||
sIdleThread = boot_bss_start + 0x00000020;
|
||||
sIdleThreadStack = boot_bss_start + 0x000001D0;
|
||||
@ -793,14 +791,6 @@ D_80208E94 = code_bss_start + 0x00024EF4;
|
||||
D_80208E98 = code_bss_start + 0x00024EF8;
|
||||
D_80208E99 = code_bss_start + 0x00024EF9;
|
||||
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_80814E90 = ovl_file_choose_bss_start + 0x00000010;
|
||||
D_8082DA50 = ovl_kaleido_scope_bss_start + 0x00000000;
|
||||
|
Loading…
Reference in New Issue
Block a user