Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions ASM/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ LD = $(MIPS_BINUTILS_PREFIX)ld
OBJDUMP = $(MIPS_BINUTILS_PREFIX)objdump
OBJCOPY = $(MIPS_BINUTILS_PREFIX)objcopy

CFLAGS = -O1 -G0 -fno-reorder-blocks -march=vr4300 -mtune=vr4300 -mabi=32 -mno-gpopt -mdivide-breaks \
-mexplicit-relocs
CFLAGS = -O1 -G0 -fno-reorder-blocks \
-march=vr4300 -mtune=vr4300 -mabi=32 -mno-gpopt -mdivide-breaks -mexplicit-relocs \
-Wall
CPPFLAGS = -DF3DEX_GBI_2

OUTDIR := build
Expand Down
11 changes: 0 additions & 11 deletions ASM/c/actor.c
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,6 @@ void Actor_StoreChestType(z64_actor_t* actor, z64_game_t* game) {
if (POTCRATE_TEXTURES_MATCH_CONTENTS == PTMC_UNCHECKED && override.key.all > 0) { // For "unchecked" PTMC setting: Check if we have an override which means it wasn't collected.
*pChestType = GILDED_CHEST;
} else if (POTCRATE_TEXTURES_MATCH_CONTENTS == PTMC_CONTENTS) {
uint16_t item_id = resolve_upgrades(override);
item_row_t* row = get_item_row(override.value.looks_like_item_id);
if (row == NULL) {
row = get_item_row(override.value.base.item_id);
Expand Down Expand Up @@ -246,16 +245,6 @@ extern z64_actor_t* Actor_Spawn_Continue(void* actorCtx, z64_game_t* globalCtx,
z64_actor_t* Actor_Spawn_Hook(void* actorCtx, z64_game_t* globalCtx, int16_t actorId, float posX, float posY, float posZ, int16_t rotX, int16_t rotY, int16_t rotZ, int16_t params) {
bool continue_spawn = true;

ActorEntry entry;
entry.id = actorId;
entry.params = params;
entry.pos.x = (int16_t)posX;
entry.pos.y = (int16_t)posY;
entry.pos.z = (int16_t)posZ;
entry.rot.x = rotX;
entry.rot.y = rotY;
entry.rot.z = rotZ;

if (continue_spawn) {
z64_actor_t* spawned = Actor_Spawn_Continue(actorCtx, globalCtx, actorId, posX, posY, posZ, rotX, rotY, rotZ, params);
if (spawned) {
Expand Down
49 changes: 21 additions & 28 deletions ASM/c/bombchu_bowling.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ uint32_t EXTRA_BOWLING_SHUFFLE = 0;
*/

int16_t select_bombchu_bowling_prize(int16_t prizeSelect) {
int16_t prizeTemp;
int16_t prizeTemp = EXITEM_PURPLE_RUPEE_BOWLING;

uint32_t prizeFlag = (1 << prizeSelect);

Expand All @@ -43,43 +43,36 @@ int16_t select_bombchu_bowling_prize(int16_t prizeSelect) {
case 3:
// Prevent giving the player a bomb if a bomb bag has not
// been found yet.
if (!EXTRA_BOWLING_SHUFFLE && !z64_file.bomb_bag) {
prizeTemp = EXITEM_PURPLE_RUPEE_BOWLING;
} else {
if (EXTRA_BOWLING_SHUFFLE || z64_file.bomb_bag) {
prizeTemp = EXITEM_BOMBS_BOWLING;
}
break;
case 4:
default:
// Kept here in case this is shuffled in the future,
// currently functionally redundant when the flag is set.
prizeTemp = EXITEM_PURPLE_RUPEE_BOWLING;
break;
}
} else {
// maintain renewable bombchus/bombs if extra shuffle is disabled
if (!EXTRA_BOWLING_SHUFFLE) {
switch(prizeSelect) {
case 2:
if (z64_file.items[Z64_SLOT_BOMBCHU] == ITEM_NONE && FREE_BOMBCHU_DROPS) {
prizeTemp = z64_file.bomb_bag ? EXITEM_BOMBS_BOWLING : EXITEM_PURPLE_RUPEE_BOWLING;
} else {
prizeTemp = EXITEM_BOMBCHUS_BOWLING;
}
break;
case 3:
if (!z64_file.bomb_bag) {
prizeTemp = EXITEM_PURPLE_RUPEE_BOWLING;
} else {
prizeTemp = EXITEM_BOMBS_BOWLING;
}
break;
default:
prizeTemp = EXITEM_PURPLE_RUPEE_BOWLING;
break;
}
} else {
prizeTemp = EXITEM_PURPLE_RUPEE_BOWLING;
// maintain renewable bombchus/bombs if extra shuffle is disabled
} else if (!EXTRA_BOWLING_SHUFFLE) {
switch(prizeSelect) {
case 2:
if (z64_file.items[Z64_SLOT_BOMBCHU] == ITEM_NONE && FREE_BOMBCHU_DROPS) {
prizeTemp = z64_file.bomb_bag ? EXITEM_BOMBS_BOWLING : EXITEM_PURPLE_RUPEE_BOWLING;
} else {
prizeTemp = EXITEM_BOMBCHUS_BOWLING;
}
break;
case 3:
if (z64_file.bomb_bag) {
prizeTemp = EXITEM_BOMBS_BOWLING;
}
break;
default:
break;
}

}

return prizeTemp;
Expand Down
20 changes: 14 additions & 6 deletions ASM/c/debug.c
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,12 @@ menu_category_t flag_categories[] = {
{ 5, "Collectible"},
};

static uint8_t debugNumberIsInUsage[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
static int32_t debugNumbers[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
static float debugNumbersFloat[10] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
static menu_index_t current_menu_indexes = {0, 0, 0, 0, 0, 0, 0, 0};
static uint8_t show_warp_menu = 0;

void draw_debug_int(int whichNumber, int numberToShow) {
if (whichNumber < 0 || whichNumber > 9) {
return;
Expand Down Expand Up @@ -289,7 +295,7 @@ void draw_timeofday(z64_disp_buf_t* db) {
digits[3] -= 10;
}
int16_t hours = digits[0] * 10 + digits[1];
colorRGBA8_t color = { 0xFF, 0xFF, 0xFF, 0xFF};
colorRGBA8_t color = { {{0xFF, 0xFF, 0xFF}}, 0xFF};
int total_w = 4 * rupee_digit_sprite.tile_w + font_sprite.tile_w;
int draw_x = Z64_SCREEN_WIDTH / 2 - total_w / 2;
int draw_y_text = Z64_SCREEN_HEIGHT - (rupee_digit_sprite.tile_h * 1.5) + 1;
Expand Down Expand Up @@ -323,6 +329,7 @@ bool get_flag(uint8_t flagtype, uint8_t flag) {
case 4:
return Flags_GetTempClear(&z64_game, flag);
case 5:
default:
return Flags_GetCollectible(&z64_game, flag);
}
}
Expand Down Expand Up @@ -602,7 +609,7 @@ void draw_debug_menu(z64_disp_buf_t* db) {
break;
case 8: // Overlay
if (current_menu_indexes.sub_menu_index == 1) {
uint8_t nbOverlays, currentOverlayTabIndex = 0;
uint8_t nbOverlays = 0;
for (int overlay_id = 0; overlay_id < 0x0192; overlay_id++) {
ActorOverlay overlay = gActorOverlayTable[overlay_id];
if (overlay.loadedRamAddr) {
Expand Down Expand Up @@ -898,7 +905,7 @@ void draw_debug_menu(z64_disp_buf_t* db) {
break;
case 7: // Actor table
gDPSetPrimColor(db->p++, 0, 0, 255, 255, 255, 255);
colorRGBA8_t color = { 0xFF, 0xFF, 0xFF, 0xFF};
colorRGBA8_t color = { {{0xFF, 0xFF, 0xFF}}, 0xFF};
if (current_menu_indexes.sub_menu_index == 1) {
for (int i = 0; i < ACTORTYPE_CHEST + 1; i++) {
menu_category_t* d = &(actor_categories[i]);
Expand Down Expand Up @@ -950,7 +957,8 @@ void draw_debug_menu(z64_disp_buf_t* db) {
if (current_menu_indexes.sub_menu_index == 1) {
uint8_t currentOverlayTab = current_menu_indexes.overlay_index / 12;
// Display overlay list in 12 by 12 pages.
uint8_t nbOverlays, currentOverlayTabIndex = 0;
uint8_t nbOverlays = 0;
uint8_t currentOverlayTabIndex = 0;
for (int overlay_id = 0; overlay_id < 0x0192; overlay_id++) {
ActorOverlay overlay = gActorOverlayTable[overlay_id];
if (overlay.loadedRamAddr) {
Expand Down Expand Up @@ -1048,7 +1056,7 @@ void draw_debug_numbers(z64_disp_buf_t* db) {
if (z64_file.energy_capacity > 10 * 0x10)
height += rupee_digit_sprite.tile_h * 0.8;

colorRGBA8_t color = { debug_text_color.r, debug_text_color.g, debug_text_color.b, 0xFF};
colorRGBA8_t color = { {{debug_text_color.r, debug_text_color.g, debug_text_color.b}}, 0xFF};
draw_int(db, numberToShow, debug_text_x_placement, height + offsetY, color);
}

Expand Down Expand Up @@ -1083,7 +1091,7 @@ void draw_debug_numbers(z64_disp_buf_t* db) {
if (z64_file.energy_capacity > 10 * 0x10)
height += rupee_digit_sprite.tile_h * 0.8;

colorRGBA8_t color = { debug_text_color.r, debug_text_color.g, debug_text_color.b, 0xFF};
colorRGBA8_t color = { {{debug_text_color.r, debug_text_color.g, debug_text_color.b}}, 0xFF};
int numberDigit = draw_int(db, entireValue, debug_text_x_placement, height + offsetY, color);
text_print_size(db, ".", debug_text_x_placement + numberDigit * rupee_digit_sprite.tile_w, height + offsetY, rupee_digit_sprite.tile_w, rupee_digit_sprite.tile_h);
draw_int(db, decimalValue, debug_text_x_placement + numberDigit * rupee_digit_sprite.tile_w + font_sprite.tile_w,
Expand Down
6 changes: 0 additions & 6 deletions ASM/c/debug.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,6 @@ typedef enum
DEBUG_NUMBER_FLOAT,
} debug_number_type;

static uint8_t debugNumberIsInUsage[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
static int32_t debugNumbers[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
static float debugNumbersFloat[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
static menu_index_t current_menu_indexes = {0, 0, 0, 0, 0, 0, 0, 0};
static uint8_t show_warp_menu = 0;

typedef void(*usebutton_t)(z64_game_t *game, z64_link_t *link, uint8_t item, uint8_t button);
#define z64_usebutton ((usebutton_t) 0x8038C9A0)

Expand Down
2 changes: 2 additions & 0 deletions ASM/c/door_of_time.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ int32_t DemoKankyo_CutsceneFlags_Get_Hook(void* play, int16_t flag) {
case 2: // oot_sot
case 4: // stones_sot
case 5: // stones_oot_sot
default:
return has_items_for_door_of_time() && CutsceneFlags_Get(play, flag);
}
}
Expand All @@ -27,6 +28,7 @@ bool has_items_for_door_of_time() {
case 4: // stones_sot
return (z64_file.quest_items & 0x1C0000) == 0x1C0000;
case 5: // stones_oot_sot
default:
return (z64_file.quest_items & 0x1C0000) == 0x1C0000 && z64_file.items[Z64_SLOT_OCARINA] == 0x08;
}
}
38 changes: 20 additions & 18 deletions ASM/c/dungeon_info.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,25 @@

int dungeon_count = 13;

static int show_dungeon_info = 0;

dungeon_entry_t dungeons[] = {
{ 0, 0, 0, 0, 1, 0x0F, "Deku", {-1, -1, -1, -1}, {-1, -1, -1, -1} },
{ 1, 0, 0, 0, 1, 0x1F, "Dodongo", {-1, -1, -1, -1}, { 0, -1, -1, -1} },
{ 2, 0, 0, 0, 1, 0x0F, "Jabu", {-1, -1, -1, -1}, {-1, -1, -1, -1} },

{ 3, 1, 1, 0, 1, 0x1F, "Forest", {-1, -1, -1, -1}, {-1, -1, -1, -1} },
{ 4, 1, 1, 0, 1, 0x1F, "Fire", {-1, -1, -1, -1}, {-1, -1, -1, -1} },
{ 5, 1, 1, 0, 1, 0x1F, "Water", {-1, -1, -1, -1}, {-1, -1, -1, -1} },
{ 7, 1, 1, 0, 1, 0x1F, "Shadow", { 4, 6, 7, -1}, { 4, 5, 6, 7} },
{ 6, 1, 1, 0, 1, 0x1F, "Spirit", {11, 14, 12, -1}, {13, 15, -1, -1} },

{ 8, 1, 0, 0, 1, 0x07, "BotW", { 3, -1, -1, -1}, {-1, -1, -1, -1} },
{ 9, 0, 0, 0, 1, 0x07, "Ice", { 1, 2, -1, -1}, {-1, -1, -1, -1} },
{ 12, 1, 0, 1, 0, 0x00, "Hideout", {-1, -1, -1, -1}, {-1, -1, -1, -1} },
{ 11, 1, 0, 0, 0, 0x00, "GTG", { 8, 9, 10, -1}, { 8, 9, 10, -1} },
{ 13, 1, 1, 0, 0, 0x00, "Ganon", {16, 17, 18, 21}, {18, 19, 20, -1} },
{ 16, 1, 0, 0, 0, 0x00, "Chest Game",{-1, -1, -1, -1}, {-1, -1, -1, -1 }},
{ 0, {0, 0, 0, 1}, 0x0F, "Deku", {-1, -1, -1, -1}, {-1, -1, -1, -1} },
{ 1, {0, 0, 0, 1}, 0x1F, "Dodongo", {-1, -1, -1, -1}, { 0, -1, -1, -1} },
{ 2, {0, 0, 0, 1}, 0x0F, "Jabu", {-1, -1, -1, -1}, {-1, -1, -1, -1} },

{ 3, {1, 1, 0, 1}, 0x1F, "Forest", {-1, -1, -1, -1}, {-1, -1, -1, -1} },
{ 4, {1, 1, 0, 1}, 0x1F, "Fire", {-1, -1, -1, -1}, {-1, -1, -1, -1} },
{ 5, {1, 1, 0, 1}, 0x1F, "Water", {-1, -1, -1, -1}, {-1, -1, -1, -1} },
{ 7, {1, 1, 0, 1}, 0x1F, "Shadow", { 4, 6, 7, -1}, { 4, 5, 6, 7} },
{ 6, {1, 1, 0, 1}, 0x1F, "Spirit", {11, 14, 12, -1}, {13, 15, -1, -1} },

{ 8, {1, 0, 0, 1}, 0x07, "BotW", { 3, -1, -1, -1}, {-1, -1, -1, -1} },
{ 9, {0, 0, 0, 1}, 0x07, "Ice", { 1, 2, -1, -1}, {-1, -1, -1, -1} },
{ 12, {1, 0, 1, 0}, 0x00, "Hideout", {-1, -1, -1, -1}, {-1, -1, -1, -1} },
{ 11, {1, 0, 0, 0}, 0x00, "GTG", { 8, 9, 10, -1}, { 8, 9, 10, -1} },
{ 13, {1, 1, 0, 0}, 0x00, "Ganon", {16, 17, 18, 21}, {18, 19, 20, -1} },
{ 16, {1, 0, 0, 0}, 0x00, "Chest Game",{-1, -1, -1, -1}, {-1, -1, -1, -1 }},
};

typedef struct {
Expand Down Expand Up @@ -125,7 +127,7 @@ void draw_silver_rupee_count(z64_game_t* globalCtx, z64_disp_buf_t* db) {
gDPPipeSync(db->p++);

// Draw the count white if we have less than the required amount
colorRGBA8_t color = { 0xFF, 0xFF, 0xFF, globalCtx->hud_alpha_channels.rupees_keys_magic};
colorRGBA8_t color = { {{0xFF, 0xFF, 0xFF}}, globalCtx->hud_alpha_channels.rupees_keys_magic};

// Draw the count green (same color as max rupees) if we have the required amount
if (count >= silver_rupee_info.needed_count) {
Expand Down Expand Up @@ -260,7 +262,7 @@ void draw_dungeon_info(z64_disp_buf_t* db) {
reward_index = 5;
} else if (reward == 4) {
reward_index = 4;
} else if (reward == 5) {
} else /*if (reward == 5)*/ {
reward_index = 0;
}
medal_t* c = &(medals[reward_index]);
Expand Down
2 changes: 0 additions & 2 deletions ASM/c/dungeon_info.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@ extern unsigned char CFG_DUNGEON_IS_MQ[14];
extern uint32_t CFG_DUNGEON_INFO_ENABLE;
extern uint8_t CFG_DPAD_DUNGEON_INFO_ENABLE;

static int show_dungeon_info = 0;

#define CAN_DRAW_DUNGEON_INFO (CFG_DUNGEON_INFO_ENABLE != 0 && \
z64_game.pause_ctxt.state == PAUSE_STATE_MAIN && \
z64_game.pause_ctxt.screen_idx == 0 && \
Expand Down
16 changes: 6 additions & 10 deletions ASM/c/en_wonderitem.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,17 @@
#include "actor.h"
#include "scene.h"

static colorRGBA8_t sEffectPrimColorRed = { 255, 0, 0, 0 };
static colorRGBA8_t sEffectPrimColorGreen = { 0, 255, 0, 0 };
static colorRGBA8_t sEffectPrimColorBlue = { 0, 0, 255, 0 };
static colorRGBA8_t sEffectPrimColorYellow = { 255, 255, 0, 0 };
static colorRGBA8_t sEffectPrimColoMagenta = { 255, 0, 255, 0 };
static colorRGBA8_t sEffectPrimColorCyan = {0, 255, 255, 0 };
static colorRGBA8_t sEffectEnvColor = { 255, 255, 255, 0 };
//static z64_xyzf_t sEffectVelocity = { 0.0f, 0.1f, 0.0f };
//static z64_xyzf_t sEffectAccel = { 0.0f, 0.01f, 0.0f };
static colorRGBA8_t sEffectPrimColorRed = { {{255, 0, 0}}, 0 };
static colorRGBA8_t sEffectPrimColorBlue = { {{0, 0, 255}}, 0 };
static colorRGBA8_t sEffectPrimColorYellow = { {{255, 255, 0}}, 0 };
static colorRGBA8_t sEffectPrimColorCyan = {{{0, 255, 255}}, 0 };
static colorRGBA8_t sEffectEnvColor = { {{255, 255, 255}}, 0 };
static z64_xyzf_t sEffectVelocity = { 0.0f, 0.5f, 0.0f };
static z64_xyzf_t sEffectAccel = { 0.0f, 0.5f, 0.0f };

extern uint16_t CURR_ACTOR_SPAWN_INDEX;

void EnWonderitem_AfterInitHack(z64_actor_t* this, z64_game_t* globalCtx) {
void EnWonderitem_AfterInitHack(z64_actor_t* this, [[maybe_unused]] z64_game_t* globalCtx) {
if (this->main_proc == NULL) return;
if (this->actor_id != 0x112) return;

Expand Down
11 changes: 4 additions & 7 deletions ASM/c/file_icons.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ static int get_top(tile_position pos) {
}


static const colorRGBA8_t WHITE = {0xFF, 0xFF, 0xFF, 0xFF};
static const colorRGBA8_t DIM = {0x40, 0x40, 0x40, 0x90};
static const colorRGBA8_t WHITE = {{{0xFF, 0xFF, 0xFF}}, 0xFF};
static const colorRGBA8_t DIM = {{{0x40, 0x40, 0x40}}, 0x90};
static int hasTriforceGoalBeenReached = 0;

// Approximate product of two colors. Result is within 1 of true product.
Expand Down Expand Up @@ -482,7 +482,6 @@ static void draw_fixed(z64_disp_buf_t* db, const fixed_tile_info_t* info, uint8_
uint32_t word = info->bits[i];
for (int j = 0; j < FIXED_BITS_PER_WORD; ++j) {
if (data->size > 0 && (word & 0x1) == enabled) {
sprite_t* sprite = icon_sprites[data->sprite];
draw_square_sprite(db, icon_sprites[data->sprite], data->tile_index, data->pos, data->size);
}
word >>= 1;
Expand All @@ -509,7 +508,6 @@ static void draw_variable(z64_disp_buf_t* db, const variable_tile_info_t* info,
const variable_tile_data_t* data = variable_tile_positions;
while (data != variable_tile_positions + NUM_VARIABLE) {
if (tile->enabled == enabled) {
sprite_t* sprite = icon_sprites[data->sprite];
draw_square_sprite(db, icon_sprites[data->sprite], tile->tile_index, data->pos, ICON_SIZE);
}
++tile;
Expand All @@ -531,7 +529,7 @@ static void draw_songs(z64_disp_buf_t* db, const music_tile_info_t* songs, uint8
uint8_t bright_alpha = color_product(WHITE.a, alpha);
uint8_t dim_alpha = color_product(DIM.a, alpha);

colorRGBA8_t last_color = {0x00, 0x00, 0x00, 0x00};
colorRGBA8_t last_color = {{{0x00, 0x00, 0x00}}, 0x00};
while (data != song_note_data + NUM_SONGS) {
colorRGBA8_t color;
color.color = data->color;
Expand Down Expand Up @@ -564,7 +562,7 @@ static void draw_buttons(z64_disp_buf_t* db, const button_tile_info_t* buttons,
uint8_t bright_alpha = color_product(WHITE.a, alpha);
uint8_t dim_alpha = color_product(DIM.a, alpha);

colorRGBA8_t last_color = {0x00, 0x00, 0x00, 0x00};
colorRGBA8_t last_color = {{{0x00, 0x00, 0x00}}, 0x00};
uint8_t button_index = 0;
while (data != button_note_data + NUM_BUTTONS) {
colorRGBA8_t color;
Expand Down Expand Up @@ -861,7 +859,6 @@ static void populate_child_trade(const z64_file_t* file, variable_tile_t* tile)
uint8_t item_child = file->items[Z64_SLOT_CHILD_TRADE];
uint16_t mask_bits = (file->item_get_inf[2] >> 3) & 0x8F;
uint16_t itemdata3 = file->item_get_inf[3];
uint16_t infdata7 = file->inf_table[7];
if (itemdata3 & 0x8000 || mask_bits > 0x0F) {
tile->tile_index = Z64_ITEM_MASK_OF_TRUTH;
tile->enabled = 1;
Expand Down
6 changes: 0 additions & 6 deletions ASM/c/file_message.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,6 @@ extern uint8_t PLANDOMIZER_USED;
#define TEXT_WIDTH 8
#define TEXT_HEIGHT 9

static int string_length(const char* txt) {
const char* pos = txt;
while (*pos) ++pos;
return pos - txt;
}

static uint8_t get_alpha(const z64_menudata_t* menu_data) {
uint8_t alt_tr = (uint8_t)menu_data->alt_transition;
if (0x20 <= alt_tr && alt_tr <= 0x27) {
Expand Down
2 changes: 1 addition & 1 deletion ASM/c/file_select.c
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ void manage_password(z64_disp_buf_t* db, z64_menudata_t* menu_data) {

gDPPipeSync(db->p++);
if (cooldown > 0) {
colorRGBA8_t color = {0xFF, 0xFF, 0xFF, 0xFF};
colorRGBA8_t color = {{{0xFF, 0xFF, 0xFF}}, 0xFF};
draw_int_size(db, 1 + cooldown / 60, left - 2 * padding, top, color, 6, 12);
}
gDPPipeSync(db->p++);
Expand Down
Loading