diff --git a/include/enums.h b/include/enums.h index 34482934..048c97d6 100644 --- a/include/enums.h +++ b/include/enums.h @@ -6,7 +6,9 @@ typedef enum Vehicle { VEHICLE_CAR, VEHICLE_HOVERCRAFT, - VEHICLE_PLANE + VEHICLE_PLANE, + + NUMBER_OF_VEHICLE_TYPES } Vehicle; typedef enum Language { @@ -33,6 +35,7 @@ typedef enum RaceType { RACETYPE_CUTSCENE_1 = 6, // Not sure what the difference between these two are. RACETYPE_CUTSCENE_2 = 7, RACETYPE_BOSS = 8, + RACETYPE_CHALLENGE = 64, // For masking RACETYPE_CHALLENGE_BATTLE = 64, RACETYPE_CHALLENGE_BANANAS = 65, RACETYPE_CHALLENGE_EGGS = 66 diff --git a/include/structs.h b/include/structs.h index 58f4ef48..f6b45364 100644 --- a/include/structs.h +++ b/include/structs.h @@ -4,6 +4,7 @@ /* Note: Structs are not complete, take them with a grain of salt. */ #include "types.h" +#include "enums.h" /* Size: 0x20 bytes */ typedef struct MenuElement { diff --git a/src/font.h b/src/font.h index 2df5e243..1c8669ef 100644 --- a/src/font.h +++ b/src/font.h @@ -34,30 +34,6 @@ enum DialogueFlags { DIALOGUE_BOX_UNUSED_02 = 0xFFFE, }; -typedef enum HorizontalAlignmentFlags { - HORZ_ALIGN_LEFT = 0, - HORZ_ALIGN_RIGHT = 1, - HORZ_ALIGN_CENTER = 4, -} HorizontalAlignmentFlags; - -typedef enum VerticalAlignmentFlags { - VERT_ALIGN_TOP = 0, - VERT_ALIGN_BOTTOM = 2, - VERT_ALIGN_MIDDLE = 8, -} VerticalAlignmentFlags; - -typedef enum AlignmentFlags { - ALIGN_TOP_LEFT = VERT_ALIGN_TOP | HORZ_ALIGN_LEFT, - ALIGN_TOP_CENTER = VERT_ALIGN_TOP | HORZ_ALIGN_CENTER, - ALIGN_TOP_RIGHT = VERT_ALIGN_TOP | HORZ_ALIGN_RIGHT, - ALIGN_MIDDLE_LEFT = VERT_ALIGN_MIDDLE | HORZ_ALIGN_LEFT, - ALIGN_MIDDLE_CENTER = VERT_ALIGN_MIDDLE | HORZ_ALIGN_CENTER, - ALIGN_MIDDLE_RIGHT = VERT_ALIGN_MIDDLE | HORZ_ALIGN_RIGHT, - ALIGN_BOTTOM_LEFT = VERT_ALIGN_BOTTOM | HORZ_ALIGN_LEFT, - ALIGN_BOTTOM_CENTER = VERT_ALIGN_BOTTOM | HORZ_ALIGN_CENTER, - ALIGN_BOTTOM_RIGHT = VERT_ALIGN_BOTTOM | HORZ_ALIGN_RIGHT, -} AlignmentFlags; - /* Size: 0x20 bytes */ typedef struct unk8012A7EC { u8 unk0; diff --git a/src/game.c b/src/game.c index fc643b28..0c6aaf28 100644 --- a/src/game.c +++ b/src/game.c @@ -643,21 +643,21 @@ u8 *get_level_name(s32 levelId) { levelName = gLevelNames[levelId]; switch (get_language()) { - case GERMAN: + case LANGUAGE_GERMAN: while (numberOfNullPointers < 1) { if (*(levelName++) == 0) { numberOfNullPointers++; } } break; - case FRENCH: + case LANGUAGE_FRENCH: while (numberOfNullPointers < 2) { if (*(levelName++) == 0) { numberOfNullPointers++; } } break; - case JAPANESE: + case LANGUAGE_JAPANESE: while (numberOfNullPointers < 3) { if (*(levelName++) == 0) { numberOfNullPointers++; diff --git a/src/game.h b/src/game.h index 2314842e..23ca246e 100644 --- a/src/game.h +++ b/src/game.h @@ -33,26 +33,6 @@ enum NumberOfPlayers { FOUR_PLAYERS = 3 }; -enum Vehicle { - VEHICLE_CAR, - VEHICLE_HOVERCRAFT, - VEHICLE_PLANE, - - NUMBER_OF_VEHICLE_TYPES, -}; - -enum RaceType { - RACE_TYPE_DEFAULT = 0, - RACE_TYPE_HUB_AREA = 5, - RACE_TYPE_CUTSCENE_1 = 6, - RACE_TYPE_CUTSCENE_2 = 7, - RACE_TYPE_BOSS = 8, - RACE_TYPE_CHALLENGE = 0x40, // For masking - RACE_TYPE_CHALLENGE_BATTLE = 0x40, - RACE_TYPE_CHALLENGE_BANANAS = 0x41, - RACE_TYPE_CHALLENGE_EGGS = 0x42 -}; - extern s8 *D_800DD310; extern s8 D_800DD314; extern u8 D_800DD318; diff --git a/src/menu.c b/src/menu.c index f2e82ad0..f0d51ea1 100644 --- a/src/menu.c +++ b/src/menu.c @@ -1506,13 +1506,13 @@ void load_menu_text(s32 language) { } switch (language) { - case JAPANESE: + case LANGUAGE_JAPANESE: langIndex = 4; break; - case GERMAN: + case LANGUAGE_GERMAN: langIndex = 3; break; - case FRENCH: + case LANGUAGE_FRENCH: langIndex = 2; break; default: // English @@ -1706,7 +1706,7 @@ void func_80081218(void) { gCheatsAssetData = get_misc_asset(0x41); gNumberOfCheats = (s32)(*gCheatsAssetData); gMenuText = allocate_from_main_pool_safe(1024 * sizeof(char *), COLOUR_TAG_WHITE); - load_menu_text(ENGLISH); + load_menu_text(LANGUAGE_ENGLISH); for (i = 0; i < 128; i++) { D_80126550[i] = NULL; } @@ -2445,10 +2445,10 @@ s32 menu_options_loop(s32 arg0) { } else if (D_800DF460 == 0 && analogX != 0) { // Change language s32 currentLang = get_language(); - if ((currentLang >> 31) == 0 && currentLang == ENGLISH) { - set_language(FRENCH); + if ((currentLang >> 31) == 0 && currentLang == LANGUAGE_ENGLISH) { + set_language(LANGUAGE_FRENCH); } else { - set_language(ENGLISH); + set_language(LANGUAGE_ENGLISH); } func_80001D04(0xEB, 0); } else if (D_800DF460 == 1 && analogX != 0) { @@ -6983,16 +6983,16 @@ u64 get_eeprom_settings(void) { * 0 = English, 1 = German, 2 = French, 3 = Japanese */ s32 get_language(void) { - s32 language = ENGLISH; + s32 language = LANGUAGE_ENGLISH; switch (sEepromSettings & 0xC) { case 4: - language = GERMAN; + language = LANGUAGE_GERMAN; break; case 8: - language = FRENCH; + language = LANGUAGE_FRENCH; break; case 12: - language = JAPANESE; + language = LANGUAGE_JAPANESE; break; } return language; @@ -7007,13 +7007,13 @@ void set_language(s32 language) { u64 langFlag = 0; // English switch (language) { - case GERMAN: + case LANGUAGE_GERMAN: langFlag = 4; break; - case FRENCH: + case LANGUAGE_FRENCH: langFlag = 8; break; - case JAPANESE: + case LANGUAGE_JAPANESE: langFlag = 12; break; } diff --git a/src/menu.h b/src/menu.h index b362bf2b..87d48eb8 100644 --- a/src/menu.h +++ b/src/menu.h @@ -94,13 +94,6 @@ typedef enum MENU_ID { MENU_CAUTION } MENU_ID; -enum Language { - ENGLISH, - GERMAN, - FRENCH, - JAPANESE -}; - /* Size: 0x20 bytes */ // So this is looking to be a struct for menu images. typedef struct unk800DF510 { diff --git a/src/objects.c b/src/objects.c index b5a5e59f..0e197942 100644 --- a/src/objects.c +++ b/src/objects.c @@ -1620,7 +1620,7 @@ GLOBAL_ASM("asm/non_matchings/objects/func_8002342C.s") s32 func_80023568(void) { if (D_8011AD3C != 0) { return D_8011AD24[1] + 1; - } else if (get_current_level_race_type() == RACE_TYPE_BOSS) { + } else if (get_current_level_race_type() == RACETYPE_BOSS) { return D_8011AD24[1] + 1; } return 0; diff --git a/src/objects.h b/src/objects.h index f80deee3..1df3bd2c 100644 --- a/src/objects.h +++ b/src/objects.h @@ -19,11 +19,15 @@ typedef struct unknown800DC6F0 { /* Size: 0x3C bytes */ typedef struct unknown8011AECC { - u8 unk00[0x10]; + f32 unk0; + f32 unk4; + f32 unk8; + f32 unkC; f32 unk10; f32 unk14; f32 unk18; - u8 pad1C[0x1E]; + f32 unk1C; + u8 pad20[0x1A]; s8 unk3A; s8 unk3B; } unknown8011AECC; diff --git a/src/racer.c b/src/racer.c index d399dd8f..6d0f9ff6 100644 --- a/src/racer.c +++ b/src/racer.c @@ -288,11 +288,11 @@ void func_80044170(Object *arg0, Object_Racer *arg1, s32 arg2) { raceType = get_current_level_race_type(); switch (raceType) { - case RACE_TYPE_CHALLENGE_BATTLE: - case RACE_TYPE_CHALLENGE_BANANAS: + case RACETYPE_CHALLENGE_BATTLE: + case RACETYPE_CHALLENGE_BANANAS: func_8004447C(arg0, arg1, arg2); break; - case RACE_TYPE_CHALLENGE_EGGS: + case RACETYPE_CHALLENGE_EGGS: func_800452A0(arg0, arg1, arg2); break; default: @@ -316,9 +316,9 @@ void func_80044170(Object *arg0, Object_Racer *arg1, s32 arg2) { arg1->unk214 = 60; arg1->unk215 = 120; - if ((raceType & RACE_TYPE_CHALLENGE) == 0) { + if ((raceType & RACETYPE_CHALLENGE) == 0) { arg1->unk1CA = (arg1->unk1CA + 1) & 3; - } else if (raceType == RACE_TYPE_CHALLENGE_BATTLE || raceType == RACE_TYPE_CHALLENGE_BANANAS) { + } else if (raceType == RACETYPE_CHALLENGE_BATTLE || raceType == RACETYPE_CHALLENGE_BANANAS) { if (arg1->unk1CE != 0xFF) { arg1->unk154 = func_8001D214(arg1->unk1CE); } @@ -509,7 +509,7 @@ void obj_init_racer(Object *obj, LevelObjectEntry_CharacterFlag *arg1) { tempObj->unk194 = 0; tempObj->stretch_height = 1.0f; tempObj->stretch_height_cap = 1.0f; - // Decide which player ID to assign to this object. Human players get a positive value. + // Decide which player ID to assign to this object. Human players get a value from 0-3. // Computer players will be -1. if (player >= PLAYER_NONE && player < PLAYER_FOUR) { if (func_8000E158()) { diff --git a/src/save_data.c b/src/save_data.c index 73e4af89..2f868b4c 100644 --- a/src/save_data.c +++ b/src/save_data.c @@ -908,8 +908,8 @@ s32 get_controller_pak_file_list(s32 controllerIndex, s32 maxNumOfFilesToGet, u8 start_reading_controller_data(controllerIndex); return (controllerIndex << 30) | CONTROLLER_PAK_BAD_DATA; } - - if (get_language() == JAPANESE) { + + if (get_language() == LANGUAGE_JAPANESE) { gameCode = JPN_GAME_CODE; } else if (osTvType == TV_TYPE_PAL) { gameCode = PAL_GAME_CODE; @@ -1099,7 +1099,7 @@ SIDeviceStatus get_file_number(s32 controllerIndex, u8 *fileName, u8 *fileExt, s string_to_font_codes(fileName, fileNameAsFontCodes, PFS_FILE_NAME_LEN); string_to_font_codes(fileExt, fileExtAsFontCodes, PFS_FILE_EXT_LEN); - if (get_language() == JAPANESE) { + if (get_language() == LANGUAGE_JAPANESE) { gameCode = JPN_GAME_CODE; } else if (osTvType == TV_TYPE_PAL) { gameCode = PAL_GAME_CODE; @@ -1176,7 +1176,7 @@ SIDeviceStatus write_controller_pak_file(s32 controllerIndex, s32 fileNumber, u8 string_to_font_codes(fileName, fileNameAsFontCodes, PFS_FILE_NAME_LEN); string_to_font_codes(fileExt, fileExtAsFontCodes, PFS_FILE_EXT_LEN); - if (get_language() == JAPANESE) { + if (get_language() == LANGUAGE_JAPANESE) { game_code = JPN_GAME_CODE; } else if (osTvType == TV_TYPE_PAL) { game_code = PAL_GAME_CODE; diff --git a/src/unknown_077C50.c b/src/unknown_077C50.c index 396c0479..1fb94650 100644 --- a/src/unknown_077C50.c +++ b/src/unknown_077C50.c @@ -35,7 +35,7 @@ void render_borders_for_multiplayer(Gfx **dlist) { case VIEWPORTS_COUNT_3_PLAYERS: levelHeader = get_current_level_header(); // Draw black square in the bottom-right corner. - if (func_800A8458() || (levelHeader->race_type & RACE_TYPE_CHALLENGE)) { + if (func_800A8458() || (levelHeader->race_type & RACETYPE_CHALLENGE)) { gDPFillRectangle((*dlist)++, width >> 1, height >> 1, width, height); } // There is no break statement here. This is intentional.