Fix Game|Time Over text scroll positions (#248)

* Introduce DISPLAY_CENTER_X|Y macros

* Rename ZONE_TIME_TO_INT() -> TIME()

* Rename the time LUTs
This commit is contained in:
JaceCear authored and GitHub committed 2026-03-26 17:11:36 +00:00
1 parent 7fc5ba8f08
commit 6c2716fd53
53 files changed
+371 -327

No files matched your search

+10 -2
View File
@@ -3,10 +3,18 @@
// TODO: Auto-generate this file
#define MAX_TILES(_animName) ((_animName##_WIDTH / 8) * (_animName##_HEIGHT / 8))
#define MAX_TILES_VARIANT(_animName, _variant) ((_animName##_VAR##_variant##_WIDTH / 8) * (_animName##_VAR##_variant##_HEIGHT / 8))
#define MAX_TILES_VARIANT(_animName, _variant) ((_animName##_VAR##_variant##_WIDTH / 8) * (_animName##_VAR##_##_variant##_HEIGHT / 8))
#define ALLOC_TILES(_animName) VramMalloc(((_animName##_WIDTH / 8) * (_animName##_HEIGHT / 8)))
#define ALLOC_TILES_VARIANT(_animName, _variant) \
VramMalloc(((_animName##_VAR##_variant##_WIDTH / 8) * (_animName##_VAR##_variant##_HEIGHT / 8)))
VramMalloc(((_animName##_VAR##_##_variant##_WIDTH / 8) * (_animName##_VAR##_##_variant##_HEIGHT / 8)))
// 849
#define SA2_ANIM_GAME_OVER_WIDTH 64
#define SA2_ANIM_GAME_OVER_HEIGHT 64
#define SA2_ANIM_GAME_OVER_VAR_GAME_WIDTH 64
#define SA2_ANIM_GAME_OVER_VAR_GAME_HEIGHT 64
#define SA2_ANIM_GAME_OVER_VAR_OVER_WIDTH 64
#define SA2_ANIM_GAME_OVER_VAR_OVER_HEIGHT 64
// 849
#define SA2_ANIM_GRIND_EFFECT_WIDTH 32
+1
View File
@@ -6,6 +6,7 @@
/* Collection of animation indices for Sonic Advance 2.
* - By JaceCear
*/
#include "constants/anim_sizes.h"
// "x_PROJ" means "projectile belonging to x"
+2 -2
View File
@@ -80,8 +80,8 @@
#define IS_EXTRA_STAGE(lvl) ((lvl) == LEVEL_INDEX(ZONE_FINAL, ACT_TRUE_AREA_53))
#define IS_FINAL_OR_EXTRA_STAGE(lvl) ((IS_FINAL_STAGE(lvl)) || (IS_EXTRA_STAGE(lvl)))
#define ZONE_TIME_TO_INT(minutes, seconds) (int)(((minutes * 60.) + seconds) * GBA_FRAMES_PER_SECOND)
#define MAX_COURSE_TIME (ZONE_TIME_TO_INT(10, 0))
#define TIME(minutes, seconds) (int)(((minutes * 60.) + seconds) * GBA_FRAMES_PER_SECOND)
#define MAX_COURSE_TIME (TIME(10, 0))
#define SPECIAL_STAGE_REQUIRED_SP_RING_COUNT 7
+3 -3
View File
@@ -16,7 +16,7 @@
#define PLAYER_MAX_NOT_HELD_JUMP_FORCE 3.0
#define PLAYER_MAX_NOT_HELD_JUMP_FORCE_UNDER_WATER 1.5
#define PLAYER_INVULNERABLE_DURATION ZONE_TIME_TO_INT(0, 2)
#define PLAYER_INVULNERABLE_DURATION TIME(0, 2)
#define PLAYER_AIR_SPEED_MAX 15.0
@@ -24,13 +24,13 @@
#define TRICK__STOP_N_SLAM__DROP_SPEED Q(0.21875)
/*** Cream ***/
#define CREAM_FLYING_DURATION ZONE_TIME_TO_INT(0, 4)
#define CREAM_FLYING_DURATION TIME(0, 4)
/*** Tails ***/
// NOTE: Unlike Cream, Tails does fly for 8 seconds, but his initial value gets set to 4.
// For some reason they lower his timer only every 2nd frame (in PlayerCB_8012C2C),
// instead of using a bigger value from the get-go, even though they gave him a
// 4-byte timer.
#define TAILS_FLYING_DURATION (ZONE_TIME_TO_INT(0, 8) / 2)
#define TAILS_FLYING_DURATION (TIME(0, 8) / 2)
#endif // GUARD_PARAMETERS_CHARACTERS_H
+2 -2
View File
@@ -8,8 +8,8 @@
#define TENS_DIGIT(number) ((number) / 10)
#define UNITS_DIGIT(number) ((number) % 10)
extern const u8 gSecondsTable[60][2];
extern const u8 gMillisUnpackTable[60][2];
extern const u8 gSecondsRenderLUT[60][2];
extern const u8 gMillisRenderLUT[60][2];
extern struct Task *gStageUITask;
+2
View File
@@ -133,6 +133,8 @@ extern uint8_t OAM[OAM_SIZE];
#define OBJ_VRAM_TOTAL_SIZE (VRAM_SIZE - BG_VRAM_SIZE)
#endif
#define DISPLAY_CENTER_X (DISPLAY_WIDTH / 2)
#define DISPLAY_CENTER_Y (DISPLAY_HEIGHT / 2)
#if WIDESCREEN_HACK
#define WIN_REG_SIZE 4
+5 -5
View File
@@ -849,7 +849,7 @@ static u8 CheckBossDestruction(EggBomberTank *boss, Player *player)
if (Coll_Player_Boss_Attack(s, I(boss->qWorldX), I(boss->qWorldY), 0, player) == 1) {
if (boss->cannonHealth != 0) {
Sprite *s = &boss->pilot;
boss->unk73 = ZONE_TIME_TO_INT(0, 0.5);
boss->unk73 = TIME(0, 0.5);
if (boss->bossHitTimer == 0) {
s->graphics.anim = SA2_ANIM_EGG_BOMBER_TANK_PILOT;
@@ -863,7 +863,7 @@ static u8 CheckBossDestruction(EggBomberTank *boss, Player *player)
} else {
if (Coll_Player_Enemy(s, I(boss->qWorldX), I(boss->qWorldY), 0, player) == 1) {
Sprite *s = &boss->pilot;
boss->unk73 = ZONE_TIME_TO_INT(0, 0.5);
boss->unk73 = TIME(0, 0.5);
if (boss->bossHitTimer == 0) {
s->graphics.anim = SA2_ANIM_EGG_BOMBER_TANK_PILOT;
@@ -1087,7 +1087,7 @@ static void TaskDestructor_EggBomberTankMain(struct Task *t)
UNUSED static void sub_803E798(EggBomberTank *boss)
{
Sprite *s = &boss->pilot;
boss->unk73 = ZONE_TIME_TO_INT(0, 0.5);
boss->unk73 = TIME(0, 0.5);
if (boss->bossHitTimer == 0) {
s->graphics.anim = SA2_ANIM_EGG_BOMBER_TANK_PILOT;
s->variant = 1;
@@ -1155,7 +1155,7 @@ static void Task_EggBomberTankBombExplosion(void)
if (Coll_Player_Enemy(s, I(bomb->x) + gCamera.x, I(bomb->y) + gCamera.y, 0, &gPlayer) == 1) {
if (bomb->boss->bossHitTimer == 0) {
Sprite *s = &bomb->boss->pilot;
bomb->boss->unk73 = ZONE_TIME_TO_INT(0, 0.5);
bomb->boss->unk73 = TIME(0, 0.5);
s->graphics.anim = SA2_ANIM_HAMMERTANK_PILOT;
s->variant = 1;
@@ -1233,7 +1233,7 @@ static void Task_BombExplosionMain(void)
if (Coll_Player_Enemy(s, explosion->x + gCamera.x, explosion->y + gCamera.y, 0, &gPlayer) == 1) {
if (explosion->boss->bossHitTimer == 0) {
Sprite *s = &explosion->boss->pilot;
explosion->boss->unk73 = ZONE_TIME_TO_INT(0, 0.5);
explosion->boss->unk73 = TIME(0, 0.5);
s->graphics.anim = SA2_ANIM_HAMMERTANK_PILOT;
s->variant = 1;
s->prevVariant = -1;
+6 -6
View File
@@ -34,8 +34,8 @@
#define AEROEGG_TAILTIP_OFFSET_X (0)
#define AEROEGG_TAILTIP_OFFSET_Y (20)
#define AEROEGG_COOLDOWN_NORMAL ZONE_TIME_TO_INT(0, 2. + (1. / 3.))
#define AEROEGG_COOLDOWN_PINCH ZONE_TIME_TO_INT(0, 1. + (1. / 3.))
#define AEROEGG_COOLDOWN_NORMAL TIME(0, 2. + (1. / 3.))
#define AEROEGG_COOLDOWN_PINCH TIME(0, 1. + (1. / 3.))
#define RESERVED_EXPLOSION_TILES_VRAM (void *)(OBJ_VRAM0 + 0x2980)
@@ -209,7 +209,7 @@ void CreateAeroEgg(void)
boss->main.unk15 = 0;
boss->main.unk16 = 0;
boss->main.timerBombDrop = 0;
boss->main.unk0 = ZONE_TIME_TO_INT(0, 2);
boss->main.unk0 = TIME(0, 2);
boss->main.timerUnk = 0;
boss->main.unk17 = 0;
@@ -362,7 +362,7 @@ static void sub_8041A08(AeroEgg *boss)
}
}
if (++boss->main.timerUnk > ZONE_TIME_TO_INT(0, 5)) {
if (++boss->main.timerUnk > TIME(0, 5)) {
r7 = TRUE;
}
@@ -370,7 +370,7 @@ static void sub_8041A08(AeroEgg *boss)
s->graphics.anim = SA2_ANIM_AERO_EGG_PLATFORM;
s->variant = 2;
s->prevVariant = -1;
boss->main.timerUnk = ZONE_TIME_TO_INT(0, 5);
boss->main.timerUnk = TIME(0, 5);
boss->main.unk17 = TRUE;
}
} else {
@@ -806,7 +806,7 @@ static void Task_AeroEggMain(void)
boss->main.unk0--;
if (boss->main.unk0 == 0) {
boss->main.timerBombDrop = ZONE_TIME_TO_INT(0, 3);
boss->main.timerBombDrop = TIME(0, 3);
gCurTask->main = Task_80426C4;
}
+4 -4
View File
@@ -20,13 +20,13 @@
#define ALIGN_DIGITS_VERTICALLY !TRUE
#if !PLATFORM_GBA && ALIGN_DIGITS_HORIZONTALLY
#define DIGITS_X (DISPLAY_WIDTH / 2)
#define DIGITS_X DISPLAY_CENTER_X
#else
#define DIGITS_X ((I(gPlayer.qWorldX) - gCamera.x) + 24)
#endif
#if !PLATFORM_GBA && ALIGN_DIGITS_VERTICALLY
#define DIGITS_Y (DISPLAY_HEIGHT / 2)
#define DIGITS_Y DISPLAY_CENTER_Y
#else
#define DIGITS_Y ((I(gPlayer.qWorldY) - gCamera.y) - 24)
#endif
@@ -249,7 +249,7 @@ void Task_RaceStartMessageMain(void)
s = &startMessage->sLeft;
transform = &startMessage->transformLeft;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = (DISPLAY_HEIGHT / 4);
s->frameFlags = gOamMatrixIndex++ | SPRITE_FLAG(ROT_SCALE_ENABLE, 1) | SPRITE_FLAG(ROT_SCALE_DOUBLE_SIZE, 1);
transform->rotation = 0;
@@ -271,7 +271,7 @@ void Task_RaceStartMessageMain(void)
s = &startMessage->sRight;
transform = &startMessage->transformRight;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = (DISPLAY_HEIGHT / 4);
s->frameFlags = gOamMatrixIndex++ | SPRITE_FLAG(ROT_SCALE_ENABLE, 1) | SPRITE_FLAG(ROT_SCALE_DOUBLE_SIZE, 1);
transform->rotation = 0;
+1 -1
View File
@@ -978,7 +978,7 @@ static void RenderUI(struct CourseSelectionScreen *coursesScreen)
} else {
s = &coursesScreen->chaosEmeralds[0];
}
s->x = (((i * 3)) * 8) + ((DISPLAY_WIDTH / 2) - 84);
s->x = (((i * 3)) * 8) + (DISPLAY_CENTER_X - 84);
UpdateSpriteAnimation(s);
DisplaySprite(s);
}
+3 -3
View File
@@ -169,7 +169,7 @@ void CreateCreditsEndCutScene(u8 creditsVariant)
s->graphics.anim = gUnknown_080E12D0[0].anim;
s->variant = gUnknown_080E12D0[0].variant;
s->prevVariant = -1;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = -20;
s->oamFlags = SPRITE_OAM_ORDER(0);
s->graphics.size = 0;
@@ -190,7 +190,7 @@ void CreateCreditsEndCutScene(u8 creditsVariant)
s->graphics.anim = gUnknown_080E12D0[1].anim;
s->variant = gUnknown_080E12D0[1].variant;
s->prevVariant = -1;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = DISPLAY_HEIGHT + 96; // Note: 96 is the width of metatiles
s->oamFlags = SPRITE_OAM_ORDER(0);
s->graphics.size = 0;
@@ -211,7 +211,7 @@ void CreateCreditsEndCutScene(u8 creditsVariant)
s->graphics.anim = gUnknown_080E12D0[2].anim;
s->variant = gUnknown_080E12D0[2].variant;
s->prevVariant = -1;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = DISPLAY_HEIGHT + 96;
s->oamFlags = SPRITE_OAM_ORDER(0);
s->graphics.size = 0;
+2 -2
View File
@@ -230,8 +230,8 @@ void CreateFinalEndingFallCutScene(void)
s->graphics.dest = (void *)scene->unk494;
scene->unk494 += 0x1A00;
s->prevVariant = -1;
s->x = (DISPLAY_WIDTH / 2);
s->y = (DISPLAY_HEIGHT / 2);
s->x = DISPLAY_CENTER_X;
s->y = DISPLAY_CENTER_Y;
s->oamFlags = SPRITE_OAM_ORDER(0);
s->graphics.size = 0;
s->animCursor = 0;
+6 -6
View File
@@ -226,7 +226,7 @@ void CreateFinalEndingLandingCutScene(void)
s->graphics.dest = (void *)scene->unk618;
scene->unk618 += 0x120;
s->prevVariant = -1;
s->x = (DISPLAY_WIDTH / 2) - 10;
s->x = DISPLAY_CENTER_X - 10;
s->y = -20;
s->oamFlags = SPRITE_OAM_ORDER(1);
s->graphics.size = 0;
@@ -268,7 +268,7 @@ void CreateFinalEndingLandingCutScene(void)
s->graphics.anim = gUnknown_080E17A4[gSelectedCharacter].anim;
s->variant = gUnknown_080E17A4[gSelectedCharacter].variant;
s->prevVariant = -1;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = -20;
s->oamFlags = SPRITE_OAM_ORDER(1);
s->graphics.size = 0;
@@ -382,7 +382,7 @@ void CreateFinalEndingLandingCutScene(void)
s->graphics.anim = gUnknown_080E17A4[40].anim;
s->variant = gUnknown_080E17A4[40].variant;
s->prevVariant = -1;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = -20;
s->oamFlags = SPRITE_OAM_ORDER(0);
s->graphics.size = 0;
@@ -403,7 +403,7 @@ void CreateFinalEndingLandingCutScene(void)
s->graphics.anim = gUnknown_080E17A4[41].anim;
s->variant = gUnknown_080E17A4[41].variant;
s->prevVariant = -1;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = DISPLAY_HEIGHT + 96;
s->oamFlags = SPRITE_OAM_ORDER(0);
s->graphics.size = 0;
@@ -424,7 +424,7 @@ void CreateFinalEndingLandingCutScene(void)
s->graphics.anim = gUnknown_080E17A4[42].anim;
s->variant = gUnknown_080E17A4[42].variant;
s->prevVariant = -1;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = DISPLAY_HEIGHT + 96;
s->oamFlags = SPRITE_OAM_ORDER(0);
s->graphics.size = 0;
@@ -445,7 +445,7 @@ void CreateFinalEndingLandingCutScene(void)
s->graphics.anim = gUnknown_080E17A4[gSelectedCharacter + 0x19].anim;
s->variant = gUnknown_080E17A4[gSelectedCharacter + 0x19].variant;
s->prevVariant = -1;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = 0;
s->oamFlags = SPRITE_OAM_ORDER(1);
s->graphics.size = 0;
+1 -1
View File
@@ -146,7 +146,7 @@ void CreateMissingChaosEmaraldsCutScene(void)
s->y = 90;
}
s->prevVariant = -1;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->oamFlags = SPRITE_OAM_ORDER(0);
s->graphics.size = 0;
s->animCursor = 0;
+7 -7
View File
@@ -77,7 +77,7 @@ void CreateDecompCreditsScreen(bool32 hasProfile)
s = &cred->sprSonic;
s->x = -508;
s->y = (DISPLAY_HEIGHT / 2) - 16;
s->y = DISPLAY_CENTER_Y - 16;
SPRITE_INIT_FLAGS(s, 64, SA2_ANIM_CHAR(SA2_CHAR_ANIM_WALK, CHARACTER_SONIC), 4, 18, 2, SPRITE_FLAG_MASK_X_FLIP);
s->animSpeed = SPRITE_ANIM_SPEED(4);
cred->qSonicScreenX = Q(s->x);
@@ -91,8 +91,8 @@ void CreateDecompCreditsScreen(bool32 hasProfile)
cred->qTailsScreenX = Q(s->x);
s = &cred->sprLogoOllie;
s->x = (DISPLAY_WIDTH / 2) + 24;
s->y = (DISPLAY_HEIGHT / 2) - (LOGO_WIDTH / 2);
s->x = DISPLAY_CENTER_X + 24;
s->y = DISPLAY_CENTER_Y - (LOGO_WIDTH / 2);
SPRITE_INIT_FLAGS(s, 64, 1133, 1, 18, 2, SPRITE_FLAG_MASK_X_FLIP);
s->palId = 2;
cred->qLogoOllieScreenX = Q(s->x);
@@ -164,7 +164,7 @@ void Task_DecompCreditsFirst()
UpdateSprites(cred);
// Check Tails' position
if (cred->sprLogoJace.x <= ((DISPLAY_WIDTH / 2) + 24)) {
if (cred->sprLogoJace.x <= (DISPLAY_CENTER_X + 24)) {
cred->sprTails.graphics.anim = SA2_ANIM_CHAR(33, CHARACTER_TAILS);
cred->sprTails.variant = 0;
cred->qSpeedTails = 0;
@@ -199,7 +199,7 @@ void Task_DecompCreditsFirst()
}
}
if ((cred->qSpeedSonic <= 0) && cred->sprSonic.x < (DISPLAY_WIDTH / 2) + 16) {
if ((cred->qSpeedSonic <= 0) && cred->sprSonic.x < DISPLAY_CENTER_X + 16) {
cred->qSpeedSonic = Q(0);
cred->sprSonic.graphics.anim = SA2_ANIM_CHAR(SA2_CHAR_ANIM_34, CHARACTER_SONIC);
@@ -224,7 +224,7 @@ void Task_SonicArrived(void)
UpdateSprites(cred);
// Check Tails' position
if (cred->sprLogoJace.x <= ((DISPLAY_WIDTH / 2) + 24)) {
if (cred->sprLogoJace.x <= (DISPLAY_CENTER_X + 24)) {
cred->sprTails.graphics.anim = SA2_ANIM_CHAR(33, CHARACTER_TAILS);
cred->sprTails.variant = 0;
cred->qSpeedTails = 0;
@@ -300,7 +300,7 @@ void customHBlank(void)
if ((vcount >= DISPLAY_HEIGHT - 16 - 1) && (vcount < DISPLAY_HEIGHT - 1)) {
// "PRESS START to continue"
((u16 *)BG_PLTT)[0] = RGB_WHITE;
} else if ((vcount >= (DISPLAY_HEIGHT / 2) - 1) && (vcount < DISPLAY_HEIGHT - 1)) {
} else if ((vcount >= DISPLAY_CENTER_Y - 1) && (vcount < DISPLAY_HEIGHT - 1)) {
// Logo background (JaceCear)
((u16 *)BG_PLTT)[0] = ((u16 *)OBJ_PLTT)[3 * PALETTE_LEN_4BPP];
} else {
+2 -2
View File
@@ -86,7 +86,7 @@ static void Task_MonMain(void)
TaskDestroy(gCurTask);
return;
} else {
if ((gPlayer.qWorldX > mon->x - Q(DISPLAY_WIDTH / 2)) && (gPlayer.qWorldX < mon->x + Q(DISPLAY_WIDTH / 2))
if ((gPlayer.qWorldX > mon->x - Q(DISPLAY_CENTER_X)) && (gPlayer.qWorldX < mon->x + Q(DISPLAY_CENTER_X))
&& (gPlayer.qWorldY > mon->y - Q(50)) && (gPlayer.qWorldY < mon->y + Q(50))) {
gCurTask->main = Task_Mon_2;
s->graphics.anim = SA2_ANIM_MON;
@@ -183,7 +183,7 @@ static void Task_Mon_4(void)
Player_UpdateHomingPosition(mon->x, mon->y);
if (UpdateSpriteAnimation(s) == 0) {
if ((gPlayer.qWorldX > mon->x - Q(DISPLAY_WIDTH / 2)) && (gPlayer.qWorldX < mon->x + Q(DISPLAY_WIDTH / 2))
if ((gPlayer.qWorldX > mon->x - Q(DISPLAY_CENTER_X)) && (gPlayer.qWorldX < mon->x + Q(DISPLAY_CENTER_X))
&& (gPlayer.qWorldY > mon->y - Q(50)) && (gPlayer.qWorldY < mon->y + Q(50))) {
ENEMY_TURN_TO_PLAYER(mon->x, s);
+87 -45
View File
@@ -14,9 +14,40 @@
#include "game/stage/screen_fade.h"
#include "game/stage/stage.h"
#include "game/stage/debug_text_printer.h"
#include "constants/animations.h"
#include "constants/songs.h"
#include "constants/zones.h"
// NOTE:
// The prefixes indicate their relation to the specific "over" screen:
// G_x = GAME OVER
// T_x = TIME OVER
// Shared, no need to prefix.
#define DURATION_TEXT_BLINK 10
#define G_START_X (DISPLAY_CENTER_X + 20)
#define T_START_X (DISPLAY_CENTER_X + 60)
#define T_PRE_PAUSE_DELTA (20)
#define G_PRE_PAUSE_DELTA (60)
// TODO: Maybe these should represent X values, not time?
#define T_PAUSE_X (DISPLAY_CENTER_X + 20)
#define T_DURATION_PAUSE (TIME(0, 1) + TIME(0, 2. / 3.))
#define T_DURATION_FADEOUT TIME(0, 2)
#define T_POINT_RESUME (T_PAUSE_X - T_DURATION_PAUSE)
#define G_FADE_1_X (DISPLAY_CENTER_X - TIME(0, 1))
#define G_FADE_2_X (G_FADE_1_X - DURATION_TEXT_BLINK)
#define T_FADE_1_X (DISPLAY_CENTER_X + 30)
#define T_FADE_2_X (T_POINT_RESUME - 10)
#define G_END_X (DISPLAY_CENTER_X - T_DURATION_FADEOUT)
#define T_END_X (T_POINT_RESUME - 40)
typedef struct {
ScreenFade unk0;
@@ -33,21 +64,21 @@ typedef struct {
void Task_FadeoutToOverScreen(void);
void DisplayOverScreenTextSprites(GameOverScreen *screen);
void sub_80369D8(void);
void Task_OverScreenFadeBgUpdate(void);
static void InitOverScreen(LostLifeCause lostLifeCause);
void Task_GameOverScreenMain(void);
void TaskDestructor_GameOverTimeOverScreen(struct Task *);
void Task_TimeOverScreenMain(void);
void sub_8036B70(void);
void Task_OverScreenWaitMusicEnd(void);
void UpdateTimeOverScreenSprites(GameOverScreen *screen);
void sub_8036B30(void);
void Task_OverScreenFadeTextUpdate(void);
void CreateGameOverScreen(LostLifeCause lostLifeCause)
{
struct Task *t = TaskCreate(Task_FadeoutToOverScreen, sizeof(GameOverScreenFade), 0x2220, 0, NULL);
GameOverScreenFade *screen = TASK_DATA(t);
GameOverScreenFade *screenFade = TASK_DATA(t);
ScreenFade *fade = &screen->unk0;
ScreenFade *fade = &screenFade->unk0;
fade->window = SCREEN_FADE_USE_WINDOW_1;
fade->brightness = Q(0);
fade->flags = SCREEN_FADE_FLAG_LIGHTEN;
@@ -55,8 +86,8 @@ void CreateGameOverScreen(LostLifeCause lostLifeCause)
fade->bldCnt = (BLDCNT_EFFECT_DARKEN | BLDCNT_TGT1_ALL | BLDCNT_TGT2_ALL);
fade->bldAlpha = 0;
screen->lostLifeCause = lostLifeCause;
screen->delay = 10;
screenFade->lostLifeCause = lostLifeCause;
screenFade->delay = 10;
m4aMPlayFadeOut(&gMPlayInfo_BGM, 8);
m4aMPlayFadeOut(&gMPlayInfo_SE1, 8);
@@ -120,13 +151,13 @@ static void InitOverScreen(LostLifeCause lostLifeCause)
screen = TASK_DATA(t);
if (lostLifeCause & OVER_CAUSE_ZERO_LIVES) {
screen->framesUntilDone = 140;
screen->framesUntilDone = G_START_X;
} else {
screen->framesUntilDone = 180;
screen->framesUntilDone = T_START_X;
}
s = &screen->sprGameOrTime;
s->graphics.dest = VramMalloc(0x40);
s->graphics.dest = ALLOC_TILES_VARIANT(SA2_ANIM_GAME_OVER, GAME);
if (lostLifeCause & OVER_CAUSE_ZERO_LIVES) {
s->graphics.anim = SA2_ANIM_GAME_OVER;
s->variant = SA2_ANIM_VARIANT_GAME_OVER_GAME;
@@ -136,7 +167,7 @@ static void InitOverScreen(LostLifeCause lostLifeCause)
}
s->prevVariant = -1;
s->x = 0;
s->y = DISPLAY_HEIGHT / 2;
s->y = DISPLAY_CENTER_Y;
s->oamFlags = SPRITE_OAM_ORDER(3);
s->graphics.size = 0;
s->qAnimDelay = 0;
@@ -146,12 +177,12 @@ static void InitOverScreen(LostLifeCause lostLifeCause)
UpdateSpriteAnimation(s);
s = &screen->sprOver;
s->graphics.dest = VramMalloc(0x40);
s->graphics.dest = ALLOC_TILES_VARIANT(SA2_ANIM_GAME_OVER, OVER);
s->graphics.anim = SA2_ANIM_GAME_OVER;
s->variant = SA2_ANIM_VARIANT_GAME_OVER_OVER;
s->prevVariant = -1;
s->x = 0;
s->y = DISPLAY_HEIGHT / 2;
s->y = DISPLAY_CENTER_Y;
s->graphics.size = 0;
s->oamFlags = SPRITE_OAM_ORDER(3);
s->qAnimDelay = 0;
@@ -175,9 +206,10 @@ void Task_GameOverScreenMain(void)
Sprite *s = &screen->sprGameOrTime;
Sprite *sprite2 = &screen->sprOver;
gBldRegs.bldCnt = 0x3FEF;
gBldRegs.bldCnt = BLDCNT_TGT2_ALL | BLDCNT_EFFECT_DARKEN | (BLDCNT_TGT1_ALL & ~BLDCNT_TGT1_OBJ);
if (screen->framesUntilDone == 60) {
if (screen->framesUntilDone == G_FADE_1_X) {
// Lighten up text
screen->unk0.window = SCREEN_FADE_USE_WINDOW_1;
screen->unk0.brightness = Q(0);
screen->unk0.flags = SCREEN_FADE_FLAG_LIGHTEN;
@@ -186,7 +218,8 @@ void Task_GameOverScreenMain(void)
screen->unk0.bldAlpha = 0;
}
if (screen->framesUntilDone == 50) {
if (screen->framesUntilDone == G_FADE_2_X) {
// Normalize text color back
screen->unk0.window = SCREEN_FADE_USE_WINDOW_1;
screen->unk0.brightness = Q(0);
screen->unk0.flags = (SCREEN_FADE_FLAG_2 | SCREEN_FADE_FLAG_DARKEN);
@@ -195,18 +228,20 @@ void Task_GameOverScreenMain(void)
screen->unk0.bldAlpha = 0;
}
if (screen->framesUntilDone >= 61) {
s16 temp = screen->framesUntilDone + 60;
if (screen->framesUntilDone > G_FADE_1_X) {
// Move "GAME OVER" text into screen middle
s16 temp = screen->framesUntilDone + G_PRE_PAUSE_DELTA;
s->x = temp;
sprite2->x = temp;
} else {
s->x = (DISPLAY_WIDTH / 2);
sprite2->x = (DISPLAY_WIDTH / 2);
// "GAME OVER" text is at screen middle
s->x = DISPLAY_CENTER_X;
sprite2->x = DISPLAY_CENTER_X;
}
UpdateScreenFade(&screen->unk0);
if (--screen->framesUntilDone == 0) {
if (--screen->framesUntilDone == G_END_X) {
screen->unk0.window = SCREEN_FADE_USE_WINDOW_1;
screen->unk0.brightness = Q(0);
screen->unk0.flags = SCREEN_FADE_FLAG_LIGHTEN;
@@ -215,19 +250,19 @@ void Task_GameOverScreenMain(void)
| BLDCNT_TGT1_BG3 | BLDCNT_TGT2_ALL);
screen->unk0.bldAlpha = 0;
screen->framesUntilDone = 120;
gCurTask->main = sub_80369D8;
screen->framesUntilDone = DISPLAY_CENTER_X;
gCurTask->main = Task_OverScreenFadeBgUpdate;
}
DisplayOverScreenTextSprites(screen);
}
void sub_80369D8(void)
void Task_OverScreenFadeBgUpdate(void)
{
GameOverScreen *screen = TASK_DATA(gCurTask);
UpdateScreenFade(&screen->unk0);
if (--screen->framesUntilDone == 0) {
if (--screen->framesUntilDone == G_END_X) {
screen->unk0.window = SCREEN_FADE_USE_WINDOW_1;
screen->unk0.brightness = Q(0);
screen->unk0.flags = (SCREEN_FADE_FLAG_LIGHTEN);
@@ -235,8 +270,8 @@ void sub_80369D8(void)
screen->unk0.bldCnt = (BLDCNT_EFFECT_LIGHTEN | BLDCNT_TGT1_ALL | BLDCNT_TGT2_ALL);
screen->unk0.bldAlpha = 0;
memset(gBgPalette, RGB16(31, 7, 0), sizeof(gBgPalette));
gFlags |= 0x1;
gCurTask->main = sub_8036B30;
gFlags |= FLAGS_UPDATE_BACKGROUND_PALETTES;
gCurTask->main = Task_OverScreenFadeTextUpdate;
}
DisplayOverScreenTextSprites(screen);
@@ -248,9 +283,10 @@ void Task_TimeOverScreenMain(void)
Sprite *s = &screen->sprGameOrTime;
Sprite *sprite2 = &screen->sprOver;
gBldRegs.bldCnt = 0x3FEF;
gBldRegs.bldCnt = BLDCNT_TGT2_ALL | BLDCNT_EFFECT_DARKEN | (BLDCNT_TGT1_ALL & ~BLDCNT_TGT1_OBJ);
if (screen->framesUntilDone == 150) {
if (screen->framesUntilDone == T_FADE_1_X) {
// Lighten up text
screen->unk0.window = SCREEN_FADE_USE_WINDOW_1;
screen->unk0.brightness = Q(0);
screen->unk0.flags = SCREEN_FADE_FLAG_LIGHTEN;
@@ -259,7 +295,8 @@ void Task_TimeOverScreenMain(void)
screen->unk0.bldAlpha = 0;
}
if (screen->framesUntilDone == 140) {
if (screen->framesUntilDone == T_PAUSE_X) {
// Normalize text color back
screen->unk0.window = SCREEN_FADE_USE_WINDOW_1;
screen->unk0.brightness = Q(0);
screen->unk0.flags = (SCREEN_FADE_FLAG_2 | SCREEN_FADE_FLAG_DARKEN);
@@ -268,7 +305,8 @@ void Task_TimeOverScreenMain(void)
screen->unk0.bldAlpha = 0;
}
if (screen->framesUntilDone == 30) {
if (screen->framesUntilDone == T_FADE_2_X) {
// Init screen fadeout
screen->unk0.window = SCREEN_FADE_USE_WINDOW_1;
screen->unk0.brightness = Q(0);
screen->unk0.flags = SCREEN_FADE_FLAG_LIGHTEN;
@@ -279,7 +317,7 @@ void Task_TimeOverScreenMain(void)
UpdateScreenFade(&screen->unk0);
if (--screen->framesUntilDone == 0) {
if (--screen->framesUntilDone == T_END_X) {
TasksDestroyAll();
PAUSE_BACKGROUNDS_QUEUE();
gBgSpritesCount = 0;
@@ -297,24 +335,24 @@ void Task_TimeOverScreenMain(void)
UpdateTimeOverScreenSprites(screen);
}
void sub_8036B30(void)
void Task_OverScreenFadeTextUpdate(void)
{
GameOverScreen *screen = TASK_DATA(gCurTask);
if (UpdateScreenFade(&screen->unk0) != 0) {
screen->framesUntilDone = 140;
if (UpdateScreenFade(&screen->unk0) != SCREEN_FADE_RUNNING) {
screen->framesUntilDone = T_PAUSE_X;
UpdateScreenFade(&screen->unk0);
gCurTask->main = sub_8036B70;
gCurTask->main = Task_OverScreenWaitMusicEnd;
}
DisplayOverScreenTextSprites(screen);
}
void sub_8036B70(void)
void Task_OverScreenWaitMusicEnd(void)
{
GameOverScreen *screen = TASK_DATA(gCurTask);
if (--screen->framesUntilDone == 0) {
if (--screen->framesUntilDone == G_END_X) {
TasksDestroyAll();
PAUSE_BACKGROUNDS_QUEUE();
gBgSpritesCount = 0;
@@ -337,15 +375,19 @@ void UpdateTimeOverScreenSprites(GameOverScreen *screen)
{
Sprite *s = &screen->sprGameOrTime;
Sprite *sprite2 = &screen->sprOver;
if (screen->framesUntilDone > 140) {
s16 temp = (screen->framesUntilDone * 2) - 160;
if (screen->framesUntilDone > T_PAUSE_X) {
// Move into screen middle
s16 temp = (screen->framesUntilDone * 2) - (T_PAUSE_X + T_PRE_PAUSE_DELTA);
s->x = temp;
sprite2->x = temp;
} else if (screen->framesUntilDone > 40) {
s->x = (DISPLAY_WIDTH / 2);
sprite2->x = (DISPLAY_WIDTH / 2);
} else if (screen->framesUntilDone > 0) {
s16 temp = (DISPLAY_WIDTH / 2) - ((40 - screen->framesUntilDone) * 2);
} else if (screen->framesUntilDone > T_POINT_RESUME) {
// Stay at screen middle
s->x = DISPLAY_CENTER_X;
sprite2->x = DISPLAY_CENTER_X;
} else if (screen->framesUntilDone > T_END_X) {
// Move left during screen fade-out
s16 temp = DISPLAY_CENTER_X - ((T_POINT_RESUME - screen->framesUntilDone) * 2);
s->x = temp;
sprite2->x = temp;
} else {
@@ -87,9 +87,9 @@ static void HandleLap(Sprite_LapTrigger *trigger)
// __0808043C
timeDiff = gCheckpointTime - trigger->prevTime;
if (timeDiff > ZONE_TIME_TO_INT(0, 30)) {
if (timeDiff > TIME(0, 30)) {
ringBonus = 5;
} else if (timeDiff > ZONE_TIME_TO_INT(0, 20)) {
} else if (timeDiff > TIME(0, 20)) {
ringBonus = 10;
} else {
ringBonus = 15;
@@ -195,7 +195,7 @@ static void CreateSprite_Notif_RingBonus(void)
Sprite_Notif_RingBonus *notif = TASK_DATA(t);
Sprite *s = &notif->s;
notif->framesVisible = ZONE_TIME_TO_INT(0, 2);
notif->framesVisible = TIME(0, 2);
SPRITE_INIT_WITHOUT_ANIM_OR_VRAM(s, 1, 1, 0);
+1 -1
View File
@@ -72,7 +72,7 @@ static void Task_807EA8C(void)
sub_807ED68(pole);
return;
}
if (gPlayer.timerInvulnerability == ZONE_TIME_TO_INT(0, 2)) {
if (gPlayer.timerInvulnerability == TIME(0, 2)) {
sub_807ED88(pole);
return;
}
+4 -4
View File
@@ -36,10 +36,10 @@ typedef struct {
// Durations for each of the "stages" of the propellers with periodic fan speed
#define PERIOD_END__OFF (ZONE_TIME_TO_INT(0, 1)) /* 1s */
#define PERIOD_END__ACCEL (PERIOD_END__OFF + ZONE_TIME_TO_INT(0, 1)) /* 1s */
#define PERIOD_END__MAX_SPEED (PERIOD_END__ACCEL + ZONE_TIME_TO_INT(0, 4)) /* 4s */
#define PERIOD_END__DECEL (PERIOD_END__MAX_SPEED + ZONE_TIME_TO_INT(0, 1)) /* 1s */
#define PERIOD_END__OFF (TIME(0, 1)) /* 1s */
#define PERIOD_END__ACCEL (PERIOD_END__OFF + TIME(0, 1)) /* 1s */
#define PERIOD_END__MAX_SPEED (PERIOD_END__ACCEL + TIME(0, 4)) /* 4s */
#define PERIOD_END__DECEL (PERIOD_END__MAX_SPEED + TIME(0, 1)) /* 1s */
#define PERIODIC_PROP_FULL_DURATION (PERIOD_END__DECEL) /* 7s */
// Used to clamp the player's max speed
+4 -4
View File
@@ -269,8 +269,8 @@ void Task_MultiplayerSinglePakResultsScreenInit(void)
#ifndef COLLECT_RINGS_ROM
if (gMultiSioStatusFlags & MULTI_SIO_PARENT) {
s = &resultsScreen->unk400;
s->x = (DISPLAY_WIDTH / 2);
s->y = (DISPLAY_HEIGHT / 2);
s->x = DISPLAY_CENTER_X;
s->y = DISPLAY_CENTER_Y;
if (resultsScreen->unk434) {
s->graphics.dest = resultsScreen->unk370[2].graphics.dest + 0x180;
@@ -524,7 +524,7 @@ void sub_8082788(void)
u16 temp;
s = &resultsScreen->unk80[i].unk0;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = gMultiplayerRanks[i] * 40 + 20;
UpdateSpriteAnimation(s);
DisplaySprite(s);
@@ -559,7 +559,7 @@ void sub_8082788(void)
} else {
u16 temp;
s = &resultsScreen->unk80[i].unk0;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = i * 40 + 20;
UpdateSpriteAnimation(s);
DisplaySprite(s);
@@ -131,7 +131,7 @@ void sub_8082E9C(TimeDisplay *timeDisplay)
temp4 = Base10DigitsToHexNibbles(index);
palId = 0;
if (gCourseTime < ZONE_TIME_TO_INT(1, 0)) {
if (gCourseTime < TIME(1, 0)) {
#ifndef NON_MATCHING
palId = (-(gStageTime & 0x10)) >> 0x1F;
#else
+2 -2
View File
@@ -335,7 +335,7 @@ void StartSinglePakConnect(void)
UpdateSpriteAnimation(s);
s = &connectScreen->unk3C;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = (DISPLAY_HEIGHT - 38);
s->oamFlags = SPRITE_OAM_ORDER(4);
s->graphics.size = 0;
@@ -352,7 +352,7 @@ void StartSinglePakConnect(void)
ram += gUnknown_080E01B6[connectScreen->unkFA][2] * 0x20;
s = &connectScreen->unk6C;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = (DISPLAY_HEIGHT * (7. / 8.));
s->oamFlags = SPRITE_OAM_ORDER(4);
s->graphics.size = 0;
+3 -3
View File
@@ -131,7 +131,7 @@ void CreateMultipackOutcomeScreen(u8 outcome)
UpdateSpriteAnimation(s);
#elif (GAME == GAME_SA2)
s = &outcomeScreen->spr100;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = DISPLAY_HEIGHT - 20;
s->graphics.dest = (void *)OBJ_VRAM0;
s->oamFlags = SPRITE_OAM_ORDER(15);
@@ -164,7 +164,7 @@ void CreateMultipackOutcomeScreen(u8 outcome)
UpdateSpriteAnimation(s);
#elif (GAME == GAME_SA2)
s = &outcomeScreen->sprD0;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = 36;
s->graphics.dest = (void *)OBJ_VRAM0 + 0x2000;
s->oamFlags = SPRITE_OAM_ORDER(15);
@@ -197,7 +197,7 @@ void CreateMultipackOutcomeScreen(u8 outcome)
UpdateSpriteAnimation(s);
#elif (GAME == GAME_SA2)
s = &outcomeScreen->sprA0;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = DISPLAY_HEIGHT - 40;
s->graphics.dest = (void *)OBJ_VRAM0 + 0x4000;
s->oamFlags = SPRITE_OAM_ORDER(15);
+16 -16
View File
@@ -86,21 +86,21 @@
} \
\
if (rot == 0) { \
tfy = (DISPLAY_HEIGHT / 2); \
tfy = DISPLAY_CENTER_Y; \
tfx = DISPLAY_WIDTH; \
} else if (rot == 256) { \
tfy = DISPLAY_HEIGHT; \
tfx = (DISPLAY_WIDTH / 2); \
tfx = DISPLAY_CENTER_X; \
} else if (rot == 512) { \
tfy = (DISPLAY_HEIGHT / 2); \
tfy = DISPLAY_CENTER_Y; \
tfx = 0; \
} else if (rot == 768) { \
tfy = 0; \
tfx = (DISPLAY_WIDTH / 2); \
tfx = DISPLAY_CENTER_X; \
} else { \
if ((targetX) > 0) { \
s16 divRes = Div(SIN_24_8(rot) * 256, COS_24_8(rot)); \
tfy = ((divRes * 15) >> 5) + (DISPLAY_HEIGHT / 2); \
tfy = ((divRes * 15) >> 5) + DISPLAY_CENTER_Y; \
\
if ((targetY) > 0) { \
if (tfy >= DISPLAY_HEIGHT) { \
@@ -108,7 +108,7 @@
tfy = DISPLAY_HEIGHT; \
sinVal = (256 - rot) & ONE_CYCLE; \
divRes = Div(SIN_24_8(sinVal) * 256, COS_24_8(sinVal)); \
tfx = ((divRes * 5) >> 4) + (DISPLAY_WIDTH / 2); \
tfx = ((divRes * 5) >> 4) + DISPLAY_CENTER_X; \
} else { \
tfx = DISPLAY_WIDTH; \
} \
@@ -118,7 +118,7 @@
tfy = 0; \
sinVal = (256 - rot) & ONE_CYCLE; \
divRes = Div(SIN_24_8(sinVal) * 256, COS_24_8(sinVal)); \
tfx = (DISPLAY_WIDTH / 2) - ((divRes * 5) >> 4); \
tfx = DISPLAY_CENTER_X - ((divRes * 5) >> 4); \
} else { \
tfx = DISPLAY_WIDTH; \
} \
@@ -127,14 +127,14 @@
} else { \
s16 divRes \
= Div((SIN_24_8((rot - (SIN_PERIOD / 2)) & ONE_CYCLE)) * 0x100, (COS_24_8((rot - (SIN_PERIOD / 2)) & ONE_CYCLE))); \
tfy = (DISPLAY_HEIGHT / 2) - ((divRes * 15) >> 5); \
tfy = DISPLAY_CENTER_Y - ((divRes * 15) >> 5); \
if ((targetY) > 0) { \
if (tfy >= DISPLAY_HEIGHT) { \
s32 sinVal; \
tfy = DISPLAY_HEIGHT; \
sinVal = (768 - rot) & ONE_CYCLE; \
divRes = Div(SIN_24_8(sinVal) * 256, COS_24_8(sinVal)); \
tfx = ((divRes * 5) >> 4) + (DISPLAY_WIDTH / 2); \
tfx = ((divRes * 5) >> 4) + DISPLAY_CENTER_X; \
} else { \
tfx = 0; \
} \
@@ -145,7 +145,7 @@
\
sinVal = (768 - rot) & ONE_CYCLE; \
divRes = Div(SIN_24_8(sinVal) * 256, COS_24_8(sinVal)); \
tfx = (DISPLAY_WIDTH / 2) - ((divRes * 5) >> 4); \
tfx = DISPLAY_CENTER_X - ((divRes * 5) >> 4); \
} else { \
tfx = 0; \
} \
@@ -259,8 +259,8 @@ static void Task_801951C(void)
RETURN_IF_PLAYER_ONSCREEN(mpp->pos.x, mpp->pos.y, gCamera.x, gCamera.y);
opponentX2 = (unsigned)(mpp->pos.x - (DISPLAY_WIDTH / 2) - gCamera.x);
opponentY2 = (unsigned)(mpp->pos.y - (DISPLAY_HEIGHT / 2) - gCamera.y);
opponentX2 = (unsigned)(mpp->pos.x - DISPLAY_CENTER_X - gCamera.x);
opponentY2 = (unsigned)(mpp->pos.y - DISPLAY_CENTER_Y - gCamera.y);
UPDATE_INDICATOR(opponentX2, opponentY2, spr, transform);
}
@@ -280,8 +280,8 @@ static void Task_8019898(void)
RETURN_IF_PLAYER_ONSCREEN(mpp->pos.x, mpp->pos.y, gCamera.x, gCamera.y);
// _08019576
opponentX = (unsigned)(mpp->pos.x - (DISPLAY_WIDTH / 2) - gCamera.x);
opponentY = (unsigned)(mpp->pos.y - (DISPLAY_HEIGHT / 2) - gCamera.y);
opponentX = (unsigned)(mpp->pos.x - DISPLAY_CENTER_X - gCamera.x);
opponentY = (unsigned)(mpp->pos.y - DISPLAY_CENTER_Y - gCamera.y);
// Only addition is from here
if (gCamera.x >= 961) {
@@ -294,8 +294,8 @@ static void Task_8019898(void)
RETURN_IF_PLAYER_ONSCREEN(mpp->pos.x, mpp->pos.y, normalizedCamX, normalizedCamY);
normalizedCamX = ({ mpp->pos.x - (DISPLAY_WIDTH / 2); }) - normalizedCamX;
normalizedCamY = ({ mpp->pos.y - (DISPLAY_HEIGHT / 2); }) - normalizedCamY;
normalizedCamX = ({ mpp->pos.x - DISPLAY_CENTER_X; }) - normalizedCamX;
normalizedCamY = ({ mpp->pos.y - DISPLAY_CENTER_Y; }) - normalizedCamY;
if (MAX(ABS(opponentX), ABS(opponentY)) > MAX(ABS(normalizedCamX), ABS(normalizedCamY))) {
opponentX = normalizedCamX;
+1 -1
View File
@@ -1948,7 +1948,7 @@ bool32 SA2_LABEL(sub_8018300)(void)
if (gMultiplayerCharacters[mpp->unk56] == 3) {
if (s->graphics.anim == SA1_ANIM_CHAR(AMY, BOOSTLESS_ATTACK) || s->graphics.anim == SA1_ANIM_CHAR(AMY, 56)) {
gPlayer.itemEffect |= PLAYER_ITEM_EFFECT__MP_SLOW_DOWN;
gPlayer.timerSpeedup = ZONE_TIME_TO_INT(0, 10);
gPlayer.timerSpeedup = TIME(0, 10);
gPlayer.itemEffect &= ~PLAYER_ITEM_EFFECT__SPEED_UP;
CreateItemTask_Confusion(gPlayer.character);
m4aMPlayTempoControl(&gMPlayInfo_BGM, Q(0.5));
+2 -2
View File
@@ -128,7 +128,7 @@ void StartMultiPakConnect(void)
s->graphics.anim = gPressStartTiles[gLoadedSaveGame->language].anim;
s->variant = gPressStartTiles[gLoadedSaveGame->language].variant;
s->prevVariant = -1;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = 122;
s->oamFlags = SPRITE_OAM_ORDER(4);
s->graphics.size = 0;
@@ -144,7 +144,7 @@ void StartMultiPakConnect(void)
s->graphics.anim = SA2_ANIM_MP_MSG;
s->variant = SA2_ANIM_VARIANT_MP_MSG_2;
s->prevVariant = -1;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = (DISPLAY_HEIGHT * (7. / 8.));
s->oamFlags = SPRITE_OAM_ORDER(4);
s->graphics.size = 0;
+5 -5
View File
@@ -105,7 +105,7 @@ void ReceiveRoomEvent_ItemEffect(union MultiSioData *recv, u8 i)
|| ((gMultiplayerConnections & (0x10 << (i))) >> ((i + 4))
!= (gMultiplayerConnections & (0x10 << (SIO_MULTI_CNT->id))) >> (SIO_MULTI_CNT->id + 4))) {
gPlayer.itemEffect |= PLAYER_ITEM_EFFECT__CONFUSION;
gPlayer.confusionTimer = ZONE_TIME_TO_INT(0, 10);
gPlayer.confusionTimer = TIME(0, 10);
CreateItemTask_Confusion(gPlayer.character);
m4aSongNumStart(SE_ITEM_CONFUSION);
}
@@ -130,9 +130,9 @@ void ReceiveRoomEvent_ItemEffect(union MultiSioData *recv, u8 i)
gPlayer.layer = (mpp->unk54 >> 7) & 1;
gPlayer.moveState |= MOVESTATE_IN_AIR;
mpp->unk60 = 30;
gPlayer.timerInvulnerability = ZONE_TIME_TO_INT(0, 2);
gCamera.x = (I(gPlayer.qWorldX) + gCamera.shiftX) - (DISPLAY_WIDTH / 2);
gCamera.y = (I(gPlayer.qWorldY) + gCamera.shiftY) - (DISPLAY_HEIGHT / 2);
gPlayer.timerInvulnerability = TIME(0, 2);
gCamera.x = (I(gPlayer.qWorldX) + gCamera.shiftX) - DISPLAY_CENTER_X;
gCamera.y = (I(gPlayer.qWorldY) + gCamera.shiftY) - DISPLAY_CENTER_Y;
m4aSongNumStart(SE_218);
}
}
@@ -145,7 +145,7 @@ void ReceiveRoomEvent_ItemEffect(union MultiSioData *recv, u8 i)
!= (gMultiplayerConnections & (0x10 << (SIO_MULTI_CNT->id))) >> (SIO_MULTI_CNT->id + 4)))) {
gPlayer.itemEffect |= PLAYER_ITEM_EFFECT__MP_SLOW_DOWN;
gPlayer.timerSpeedup = ZONE_TIME_TO_INT(0, 10);
gPlayer.timerSpeedup = TIME(0, 10);
gPlayer.itemEffect &= ~PLAYER_ITEM_EFFECT__SPEED_UP;
CreateItemTask_Confusion(gPlayer.character);
m4aSongNumStart(SE_ITEM_CONFUSION);
+3 -3
View File
@@ -407,7 +407,7 @@ static void sub_805CC34(void)
sub_805D644(teamPlayScreen);
s = &teamPlayScreen->unkC0[0];
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = 28;
DisplaySprite(s);
@@ -432,7 +432,7 @@ static void sub_805CC34(void)
DisplaySprite(s);
s = &teamPlayScreen->unkC0[4];
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = 52;
DisplaySprite(s);
@@ -497,7 +497,7 @@ static void sub_805D1F8(void)
MultiPakHeartbeat();
s = &teamPlayScreen->unkC0[1];
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = 28;
DisplaySprite(s);
+2 -2
View File
@@ -164,7 +164,7 @@ static void CreateUI(struct MultiplayerLobbyScreen *lobbyScreen)
s->graphics.anim = SA2_ANIM_MP_CHEESE_SITTING;
s->variant = 3;
s->prevVariant = -1;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = (DISPLAY_HEIGHT)-50;
s->oamFlags = SPRITE_OAM_ORDER(3);
s->graphics.size = 0;
@@ -181,7 +181,7 @@ static void CreateUI(struct MultiplayerLobbyScreen *lobbyScreen)
s->graphics.anim = sUiText[TextElementOffsetAlt(lang, 3, i)].anim;
s->variant = sUiText[TextElementOffsetAlt(lang, 3, i)].variant;
s->prevVariant = -1;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = (DISPLAY_HEIGHT / 4) - 4;
s->oamFlags = SPRITE_OAM_ORDER(4);
s->graphics.size = 0;
+3 -3
View File
@@ -4208,8 +4208,8 @@ static void TimeRecordsScreenCreateTimesUI(struct TimeRecordsScreen *timeRecords
if (timeValue < MAX_COURSE_TIME) {
s16 temp = timeValue % 60;
u16 temp2 = timeValue - temp;
millis = gMillisUnpackTable[temp][0] * 10;
millis += gMillisUnpackTable[temp][1];
millis = gMillisRenderLUT[temp][0] * 10;
millis += gMillisRenderLUT[temp][1];
seconds = temp2 / 60;
minutes = seconds / 60;
seconds += minutes * -60;
@@ -4269,7 +4269,7 @@ static void TimeRecordsScreenRefreshTimesUI(struct TimeRecordsScreen *timeRecord
u16 temp2 = timeValue - temp;
// This logic is the same as the above function but required to be
// inline instead of split, but required to be split in the other function
millis = gMillisUnpackTable[temp][0] * 10 + gMillisUnpackTable[temp][1];
millis = gMillisRenderLUT[temp][0] * 10 + gMillisRenderLUT[temp][1];
seconds = temp2 / 60;
minutes = seconds / 60;
seconds += minutes * -60;
+6 -6
View File
@@ -22,11 +22,11 @@
#if (GAME == GAME_SA1)
#define DEMO_SPRITE_PRIO 1
#define DEMO_OAM_ORDER 15
#define DEMO_PLAYBACK_TIME ZONE_TIME_TO_INT(0, 30)
#define DEMO_PLAYBACK_TIME TIME(0, 30)
#elif (GAME == GAME_SA2)
#define DEMO_SPRITE_PRIO 0
#define DEMO_OAM_ORDER 1
#define DEMO_PLAYBACK_TIME ZONE_TIME_TO_INT(0, 24.5)
#define DEMO_PLAYBACK_TIME TIME(0, 24.5)
#endif
typedef struct {
@@ -75,8 +75,8 @@ void CreateDemoManager(void)
gStageFlags |= STAGE_FLAG__DEMO_RUNNING;
s = &dm->textPressStart;
s->x = (DISPLAY_WIDTH / 2);
s->y = (DISPLAY_HEIGHT / 2) + 33;
s->x = DISPLAY_CENTER_X;
s->y = DISPLAY_CENTER_Y + 33;
#if (GAME == GAME_SA1)
s->graphics.dest = ALLOC_TILES(SA1_ANIM_PRESS_START_MSG_JP);
@@ -104,8 +104,8 @@ void CreateDemoManager(void)
UpdateSpriteAnimation(s);
s = &dm->textDemoPlay;
s->x = (DISPLAY_WIDTH / 2);
s->y = (DISPLAY_HEIGHT / 2);
s->x = DISPLAY_CENTER_X;
s->y = DISPLAY_CENTER_Y;
#if (GAME == GAME_SA1)
s->graphics.dest = ALLOC_TILES(SA1_ANIM_DEMO_PLAY);
+2 -2
View File
@@ -24,8 +24,8 @@
#include "constants/songs.h"
#include "constants/zones.h"
#define ITEM_DURATION_INVINCIBILITY ZONE_TIME_TO_INT(0, 20)
#define ITEM_DURATION_SPEED_UP ZONE_TIME_TO_INT(0, 20)
#define ITEM_DURATION_INVINCIBILITY TIME(0, 20)
#define ITEM_DURATION_SPEED_UP TIME(0, 20)
typedef struct {
/* 0x00 */ SpriteBase base;
+2 -2
View File
@@ -81,8 +81,8 @@ void CreatePauseMenu(void)
s->animSpeed = 0x10;
s->palId = 0;
s->x = (DISPLAY_WIDTH / 2);
s->y = (DISPLAY_HEIGHT / 2);
s->x = DISPLAY_CENTER_X;
s->y = DISPLAY_CENTER_Y;
s->frameFlags = 0;
+11 -11
View File
@@ -352,9 +352,9 @@ static void SoundTestScreenCreateUI(struct Task *t)
sub_806A568(backControlName, RENDER_TARGET_SCREEN, sBackButtonText[TextOffset(langOffset, 0, 1, 2)],
sBackButtonText[TextOffset(langOffset, 1, 1, 2)], 0x1000, 90, DISPLAY_HEIGHT - 26, 5,
sBackButtonText[TextOffset(langOffset, 2, 1, 2)], 0);
sub_806A568(scrollArrows, RENDER_TARGET_SCREEN, 1, 0x3C5, 0x1000, (DISPLAY_WIDTH / 4) + 30, (DISPLAY_HEIGHT / 2) + 10, 5, 2, 0);
sub_806A568(scrollArrows, RENDER_TARGET_SCREEN, 1, 0x3C5, 0x1000, (DISPLAY_WIDTH / 4) + 30, DISPLAY_CENTER_Y + 10, 5, 2, 0);
for (i = 0, xPos = (DISPLAY_WIDTH / 4) + 20, yPos = (DISPLAY_HEIGHT / 2) + 16; i < 3; i++, songNumDisplayElement++, xPos -= 8) {
for (i = 0, xPos = (DISPLAY_WIDTH / 4) + 20, yPos = DISPLAY_CENTER_Y + 16; i < 3; i++, songNumDisplayElement++, xPos -= 8) {
if (i == 0) {
sub_806A568(songNumDisplayElement, RENDER_TARGET_SCREEN, 2, 0x45f, 0x1000, xPos, yPos, 5, 0x11, 0);
} else {
@@ -363,8 +363,8 @@ static void SoundTestScreenCreateUI(struct Task *t)
}
for (i = 0; i < 4; i++) {
sub_806A568(&speakerCone[i], RENDER_TARGET_SCREEN, 0x40, 0x3ce, i | 0x1060, (DISPLAY_WIDTH / 4) + 16, (DISPLAY_HEIGHT / 2) + 10, 6,
0, 0);
sub_806A568(&speakerCone[i], RENDER_TARGET_SCREEN, 0x40, 0x3ce, i | 0x1060, (DISPLAY_WIDTH / 4) + 16, DISPLAY_CENTER_Y + 10, 6, 0,
0);
}
// Transforms static circle
@@ -373,7 +373,7 @@ static void SoundTestScreenCreateUI(struct Task *t)
transforms[i].qScaleX = Q(1);
transforms[i].qScaleY = Q(1);
transforms[i].x = (DISPLAY_WIDTH / 4) + 16;
transforms[i].y = (DISPLAY_HEIGHT / 2) + 10;
transforms[i].y = DISPLAY_CENTER_Y + 10;
}
transforms[1].x--;
@@ -381,10 +381,10 @@ static void SoundTestScreenCreateUI(struct Task *t)
transforms[2].x--;
transforms[3].y--;
sub_806A568(danceStage, RENDER_TARGET_SCREEN, 0x14, 0x3CC, 0x1000, (DISPLAY_WIDTH / 4) * 3, (DISPLAY_HEIGHT / 2) + 60, 6, 0, 4);
sub_806A568(animatedCream, RENDER_TARGET_SCREEN, 0x40, 0x3CA, 0x1000, (DISPLAY_WIDTH / 4) * 3, (DISPLAY_HEIGHT / 2) + 36, 5, 0, 0);
sub_806A568(danceStage, RENDER_TARGET_SCREEN, 0x14, 0x3CC, 0x1000, (DISPLAY_WIDTH / 4) * 3, DISPLAY_CENTER_Y + 60, 6, 0, 4);
sub_806A568(animatedCream, RENDER_TARGET_SCREEN, 0x40, 0x3CA, 0x1000, (DISPLAY_WIDTH / 4) * 3, DISPLAY_CENTER_Y + 36, 5, 0, 0);
animatedCream++;
sub_806A568(animatedCream, RENDER_TARGET_SCREEN, 0x48, 0x3C8, 0x1000, (DISPLAY_WIDTH / 4) * 3, (DISPLAY_HEIGHT / 2) + 36, 5, 0, 0);
sub_806A568(animatedCream, RENDER_TARGET_SCREEN, 0x48, 0x3C8, 0x1000, (DISPLAY_WIDTH / 4) * 3, DISPLAY_CENTER_Y + 36, 5, 0, 0);
for (i = 0; i < MAX_SOUND_NAME_LENGTH; i++) {
sub_806A568(&soundTestScreen->nameDisplay[i], RENDER_TARGET_SCREEN, 2, 0x45F, 0x1000, 0, 0, 5,
@@ -569,16 +569,16 @@ static void SoundTestScreenRenderUI(void)
gFlags |= FLAGS_EXECUTE_HBLANK_CALLBACKS;
for (i = 0; i < 2; i++, numberDisplayDigit++) {
numberDisplayDigit->y = (DISPLAY_HEIGHT / 2) + 16;
numberDisplayDigit->y = DISPLAY_CENTER_Y + 16;
if (soundTestScreen->soundNumAnimSteps[i] != 0) {
if (soundTestScreen->soundNumAnimSteps[i] > 0) {
numberDisplayDigit->y = sDigitTransitionAnim[soundTestScreen->soundNumAnimSteps[i]] + (DISPLAY_HEIGHT / 2) + 16;
numberDisplayDigit->y = sDigitTransitionAnim[soundTestScreen->soundNumAnimSteps[i]] + DISPLAY_CENTER_Y + 16;
soundTestScreen->soundNumAnimSteps[i]--;
}
if (soundTestScreen->soundNumAnimSteps[i] < 0) {
numberDisplayDigit->y = (DISPLAY_HEIGHT / 2) + 16 - sDigitTransitionAnim[-soundTestScreen->soundNumAnimSteps[i]];
numberDisplayDigit->y = DISPLAY_CENTER_Y + 16 - sDigitTransitionAnim[-soundTestScreen->soundNumAnimSteps[i]];
soundTestScreen->soundNumAnimSteps[i]++;
}
}
+1 -1
View File
@@ -45,7 +45,7 @@ static void GuardRoboInit(struct SpecialStageGuardRobo *guardRobo)
guardRobo->vram = gSpecialStageVramPointer;
gSpecialStageVramPointer += maxSize * TILE_SIZE_4BPP;
sub_8071380(&guardRobo->sprite, vramOld, DISPLAY_WIDTH / 2, (DISPLAY_HEIGHT / 2) - 20, 7, sprites);
sub_8071380(&guardRobo->sprite, vramOld, DISPLAY_CENTER_X, DISPLAY_CENTER_Y - 20, 7, sprites);
guardRobo->sprites = sprites;
guardRobo->state = 1;
+3 -3
View File
@@ -122,7 +122,7 @@ void CreateSpecialStage(s16 selectedCharacter, s16 level)
stage->unk5C7 = 0;
stage->unk5C8 = 0;
stage->cameraOriginX = DISPLAY_WIDTH / 2;
stage->cameraOriginX = DISPLAY_CENTER_X;
stage->cameraHeight = 140;
stage->worldScale = 64; // scale
@@ -132,7 +132,7 @@ void CreateSpecialStage(s16 selectedCharacter, s16 level)
// This value is 49 on the GBA
// - (horizonHeight / 2) - 1 is just a guess
viewDistance = (DISPLAY_HEIGHT / 2) - (60 / 2) - 1;
viewDistance = DISPLAY_CENTER_Y - (60 / 2) - 1;
stage->viewDistance = viewDistance;
// Round up to the nearest power of 2
@@ -733,7 +733,7 @@ static void Task_ShowIntroScreen(void)
{
struct SpecialStage *stage = TASK_DATA(gCurTask);
SetupIntroScreenRegisters();
sub_806CA88(&stage->introText, RENDER_TARGET_SCREEN, 0x28, 0x37C, 0, (DISPLAY_WIDTH / 2), (DISPLAY_HEIGHT / 2), 0, 0, 0);
sub_806CA88(&stage->introText, RENDER_TARGET_SCREEN, 0x28, 0x37C, 0, DISPLAY_CENTER_X, DISPLAY_CENTER_Y, 0, 0, 0);
stage->state = 1;
m4aSongNumStart(MUS_SPECIAL_STAGE_INTRO);
+1 -1
View File
@@ -84,7 +84,7 @@ static void Task_PhysicsMain(void)
screenX = sin * 20;
screenY = cos * 20;
screenX = Q_16_16_TO_INT(screenX) + (DISPLAY_WIDTH / 2) - 8;
screenX = Q_16_16_TO_INT(screenX) + DISPLAY_CENTER_X - 8;
screenY = -(Q_16_16_TO_INT(screenY) >> 1) + 120; // Same Y as player
player->roboArrow.x = screenX;
+3 -3
View File
@@ -108,8 +108,8 @@ struct Task *CreateSpecialStagePlayer(struct SpecialStage *stage)
s->graphics.anim = SA2_ANIM_SP_STAGE_ARROW;
s->frameFlags = SPRITE_FLAG(PRIORITY, 1) | SPRITE_FLAG(ROT_SCALE_DOUBLE_SIZE, 1) | SPRITE_FLAG(ROT_SCALE_ENABLE, 1)
| SPRITE_FLAG(ROT_SCALE, 30);
s->x = (DISPLAY_WIDTH / 2);
s->y = (DISPLAY_HEIGHT / 2);
s->x = DISPLAY_CENTER_X;
s->y = DISPLAY_CENTER_Y;
s->oamFlags = SPRITE_OAM_ORDER(0);
s->qAnimDelay = 0;
s->prevAnim = -1;
@@ -310,7 +310,7 @@ void sub_806D548(Sprite *s, void *vram, s16 y, u8 b, const struct UNK_80DF670 *c
s->graphics.size = 0;
s->graphics.anim = c4->anim;
s->frameFlags = frameFlags;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = y;
s->oamFlags = SPRITE_OAM_ORDER(b);
s->qAnimDelay = 0;
+34 -35
View File
@@ -211,29 +211,29 @@ static void CreateRingCounter(struct SpecialStageUI *ui)
const struct UNK_80DF670 *sprite;
sprite = &sValueSprites[stage->ringsHundreds];
sub_806CA88(&ui->ringsHundredsDigit, RENDER_TARGET_SCREEN, sprite->size, sprite->anim, 0x1000, (DISPLAY_WIDTH / 2) - 20, 16, 1,
sub_806CA88(&ui->ringsHundredsDigit, RENDER_TARGET_SCREEN, sprite->size, sprite->anim, 0x1000, DISPLAY_CENTER_X - 20, 16, 1,
sprite->variant, 0);
sprite = &sValueSprites[stage->ringsTens];
sub_806CA88(&ui->ringsTensDigit, RENDER_TARGET_SCREEN, sprite->size, sprite->anim, 0x1000, (DISPLAY_WIDTH / 2) - 12, 16, 1,
sub_806CA88(&ui->ringsTensDigit, RENDER_TARGET_SCREEN, sprite->size, sprite->anim, 0x1000, DISPLAY_CENTER_X - 12, 16, 1,
sprite->variant, 0);
sprite = &sValueSprites[stage->ringsUnits];
sub_806CA88(&ui->ringsUnitsDigit, RENDER_TARGET_SCREEN, sprite->size, sprite->anim, 0x1000, (DISPLAY_WIDTH / 2) - 4, 16, 1,
sub_806CA88(&ui->ringsUnitsDigit, RENDER_TARGET_SCREEN, sprite->size, sprite->anim, 0x1000, DISPLAY_CENTER_X - 4, 16, 1,
sprite->variant, 0);
sub_806CA88(&ui->unk154, RENDER_TARGET_SCREEN, 8, 0x378, 0x1000, (DISPLAY_WIDTH / 2), 14, 2, 0, 0);
sub_806CA88(&ui->unk154, RENDER_TARGET_SCREEN, 8, 0x378, 0x1000, DISPLAY_CENTER_X, 14, 2, 0, 0);
sprite = &sValueSprites[stage->ringsTargetHundreds];
sub_806CA88(&ui->ringsTargetHundredsDigit, RENDER_TARGET_SCREEN, sprite->size, sprite->anim, 0x1000, (DISPLAY_WIDTH / 2) + 4, 24, 1,
sub_806CA88(&ui->ringsTargetHundredsDigit, RENDER_TARGET_SCREEN, sprite->size, sprite->anim, 0x1000, DISPLAY_CENTER_X + 4, 24, 1,
sprite->variant, 0);
sprite = &sValueSprites[stage->ringsTargetTens];
sub_806CA88(&ui->ringsTargetTensDigit, RENDER_TARGET_SCREEN, sprite->size, sprite->anim, 0x1000, (DISPLAY_WIDTH / 2) + 12, 24, 1,
sub_806CA88(&ui->ringsTargetTensDigit, RENDER_TARGET_SCREEN, sprite->size, sprite->anim, 0x1000, DISPLAY_CENTER_X + 12, 24, 1,
sprite->variant, 0);
sprite = &sValueSprites[stage->ringsTargetUnits];
sub_806CA88(&ui->ringsTargetUnitsDigit, RENDER_TARGET_SCREEN, sprite->size, sprite->anim, 0x1000, (DISPLAY_WIDTH / 2) + 20, 24, 1,
sub_806CA88(&ui->ringsTargetUnitsDigit, RENDER_TARGET_SCREEN, sprite->size, sprite->anim, 0x1000, DISPLAY_CENTER_X + 20, 24, 1,
sprite->variant, 0);
}
@@ -332,7 +332,7 @@ static void HandlePaused(struct SpecialStageUI *ui)
{ 40, SA2_ANIM_PAUSE_MENU_FR, 0 }, { 40, SA2_ANIM_PAUSE_MENU_ES, 0 }, { 40, SA2_ANIM_PAUSE_MENU_IT, 0 },
};
sub_806CA88(s, 1, pauseMenuVariants[lang][0], pauseMenuVariants[lang][1], 0x1000, (DISPLAY_WIDTH / 2), (DISPLAY_HEIGHT / 2), 0,
sub_806CA88(s, 1, pauseMenuVariants[lang][0], pauseMenuVariants[lang][1], 0x1000, DISPLAY_CENTER_X, DISPLAY_CENTER_Y, 0,
pauseMenuVariants[lang][2], 0);
DmaCopy16(3, &GET_PALETTE_COLOR_OBJ(15, 9), ui->pauseMenuPalette1, sizeof(ui->pauseMenuPalette1));
@@ -348,8 +348,8 @@ static void SpecialStageResultsScreenCreateUI(struct SpecialStageResultsScreen *
{
const struct UNK_80DF670 *sprite;
struct SpecialStage *stage = resultsScreen->stage;
s16 a = (DISPLAY_WIDTH / 2) - 72, b = (DISPLAY_WIDTH / 2) - 72, c = (DISPLAY_WIDTH / 2) - 72;
s16 d = (DISPLAY_WIDTH / 2) + 38, e = (DISPLAY_WIDTH / 2) + 38, f = (DISPLAY_WIDTH / 2) + 38;
s16 a = DISPLAY_CENTER_X - 72, b = DISPLAY_CENTER_X - 72, c = DISPLAY_CENTER_X - 72;
s16 d = DISPLAY_CENTER_X + 38, e = DISPLAY_CENTER_X + 38, f = DISPLAY_CENTER_X + 38;
s16 i;
u8 chaosEmeralds = gLoadedSaveGame->chaosEmeralds[stage->character];
@@ -359,33 +359,32 @@ static void SpecialStageResultsScreenCreateUI(struct SpecialStageResultsScreen *
gSpecialStageSubMenuVramPointer = NULL;
if (stage->targetReached) {
sub_806CA88(&resultsScreen->unk4, 1, 0x28, SA2_ANIM_SP_STAGE_NOTIFS, 0, DISPLAY_WIDTH + 16 + a, (DISPLAY_HEIGHT / 2) - 48, 0, 1, 0);
sub_806CA88(&resultsScreen->unk4, 1, 0x28, SA2_ANIM_SP_STAGE_NOTIFS, 0, DISPLAY_WIDTH + 16 + a, DISPLAY_CENTER_Y - 48, 0, 1, 0);
sub_806CA88(&resultsScreen->unk34, 1, gUnknown_080DF880[character].size, gUnknown_080DF880[character].anim, 0,
DISPLAY_WIDTH + 16 + a, (DISPLAY_HEIGHT / 2) - 56, 0, gUnknown_080DF880[character].variant, 0);
DISPLAY_WIDTH + 16 + a, DISPLAY_CENTER_Y - 56, 0, gUnknown_080DF880[character].variant, 0);
} else {
sub_806CA88(&resultsScreen->unk4, 1, 0x20, SA2_ANIM_SP_STAGE_NOTIFS, 0, DISPLAY_WIDTH + 16 + a, (DISPLAY_HEIGHT / 2) - 48, 0, 0, 0);
sub_806CA88(&resultsScreen->unk4, 1, 0x20, SA2_ANIM_SP_STAGE_NOTIFS, 0, DISPLAY_WIDTH + 16 + a, DISPLAY_CENTER_Y - 48, 0, 0, 0);
}
sub_806CA88(&resultsScreen->unk1B4, 1, 0x16, SA2_ANIM_SP_STAGE_SCORE_BONUSES, 0, DISPLAY_WIDTH + 16 + a, (DISPLAY_HEIGHT / 2) - 8, 0, 0,
sub_806CA88(&resultsScreen->unk1B4, 1, 0x16, SA2_ANIM_SP_STAGE_SCORE_BONUSES, 0, DISPLAY_WIDTH + 16 + a, DISPLAY_CENTER_Y - 8, 0, 0, 0);
sub_806CA88(&resultsScreen->unk1E4, 1, 0x16, SA2_ANIM_SP_STAGE_SCORE_BONUSES, 0, DISPLAY_WIDTH + 16 + b, DISPLAY_CENTER_Y + 12, 0, 1,
0);
sub_806CA88(&resultsScreen->unk214, 1, 0x16, SA2_ANIM_SP_STAGE_SCORE_BONUSES, 0, DISPLAY_WIDTH + 16 + c, DISPLAY_CENTER_Y + 32, 0, 2,
0);
sub_806CA88(&resultsScreen->unk1E4, 1, 0x16, SA2_ANIM_SP_STAGE_SCORE_BONUSES, 0, DISPLAY_WIDTH + 16 + b, (DISPLAY_HEIGHT / 2) + 12, 0,
1, 0);
sub_806CA88(&resultsScreen->unk214, 1, 0x16, SA2_ANIM_SP_STAGE_SCORE_BONUSES, 0, DISPLAY_WIDTH + 16 + c, (DISPLAY_HEIGHT / 2) + 32, 0,
2, 0);
for (i = 0; i < 5; i++) {
sub_806CA88(&resultsScreen->unk244[i], 1, sValueSprites[0].size, sValueSprites[0].anim, 0, d + SomeMacro807028C(i),
(DISPLAY_HEIGHT / 2) + 8, 0, sValueSprites[0].variant, 0);
DISPLAY_CENTER_Y + 8, 0, sValueSprites[0].variant, 0);
}
for (i = 0; i < 5; i++) {
sub_806CA88(&resultsScreen->unk334[i], 1, sValueSprites[0].size, sValueSprites[0].anim, 0, e + SomeMacro807028C(i),
(DISPLAY_HEIGHT / 2) + 28, 0, sValueSprites[0].variant, 0);
DISPLAY_CENTER_Y + 28, 0, sValueSprites[0].variant, 0);
}
for (i = 0; i < 5; i++) {
sub_806CA88(&resultsScreen->unk424[i], 1, sValueSprites[0].size, sValueSprites[0].anim, 0, f + SomeMacro807028C(i),
(DISPLAY_HEIGHT / 2) + 48, 0, sValueSprites[0].variant, 0);
DISPLAY_CENTER_Y + 48, 0, sValueSprites[0].variant, 0);
}
for (i = 0; i < NUM_COURSE_ZONES; i++) {
@@ -395,7 +394,7 @@ static void SpecialStageResultsScreenCreateUI(struct SpecialStageResultsScreen *
sprite = &sChaosEmeraldUnlockedSprites[7];
}
sub_806CA88(&resultsScreen->chaosEmerald[i], 1, 9, sprite->anim, 0, i * 24 + DISPLAY_WIDTH + 52, (DISPLAY_HEIGHT / 2) - 28, 0,
sub_806CA88(&resultsScreen->chaosEmerald[i], 1, 9, sprite->anim, 0, i * 24 + DISPLAY_WIDTH + 52, DISPLAY_CENTER_Y - 28, 0,
sprite->variant, 0);
}
@@ -451,11 +450,11 @@ void sub_807061C(s16 a)
s = &resultsScreen->unk4;
if (stage->targetReached) {
s->x = resultsScreen->unk516 + (DISPLAY_WIDTH / 2) - 44;
s->x = resultsScreen->unk516 + DISPLAY_CENTER_X - 44;
s = &resultsScreen->unk34;
s->x = resultsScreen->unk516 + (DISPLAY_WIDTH / 2) - 116;
s->x = resultsScreen->unk516 + DISPLAY_CENTER_X - 116;
} else {
s->x = resultsScreen->unk516 + (DISPLAY_WIDTH / 2) - 72;
s->x = resultsScreen->unk516 + DISPLAY_CENTER_X - 72;
}
}
@@ -470,7 +469,7 @@ void sub_8070680(s16 a)
for (i = 0; i < 7; i++) {
Sprite *s = &resultsScreen->chaosEmerald[i];
s32 x = (i * 24);
s32 base = resultsScreen->unk518 + (DISPLAY_WIDTH / 2) - 84;
s32 base = resultsScreen->unk518 + DISPLAY_CENTER_X - 84;
x += base;
s->x = x;
}
@@ -486,14 +485,14 @@ void sub_80706D8(s16 a)
resultsScreen->unk51A = (11 - a) * 22;
s = &resultsScreen->unk1B4;
s->x = resultsScreen->unk51A + (DISPLAY_WIDTH / 2) - 72;
s->x = resultsScreen->unk51A + DISPLAY_CENTER_X - 72;
for (i = 0; i < 5; i++) {
s32 temp2, temp;
s = &resultsScreen->unk244[i];
temp2 = (i * 8);
temp = resultsScreen->unk51A + (DISPLAY_WIDTH / 2) + 38;
temp = resultsScreen->unk51A + DISPLAY_CENTER_X + 38;
s->x = temp2 + temp;
}
}
@@ -508,12 +507,12 @@ void sub_8070740(s16 a)
resultsScreen->unk51C = (11 - a) * 22;
s = &resultsScreen->unk1E4;
s->x = resultsScreen->unk51C + (DISPLAY_WIDTH / 2) - 72;
s->x = resultsScreen->unk51C + DISPLAY_CENTER_X - 72;
for (i = 0; i < 5; i++) {
s = &resultsScreen->unk334[i];
temp2 = (i * 8);
temp = resultsScreen->unk51C + (DISPLAY_WIDTH / 2) + 38;
temp = resultsScreen->unk51C + DISPLAY_CENTER_X + 38;
s->x = temp2 + temp;
}
}
@@ -528,12 +527,12 @@ void sub_80707A8(s16 xPos)
resultsScreen->unk51E = (11 - xPos) * 22;
s = &resultsScreen->unk214;
s->x = resultsScreen->unk51E + (DISPLAY_WIDTH / 2) - 72;
s->x = resultsScreen->unk51E + DISPLAY_CENTER_X - 72;
for (i = 0; i < 5; i++) {
s = &resultsScreen->unk424[i];
temp2 = (i * 8);
temp = resultsScreen->unk51E + (DISPLAY_WIDTH / 2) + 38;
temp = resultsScreen->unk51E + DISPLAY_CENTER_X + 38;
s->x = temp2 + temp;
}
}
@@ -722,8 +721,8 @@ void RenderTime(void)
static void CreateMultiplierValue(struct SpecialStageUI *ui)
{
const struct UNK_80DF670 *unkF840 = &sValueSprites[11];
sub_806CA88(&ui->multiplier, 0, unkF840->size, unkF840->anim, 0x1000, (DISPLAY_WIDTH / 2) - 8, (DISPLAY_HEIGHT / 2) + 20, 2,
unkF840->variant, 0);
sub_806CA88(&ui->multiplier, 0, unkF840->size, unkF840->anim, 0x1000, DISPLAY_CENTER_X - 8, DISPLAY_CENTER_Y + 20, 2, unkF840->variant,
0);
}
void RenderMultiplier(void)
@@ -750,7 +749,7 @@ void CreateStartText(struct SpecialStageUI *ui)
Sprite *s = &ui->startText;
ui->unk2A8 = 1;
ui->unk2A4 = gSpecialStageVramPointer;
sub_806CA88(s, 0, 20, 0x376, 0x1000, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, 1, 0, 0);
sub_806CA88(s, 0, 20, 0x376, 0x1000, DISPLAY_CENTER_X, DISPLAY_HEIGHT / 2, 1, 0, 0);
}
void RenderStartText(struct SpecialStageUI *ui) { DisplaySprite(&ui->startText); }
+1 -1
View File
@@ -123,7 +123,7 @@ bool16 SpecialStageCalcEntityScreenPosition(struct UNK_806CB84 *a, struct Specia
}
a->unkA = val;
a->screenY = (a->unkA - unk874->unkE) - (Q_16_16(unk874->unk12) / world->qPerspectiveTable[val]);
a->unk8 = ((DISPLAY_WIDTH / 2) - ((r9 * ((DISPLAY_WIDTH / 2) + 15)) / r8));
a->unk8 = (DISPLAY_CENTER_X - ((r9 * (DISPLAY_CENTER_X + 15)) / r8));
a->screenX = a->unk8 - unk874->unkC;
if (unk874->unk8 != 0) {
a->unk6 = (((unk874->unk8 * 8) / world->qPerspectiveTable[val]) * 9) >> 2;
+1 -1
View File
@@ -181,7 +181,7 @@ void Task_802F06C(void)
ScreenFade *ts = &sri->ts;
UpdateScreenFade(ts);
if (++sri->unk10 > ZONE_TIME_TO_INT(0, 2)) {
if (++sri->unk10 > TIME(0, 2)) {
ts->speed = 60;
gCurTask->main = Task_802ED98;
}
+11 -11
View File
@@ -504,7 +504,7 @@ void InitCamera(u32 level)
gBossCameraClampYLower = gBossCameraYClamps[ZONE_FINAL + 1][0];
gBossCameraClampYUpper = gBossCameraYClamps[ZONE_FINAL + 1][1];
camera->x = 600;
camera->unk10 = (DISPLAY_WIDTH / 2);
camera->unk10 = DISPLAY_CENTER_X;
camera->unk14 = 0;
camera->y = 0;
camera->unk64 = -4;
@@ -514,15 +514,15 @@ void InitCamera(u32 level)
// for now we use the original GBA values as otherwise the boss
// goes off the screen (not sure why yet)
camera->unk10 = I(player->qWorldX) - (2 * 240);
camera->y = I(player->qWorldY) - ((DISPLAY_HEIGHT / 2) + 4);
camera->y = I(player->qWorldY) - (DISPLAY_CENTER_Y + 4);
camera->unk14 = camera->y;
camera->unk64 = player->spriteOffsetY - 4;
}
} else
#endif
{
camera->x = I(player->qWorldX) - (DISPLAY_WIDTH / 2);
camera->y = I(player->qWorldY) - ((DISPLAY_HEIGHT / 2) + 4);
camera->x = I(player->qWorldX) - DISPLAY_CENTER_X;
camera->y = I(player->qWorldY) - (DISPLAY_CENTER_Y + 4);
if (camera->x < 0) {
camera->x = 0;
@@ -565,7 +565,7 @@ void InitCamera(u32 level)
// Only need to use the original value for these zones
#define DISPLAY_WIDTH_FOR_BOSS_TAS \
((LEVEL_TO_ZONE(gCurrentLevel) == ZONE_2 || LEVEL_TO_ZONE(gCurrentLevel) == ZONE_6) ? (240 / 2) : (DISPLAY_WIDTH / 2))
((LEVEL_TO_ZONE(gCurrentLevel) == ZONE_2 || LEVEL_TO_ZONE(gCurrentLevel) == ZONE_6) ? (240 / 2) : DISPLAY_CENTER_X)
void UpdateCamera(void)
{
@@ -605,18 +605,18 @@ void UpdateCamera(void)
#if TAS_TESTING && TAS_TESTING_WIDESCREEN_HACK && DISPLAY_WIDTH > 240
if (newX + (DISPLAY_WIDTH_FOR_BOSS_TAS + 1) < I(player->qWorldX)) {
#else
if (newX + ((DISPLAY_WIDTH / 2) + 1) < I(player->qWorldX)) {
if (newX + (DISPLAY_CENTER_X + 1) < I(player->qWorldX)) {
#endif
if ((camera->unk10 + (DISPLAY_HEIGHT / 2)) > newX) {
if ((camera->unk10 + DISPLAY_CENTER_Y) > newX) {
s32 playerScreenX = I(player->qWorldX);
#if TAS_TESTING && TAS_TESTING_WIDESCREEN_HACK && DISPLAY_WIDTH > 240
playerScreenX -= DISPLAY_WIDTH_FOR_BOSS_TAS;
#else
playerScreenX -= DISPLAY_WIDTH / 2;
playerScreenX -= DISPLAY_CENTER_X;
#endif
camera->shiftX = playerScreenX - newX;
} else {
newX = (camera->unk10 + (DISPLAY_HEIGHT / 2));
newX = (camera->unk10 + DISPLAY_CENTER_Y);
camera->shiftX = 0;
}
} else {
@@ -666,7 +666,7 @@ void UpdateCamera(void)
} else {
if (!(camera->unk50 & 1)) {
s16 airSpeedX = player->qSpeedAirX;
camera->unk10 = I(player->qWorldX) + camera->shiftX - (DISPLAY_WIDTH / 2);
camera->unk10 = I(player->qWorldX) + camera->shiftX - DISPLAY_CENTER_X;
camera->unk56 = (airSpeedX + (camera->unk56 * 15)) >> 4;
camera->unk10 += (camera->unk56 >> 5);
}
@@ -692,7 +692,7 @@ void UpdateCamera(void)
camera->unk64 = unk64;
}
camera->unk14 = I(player->qWorldY) + camera->shiftY - (DISPLAY_HEIGHT / 2) + camera->unk4C + unk64;
camera->unk14 = I(player->qWorldY) + camera->shiftY - DISPLAY_CENTER_Y + camera->unk4C + unk64;
}
}
+7 -7
View File
@@ -854,7 +854,7 @@ static void Task_IntroColorAnimation(void)
if (innerCount < INTROFRAME_NAME_AND_BANNER) {
/* Bottom left */
mask1->angle = -(innerCount * (DISPLAY_WIDTH / INTROFRAME_NAME_AND_BANNER)) + (DISPLAY_WIDTH + DEG_TO_SIN(5.625));
mask1->y = (DISPLAY_HEIGHT / 2) + 8;
mask1->y = DISPLAY_CENTER_Y + 8;
if (innerCount >= INTROFRAME_BANNER_APPEARS) {
/* Top Banner */
@@ -1021,17 +1021,17 @@ static void Task_IntroZoneNameAndIconAnimations(void)
if (counter <= 12) {
s->x = 254 - (((counter * 75) << 6) >> 8);
s->y = ((DISPLAY_HEIGHT / 2) + 41) - (((counter * 123) << 3) >> 8);
s->y = (DISPLAY_CENTER_Y + 41) - (((counter * 123) << 3) >> 8);
} else if (counter <= 100) {
// _08030078
s->x = 254 - (((13 * 75) << 6) >> 8) + 13;
s->y = ((DISPLAY_HEIGHT / 2) + 41) - (((13 * 123) << 3) >> 8) + 2;
s->y = (DISPLAY_CENTER_Y + 41) - (((13 * 123) << 3) >> 8) + 2;
} else {
// _08030086
u32 innerCount = counter - (100 - 12);
s->x = 254 - (((innerCount * 75) << 6) >> 8);
s->y = ((DISPLAY_HEIGHT / 2) + 41) - (((innerCount * 123) << 3) >> 8);
s->y = (DISPLAY_CENTER_Y + 41) - (((innerCount * 123) << 3) >> 8);
}
// _080300AE
@@ -1040,13 +1040,13 @@ static void Task_IntroZoneNameAndIconAnimations(void)
if (counter <= 12) {
s->x = 284 - (((counter * 75) << 6) >> 8);
s->y = ((DISPLAY_HEIGHT / 2) + 47) - (((counter * 123) << 3) >> 8);
s->y = (DISPLAY_CENTER_Y + 47) - (((counter * 123) << 3) >> 8);
} else if (counter <= 100) {
s->x = 284 - (((13 * 75) << 6) >> 8) + 13;
s->y = ((DISPLAY_HEIGHT / 2) + 47) - (((13 * 123) << 3) >> 8) + 2;
s->y = (DISPLAY_CENTER_Y + 47) - (((13 * 123) << 3) >> 8) + 2;
} else {
s->x = 284 - ((((counter - (100 - 12)) * 75) << 6) >> 8);
s->y = ((DISPLAY_HEIGHT / 2) + 47) - ((((counter - (100 - 12)) * 123) << 3) >> 8);
s->y = (DISPLAY_CENTER_Y + 47) - ((((counter - (100 - 12)) * 123) << 3) >> 8);
}
// _0803012A
+7 -7
View File
@@ -864,7 +864,7 @@ void InitializePlayer(Player *p)
p->stoodObj = NULL;
p->itemEffect = PLAYER_ITEM_EFFECT__NONE;
p->SA2_LABEL(unk2A) = 0;
p->SA2_LABEL(unk72) = ZONE_TIME_TO_INT(0, 6);
p->SA2_LABEL(unk72) = TIME(0, 6);
p->SA2_LABEL(unk7E) = 0;
p->SA2_LABEL(unk7C) = 0;
p->SA2_LABEL(unk82) = Q(1);
@@ -3500,8 +3500,8 @@ void Task_PlayerHandleDeath(void)
gSpecialRingCount = 0;
InitializePlayer(&gPlayer);
gCamera.x = I(gPlayer.qWorldX) + gCamera.shiftX - (DISPLAY_WIDTH / 2);
gCamera.y = I(gPlayer.qWorldY) + gCamera.shiftY - (DISPLAY_HEIGHT / 2);
gCamera.x = I(gPlayer.qWorldX) + gCamera.shiftX - DISPLAY_CENTER_X;
gCamera.y = I(gPlayer.qWorldY) + gCamera.shiftY - DISPLAY_CENTER_Y;
m4aMPlayTempoControl(&gMPlayInfo_BGM, 256);
gPlayer.moveState = 0;
gStageFlags &= ~STAGE_FLAG__GRAVITY_INVERTED;
@@ -3558,7 +3558,7 @@ void Task_PlayerDied(void)
if (DeadPlayerLeftScreen(&gPlayer, &gCamera, gPlayer.qWorldY)) {
player_0_Task *gt = TASK_DATA(gCurTask);
gt->unk4 = ZONE_TIME_TO_INT(0, 1);
gt->unk4 = TIME(0, 1);
gPlayer.moveState |= MOVESTATE_100000;
if (IS_MULTI_PLAYER) {
sub_8024B10(p, psi1);
@@ -5816,7 +5816,7 @@ void Player_InitVictoryPoseTransition(Player *p)
{
Player_CameraShift_inline(p);
p->unk72 = ZONE_TIME_TO_INT(0, 1.5);
p->unk72 = TIME(0, 1.5);
if (gCurrentLevel < LEVEL_INDEX(ZONE_FINAL, ACT_XX_FINAL_ZONE)) {
switch (gCurrentLevel & 0x3) {
@@ -5931,9 +5931,9 @@ void Player_8027C5C(Player *p)
// x-position relative to a sprite region?
s32 playerX = I(p->qWorldX) - gCamera.x;
if (playerX > (DISPLAY_WIDTH / 2)) {
if (playerX > DISPLAY_CENTER_X) {
p->qSpeedGround = Q(4.5);
} else if (playerX < (DISPLAY_WIDTH / 2)) {
} else if (playerX < DISPLAY_CENTER_X) {
p->qSpeedGround = Q(5.5);
} else {
p->qSpeedGround = Q(5.0);
+1 -1
View File
@@ -797,7 +797,7 @@ static void sub_802C8A0(struct SuperSonic *sonic)
sonic->flags &= ~SUPER_FLAG__4;
x = Q(gCamera.x + (DISPLAY_WIDTH + 76));
y = Q(gCamera.y + (DISPLAY_HEIGHT / 2));
y = Q(gCamera.y + DISPLAY_CENTER_Y);
sonic->worldX += Div((x - sonic->worldX), 100);
sonic->worldY += Div((y - sonic->worldY), 100);
+23 -23
View File
@@ -25,9 +25,9 @@ typedef struct {
/* 0x170 */ bool8 isCountingDone;
} StageResults; /* size: 0x174 */
#define OUTRO_TIME_BONUS_Y_POS (DISPLAY_HEIGHT / 2) + 10
#define OUTRO_RING_BONUS_Y_POS (DISPLAY_HEIGHT / 2) + 30
#define OUTRO_SP_RING_BONUS_Y_POS (DISPLAY_HEIGHT / 2) + 50
#define OUTRO_TIME_BONUS_Y_POS DISPLAY_CENTER_Y + 10
#define OUTRO_RING_BONUS_Y_POS DISPLAY_CENTER_Y + 30
#define OUTRO_SP_RING_BONUS_Y_POS DISPLAY_CENTER_Y + 50
static void Task_UpdateStageResults(void);
static void TaskDestructor_StageResults(struct Task *);
@@ -103,23 +103,23 @@ u16 CreateStageResults(u32 courseTime, u16 ringCount, u8 spRingCount)
UpdateScreenFade(&outro->base.fade);
}
if (courseTime < ZONE_TIME_TO_INT(0, 30)) {
if (courseTime < TIME(0, 30)) {
outro->base.timeBonusScore = 80000;
} else if (courseTime < ZONE_TIME_TO_INT(0, 50)) {
} else if (courseTime < TIME(0, 50)) {
outro->base.timeBonusScore = 50000;
} else if (courseTime < ZONE_TIME_TO_INT(1, 0)) {
} else if (courseTime < TIME(1, 0)) {
outro->base.timeBonusScore = 10000;
} else if (courseTime < ZONE_TIME_TO_INT(1, 30)) {
} else if (courseTime < TIME(1, 30)) {
outro->base.timeBonusScore = 5000;
} else if (courseTime < ZONE_TIME_TO_INT(2, 0)) {
} else if (courseTime < TIME(2, 0)) {
outro->base.timeBonusScore = 4000;
} else if (courseTime < ZONE_TIME_TO_INT(3, 0)) {
} else if (courseTime < TIME(3, 0)) {
outro->base.timeBonusScore = 3000;
} else if (courseTime < ZONE_TIME_TO_INT(4, 0)) {
} else if (courseTime < TIME(4, 0)) {
outro->base.timeBonusScore = 2000;
} else if (courseTime < ZONE_TIME_TO_INT(5, 0)) {
} else if (courseTime < TIME(5, 0)) {
outro->base.timeBonusScore = 1000;
} else if (courseTime < ZONE_TIME_TO_INT(6, 0)) {
} else if (courseTime < TIME(6, 0)) {
outro->base.timeBonusScore = 500;
} else {
outro->base.timeBonusScore = 0;
@@ -149,7 +149,7 @@ u16 CreateStageResults(u32 courseTime, u16 ringCount, u8 spRingCount)
s = &outro->base.separator;
s->x = DISPLAY_WIDTH + 16;
s->y = (DISPLAY_HEIGHT / 2);
s->y = DISPLAY_CENTER_Y;
s->graphics.dest = VramMalloc(4);
s->graphics.anim = SA2_ANIM_TA_WHITE_BAR;
s->variant = 0;
@@ -166,7 +166,7 @@ u16 CreateStageResults(u32 courseTime, u16 ringCount, u8 spRingCount)
s = &outro->base.title[0];
s->x = DISPLAY_WIDTH + 16;
s->y = (DISPLAY_HEIGHT / 2) - 39;
s->y = DISPLAY_CENTER_Y - 39;
s->graphics.dest = VramMalloc(gAnimsGotThroughCharacterNames[gSelectedCharacter][0]);
s->graphics.anim = gAnimsGotThroughCharacterNames[gSelectedCharacter][1];
s->variant = gAnimsGotThroughCharacterNames[gSelectedCharacter][2];
@@ -188,7 +188,7 @@ u16 CreateStageResults(u32 courseTime, u16 ringCount, u8 spRingCount)
s = &outro->base.title[1];
s->x = DISPLAY_WIDTH + 16;
s->y = (DISPLAY_HEIGHT / 2) - 31;
s->y = DISPLAY_CENTER_Y - 31;
s->graphics.dest = VramMalloc(gStageResultsHeadlineTexts[isBossAct][0]);
s->graphics.anim = gStageResultsHeadlineTexts[isBossAct][1];
s->variant = gStageResultsHeadlineTexts[isBossAct][2];
@@ -219,7 +219,7 @@ u16 CreateStageResults(u32 courseTime, u16 ringCount, u8 spRingCount)
s = &outro->base.title[2];
s->x = DISPLAY_WIDTH + 16;
s->y = (DISPLAY_HEIGHT / 2) - 31;
s->y = DISPLAY_CENTER_Y - 31;
s->graphics.dest = VramMalloc(gAnimsGotThroughZoneAndActNames[level][0]);
s->graphics.anim = gAnimsGotThroughZoneAndActNames[level][1];
s->variant = gAnimsGotThroughZoneAndActNames[level][2];
@@ -247,7 +247,7 @@ u16 CreateStageResults(u32 courseTime, u16 ringCount, u8 spRingCount)
for (i = 0; i < ARRAY_COUNT(outro->base.sprScores); i++) {
s = &outro->base.sprScores[i];
s->x = DISPLAY_WIDTH + 16;
s->y = ((DISPLAY_HEIGHT / 2) - 6) + i * 20;
s->y = (DISPLAY_CENTER_Y - 6) + i * 20;
s->graphics.dest = VramMalloc(sStageScoreBonusesTexts[i][0]);
s->graphics.anim = sStageScoreBonusesTexts[i][1];
s->variant = sStageScoreBonusesTexts[i][2];
@@ -502,9 +502,9 @@ void StageResults_AnimateSeparator(void)
if (counter <= 15) {
s->x = (16 - counter) * 15;
s->y = (DISPLAY_HEIGHT / 2) + 20;
s->y = DISPLAY_CENTER_Y + 20;
} else if (counter <= 23) {
s->y = (DISPLAY_HEIGHT / 2) + 20;
s->y = DISPLAY_CENTER_Y + 20;
} else if (counter <= 28) {
s->y -= 7;
}
@@ -558,7 +558,7 @@ static void AnimateResults(u16 frame)
u16 innerX = DISPLAY_WIDTH - ((counter - 39) * 12);
r4 = innerX;
} else {
r4 = (DISPLAY_WIDTH / 2) - 72;
r4 = DISPLAY_CENTER_X - 72;
}
s->x = r4 - frame;
DisplaySprite(s);
@@ -577,7 +577,7 @@ static void AnimateResults(u16 frame)
u16 innerX = DISPLAY_WIDTH - ((counter - 49) * 12);
r4 = innerX;
} else {
r4 = (DISPLAY_WIDTH / 2) - 72;
r4 = DISPLAY_CENTER_X - 72;
}
s->x = r4 - frame;
DisplaySprite(s);
@@ -596,7 +596,7 @@ static void AnimateResults(u16 frame)
u16 innerX = DISPLAY_WIDTH - ((counter - 59) * 12);
r4 = innerX;
} else {
r4 = (DISPLAY_WIDTH / 2) - 72;
r4 = DISPLAY_CENTER_X - 72;
}
s->x = r4 - frame;
@@ -621,7 +621,7 @@ void StageResults_AnimateTitle(void)
if (counter < 45) {
x = (u16)(DISPLAY_WIDTH - ((counter - 29) * 15));
} else {
x = (DISPLAY_WIDTH / 2) - 117;
x = DISPLAY_CENTER_X - 117;
}
{
+5 -5
View File
@@ -171,12 +171,12 @@ void GameStageStart(void)
gMPStageStartFrameCount = gFrameCount;
}
gCheckpointTime = ZONE_TIME_TO_INT(0, 0);
gCheckpointTime = TIME(0, 0);
if (gGameMode != GAME_MODE_MULTI_PLAYER_COLLECT_RINGS) {
gCourseTime = ZONE_TIME_TO_INT(0, 0);
gCourseTime = TIME(0, 0);
} else {
gCourseTime = ZONE_TIME_TO_INT(3, 0);
gCourseTime = TIME(3, 0);
}
CreateGameStage();
@@ -509,9 +509,9 @@ void GameStageStart(void)
gMPStageStartFrameCount = gFrameCount;
gCheckpointTime = ZONE_TIME_TO_INT(0, 0);
gCheckpointTime = TIME(0, 0);
gCourseTime = ZONE_TIME_TO_INT(3, 0);
gCourseTime = TIME(3, 0);
CreateGameStage();
}
+28 -36
View File
@@ -49,7 +49,7 @@ const u32 sOrdersOfMagnitude[6] = {
100000, 10000, 1000, 100, 10, 1,
};
const u8 gSecondsTable[60][2] = {
const u8 gSecondsRenderLUT[60][2] = {
{ 0, 0 }, { 0, 1 }, { 0, 2 }, { 0, 3 }, { 0, 4 }, { 0, 5 }, { 0, 6 }, { 0, 7 }, { 0, 8 }, { 0, 9 }, { 1, 0 }, { 1, 1 },
{ 1, 2 }, { 1, 3 }, { 1, 4 }, { 1, 5 }, { 1, 6 }, { 1, 7 }, { 1, 8 }, { 1, 9 }, { 2, 0 }, { 2, 1 }, { 2, 2 }, { 2, 3 },
{ 2, 4 }, { 2, 5 }, { 2, 6 }, { 2, 7 }, { 2, 8 }, { 2, 9 }, { 3, 0 }, { 3, 1 }, { 3, 2 }, { 3, 3 }, { 3, 4 }, { 3, 5 },
@@ -57,7 +57,7 @@ const u8 gSecondsTable[60][2] = {
{ 4, 8 }, { 4, 9 }, { 5, 0 }, { 5, 1 }, { 5, 2 }, { 5, 3 }, { 5, 4 }, { 5, 5 }, { 5, 6 }, { 5, 7 }, { 5, 8 }, { 5, 9 },
};
const u8 gMillisUnpackTable[60][2] = {
const u8 gMillisRenderLUT[60][2] = {
{ 0, 0 }, { 0, 2 }, { 0, 3 }, { 0, 5 }, { 0, 7 }, { 0, 8 }, { 1, 0 }, { 1, 2 }, { 1, 3 }, { 1, 5 }, { 1, 7 }, { 1, 8 },
{ 2, 0 }, { 2, 2 }, { 2, 3 }, { 2, 5 }, { 2, 7 }, { 2, 8 }, { 3, 0 }, { 3, 2 }, { 3, 3 }, { 3, 5 }, { 3, 7 }, { 3, 8 },
{ 4, 0 }, { 4, 2 }, { 4, 3 }, { 4, 5 }, { 4, 7 }, { 4, 8 }, { 5, 0 }, { 5, 2 }, { 5, 3 }, { 5, 5 }, { 5, 7 }, { 5, 8 },
@@ -65,26 +65,18 @@ const u8 gMillisUnpackTable[60][2] = {
{ 8, 0 }, { 8, 2 }, { 8, 3 }, { 8, 5 }, { 8, 7 }, { 8, 8 }, { 9, 0 }, { 9, 2 }, { 9, 3 }, { 9, 5 }, { 9, 7 }, { 9, 9 },
};
const s16 sZoneTimeSecondsTable[] = {
ZONE_TIME_TO_INT(0, 0), ZONE_TIME_TO_INT(0, 1), ZONE_TIME_TO_INT(0, 2), ZONE_TIME_TO_INT(0, 3), ZONE_TIME_TO_INT(0, 4),
ZONE_TIME_TO_INT(0, 5), ZONE_TIME_TO_INT(0, 6), ZONE_TIME_TO_INT(0, 7), ZONE_TIME_TO_INT(0, 8), ZONE_TIME_TO_INT(0, 9),
ZONE_TIME_TO_INT(0, 10), ZONE_TIME_TO_INT(0, 11), ZONE_TIME_TO_INT(0, 12), ZONE_TIME_TO_INT(0, 13), ZONE_TIME_TO_INT(0, 14),
ZONE_TIME_TO_INT(0, 15), ZONE_TIME_TO_INT(0, 16), ZONE_TIME_TO_INT(0, 17), ZONE_TIME_TO_INT(0, 18), ZONE_TIME_TO_INT(0, 19),
ZONE_TIME_TO_INT(0, 20), ZONE_TIME_TO_INT(0, 21), ZONE_TIME_TO_INT(0, 22), ZONE_TIME_TO_INT(0, 23), ZONE_TIME_TO_INT(0, 24),
ZONE_TIME_TO_INT(0, 25), ZONE_TIME_TO_INT(0, 26), ZONE_TIME_TO_INT(0, 27), ZONE_TIME_TO_INT(0, 28), ZONE_TIME_TO_INT(0, 29),
ZONE_TIME_TO_INT(0, 30), ZONE_TIME_TO_INT(0, 31), ZONE_TIME_TO_INT(0, 32), ZONE_TIME_TO_INT(0, 33), ZONE_TIME_TO_INT(0, 34),
ZONE_TIME_TO_INT(0, 35), ZONE_TIME_TO_INT(0, 36), ZONE_TIME_TO_INT(0, 37), ZONE_TIME_TO_INT(0, 38), ZONE_TIME_TO_INT(0, 39),
ZONE_TIME_TO_INT(0, 40), ZONE_TIME_TO_INT(0, 41), ZONE_TIME_TO_INT(0, 42), ZONE_TIME_TO_INT(0, 43), ZONE_TIME_TO_INT(0, 44),
ZONE_TIME_TO_INT(0, 45), ZONE_TIME_TO_INT(0, 46), ZONE_TIME_TO_INT(0, 47), ZONE_TIME_TO_INT(0, 48), ZONE_TIME_TO_INT(0, 49),
ZONE_TIME_TO_INT(0, 50), ZONE_TIME_TO_INT(0, 51), ZONE_TIME_TO_INT(0, 52), ZONE_TIME_TO_INT(0, 53), ZONE_TIME_TO_INT(0, 54),
ZONE_TIME_TO_INT(0, 55), ZONE_TIME_TO_INT(0, 56), ZONE_TIME_TO_INT(0, 57), ZONE_TIME_TO_INT(0, 58), ZONE_TIME_TO_INT(0, 59),
ZONE_TIME_TO_INT(1, 0),
static const s16 sSecondsLUT[] = {
TIME(0, 0), TIME(0, 1), TIME(0, 2), TIME(0, 3), TIME(0, 4), TIME(0, 5), TIME(0, 6), TIME(0, 7), TIME(0, 8),
TIME(0, 9), TIME(0, 10), TIME(0, 11), TIME(0, 12), TIME(0, 13), TIME(0, 14), TIME(0, 15), TIME(0, 16), TIME(0, 17),
TIME(0, 18), TIME(0, 19), TIME(0, 20), TIME(0, 21), TIME(0, 22), TIME(0, 23), TIME(0, 24), TIME(0, 25), TIME(0, 26),
TIME(0, 27), TIME(0, 28), TIME(0, 29), TIME(0, 30), TIME(0, 31), TIME(0, 32), TIME(0, 33), TIME(0, 34), TIME(0, 35),
TIME(0, 36), TIME(0, 37), TIME(0, 38), TIME(0, 39), TIME(0, 40), TIME(0, 41), TIME(0, 42), TIME(0, 43), TIME(0, 44),
TIME(0, 45), TIME(0, 46), TIME(0, 47), TIME(0, 48), TIME(0, 49), TIME(0, 50), TIME(0, 51), TIME(0, 52), TIME(0, 53),
TIME(0, 54), TIME(0, 55), TIME(0, 56), TIME(0, 57), TIME(0, 58), TIME(0, 59), TIME(1, 0),
};
const u16 sZoneTimeMinutesTable[] = {
ZONE_TIME_TO_INT(0, 0), ZONE_TIME_TO_INT(1, 0), ZONE_TIME_TO_INT(2, 0), ZONE_TIME_TO_INT(3, 0),
ZONE_TIME_TO_INT(4, 0), ZONE_TIME_TO_INT(5, 0), ZONE_TIME_TO_INT(6, 0), ZONE_TIME_TO_INT(7, 0),
ZONE_TIME_TO_INT(8, 0), ZONE_TIME_TO_INT(9, 0), ZONE_TIME_TO_INT(10, 0),
static const u16 sMinutesLUT[] = {
TIME(0, 0), TIME(1, 0), TIME(2, 0), TIME(3, 0), TIME(4, 0), TIME(5, 0), TIME(6, 0), TIME(7, 0), TIME(8, 0), TIME(9, 0), TIME(10, 0),
};
typedef struct {
@@ -283,7 +275,7 @@ void Task_StageUIMain(void)
}
}
if ((!gLoadedSaveGame->timeLimitDisabled) && (gCourseTime >= ZONE_TIME_TO_INT(9, 40)) && (Mod(gCourseTime, 60) == 0)) {
if ((!gLoadedSaveGame->timeLimitDisabled) && (gCourseTime >= TIME(9, 40)) && (Mod(gCourseTime, 60) == 0)) {
m4aSongNumStart(SE_TIMER);
}
@@ -441,7 +433,7 @@ void Task_StageUIMain(void)
if (oam != (OamData *)iwram_end)
#endif
{
UI_OAM_SET(oam, (DISPLAY_WIDTH / 2) - 21, 0, SPRITE_SHAPE(8x16), SPRITE_SIZE(8x16),
UI_OAM_SET(oam, DISPLAY_CENTER_X - 21, 0, SPRITE_SHAPE(8x16), SPRITE_SIZE(8x16),
(ui->digitsTileData[UI_ASCII_COLON] | palId));
}
@@ -451,55 +443,55 @@ void Task_StageUIMain(void)
if (oam != (OamData *)iwram_end)
#endif
{
UI_OAM_SET(oam, (DISPLAY_WIDTH / 2) + 3, 0, SPRITE_SHAPE(8x16), SPRITE_SIZE(8x16),
UI_OAM_SET(oam, DISPLAY_CENTER_X + 3, 0, SPRITE_SHAPE(8x16), SPRITE_SIZE(8x16),
(ui->digitsTileData[UI_ASCII_COLON] | palId));
}
seconds = Div(time, GBA_FRAMES_PER_SECOND);
minutes = Div(seconds, 60);
seconds -= sZoneTimeSecondsTable[minutes];
r1 = time - sZoneTimeSecondsTable[seconds];
r5 = r1 - sZoneTimeMinutesTable[minutes];
seconds -= sSecondsLUT[minutes];
r1 = time - sSecondsLUT[seconds];
r5 = r1 - sMinutesLUT[minutes];
tempTime = gCourseTime;
tempB = ZONE_TIME_TO_INT(9, 0);
tempB = TIME(9, 0);
palId = 0;
if (tempTime > tempB) {
palId = (-(gStageTime & 0x10)) >> 31;
}
// Milliseconds-L
sd = &digits[gMillisUnpackTable[r5][0]];
sd->x = ((DISPLAY_WIDTH / 2) + 16) + 0 * 8;
sd = &digits[gMillisRenderLUT[r5][0]];
sd->x = (DISPLAY_CENTER_X + 16) + 0 * 8;
sd->y = 16;
sd->palId = palId;
DisplaySprite(sd);
// Milliseconds-R
sd = &digits[gMillisUnpackTable[r5][1]];
sd->x = ((DISPLAY_WIDTH / 2) + 16) + 1 * 8;
sd = &digits[gMillisRenderLUT[r5][1]];
sd->x = (DISPLAY_CENTER_X + 16) + 1 * 8;
sd->y = 16;
sd->palId = palId;
DisplaySprite(sd);
// Seconds-L
sd = &digits[gSecondsTable[seconds][0]];
sd->x = ((DISPLAY_WIDTH / 2) - 8) + 0 * 8;
sd = &digits[gSecondsRenderLUT[seconds][0]];
sd->x = (DISPLAY_CENTER_X - 8) + 0 * 8;
sd->y = 16;
sd->palId = palId;
DisplaySprite(sd);
// Seconds-R
sd = &digits[gSecondsTable[seconds][1]];
sd->x = ((DISPLAY_WIDTH / 2) - 8) + 1 * 8;
sd = &digits[gSecondsRenderLUT[seconds][1]];
sd->x = (DISPLAY_CENTER_X - 8) + 1 * 8;
sd->y = 16;
sd->palId = palId;
DisplaySprite(sd);
// Minutes
sd = &digits[minutes];
sd->x = (DISPLAY_WIDTH / 2) - 24;
sd->x = DISPLAY_CENTER_X - 24;
sd->y = 16;
sd->palId = palId;
DisplaySprite(sd);
+2 -2
View File
@@ -96,7 +96,7 @@ void sub_8088944(struct TimeAttackLobbyScreen *lobbyScreen)
s->graphics.anim = gUnknown_080E04D4[lang * 5 + i].anim;
s->variant = gUnknown_080E04D4[lang * 5 + i].variant;
s->prevVariant = -1;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = i * 16 + 24;
if (i > 2) {
s->y -= 16;
@@ -135,7 +135,7 @@ void sub_8088944(struct TimeAttackLobbyScreen *lobbyScreen)
s->graphics.anim = gUnknown_080E0474[gSelectedCharacter].anim;
s->variant = gUnknown_080E0474[gSelectedCharacter].variant;
s->prevVariant = -1;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
s->y = (DISPLAY_HEIGHT * (13. / 16.));
s->oamFlags = SPRITE_OAM_ORDER(4);
s->graphics.size = 0;
+1 -1
View File
@@ -181,7 +181,7 @@ void CreateTimeAttackModeSelectionScreen(void)
s->graphics.anim = gUnknown_080E0384[TextElementOffset(lang, 5, 2)].anim;
s->variant = gUnknown_080E0384[TextElementOffset(lang, 5, 2)].variant;
s->prevVariant = -1;
s->x = DISPLAY_WIDTH / 2 - 112;
s->x = DISPLAY_CENTER_X - 112;
s->y = DISPLAY_HEIGHT - 57;
s->oamFlags = SPRITE_OAM_ORDER(4);
s->graphics.size = 0;
+17 -17
View File
@@ -74,8 +74,8 @@ u32 CreateTimeAttackResults(u32 finishTime)
if (finishTime < MAX_COURSE_TIME) {
s16 millisIndex = finishTime % 60;
resultsCutScene->base.timeBonusScore = finishTime - millisIndex;
millis = gMillisUnpackTable[millisIndex][0] * 10;
millis += gMillisUnpackTable[millisIndex][1];
millis = gMillisRenderLUT[millisIndex][0] * 10;
millis += gMillisRenderLUT[millisIndex][1];
seconds = resultsCutScene->base.timeBonusScore / 60;
minutes = seconds / 60;
seconds += minutes * -60;
@@ -93,8 +93,8 @@ u32 CreateTimeAttackResults(u32 finishTime)
for (i = 0; i < 7; i++) {
s = &resultsCutScene->digits[i];
s->x = i * 14 + ((DISPLAY_WIDTH / 2) - 48);
s->y = (DISPLAY_HEIGHT / 2) + 8;
s->x = i * 14 + (DISPLAY_CENTER_X - 48);
s->y = DISPLAY_CENTER_Y + 8;
s->graphics.dest = VramMalloc(4);
s->graphics.anim = SA2_ANIM_TIME_ATTACK_DIGITS;
s->variant = SA2_ANIM_VARIANT_TA_DIGITS_0;
@@ -125,7 +125,7 @@ u32 CreateTimeAttackResults(u32 finishTime)
s = &resultsCutScene->base.separator;
s->x = DISPLAY_WIDTH + 16;
s->y = (DISPLAY_HEIGHT / 2);
s->y = DISPLAY_CENTER_Y;
s->graphics.dest = VramMalloc(4);
s->graphics.anim = SA2_ANIM_TA_WHITE_BAR;
s->variant = 0;
@@ -142,7 +142,7 @@ u32 CreateTimeAttackResults(u32 finishTime)
s = &resultsCutScene->base.title[0];
s->x = DISPLAY_WIDTH + 16;
s->y = (DISPLAY_HEIGHT / 2) - 39;
s->y = DISPLAY_CENTER_Y - 39;
s->graphics.dest = VramMalloc(gAnimsGotThroughCharacterNames[gSelectedCharacter][0]);
s->graphics.anim = gAnimsGotThroughCharacterNames[gSelectedCharacter][1];
s->variant = gAnimsGotThroughCharacterNames[gSelectedCharacter][2];
@@ -161,7 +161,7 @@ u32 CreateTimeAttackResults(u32 finishTime)
s = &resultsCutScene->base.title[1];
s->x = DISPLAY_WIDTH + 16;
s->y = (DISPLAY_HEIGHT / 2) - 31;
s->y = DISPLAY_CENTER_Y - 31;
s->graphics.dest = VramMalloc(gStageResultsHeadlineTexts[isBossLevel][0]);
s->graphics.anim = gStageResultsHeadlineTexts[isBossLevel][1];
s->variant = gStageResultsHeadlineTexts[isBossLevel][2];
@@ -184,7 +184,7 @@ u32 CreateTimeAttackResults(u32 finishTime)
}
s = &resultsCutScene->base.title[2];
s->x = DISPLAY_WIDTH + 16;
s->y = (DISPLAY_HEIGHT / 2) - 31;
s->y = DISPLAY_CENTER_Y - 31;
s->graphics.dest = VramMalloc(gAnimsGotThroughZoneAndActNames[level][0]);
s->graphics.anim = gAnimsGotThroughZoneAndActNames[level][1];
s->variant = gAnimsGotThroughZoneAndActNames[level][2];
@@ -200,8 +200,8 @@ u32 CreateTimeAttackResults(u32 finishTime)
UpdateSpriteAnimation(s);
s = &resultsCutScene->base.sprScores[0];
s->x = (DISPLAY_WIDTH / 2) - 80;
s->y = (DISPLAY_HEIGHT / 2) + 10;
s->x = DISPLAY_CENTER_X - 80;
s->y = DISPLAY_CENTER_Y + 10;
s->graphics.dest = VramMalloc(8);
s->graphics.anim = SA2_ANIM_TA_RECORD;
s->variant = SA2_ANIM_VARIANT_TA_TIME;
@@ -217,8 +217,8 @@ u32 CreateTimeAttackResults(u32 finishTime)
UpdateSpriteAnimation(s);
s = &resultsCutScene->base.sprScores[1];
s->x = (DISPLAY_WIDTH / 2);
s->y = (DISPLAY_HEIGHT / 2) + 40;
s->x = DISPLAY_CENTER_X;
s->y = DISPLAY_CENTER_Y + 40;
s->graphics.dest = VramMalloc(16);
s->graphics.anim = SA2_ANIM_TIME_ATTACK_DIGITS;
if (resultsCutScene->rank != 0) {
@@ -239,13 +239,13 @@ u32 CreateTimeAttackResults(u32 finishTime)
resultsCutScene->transform.qScaleX = 0;
resultsCutScene->transform.qScaleY = +Q(1);
resultsCutScene->transform.x = (DISPLAY_WIDTH / 2);
resultsCutScene->transform.y = (DISPLAY_HEIGHT / 2) + 40;
resultsCutScene->transform.x = DISPLAY_CENTER_X;
resultsCutScene->transform.y = DISPLAY_CENTER_Y + 40;
resultsCutScene->transform.rotation = 0;
s = &resultsCutScene->base.sprScores[2];
s->x = (DISPLAY_WIDTH / 2);
s->y = (DISPLAY_HEIGHT / 2) + 68;
s->x = DISPLAY_CENTER_X;
s->y = DISPLAY_CENTER_Y + 68;
s->graphics.dest = VramMalloc(22);
s->graphics.anim = SA2_ANIM_TA_RECORD;
s->variant = 0;
@@ -316,7 +316,7 @@ static void AnimateResults(void)
// TIME text
s = &resultsCutScene->base.sprScores[0];
if ((frame - 90) <= 10) {
s->x = (100 - frame) * 16 + ((DISPLAY_WIDTH / 2) - 80);
s->x = (100 - frame) * 16 + (DISPLAY_CENTER_X - 80);
}
DisplaySprite(s);
}
+10 -10
View File
@@ -568,8 +568,8 @@ static void InitTitleScreenUI(TitleScreen *titleScreen)
s->graphics.anim = gPressStartTiles[language].anim;
s->variant = gPressStartTiles[language].variant;
s->prevVariant = -1;
s->x = (DISPLAY_WIDTH / 2);
s->y = (DISPLAY_HEIGHT / 2) + 30;
s->x = DISPLAY_CENTER_X;
s->y = DISPLAY_CENTER_Y + 30;
s->graphics.size = 0;
s->oamFlags = SPRITE_OAM_ORDER(3);
s->qAnimDelay = 0;
@@ -587,19 +587,19 @@ static void InitTitleScreenUI(TitleScreen *titleScreen)
s->graphics.anim = sMenuTiles[MenuTextIdx(language, menuItemId)].anim;
s->variant = sMenuTiles[MenuTextIdx(language, menuItemId)].variant;
s->prevVariant = -1;
s->x = (DISPLAY_WIDTH / 2);
s->x = DISPLAY_CENTER_X;
// Generate menu item y positions
// position * lineHeight + topPadding
if (menuItemId < SinglePlayerMenuItem(0)) {
// PlayModeMenu positions
s->y = (PlayModeMenuIndex(menuItemId) * 18) + (DISPLAY_HEIGHT / 2) + 16;
s->y = (PlayModeMenuIndex(menuItemId) * 18) + DISPLAY_CENTER_Y + 16;
} else if (gLoadedSaveGame->chaoGardenUnlocked) {
// SinglePlayerMenu positions if we have the chao garden available
s->y = (SinglePlayerMenuIndex(menuItemId) * 16) + (DISPLAY_HEIGHT / 2) + 16;
s->y = (SinglePlayerMenuIndex(menuItemId) * 16) + DISPLAY_CENTER_Y + 16;
} else {
// SinglePlayerMenu positions if we don't have the chao garden
s->y = (SinglePlayerMenuIndex(menuItemId) * 18) + (DISPLAY_HEIGHT / 2) + 20;
s->y = (SinglePlayerMenuIndex(menuItemId) * 18) + DISPLAY_CENTER_Y + 20;
}
s->graphics.size = 0;
@@ -616,8 +616,8 @@ static void InitTitleScreenUI(TitleScreen *titleScreen)
s->graphics.anim = sMenuTiles[ARRAY_COUNT(sMenuTiles) - 1].anim;
s->variant = sMenuTiles[ARRAY_COUNT(sMenuTiles) - 1].variant;
s->prevVariant = -1;
s->x = (DISPLAY_WIDTH / 2);
s->y = (DISPLAY_HEIGHT / 2);
s->x = DISPLAY_CENTER_X;
s->y = DISPLAY_CENTER_Y;
s->graphics.size = 0;
s->oamFlags = SPRITE_OAM_ORDER(30);
s->qAnimDelay = 0;
@@ -1080,7 +1080,7 @@ static void Task_PlayModeMenuMain(void)
m4aSongNumStart(SE_SELECT);
if (titleScreen->menuCursor == PlayModeMenuIndex(MENU_ITEM_SINGLE_PLAYER)) {
titleScreen->menuItems[MENU_ITEM_MULTI_PLAYER].x = (DISPLAY_WIDTH / 2);
titleScreen->menuItems[MENU_ITEM_MULTI_PLAYER].x = DISPLAY_CENTER_X;
CreateMenuItemTransition(&titleScreen->menuItems[MENU_ITEM_MULTI_PLAYER], TRANSITION_OUT);
titleScreen->animFrame = SinglePlayerMenuIndex(MENU_ITEM_GAME_START);
@@ -1904,7 +1904,7 @@ static void Task_StartTitleScreenDemo(void)
static void ShowGameLogo(TitleScreen *_)
{
// angle, width, height, right, bottom, left, top
sub_8003EE4(0, 0x100, 0x100, 0, 0, (DISPLAY_WIDTH / 2) - 100, 8, gBgAffineRegs);
sub_8003EE4(0, 0x100, 0x100, 0, 0, DISPLAY_CENTER_X - 100, 8, gBgAffineRegs);
}
static void BirdAnimEnd(void)