1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-04 06:54:33 +00:00

Merge branch 'master' into z_en_tk

This commit is contained in:
glank 2020-03-21 12:31:29 +01:00
commit fa4c848cad
72 changed files with 994 additions and 2402 deletions

View file

@ -1,5 +1,72 @@
#include <ultra64.h>
#include <global.h>
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8006C360/func_8006C360.s")
u16 D_8011F3F0[60][9] =
{
{ 0x0000, 0x7124, 0x7127, 0x7126, 0x7125, 0x7127, 0x7124, 0x7125, 0x7127 },
{ 0x0000, 0x7128, 0x7129, 0x7128, 0x7128, 0x7128, 0x7128, 0x712A, 0x712B },
{ 0x0000, 0x7128, 0x712B, 0x7128, 0x7128, 0x7129, 0x7128, 0x712B, 0x7128 },
{ 0x0000, 0x7128, 0x7129, 0x7128, 0x7128, 0x7128, 0x7128, 0x712A, 0x712B },
{ 0x0000, 0x7128, 0x7129, 0x712B, 0x7128, 0x7128, 0x7128, 0x7129, 0x7128 },
{ 0x0000, 0x712D, 0x712D, 0x712D, 0x712D, 0x712D, 0x712D, 0x712D, 0x712F },
{ 0x0000, 0x712C, 0x712C, 0x712C, 0x712E, 0x712C, 0x712C, 0x712F, 0x712F },
{ 0x0000, 0x712C, 0x712C, 0x712C, 0x712F, 0x712C, 0x712C, 0x712F, 0x712F },
{ 0x0000, 0x7130, 0x7132, 0x7133, 0x7130, 0x7130, 0x7131, 0x7132, 0x7131 },
{ 0x0000, 0x7134, 0x7137, 0x7135, 0x7134, 0x7136, 0x7135, 0x7134, 0x7135 },
{ 0x0000, 0x7138, 0x713A, 0x7138, 0x7139, 0x713A, 0x7138, 0x7139, 0x713B },
{ 0x0000, 0x7144, 0x7146, 0x7144, 0x7146, 0x7147, 0x7145, 0x7145, 0x7147 },
{ 0x0000, 0x7148, 0x7149, 0x7149, 0x714A, 0x714A, 0x714B, 0x7149, 0x714B },
{ 0x0000, 0x714C, 0x714D, 0x714C, 0x714C, 0x714E, 0x714C, 0x714E, 0x714F },
{ 0x0000, 0x7150, 0x7153, 0x7152, 0x7150, 0x7151, 0x7153, 0x7153, 0x7151 },
{ 0x0000, 0x7155, 0x7156, 0x7157, 0x7154, 0x7156, 0x7156, 0x7156, 0x7156 },
{ 0x0000, 0x715A, 0x7159, 0x715B, 0x715A, 0x715A, 0x7158, 0x7158, 0x715B },
{ 0x0000, 0x715E, 0x715D, 0x715D, 0x715F, 0x715E, 0x715C, 0x715C, 0x715D },
{ 0x0000, 0x7163, 0x7162, 0x7160, 0x7163, 0x7160, 0x7161, 0x7161, 0x7160 },
{ 0x0000, 0x7164, 0x7166, 0x7164, 0x7167, 0x7164, 0x7164, 0x7164, 0x7167 },
{ 0x0000, 0x716B, 0x7169, 0x7168, 0x716B, 0x716A, 0x716B, 0x716B, 0x716A },
{ 0x0000, 0x716C, 0x716D, 0x716F, 0x716C, 0x716E, 0x716E, 0x716E, 0x716F },
{ 0x0000, 0x7171, 0x7173, 0x7170, 0x7172, 0x0000, 0x0000, 0x0000, 0x0000 },
{ 0x0000, 0x7176, 0x7177, 0x7174, 0x7174, 0x7175, 0x7174, 0x7174, 0x7177 },
{ 0x0000, 0x7178, 0x7179, 0x7179, 0x717B, 0x717A, 0x717B, 0x717A, 0x717B },
{ 0x0000, 0x717D, 0x717C, 0x717C, 0x717D, 0x717F, 0x717C, 0x717E, 0x717D },
{ 0x0000, 0x7183, 0x7181, 0x7180, 0x7183, 0x7182, 0x7183, 0x7181, 0x7183 },
{ 0x0000, 0x7184, 0x7186, 0x7185, 0x7186, 0x7184, 0x7187, 0x7186, 0x7184 },
{ 0x0000, 0x71A4, 0x71A6, 0x71A5, 0x0000, 0x71A6, 0x71A6, 0x71A6, 0x71A7 },
{ 0x0000, 0x7188, 0x7188, 0x7189, 0x7188, 0x7189, 0x718B, 0x718A, 0x7189 },
{ 0x0000, 0x718C, 0x718C, 0x718D, 0x718C, 0x718E, 0x718F, 0x718D, 0x718C },
{ 0x0000, 0x7190, 0x7190, 0x7191, 0x7192, 0x7191, 0x7193, 0x7190, 0x7191 },
{ 0x0000, 0x7196, 0x7194, 0x7195, 0x7196, 0x7197, 0x7194, 0x7196, 0x7195 },
{ 0x0000, 0x7199, 0x719A, 0x7198, 0x7198, 0x719A, 0x719A, 0x719B, 0x7198 },
{ 0x0000, 0x719D, 0x719C, 0x719E, 0x719D, 0x719D, 0x719C, 0x719F, 0x719E },
{ 0x0000, 0x71A1, 0x71A0, 0x71A1, 0x71A2, 0x71A1, 0x71A2, 0x71A3, 0x71A2 },
{ 0x0000, 0x711C, 0x711E, 0x711C, 0x711F, 0x711E, 0x711C, 0x711D, 0x711F },
{ 0x0000, 0x7104, 0x7105, 0x7107, 0x7107, 0x7105, 0x7106, 0x7107, 0x7107 },
{ 0x0000, 0x7107, 0x7105, 0x7107, 0x7107, 0x7106, 0x7107, 0x7107, 0x7105 },
{ 0x0000, 0x7113, 0x7117, 0x7113, 0x7110, 0x7112, 0x7112, 0x7116, 0x7112 },
{ 0x0000, 0x7113, 0x7113, 0x7113, 0x7113, 0x7113, 0x7113, 0x7111, 0x7113 },
{ 0x0000, 0x7113, 0x7117, 0x7113, 0x7110, 0x7112, 0x7112, 0x7116, 0x7112 },
{ 0x0000, 0x7117, 0x7117, 0x7117, 0x7117, 0x7117, 0x7117, 0x7117, 0x7113 },
{ 0x0000, 0x7101, 0x7100, 0x7102, 0x7103, 0x7101, 0x7100, 0x7102, 0x7103 },
{ 0x0000, 0x7100, 0x7102, 0x7100, 0x7100, 0x7100, 0x7100, 0x7100, 0x7102 },
{ 0x0000, 0x710A, 0x7109, 0x7109, 0x710A, 0x710B, 0x7108, 0x7109, 0x710B },
{ 0x0000, 0x7117, 0x7112, 0x7113, 0x7110, 0x710C, 0x7117, 0x710E, 0x7112 },
{ 0x0000, 0x710D, 0x710F, 0x710C, 0x7112, 0x710D, 0x710C, 0x710C, 0x710F },
{ 0x0000, 0x710A, 0x7109, 0x711A, 0x710A, 0x7109, 0x7108, 0x710B, 0x7109 },
{ 0x0000, 0x710C, 0x710F, 0x7113, 0x7110, 0x710D, 0x7112, 0x7116, 0x710D },
{ 0x0000, 0x7115, 0x7114, 0x7114, 0x7115, 0x7114, 0x7114, 0x7116, 0x7117 },
{ 0x0000, 0x7113, 0x710F, 0x7113, 0x7110, 0x710C, 0x711A, 0x710D, 0x7112 },
{ 0x0000, 0x7101, 0x7102, 0x7103, 0x7101, 0x7100, 0x7100, 0x7102, 0x7100 },
{ 0x0000, 0x7112, 0x710E, 0x7112, 0x710E, 0x710D, 0x7112, 0x710E, 0x710F },
{ 0x0000, 0x7142, 0x7141, 0x7142, 0x7143, 0x7140, 0x7140, 0x7141, 0x7143 },
{ 0x0000, 0x713C, 0x713D, 0x713D, 0x713E, 0x713E, 0x713F, 0x713D, 0x713F },
{ 0x0000, 0x7101, 0x7102, 0x7103, 0x7101, 0x7100, 0x7100, 0x7102, 0x7100 },
{ 0x0000, 0x7113, 0x7117, 0x7113, 0x7110, 0x7112, 0x7112, 0x7116, 0x7112 },
{ 0x0000, 0x7104, 0x7105, 0x7107, 0x7105, 0x7105, 0x7105, 0x7107, 0x7107 },
{ 0x0000, 0x7104, 0x7105, 0x7107, 0x7105, 0x710C, 0x7105, 0x7107, 0x7107 },
};
u16 func_8006C360(GlobalContext* globalCtx, u32 idx)
{
u8 mask = func_8008F080(globalCtx);
return D_8011F3F0[idx][mask];
}

View file

@ -1,50 +0,0 @@
#include <ultra64.h>
#include <global.h>
extern u32 osResetType;
/*
void func_8007BE60(u32* a0)
{
u32 var1;
//*a0 = 0;
if (osResetType == 0)
{
a0[1] = 0;
a0[2] = 0;
a0[3] = 0;
}
else
{
var1 = a0[3] + a0[5];
a0[1]++;
a0[2] = (var1 < a0[5]) + a0[2] + a0[4];
a0[3] = var1;
}
a0[5] = 0;
a0[4] = 0;
}
*/
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8007BE60/func_8007BE60.s")
typedef struct
{
/* 0x00 */ u32 unk_00;
/* 0x04 */ char unk_04[0x0C];
/* 0x10 */ OSTime unk_10;
} struct_8007BED4;
void func_8007BED4(struct_8007BED4* arg0)
{
arg0->unk_00 = 1;
arg0->unk_10 = osGetTime();
}
u32 func_8007BF08(struct_8007BED4* arg0)
{
return arg0->unk_00;
}

View file

@ -1,5 +0,0 @@
#include <ultra64.h>
#include <global.h>
#pragma GLOBAL_ASM("asm/non_matchings/code/code_8007BF10/func_8007BF10.s")

View file

@ -7,7 +7,7 @@ u32 gScreenWidth = SCREEN_WIDTH;
u32 gScreenHeight = SCREEN_HEIGHT;
u32 gSystemHeapSize = 0;
u8* gAppNmiBufferPtr;
PreNmiBuff* gAppNmiBufferPtr;
SchedContext gSchedContext;
PadMgr gPadMgr;
IrqMgr gIrqMgr;
@ -50,8 +50,8 @@ void Main(void* arg0)
osSyncPrintf("mainproc 実行開始\n"); //Start running
gScreenWidth = SCREEN_WIDTH;
gScreenHeight = SCREEN_HEIGHT;
gAppNmiBufferPtr = osAppNmiBuffer;
func_8007BE60(gAppNmiBufferPtr);
gAppNmiBufferPtr = (PreNmiBuff*)osAppNmiBuffer;
PreNmiBuff_Init(gAppNmiBufferPtr);
Fault_Start();
SysCfb_Init(0);
sysHeap = (u32)gSystemHeap;
@ -112,7 +112,7 @@ void Main(void* arg0)
if (*msg == OS_SC_PRE_NMI_MSG)
{
osSyncPrintf("main.c: リセットされたみたいだよ\n"); //Looks like it's been reset
func_8007BED4(gAppNmiBufferPtr);
PreNmiBuff_SetReset(gAppNmiBufferPtr);
}
}

View file

@ -1,21 +1,21 @@
#include <global.h>
u32 func_800D2DF0()
u32 SysUcode_GetUCodeBoot()
{
return &D_80009320;
}
u32 func_800D2DFC()
u32 SysUcode_GetUcodeBootSize()
{
return (u32)&D_800093F0 - (u32)&D_80009320;
}
u32 func_800D2E14()
u32 SysUcode_GetUcode()
{
return D_8012DBA0;
}
u32 func_800D2E20()
u32 SysUcode_GetUcodeData()
{
return D_8012DBA4;
}

View file

@ -6,7 +6,7 @@ void TitleSetup_InitImpl(GameState* gameState)
osSyncPrintf("ゼルダ共通データ初期化\n");
SaveContext_Init();
gameState->running = false;
gameState->init = func_80800878; gameState->size = sizeof(TitleContext);
gameState->init = Title_Init; gameState->size = sizeof(TitleContext);
}
void TitleSetup_Destroy(GameState* gameState)

View file

@ -1,20 +1,309 @@
#include <ultra64.h>
#include <global.h>
#include <z64.h>
#include <color.h>
#include <regs.h>
#include <PR/os_cont.h>
#pragma GLOBAL_ASM("asm/non_matchings/code/z_debug/func_800636C0.s")
typedef struct
{
u8 x;
u8 y;
u8 colorId;
char text[0x15];
} PrintTextBuffer;
void func_8006375C(UNK_TYPE arg0, UNK_TYPE arg1, UNK_TYPE arg2)
typedef struct
{
u16 push;
u16 held;
} InputCombo;
GameInfo* gGameInfo;
int D_8015FA94; //no known symbols
PrintTextBuffer D_8015FA98[0x16];
s16 D_8011E0B0 = 0; //PrintTextBuffer index
Color_RGBA8 printTextColors[] = {
{ 0xFF, 0xFF, 0x20, 0xC0 },
{ 0xFF, 0x96, 0x80, 0xC0 },
{ 0x80, 0x60, 0x00, 0x40 },
{ 0xC0, 0x80, 0x10, 0x80 },
{ 0xFF, 0xC0, 0x20, 0x80 },
{ 0xE6, 0xE6, 0xDC, 0x40 },
{ 0x80, 0x96, 0xFF, 0x80 },
{ 0x80, 0xFF, 0x20, 0x80 },
};
InputCombo inputCombos[REG_GROUPS] = {
{ L_TRIG, U_CBUTTONS },
{ L_TRIG, L_CBUTTONS },
{ L_TRIG, D_CBUTTONS },
{ L_TRIG, A_BUTTON },
{ R_TRIG, D_CBUTTONS },
{ L_TRIG, R_CBUTTONS },
{ L_TRIG, R_TRIG },
{ L_TRIG, L_JPAD },
{ L_TRIG, R_JPAD },
{ L_TRIG, U_JPAD },
{ L_TRIG, B_BUTTON },
{ L_TRIG, Z_TRIG },
{ L_TRIG, D_JPAD },
{ R_TRIG, A_BUTTON },
{ R_TRIG, B_BUTTON },
{ R_TRIG, Z_TRIG },
{ R_TRIG, L_TRIG },
{ R_TRIG, U_CBUTTONS },
{ R_TRIG, R_CBUTTONS },
{ R_TRIG, L_JPAD },
{ R_TRIG, L_CBUTTONS },
{ R_TRIG, START_BUTTON },
{ L_TRIG, START_BUTTON },
{ R_TRIG, R_JPAD },
{ R_TRIG, U_JPAD },
{ START_BUTTON, R_TRIG },
{ START_BUTTON, A_BUTTON },
{ START_BUTTON, B_BUTTON },
{ START_BUTTON, R_CBUTTONS },
};
char regChar[] = " SOPQMYDUIZCNKXcsiWAVHGmnBdkb";
//initialize GameInfo
void func_800636C0()
{
s32 i;
gGameInfo = (GameInfo*)SystemArena_MallocDebug(sizeof(GameInfo), "../z_debug.c", 260);
gGameInfo->regPage = 0;
gGameInfo->regGroup = 0;
gGameInfo->regCur = 0;
gGameInfo->dpadLast = 0;
gGameInfo->repeat = 0;
for (i = 0; i < ARRAY_COUNT(gGameInfo->data); i++)
{
gGameInfo->data[i] = 0;
}
}
//Called when free movement is active.
//8011D394 to enable camera debugger
void func_8006375C(s32 arg0, s32 arg1, float* d_80855320)
{
}
#ifdef NON_MATCHING //regalloc
//Copy Camera Debugger Text
void func_8006376C(u8 x, u8 y, u8 colorId, const char* text)
{
PrintTextBuffer* buf;
char* bufText;
s16 i; //v1
buf = &D_8015FA98[D_8011E0B0];
if (D_8011E0B0 < 0x16) {
buf->x = x;
buf->y = y;
buf->colorId = colorId;
i = 0;
bufText = buf->text + 1;
if (*buf->text = *text++) {
do if (i++ > 0x14) {
break;
} while (*bufText++ = *text++);
}
*bufText = '\0';
D_8011E0B0++;
}
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/code/z_debug/func_8006376C.s")
#endif
#pragma GLOBAL_ASM("asm/non_matchings/code/z_debug/func_80063828.s")
//Draw Text
void func_80063828(GfxPrint* gfxPrint)
{
s32 i;
Color_RGBA8* color;
PrintTextBuffer* buffer;
char* text;
#pragma GLOBAL_ASM("asm/non_matchings/code/z_debug/func_8006390C.s")
i = 0;
if (D_8011E0B0 > 0)
{
do
{
buffer = &D_8015FA98[i];
text = buffer->text;
#pragma GLOBAL_ASM("asm/non_matchings/code/z_debug/func_80063C04.s")
color = &printTextColors[buffer->colorId];
GfxPrint_SetColor(gfxPrint, color->r, color->g, color->b, color->a);
GfxPrint_SetPos(gfxPrint, buffer->x, buffer->y);
GfxPrint_Printf(gfxPrint, "%s", text);
i += 1;
} while (i < D_8011E0B0);
}
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_debug/func_80063D7C.s")
//Edit REG
void func_8006390C(Input* input) {
s32 dpad;
s32 regGroup;
s32 increment;
InputCombo* input_combo;
s32 i;
regGroup = (gGameInfo->regGroup * REG_PAGES + gGameInfo->regPage) * REG_PER_PAGE - REG_PER_PAGE;
dpad = input->raw.pad & 0xF00;
if (!~(input->raw.pad | ~L_TRIG) ||
!~(input->raw.pad | ~R_TRIG) ||
!~(input->raw.pad | ~START_BUTTON)) {
input_combo = inputCombos;
for (i = 0; i < REG_GROUPS; i++)
{
if (~(~input_combo->push | input->raw.pad) ||
~(~input_combo->held | input->padPressed)) {
input_combo++;
}
else
break;
}
if (i < REG_GROUPS) {
if (i == gGameInfo->regGroup) {
gGameInfo->regPage = (gGameInfo->regPage + 1) % (REG_PAGES + 1);
return;
}
gGameInfo->regGroup = i;
gGameInfo->regPage = 0;
}
}
else {
switch (gGameInfo->regPage - 1)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
if (dpad == gGameInfo->dpadLast) {
gGameInfo->repeat--;
if (gGameInfo->repeat < 0) {
gGameInfo->repeat = 1;
}
else {
dpad ^= gGameInfo->dpadLast;
}
}
else {
gGameInfo->repeat = 0x10;
gGameInfo->dpadLast = dpad;
}
increment =
(dpad & R_JPAD) ? (
!~(input->raw.pad | ~(A_BUTTON | B_BUTTON)) ? 1000 :
!~(input->raw.pad | ~A_BUTTON) ? 100 :
!~(input->raw.pad | ~B_BUTTON) ? 10 : 1) :
(dpad & L_JPAD) ? (
!~(input->raw.pad | ~(A_BUTTON | B_BUTTON)) ? -1000 :
!~(input->raw.pad | ~A_BUTTON) ? -100 :
!~(input->raw.pad | ~B_BUTTON) ? -10 : -1) :
0;
gGameInfo->data[gGameInfo->regCur + regGroup] += increment;
if (dpad & U_JPAD) {
gGameInfo->regCur--;
if (gGameInfo->regCur < 0) {
gGameInfo->regCur = REG_PER_PAGE - 1;
}
}
else if (dpad & D_JPAD) {
gGameInfo->regCur++;
if (gGameInfo->regCur >= REG_PER_PAGE) {
gGameInfo->regCur = 0;
}
}
if (iREG(0)) {
iREG(0) = 0;
func_800AA000(0, iREG(1), iREG(2), iREG(3));
}
}
}
}
//Draw Memory Viewer
void func_80063C04(GfxPrint* gfxPrint)
{
s32 i;
s32 page;
s32 regGroup;
s32 test; //removing affects stack
char name[3];
page = (gGameInfo->regPage * REG_PER_PAGE) - REG_PER_PAGE;
regGroup = (gGameInfo->regGroup * REG_PAGES + gGameInfo->regPage) * REG_PER_PAGE - REG_PER_PAGE;
//set up register name string
name[0] = 'R';
name[1] = regChar[gGameInfo->regGroup]; //r_group type char
name[2] = '\0';
GfxPrint_SetColor(gfxPrint, 0, 0x80, 0x80, 0x80);
for (i = 0; i != REG_PER_PAGE; i++)
{
if (i == gGameInfo->regCur)
{
GfxPrint_SetColor(gfxPrint, 0, 0xff, 0xff, 0xff);
}
GfxPrint_SetPos(gfxPrint, 3, i + 5);
GfxPrint_Printf(gfxPrint, "%s%02d%6d", &name, page + i, gGameInfo->data[i + regGroup]);
if (i == gGameInfo->regCur)
{
GfxPrint_SetColor(gfxPrint, 0, 0x80, 0x80, 0x80);
}
}
}
void func_80063D7C(GraphicsContext* gfxCtx) {
Gfx* sp7C;
Gfx* sp78;
Gfx* tempRet;
void* unk2[6];
GfxPrint gfxPrint;
void* unk[2];
Gfx* dlFrame[4]; //stores state of GfxCtx next ptrs
func_800C6AC4(&dlFrame, gfxCtx, "../z_debug.c", 628);
GfxPrint_Ctor(&gfxPrint);
sp78 = gfxCtx->polyOpa.p;
tempRet = func_800C6C20(gfxCtx->polyOpa.p);
gSPDisplayList(gfxCtx->overlay.p++, tempRet);
GfxPrint_Open(&gfxPrint, tempRet);
if ((OREG(0) == 1) || (OREG(0) == 8)) {
func_80063828(&gfxPrint);
}
if (gGameInfo->regPage != 0) {
func_80063C04(&gfxPrint);
}
D_8011E0B0 = 0;
sp7C = GfxPrint_Close(&gfxPrint);
gSPEndDisplayList(sp7C++);
func_800C6C28(sp78, sp7C);
gfxCtx->polyOpa.p = sp7C;
if (0);
func_800C6B54(&dlFrame, gfxCtx, "../z_debug.c", 664);
GfxPrint_Dtor(&gfxPrint);
}

View file

@ -1,20 +1,17 @@
#include <ultra64.h>
#include <global.h>
#ifdef NON_MATCHING
void Lib_MemSet(void* dest, size_t size, u8 val)
void Lib_MemSet(u8* dest, size_t size, u8 val)
{
u8* destu = dest;
u32 i;
u32 i = 0;
for (i = 0; i < size; i++)
{
*destu++ = val;
}
// TODO: Convert this to while/for if possible
if (i == size) return;
do {
*dest++ = val;
i++;
} while (i != size);
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/code/z_lib/Lib_MemSet.s")
#endif
f32 Math_Coss(s16 angle)
{
@ -559,15 +556,12 @@ f32 func_800784D8(f32* pValue, f32 target, f32 scale, f32 maxStep, f32 minStep)
return step;
}
#ifdef NON_MATCHING
// regalloc differences
s16 Math_SmoothScaleMaxMinS(s16* pValue, s16 target, s16 invScale, s16 maxStep, s16 minStep)
{
s16 step = 0;
s16 diff = (target - *pValue);
s32 baseStep;
s16 step;
baseStep = diff / invScale;
s32 baseStep = diff / invScale;
if (*pValue != target)
{
@ -604,9 +598,6 @@ s16 Math_SmoothScaleMaxMinS(s16* pValue, s16 target, s16 invScale, s16 maxStep,
return diff;
}
#else
#pragma GLOBAL_ASM("asm/non_matchings/code/z_lib/Math_SmoothScaleMaxMinS.s")
#endif
void Math_SmoothScaleMaxS(s16* pValue, s16 target, s16 invScale, s16 maxStep)
{

23
src/code/z_msgevent.c Normal file
View file

@ -0,0 +1,23 @@
#include <ultra64.h>
#include <global.h>
#include <sched.h>
void MsgEvent_SendNullTask()
{
u32 pad[4];
OSScTask task;
OSMesgQueue queue;
OSMesg msg;
u32 pad2[1];
task.next = NULL;
task.flags = OS_SC_RCP_MASK;
task.msgQ = &queue;
task.msg = NULL;
task.framebuffer = NULL;
task.list.t.type = M_NULTASK;
osCreateMesgQueue(task.msgQ, &msg, 1);
osSendMesg(&gSchedContext.cmdQ, &task, OS_MESG_BLOCK);
func_800C95F8(&gSchedContext); // osScKickEntryMsg
osRecvMesg(&queue, NULL, OS_MESG_BLOCK);
}

35
src/code/z_prenmi_buff.c Normal file
View file

@ -0,0 +1,35 @@
#include <ultra64.h>
#include <global.h>
#define COLD_RESET 0
#define NMI 1
void PreNmiBuff_Init(PreNmiBuff* this)
{
this->resetting = false;
if (osResetType == COLD_RESET)
{
this->resetCount = 0;
this->duration = 0;
}
else
{
this->resetCount++;
this->duration += this->resetTime;
}
this->resetTime = 0;
}
void PreNmiBuff_SetReset(PreNmiBuff* this)
{
this->resetting = true;
this->resetTime = osGetTime();
}
u32 PreNmiBuff_IsResetting(PreNmiBuff* this)
{
return this->resetting;
}

View file

@ -426,8 +426,8 @@ void func_80096680(GlobalContext* globalCtx, Room* room, u32 flags)
gfxCtx->polyOpa.p = spA8;
}
// gSPLoadUcode(gfxCtx->polyOpa.p++, func_800D2E14(), func_800D2E20())?
gSPLoadUcodeEx(gfxCtx->polyOpa.p++, func_800D2E14(), func_800D2E20(), 0x800);
// gSPLoadUcode(gfxCtx->polyOpa.p++, SysUcode_GetUcode(), SysUcode_GetUcodeData())?
gSPLoadUcodeEx(gfxCtx->polyOpa.p++, SysUcode_GetUcode(), SysUcode_GetUcodeData(), 0x800);
}
}
@ -542,8 +542,8 @@ void func_80096B6C(GlobalContext* globalCtx, Room* room, u32 flags)
gfxCtx->polyOpa.p = spA8;
}
// gSPLoadUcode(gfxCtx->polyOpa.p++, func_800D2E14(), func_800D2E20())?
gSPLoadUcodeEx(gfxCtx->polyOpa.p++, func_800D2E14(), func_800D2E20(), 0x800);
// gSPLoadUcode(gfxCtx->polyOpa.p++, SysUcode_GetUcode(), SysUcode_GetUcodeData())?
gSPLoadUcodeEx(gfxCtx->polyOpa.p++, SysUcode_GetUcode(), SysUcode_GetUcodeData(), 0x800);
}
}