diff --git a/src/game/behaviors/orange_number.inc.c b/src/game/behaviors/orange_number.inc.c index 918a1868..d171040f 100644 --- a/src/game/behaviors/orange_number.inc.c +++ b/src/game/behaviors/orange_number.inc.c @@ -18,8 +18,8 @@ void bhv_orange_number_loop(void) { } s32 offsetX, offsetZ; - offsetX = o->oOrangeNumberOffset * sins(gLakituState.nextYaw + 0x4000); - offsetZ = o->oOrangeNumberOffset * coss(gLakituState.nextYaw + 0x4000); + offsetX = o->oOrangeNumberOffset * sins(gCamera->nextYaw + 0x4000); + offsetZ = o->oOrangeNumberOffset * coss(gCamera->nextYaw + 0x4000); o->oPosX = o->oHomeX + offsetX; o->oPosZ = o->oHomeZ + offsetZ; diff --git a/src/game/behaviors/red_coin.inc.c b/src/game/behaviors/red_coin.inc.c index bdc08ecf..79e9d15e 100644 --- a/src/game/behaviors/red_coin.inc.c +++ b/src/game/behaviors/red_coin.inc.c @@ -52,12 +52,12 @@ void bhv_red_coin_loop(void) { // Spawn the orange number counter, as long as it isn't the last coin. if (o->parentObj->oHiddenStarTriggerCounter != o->parentObj->oHiddenStarTriggerTotal) { if (o->parentObj->oHiddenStarTriggerCounter >= 99) { - spawn_orange_number(9, 14, 0, 0); - spawn_orange_number(9, -14, 0, 0); + spawn_orange_number(9, 28, 0, 0); + spawn_orange_number(9, -28, 0, 0); } else if (o->parentObj->oHiddenStarTriggerCounter >= 10) { - spawn_orange_number(o->parentObj->oHiddenStarTriggerCounter % 10, 14, 0, 0); - spawn_orange_number(o->parentObj->oHiddenStarTriggerCounter / 10, -14, 0, 0); + spawn_orange_number(o->parentObj->oHiddenStarTriggerCounter % 10, 28, 0, 0); + spawn_orange_number(o->parentObj->oHiddenStarTriggerCounter / 10, -28, 0, 0); } else { spawn_orange_number(o->parentObj->oHiddenStarTriggerCounter, 0, 0, 0); diff --git a/src/game/ingame_menu.c b/src/game/ingame_menu.c index e83daead..d6cbbbc9 100644 --- a/src/game/ingame_menu.c +++ b/src/game/ingame_menu.c @@ -1518,8 +1518,31 @@ void print_animated_red_coin(s16 x, s16 y) { void render_pause_red_coins(void) { s8 x; - for (x = 0; x < gRedCoinsCollected; x++) { - print_animated_red_coin(GFX_DIMENSIONS_FROM_RIGHT_EDGE(30) - x * 20, 16); + if (gRedCoinsCollected <= 9) { + for (x = 0; x < gRedCoinsCollected; x++) { + print_animated_red_coin(GFX_DIMENSIONS_FROM_RIGHT_EDGE(30) - x * 20, 16); + } + } + else { + print_animated_red_coin(GFX_DIMENSIONS_FROM_RIGHT_EDGE(108), 16); + Mtx *mtx; + + mtx = alloc_display_list(sizeof(*mtx)); + if (mtx == NULL) { + return; + } + guOrtho(mtx, 0.0f, SCREEN_WIDTH, 0.0f, SCREEN_HEIGHT, -10.0f, 10.0f, 1.0f); + gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(mtx), G_MTX_PROJECTION | G_MTX_LOAD | G_MTX_NOPUSH); + gSPDisplayList(gDisplayListHead++, dl_hud_img_begin); + + add_glyph_texture(GLYPH_MULTIPLY); + render_textrect(GFX_DIMENSIONS_FROM_RIGHT_EDGE(100), 16, 0); + add_glyph_texture(char_to_glyph_index((char) (48 + (gRedCoinsCollected / 10)))); + render_textrect(GFX_DIMENSIONS_FROM_RIGHT_EDGE(86), 16, 0); + add_glyph_texture(char_to_glyph_index((char) (48 + (gRedCoinsCollected % 10)))); + render_textrect(GFX_DIMENSIONS_FROM_RIGHT_EDGE(86), 16, 1); + + gSPDisplayList(gDisplayListHead++, dl_hud_img_end); } } diff --git a/src/game/print.h b/src/game/print.h index e4d4f2b2..c159453a 100644 --- a/src/game/print.h +++ b/src/game/print.h @@ -34,5 +34,8 @@ void print_text_fmt_int(s32 x, s32 y, const char *str, s32 n); void print_text(s32 x, s32 y, const char *str); void print_text_centered(s32 x, s32 y, const char *str); void render_text_labels(void); +s32 char_to_glyph_index(char c); +void add_glyph_texture(s8 glyphIndex); +void render_textrect(s32 x, s32 y, s32 pos); #endif // PRINT_H