mirror of
https://github.com/SAT-R/sa2.git
synced 2026-10-28 09:43:38 +00:00
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:
1 parent
7fc5ba8f08
commit
6c2716fd53
53 files changed
+371
-327
No files matched your search
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
@@ -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 = ¬if->s;
|
||||
|
||||
notif->framesVisible = ZONE_TIME_TO_INT(0, 2);
|
||||
notif->framesVisible = TIME(0, 2);
|
||||
|
||||
SPRITE_INIT_WITHOUT_ANIM_OR_VRAM(s, 1, 1, 0);
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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]++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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); }
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user