diff --git a/README.md b/README.md index 35cec32f..f8bb540b 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,11 @@ This repo contains a work-in-progress decompilation of Diddy Kong Racing for the All versions are supported, and the US 1.0 version (SHA1 = 0cb115d8716dbbc2922fda38e533b9fe63bb9670) of the game is the default if not specified. -As of April 11, 2025, this is our current score: +As of April 14, 2025, this is our current score: -    Decomp progress: 78.88% +    Decomp progress: 78.93% -    Documentation progress: 49.86% +    Documentation progress: 50.05% --- @@ -117,15 +117,15 @@ s32 is_drumstick_unlocked(void) { ``` -As of April 11, 2025, this is our current score: +As of April 14, 2025, this is our current score: ``` =================================================================== ADVENTURE ONE (ASM -> C Decompilation) - -------------- 78.88% Complete (81.45% NON_MATCHING) -------------- - # Decompiled functions: 1850 - # GLOBAL_ASM remaining: 101 + -------------- 78.93% Complete (81.50% NON_MATCHING) -------------- + # Decompiled functions: 1851 + # GLOBAL_ASM remaining: 100 # NON_MATCHING functions: 12 - # NON_EQUIVALENT WIP functions: 30 + # NON_EQUIVALENT WIP functions: 29 --------------------------- Game Status --------------------------- Balloons: 38/47, Keys: 4/4, Trophies: 3/5 T.T. Amulets: 4/4, Wizpig Amulets: 3/4 @@ -133,14 +133,14 @@ As of April 11, 2025, this is our current score: We are collecting silver coins in Haunted Woods. (0/8 silver coins) =================================================================== ADVENTURE TWO (Cleanup & Documentation) - ------------------------- 49.86% Complete ------------------------- - # Documented functions: 1089 - # Undocumented remaining: 565 + ------------------------- 50.05% Complete ------------------------- + # Documented functions: 1090 + # Undocumented remaining: 564 --------------------------- Game Status --------------------------- - Balloons: 24/47, Keys: 3/4, Trophies: 2/5 + Balloons: 25/47, Keys: 3/4, Trophies: 2/5 T.T. Amulets: 2/4, Wizpig Amulets: 2/4 ------------------------------------------------------------------- - We are racing in Pirate Lagoon. (Lap 3/3) + We are racing in Treasure Caves. (Lap 1/3) =================================================================== ``` diff --git a/requirements.txt b/requirements.txt index 5200f71d..3539fe43 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ -splat64[mips]==0.32.3 +splat64[mips]==0.33.2 +spimdisasm==1.33.0 pycparser>=2.22 colorama>=0.4.6 watchdog>=6.0.0 diff --git a/src/audio.c b/src/audio.c index 6f2e3c8e..d3bfafa4 100644 --- a/src/audio.c +++ b/src/audio.c @@ -8,6 +8,7 @@ #include "audio_internal.h" #include "audiomgr.h" #include "audiosfx.h" +#include "audio_spatial.h" #include "sched.h" #include "libultra/src/audio/seqchannel.h" @@ -842,7 +843,7 @@ void sound_play_spatial(u16 soundID, f32 x, f32 y, f32 z, s32 **soundMask) { sound_play(soundID, (s32 *) soundMask); if (*soundMask != NULL) { - func_80009B7C(*soundMask, x, y, z); + audioline_reverb(*soundMask, x, y, z); } } diff --git a/src/audio.h b/src/audio.h index 679ca5c4..752c5e37 100644 --- a/src/audio.h +++ b/src/audio.h @@ -122,6 +122,5 @@ void sound_volume_set_relative(u16 soundID, void *soundState, u8 volume); void music_sequence_init(ALCSPlayer *seqp, void *sequence, u8 *seqID, ALCSeq *seq); void sound_play(u16 soundID, s32* soundMask); f32 music_animation_fraction(void); -void func_80009B7C(s32 *soundState, f32 x, f32 y, f32 z); #endif diff --git a/src/audio_spatial.c b/src/audio_spatial.c index 468a2e22..915d8544 100644 --- a/src/audio_spatial.c +++ b/src/audio_spatial.c @@ -115,7 +115,7 @@ void func_80008174(void) { } } gUsedMasks = 0; - + // var_s1 = D_80119C58; // do { // var_s1->soundID = 0; @@ -177,7 +177,7 @@ void func_80008174(void) { // var_a3->unkC = -100000.0f;; // var_a3->unk8 = -100000.0f; // var_a3->unk4 = -100000.0f; - + // var_v0_2 = var_a3->unk20; // for (j = 3; j != 15; j++, j+= 3) {// this should be j+=4 but has to be split up to match? // // 3, 7, 11 @@ -195,7 +195,7 @@ void func_80008174(void) { // var_v0_2[-1].unk4 = -100000.0f; // var_v0_2[-1].unk8 = -100000.0f; // }; - + // var_a3++; // var_a1++; // var_a2++; @@ -455,39 +455,38 @@ s32 func_80009AB4(u8 arg0) { return ret; } -#ifdef NON_EQUIVALENT -u8 func_80009D6C(unk8011A6D8 *, f32, f32, f32); -// audioline_reverb -void func_80009B7C(s32 *soundState, f32 x, f32 y, f32 z) { +void audioline_reverb(s32 *soundState, f32 x, f32 y, f32 z) { + s32 i; s32 j; - s32 levelSegmentIndex; - s32 numOfYVals; - s32 distBetween; + unk8011A6D8 *temp; + s32 k; f32 outX; f32 outY; f32 outZ; - u8 temp_v0_4; + s32 distBetween; + s32 maxDist; + s32 levelSegmentIndex; + s32 numOfYVals; u8 volume; - s32 var_s6; - s32 i; - s32 k; - unk8011A6D8 *temp; - f32 yVals[9]; // Not sure of the number needed + u8 temp_v0_4; + f32 *coords; + f32 yVals[10]; levelSegmentIndex = get_level_segment_index_from_position(x, y, z); volume = 0; - var_s6 = 400; + maxDist = 400; for (i = 0; i < ARRAY_COUNT(D_8011A6D8); i++) { temp = &D_8011A6D8[i]; if (temp->unk0.unk0_02 != 0) { if (func_80009AB4(i) != 0) { + coords = temp->unk4.unk4_floats; for (j = 0; j < temp->unkB8; j++) { - distBetween = audioline_distance(x, y, z, &temp->unk4.unk4_vec[j], &outX, &outY, &outZ); - if (distBetween < var_s6) { + distBetween = audioline_distance(x, y, z, coords, &outX, &outY, &outZ); + if (distBetween < maxDist) { numOfYVals = func_8002BAB0(levelSegmentIndex, x, z, yVals); for (k = 0; k < numOfYVals; k++) { if (y < yVals[k]) { - var_s6 = distBetween; + maxDist = distBetween; temp_v0_4 = func_80009D6C(&D_8011A6D8[i], outX, outY, outZ); if (volume < temp_v0_4) { volume = temp_v0_4; @@ -495,6 +494,7 @@ void func_80009B7C(s32 *soundState, f32 x, f32 y, f32 z) { } } } + coords += 3; } } } @@ -503,44 +503,36 @@ void func_80009B7C(s32 *soundState, f32 x, f32 y, f32 z) { sound_event_update((s32) soundState, AL_SNDP_FX_EVT, (u32) volume); } } -#else -#pragma GLOBAL_ASM("asm/nonmatchings/audio_spatial/func_80009B7C.s") -#endif #pragma GLOBAL_ASM("asm/nonmatchings/audio_spatial/func_80009D6C.s") -void debug_render_audio_effects(Gfx **arg0, Vertex **arg1, Triangle **arg2) { +void debug_render_audio_effects(Gfx **dList, Vertex **verts, Triangle **tris) { s32 i, j; - f32 *var_s1; + f32 *coords; unk80119C58 *var_s2; unk8011A6D8 *var_s2_2; - - i = 0; - do { + + for (i = 0; i < ARRAY_COUNT(D_80119C58); i++) { var_s2 = &D_80119C58[i]; - var_s1 = var_s2->unk4.unk4_floats; + coords = var_s2->unk4.unk4_floats; if (D_80119C58[i].soundID != 0) { for (j = 0; j < var_s2->unk17C; j++) { - debug_render_line(arg0, arg1, arg2, var_s1, 0xFF, 0xFF, 0); - var_s1 += 3; + debug_render_line(dList, verts, tris, coords, 255, 255, 0); + coords += 3; } } - i++; - } while (ARRAY_COUNT(D_80119C58) > i); + } - i = 0; - do { + for (i = 0; i < ARRAY_COUNT(D_8011A6D8); i++) { var_s2_2 = &D_8011A6D8[i]; - var_s1 = var_s2_2->unk4.unk4_floats; + coords = var_s2_2->unk4.unk4_floats; if (D_8011A6D8[i].unk0.unk0_02 != 0) { - for (j = 0; j < var_s2_2->unkB8; j++) { - debug_render_line(arg0, arg1, arg2, var_s1, 0xFF, 0, 0xFF); - var_s1 += 3; + for (j = 0; j < var_s2_2->unkB8; j++) { + debug_render_line(dList, verts, tris, coords, 255, 0, 255); + coords += 3; } } - - i++; - } while (i != ARRAY_COUNT(D_8011A6D8)); + } } void func_8000A2E8(s32 arg0) { diff --git a/src/audio_spatial.h b/src/audio_spatial.h index 5548c69d..2ceade5d 100644 --- a/src/audio_spatial.h +++ b/src/audio_spatial.h @@ -88,10 +88,12 @@ void update_spatial_audio_position(SoundMask *arg0, f32 x, f32 y, f32 z); s32 func_80009AB4(u8 arg0); void audioline_init(void); void audioline_reverb_create(f32, f32, f32, u8, u8, u8); +void audioline_reverb(s32 *soundState, f32 x, f32 y, f32 z); s32 audioline_distance(f32 inX, f32 inY, f32 inZ, f32 coords[6], f32 *outX, f32 *outY, f32 *outZ); void func_80008174(void); // Non Matching void func_80008438(Object **arg0, s32 numRacers, s32 updateRate); // Non Matching void func_80006FC8(Object **objs, s32 numRacers, ObjectSegment *segment, u8 arg3, s32 updateRate); // Non Matching +u8 func_80009D6C(unk8011A6D8 *, f32, f32, f32); #endif diff --git a/src/audio_vehicle.c b/src/audio_vehicle.c index 02a7c789..147b5704 100644 --- a/src/audio_vehicle.c +++ b/src/audio_vehicle.c @@ -340,8 +340,8 @@ void func_80005254(Object *obj, u32 buttonsPressed, u32 buttonsHeld, s32 updateR sound_event_update((s32) gRacerSound->unkA8, AL_SNDP_VOL_EVT, 0); } else { sound_event_update((s32) gRacerSound->unkA8, AL_SNDP_VOL_EVT, gRacerSound->unkAC << 8); - func_80009B7C((s32 *) gRacerSound->unkA8, obj->segment.trans.x_position, obj->segment.trans.y_position, - obj->segment.trans.z_position); + audioline_reverb((s32 *) gRacerSound->unkA8, obj->segment.trans.x_position, obj->segment.trans.y_position, + obj->segment.trans.z_position); } } gRacerSound->unkA0 = var_s0; @@ -729,9 +729,9 @@ void func_80006FC8(Object **objs, s32 numRacers, ObjectSegment *segment, u8 arg3 temp_f0_3 = gRacerSound->unk38 / 100.0f; sp8C = temp_f0_3 + ((((f32) gRacerSound->unk39 / 100.0f) - temp_f0_3) * temp_f20_2); if (gRacerSound->unk50 != NULL) { - func_80009B7C((s32 *) gRacerSound->unk50, objs[loopCount1]->segment.trans.x_position, - objs[loopCount1]->segment.trans.y_position, - objs[loopCount1]->segment.trans.z_position); + audioline_reverb((s32 *) gRacerSound->unk50, objs[loopCount1]->segment.trans.x_position, + objs[loopCount1]->segment.trans.y_position, + objs[loopCount1]->segment.trans.z_position); sound_event_update((s32) gRacerSound->unk50, AL_SNDP_VOL_EVT, temp_s3 << 8); sound_event_update((s32) gRacerSound->unk50, AL_SNDP_PITCH_EVT, *((u32 *) &sp8C)); func_80004604((ALSoundState *) gRacerSound->unk50, 80); @@ -766,7 +766,7 @@ void func_80006FC8(Object **objs, s32 numRacers, ObjectSegment *segment, u8 arg3 func_80001F14(gRacerSound->unk0[loopCount2], (s32 *) &gRacerSound->unk48[loopCount2]); } if (gRacerSound->unk48[loopCount2] != NULL) { - func_80009B7C( + audioline_reverb( (s32 *) gRacerSound->unk48[loopCount2], objs[loopCount1]->segment.trans.x_position, objs[loopCount1]->segment.trans.y_position, objs[loopCount1]->segment.trans.z_position); sound_event_update((s32) gRacerSound->unk48[loopCount2], AL_SNDP_VOL_EVT, temp_s3 << 8); @@ -910,8 +910,8 @@ void func_80006FC8(Object **objs, s32 numRacers, ObjectSegment *segment, u8 arg3 func_80001F14(temp->unk0[0], (s32 *) &temp->unk48[0]); } if (temp->unk48[0] != NULL) { - func_80009B7C((s32 *) temp->unk48[0], temp->racerPos.x, temp->racerPos.y, - temp->racerPos.z); + audioline_reverb((s32 *) temp->unk48[0], temp->racerPos.x, temp->racerPos.y, + temp->racerPos.z); sound_event_update((s32) temp->unk48[0], AL_SNDP_VOL_EVT, temp->unk88 << 8); sound_event_update((s32) temp->unk48[0], AL_SNDP_PITCH_EVT, *((u32 *) &temp->unk8C)); if (arg3 != 1) { diff --git a/src/font.c b/src/font.c index 4eea2a23..58285262 100644 --- a/src/font.c +++ b/src/font.c @@ -113,9 +113,9 @@ typedef struct Unk8012C2D4_JP { Gfx *dList; } Unk8012C2D4_JP; -FontData_JP *D_8012C2A4_EE5E4; -FontJpSpacing *D_8012C2A8_EE5E8[4]; // 4 tables for spacing in different fonts? -s32 D_8012C2B8_EE5F8; +FontData_JP *D_8012C2A4_EE5E4; // Official Name: dxTable +FontJpSpacing *D_8012C2A8_EE5E8[NUMBER_OF_JP_FONTS]; // 4 tables for spacing in different fonts? +s32 fontInUse; // Official Name: fontInUse Unk8012C2D4_JP (*D_8012C2BC_EE5FC)[128]; JpCharHeader (*D_8012C2C0_EE600)[18]; Gfx *D_8012C2C4_EE604; @@ -255,7 +255,7 @@ void unload_font(s32 fontID) { */ void set_text_font(s32 fontID) { #if REGION == REGION_JP - gDialogueBoxBackground[0].font = D_8012C2B8_EE5F8 = fontID; + gDialogueBoxBackground[0].font = fontInUse = fontID; #else if (fontID < gNumberOfFonts) { gDialogueBoxBackground[0].font = fontID; @@ -550,13 +550,13 @@ void render_text_string(Gfx **dList, DialogueBoxBackground *box, char *text, Ali return; } - func_800C7864_C8464(text, otherText); - prevFont = D_8012C2B8_EE5F8; - D_8012C2B8_EE5F8 = box->font; + fontConvertString(text, otherText); + prevFont = fontInUse; + fontInUse = box->font; xpos = box->xpos; ypos = box->ypos; - fontData = (FontData_JP *) &D_8012C2A4_EE5E4[D_8012C2B8_EE5F8]; + fontData = (FontData_JP *) &D_8012C2A4_EE5E4[fontInUse]; gSPDisplayList((*dList)++, dDialogueBoxBegin); if (box != gDialogueBoxBackground) { scisOffset = (((box->y2 - box->y1) + 1) / (f32) 2) * scisScale; @@ -642,7 +642,7 @@ void render_text_string(Gfx **dList, DialogueBoxBackground *box, char *text, Ali uly = box->y1 + ypos; lrx = ulx + fontData->x; lry = uly + fontData->y; - charSpace = D_8012C2A8_EE5E8[D_8012C2B8_EE5F8]->spacing[jpCharValue]; + charSpace = D_8012C2A8_EE5E8[fontInUse]->spacing[jpCharValue]; if ((lrx > 0) && (lry > 0) && (ulx < box->x2) && (uly < box->y2)) { someIndexForJpChar = func_800C7744_C8344(dList, jpCharValue, &textureS, &textureT, &textureS2, &textureT2); @@ -698,7 +698,7 @@ void render_text_string(Gfx **dList, DialogueBoxBackground *box, char *text, Ali } box->xpos = xpos - box->textOffsetX; box->ypos = ypos - box->textOffsetY; - D_8012C2B8_EE5F8 = prevFont; // Put previous font index back. + fontInUse = prevFont; // Put previous font index back. if (box != gDialogueBoxBackground) { viewport_scissor(dList); } @@ -1306,8 +1306,7 @@ void parse_string_with_number(char *input, char *output, s32 number) { void parse_string_with_number(char *input, char *output, s32 number) { char currentChar; - currentChar = *input++; - while (currentChar) { + while ((currentChar = *input++)) { if (currentChar & 0x80) { char nextChar = *input++; if (nextChar == 0xE) { @@ -1321,8 +1320,6 @@ void parse_string_with_number(char *input, char *output, s32 number) { } else { *output++ = currentChar; } - currentChar = *input; - input++; } *output = '\0'; // null terminator } @@ -1366,7 +1363,7 @@ void func_800C6464_C7064(void) { } mempool_free(jpFontData); - D_8012C2B8_EE5F8 = 0; + fontInUse = 0; } void func_800C663C_C723C(void) { @@ -1428,8 +1425,8 @@ s32 func_800C68CC_C74CC(u16 arg0) { u16 glyphIndex; Unk8012C2D4_JP *asset; - glyphIndex = ((D_8012C2B8_EE5F8 << 12) | (arg0 & 0xFFF)); - var_a3 = (D_8012C2A4_EE5E4[D_8012C2B8_EE5F8].bytesPerCharacter + 0x11F) / 0x120; + glyphIndex = ((fontInUse << 12) | (arg0 & 0xFFF)); + var_a3 = (D_8012C2A4_EE5E4[fontInUse].bytesPerCharacter + 0x11F) / 0x120; D_8012C2BC_EE5FC = D_8012C2C8_EE608; D_8012C2C0_EE600 = D_8012C2CC_EE60C; curIndex = -1; @@ -1477,18 +1474,21 @@ s32 func_800C68CC_C74CC(u16 arg0) { } asset = &D_8012C2C0_EE600[curIndex]; load_asset_to_address(ASSET_BINARY_46, (u32) asset, - D_8012C2A4_EE5E4[D_8012C2B8_EE5F8].offsetToData + - (D_8012C2A4_EE5E4[D_8012C2B8_EE5F8].bytesPerCharacter * arg0), - D_8012C2A4_EE5E4[D_8012C2B8_EE5F8].bytesPerCharacter); - func_800C6DD4_C79D4((*D_8012C2BC_EE5FC)[curIndex].dList, asset, D_8012C2A4_EE5E4[D_8012C2B8_EE5F8].x, - D_8012C2A4_EE5E4[D_8012C2B8_EE5F8].y); + D_8012C2A4_EE5E4[fontInUse].offsetToData + + (D_8012C2A4_EE5E4[fontInUse].bytesPerCharacter * arg0), + D_8012C2A4_EE5E4[fontInUse].bytesPerCharacter); + fontCreateDisplayList((*D_8012C2BC_EE5FC)[curIndex].dList, asset, D_8012C2A4_EE5E4[fontInUse].x, + D_8012C2A4_EE5E4[fontInUse].y); } return curIndex; } } -void func_800C6DD4_C79D4(Gfx *dList, Asset46 *asset, s32 width, s32 height) { +/** + * Official Name: fontCreateDisplayList + */ +void fontCreateDisplayList(Gfx *dList, Asset46 *asset, s32 width, s32 height) { if (asset->unk0 != -1) { asset->unk0 = (s32) asset + asset->unk0; } else { @@ -1616,7 +1616,7 @@ void func_800C7804_C8404(s32 arg0) { } } -u8 D_800E5234_E5E34[] = { +u8 gFontConversionTable[] = { 0x0F, 0x34, 0x0A, 0x36, 0x02, 0x06, 0x0D, 0x37, 0x03, 0x04, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x3E, 0x05, 0x0B, 0x3F, 0x0C, 0x40, 0x41, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, @@ -1625,11 +1625,13 @@ u8 D_800E5234_E5E34[] = { 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0x03, 0x0F, 0x04, 0x0E, 0x0F, }; -void func_800C7864_C8464(char *inString, char *outString) { +/** + * Official Name: fontConvertString + */ +void fontConvertString(char *inString, char *outString) { char currentChar; - currentChar = *inString++; - while (currentChar) { + while ((currentChar = *inString++)) { if (currentChar & 0x80) { *outString++ = currentChar; *outString++ = *inString++; @@ -1637,10 +1639,8 @@ void func_800C7864_C8464(char *inString, char *outString) { *outString++ = currentChar; } else { *outString++ = 0x80; - *outString++ = D_800E5234_E5E34[currentChar - 32]; + *outString++ = gFontConversionTable[currentChar - 32]; } - currentChar = *inString; - inString++; } *outString = '\0'; } diff --git a/src/font.h b/src/font.h index 772b5e55..25faa594 100644 --- a/src/font.h +++ b/src/font.h @@ -193,10 +193,10 @@ void func_800C663C_C723C(void); void func_800C6870_C7470(void); void func_800C67F4_C73F4(void); s32 func_800C68CC_C74CC(u16 arg0); -void func_800C6DD4_C79D4(Gfx *dList, Asset46 *asset, s32 width, s32 height); +void fontCreateDisplayList(Gfx *dList, Asset46 *asset, s32 width, s32 height); s32 func_800C7744_C8344(Gfx **dList, u16 charIndex, s32 *outLeft, s32 *outTop, s32 *outRight, s32 *outBottom); void func_800C7804_C8404(s32 arg0); -void func_800C7864_C8464(char *inString, char *outString); +void fontConvertString(char *inString, char *outString); void func_800C78E0_C84E0(void); #endif diff --git a/src/menu.c b/src/menu.c index c7661253..bb5c17b9 100644 --- a/src/menu.c +++ b/src/menu.c @@ -523,7 +523,7 @@ s8 gInAdvModeTrophyRace = FALSE; // Height scale of the wooden frames in the track select menu. f32 gTrackSelectWoodFrameHeightScale = 1.0f; -s32 gResetTitleScale = 1; +s32 gResetTitleScale = TRUE; s32 gTitleScreenCurrentOption = 0; // 0 = "Start", 1 = "Options" @@ -545,11 +545,11 @@ s32 gTrackSpecifiedWithTrackIdToLoad = 0; s32 gMenuDelay = 0; s32 gNumberOfReadyPlayers = 0; s32 D_800DF484 = 0; -s32 gTitleScreenLoaded = 0; -s32 unused_800DF48C = 0; -s32 unused_800DF490 = 0; -s32 gIsInAdventureTwo = 0; -s32 gPlayerHasSeenCautionMenu = 0; +s32 gTitleScreenLoaded = FALSE; +UNUSED s32 unused_800DF48C = 0; +UNUSED s32 unused_800DF490 = 0; +s32 gIsInAdventureTwo = FALSE; +s32 gPlayerHasSeenCautionMenu = FALSE; s32 *gMenuTextLangTable = NULL; char **gMenuText = NULL; @@ -563,7 +563,7 @@ u8 sMenuGuiColourBlendFactor = 0; // Seems like it doesn't matter what you set it as? s32 gMenuSpriteFlags = 0; -s32 gIsInTracksMode = 1; +s32 gIsInTracksMode = TRUE; s32 gNumberOfActivePlayers = 1; s32 gIsInTwoPlayerAdventure = 0; s32 gTrackIdForPreview = ASSET_LEVEL_CENTRALAREAHUB; @@ -1288,9 +1288,7 @@ char *sControllerPakFullMenuText[5] = { 0, 0, 0, 0, 0 }; char *sNoControllerPakMenuText[5] = { 0, 0, 0, 0, 0 }; // CORRUPT DATA / If you wish to change / Controller Pak or Rumble Pak, / please do so now. -char *sCorruptDataMenuText[3] = { 0, 0, 0 }; // This should be 5 in size? This is unclear still. - -char *D_800E09F8[3] = { 0, 0, 0 }; +char *sCorruptDataMenuText[6] = { 0, 0, 0, 0, 0, 0 }; // If you wish to use / the Controller Pak / insert it now! char *sInsertControllerPakMenuText[3] = { 0, 0, 0 }; @@ -1408,8 +1406,8 @@ s32 gFilenameY = 120; s32 gFilenameFont = ASSET_FONTS_BIGFONT; s32 gNameEntryLength = 0; s32 D_800E0FA4 = 0; -char gCheckAdvEnterInitials[4] = "DKR"; // Default file name? -s32 D_800E0FAC = 0; +char gCheckAdvEnterInitials[] = "DKR"; // Default file name +s32 D_800E0FAC = FALSE; s32 gIndexOfCurInputCharacter = 0; s16 gAdvTrackInitObjectIndices[18] = { 0x0004, 0x0000, 0x0001, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, @@ -3307,7 +3305,7 @@ void menu_title_screen_init(void) { s32 i; s32 numberOfPlayers; - gTitleScreenLoaded = 1; + gTitleScreenLoaded = TRUE; gOptionBlinkTimer = 0; gMenuDelay = 0; reset_character_id_slots(); @@ -4142,7 +4140,7 @@ void savemenu_render_element(SaveFileData *file, s32 x, s32 y) { texture = gMenuAssets[TEXTURE_SURFACE_BUTTON_WOOD]; colour = COLOUR_RGBA32(176, 224, 192, 255); if (!gSavefileData[file->controllerIndex]->newGame) { - filename_decompress(gSavefileData[file->controllerIndex]->filename, buffer, 3); + filename_decompress(gSavefileData[file->controllerIndex]->filename, buffer, MAX_INITIALS_LENGTH); filename_trim(buffer, buffer); text2 = buffer; firstDigit = *gSavefileData[file->controllerIndex]->balloonsPtr / 10; @@ -4168,7 +4166,7 @@ void savemenu_render_element(SaveFileData *file, s32 x, s32 y) { texture = gMenuAssets[TEXTURE_UNK_44]; colour = gContPakSaveBgColours[file->controllerIndex]; text2 = buffer; - filename_decompress(file->compressedFilename, buffer, 3); + filename_decompress(file->compressedFilename, buffer, MAX_INITIALS_LENGTH); // char *gConPakAdvSavePrefix = " (ADV."; for (i = 0; gConPakAdvSavePrefix[i] != '\0'; i++) { buffer[i + 3] = gConPakAdvSavePrefix[i]; @@ -5562,13 +5560,17 @@ void bootscreen_init_cpak(void) { #endif } +#if REGION == REGION_JP +#define PAKMENU_JP_OFFSET 2 +#else +#define PAKMENU_JP_OFFSET 0 +#endif /** * Render the controller pak menu. * Lists the pak index, as well as remaining pages, then displays all known files. * Also draws the confirmation box. * Visual Aid : https://i.imgur.com/7T2Scdr.png */ -#if REGION != REGION_JP void pakmenu_render(UNUSED s32 updateRate) { s32 highlight; s32 i; @@ -5608,15 +5610,19 @@ void pakmenu_render(UNUSED s32 updateRate) { set_dialogue_font(6, ASSET_FONTS_FUNFONT); set_current_text_colour(6, 255, 255, 255, 0, 255); set_current_text_background_colour(6, 0, 0, 0, 0); - render_dialogue_text(6, POS_CENTRED, 2, gMenuText[ASSET_MENU_TEXT_CONTPAK1 + gMenuOption], 1, + render_dialogue_text(6, POS_CENTRED, 2 - PAKMENU_JP_OFFSET, gMenuText[ASSET_MENU_TEXT_CONTPAK1 + gMenuOption], 1, HORZ_ALIGN_CENTER); // CONTROLLER PAK 1 / 2 / 3 / 4 - render_dialogue_text(6, POS_CENTRED, 16, gMenuText[ASSET_MENU_TEXT_FREEPAGESX], sCurrentControllerPakFreePages, + render_dialogue_text(6, POS_CENTRED, 16 - PAKMENU_JP_OFFSET, gMenuText[ASSET_MENU_TEXT_FREEPAGESX], sCurrentControllerPakFreePages, HORZ_ALIGN_CENTER); // FREE PAGES: ~ render_dialogue_box(&sMenuCurrDisplayList, NULL, NULL, 6); yPos += 34; // To 82 +#if REGION == REGION_JP + set_dialogue_font(6, ASSET_FONTS_SUBTITLEFONT); +#else set_dialogue_font(6, ASSET_FONTS_SMALLFONT); +#endif set_current_text_background_colour(6, 0, 0, 0, 0); for (i = -1; i < sControllerPakMenuNumberOfRows; i++) { dialogue_clear(6); @@ -5642,9 +5648,19 @@ void pakmenu_render(UNUSED s32 updateRate) { fileNameText = gBootPakData[gOpacityDecayTimer + i]; numberOfPages = sCurrentControllerPakNumberOfPages[gOpacityDecayTimer + i]; } +#if REGION == REGION_JP + render_dialogue_text(6, 21, 2, noteText, gOpacityDecayTimer + i + 1, HORZ_ALIGN_CENTER); + if (i < 0) { + render_dialogue_text(6, POS_CENTRED, 2, fileNameText, 1, HORZ_ALIGN_CENTER); + } else { + render_dialogue_text(6, 44, 2, fileNameText, 1, HORZ_ALIGN_LEFT); + } + render_dialogue_text(6, 241, 2, pagesText, numberOfPages, HORZ_ALIGN_CENTER); +#else render_dialogue_text(6, 26, 2, noteText, gOpacityDecayTimer + i + 1, HORZ_ALIGN_CENTER); render_dialogue_text(6, 56, 2, fileNameText, 1, HORZ_ALIGN_LEFT); render_dialogue_text(6, 240, 2, pagesText, numberOfPages, HORZ_ALIGN_CENTER); +#endif #if VERSION >= VERSION_79 set_kerning(TRUE); #endif @@ -5677,16 +5693,29 @@ void pakmenu_render(UNUSED s32 updateRate) { yPos = SCREEN_HEIGHT_HALF; } dialogue_clear(6); +#if REGION == REGION_JP + set_dialogue_font(6, ASSET_FONTS_SMALLFONT); + set_current_dialogue_box_coords(6, 56, yPos - 28, 264, yPos + 28); +#else set_dialogue_font(6, ASSET_FONTS_FUNFONT); set_current_dialogue_box_coords(6, 76, yPos - 28, 244, yPos + 28); +#endif set_current_dialogue_background_colour(6, 0, 0, 0, 160); yPos = 4; for (i = 0; i <= 2; i++) { if (i == 0) { +#if REGION == REGION_JP + set_current_text_colour(6, 208, 128, 255, 255, 255); +#else set_current_text_colour(6, 255, 0, 255, 64, 255); +#endif } else if (i == gMenuStage) { +#if REGION == REGION_JP + set_current_text_colour(6, 255, highlight, highlight, 255, 255); +#else set_current_text_colour(6, 255, 255, 255, highlight, 255); +#endif } else { set_current_text_colour(6, 255, 255, 255, 0, 255); } @@ -5715,10 +5744,6 @@ void pakmenu_render(UNUSED s32 updateRate) { } } } -#else -// No match JPN pakmenu_render -#pragma GLOBAL_ASM("asm/nonmatchings/menu/pakmenu_render.s") -#endif /** * Handles the controller pak menu accessed from the boot screen. @@ -7089,7 +7114,7 @@ s32 menu_character_select_loop(s32 updateRate) { charselect_assign_ai(charSlot); charselect_assign_players(gActivePlayersArray); - gIsInTracksMode = 1; + gIsInTracksMode = TRUE; if (confirmOffset >= gNumberOfActivePlayers) { music_change_off(); load_level_for_menu(ASSET_LEVEL_OPTIONSBACKGROUND, -1, 0); @@ -7226,7 +7251,7 @@ void menu_caution_init(void) { load_font(ASSET_FONTS_BIGFONT); #endif transition_begin(&sMenuTransitionFadeOut); - gPlayerHasSeenCautionMenu = 1; + gPlayerHasSeenCautionMenu = TRUE; #if REGION == REGION_JP func_800C663C_C723C(); #endif @@ -7553,7 +7578,7 @@ void fileselect_render(UNUSED s32 updateRate) { menu_camera_centre(); set_ortho_matrix_view(&sMenuCurrDisplayList, &sMenuCurrHudMat); for (i = 0; i < NUMBER_OF_SAVE_FILES; i++) { - if (gSavefileInfo[i].isAdventure2 == gIsInAdventureTwo || gSavefileInfo[i].isStarted == 0) { + if (gSavefileInfo[i].isAdventure2 == gIsInAdventureTwo || gSavefileInfo[i].isStarted == FALSE) { colour = COLOUR_RGBA32(176, 224, 192, 255); } else { colour = COLOUR_RGBA32(106, 144, 115, 255); @@ -7985,7 +8010,7 @@ s32 menu_file_select_loop(s32 updateRate) { } gSavefileInfo[i].isStarted = TRUE; gSavefileInfo[i].balloonCount = *gSavefileData[i]->balloonsPtr; - filename_decompress(gSavefileData[i]->filename, gSavefileInfo[i].name, 3); + filename_decompress(gSavefileData[i]->filename, gSavefileInfo[i].name, MAX_INITIALS_LENGTH); } } gOpacityDecayTimer = 0; @@ -8020,7 +8045,7 @@ s32 menu_file_select_loop(s32 updateRate) { menu_unload_bigfont(); gFileNew = FALSE; gSavefileInfo[gSaveFileIndex].isAdventure2 = 0; - if (gIsInAdventureTwo != 0) { + if (gIsInAdventureTwo) { gSavefileInfo[gSaveFileIndex].isAdventure2 = 1; } gSavefileInfo[gSaveFileIndex].isStarted = 1; @@ -8070,7 +8095,7 @@ s32 menu_file_select_loop(s32 updateRate) { fontUseFont(); } gNumberOfActivePlayers = 1; - D_800E0FAC = 1; + D_800E0FAC = TRUE; fileselect_free(); music_change_on(); init_racer_headers(); @@ -8195,12 +8220,12 @@ void menu_track_select_init(void) { settings = get_settings(); get_number_of_levels_and_worlds(&levelCount, &worldCount); trackIds = (s8 *) get_misc_asset(ASSET_MISC_TRACKS_MENU_IDS); - if (gTitleScreenLoaded != 0) { + if (gTitleScreenLoaded != FALSE) { gTrackSelectCursorX = 0; gTrackSelectCursorY = 0; gTracksMenuTimeTrialHighlightIndex = 0; gTracksMenuAdventureHighlightIndex = 0; - gTitleScreenLoaded = 0; + gTitleScreenLoaded = FALSE; } gTrackSelectViewPortX = fb_size(); gTrackSelectViewportY = GET_VIDEO_HEIGHT(gTrackSelectViewPortX) & 0xFFFF; @@ -8689,7 +8714,7 @@ void trackmenu_render_2D(s32 x, s32 y, char *hubName, char *trackName, s32 rectO set_text_colour(255, 255, 255, 0, opacity); draw_text(&sMenuCurrDisplayList, SCREEN_WIDTH_HALF, (yTemp - sp6C) - 88, hubName, ALIGN_MIDDLE_CENTER); gTrackMenuHubName = hubName; - set_kerning(0); + set_kerning(FALSE); } #if REGION == REGION_JP set_text_colour(0, 0, 0, 255, opacity / 2); @@ -9182,14 +9207,14 @@ void trackmenu_setup_render(UNUSED s32 updateRate) { #endif set_text_colour(255, 128, 255, 96, sMenuGuiOpacity); filename_decompress(settings->courseInitialsPtr[gPlayerSelectVehicle[0]][gTrackIdForPreview], - filename.buffer, 3); + filename.buffer, MAX_INITIALS_LENGTH); #if REGION == REGION_JP draw_text(&sMenuCurrDisplayList, 249, regionOffset + 70, filename.buffer, ALIGN_MIDDLE_CENTER); #else draw_text(&sMenuCurrDisplayList, 250, regionOffset + 72, filename.buffer, ALIGN_MIDDLE_CENTER); #endif filename_decompress(settings->flapInitialsPtr[gPlayerSelectVehicle[0]][gTrackIdForPreview], filename.buffer, - 3); + MAX_INITIALS_LENGTH); #if REGION == REGION_JP draw_text(&sMenuCurrDisplayList, 249, regionOffset + 89, filename.buffer, ALIGN_MIDDLE_CENTER); #else @@ -9864,11 +9889,11 @@ void adventuretrack_render(UNUSED s32 updateRate, s32 arg1, s32 arg2) { gMenuText[ASSET_MENU_TEXT_BESTLAP], ADVENTURETRACK_ALIGN); set_text_colour(255, 128, 255, 96, 255); filename_decompress(settings->courseInitialsPtr[gPlayerSelectVehicle[0]][mapID], - (char *) &filename, 3); + (char *) &filename, MAX_INITIALS_LENGTH); draw_text(&sMenuCurrDisplayList, ADVENTURETRACK_XPOS2, yOffset + ADVENTURETRACK_YPOS3, (char *) &filename, ALIGN_MIDDLE_CENTER); filename_decompress(settings->flapInitialsPtr[gPlayerSelectVehicle[0]][mapID], - (char *) &filename, 3); + (char *) &filename, MAX_INITIALS_LENGTH); draw_text(&sMenuCurrDisplayList, ADVENTURETRACK_XPOS2, yOffset + ADVENTURETRACK_YPOS2, (char *) &filename, ALIGN_MIDDLE_CENTER); menu_timestamp_render(settings->courseTimesPtr[gPlayerSelectVehicle[0]][ADVENTURETRACK_MAPID], @@ -10309,7 +10334,7 @@ s32 menu_pause_loop(UNUSED Gfx **dl, s32 updateRate) { if (gMenuSubOption == 1) { if (gTrophyRaceWorldId != 0) { gTrophyRaceWorldId = 0; - if (gIsInTracksMode == 0) { + if (gIsInTracksMode == FALSE) { return PAUSE_QUIT_LOBBY; } return PAUSE_QUIT_TRACKS; @@ -10874,17 +10899,17 @@ s32 menu_postrace(Gfx **dList, MatrixS **matrices, Vertex **vertices, s32 update gRecordTimesMenuElements[6].t.numberU16 = &settings->flapTimesPtr[*gPlayerSelectVehicle][settings->courseId]; filename_decompress(settings->courseInitialsPtr[*gPlayerSelectVehicle][settings->courseId], - gCourseInitials, 3); + gCourseInitials, MAX_INITIALS_LENGTH); filename_decompress(settings->flapInitialsPtr[*gPlayerSelectVehicle][settings->courseId], - gFLapInitials, 3); + gFLapInitials, MAX_INITIALS_LENGTH); if (settings->racers[0].best_times != 0) { gMenuStage = POSTRACE_STAGE_ENTER_INITIALS; - if ((gIsInTracksMode == 0) && (D_800E0FAC)) { - filename_decompress(settings->filename, gCheckAdvEnterInitials, 3); - D_800E0FAC = 0; + if (gIsInTracksMode == FALSE && D_800E0FAC != FALSE) { + filename_decompress(settings->filename, gCheckAdvEnterInitials, MAX_INITIALS_LENGTH); + D_800E0FAC = FALSE; } filename_init(textOffsetY + 196, 160, textOffsetY + 120, 2, &D_800E0FA4, gCheckAdvEnterInitials, - 3); + MAX_INITIALS_LENGTH); } else { postrace_offsets(gRecordTimesMenuElements, 0.5f, 15.0f, 0.5f, textOffsetY, timeOffsetY); gMenuStage = POSTRACE_STAGE_RACE_RECORDS; @@ -10904,15 +10929,15 @@ s32 menu_postrace(Gfx **dList, MatrixS **matrices, Vertex **vertices, s32 update if (filename_enter(updateRate)) { if (settings->racers[0].best_times & 0x7F) { settings->flapInitialsPtr[*gPlayerSelectVehicle][settings->courseId] = - filename_compress(gCheckAdvEnterInitials, 3); + filename_compress(gCheckAdvEnterInitials, MAX_INITIALS_LENGTH); filename_decompress(settings->flapInitialsPtr[*gPlayerSelectVehicle][settings->courseId], - gFLapInitials, 3); + gFLapInitials, MAX_INITIALS_LENGTH); } if (settings->racers[0].best_times & 0x80) { settings->courseInitialsPtr[*gPlayerSelectVehicle][settings->courseId] = - filename_compress(gCheckAdvEnterInitials, 3); + filename_compress(gCheckAdvEnterInitials, MAX_INITIALS_LENGTH); filename_decompress(settings->courseInitialsPtr[*gPlayerSelectVehicle][settings->courseId], - gCourseInitials, 3); + gCourseInitials, MAX_INITIALS_LENGTH); } postrace_offsets(gRecordTimesMenuElements, 0.5f, 15.0f, 0.5f, textOffsetY, timeOffsetY); gMenuStage = POSTRACE_STAGE_RACE_RECORDS; @@ -12328,7 +12353,7 @@ s32 menu_trophy_race_rankings_loop(s32 updateRate) { temp6 = 0; } gRankingsPortraitIDs[temp6] = -1; - if (gIsInTracksMode == 1) { + if (gIsInTracksMode == TRUE) { if (sp34 >= 3) { menu_init(MENU_TRACK_SELECT); } else { diff --git a/src/menu.h b/src/menu.h index fc2c8213..29c62a9b 100644 --- a/src/menu.h +++ b/src/menu.h @@ -28,6 +28,8 @@ #define CINEMATIC_PLAYERS 1 #define CINEMATIC_CUTSCENE 2 +#define MAX_INITIALS_LENGTH 3 + enum PauseMenuResults { PAUSE_NONE, PAUSE_CONTINUE, diff --git a/src/objects.c b/src/objects.c index 550a434b..01df08ca 100644 --- a/src/objects.c +++ b/src/objects.c @@ -772,6 +772,7 @@ void try_free_object_header(s32 index) { * Converts the passed value into an accurate countdown value based on the systems region. * Since PAL runs at 50Hz, it therefore will reduce the timer to 5/6 to match, keeping * it consistent with non PAL timers, running 60Hz. + * Official Name: objTvTimes */ s32 normalise_time(s32 timer) { if (osTvType != OS_TV_TYPE_PAL || timer < 0) { diff --git a/src/racer.c b/src/racer.c index c1fe8597..c267d647 100644 --- a/src/racer.c +++ b/src/racer.c @@ -3518,8 +3518,8 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR sound_play_spatial(SOUND_CAR_SLIDE, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, (s32 **) &racer->unk10); } else { - func_80009B7C((void *) racer->unk10, obj->segment.trans.x_position, obj->segment.trans.y_position, - obj->segment.trans.z_position); + audioline_reverb((void *) racer->unk10, obj->segment.trans.x_position, obj->segment.trans.y_position, + obj->segment.trans.z_position); } if (racer->unk14) { sound_stop((void *) racer->unk14); diff --git a/src/rcp_dkr.c b/src/rcp_dkr.c index f01cd5bc..c3387b51 100644 --- a/src/rcp_dkr.c +++ b/src/rcp_dkr.c @@ -175,7 +175,7 @@ s32 gfxtask_run_xbus(Gfx *dlBegin, Gfx *dlEnd, UNUSED s32 recvMesg) { dkrtask->unused58 = COLOUR_TAG_RED; dkrtask->unused5C = COLOUR_TAG_RED; dkrtask->task.data_ptr = (u64 *) dlBegin; - dkrtask->task.data_size = ((s32) dlEnd - (s32) dlBegin) >> 3; // Shifted by 3, repsenting the size of the Gfx type. + dkrtask->task.data_size = dlEnd - dlBegin; dkrtask->task.type = M_GFXTASK; dkrtask->task.flags = OS_TASK_DP_WAIT; dkrtask->task.ucode_boot = (u64 *) rspF3DDKRBootStart; @@ -510,7 +510,6 @@ void bgdraw_texture_init(TextureHeader *tex1, TextureHeader *tex2, u32 shiftX) { /** * Seems to render the background screen after a race finishes while you're at the menu deciding what to do next. - * https://i.imgur.com/MHbUD2a.png is an example. The left is correct, and the right is incorrect rendering. * Official Name: rcpMosaicClear */ void bgdraw_texture(Gfx **dList) { diff --git a/src/thread3_main.c b/src/thread3_main.c index 5010467e..c3ac700d 100644 --- a/src/thread3_main.c +++ b/src/thread3_main.c @@ -1325,13 +1325,14 @@ void force_mark_write_save_file(s32 saveFileIndex) { /** * Marks a flag to write a save file to flash as long as we're not in tracks mode, and we're in the draw game render - * context. This should prevent save data from being overwritten outside of Adventure Mode. Official Name: mainSaveGame2 + * context. This should prevent save data from being overwritten outside of Adventure Mode. + * Official Name: mainSaveGame2 */ void safe_mark_write_save_file(s32 saveFileIndex) { if (gGameMode == GAMEMODE_INGAME && !is_in_tracks_mode()) { gSaveDataFlags &= ~SAVE_DATA_FLAG_WRITE_SAVE_FILE_NUMBER_BITS; // Wipe out bits 10 and 11 - gSaveDataFlags |= (SAVE_DATA_FLAG_WRITE_SAVE_DATA | ((saveFileIndex & 3) << 10)); - ; // Set bit 6 and place saveFileIndex into bits 10 and 11 + gSaveDataFlags |= (SAVE_DATA_FLAG_WRITE_SAVE_DATA | + ((saveFileIndex & 3) << 10)); // Set bit 6 and place saveFileIndex into bits 10 and 11 } } diff --git a/src/weather.c b/src/weather.c index 69e8b8d8..81945441 100644 --- a/src/weather.c +++ b/src/weather.c @@ -1082,8 +1082,7 @@ void render_rain_overlay(RainGfxData *rainGfx, s32 time) { s32 i; f32 zSin; f32 zCos; - int unused; - int unused2; + UNUSED s32 pad[2]; TextureHeader *tex; Gfx *curDL; Triangle *tri; diff --git a/tools/asm-differ b/tools/asm-differ index 150720b8..ddb2fad1 160000 --- a/tools/asm-differ +++ b/tools/asm-differ @@ -1 +1 @@ -Subproject commit 150720b88350f7c67e1d51ecc04b7a3ebfca037e +Subproject commit ddb2fad1b73d4d7483d483fb833cad4564a5fc01 diff --git a/tools/m2c b/tools/m2c index f29e5917..4caccf86 160000 --- a/tools/m2c +++ b/tools/m2c @@ -1 +1 @@ -Subproject commit f29e59172f4b1ab6a11edbae20d6d7a3bec503f9 +Subproject commit 4caccf86a027bf52b9132a8ae9331cb3210305a8 diff --git a/tools/python/score.py b/tools/python/score.py index 032639cf..25408e40 100644 --- a/tools/python/score.py +++ b/tools/python/score.py @@ -116,8 +116,8 @@ MAP_FILE = DkrMapFile() # Adding regional and other version functions here to ignore since we're only scoring US_1.0 for now. NOT_FUNCTION_NAMES = ['if', 'else', 'switch', 'while', 'for', 'dmacopy_internal', 'func_80082BC8_837C8', 'rumble_enable', 'func_800C6464_C7064', 'func_800C663C_C723C', 'func_800C67F4_C73F4', 'func_800C6870_C7470', - 'func_800C68CC_C74CC', 'func_800C6DD4_C79D4', 'func_800C7744_C8344', 'func_800C7804_C8404', - 'func_800C7864_C8464', 'func_800C78E0_C84E0'] + 'func_800C68CC_C74CC', 'fontCreateDisplayList', 'func_800C7744_C8344', 'func_800C7804_C8404', + 'fontConvertString', 'func_800C78E0_C84E0'] class ScoreFileMatch: def __init__(self, comment, functionName): diff --git a/ver/symbols/symbol_addrs.jpn.v79.txt b/ver/symbols/symbol_addrs.jpn.v79.txt index b7179bff..a7538afe 100644 --- a/ver/symbols/symbol_addrs.jpn.v79.txt +++ b/ver/symbols/symbol_addrs.jpn.v79.txt @@ -149,7 +149,7 @@ audioline_ambient_create = 0x800098A4; audioline_reverb_create = 0x80009968; func_800099EC = 0x800099EC; func_80009AB4 = 0x80009AB4; -func_80009B7C = 0x80009B7C; +audioline_reverb = 0x80009B7C; func_80009D6C = 0x80009D6C; debug_render_audio_effects = 0x8000A184; func_8000A2E8 = 0x8000A2E8; @@ -2645,7 +2645,6 @@ sBadControllerPakMenuText = 0x800E2410; sControllerPakFullMenuText = 0x800E2424; sNoControllerPakMenuText = 0x800E2438; sCorruptDataMenuText = 0x800E244C; -D_800E09F8 = 0x800E2458; sInsertControllerPakMenuText = 0x800E2464; D_800E0A10 = 0x800E2470; sInsertRumblePakMenuText = 0x800E2474; @@ -4593,7 +4592,7 @@ gDialogueText = 0x8012C29C; gCompactKerning = 0x8012C2A0; D_8012C2A4_EE5E4 = 0x8012C2A4; D_8012C2A8_EE5E8 = 0x8012C2A8; // size:0x10 -D_8012C2B8_EE5F8 = 0x8012C2B8; +fontInUse = 0x8012C2B8; D_8012C2BC_EE5FC = 0x8012C2BC; D_8012C2C0_EE600 = 0x8012C2C0; D_8012C2C4_EE604 = 0x8012C2C4; diff --git a/ver/symbols/symbol_addrs.pal.v77.txt b/ver/symbols/symbol_addrs.pal.v77.txt index 2bb75ff1..65fa914b 100644 --- a/ver/symbols/symbol_addrs.pal.v77.txt +++ b/ver/symbols/symbol_addrs.pal.v77.txt @@ -149,7 +149,7 @@ audioline_ambient_create = 0x800098A4; audioline_reverb_create = 0x80009968; func_800099EC = 0x800099EC; func_80009AB4 = 0x80009AB4; -func_80009B7C = 0x80009B7C; +audioline_reverb = 0x80009B7C; func_80009D6C = 0x80009D6C; debug_render_audio_effects = 0x8000A184; func_8000A2E8 = 0x8000A2E8; @@ -2492,7 +2492,6 @@ sBadControllerPakMenuText = 0x800E0A40; sControllerPakFullMenuText = 0x800E0A54; sNoControllerPakMenuText = 0x800E0A68; sCorruptDataMenuText = 0x800E0A7C; -D_800E09F8 = 0x800E0A88; sInsertControllerPakMenuText = 0x800E0A94; D_800E0A10 = 0x800E0AA0; sInsertRumblePakMenuText = 0x800E0AA4; diff --git a/ver/symbols/symbol_addrs.pal.v80.txt b/ver/symbols/symbol_addrs.pal.v80.txt index 6dad7362..5ab35bac 100644 --- a/ver/symbols/symbol_addrs.pal.v80.txt +++ b/ver/symbols/symbol_addrs.pal.v80.txt @@ -149,7 +149,7 @@ audioline_ambient_create = 0x800098A4; audioline_reverb_create = 0x80009968; func_800099EC = 0x800099EC; func_80009AB4 = 0x80009AB4; -func_80009B7C = 0x80009B7C; +audioline_reverb = 0x80009B7C; func_80009D6C = 0x80009D6C; debug_render_audio_effects = 0x8000A184; func_8000A2E8 = 0x8000A2E8; @@ -2420,7 +2420,6 @@ sBadControllerPakMenuText = 0x800E0FC0; sControllerPakFullMenuText = 0x800E0FD4; sNoControllerPakMenuText = 0x800E0FE8; sCorruptDataMenuText = 0x800E0FFC; -D_800E09F8 = 0x800E1008; sInsertControllerPakMenuText = 0x800E1014; D_800E0A10 = 0x800E1020; sInsertRumblePakMenuText = 0x800E1024; diff --git a/ver/symbols/symbol_addrs.us.v77.txt b/ver/symbols/symbol_addrs.us.v77.txt index ba79a1d9..f2423570 100644 --- a/ver/symbols/symbol_addrs.us.v77.txt +++ b/ver/symbols/symbol_addrs.us.v77.txt @@ -149,7 +149,7 @@ audioline_ambient_create = 0x800098A4; audioline_reverb_create = 0x80009968; func_800099EC = 0x800099EC; func_80009AB4 = 0x80009AB4; -func_80009B7C = 0x80009B7C; +audioline_reverb = 0x80009B7C; func_80009D6C = 0x80009D6C; debug_render_audio_effects = 0x8000A184; func_8000A2E8 = 0x8000A2E8; @@ -2637,7 +2637,6 @@ sBadControllerPakMenuText = 0x800E09B0; sControllerPakFullMenuText = 0x800E09C4; sNoControllerPakMenuText = 0x800E09D8; sCorruptDataMenuText = 0x800E09EC; -D_800E09F8 = 0x800E09F8; sInsertControllerPakMenuText = 0x800E0A04; D_800E0A10 = 0x800E0A10; sInsertRumblePakMenuText = 0x800E0A14; diff --git a/ver/symbols/symbol_addrs.us.v80.txt b/ver/symbols/symbol_addrs.us.v80.txt index f869b3df..2cc5fae3 100644 --- a/ver/symbols/symbol_addrs.us.v80.txt +++ b/ver/symbols/symbol_addrs.us.v80.txt @@ -149,7 +149,7 @@ audioline_ambient_create = 0x800098A4; audioline_reverb_create = 0x80009968; func_800099EC = 0x800099EC; func_80009AB4 = 0x80009AB4; -func_80009B7C = 0x80009B7C; +audioline_reverb = 0x80009B7C; func_80009D6C = 0x80009D6C; debug_render_audio_effects = 0x8000A184; func_8000A2E8 = 0x8000A2E8; @@ -2417,7 +2417,6 @@ sBadControllerPakMenuText = 0x800E0F30; sControllerPakFullMenuText = 0x800E0F44; sNoControllerPakMenuText = 0x800E0F58; sCorruptDataMenuText = 0x800E0F6C; -D_800E09F8 = 0x800E0F78; sInsertControllerPakMenuText = 0x800E0F84; D_800E0A10 = 0x800E0F90; sInsertRumblePakMenuText = 0x800E0F94;