diff --git a/README.md b/README.md index 90324d8b..7e103dca 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# banjo (88.8665%) +# banjo (88.9275%) diff --git a/progress/progress_core2.svg b/progress/progress_core2.svg index a5a82079..abca599b 100644 --- a/progress/progress_core2.svg +++ b/progress/progress_core2.svg @@ -9,7 +9,7 @@ - + @@ -17,7 +17,7 @@ core2 - 87.6077% - 87.6077% + 87.7140% + 87.7140% \ No newline at end of file diff --git a/progress/progress_total.svg b/progress/progress_total.svg index 7e8889db..7836d0b0 100644 --- a/progress/progress_total.svg +++ b/progress/progress_total.svg @@ -17,7 +17,7 @@ Banjo-Kazooie (us.v10) - 88.8665% - 88.8665% + 88.9275% + 88.9275% \ No newline at end of file diff --git a/src/BGS/crc.c b/src/BGS/crc.c index 68a18be4..a5660f3d 100644 --- a/src/BGS/crc.c +++ b/src/BGS/crc.c @@ -1,5 +1,6 @@ #include +//TODO Implement CRC calculation in Makefile(?) u32 D_80390B20 = 0x00282B61; //BGS.code CRC1 u32 D_80390B24 = 0xccdaeea0; //BGS.code CRC2 u32 D_80390B28 = 0x0002DE6B; //BGS.data CRC1 (with this value = 0) \ No newline at end of file diff --git a/src/GV/code_3B10.c b/src/GV/code_3B10.c index 5f2a1ccb..f5e553ff 100644 --- a/src/GV/code_3B10.c +++ b/src/GV/code_3B10.c @@ -5,12 +5,11 @@ extern void func_8028F710(s32, f32); /* .data */ -u8 D_80390F30[] = { - 0x00, 0x27, 0x45, 0x30, - 0xAA, 0x18, 0xBB, 0xF3, - 0x00, 0x03, 0x03, 0x1C, - 0x00, 0x00, 0x00, 0x00 -}; +//TODO Implement CRC calculation in Makefile(?) +u32 D_80390F30 = 0x00274530; //GV.code CRC1 +u32 D_80390F34 = 0xAA18BBF3; //GV.code CRC2 +u32 D_80390F38 = 0x0003031C; //GV.data CRC1 (with this value = 0) + /* .code */ void func_80389F00(void){ diff --git a/src/core2/code_679A0.c b/src/core2/code_679A0.c index fba6793e..8ddde3f5 100644 --- a/src/core2/code_679A0.c +++ b/src/core2/code_679A0.c @@ -164,11 +164,7 @@ void func_802EEE3C(ParticleEmitter *this, Gfx **gfx, Mtx **mtx, Vtx **vtx, s32 a f32 sp80[3]; f32 sp74[3]; Particle *iPtr; - s32 tmp_a0; - s32 tmp_a1; - s32 tmp_a2; - s32 tmp_a3; - + if(arg4 != (this->unk18 & 0x4)) return; @@ -180,8 +176,8 @@ void func_802EEE3C(ParticleEmitter *this, Gfx **gfx, Mtx **mtx, Vtx **vtx, s32 a if( 0.0f != this->unk10 || 1.0 != this->unk14 || this->unk49 != 0xff ){ func_8033A410((s32) (iPtr->unkC*this->unk49)); }//L802EEF5C - tmp_a3 = (this->unk18 & 0x10)?0:1; - set_model_render_mode(tmp_a3); + // tmp_a3 = (this->unk18 & 0x10)?0:1; + set_model_render_mode((this->unk18 & 0x10)?0:1); func_803391A4(gfx, mtx, sp8C, iPtr->unk24, iPtr->size_30, NULL, this->model_20); } } @@ -192,14 +188,14 @@ void func_802EEE3C(ParticleEmitter *this, Gfx **gfx, Mtx **mtx, Vtx **vtx, s32 a || this->unk3C[2] != 0xff || this->unk49 != 0xff ){ - tmp_a3 = (this->unk18 & 0x10)? 9: 0xf; - func_803382E4(tmp_a3); + func_803382E4((this->unk18 & 0x10)? 9: 0xf); func_80338338(this->unk3C[0], this->unk3C[1], this->unk3C[2]); - tmp_a0 = (this->unk3C[0] < 8)? 0 : this->unk3C[0] - 8; - tmp_a1 = (this->unk3C[1] < 8)? 0 : this->unk3C[1] - 8; - tmp_a2 = (this->unk3C[2] < 8)? 0 : this->unk3C[2] - 8; - tmp_a3 = (this->unk18 & 0x20)? 0xff : this->unk49; - func_803382B4(tmp_a0, tmp_a1, tmp_a2, tmp_a3); + func_803382B4( + (this->unk3C[0] < 8)? 0 : this->unk3C[0] - 8, + (this->unk3C[1] < 8)? 0 : this->unk3C[1] - 8, + (this->unk3C[2] < 8)? 0 : this->unk3C[2] - 8, + (this->unk18 & 0x20)? 0xff : this->unk49 + ); func_80338370(); func_80335D30(gfx); } diff --git a/src/core2/code_6DA30.c b/src/core2/code_6DA30.c index e3df7576..04b97a05 100644 --- a/src/core2/code_6DA30.c +++ b/src/core2/code_6DA30.c @@ -32,7 +32,7 @@ typedef struct map_font_texture_map{ typedef struct{ u8 unk0; u8 unk1; - u8 pad2[1]; + s8 unk2; s8 unk3; }Struct_6DA30_0_s; @@ -46,7 +46,7 @@ extern struct { u8 unk3; } D_80369078; -extern s32 D_80369068[]; +extern s32 D_80369068[]; //max letter width extern MapFontTextureMap D_8036907C[]; extern u8 D_80369200[]; @@ -71,7 +71,7 @@ extern u8 D_8037724C[4]; extern u8 D_80377250[4]; extern u8 D_80377254[4]; -s8 D_80380AB0; +char D_80380AB0; BKSprite *D_80380AB8[0x5]; FontLetter *print_sFonts[4]; @@ -79,7 +79,7 @@ PrintBuffer *print_sPrintBuffer; PrintBuffer *print_sCurrentPtr; s32 D_80380AE8; s32 D_80380AEC; -s32 D_80380AF0; +s32 D_80380AF0; //print_sMonospaced s32 D_80380AF4; s32 D_80380AF8; s32 D_80380AFC; @@ -97,6 +97,8 @@ f32 D_80380FA0; f32 D_80380FA8[0x20]; +void func_802F7A2C(s32 arg0); + //returns map texture assetID for current map; enum asset_e func_802F49C0(void){ s32 i; @@ -288,25 +290,23 @@ void func_802F5188(void){ func_802F5010(); } -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_6DA30/func_802F51B8.s") -/*void func_802F51B8(void){ +void func_802F51B8(void){ s32 i, j; s32 length; int found; length = strlen(D_80369200); - D_80380AEC = 0; - D_80380AF0 = 0; - D_80380AF4 = 0; - D_80380AF8 = 0; - D_80380AFC = 0; - D_80380B00 = 0; - D_80380B04 = 0; - print_sInFontFormatMode = FALSE; - D_80380B0C = 0; - D_80380B10 = 0; + D_80380AE8 = \ + D_80380AEC = \ + D_80380AF0 = \ + D_80380AF4 = \ + D_80380AF8 = \ + D_80380AFC = \ + print_sInFontFormatMode = \ + D_80380B04 = \ + D_80380B00 = \ + D_80380B10 = \ D_80380B14 = 0; - D_80380AE8 = 0; D_80380AB0 = 0; func_802F7A2C(3); D_80380AB8[0] = assetcache_get(SPRITE_DIALOG_FONT_ALPHAMASK); @@ -327,12 +327,11 @@ void func_802F5188(void){ }//L802F5330 if(!found) D_80380F20[i] = -1; - //L802F533C } assetcache_release(D_80380AB8[4]); D_80380AB8[4] = NULL; D_80380B1C = func_802F49C0(); -}//*/ +} void func_802F5374(void){ if(D_80380B18 > 0 && --D_80380B18 == 0){ @@ -365,7 +364,7 @@ void func_802F542C(void){ } //returns the pixel data and type for a given letter -void *func_802F5494(s32 letterId, s32 *fontType){ +BKSpriteTextureBlock *func_802F5494(s32 letterId, s32 *fontType){ if(D_80380AE8 != 1 || (D_80380AE8 == 1 && letterId < 0xA)){ *fontType = D_80380AB8[D_80380AE8]->type; return print_sFonts[D_80380AE8][letterId].unk0; @@ -641,8 +640,58 @@ void _printbuffer_draw_letter(s32 letter, f32* xPtr, f32* yPtr, f32 arg3, Gfx ** } #endif -f32 func_802F6C90(u8 letter, f32* xPtr, f32 *yPtr, f32 arg3); -#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_6DA30/func_802F6C90.s") +f32 func_802F6C90(u8 letter, f32* xPtr, f32 *yPtr, f32 arg3){ + s32 sp44; + s32 i; + bool var_v0; + f32 sp38; + s32 sp34; + f32 var_f2; + s32 sp2C; + + sp38 = *xPtr; + var_v0 = FALSE; + sp34 = 0; + if (D_80380AE8 == 1) { + if (letter < 0x80) { + if (D_80380F20[letter] >= 0) { + for(i = 0; D_80369000[i].unk0 != 0; i++) { + if ((D_80369000[i].unk1 == letter) && (D_80369000[i].unk0 == D_80380AB0)) { + sp34 = D_80369000[i].unk2; + break; + } + } + D_80380AB0 = letter; + sp44 = D_80380F20[letter]; + var_v0 = TRUE; + sp38 += sp34 * arg3; + } + } + } + else{ + return *xPtr; + } + if (!var_v0 || print_sInFontFormatMode) { + if (letter == ' ') { + var_f2 = (D_80380AF0) ? D_80369068[D_80380AE8] : 0.8*D_80369068[D_80380AE8]; + } + else{ + return *xPtr; + } + } + else { + if(D_80380AF0){ + var_f2 = D_80369068[D_80380AE8]; + } + else{ + var_f2 = func_802F5494(sp44, &sp2C)->x; + } + } + var_f2 += (sp34 - 4); + *xPtr += var_f2 * arg3; + + return sp38; +} void printbuffer_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx) { s32 j; diff --git a/src/lair/code_0.c b/src/lair/code_0.c index 7867c6ea..481b602e 100644 --- a/src/lair/code_0.c +++ b/src/lair/code_0.c @@ -143,40 +143,6 @@ extern struct31s D_803934AC; extern struct42s D_803934D4; extern s32 D_80393504[4]; -/* .rodata */ -extern f32 D_80394D50; -extern f64 D_80394D58; -extern f32 D_80394D60; -extern f32 D_80394D64; -extern f32 D_80394D68; -extern f32 D_80394D6C; -extern f32 D_80394D70; -extern f32 D_80394D74; -extern f32 D_80394D78; -extern f32 D_80394D7C; - -extern f64 D_80394F88; - -extern f32 D_80394D80; -extern f32 D_80394D84; -extern f32 D_80394D88; -extern f32 D_80394D8C; //! .rodata : 0.9f -extern f64 D_80394D90; //! .rodata : 1.7 -extern f64 D_80394D98; //! .rodata : 1.1 -extern f32 D_80394FC0; -extern f32 D_80394FC4; -extern f32 D_80394FC8; -extern f32 D_80394FCC; -extern f32 D_80394FD0; -extern f32 D_80394FD4; -extern f32 D_80394FD8; -extern f32 D_80394FDC; -extern f32 D_80394FE0; -extern f32 D_80394FE4; -extern f32 D_80394FE8; -extern f32 D_80394FEC; -extern f32 D_80394FF0; - /* .bss */ diff --git a/src/lair/code_5ED0.c b/src/lair/code_5ED0.c index b58aa0a6..56fce935 100644 --- a/src/lair/code_5ED0.c +++ b/src/lair/code_5ED0.c @@ -99,7 +99,7 @@ extern struct { u8 UNK_07; f32 unk8; -} D_80394354[]; // unk size +} D_80394354[]; // ? extern struct { diff --git a/subyaml/FP.us.v10.yaml b/subyaml/FP.us.v10.yaml index 4bc2b07c..8d5f70d4 100644 --- a/subyaml/FP.us.v10.yaml +++ b/subyaml/FP.us.v10.yaml @@ -33,14 +33,14 @@ segments: - [0x790, c, code_790] #DONE - [0xA40, c, code_A40] #DONE - [0x11F0, c, code_11F0] #DONE - - [0x19E0, c, code_19E0] + - [0x19E0, c, code_19E0] #DONE - [0x1FF0, c, code_1FF0] #DONE - [0x2350, c, code_2350] #DONE - [0x3E00, c, code_3E00] #DONE - [0x4400, c, code_4400] #DONE - [0x45D0, c, code_45D0] #DONE - [0x4770, c, code_4770] #DONE - - [0x5CC0, c, code_5CC0] #DONE + - [0x5CC0, c, code_5CC0] - [0x6AE0, c, code_6AE0] #DONE - [0x7980, c, code_7980] #DONE - [0x8330, c, code_8330] #DONE