diff options
| author | glank <tommy.bergman91@gmail.com> | 2020-03-21 12:31:29 +0100 |
|---|---|---|
| committer | glank <tommy.bergman91@gmail.com> | 2020-03-21 12:31:29 +0100 |
| commit | fa4c848cade2dab5e0834fb0f2a05b6fcef5b11e (patch) | |
| tree | 5e6bcee444ff58c5fd70a6d497abc9cbb96c5d9e /src/code | |
| parent | 8e5c9e78e4fd05f6bd49e1121d7c74b88aef8507 (diff) | |
| parent | af62b0e7d7d78a4060cf909b4ac1a4182a04a9db (diff) | |
Merge branch 'master' into z_en_tk
Diffstat (limited to 'src/code')
| -rw-r--r-- | src/code/code_8006C360.c | 69 | ||||
| -rw-r--r-- | src/code/code_8007BE60.c | 50 | ||||
| -rw-r--r-- | src/code/code_8007BF10.c | 5 | ||||
| -rw-r--r-- | src/code/main.c | 8 | ||||
| -rw-r--r-- | src/code/sys_ucode.c | 8 | ||||
| -rw-r--r-- | src/code/title_setup.c | 2 | ||||
| -rw-r--r-- | src/code/z_debug.c | 301 | ||||
| -rw-r--r-- | src/code/z_lib.c | 29 | ||||
| -rw-r--r-- | src/code/z_msgevent.c | 23 | ||||
| -rw-r--r-- | src/code/z_prenmi_buff.c | 35 | ||||
| -rw-r--r-- | src/code/z_room.c | 8 |
11 files changed, 444 insertions, 94 deletions
diff --git a/src/code/code_8006C360.c b/src/code/code_8006C360.c index 3180bab89..fa48f62ed 100644 --- a/src/code/code_8006C360.c +++ b/src/code/code_8006C360.c @@ -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]; +} diff --git a/src/code/code_8007BE60.c b/src/code/code_8007BE60.c deleted file mode 100644 index 59ef949c5..000000000 --- a/src/code/code_8007BE60.c +++ /dev/null @@ -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; -} diff --git a/src/code/code_8007BF10.c b/src/code/code_8007BF10.c deleted file mode 100644 index 46771a303..000000000 --- a/src/code/code_8007BF10.c +++ /dev/null @@ -1,5 +0,0 @@ -#include <ultra64.h> -#include <global.h> - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_8007BF10/func_8007BF10.s") - diff --git a/src/code/main.c b/src/code/main.c index f69f62317..987654a41 100644 --- a/src/code/main.c +++ b/src/code/main.c @@ -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); } } diff --git a/src/code/sys_ucode.c b/src/code/sys_ucode.c index f92a0d61e..0bd169090 100644 --- a/src/code/sys_ucode.c +++ b/src/code/sys_ucode.c @@ -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; } diff --git a/src/code/title_setup.c b/src/code/title_setup.c index 22ee8b181..d7ac9cc87 100644 --- a/src/code/title_setup.c +++ b/src/code/title_setup.c @@ -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) diff --git a/src/code/z_debug.c b/src/code/z_debug.c index b5d078985..451443a6b 100644 --- a/src/code/z_debug.c +++ b/src/code/z_debug.c @@ -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; + +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) +{ + +} -void func_8006375C(UNK_TYPE arg0, UNK_TYPE arg1, UNK_TYPE arg2) +#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); + } +} + +//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: -#pragma GLOBAL_ASM("asm/non_matchings/code/z_debug/func_80063D7C.s") + 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); +} diff --git a/src/code/z_lib.c b/src/code/z_lib.c index 7b8bcbc2c..a7411c53d 100644 --- a/src/code/z_lib.c +++ b/src/code/z_lib.c @@ -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) { diff --git a/src/code/z_msgevent.c b/src/code/z_msgevent.c new file mode 100644 index 000000000..3282d0342 --- /dev/null +++ b/src/code/z_msgevent.c @@ -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); +} diff --git a/src/code/z_prenmi_buff.c b/src/code/z_prenmi_buff.c new file mode 100644 index 000000000..5616e3b79 --- /dev/null +++ b/src/code/z_prenmi_buff.c @@ -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; +} diff --git a/src/code/z_room.c b/src/code/z_room.c index bbcb3d6f4..79c0d2bf6 100644 --- a/src/code/z_room.c +++ b/src/code/z_room.c @@ -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); } } |
