diff options
| author | Roman971 <32455037+Roman971@users.noreply.github.com> | 2020-03-22 20:04:39 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-03-22 20:04:39 +0100 |
| commit | b372169893f1e66654b03d9d39b44a59893da8ec (patch) | |
| tree | e3aa9db966843a03821bed5bc1704e3cc2cc2ada /src/code | |
| parent | 959ac9df2624c7c05bf68901fcfd8ed266ccefab (diff) | |
| parent | 0db4629a63bca63a1cd913c2d07f887dcf974228 (diff) | |
Merge pull request #22 from Random06457/master
Decompiled z_sample.c
Diffstat (limited to 'src/code')
| -rw-r--r-- | src/code/z_sample.c | 114 |
1 files changed, 107 insertions, 7 deletions
diff --git a/src/code/z_sample.c b/src/code/z_sample.c index 441d8451a..eb29dc475 100644 --- a/src/code/z_sample.c +++ b/src/code/z_sample.c @@ -1,17 +1,117 @@ #include <ultra64.h> #include <global.h> +#include <PR/os_cont.h> -#pragma GLOBAL_ASM("asm/non_matchings/code/z_sample/func_800975D0.s") +void Sample_Calc(SampleContext* this) +{ + if (!~(this->state.input[0].padPressed | ~START_BUTTON)) + { + this->state.init = func_800BCA64; this->state.size = sizeof(GlobalContext); + this->state.running = false; + } +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_sample/func_80097604.s") +// very close from matching, the only difference is the place of "mtx" in the stack +#ifdef NON_MATCHING +void Sample_Draw(SampleContext* this) +{ + u32 pad; + GraphicsContext* gfxCtx = this->state.gfxCtx; + View* view = &this->view; + Gfx* gfxArr[4]; + Mtx* mtx; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_sample/func_80097820.s") + func_800C6AC4(gfxArr, gfxCtx, "../z_sample.c", 62); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_sample/func_80097848.s") + gSPSegment(gfxCtx->polyOpa.p++, 0, NULL; + gSPSegment(gfxCtx->polyOpa.p++, 1, this->staticSegment); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_sample/func_80097850.s") + func_80095248(gfxCtx, 0, 0, 0); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_sample/func_80097904.s") + view->unk_120 = 7; + func_800AAA50(view, 15); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_sample/func_80097974.s") + mtx = Graph_Alloc(gfxCtx, sizeof(Mtx)); + func_80103D58(mtx, SREG(37), SREG(38), SREG(39), 1.0f, SREG(40), SREG(41), SREG(42)); + gSPMatrix(gfxCtx->polyOpa.p++, mtx, G_MTX_LOAD); + gfxCtx->polyOpa.p = func_80093708(gfxCtx->polyOpa.p, 0xFF, 0xFF, 0xFF, 0, 0, 0); + func_80093D18(gfxCtx); + + gDPSetCycleType(gfxCtx->polyOpa.p++, G_CYC_1CYCLE); + gDPSetRenderMode(gfxCtx->polyOpa.p++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); + gDPSetCombineLERP(gfxCtx->polyOpa.p++, 0, 0, 0, PRIMITIVE, 0, 0, 0, PRIMITIVE, 0, 0, 0, PRIMITIVE, 0, 0, 0, PRIMITIVE); + gDPSetPrimColor(gfxCtx->polyOpa.p++, 0, 0, 0xFF, 0xFF, 0x00, 0x00); + + func_800C6B54(gfxArr, gfxCtx, "../z_sample.c", 111); +} +#else +#pragma GLOBAL_ASM("asm/non_matchings/code/z_sample/Sample_Draw.s") +#endif + +void Sample_Update(SampleContext* this) +{ + Sample_Draw(this); + Sample_Calc(this); +} + +void Sample_Destroy(SampleContext* this) +{ + +} + +void Sample_SetupView(SampleContext* this) +{ + View* view; + GraphicsContext* gfxCtx; + u32 v0[4]; + Vec3f v1; + Vec3f v2; + Vec3f v3; + + view = &this->view; + gfxCtx = this->state.gfxCtx; + func_800AA278(view, gfxCtx); + + v0[1] = SCREEN_HEIGHT; v0[3] = SCREEN_WIDTH; + v0[0] = 0; + v0[2] = 0; + + func_800AA4FC(view, &v0); + func_800AA460(view, 60, 10, 12800); + + v1.x = 0; + v1.y = 0; + v2.x = 0; + v2.y = 0; + v2.z = 0; + v3.x = 0; + v3.z = 0; + v1.z = 3000; + v3.y = 1; + + func_800AA358(view, &v1, &v2, &v3); +} + +void Sample_LoadTitleStatic(SampleContext* this) +{ + u32 size = _title_staticSegmentRomEnd - _title_staticSegmentRomStart; + + this->staticSegment = Game_Alloc(&this->state, size, "../z_sample.c", 163); + DmaMgr_SendRequest1(this->staticSegment, _title_staticSegmentRomStart, size, "../z_sample.c", 164); +} + +void Sample_Init(SampleContext* this) +{ + this->state.main = Sample_Update; + this->state.destroy = Sample_Destroy; + R_UPDATE_RATE = 1; + Sample_SetupView(this); + Sample_LoadTitleStatic(this); + SREG(37) = 0; + SREG(38) = 0; + SREG(39) = 0; + SREG(40) = 0; + SREG(41) = 0; + SREG(42) = 0; +} |
