From ecb8e884b7bb7b604c6bad0cf81981bd1eb16089 Mon Sep 17 00:00:00 2001 From: Banjo Kazooie Date: Thu, 23 Feb 2023 19:59:46 -0600 Subject: [PATCH] func_80338CD0() match, core2/modelRender.c done, progress update --- README.md | 2 +- progress/progress_core2.svg | 4 +-- progress/progress_total.svg | 4 +-- src/core2/code_A5BC0.c | 2 +- src/core2/modelRender.c | 56 +++++++++++++++++++------------------ symbol_addrs.us.v10.txt | 28 +------------------ 6 files changed, 36 insertions(+), 60 deletions(-) diff --git a/README.md b/README.md index a914f695..98de21e4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# banjo (98.5170%) +# banjo (98.5330%) diff --git a/progress/progress_core2.svg b/progress/progress_core2.svg index 5a8e426d..9df0d4d3 100644 --- a/progress/progress_core2.svg +++ b/progress/progress_core2.svg @@ -17,7 +17,7 @@ core2 - 97.8118% - 97.8118% + 97.8397% + 97.8397% \ No newline at end of file diff --git a/progress/progress_total.svg b/progress/progress_total.svg index a12b4d34..2c84dc0e 100644 --- a/progress/progress_total.svg +++ b/progress/progress_total.svg @@ -17,7 +17,7 @@ Banjo-Kazooie (us.v10) - 98.5170% - 98.5170% + 98.5330% + 98.5330% \ No newline at end of file diff --git a/src/core2/code_A5BC0.c b/src/core2/code_A5BC0.c index 82aeacf4..8958d5c5 100644 --- a/src/core2/code_A5BC0.c +++ b/src/core2/code_A5BC0.c @@ -997,7 +997,7 @@ s32 func_8032F170(Cube **arg0, void **arg1){ #pragma GLOBAL_ASM("asm/nonmatchings/core2/code_A5BC0/func_8032F194.s") #else void func_8032F194(ActorMarker *marker, s32 position[3], Cube *cube) { - ActorProp sp24; + ActorProp2 sp24; ((s32*)&sp24)[2] = ((s32*)marker->propPtr)[2]; sp24.x = (s16) position[0]; diff --git a/src/core2/modelRender.c b/src/core2/modelRender.c index 3506b40f..5e0a471c 100644 --- a/src/core2/modelRender.c +++ b/src/core2/modelRender.c @@ -889,42 +889,44 @@ void func_80338BFC(Gfx **gfx, Mtx **mtx, void *arg2){ } //CmdC_SELECTOR -#ifndef NONMATCHING -#pragma GLOBAL_ASM("asm/nonmatchings/core2/modelRender/func_80338CD0.s") -#else void func_80338CD0(Gfx **gfx, Mtx **mtx, void *arg2){ - GeoCmdC *cmd = (GeoCmdC *)arg2; - s32 tmp_v0; + GeoCmdC *cmd = (GeoCmdC *) arg2; + s32 sub_cmd; s32 indx; - s32 indx2; s32 s2; s32 s1; - s32* s0; + s32 *s0; - tmp_v0 = cmd->unkA; indx = D_80383658[cmd->unkA]; - if(cmd->unkA){ - if(indx == 0){ - - }else if(indx > 0){ - if(cmd->unk8 >= indx){ - func_80339124(gfx, mtx, (s32)cmd + cmd->unkC[indx-1]); - } - - }else{//L80338D5C - s1 = -indx; + + if (cmd->unkA == 0) + return; + + if (indx == 0) + return; + + if (0 < indx) { + if (indx <= cmd->unk8) { s0 = cmd->unkC; - for(s2 = 0; s2 < cmd->unk8; s2++){//L80338D6C - if(s1 & 1){ - func_80339124(gfx, mtx, (s32)cmd + *s0); - } - s1 >>= 1; - s0++; - } + sub_cmd = cmd; + sub_cmd += *(s32*)(s0 + (indx - 1)); + func_80339124(gfx, mtx, sub_cmd); } - }//L80338DA8 + } else { + s1 = indx * (-1); + s0 = cmd->unkC; + for (s2 = 0; s2 < cmd->unk8; s2++) { + if (s1 & 1) + { + sub_cmd = cmd; + sub_cmd += s0[0]; + func_80339124(gfx, mtx, sub_cmd); + } + s1 >>= 1; + s0++; + } + } } -#endif //CmdD_DRAW_DISTANCE void func_80338DCC(Gfx ** gfx, Mtx ** mtx, void *arg2){ diff --git a/symbol_addrs.us.v10.txt b/symbol_addrs.us.v10.txt index 3e98852f..3e9a21a4 100644 --- a/symbol_addrs.us.v10.txt +++ b/symbol_addrs.us.v10.txt @@ -25,7 +25,6 @@ realloc = 0x80255358; write_file_blocks = 0x80255B30; ml_vec3f_normalize = 0x80256450; ml_vec3f_set_length_copy = 0x802565E0; -ml_vec3f_set_length = 0x80256A24; ml_isNonzero_vec3f = 0x80258368; mlAbsF = 0x80258964; ml_vec3f_copy = 0x80258BA4; @@ -34,13 +33,6 @@ ml_vec3f_add = 0x80258C48; ml_vec3f_scale_copy = 0x80258CB0; ___osGetSR = 0x8025AFE0; sns_write_payload_over_heap = 0x8025B700; -alEvtqPostEvent = 0x8025CDFC; -n_alSynStartVoice = 0x8025D4A0; -n_alSynAllocVoice = 0x8025D208; -n_alSynSetVol = 0x8025D400; -n_alSynSetPan = 0x8025D520; -n_alSynSetPitch = 0x8025D5A0; -n_alSynSetFXMix = 0x8025D620; bzero = 0x80263B40; osWriteBackDCacheAll = 0x80263BE0; osVirtualToPhysical = 0x802646A0; @@ -68,10 +60,8 @@ __osProbeTLB = 0x8026B420; bcopy = 0x8026C110; __osSetCompare = 0x8026CA70; osGetCount = 0x8026CE00; -D_802758C0 = 0x802758C0; // size:0xC framebuffer_width = 0x80276588; framebuffer_height = 0x8027658C; -n_syn = 0x80276E84; __osShutdown = 0x8027712C; __OSGlobalIntMask = 0x80277130; __osRunQueue = 0x80277378; @@ -82,13 +72,7 @@ __libm_qnan_f = 0x80278DB0; D_8027BEEC = 0x8027BEEC; __osEventStateTab = 0x80284660; __osThreadSave = 0x80285DE0; -leoDiskStack = 0x80285F90;//technically should have a OS_LEO_STACKSIZE or something.. -animctrl_new = 0x802872E0; -animctrl_setIndex = 0x8028745C; -animctrl_reset = 0x802874AC; -_animctrl_start = 0x802875AC; -animctrl_setDirection = 0x8028767C; -animctrl_setDuration = 0x8028768C; +leoDiskStack = 0x80285F90;//technically should have a OS_LEO_STACKSIZE or something... baMarker_8028D694 = 0x8028D694; player_getPosition = 0x8028E9A4; _player_getPosition = 0x802984D4; @@ -97,20 +81,15 @@ spawnQueue_func_802C3A18 = 0x802C3A18; spawnQueue_flush = 0x802C3A38; spawnQueue_unlock = 0x802C3BDC; spawnQueue_lock = 0x802C3BE8; -mapSpecificFlags_set = 0x802CADC0; mapSpecificFlags_getAll = 0x802CAE8C; mapSpecificFlags_setAll = 0x802CAE98; -bitfield_isBitSet = 0x802CAF70; mapSpecificFlags_validateCRC1 = 0x802CB00C; mapSavestate_save = 0x802E2F2C; mapSavestate_apply = 0x802E30AC; getGameMode = 0x802E49FC; vtxList_getVertices = 0x802EC450; -_printbuffer_draw_letter = 0x802F55D8; cube_atIndices = 0x80303384; gctransition_8030BD98 = 0x8030BD98; -sfxsource_setSfxId = 0x8030DA80; -sfxsource_setSampleRate = 0x8030DABC; gcdialog_setState = 0x8030F488; gcdialog_update = 0x8030F990; gczoombox_update = 0x80316EF4; @@ -121,8 +100,6 @@ fileProgressFlag_get = 0x8031FF1C; level_get = 0x80321900; levelSpecificFlags_validateCRC1 = 0x8032204C; marker_despawn = 0x803282F4; -actor_playAnimationOnce = 0x803298AC; -actor_loopAnimation = 0x803298D8; actor_copy = 0x80329C40; actors_appendToSavestate = 0x80329CBC; strIToA = 0x8033D884; @@ -133,13 +110,10 @@ item_empty = 0x80345F74; itemscore_noteScores_get = 0x80346F34; demo_readInput = 0x80349EE4; randf = 0x8034A390; -randf2 = 0x8034A754; suBaddieActorArray = 0x8036E560; D_80374CF0 = 0x80374CF0; D_8037901C = 0x8037901C; D_8037DCB0 = 0x8037DCB0; -print_sCurrentPtr = 0x80380AE4; -print_sInFontFormatMode = 0x80380B08; __propellorTimer = 0x803912CC; D_A00001D8 = 0xA00001D8;