mirror of
https://github.com/YohannDR/mzm.git
synced 2024-10-06 18:13:20 +00:00
Some stuff
This commit is contained in:
parent
b71a739093
commit
5ed2607da9
@ -1,7 +1,16 @@
|
||||
#define ESCAPE_NONE 0
|
||||
#define ESCAPE_MOTHER_BRAIN 1
|
||||
#define ESCAPE_MECHA_RIDLEY 2
|
||||
#ifndef ESCAPE_CONSTANTS_H
|
||||
#define ESCAPE_CONSTANTS_H
|
||||
|
||||
#define ESCAPE_STATUS_NONE 0
|
||||
#define ESCAPE_STATUS_HAPPENNING 1
|
||||
#define ESCAPE_STATUS_FAILED 2
|
||||
enum Escape {
|
||||
ESCAPE_NONE,
|
||||
ESCAPE_MOTHER_BRAIN,
|
||||
ESCAPE_MECHA_RIDLEY,
|
||||
};
|
||||
|
||||
enum EscapeStatus {
|
||||
ESCAPE_STATUS_NONE,
|
||||
ESCAPE_STATUS_HAPPENNING,
|
||||
ESCAPE_STATUS_FAILED
|
||||
};
|
||||
|
||||
#endif /* ESCAPE_CONSTANTS_H */
|
||||
|
@ -1,6 +1,6 @@
|
||||
#define INTRO_TEXT_ACTION_NONE 0
|
||||
#define INTRO_TEXT_ACTION_START 1
|
||||
#define INTRO_TEXT_ACTION_SPACE 2
|
||||
#define INTRO_TEXT_ACTION_UNKNOWN 3
|
||||
#define INTRO_TEXT_ACTION_SKIP_CHARACTER 3
|
||||
#define INTRO_TEXT_ACTION_NEW_LINE 4
|
||||
#define INTRO_TEXT_ACTION_END 5
|
@ -5,14 +5,16 @@
|
||||
|
||||
// Defines
|
||||
|
||||
#define HIGHLIGHT_STATUS_NOT_HIGHLIGHTED 0
|
||||
#define HIGHLIGHT_STATUS_SELECTED 1
|
||||
#define HIGHLIGHT_STATUS_HIGHLIGHTED 2
|
||||
enum HudHighlightStatus {
|
||||
HIGHLIGHT_STATUS_NOT_HIGHLIGHTED,
|
||||
HIGHLIGHT_STATUS_SELECTED,
|
||||
HIGHLIGHT_STATUS_HIGHLIGHTED
|
||||
};
|
||||
|
||||
// Functions
|
||||
|
||||
void HUDUpdateOAM(void);
|
||||
void HUDUpdateEnergyTanks(u8* pDst, const u8* pSrcNormal, const u8* pSrcRefill, u8 nbrTanks, u8 refillStage);
|
||||
void HudUpdateOam(void);
|
||||
void HudUpdateEnergyTanks(u8* pDst, const u8* pSrcNormal, const u8* pSrcRefill, u8 nbrTanks, u8 refillStage);
|
||||
void HudDrawEnergy(u8 fileNumber);
|
||||
void HudDrawMissileDigits(u16 hundreds, u16 tens, u16 ones, u16 highlightStatus);
|
||||
void HudDrawSuperMissileDigits(u16 tens, u16 ones, u16 highlightStatus);
|
||||
@ -20,7 +22,7 @@ void HudDrawPowerBombDigits(u16 tens, u16 ones, u16 highlightStatus);
|
||||
void HudDrawMissiles(u8 updateHighlight);
|
||||
void HudDrawPowerBomb(u8 updateHighlight);
|
||||
void HudDrawSuperMissiles(u8 updateHighlight);
|
||||
void HUDUpdateGfx(void);
|
||||
void HudUpdateGfx(void);
|
||||
void HudDrawSuitless(void);
|
||||
void HudDraw(void);
|
||||
|
||||
|
@ -6,10 +6,10 @@
|
||||
void IntroVBlank(void);
|
||||
void IntroFuzzVBlank(void);
|
||||
void IntroInit(void);
|
||||
void IntroTextProcessOAM(void);
|
||||
void IntroTextProcessOam(void);
|
||||
u8 IntroProcessText(u8 action, u16 indent);
|
||||
u8 IntroEmergencyOrder(void);
|
||||
void IntroShipFlyingTowardsCameraProcessOAM(void);
|
||||
void IntroShipFlyingTowardsCameraProcessOam(void);
|
||||
u8 IntroShipFlyingTowardsCamera(void);
|
||||
u8 IntroSamusInHerShip(void);
|
||||
u8 IntroExterminate(void);
|
||||
|
@ -19,6 +19,10 @@
|
||||
#define OAM_OBJ_MODE_SEMI_TRANSPARENT 1
|
||||
#define OAM_OBJ_MODE_WINDOW 2
|
||||
|
||||
#define OAM_SHAPE_SQUARE 0
|
||||
#define OAM_SHAPE_HORIZONTAL 1
|
||||
#define OAM_SHAPE_VERTICAL 2
|
||||
|
||||
// Attribute 1
|
||||
|
||||
#define OBJ_X_FLIP 0x1000
|
||||
@ -33,6 +37,21 @@
|
||||
#define OBJ_SIZE_64x32 0xC000
|
||||
#define OBJ_SIZE_32x64 0xC000
|
||||
|
||||
#define OAM_SIZE_S_8x8 0
|
||||
#define OAM_SIZE_S_16x16 1
|
||||
#define OAM_SIZE_S_32x32 2
|
||||
#define OAM_SIZE_S_64x64 3
|
||||
|
||||
#define OAM_SIZE_H_16x8 0
|
||||
#define OAM_SIZE_H_32x8 1
|
||||
#define OAM_SIZE_H_32x16 2
|
||||
#define OAM_SIZE_H_64x32 3
|
||||
|
||||
#define OAM_SIZE_V_8x16 0
|
||||
#define OAM_SIZE_V_8x32 1
|
||||
#define OAM_SIZE_V_16x32 2
|
||||
#define OAM_SIZE_V_32x64 3
|
||||
|
||||
// Attribute 2
|
||||
|
||||
#define OBJ_SPRITE_OAM 0x8000 // Not sure what this is, sprite OAM doesn't work without it
|
||||
|
@ -9,7 +9,7 @@ struct IntroData {
|
||||
u8 stage; // 0
|
||||
u8 currentCharacter; // 1
|
||||
u8 characterPalette; // 2
|
||||
u8 nextCharacter; // 3
|
||||
u8 finalCharacter; // 3
|
||||
|
||||
s16 charDrawerX; // 4
|
||||
u16 charDrawerY; // 6
|
||||
|
@ -59,6 +59,8 @@ typedef volatile signed int vs32;
|
||||
|
||||
// Target FPS
|
||||
#define FRAMES_PER_SECOND 60
|
||||
// The amount of frames the games considers 1 second internally (used by detailed timers)
|
||||
#define SIMULATED_FPS 64
|
||||
// Amount of time that happens in one frame
|
||||
#define DELTA_TIME 1
|
||||
// Converts a floating point value of seconds to an amount of frames (CONVERT_SECONDS(1.f) == FRAMES_PER_SECOND)
|
||||
|
@ -749,7 +749,9 @@ u8 BgClipCheckOpeningHatch(u16 xPosition, u16 yPosition)
|
||||
gHatchData[i].flashingTimer = 1; // Set flashing
|
||||
}
|
||||
else
|
||||
{
|
||||
gHatchData[i].hits = 0; // Locked, reset
|
||||
}
|
||||
|
||||
gHatchData[i].hitTimer = 0;
|
||||
break;
|
||||
|
@ -291,129 +291,129 @@ const u8 sArray_45fd30[3][4] = {
|
||||
|
||||
const u8 sIntroEmergencyOrderActions[16] = {
|
||||
INTRO_TEXT_ACTION_START,
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // M
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // R
|
||||
INTRO_TEXT_ACTION_NONE, // G
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // N
|
||||
INTRO_TEXT_ACTION_NONE, // C
|
||||
INTRO_TEXT_ACTION_NONE, // Y
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // O
|
||||
INTRO_TEXT_ACTION_NONE, // R
|
||||
INTRO_TEXT_ACTION_NONE, // D
|
||||
INTRO_TEXT_ACTION_UNKNOWN, // E
|
||||
INTRO_TEXT_ACTION_END, // R
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // M
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // R
|
||||
INTRO_TEXT_ACTION_NONE, // G
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // N
|
||||
INTRO_TEXT_ACTION_NONE, // C
|
||||
INTRO_TEXT_ACTION_NONE, // Y
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // O
|
||||
INTRO_TEXT_ACTION_NONE, // R
|
||||
INTRO_TEXT_ACTION_NONE, // D
|
||||
INTRO_TEXT_ACTION_SKIP_CHARACTER, // E
|
||||
INTRO_TEXT_ACTION_END, // R
|
||||
};
|
||||
|
||||
const u8 sIntroExterminateAllActions[52] = {
|
||||
INTRO_TEXT_ACTION_START,
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // X
|
||||
INTRO_TEXT_ACTION_NONE, // T
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // R
|
||||
INTRO_TEXT_ACTION_NONE, // M
|
||||
INTRO_TEXT_ACTION_NONE, // I
|
||||
INTRO_TEXT_ACTION_NONE, // N
|
||||
INTRO_TEXT_ACTION_NONE, // A
|
||||
INTRO_TEXT_ACTION_NONE, // T
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // A
|
||||
INTRO_TEXT_ACTION_NONE, // L
|
||||
INTRO_TEXT_ACTION_NONE, // L
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // M
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // T
|
||||
INTRO_TEXT_ACTION_NONE, // R
|
||||
INTRO_TEXT_ACTION_NONE, // O
|
||||
INTRO_TEXT_ACTION_UNKNOWN, // I
|
||||
INTRO_TEXT_ACTION_NEW_LINE, // D
|
||||
INTRO_TEXT_ACTION_NONE, // O
|
||||
INTRO_TEXT_ACTION_NONE, // R
|
||||
INTRO_TEXT_ACTION_NONE, // G
|
||||
INTRO_TEXT_ACTION_NONE, // A
|
||||
INTRO_TEXT_ACTION_NONE, // N
|
||||
INTRO_TEXT_ACTION_NONE, // I
|
||||
INTRO_TEXT_ACTION_NONE, // S
|
||||
INTRO_TEXT_ACTION_NONE, // M
|
||||
INTRO_TEXT_ACTION_NONE, // S
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // O
|
||||
INTRO_TEXT_ACTION_NONE, // N
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // P
|
||||
INTRO_TEXT_ACTION_NONE, // L
|
||||
INTRO_TEXT_ACTION_NONE, // A
|
||||
INTRO_TEXT_ACTION_NONE, // N
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // T
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // Z
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // B
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // S
|
||||
INTRO_TEXT_ACTION_NONE, // .
|
||||
INTRO_TEXT_ACTION_UNKNOWN, // .
|
||||
INTRO_TEXT_ACTION_END, // .
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // X
|
||||
INTRO_TEXT_ACTION_NONE, // T
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // R
|
||||
INTRO_TEXT_ACTION_NONE, // M
|
||||
INTRO_TEXT_ACTION_NONE, // I
|
||||
INTRO_TEXT_ACTION_NONE, // N
|
||||
INTRO_TEXT_ACTION_NONE, // A
|
||||
INTRO_TEXT_ACTION_NONE, // T
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // A
|
||||
INTRO_TEXT_ACTION_NONE, // L
|
||||
INTRO_TEXT_ACTION_NONE, // L
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // M
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // T
|
||||
INTRO_TEXT_ACTION_NONE, // R
|
||||
INTRO_TEXT_ACTION_NONE, // O
|
||||
INTRO_TEXT_ACTION_SKIP_CHARACTER, // I
|
||||
INTRO_TEXT_ACTION_NEW_LINE, // D
|
||||
INTRO_TEXT_ACTION_NONE, // O
|
||||
INTRO_TEXT_ACTION_NONE, // R
|
||||
INTRO_TEXT_ACTION_NONE, // G
|
||||
INTRO_TEXT_ACTION_NONE, // A
|
||||
INTRO_TEXT_ACTION_NONE, // N
|
||||
INTRO_TEXT_ACTION_NONE, // I
|
||||
INTRO_TEXT_ACTION_NONE, // S
|
||||
INTRO_TEXT_ACTION_NONE, // M
|
||||
INTRO_TEXT_ACTION_NONE, // S
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // O
|
||||
INTRO_TEXT_ACTION_NONE, // N
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // P
|
||||
INTRO_TEXT_ACTION_NONE, // L
|
||||
INTRO_TEXT_ACTION_NONE, // A
|
||||
INTRO_TEXT_ACTION_NONE, // N
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // T
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // Z
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // B
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // S
|
||||
INTRO_TEXT_ACTION_NONE, // .
|
||||
INTRO_TEXT_ACTION_SKIP_CHARACTER, // .
|
||||
INTRO_TEXT_ACTION_END, // .
|
||||
};
|
||||
|
||||
const u8 sIntroDefeatTheActions[50] = {
|
||||
INTRO_TEXT_ACTION_START,
|
||||
INTRO_TEXT_ACTION_NONE, // A
|
||||
INTRO_TEXT_ACTION_NONE, // N
|
||||
INTRO_TEXT_ACTION_NONE, // D
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // D
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // F
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // A
|
||||
INTRO_TEXT_ACTION_NONE, // T
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // T
|
||||
INTRO_TEXT_ACTION_NONE, // H
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // M
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // C
|
||||
INTRO_TEXT_ACTION_NONE, // H
|
||||
INTRO_TEXT_ACTION_NONE, // A
|
||||
INTRO_TEXT_ACTION_NONE, // N
|
||||
INTRO_TEXT_ACTION_NONE, // I
|
||||
INTRO_TEXT_ACTION_NONE, // C
|
||||
INTRO_TEXT_ACTION_UNKNOWN, // A
|
||||
INTRO_TEXT_ACTION_NEW_LINE, // L
|
||||
INTRO_TEXT_ACTION_NONE, // L
|
||||
INTRO_TEXT_ACTION_NONE, // I
|
||||
INTRO_TEXT_ACTION_NONE, // F
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // -
|
||||
INTRO_TEXT_ACTION_NONE, // F
|
||||
INTRO_TEXT_ACTION_NONE, // O
|
||||
INTRO_TEXT_ACTION_NONE, // R
|
||||
INTRO_TEXT_ACTION_NONE, // M
|
||||
INTRO_TEXT_ACTION_NONE, // ,
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // M
|
||||
INTRO_TEXT_ACTION_NONE, // O
|
||||
INTRO_TEXT_ACTION_NONE, // T
|
||||
INTRO_TEXT_ACTION_NONE, // H
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // R
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // B
|
||||
INTRO_TEXT_ACTION_NONE, // R
|
||||
INTRO_TEXT_ACTION_NONE, // A
|
||||
INTRO_TEXT_ACTION_NONE, // I
|
||||
INTRO_TEXT_ACTION_UNKNOWN, // N
|
||||
INTRO_TEXT_ACTION_END, // .
|
||||
INTRO_TEXT_ACTION_NONE, // A
|
||||
INTRO_TEXT_ACTION_NONE, // N
|
||||
INTRO_TEXT_ACTION_NONE, // D
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // D
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // F
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // A
|
||||
INTRO_TEXT_ACTION_NONE, // T
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // T
|
||||
INTRO_TEXT_ACTION_NONE, // H
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // M
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // C
|
||||
INTRO_TEXT_ACTION_NONE, // H
|
||||
INTRO_TEXT_ACTION_NONE, // A
|
||||
INTRO_TEXT_ACTION_NONE, // N
|
||||
INTRO_TEXT_ACTION_NONE, // I
|
||||
INTRO_TEXT_ACTION_NONE, // C
|
||||
INTRO_TEXT_ACTION_SKIP_CHARACTER, // A
|
||||
INTRO_TEXT_ACTION_NEW_LINE, //
|
||||
INTRO_TEXT_ACTION_NONE, // L
|
||||
INTRO_TEXT_ACTION_NONE, // I
|
||||
INTRO_TEXT_ACTION_NONE, // F
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // -
|
||||
INTRO_TEXT_ACTION_NONE, // F
|
||||
INTRO_TEXT_ACTION_NONE, // O
|
||||
INTRO_TEXT_ACTION_NONE, // R
|
||||
INTRO_TEXT_ACTION_NONE, // M
|
||||
INTRO_TEXT_ACTION_NONE, // ,
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // M
|
||||
INTRO_TEXT_ACTION_NONE, // O
|
||||
INTRO_TEXT_ACTION_NONE, // T
|
||||
INTRO_TEXT_ACTION_NONE, // H
|
||||
INTRO_TEXT_ACTION_NONE, // E
|
||||
INTRO_TEXT_ACTION_NONE, // R
|
||||
INTRO_TEXT_ACTION_SPACE, //
|
||||
INTRO_TEXT_ACTION_NONE, // B
|
||||
INTRO_TEXT_ACTION_NONE, // R
|
||||
INTRO_TEXT_ACTION_NONE, // A
|
||||
INTRO_TEXT_ACTION_NONE, // I
|
||||
INTRO_TEXT_ACTION_SKIP_CHARACTER, // N
|
||||
INTRO_TEXT_ACTION_END, // .
|
||||
};
|
||||
|
||||
|
||||
|
21
src/escape.c
21
src/escape.c
@ -47,19 +47,20 @@ u8 EscapeDetermineTimer(void)
|
||||
*/
|
||||
u8 EscapeCheckHasEscaped(void)
|
||||
{
|
||||
|
||||
if (EventFunction(EVENT_ACTION_CHECKING, EVENT_MECHA_RIDLEY_KILLED))
|
||||
{
|
||||
// Chozodia escape
|
||||
if (EventFunction(EVENT_ACTION_CHECKING, EVENT_ESCAPED_CHOZODIA))
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
else if (EventFunction(EVENT_ACTION_CHECKING, EVENT_MOTHER_BRAIN_KILLED))
|
||||
{
|
||||
if (!EventFunction(EVENT_ACTION_CHECKING, EVENT_MOTHER_BRAIN_KILLED))
|
||||
return FALSE;
|
||||
|
||||
// Tourian escape
|
||||
if (EventFunction(EVENT_ACTION_CHECKING, EVENT_ESCAPED_ZEBES))
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -90,7 +91,7 @@ void EscapeCheckReloadGraphics(void)
|
||||
{
|
||||
if (EscapeDetermineTimer() != ESCAPE_NONE)
|
||||
{
|
||||
DMA_SET(3, sEscapeTimerDigitsGfx, VRAM_BASE + 0x17800, C_32_2_16(DMA_ENABLE, sizeof(sEscapeTimerDigitsGfx) / 2));
|
||||
DMA_SET(3, sEscapeTimerDigitsGfx, VRAM_OBJ + 0x7800, C_32_2_16(DMA_ENABLE, sizeof(sEscapeTimerDigitsGfx) / 2));
|
||||
}
|
||||
}
|
||||
|
||||
@ -100,8 +101,8 @@ void EscapeCheckReloadGraphics(void)
|
||||
*/
|
||||
void EscapeStart(void)
|
||||
{
|
||||
DMA_SET(3, sEscapeTimerDigitsGfx, VRAM_BASE + 0x17800, C_32_2_16(DMA_ENABLE, 0xB0));
|
||||
DMA_SET(3, sEscapeTimerDigitsGfx + 1024, VRAM_BASE + 0x17c00, C_32_2_16(DMA_ENABLE, 0xB0));
|
||||
DMA_SET(3, sEscapeTimerDigitsGfx, VRAM_OBJ + 0x7800, C_32_2_16(DMA_ENABLE, 0xB0));
|
||||
DMA_SET(3, sEscapeTimerDigitsGfx + 1024, VRAM_OBJ + 0x7C00, C_32_2_16(DMA_ENABLE, 0xB0));
|
||||
|
||||
// Setup oam
|
||||
DMA_SET(3, sParticleEscapeOam, gParticleEscapeOamFrames, C_32_2_16(DMA_ENABLE, ARRAY_SIZE(gParticleEscapeOamFrames)));
|
||||
@ -176,9 +177,9 @@ void EscaepUpdateTimer(void)
|
||||
if (gPreventMovementTimer != 0)
|
||||
return;
|
||||
|
||||
counter = ++gEscapeTimerCounter;
|
||||
counter = APPLY_DELTA_TIME_INC(gEscapeTimerCounter);
|
||||
|
||||
if (counter % 2)
|
||||
if (counter % CONVERT_SECONDS(1.f / 30))
|
||||
{
|
||||
if (gEscapeTimerDigits.hundredths > 1)
|
||||
{
|
||||
@ -211,7 +212,7 @@ void EscaepUpdateTimer(void)
|
||||
}
|
||||
}
|
||||
|
||||
if (counter % 64 == 0)
|
||||
if (counter % SIMULATED_FPS == 0)
|
||||
{
|
||||
gEscapeTimerDigits.hundredths = 99 / 10;
|
||||
gEscapeTimerDigits.tenths = 99 % 10;
|
||||
|
397
src/hud.c
397
src/hud.c
@ -13,143 +13,166 @@
|
||||
#include "structs/samus.h"
|
||||
#include "structs/game_state.h"
|
||||
|
||||
#define HUD_HEALTH_BAR_Y (SUB_PIXEL_TO_PIXEL(PIXEL_SIZE * 2))
|
||||
#define HUD_HEALTH_BAR_X (SUB_PIXEL_TO_PIXEL(0))
|
||||
|
||||
#define HUD_CHARGE_BAR_Y (SUB_PIXEL_TO_PIXEL(HALF_BLOCK_SIZE + EIGHTH_BLOCK_SIZE))
|
||||
#define HUD_CHARGE_BAR_X (SUB_PIXEL_TO_PIXEL(PIXEL_SIZE))
|
||||
|
||||
#define HUD_MISSILES_Y (SUB_PIXEL_TO_PIXEL(PIXEL_SIZE * 2))
|
||||
#define HUD_MISSILES_X (SUB_PIXEL_TO_PIXEL(BLOCK_SIZE * 3 + QUARTER_BLOCK_SIZE + EIGHTH_BLOCK_SIZE))
|
||||
|
||||
#define HUD_SUPER_MISSILES_Y (SUB_PIXEL_TO_PIXEL(PIXEL_SIZE * 2))
|
||||
#define HUD_SUPER_MISSILES_X (SUB_PIXEL_TO_PIXEL(BLOCK_SIZE * 5))
|
||||
|
||||
#define HUD_POWER_BOMBS_Y (SUB_PIXEL_TO_PIXEL(PIXEL_SIZE * 2))
|
||||
#define HUD_POWER_BOMBS_X (SUB_PIXEL_TO_PIXEL(BLOCK_SIZE * 6 + HALF_BLOCK_SIZE + EIGHTH_BLOCK_SIZE))
|
||||
|
||||
#define HUD_MINIMAP_Y (-SUB_PIXEL_TO_PIXEL(PIXEL_SIZE * 6))
|
||||
#define HUD_MINIMAP_X (SCREEN_SIZE_X - SUB_PIXEL_TO_PIXEL(BLOCK_SIZE + HALF_BLOCK_SIZE + EIGHTH_BLOCK_SIZE))
|
||||
|
||||
#define HUD_MINIMAP_SQUARE_Y (HUD_MINIMAP_Y + SUB_PIXEL_TO_PIXEL(BLOCK_SIZE))
|
||||
#define HUD_MINIMAP_SQUARE_X (HUD_MINIMAP_X + SUB_PIXEL_TO_PIXEL(HALF_BLOCK_SIZE))
|
||||
|
||||
/**
|
||||
* @brief 52308 | 35c | Updates the OAM of the HUD
|
||||
*
|
||||
*/
|
||||
void HUDUpdateOAM(void)
|
||||
void HudUpdateOam(void)
|
||||
{
|
||||
u32 oamSlot;
|
||||
u16* dst;
|
||||
struct Equipment* pEquipment = &gEquipment;
|
||||
|
||||
oamSlot = 0x0;
|
||||
oamSlot = 0;
|
||||
|
||||
if (!gHideHud)
|
||||
{
|
||||
dst = (u16*)gOamData;
|
||||
|
||||
// Left part of health bar
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.y = 0x2;
|
||||
gOamData[oamSlot].split.shape = 0x1;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.y = HUD_HEALTH_BAR_Y;
|
||||
gOamData[oamSlot].split.shape = OAM_SHAPE_HORIZONTAL;
|
||||
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.x = 0x0;
|
||||
gOamData[oamSlot].split.size = 0x1;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.x = HUD_HEALTH_BAR_X;
|
||||
gOamData[oamSlot].split.size = OAM_SIZE_H_32x8;
|
||||
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.tileNum = 0x50;
|
||||
gOamData[oamSlot].split.paletteNum = 0x4;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.tileNum = 0x20 * 2 + 0x10;
|
||||
gOamData[oamSlot].split.paletteNum = 4;
|
||||
|
||||
dst++;
|
||||
oamSlot++;
|
||||
|
||||
// Right part of health bar
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.y = 0x2;
|
||||
gOamData[oamSlot].split.shape = 0x1;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.y = HUD_HEALTH_BAR_Y;
|
||||
gOamData[oamSlot].split.shape = OAM_SHAPE_HORIZONTAL;
|
||||
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.x = HUD_HEALTH_BAR_X + 32;
|
||||
gOamData[oamSlot].split.size = OAM_SIZE_H_32x8;
|
||||
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.x = 0x20;
|
||||
gOamData[oamSlot].split.size = 0x1;
|
||||
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.tileNum = 0x54;
|
||||
gOamData[oamSlot].split.paletteNum = 0x4;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.tileNum = 0x20 * 2 + 0x14;
|
||||
gOamData[oamSlot].split.paletteNum = 4;
|
||||
|
||||
dst++;
|
||||
oamSlot++;
|
||||
|
||||
|
||||
if (pEquipment->suitType == SUIT_SUITLESS)
|
||||
{
|
||||
// Left part of charge bar
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.y = 0xA;
|
||||
gOamData[oamSlot].split.shape = 0x1;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.y = HUD_CHARGE_BAR_Y;
|
||||
gOamData[oamSlot].split.shape = OAM_SHAPE_HORIZONTAL;
|
||||
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.x = 0x1;
|
||||
gOamData[oamSlot].split.size = 0x1;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.x = HUD_CHARGE_BAR_X;
|
||||
gOamData[oamSlot].split.size = OAM_SIZE_H_32x8;
|
||||
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.tileNum = 0x88;
|
||||
gOamData[oamSlot].split.paletteNum = 0x4;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.tileNum = 0x20 * 4 + 0x8;
|
||||
gOamData[oamSlot].split.paletteNum = 4;
|
||||
|
||||
dst++;
|
||||
oamSlot++;
|
||||
|
||||
// Right part of charge bar
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.y = 0xA;
|
||||
gOamData[oamSlot].split.shape = 0x1;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.y = HUD_CHARGE_BAR_Y;
|
||||
gOamData[oamSlot].split.shape = OAM_SHAPE_HORIZONTAL;
|
||||
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.x = 0x21;
|
||||
gOamData[oamSlot].split.size = 0x1;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.x = HUD_CHARGE_BAR_X + 32;
|
||||
gOamData[oamSlot].split.size = OAM_SIZE_H_32x8;
|
||||
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.tileNum = 0x8C;
|
||||
gOamData[oamSlot].split.paletteNum = 0x4;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.tileNum = 0x20 * 4 + 0xC;
|
||||
gOamData[oamSlot].split.paletteNum = 4;
|
||||
|
||||
dst++;
|
||||
oamSlot++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (pEquipment->maxMissiles != 0x0)
|
||||
if (pEquipment->maxMissiles != 0)
|
||||
{
|
||||
// Missile digits
|
||||
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.y = 0x2;
|
||||
gOamData[oamSlot].split.shape = 0x1;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.y = HUD_MISSILES_Y;
|
||||
gOamData[oamSlot].split.shape = OAM_SHAPE_HORIZONTAL;
|
||||
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.x = 0x36;
|
||||
gOamData[oamSlot].split.size = 0x1;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.x = HUD_MISSILES_X;
|
||||
gOamData[oamSlot].split.size = OAM_SIZE_H_32x8;
|
||||
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.tileNum = 0x70;
|
||||
gOamData[oamSlot].split.paletteNum = 0x4;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.tileNum = 0x20 * 3 + 0x10;
|
||||
gOamData[oamSlot].split.paletteNum = 4;
|
||||
|
||||
dst++;
|
||||
oamSlot++;
|
||||
}
|
||||
if (pEquipment->maxSuperMissiles != 0x0)
|
||||
|
||||
if (pEquipment->maxSuperMissiles != 0)
|
||||
{
|
||||
// Super missile digits
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.y = 0x2;
|
||||
gOamData[oamSlot].split.shape = 0x1;
|
||||
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.x = 0x50;
|
||||
gOamData[oamSlot].split.size = 0x1;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.y = HUD_SUPER_MISSILES_Y;
|
||||
gOamData[oamSlot].split.shape = OAM_SHAPE_HORIZONTAL;
|
||||
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.tileNum = 0x74;
|
||||
gOamData[oamSlot].split.paletteNum = 0x4;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.x = HUD_SUPER_MISSILES_X;
|
||||
gOamData[oamSlot].split.size = OAM_SIZE_H_32x8;
|
||||
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.tileNum = 0x20 * 3 + 0x14;
|
||||
gOamData[oamSlot].split.paletteNum = 4;
|
||||
|
||||
dst++;
|
||||
oamSlot++;
|
||||
}
|
||||
if (pEquipment->maxPowerBombs != 0x0)
|
||||
|
||||
if (pEquipment->maxPowerBombs != 0)
|
||||
{
|
||||
// Power bomb digits
|
||||
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.y = 0x2;
|
||||
gOamData[oamSlot].split.shape = 0x1;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.y = HUD_POWER_BOMBS_Y;
|
||||
gOamData[oamSlot].split.shape = OAM_SHAPE_HORIZONTAL;
|
||||
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.x = 0x6A;
|
||||
gOamData[oamSlot].split.size = 0x1;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.x = HUD_POWER_BOMBS_X;
|
||||
gOamData[oamSlot].split.size = OAM_SIZE_H_32x8;
|
||||
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.tileNum = 0x58;
|
||||
gOamData[oamSlot].split.paletteNum = 0x4;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.tileNum = 0x20 * 2 + 0x18;
|
||||
gOamData[oamSlot].split.paletteNum = 4;
|
||||
|
||||
dst++;
|
||||
oamSlot++;
|
||||
@ -157,38 +180,38 @@ void HUDUpdateOAM(void)
|
||||
}
|
||||
|
||||
// Minimap white square
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.y = HUD_MINIMAP_SQUARE_Y;
|
||||
gOamData[oamSlot].split.shape = OAM_SHAPE_SQUARE;
|
||||
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.y = 0xA;
|
||||
gOamData[oamSlot].split.shape = 0x0;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.x = HUD_MINIMAP_SQUARE_X;
|
||||
gOamData[oamSlot].split.size = OAM_SIZE_S_8x8;
|
||||
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.x = 0xDE;
|
||||
gOamData[oamSlot].split.size = 0x0;
|
||||
*dst++ = 0;
|
||||
|
||||
*dst++ = 0x0;
|
||||
|
||||
if (gFrameCounter8Bit & 0x8)
|
||||
gOamData[oamSlot].split.tileNum = 0xBF;
|
||||
if (MOD_BLOCK_AND(gFrameCounter8Bit, CONVERT_SECONDS(2.f / 15)))
|
||||
gOamData[oamSlot].split.tileNum = 0x20 * 5 + 0x1F;
|
||||
else
|
||||
gOamData[oamSlot].split.tileNum = 0x140;
|
||||
gOamData[oamSlot].split.paletteNum = 0x5;
|
||||
gOamData[oamSlot].split.tileNum = 0x20 * 10;
|
||||
|
||||
gOamData[oamSlot].split.paletteNum = 5;
|
||||
|
||||
dst++;
|
||||
oamSlot++;
|
||||
|
||||
// Minimap
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.y = 0xFA;
|
||||
gOamData[oamSlot].split.shape = 0x0;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.y = HUD_MINIMAP_Y;
|
||||
gOamData[oamSlot].split.shape = OAM_SHAPE_SQUARE;
|
||||
|
||||
*dst++ = 0x0;
|
||||
gOamData[oamSlot].split.x = 0xD6;
|
||||
gOamData[oamSlot].split.size = 0x2;
|
||||
*dst++ = 0;
|
||||
gOamData[oamSlot].split.x = HUD_MINIMAP_X;
|
||||
gOamData[oamSlot].split.size = OAM_SIZE_S_32x32;
|
||||
|
||||
*dst = 0x0;
|
||||
gOamData[oamSlot].split.tileNum = 0xDC;
|
||||
gOamData[oamSlot].split.paletteNum = 0x5;
|
||||
*dst = 0;
|
||||
gOamData[oamSlot].split.tileNum = 0x20 * 6 + 0x1C;
|
||||
gOamData[oamSlot].split.paletteNum = 5;
|
||||
|
||||
oamSlot++;
|
||||
}
|
||||
@ -205,23 +228,23 @@ void HUDUpdateOAM(void)
|
||||
* @param nbrTanks Number of energy tanks
|
||||
* @param refillStage Refill stage
|
||||
*/
|
||||
void HUDUpdateEnergyTanks(u8* pDst, const u8* pSrcNormal, const u8* pSrcRefill, u8 nbrTanks, u8 refillStage)
|
||||
void HudUpdateEnergyTanks(u8* pDst, const u8* pSrcNormal, const u8* pSrcRefill, u8 nbrTanks, u8 refillStage)
|
||||
{
|
||||
if (refillStage == 0x0)
|
||||
if (refillStage == 0)
|
||||
{
|
||||
DMA_SET(3, pSrcRefill, pDst + 0x40, (DMA_ENABLE << 16) | 0x50);
|
||||
DMA_SET(3, pSrcRefill, pDst + 0x40, C_32_2_16(DMA_ENABLE, 0x50));
|
||||
}
|
||||
else if (refillStage == 0x1)
|
||||
{
|
||||
DMA_SET(3, pSrcRefill + 0xA0 * refillStage, pDst + 0x40, (DMA_ENABLE << 16) | 0x50);
|
||||
DMA_SET(3, pSrcRefill + 0xA0 * refillStage, pDst + 0x40, C_32_2_16(DMA_ENABLE, 0x50));
|
||||
}
|
||||
else if (refillStage == 0x2)
|
||||
{
|
||||
DMA_SET(3, pSrcRefill + 0xA0 * refillStage, pDst + 0x40, (DMA_ENABLE << 16) | 0x50);
|
||||
DMA_SET(3, pSrcRefill + 0xA0 * refillStage, pDst + 0x40, C_32_2_16(DMA_ENABLE, 0x50));
|
||||
}
|
||||
else if (refillStage == 0x3)
|
||||
{
|
||||
DMA_SET(3, pSrcNormal + 0xA0 * nbrTanks, pDst + 0x40, (DMA_ENABLE << 16) | 0x50);
|
||||
DMA_SET(3, pSrcNormal + 0xA0 * nbrTanks, pDst + 0x40, C_32_2_16(DMA_ENABLE, 0x50));
|
||||
}
|
||||
}
|
||||
|
||||
@ -259,7 +282,7 @@ void HudDrawEnergy(u8 fileNumber)
|
||||
return;
|
||||
}
|
||||
else
|
||||
dst = (VRAM_BASE + 0x10A00);
|
||||
dst = VRAM_OBJ + 0xA00;
|
||||
|
||||
needUpdate = FALSE;
|
||||
|
||||
@ -317,7 +340,7 @@ void HudDrawEnergy(u8 fileNumber)
|
||||
gEnergyDigits.tens = digit;
|
||||
needUpdate++;
|
||||
|
||||
DMA_SET(3, &sEnergyDigitsTensGfx[digit * 32], dst, DMA_ENABLE << 16 | 16);
|
||||
DMA_SET(3, &sEnergyDigitsTensGfx[digit * 32], dst, C_32_2_16(DMA_ENABLE, 16));
|
||||
}
|
||||
|
||||
digit = energy % 10;
|
||||
@ -326,7 +349,7 @@ void HudDrawEnergy(u8 fileNumber)
|
||||
gEnergyDigits.ones = digit;
|
||||
needUpdate++;
|
||||
|
||||
DMA_SET(3, &sEnergyDigitsOnesGfx[digit * 32], dst + 32, DMA_ENABLE << 16 | 16);
|
||||
DMA_SET(3, &sEnergyDigitsOnesGfx[digit * 32], dst + 32, C_32_2_16(DMA_ENABLE, 16));
|
||||
}
|
||||
|
||||
if (needUpdate)
|
||||
@ -339,83 +362,83 @@ void HudDrawEnergy(u8 fileNumber)
|
||||
switch (nbrTanks)
|
||||
{
|
||||
case 0:
|
||||
DMA_SET(3, sEnergyTanksGfx_Zero, dst + 64, DMA_ENABLE << 16 | 80);
|
||||
DMA_SET(3, sEnergyTanksGfx_Zero, dst + 64, C_32_2_16(DMA_ENABLE, 80));
|
||||
break;
|
||||
|
||||
case 1:
|
||||
DMA_SET(3, (sEnergyTanksGfx_One + (maxEnergy * 160)), dst + 64, DMA_ENABLE << 16 | 80);
|
||||
DMA_SET(3, (sEnergyTanksGfx_One + (maxEnergy * 160)), dst + 64, C_32_2_16(DMA_ENABLE, 80));
|
||||
break;
|
||||
|
||||
case 2:
|
||||
DMA_SET(3, (sEnergyTanksGfx_Two + (maxEnergy * 160)), dst + 64, DMA_ENABLE << 16 | 80);
|
||||
DMA_SET(3, (sEnergyTanksGfx_Two + (maxEnergy * 160)), dst + 64, C_32_2_16(DMA_ENABLE, 80));
|
||||
break;
|
||||
|
||||
case 3:
|
||||
DMA_SET(3, (sEnergyTanksGfx_Three + (maxEnergy * 160)), dst + 64, DMA_ENABLE << 16 | 80);
|
||||
DMA_SET(3, (sEnergyTanksGfx_Three + (maxEnergy * 160)), dst + 64, C_32_2_16(DMA_ENABLE, 80));
|
||||
break;
|
||||
|
||||
case 4:
|
||||
DMA_SET(3, (sEnergyTanksGfx_Four + (maxEnergy * 160)), dst + 64, DMA_ENABLE << 16 | 80);
|
||||
DMA_SET(3, (sEnergyTanksGfx_Four + (maxEnergy * 160)), dst + 64, C_32_2_16(DMA_ENABLE, 80));
|
||||
break;
|
||||
|
||||
case 5:
|
||||
DMA_SET(3, (sEnergyTanksGfx_Five + (maxEnergy * 160)), dst + 64, DMA_ENABLE << 16 | 80);
|
||||
DMA_SET(3, (sEnergyTanksGfx_Five + (maxEnergy * 160)), dst + 64, C_32_2_16(DMA_ENABLE, 80));
|
||||
break;
|
||||
|
||||
case 6:
|
||||
DMA_SET(3, (sEnergyTanksGfx_Six + (maxEnergy * 160)), dst + 64, DMA_ENABLE << 16 | 80);
|
||||
DMA_SET(3, (sEnergyTanksGfx_Six + (maxEnergy * 160)), dst + 64, C_32_2_16(DMA_ENABLE, 80));
|
||||
break;
|
||||
|
||||
case 7:
|
||||
DMA_SET(3, (sEnergyTanksGfx_Seven + (maxEnergy * 160)), dst + 64, DMA_ENABLE << 16 | 80);
|
||||
DMA_SET(3, (sEnergyTanksGfx_Seven + (maxEnergy * 160)), dst + 64, C_32_2_16(DMA_ENABLE, 80));
|
||||
break;
|
||||
|
||||
case 8:
|
||||
DMA_SET(3, (sEnergyTanksGfx_Eight + (maxEnergy * 160)), dst + 64, DMA_ENABLE << 16 | 80);
|
||||
DMA_SET(3, (sEnergyTanksGfx_Eight + (maxEnergy * 160)), dst + 64, C_32_2_16(DMA_ENABLE, 80));
|
||||
break;
|
||||
|
||||
case 9:
|
||||
DMA_SET(3, (sEnergyTanksGfx_Nine + (maxEnergy * 160)), dst + 64, DMA_ENABLE << 16 | 80);
|
||||
DMA_SET(3, (sEnergyTanksGfx_Nine + (maxEnergy * 160)), dst + 64, C_32_2_16(DMA_ENABLE, 80));
|
||||
break;
|
||||
|
||||
case 10:
|
||||
DMA_SET(3, (sEnergyTanksGfx_Ten + (maxEnergy * 160)), dst + 64, DMA_ENABLE << 16 | 80);
|
||||
DMA_SET(3, (sEnergyTanksGfx_Ten + (maxEnergy * 160)), dst + 64, C_32_2_16(DMA_ENABLE, 80));
|
||||
break;
|
||||
|
||||
case 11:
|
||||
DMA_SET(3, (sEnergyTanksGfx_Eleven + (maxEnergy * 160)), dst + 64, DMA_ENABLE << 16 | 80);
|
||||
DMA_SET(3, (sEnergyTanksGfx_Eleven + (maxEnergy * 160)), dst + 64, C_32_2_16(DMA_ENABLE, 80));
|
||||
break;
|
||||
|
||||
case 12:
|
||||
DMA_SET(3, (sEnergyTanksGfx_Twelve + (maxEnergy * 160)), dst + 64, DMA_ENABLE << 16 | 80);
|
||||
DMA_SET(3, (sEnergyTanksGfx_Twelve + (maxEnergy * 160)), dst + 64, C_32_2_16(DMA_ENABLE, 80));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (gEnergyRefillAnimation != 0x0)
|
||||
if (gEnergyRefillAnimation != 0)
|
||||
{
|
||||
if (gEnergyRefillAnimation == 0xD)
|
||||
{
|
||||
DMA_SET(3, &sEnergyDigitsRefill1Gfx[gEnergyDigits.tens * 32], dst, DMA_ENABLE << 16 | 16);
|
||||
DMA_SET(3, &sEnergyDigitsRefill1Gfx[gEnergyDigits.ones * 32 + 10 * 32], dst + 32, DMA_ENABLE << 16 | 16);
|
||||
DMA_SET(3, &sEnergyDigitsRefill1Gfx[gEnergyDigits.tens * 32], dst, C_32_2_16(DMA_ENABLE, 16));
|
||||
DMA_SET(3, &sEnergyDigitsRefill1Gfx[gEnergyDigits.ones * 32 + 10 * 32], dst + 32, C_32_2_16(DMA_ENABLE, 16));
|
||||
needUpdate = 0;
|
||||
}
|
||||
else if (gEnergyRefillAnimation == 0xA)
|
||||
{
|
||||
DMA_SET(3, &sEnergyDigitsRefill2Gfx[gEnergyDigits.tens * 32], dst, DMA_ENABLE << 16 | 16);
|
||||
DMA_SET(3, &sEnergyDigitsRefill2Gfx[gEnergyDigits.ones * 32 + 10 * 32], dst + 32, DMA_ENABLE << 16 | 16);
|
||||
DMA_SET(3, &sEnergyDigitsRefill2Gfx[gEnergyDigits.tens * 32], dst, C_32_2_16(DMA_ENABLE, 16));
|
||||
DMA_SET(3, &sEnergyDigitsRefill2Gfx[gEnergyDigits.ones * 32 + 10 * 32], dst + 32, C_32_2_16(DMA_ENABLE, 16));
|
||||
needUpdate = 1;
|
||||
}
|
||||
else if (gEnergyRefillAnimation == 0x4)
|
||||
{
|
||||
DMA_SET(3, &sEnergyDigitsRefill3Gfx[gEnergyDigits.tens * 32], dst, DMA_ENABLE << 16 | 16);
|
||||
DMA_SET(3, &sEnergyDigitsRefill3Gfx[gEnergyDigits.ones * 32 + 10 * 32], dst + 32, DMA_ENABLE << 16 | 16);
|
||||
DMA_SET(3, &sEnergyDigitsRefill3Gfx[gEnergyDigits.tens * 32], dst, C_32_2_16(DMA_ENABLE, 16));
|
||||
DMA_SET(3, &sEnergyDigitsRefill3Gfx[gEnergyDigits.ones * 32 + 10 * 32], dst + 32, C_32_2_16(DMA_ENABLE, 16));
|
||||
needUpdate = 2;
|
||||
}
|
||||
else if (gEnergyRefillAnimation == 0x1)
|
||||
{
|
||||
DMA_SET(3, &sEnergyDigitsTensGfx[gEnergyDigits.tens * 32], dst, DMA_ENABLE << 16 | 16);
|
||||
DMA_SET(3, &sEnergyDigitsTensGfx[gEnergyDigits.ones * 32 + 10 * 32], dst + 32, DMA_ENABLE << 16 | 16);
|
||||
DMA_SET(3, &sEnergyDigitsTensGfx[gEnergyDigits.tens * 32], dst, C_32_2_16(DMA_ENABLE, 16));
|
||||
DMA_SET(3, &sEnergyDigitsTensGfx[gEnergyDigits.ones * 32 + 10 * 32], dst + 32, C_32_2_16(DMA_ENABLE, 16));
|
||||
needUpdate = 3;
|
||||
}
|
||||
else
|
||||
@ -423,51 +446,51 @@ void HudDrawEnergy(u8 fileNumber)
|
||||
switch (nbrTanks)
|
||||
{
|
||||
case 1:
|
||||
HUDUpdateEnergyTanks(dst, sEnergyTanksGfx_One, sEnergyTanksRefillGfx_One, nbrTanks, needUpdate);
|
||||
HudUpdateEnergyTanks(dst, sEnergyTanksGfx_One, sEnergyTanksRefillGfx_One, nbrTanks, needUpdate);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
HUDUpdateEnergyTanks(dst, sEnergyTanksGfx_Two, sEnergyTanksRefillGfx_Two, nbrTanks, needUpdate);
|
||||
HudUpdateEnergyTanks(dst, sEnergyTanksGfx_Two, sEnergyTanksRefillGfx_Two, nbrTanks, needUpdate);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
HUDUpdateEnergyTanks(dst, sEnergyTanksGfx_Three, sEnergyTanksRefillGfx_Three, nbrTanks, needUpdate);
|
||||
HudUpdateEnergyTanks(dst, sEnergyTanksGfx_Three, sEnergyTanksRefillGfx_Three, nbrTanks, needUpdate);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
HUDUpdateEnergyTanks(dst, sEnergyTanksGfx_Four, sEnergyTanksRefillGfx_Four, nbrTanks, needUpdate);
|
||||
HudUpdateEnergyTanks(dst, sEnergyTanksGfx_Four, sEnergyTanksRefillGfx_Four, nbrTanks, needUpdate);
|
||||
break;
|
||||
|
||||
case 5:
|
||||
HUDUpdateEnergyTanks(dst, sEnergyTanksGfx_Five, sEnergyTanksRefillGfx_Five, nbrTanks, needUpdate);
|
||||
HudUpdateEnergyTanks(dst, sEnergyTanksGfx_Five, sEnergyTanksRefillGfx_Five, nbrTanks, needUpdate);
|
||||
break;
|
||||
|
||||
case 6:
|
||||
HUDUpdateEnergyTanks(dst, sEnergyTanksGfx_Six, sEnergyTanksRefillGfx_Six, nbrTanks, needUpdate);
|
||||
HudUpdateEnergyTanks(dst, sEnergyTanksGfx_Six, sEnergyTanksRefillGfx_Six, nbrTanks, needUpdate);
|
||||
break;
|
||||
|
||||
case 7:
|
||||
HUDUpdateEnergyTanks(dst, sEnergyTanksGfx_Seven, sEnergyTanksRefillGfx_Seven, nbrTanks, needUpdate);
|
||||
HudUpdateEnergyTanks(dst, sEnergyTanksGfx_Seven, sEnergyTanksRefillGfx_Seven, nbrTanks, needUpdate);
|
||||
break;
|
||||
|
||||
case 8:
|
||||
HUDUpdateEnergyTanks(dst, sEnergyTanksGfx_Eight, sEnergyTanksRefillGfx_Eight, nbrTanks, needUpdate);
|
||||
HudUpdateEnergyTanks(dst, sEnergyTanksGfx_Eight, sEnergyTanksRefillGfx_Eight, nbrTanks, needUpdate);
|
||||
break;
|
||||
|
||||
case 9:
|
||||
HUDUpdateEnergyTanks(dst, sEnergyTanksGfx_Nine, sEnergyTanksRefillGfx_Nine, nbrTanks, needUpdate);
|
||||
HudUpdateEnergyTanks(dst, sEnergyTanksGfx_Nine, sEnergyTanksRefillGfx_Nine, nbrTanks, needUpdate);
|
||||
break;
|
||||
|
||||
case 10:
|
||||
HUDUpdateEnergyTanks(dst, sEnergyTanksGfx_Ten, sEnergyTanksRefillGfx_Ten, nbrTanks, needUpdate);
|
||||
HudUpdateEnergyTanks(dst, sEnergyTanksGfx_Ten, sEnergyTanksRefillGfx_Ten, nbrTanks, needUpdate);
|
||||
break;
|
||||
|
||||
case 11:
|
||||
HUDUpdateEnergyTanks(dst, sEnergyTanksGfx_Eleven, sEnergyTanksRefillGfx_Eleven, nbrTanks, needUpdate);
|
||||
HudUpdateEnergyTanks(dst, sEnergyTanksGfx_Eleven, sEnergyTanksRefillGfx_Eleven, nbrTanks, needUpdate);
|
||||
break;
|
||||
|
||||
case 12:
|
||||
HUDUpdateEnergyTanks(dst, sEnergyTanksGfx_Twelve, sEnergyTanksRefillGfx_Twelve, nbrTanks, needUpdate);
|
||||
HudUpdateEnergyTanks(dst, sEnergyTanksGfx_Twelve, sEnergyTanksRefillGfx_Twelve, nbrTanks, needUpdate);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -559,9 +582,9 @@ void HudDrawSuperMissileDigits(u16 tens, u16 ones, u16 highlightStatus)
|
||||
gAmmoDigitsGfx[row] = sMissileDigitsGfx[highlightStatus];
|
||||
row++;
|
||||
highlightStatus += 0x3;
|
||||
gAmmoDigitsGfx[row] = 0x0;
|
||||
gAmmoDigitsGfx[row] = 0;
|
||||
row++;
|
||||
gAmmoDigitsGfx[row] = 0x0;
|
||||
gAmmoDigitsGfx[row] = 0;
|
||||
row++;
|
||||
}
|
||||
}
|
||||
@ -604,9 +627,9 @@ void HudDrawPowerBombDigits(u16 tens, u16 ones, u16 highlightStatus)
|
||||
gAmmoDigitsGfx[row] = sPowerBombDigitsGfx[highlightStatus];
|
||||
row++;
|
||||
highlightStatus += 0x3;
|
||||
gAmmoDigitsGfx[row] = 0x0;
|
||||
gAmmoDigitsGfx[row] = 0;
|
||||
row++;
|
||||
gAmmoDigitsGfx[row] = 0x0;
|
||||
gAmmoDigitsGfx[row] = 0;
|
||||
row++;
|
||||
}
|
||||
}
|
||||
@ -689,10 +712,10 @@ void HudDrawMissiles(u8 updateHighlight)
|
||||
|
||||
// Update Gfx
|
||||
HudDrawMissileDigits(hundreds, tens, ones, refillStage);
|
||||
DMA_SET(3, gAmmoDigitsGfx, VRAM_BASE + 0x10E40, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, gAmmoDigitsGfx, VRAM_BASE + 0x10E40, C_32_2_16(DMA_ENABLE, 32));
|
||||
}
|
||||
|
||||
if (gMissileRefillAnimation != 0x0 && !updateHighlight)
|
||||
if (gMissileRefillAnimation != 0 && !updateHighlight)
|
||||
{
|
||||
hundreds = gMissileDigits.hundreds;
|
||||
tens = gMissileDigits.tens;
|
||||
@ -715,23 +738,23 @@ void HudDrawMissiles(u8 updateHighlight)
|
||||
if (gMissileRefillAnimation == 0xD)
|
||||
{
|
||||
missiles = 0x480;
|
||||
DMA_SET(3, sMissileHUDGfx_Refill1, VRAM_BASE + 0x10E00, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sMissileHUDGfx_Refill1, VRAM_BASE + 0x10E00, C_32_2_16(DMA_ENABLE, 32));
|
||||
}
|
||||
else if (gMissileRefillAnimation == 0xA)
|
||||
{
|
||||
missiles = 0x600;
|
||||
DMA_SET(3, sMissileHUDGfx_Refill2, VRAM_BASE + 0x10E00, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sMissileHUDGfx_Refill2, VRAM_BASE + 0x10E00, C_32_2_16(DMA_ENABLE, 32));
|
||||
}
|
||||
else if (gMissileRefillAnimation == 0x4)
|
||||
{
|
||||
missiles = 0x780;
|
||||
DMA_SET(3, sMissileHUDGfx_Refill3, VRAM_BASE + 0x10E00, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sMissileHUDGfx_Refill3, VRAM_BASE + 0x10E00, C_32_2_16(DMA_ENABLE, 32));
|
||||
}
|
||||
else if (gMissileRefillAnimation == 0x1)
|
||||
{
|
||||
needUpdate = gMissileHighlightStatus;
|
||||
missiles = needUpdate * 384;
|
||||
DMA_SET(3, sMissileHUDGfx_Inactive + (gMissileHighlightStatus * 64), VRAM_BASE + 0x10E00, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sMissileHUDGfx_Inactive + (gMissileHighlightStatus * 64), VRAM_BASE + 0x10E00, C_32_2_16(DMA_ENABLE, 32));
|
||||
}
|
||||
else
|
||||
return;
|
||||
@ -742,7 +765,7 @@ void HudDrawMissiles(u8 updateHighlight)
|
||||
refillStage += missiles;
|
||||
HudDrawMissileDigits(hundreds, tens, ones, refillStage);
|
||||
|
||||
DMA_SET(3, gAmmoDigitsGfx, VRAM_BASE + 0x10E40, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, gAmmoDigitsGfx, VRAM_BASE + 0x10E40, C_32_2_16(DMA_ENABLE, 32));
|
||||
}
|
||||
}
|
||||
|
||||
@ -822,10 +845,10 @@ void HudDrawPowerBomb(u8 updateHighlight)
|
||||
|
||||
// Update Gfx
|
||||
HudDrawPowerBombDigits(tens, ones, refillStage);
|
||||
DMA_SET(3, gAmmoDigitsGfx, VRAM_BASE + 0x10B40, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, gAmmoDigitsGfx, VRAM_BASE + 0x10B40, C_32_2_16(DMA_ENABLE, 32));
|
||||
}
|
||||
|
||||
if (gPowerBombRefillAnimation != 0x0 && !updateHighlight)
|
||||
if (gPowerBombRefillAnimation != 0 && !updateHighlight)
|
||||
{
|
||||
hundreds = gPowerBombDigits.hundreds;
|
||||
tens = gPowerBombDigits.tens;
|
||||
@ -847,23 +870,23 @@ void HudDrawPowerBomb(u8 updateHighlight)
|
||||
if (gPowerBombRefillAnimation == 0xD)
|
||||
{
|
||||
powerBombs = 0x480;
|
||||
DMA_SET(3, sPowerBombHUDGfx_Refill1, VRAM_BASE + 0x10B00, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sPowerBombHUDGfx_Refill1, VRAM_BASE + 0x10B00, C_32_2_16(DMA_ENABLE, 32));
|
||||
}
|
||||
else if (gPowerBombRefillAnimation == 0xA)
|
||||
{
|
||||
powerBombs = 0x600;
|
||||
DMA_SET(3, sPowerBombHUDGfx_Refill2, VRAM_BASE + 0x10B00, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sPowerBombHUDGfx_Refill2, VRAM_BASE + 0x10B00, C_32_2_16(DMA_ENABLE, 32));
|
||||
}
|
||||
else if (gPowerBombRefillAnimation == 0x4)
|
||||
{
|
||||
powerBombs = 0x780;
|
||||
DMA_SET(3, sPowerBombHUDGfx_Refill3, VRAM_BASE + 0x10B00, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sPowerBombHUDGfx_Refill3, VRAM_BASE + 0x10B00, C_32_2_16(DMA_ENABLE, 32));
|
||||
}
|
||||
else if (gPowerBombRefillAnimation == 0x1)
|
||||
{
|
||||
needUpdate = gPowerBombHighlightStatus;
|
||||
powerBombs = needUpdate * 384;
|
||||
DMA_SET(3, sPowerBombHUDGfx_Inactive + (gPowerBombHighlightStatus * 64), VRAM_BASE + 0x10B00, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sPowerBombHUDGfx_Inactive + (gPowerBombHighlightStatus * 64), VRAM_BASE + 0x10B00, C_32_2_16(DMA_ENABLE, 32));
|
||||
}
|
||||
else
|
||||
return;
|
||||
@ -873,7 +896,7 @@ void HudDrawPowerBomb(u8 updateHighlight)
|
||||
refillStage += powerBombs;
|
||||
HudDrawPowerBombDigits(tens, ones, refillStage);
|
||||
|
||||
DMA_SET(3, gAmmoDigitsGfx, VRAM_BASE + 0x10B40, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, gAmmoDigitsGfx, VRAM_BASE + 0x10B40, C_32_2_16(DMA_ENABLE, 32));
|
||||
}
|
||||
}
|
||||
|
||||
@ -953,10 +976,10 @@ void HudDrawSuperMissiles(u8 updateHighlight)
|
||||
|
||||
// Update Gfx
|
||||
HudDrawSuperMissileDigits(tens, ones, refillStage);
|
||||
DMA_SET(3, gAmmoDigitsGfx, VRAM_BASE + 0x10EC0, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, gAmmoDigitsGfx, VRAM_BASE + 0x10EC0, C_32_2_16(DMA_ENABLE, 32));
|
||||
}
|
||||
|
||||
if (gSuperMissileRefillAnimation != 0x0 && !updateHighlight)
|
||||
if (gSuperMissileRefillAnimation != 0 && !updateHighlight)
|
||||
{
|
||||
hundreds = gSuperMissileDigits.hundreds;
|
||||
tens = gSuperMissileDigits.tens;
|
||||
@ -978,23 +1001,23 @@ void HudDrawSuperMissiles(u8 updateHighlight)
|
||||
if (gSuperMissileRefillAnimation == 0xD)
|
||||
{
|
||||
superMissiles = 0x480;
|
||||
DMA_SET(3, sSuperMissileHUDGfx_Refill1, VRAM_BASE + 0x10E80, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sSuperMissileHUDGfx_Refill1, VRAM_BASE + 0x10E80, C_32_2_16(DMA_ENABLE, 32));
|
||||
}
|
||||
else if (gSuperMissileRefillAnimation == 0xA)
|
||||
{
|
||||
superMissiles = 0x600;
|
||||
DMA_SET(3, sSuperMissileHUDGfx_Refill2, VRAM_BASE + 0x10E80, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sSuperMissileHUDGfx_Refill2, VRAM_BASE + 0x10E80, C_32_2_16(DMA_ENABLE, 32));
|
||||
}
|
||||
else if (gSuperMissileRefillAnimation == 0x4)
|
||||
{
|
||||
superMissiles = 0x780;
|
||||
DMA_SET(3, sSuperMissileHUDGfx_Refill3, VRAM_BASE + 0x10E80, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sSuperMissileHUDGfx_Refill3, VRAM_BASE + 0x10E80, C_32_2_16(DMA_ENABLE, 32));
|
||||
}
|
||||
else if (gSuperMissileRefillAnimation == 0x1)
|
||||
{
|
||||
needUpdate = gSuperMissileHighlightStatus;
|
||||
superMissiles = needUpdate * 384;
|
||||
DMA_SET(3, sSuperMissileHUDGfx_Inactive + (gSuperMissileHighlightStatus * 64), VRAM_BASE + 0x10E80, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sSuperMissileHUDGfx_Inactive + (gSuperMissileHighlightStatus * 64), VRAM_BASE + 0x10E80, C_32_2_16(DMA_ENABLE, 32));
|
||||
}
|
||||
else
|
||||
return;
|
||||
@ -1004,7 +1027,7 @@ void HudDrawSuperMissiles(u8 updateHighlight)
|
||||
refillStage += superMissiles;
|
||||
HudDrawSuperMissileDigits(tens, ones, refillStage);
|
||||
|
||||
DMA_SET(3, gAmmoDigitsGfx, VRAM_BASE + 0x10EC0, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, gAmmoDigitsGfx, VRAM_BASE + 0x10EC0, C_32_2_16(DMA_ENABLE, 32));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1012,21 +1035,21 @@ void HudDrawSuperMissiles(u8 updateHighlight)
|
||||
* @brief 5352c | 3bc | Updates the Gfx of the HUD
|
||||
*
|
||||
*/
|
||||
void HUDUpdateGfx(void)
|
||||
void HudUpdateGfx(void)
|
||||
{
|
||||
// Update missile Gfx
|
||||
if (gMissileHighlightStatus == HIGHLIGHT_STATUS_HIGHLIGHTED)
|
||||
{
|
||||
if (!(gSamusWeaponInfo.weaponHighlighted & WH_MISSILE))
|
||||
{
|
||||
if (gSamusWeaponInfo.missilesSelected || gEquipment.currentMissiles == 0x0)
|
||||
if (gSamusWeaponInfo.missilesSelected || gEquipment.currentMissiles == 0)
|
||||
{
|
||||
DMA_SET(3, sMissileHUDGfx_Inactive, VRAM_BASE + 0x10E00, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sMissileHUDGfx_Inactive, VRAM_BASE + 0x10E00, C_32_2_16(DMA_ENABLE, 32));
|
||||
gMissileHighlightStatus = HIGHLIGHT_STATUS_NOT_HIGHLIGHTED;
|
||||
}
|
||||
else
|
||||
{
|
||||
DMA_SET(3, sMissileHUDGfx_Selected, VRAM_BASE + 0x10E00, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sMissileHUDGfx_Selected, VRAM_BASE + 0x10E00, C_32_2_16(DMA_ENABLE, 32));
|
||||
gMissileHighlightStatus = HIGHLIGHT_STATUS_SELECTED;
|
||||
}
|
||||
|
||||
@ -1037,9 +1060,9 @@ void HUDUpdateGfx(void)
|
||||
{
|
||||
if (!(gSamusWeaponInfo.weaponHighlighted & WH_MISSILE))
|
||||
{
|
||||
if (gSamusWeaponInfo.missilesSelected || gEquipment.currentMissiles == 0x0)
|
||||
if (gSamusWeaponInfo.missilesSelected || gEquipment.currentMissiles == 0)
|
||||
{
|
||||
DMA_SET(3, sMissileHUDGfx_Inactive, VRAM_BASE + 0x10E00, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sMissileHUDGfx_Inactive, VRAM_BASE + 0x10E00, C_32_2_16(DMA_ENABLE, 32));
|
||||
gMissileHighlightStatus = HIGHLIGHT_STATUS_NOT_HIGHLIGHTED;
|
||||
|
||||
HudDrawMissiles(TRUE);
|
||||
@ -1047,7 +1070,7 @@ void HUDUpdateGfx(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
DMA_SET(3, sMissileHUDGfx_Active, VRAM_BASE + 0x10E00, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sMissileHUDGfx_Active, VRAM_BASE + 0x10E00, C_32_2_16(DMA_ENABLE, 32));
|
||||
gMissileHighlightStatus = HIGHLIGHT_STATUS_HIGHLIGHTED;
|
||||
|
||||
HudDrawMissiles(TRUE);
|
||||
@ -1057,16 +1080,16 @@ void HUDUpdateGfx(void)
|
||||
{
|
||||
if (gSamusWeaponInfo.weaponHighlighted & WH_MISSILE)
|
||||
{
|
||||
DMA_SET(3, sMissileHUDGfx_Active, VRAM_BASE + 0x10E00, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sMissileHUDGfx_Active, VRAM_BASE + 0x10E00, C_32_2_16(DMA_ENABLE, 32));
|
||||
gMissileHighlightStatus = HIGHLIGHT_STATUS_HIGHLIGHTED;
|
||||
|
||||
HudDrawMissiles(TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!gSamusWeaponInfo.missilesSelected && gEquipment.currentMissiles != 0x0)
|
||||
if (!gSamusWeaponInfo.missilesSelected && gEquipment.currentMissiles != 0)
|
||||
{
|
||||
DMA_SET(3, sMissileHUDGfx_Selected, VRAM_BASE + 0x10E00, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sMissileHUDGfx_Selected, VRAM_BASE + 0x10E00, C_32_2_16(DMA_ENABLE, 32));
|
||||
gMissileHighlightStatus = HIGHLIGHT_STATUS_SELECTED;
|
||||
|
||||
HudDrawMissiles(TRUE);
|
||||
@ -1079,14 +1102,14 @@ void HUDUpdateGfx(void)
|
||||
{
|
||||
if (!(gSamusWeaponInfo.weaponHighlighted & WH_POWER_BOMB))
|
||||
{
|
||||
if (gEquipment.currentPowerBombs != 0x0)
|
||||
if (gEquipment.currentPowerBombs != 0)
|
||||
{
|
||||
DMA_SET(3, sPowerBombHUDGfx_Selected, VRAM_BASE + 0x10B00, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sPowerBombHUDGfx_Selected, VRAM_BASE + 0x10B00, C_32_2_16(DMA_ENABLE, 32));
|
||||
gPowerBombHighlightStatus = HIGHLIGHT_STATUS_SELECTED;
|
||||
}
|
||||
else
|
||||
{
|
||||
DMA_SET(3, sPowerBombHUDGfx_Inactive, VRAM_BASE + 0x10B00, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sPowerBombHUDGfx_Inactive, VRAM_BASE + 0x10B00, C_32_2_16(DMA_ENABLE, 32));
|
||||
gPowerBombHighlightStatus = HIGHLIGHT_STATUS_NOT_HIGHLIGHTED;
|
||||
}
|
||||
|
||||
@ -1098,9 +1121,9 @@ void HUDUpdateGfx(void)
|
||||
{
|
||||
if (!(gSamusWeaponInfo.weaponHighlighted & WH_POWER_BOMB))
|
||||
{
|
||||
if (gEquipment.currentPowerBombs == 0x0)
|
||||
if (gEquipment.currentPowerBombs == 0)
|
||||
{
|
||||
DMA_SET(3, sPowerBombHUDGfx_Inactive, VRAM_BASE + 0x10B00, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sPowerBombHUDGfx_Inactive, VRAM_BASE + 0x10B00, C_32_2_16(DMA_ENABLE, 32));
|
||||
gPowerBombHighlightStatus = HIGHLIGHT_STATUS_NOT_HIGHLIGHTED;
|
||||
|
||||
HudDrawPowerBomb(TRUE);
|
||||
@ -1108,7 +1131,7 @@ void HUDUpdateGfx(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
DMA_SET(3, sPowerBombHUDGfx_Active, VRAM_BASE + 0x10B00, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sPowerBombHUDGfx_Active, VRAM_BASE + 0x10B00, C_32_2_16(DMA_ENABLE, 32));
|
||||
gPowerBombHighlightStatus = HIGHLIGHT_STATUS_HIGHLIGHTED;
|
||||
|
||||
HudDrawPowerBomb(TRUE);
|
||||
@ -1118,16 +1141,16 @@ void HUDUpdateGfx(void)
|
||||
{
|
||||
if (gSamusWeaponInfo.weaponHighlighted & WH_POWER_BOMB)
|
||||
{
|
||||
DMA_SET(3, sPowerBombHUDGfx_Active, VRAM_BASE + 0x10B00, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sPowerBombHUDGfx_Active, VRAM_BASE + 0x10B00, C_32_2_16(DMA_ENABLE, 32));
|
||||
gPowerBombHighlightStatus = HIGHLIGHT_STATUS_HIGHLIGHTED;
|
||||
|
||||
HudDrawPowerBomb(TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gEquipment.currentPowerBombs != 0x0)
|
||||
if (gEquipment.currentPowerBombs != 0)
|
||||
{
|
||||
DMA_SET(3, sPowerBombHUDGfx_Selected, VRAM_BASE + 0x10B00, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sPowerBombHUDGfx_Selected, VRAM_BASE + 0x10B00, C_32_2_16(DMA_ENABLE, 32));
|
||||
gPowerBombHighlightStatus = HIGHLIGHT_STATUS_SELECTED;
|
||||
|
||||
HudDrawPowerBomb(TRUE);
|
||||
@ -1142,12 +1165,12 @@ void HUDUpdateGfx(void)
|
||||
{
|
||||
if (!gSamusWeaponInfo.missilesSelected)
|
||||
{
|
||||
DMA_SET(3, sSuperMissileHUDGfx_Inactive, VRAM_BASE + 0x10E80, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sSuperMissileHUDGfx_Inactive, VRAM_BASE + 0x10E80, C_32_2_16(DMA_ENABLE, 32));
|
||||
gSuperMissileHighlightStatus = HIGHLIGHT_STATUS_NOT_HIGHLIGHTED;
|
||||
}
|
||||
else
|
||||
{
|
||||
DMA_SET(3, sSuperMissileHUDGfx_Selected, VRAM_BASE + 0x10E80, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sSuperMissileHUDGfx_Selected, VRAM_BASE + 0x10E80, C_32_2_16(DMA_ENABLE, 32));
|
||||
gSuperMissileHighlightStatus = HIGHLIGHT_STATUS_SELECTED;
|
||||
}
|
||||
|
||||
@ -1160,7 +1183,7 @@ void HUDUpdateGfx(void)
|
||||
{
|
||||
if (!gSamusWeaponInfo.missilesSelected)
|
||||
{
|
||||
DMA_SET(3, sSuperMissileHUDGfx_Inactive, VRAM_BASE + 0x10E80, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sSuperMissileHUDGfx_Inactive, VRAM_BASE + 0x10E80, C_32_2_16(DMA_ENABLE, 32));
|
||||
gSuperMissileHighlightStatus = HIGHLIGHT_STATUS_NOT_HIGHLIGHTED;
|
||||
|
||||
HudDrawSuperMissiles(TRUE);
|
||||
@ -1168,7 +1191,7 @@ void HUDUpdateGfx(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
DMA_SET(3, sSuperMissileHUDGfx_Active, VRAM_BASE + 0x10E80, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sSuperMissileHUDGfx_Active, VRAM_BASE + 0x10E80, C_32_2_16(DMA_ENABLE, 32));
|
||||
gSuperMissileHighlightStatus = HIGHLIGHT_STATUS_HIGHLIGHTED;
|
||||
|
||||
HudDrawSuperMissiles(TRUE);
|
||||
@ -1178,7 +1201,7 @@ void HUDUpdateGfx(void)
|
||||
{
|
||||
if (gSamusWeaponInfo.weaponHighlighted & WH_SUPER_MISSILE)
|
||||
{
|
||||
DMA_SET(3, sSuperMissileHUDGfx_Active, VRAM_BASE + 0x10E80, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sSuperMissileHUDGfx_Active, VRAM_BASE + 0x10E80, C_32_2_16(DMA_ENABLE, 32));
|
||||
gSuperMissileHighlightStatus = HIGHLIGHT_STATUS_HIGHLIGHTED;
|
||||
|
||||
HudDrawSuperMissiles(TRUE);
|
||||
@ -1187,7 +1210,7 @@ void HUDUpdateGfx(void)
|
||||
{
|
||||
if (gSamusWeaponInfo.missilesSelected)
|
||||
{
|
||||
DMA_SET(3, sSuperMissileHUDGfx_Selected, VRAM_BASE + 0x10E80, DMA_ENABLE << 16 | 32);
|
||||
DMA_SET(3, sSuperMissileHUDGfx_Selected, VRAM_BASE + 0x10E80, C_32_2_16(DMA_ENABLE, 32));
|
||||
gSuperMissileHighlightStatus = HIGHLIGHT_STATUS_SELECTED;
|
||||
|
||||
HudDrawSuperMissiles(TRUE);
|
||||
@ -1199,7 +1222,7 @@ void HUDUpdateGfx(void)
|
||||
if (gUpdateMinimapFlag != MINIMAP_UPDATE_FLAG_NONE)
|
||||
{
|
||||
gUpdateMinimapFlag--;
|
||||
DMA_SET(3, (gMinimapTilesGfx + gUpdateMinimapFlag * 24), (VRAM_BASE + 0x11F80) + (gUpdateMinimapFlag * 1024), DMA_ENABLE << 16 | 48);
|
||||
DMA_SET(3, (gMinimapTilesGfx + gUpdateMinimapFlag * 24), (VRAM_BASE + 0x11F80) + (gUpdateMinimapFlag * 1024), C_32_2_16(DMA_ENABLE, 48));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1246,10 +1269,10 @@ void HudDraw(void)
|
||||
HudDrawPowerBomb(FALSE);
|
||||
HudDrawSuperMissiles(FALSE);
|
||||
|
||||
HUDUpdateGfx();
|
||||
HudUpdateGfx();
|
||||
|
||||
if (gEquipment.suitType == SUIT_SUITLESS)
|
||||
HudDrawSuitless();
|
||||
|
||||
HUDUpdateOAM();
|
||||
HudUpdateOam();
|
||||
}
|
||||
|
@ -21,7 +21,7 @@
|
||||
*/
|
||||
void HudGenericLoadCommonSpriteGfx(void)
|
||||
{
|
||||
DMA_SET(3, sCommonSpritesGfx, VRAM_BASE + 0x10800, C_32_2_16(DMA_ENABLE, 0x1C00));
|
||||
DMA_SET(3, sCommonSpritesGfx, VRAM_OBJ + 0x800, C_32_2_16(DMA_ENABLE, 0x1C00));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -900,7 +900,7 @@ void UpdateAnimatedPaletteAfterTransitionOrReload(void)
|
||||
{
|
||||
if (gPauseScreenFlag)
|
||||
{
|
||||
if (gAnimatedGraphicsEntry.palette != 0) // FIXME add symbol for ewram address
|
||||
if (gAnimatedGraphicsEntry.palette != 0)
|
||||
DMA_SET(3, ANIMATED_PALETTE_EWRAM, ANIMATED_PALETTE_PALRAM, C_32_2_16(DMA_ENABLE, 16));
|
||||
}
|
||||
else
|
||||
|
@ -11,7 +11,7 @@ void InGameTimerUpdate(void)
|
||||
return;
|
||||
|
||||
gInGameTimer.frames++;
|
||||
if (gInGameTimer.frames > 63)
|
||||
if (gInGameTimer.frames >= SIMULATED_FPS)
|
||||
{
|
||||
gInGameTimer.frames = 0;
|
||||
gInGameTimer.seconds++;
|
||||
|
93
src/intro.c
93
src/intro.c
@ -73,8 +73,8 @@ void IntroInit(void)
|
||||
DMA_SET(3, &zero, &gNonGameplayRAM, C_32_2_16(DMA_ENABLE | DMA_SRC_FIXED | DMA_32BIT, sizeof(gNonGameplayRAM) / 4));
|
||||
|
||||
INTRO_DATA.scaling = Q_8_8(.125f);
|
||||
INTRO_DATA.charDrawerX = 0x38;
|
||||
INTRO_DATA.charDrawerY = 0x60;
|
||||
INTRO_DATA.charDrawerX = 56;
|
||||
INTRO_DATA.charDrawerY = SCREEN_SIZE_Y / 2 + 16;
|
||||
|
||||
ClearGfxRam();
|
||||
|
||||
@ -116,12 +116,12 @@ void IntroInit(void)
|
||||
INTRO_DATA.dispcnt = DCNT_OBJ;
|
||||
INTRO_DATA.bldcnt = BLDCNT_SCREEN_FIRST_TARGET | BLDCNT_ALPHA_BLENDING_EFFECT | BLDCNT_BRIGHTNESS_INCREASE_EFFECT;
|
||||
|
||||
gWrittenToBLDY_NonGameplay = 16;
|
||||
gWrittenToBLDY_NonGameplay = BLDY_MAX_VALUE;
|
||||
|
||||
IntroVBlank();
|
||||
}
|
||||
|
||||
void IntroTextProcessOAM(void)
|
||||
void IntroTextProcessOam(void)
|
||||
{
|
||||
const u16* src;
|
||||
u16* dst;
|
||||
@ -150,17 +150,17 @@ void IntroTextProcessOAM(void)
|
||||
|
||||
dst = (u16*)gOamData;
|
||||
i = 0;
|
||||
yPosition = BLOCK_SIZE * 2;
|
||||
xPosition = BLOCK_SIZE + QUARTER_BLOCK_SIZE * 3 + PIXEL_SIZE * 2;
|
||||
yPosition = SCREEN_SIZE_Y * 0.8f;
|
||||
xPosition = SCREEN_SIZE_X / 2;
|
||||
|
||||
if (INTRO_DATA.nextCharacter != 0)
|
||||
if (INTRO_DATA.finalCharacter != 0)
|
||||
{
|
||||
src = INTRO_DATA.pTextOamFramePointer;
|
||||
partCount = *src++;
|
||||
for (; i < partCount; i++)
|
||||
{
|
||||
// Brackets are necesary
|
||||
if (i >= INTRO_DATA.nextCharacter)
|
||||
if (i >= INTRO_DATA.finalCharacter)
|
||||
{
|
||||
break;
|
||||
}
|
||||
@ -176,7 +176,7 @@ void IntroTextProcessOAM(void)
|
||||
gOamData[i].split.x = MOD_AND(part + xPosition, 512);
|
||||
*dst++ = *src++;
|
||||
|
||||
if (i == INTRO_DATA.nextCharacter - 1)
|
||||
if (i == INTRO_DATA.finalCharacter - 1)
|
||||
gOamData[i].split.paletteNum = INTRO_DATA.characterPalette;
|
||||
else
|
||||
gOamData[i].split.paletteNum = 0;
|
||||
@ -222,21 +222,21 @@ void IntroTextProcessOAM(void)
|
||||
u8 IntroProcessText(u8 action, u16 indent)
|
||||
{
|
||||
u8 dontProcess;
|
||||
u8 flag_unk2;
|
||||
u8 skipCharacter;
|
||||
u8 newLine;
|
||||
u8 flag_unk3;
|
||||
s32 previousY;
|
||||
s32 previousX;
|
||||
s32 newY;
|
||||
|
||||
// TODO macro
|
||||
do{newY = (s16)indent;}while(0);
|
||||
|
||||
dontProcess = FALSE;
|
||||
flag_unk2 = FALSE;
|
||||
skipCharacter = FALSE;
|
||||
newLine = FALSE;
|
||||
flag_unk3 = FALSE;
|
||||
|
||||
previousY = INTRO_DATA.charDrawerX;
|
||||
previousX = INTRO_DATA.charDrawerX;
|
||||
|
||||
switch (action)
|
||||
{
|
||||
@ -256,7 +256,7 @@ u8 IntroProcessText(u8 action, u16 indent)
|
||||
case INTRO_TEXT_ACTION_START:
|
||||
if (INTRO_DATA.unk_A > 3)
|
||||
{
|
||||
INTRO_DATA.nextCharacter += 2;
|
||||
INTRO_DATA.finalCharacter += 2;
|
||||
INTRO_DATA.currentCharacter++;
|
||||
flag_unk3++;
|
||||
}
|
||||
@ -265,10 +265,12 @@ u8 IntroProcessText(u8 action, u16 indent)
|
||||
|
||||
case INTRO_TEXT_ACTION_SPACE:
|
||||
if (INTRO_DATA.unk_A == 1)
|
||||
{
|
||||
INTRO_DATA.charDrawerX += 8;
|
||||
}
|
||||
else if (INTRO_DATA.unk_A > 3)
|
||||
{
|
||||
INTRO_DATA.nextCharacter++;
|
||||
INTRO_DATA.finalCharacter++;
|
||||
INTRO_DATA.currentCharacter++;
|
||||
flag_unk3++;
|
||||
}
|
||||
@ -279,8 +281,8 @@ u8 IntroProcessText(u8 action, u16 indent)
|
||||
case INTRO_TEXT_ACTION_NEW_LINE:
|
||||
newLine++;
|
||||
|
||||
case INTRO_TEXT_ACTION_UNKNOWN:
|
||||
flag_unk2++;
|
||||
case INTRO_TEXT_ACTION_SKIP_CHARACTER:
|
||||
skipCharacter++;
|
||||
}
|
||||
|
||||
if (!dontProcess)
|
||||
@ -297,10 +299,10 @@ u8 IntroProcessText(u8 action, u16 indent)
|
||||
if (newLine)
|
||||
{
|
||||
INTRO_DATA.charDrawerX = newY;
|
||||
INTRO_DATA.charDrawerY += 0x18;
|
||||
INTRO_DATA.charDrawerY += 24;
|
||||
}
|
||||
else
|
||||
INTRO_DATA.charDrawerX += 0x8;
|
||||
INTRO_DATA.charDrawerX += 8;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
@ -309,15 +311,16 @@ u8 IntroProcessText(u8 action, u16 indent)
|
||||
|
||||
case 5:
|
||||
INTRO_DATA.currentCharacter++;
|
||||
if (flag_unk2)
|
||||
INTRO_DATA.nextCharacter += 2;
|
||||
if (skipCharacter)
|
||||
INTRO_DATA.finalCharacter += 2;
|
||||
else
|
||||
INTRO_DATA.nextCharacter++;
|
||||
INTRO_DATA.finalCharacter++;
|
||||
flag_unk3++;
|
||||
}
|
||||
}
|
||||
|
||||
if (previousY != INTRO_DATA.charDrawerX && action != INTRO_TEXT_ACTION_SPACE)
|
||||
// Check play letter sound
|
||||
if (previousX != INTRO_DATA.charDrawerX && action != INTRO_TEXT_ACTION_SPACE)
|
||||
SoundPlay(SOUND_INTRO_TEXT_LETTER);
|
||||
|
||||
if (flag_unk3 != 0)
|
||||
@ -354,7 +357,7 @@ u8 IntroEmergencyOrder(void)
|
||||
if (textResult == 2)
|
||||
{
|
||||
INTRO_DATA.stage++;
|
||||
INTRO_DATA.nextCharacter = 0;
|
||||
INTRO_DATA.finalCharacter = 0;
|
||||
INTRO_DATA.currentCharacter = 0;
|
||||
INTRO_DATA.unk_A = 0;
|
||||
INTRO_DATA.timer = 0;
|
||||
@ -367,7 +370,7 @@ u8 IntroEmergencyOrder(void)
|
||||
else
|
||||
{
|
||||
INTRO_DATA.pTextOamFramePointer = sIntroEmergencyOrderTextOAM;
|
||||
IntroTextProcessOAM();
|
||||
IntroTextProcessOam();
|
||||
if (textResult != 0)
|
||||
INTRO_DATA.unk_A = 0;
|
||||
else
|
||||
@ -381,7 +384,7 @@ u8 IntroEmergencyOrder(void)
|
||||
* @brief 807b8 | 134 | Processes the OAM for the ship flying towards the camera
|
||||
*
|
||||
*/
|
||||
void IntroShipFlyingTowardsCameraProcessOAM(void)
|
||||
void IntroShipFlyingTowardsCameraProcessOam(void)
|
||||
{
|
||||
const u16* src;
|
||||
u16* dst;
|
||||
@ -393,15 +396,15 @@ void IntroShipFlyingTowardsCameraProcessOAM(void)
|
||||
|
||||
dst = (u16*)gOamData;
|
||||
|
||||
if (INTRO_DATA.timer < 4)
|
||||
if (INTRO_DATA.timer < CONVERT_SECONDS(1.f / 15))
|
||||
INTRO_DATA.shipFlyingTowardsCameraY += 8;
|
||||
else if (INTRO_DATA.timer < 8)
|
||||
else if (INTRO_DATA.timer < CONVERT_SECONDS(2.f / 15))
|
||||
INTRO_DATA.shipFlyingTowardsCameraY += 6;
|
||||
else if (INTRO_DATA.timer < 16)
|
||||
else if (INTRO_DATA.timer < CONVERT_SECONDS(4.f / 15))
|
||||
INTRO_DATA.shipFlyingTowardsCameraY += 3;
|
||||
else if (INTRO_DATA.timer < 20)
|
||||
else if (INTRO_DATA.timer < CONVERT_SECONDS(5.f / 15))
|
||||
INTRO_DATA.shipFlyingTowardsCameraY += 1;
|
||||
else if (INTRO_DATA.timer < 28)
|
||||
else if (INTRO_DATA.timer < CONVERT_SECONDS(7.f / 15))
|
||||
INTRO_DATA.shipFlyingTowardsCameraY -= 1;
|
||||
|
||||
if (INTRO_DATA.scaling < Q_8_8(.5f))
|
||||
@ -457,24 +460,24 @@ u8 IntroShipFlyingTowardsCamera(void)
|
||||
gWrittenToBLDALPHA_H = 7;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
case DELTA_TIME:
|
||||
INTRO_DATA.dispcnt = DCNT_BG0 | DCNT_OBJ;
|
||||
SoundPlay(MUSIC_INTRO);
|
||||
SoundPlay(SOUND_INTRO_SHIP_FLYING_TOWARDS_CAMERA);
|
||||
break;
|
||||
|
||||
case 0x20:
|
||||
case CONVERT_SECONDS(.5f + 1.f / 30):
|
||||
INTRO_DATA.dispcnt = 0;
|
||||
INTRO_DATA.bldcnt = 0;
|
||||
INTRO_DATA.stage++;
|
||||
ended = TRUE;
|
||||
}
|
||||
|
||||
IntroShipFlyingTowardsCameraProcessOAM();
|
||||
IntroShipFlyingTowardsCameraProcessOam();
|
||||
if (ended)
|
||||
INTRO_DATA.timer = 0;
|
||||
else
|
||||
INTRO_DATA.timer++;
|
||||
APPLY_DELTA_TIME_INC(INTRO_DATA.timer);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
@ -496,20 +499,20 @@ u8 IntroSamusInHerShip(void)
|
||||
LZ77UncompVRAM(sIntroSamusInHerShipGfx, VRAM_BASE);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
case DELTA_TIME * 1:
|
||||
LZ77UncompVRAM(sIntroSamusInHerShipTileTable, VRAM_BASE + 0x8000);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
case DELTA_TIME * 2:
|
||||
DMA_SET(3, sIntroSamusInHerShipPal, PALRAM_BASE, C_32_2_16(DMA_ENABLE, ARRAY_SIZE(sIntroSamusInHerShipPal)));
|
||||
break;
|
||||
|
||||
case 3:
|
||||
case DELTA_TIME * 3:
|
||||
INTRO_DATA.dispcnt = DCNT_BG0;
|
||||
SoundPlay(SOUND_INTRO_SHIP_INTERIOR);
|
||||
break;
|
||||
|
||||
case 0x50:
|
||||
case CONVERT_SECONDS(1.f) + ONE_THIRD_SECOND:
|
||||
INTRO_DATA.dispcnt = 0;
|
||||
SoundFade(SOUND_INTRO_SHIP_INTERIOR, 0);
|
||||
INTRO_DATA.stage++;
|
||||
@ -534,7 +537,9 @@ u8 IntroSamusInHerShip(void)
|
||||
INTRO_DATA.unk_A = 0;
|
||||
}
|
||||
else
|
||||
INTRO_DATA.timer++;
|
||||
{
|
||||
APPLY_DELTA_TIME_INC(INTRO_DATA.timer);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
@ -568,7 +573,7 @@ u8 IntroExterminate(void)
|
||||
if (textResult == 2)
|
||||
{
|
||||
INTRO_DATA.stage++;
|
||||
INTRO_DATA.nextCharacter = 0;
|
||||
INTRO_DATA.finalCharacter = 0;
|
||||
INTRO_DATA.currentCharacter = 0;
|
||||
INTRO_DATA.unk_A = 0;
|
||||
INTRO_DATA.timer = 0;
|
||||
@ -580,7 +585,7 @@ u8 IntroExterminate(void)
|
||||
else
|
||||
{
|
||||
INTRO_DATA.pTextOamFramePointer = sIntroExterminateAllTextOAM;
|
||||
IntroTextProcessOAM();
|
||||
IntroTextProcessOam();
|
||||
if (textResult != 0)
|
||||
INTRO_DATA.unk_A = 0;
|
||||
else
|
||||
@ -761,7 +766,7 @@ u8 IntroDefeat(void)
|
||||
if (textResult == 2)
|
||||
{
|
||||
INTRO_DATA.stage++;
|
||||
INTRO_DATA.nextCharacter = 0;
|
||||
INTRO_DATA.finalCharacter = 0;
|
||||
INTRO_DATA.currentCharacter = 0;
|
||||
INTRO_DATA.unk_A = 0;
|
||||
INTRO_DATA.timer = 0;
|
||||
@ -771,7 +776,7 @@ u8 IntroDefeat(void)
|
||||
else
|
||||
{
|
||||
INTRO_DATA.pTextOamFramePointer = sIntroDefeatTheTextOAM;
|
||||
IntroTextProcessOAM();
|
||||
IntroTextProcessOam();
|
||||
if (textResult != 0)
|
||||
INTRO_DATA.unk_A = 0;
|
||||
else
|
||||
|
@ -1,5 +1,8 @@
|
||||
#include "sprites_AI/falling_chozo_pillar.h"
|
||||
#include "sprites_AI/ruins_test.h"
|
||||
#include "macros.h"
|
||||
|
||||
#include "gba/display.h"
|
||||
|
||||
#include "data/sprites/falling_chozo_pillar.h"
|
||||
|
||||
@ -21,33 +24,34 @@ void FallingChozoPillar(void)
|
||||
|
||||
switch (gCurrentSprite.pose)
|
||||
{
|
||||
case 0x0:
|
||||
case SPRITE_POSE_UNINITIALIZED:
|
||||
gCurrentSprite.status |= SPRITE_STATUS_NOT_DRAWN;
|
||||
gCurrentSprite.xPosition += 0x20;
|
||||
gCurrentSprite.xPosition += HALF_BLOCK_SIZE;
|
||||
|
||||
gCurrentSprite.hitboxTop = -0x100;
|
||||
gCurrentSprite.hitboxBottom = 0x0;
|
||||
gCurrentSprite.hitboxLeft = -0x80;
|
||||
gCurrentSprite.hitboxRight = 0x80;
|
||||
gCurrentSprite.hitboxTop = -(BLOCK_SIZE * 4);
|
||||
gCurrentSprite.hitboxBottom = 0;
|
||||
gCurrentSprite.hitboxLeft = -(BLOCK_SIZE * 2);
|
||||
gCurrentSprite.hitboxRight = BLOCK_SIZE * 2;
|
||||
|
||||
gCurrentSprite.drawDistanceTop = 0x40;
|
||||
gCurrentSprite.drawDistanceBottom = 0x0;
|
||||
gCurrentSprite.drawDistanceHorizontal = 0x20;
|
||||
gCurrentSprite.drawDistanceTop = SUB_PIXEL_TO_PIXEL(BLOCK_SIZE * 4);
|
||||
gCurrentSprite.drawDistanceBottom = SUB_PIXEL_TO_PIXEL(0);
|
||||
gCurrentSprite.drawDistanceHorizontal = SUB_PIXEL_TO_PIXEL(BLOCK_SIZE * 2);
|
||||
|
||||
gCurrentSprite.samusCollision = SSC_NONE;
|
||||
gCurrentSprite.bgPriority = gIoRegistersBackup.BG1CNT & 0x3;
|
||||
gCurrentSprite.bgPriority = BGCNT_GET_PRIORITY(gIoRegistersBackup.BG1CNT);
|
||||
|
||||
gCurrentSprite.pOam = sFallingChozoPillarOAM_Falling;
|
||||
gCurrentSprite.currentAnimationFrame = 0x0;
|
||||
gCurrentSprite.animationDurationCounter = 0x0;
|
||||
gCurrentSprite.currentAnimationFrame = 0;
|
||||
gCurrentSprite.animationDurationCounter = 0;
|
||||
|
||||
gCurrentSprite.pose = FALLING_CHOZO_PILLAR_POSE_CHECK_SUIT_ANIM_ENDED;
|
||||
gCurrentSprite.yPositionSpawn = 0x100;
|
||||
gCurrentSprite.work0 = 0x0;
|
||||
gCurrentSprite.yPositionSpawn = CONVERT_SECONDS(4.25f + 1.f / 60);
|
||||
gCurrentSprite.work0 = 0;
|
||||
break;
|
||||
|
||||
case FALLING_CHOZO_PILLAR_POSE_CHECK_SUIT_ANIM_ENDED:
|
||||
if (gSubSpriteData1.workVariable3 == RUINS_TEST_FIGHT_STAGE_SUIT_ANIM_ENDED) // Check suit animation ended
|
||||
// Check suit animation ended
|
||||
if (gSubSpriteData1.workVariable3 == RUINS_TEST_FIGHT_STAGE_SUIT_ANIM_ENDED)
|
||||
{
|
||||
gCurrentSprite.status &= ~SPRITE_STATUS_NOT_DRAWN;
|
||||
gCurrentSprite.pose = FALLING_CHOZO_PILLAR_POSE_CHECK_ON_SCREEN;
|
||||
@ -64,38 +68,39 @@ void FallingChozoPillar(void)
|
||||
break;
|
||||
|
||||
case FALLING_CHOZO_PILLAR_POSE_FALLING:
|
||||
if (gCurrentSprite.yPositionSpawn != 0x0)
|
||||
if (gCurrentSprite.yPositionSpawn != 0)
|
||||
{
|
||||
if (!(gCurrentSprite.work0++ & 0xF))
|
||||
{
|
||||
// Start screen shake/play particle
|
||||
ScreenShakeStartVertical(0x14, 0x81);
|
||||
if (gFrameCounter8Bit & 0x1)
|
||||
ScreenShakeStartVertical(ONE_THIRD_SECOND, 0x80 | 1);
|
||||
if (MOD_AND(gFrameCounter8Bit, CONVERT_SECONDS(1.f / 30)))
|
||||
effect = PE_SECOND_MEDIUM_DUST;
|
||||
else
|
||||
effect = PE_SECOND_TWO_MEDIUM_DUST;
|
||||
|
||||
ParticleSet(gCurrentSprite.yPosition - 0x100, gCurrentSprite.xPosition - 0x38 + gSpriteRng * 0x8, effect);
|
||||
ParticleSet(gCurrentSprite.yPosition - BLOCK_SIZE * 4,
|
||||
gCurrentSprite.xPosition - (BLOCK_SIZE - EIGHTH_BLOCK_SIZE) + gSpriteRng * EIGHTH_BLOCK_SIZE, effect);
|
||||
}
|
||||
|
||||
gCurrentSprite.yPositionSpawn--; // Timer
|
||||
// Timer
|
||||
APPLY_DELTA_TIME_DEC(gCurrentSprite.yPositionSpawn);
|
||||
gCurrentSprite.yPosition++; // Move down
|
||||
}
|
||||
else
|
||||
{
|
||||
// Timer done, set fallen behavior
|
||||
gCurrentSprite.pose = FALLING_CHOZO_PILLAR_POSE_FALLEN;
|
||||
ScreenShakeStartVertical(0x3C, 0x81);
|
||||
gCurrentSprite.work0 = 0x28;
|
||||
ScreenShakeStartVertical(CONVERT_SECONDS(1.f), 0x80 | 1);
|
||||
gCurrentSprite.work0 = TWO_THIRD_SECOND;
|
||||
}
|
||||
break;
|
||||
|
||||
case FALLING_CHOZO_PILLAR_POSE_FALLEN:
|
||||
gCurrentSprite.work0--;
|
||||
if (gCurrentSprite.work0 == 0x0)
|
||||
APPLY_DELTA_TIME_DEC(gCurrentSprite.work0);
|
||||
if (gCurrentSprite.work0 == 0)
|
||||
{
|
||||
// Unknown, AI doesn't handle this case, most likely removed code
|
||||
gCurrentSprite.pose = 0x29;
|
||||
gCurrentSprite.pose = FALLING_CHOZO_PILLAR_POSE_IDLE;
|
||||
SoundPlay(SOUND_CHOZO_PILLAR_FELL);
|
||||
}
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user