mirror of
https://github.com/YohannDR/mzm.git
synced 2024-10-07 02:23:20 +00:00
Full item banner AI
This commit is contained in:
parent
dd513d7849
commit
7e6d1f6bdc
@ -1,6 +1,7 @@
|
||||
# Metroid - Zero Mission Decomp
|
||||
|
||||
This is a work in progress decompilation of Metroid - Zero Mission.
|
||||
Progress can be seen here : https://docs.google.com/spreadsheets/d/1X8XarD5evY8ZI7r_GQqh1pYmdVMbBcINYfRBUlogmKY/edit#gid=0
|
||||
|
||||
**It's very likely that the code of this repo doesn't build, and even if it does it probably won't match, this is normal**
|
||||
|
||||
|
@ -3001,8 +3001,8 @@ lbl_0800407c:
|
||||
lbl_08004084:
|
||||
.byte 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00
|
||||
|
||||
thumb_func_start sub_0800408c
|
||||
sub_0800408c: @ 0x0800408c
|
||||
thumb_func_start backup_track_data2_sound_channels
|
||||
backup_track_data2_sound_channels: @ 0x0800408c
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
@ -3105,8 +3105,8 @@ lbl_0800413a:
|
||||
.align 2, 0
|
||||
lbl_0800414c: .4byte 0x030039bc
|
||||
|
||||
thumb_func_start sub_08004150
|
||||
sub_08004150: @ 0x08004150
|
||||
thumb_func_start retrieve_track_data2_sound_channels
|
||||
retrieve_track_data2_sound_channels: @ 0x08004150
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
|
@ -18738,7 +18738,7 @@ lbl_0801b7b0:
|
||||
strh r0, [r1, #4]
|
||||
ldrb r1, [r1, #0x1f]
|
||||
adds r0, r6, #0
|
||||
bl sub_0806f258
|
||||
bl start_message
|
||||
pop {r4, r5, r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
@ -18833,7 +18833,7 @@ lbl_0801b856:
|
||||
adds r1, #0x2e
|
||||
movs r0, #1
|
||||
strb r0, [r1]
|
||||
bl sub_0800408c
|
||||
bl backup_track_data2_sound_channels
|
||||
cmp r5, #0xc
|
||||
beq lbl_0801b886
|
||||
cmp r5, #0xf
|
||||
@ -18862,7 +18862,7 @@ lbl_0801b8a8:
|
||||
adds r0, #0x2e
|
||||
movs r1, #1
|
||||
strb r1, [r0]
|
||||
bl sub_0800408c
|
||||
bl backup_track_data2_sound_channels
|
||||
movs r0, #0x37
|
||||
b lbl_0801b8ca
|
||||
.align 2, 0
|
||||
@ -18891,7 +18891,7 @@ lbl_0801b8d2:
|
||||
cmp r5, #6
|
||||
bne lbl_0801b8ec
|
||||
lbl_0801b8e8:
|
||||
bl sub_0800408c
|
||||
bl backup_track_data2_sound_channels
|
||||
lbl_0801b8ec:
|
||||
movs r0, #0x3a
|
||||
bl play_sound1
|
||||
@ -19148,7 +19148,7 @@ lbl_0801bad4:
|
||||
cmp r5, #6
|
||||
bne lbl_0801baea
|
||||
lbl_0801bae6:
|
||||
bl sub_08004150
|
||||
bl retrieve_track_data2_sound_channels
|
||||
lbl_0801baea:
|
||||
ldr r1, lbl_0801bb08 @ =0x03001606
|
||||
movs r0, #0
|
||||
@ -19438,7 +19438,7 @@ lbl_0801bd62:
|
||||
lbl_0801bd6c: .4byte 0x00000209
|
||||
lbl_0801bd70: .4byte 0x03000738
|
||||
lbl_0801bd74:
|
||||
bl sub_08073ba4
|
||||
bl save_file
|
||||
cmp r0, #0
|
||||
beq lbl_0801bd80
|
||||
mov r0, r8
|
||||
@ -157558,7 +157558,7 @@ lbl_08060afc:
|
||||
bl sub_08003f6c
|
||||
b lbl_08060b10
|
||||
lbl_08060b02:
|
||||
bl sub_08004150
|
||||
bl retrieve_track_data2_sound_channels
|
||||
b lbl_08060b10
|
||||
lbl_08060b08:
|
||||
movs r0, #0xe
|
||||
@ -186649,8 +186649,8 @@ lbl_0806f24e:
|
||||
bx r1
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0806f258
|
||||
sub_0806f258: @ 0x0806f258
|
||||
thumb_func_start start_message
|
||||
start_message: @ 0x0806f258
|
||||
push {r4, r5, r6, r7, lr}
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
@ -196200,8 +196200,8 @@ lbl_08073b9a:
|
||||
pop {r1}
|
||||
bx r1
|
||||
|
||||
thumb_func_start sub_08073ba4
|
||||
sub_08073ba4: @ 0x08073ba4
|
||||
thumb_func_start save_file
|
||||
save_file: @ 0x08073ba4
|
||||
push {lr}
|
||||
sub sp, #4
|
||||
ldr r1, lbl_08073bd4 @ =0x03000043
|
||||
|
@ -94,7 +94,6 @@
|
||||
#include "../src/sprites_AI/black_space_pirate.h"
|
||||
#include "../src/sprites_AI/escape_ship_pirate.h"
|
||||
#include "../src/sprites_AI/chozo_ball.h"
|
||||
#include "../src/sprites_AI/save_yes_no_cursor.h"
|
||||
#include "../src/sprites_AI/chozo_statue_movement.h"
|
||||
|
||||
/* generic_data.c */
|
||||
|
@ -26,6 +26,7 @@ SECTIONS {
|
||||
. = 0x0000003D; gDisableScrolling = .;
|
||||
. = 0x00000042; gSkipDoorTransition = .;
|
||||
. = 0x00000043; gDisableSoftreset = .;
|
||||
. = 0x00000044; gCollectingTank = .;
|
||||
. = 0x00000049; gDisablePause = .;
|
||||
. = 0x00000049; gHideHud = .;
|
||||
. = 0x00000054; gCurrentArea = .;
|
||||
@ -71,6 +72,7 @@ SECTIONS {
|
||||
. = 0x000007F1; gPreviousCollisionCheck = .;
|
||||
. = 0x000007F1; gCollisionDebris = .;
|
||||
. = 0x000007F3; gSpriteDrawOrder = .;
|
||||
. = 0x0000080C; gBossWork = .;
|
||||
. = 0x0000083C; gSpriteRNG = .;
|
||||
. = 0x00000840; gParticleEffects = .;
|
||||
. = 0x00000918; gCurrentParticleEffectOAMFramePointer = .;
|
||||
|
@ -9,7 +9,8 @@ u8 EscapeDetermineTimer(void)
|
||||
if (EventFunction(EVENT_ACTION_CHECKING, EVENT_MOTHER_BRAIN_KILLED))
|
||||
return ESCAPE_MOTHER_BRAIN;
|
||||
}
|
||||
else if (!EventFunction(EVENT_ACTION_CHECKING, EVENT_ESCAPED_CHOZODIA) && EventFunction(EVENT_ACTION_CHECKING, EVENT_MECHA_RIDLEY_KILLED))
|
||||
else if (!EventFunction(EVENT_ACTION_CHECKING, EVENT_ESCAPED_CHOZODIA) &&
|
||||
EventFunction(EVENT_ACTION_CHECKING, EVENT_MECHA_RIDLEY_KILLED))
|
||||
return ESCAPE_MECHA_RIDLEY;
|
||||
return ESCAPE_NONE;
|
||||
}
|
||||
@ -64,7 +65,7 @@ void EscapeSetTimer(void)
|
||||
gEscapeTimerCounter = 0xFF;
|
||||
if (escape == ESCAPE_MOTHER_BRAIN)
|
||||
{
|
||||
if (gDifficulty == 0x0)
|
||||
if (gDifficulty == DIFF_EASY)
|
||||
{
|
||||
gEscapeTimerDigits.hundredths = 0x0;
|
||||
gEscapeTimerDigits.tenths = 0x0;
|
||||
@ -73,7 +74,7 @@ void EscapeSetTimer(void)
|
||||
gEscapeTimerDigits.minutesOnes = 0x3;
|
||||
gEscapeTimerDigits.minutesTens = 0x0;
|
||||
}
|
||||
else if (gDifficulty == 0x2)
|
||||
else if (gDifficulty == DIFF_HARD)
|
||||
{
|
||||
gEscapeTimerDigits.hundredths = 0x0;
|
||||
gEscapeTimerDigits.tenths = 0x0;
|
||||
@ -94,7 +95,7 @@ void EscapeSetTimer(void)
|
||||
}
|
||||
else if (escape == ESCAPE_MECHA_RIDLEY)
|
||||
{
|
||||
if (gDifficulty == 0x2)
|
||||
if (gDifficulty == DIFF_HARD)
|
||||
{
|
||||
gEscapeTimerDigits.hundredths = 0x0;
|
||||
gEscapeTimerDigits.tenths = 0x0;
|
||||
|
@ -80,6 +80,7 @@ extern u8 gResetGame;
|
||||
extern u8 gDisableScrolling;
|
||||
extern u8 gSkipDoorTransition;
|
||||
extern u8 gDisableSoftreset;
|
||||
extern i8 gCollectingTank;
|
||||
extern u8 gDisablePause;
|
||||
extern u8 gCurrentArea;
|
||||
extern u8 gCurrentRoom;
|
||||
|
@ -101,7 +101,7 @@ u8 LocationTextGetNorfair(void)
|
||||
u8 lt;
|
||||
|
||||
lt = LT_INVALID;
|
||||
switch(gCurrentRoom)
|
||||
switch (gCurrentRoom)
|
||||
{
|
||||
case 0x24: // Save room 1
|
||||
case 0x27: // Save room 2
|
||||
@ -132,7 +132,7 @@ u8 LocationTextGetRidley(void)
|
||||
u8 lt;
|
||||
|
||||
lt = LT_INVALID;
|
||||
switch(gCurrentRoom)
|
||||
switch (gCurrentRoom)
|
||||
{
|
||||
case 0x1: // Save room 1
|
||||
case 0x14: // Save room 2
|
||||
@ -160,7 +160,7 @@ u8 LocationTextGetChozodia(void)
|
||||
u8 lt;
|
||||
|
||||
lt = LT_INVALID;
|
||||
switch(gCurrentRoom)
|
||||
switch (gCurrentRoom)
|
||||
{
|
||||
case 0x0: // Suitless spawn room
|
||||
case 0x22: // Crateria passage with missile tank room
|
||||
@ -192,7 +192,7 @@ u8 LocationTextGetTourian(void)
|
||||
u8 lt;
|
||||
|
||||
lt = LT_INVALID;
|
||||
switch(gCurrentRoom)
|
||||
switch (gCurrentRoom)
|
||||
{
|
||||
case 0x6: // Save room 1
|
||||
case 0xB: // Save room 2
|
||||
|
28
src/sprite.h
28
src/sprite.h
@ -19,6 +19,7 @@ extern u8 gPreviousVerticalCollisionCheck;
|
||||
extern u8 gPreviousCollisionCheck;
|
||||
extern u8 gIgnoreSamusAndSpriteCollision;
|
||||
extern u8 gSpriteDrawOrder[24];
|
||||
extern struct BossWork gBossWork;
|
||||
extern u8 gSpriteRNG;
|
||||
|
||||
// Defines
|
||||
@ -449,6 +450,33 @@ struct SpriteData {
|
||||
u8 absolutePaletteRow;
|
||||
};
|
||||
|
||||
struct BossWork {
|
||||
u16 work1; // Usually spawn Y
|
||||
u16 work2; // Usually spawn X
|
||||
u16 work3;
|
||||
u16 work4; // Usually health
|
||||
u16 work5;
|
||||
u16 work6;
|
||||
u16 work7;
|
||||
u16 work8;
|
||||
u16 work9;
|
||||
u16 work10;
|
||||
u16 work11; // Completion percentage, only used by mecha ridley
|
||||
u16 work12;
|
||||
u16 work13;
|
||||
u16 work14;
|
||||
u16 work15;
|
||||
u16 work16;
|
||||
u16 work17;
|
||||
u16 work18;
|
||||
u16 work19;
|
||||
u16 work20;
|
||||
u16 work21;
|
||||
u16 work22;
|
||||
u16 work23;
|
||||
u16 work24;
|
||||
};
|
||||
|
||||
// Functions
|
||||
|
||||
void SpriteUpdate(void);
|
||||
|
@ -448,6 +448,10 @@ void AreaBannerCheckRemovingAnimEnded(void)
|
||||
gCurrentSprite.status = 0x0; // Kill sprite
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 3c884 | e0 | Area banner AI
|
||||
*
|
||||
*/
|
||||
void AreaBanner(void)
|
||||
{
|
||||
gCurrentSprite.ignoreSamusCollisionTimer = 0x1;
|
||||
|
@ -55,7 +55,7 @@ void AtomicChaseSamus(void)
|
||||
|
||||
u8 AtomicElectricityCheckAtomicAlive(u8 slot)
|
||||
{
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
void AtomicElectriciytInit(void)
|
||||
|
@ -2,37 +2,780 @@
|
||||
#include "../../data/data.h"
|
||||
#include "../globals.h"
|
||||
|
||||
const u8 sItemBannerGFX[556];
|
||||
const u16 sItemBannerPAL[32];
|
||||
|
||||
const u16 sSaveYesNoCursorOAM_Idle_Frame0[4] = {
|
||||
0x1,
|
||||
0xfc, 0x1fc, OBJ_SPRITE_OAM | 0x21e
|
||||
};
|
||||
|
||||
const u16 sSaveYesNoCursorOAM_Idle_Frame1[4] = {
|
||||
0x1,
|
||||
0xfc, 0x1fd, OBJ_SPRITE_OAM | 0x21e
|
||||
};
|
||||
|
||||
const u16 sSaveYesNoCursorOAM_Idle_Frame2[4] = {
|
||||
0x1,
|
||||
0xfc, 0x1fe, OBJ_SPRITE_OAM | 0x21e
|
||||
};
|
||||
|
||||
const u16 sItemBannerOAM_TwoLinesSpawn_Frame0[4] = {
|
||||
0x1,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, 0x1f8, OBJ_SPRITE_OAM | 0x25c
|
||||
};
|
||||
|
||||
const u16 sItemBannerOAM_TwoLinesSpawn_Frame1[7] = {
|
||||
0x2,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x1e8, OBJ_SPRITE_OAM | 0x25c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, 0x8, OBJ_SPRITE_OAM | 0x25c
|
||||
};
|
||||
|
||||
const u16 sItemBannerOAM_TwoLinesSpawn_Frame2[13] = {
|
||||
0x4,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x1c8, OBJ_SPRITE_OAM | 0x25c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x1e8, OBJ_SPRITE_OAM | 0x25c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x8, OBJ_SPRITE_OAM | 0x25c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, 0x28, OBJ_SPRITE_OAM | 0x25c
|
||||
};
|
||||
|
||||
const u16 sItemBannerOAM_TwoLinesSpawn_Frame3[19] = {
|
||||
0x6,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x1a8, OBJ_SPRITE_OAM | 0x25c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x1c8, OBJ_SPRITE_OAM | 0x25c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x1e8, OBJ_SPRITE_OAM | 0x25c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x8, OBJ_SPRITE_OAM | 0x25c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x28, OBJ_SPRITE_OAM | 0x25c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, 0x48, OBJ_SPRITE_OAM | 0x25c
|
||||
};
|
||||
|
||||
const u16 sItemBannerOAM_TwoLinesSpawn_Frame4[25] = {
|
||||
0x8,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x188, OBJ_SPRITE_OAM | 0x25c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x1a8, OBJ_SPRITE_OAM | 0x25c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x1c8, OBJ_SPRITE_OAM | 0x25c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x1e8, OBJ_SPRITE_OAM | 0x25c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x8, OBJ_SPRITE_OAM | 0x25c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x28, OBJ_SPRITE_OAM | 0x25c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x48, OBJ_SPRITE_OAM | 0x25c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, 0x68, OBJ_SPRITE_OAM | 0x25c
|
||||
};
|
||||
|
||||
const u16 sItemBannerOAM_TwoLinesSpawn_Frame5[49] = {
|
||||
0x10,
|
||||
OBJ_SHAPE_VERTICAL | 0xf8, 0x188, OBJ_SPRITE_OAM | 0x21f,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x200,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x8 | 0x1b0, OBJ_SPRITE_OAM | 0x204,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x8 | 0x1d0, OBJ_SPRITE_OAM | 0x208,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x8 | 0x1f0, OBJ_SPRITE_OAM | 0x20c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x8 | 0x10, OBJ_SPRITE_OAM | 0x210,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x8 | 0x30, OBJ_SPRITE_OAM | 0x214,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x218,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x260,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x8 | 0x1b0, OBJ_SPRITE_OAM | 0x264,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x8 | 0x1d0, OBJ_SPRITE_OAM | 0x268,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x8 | 0x1f0, OBJ_SPRITE_OAM | 0x26c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x8 | 0x10, OBJ_SPRITE_OAM | 0x270,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x8 | 0x30, OBJ_SPRITE_OAM | 0x274,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x278,
|
||||
OBJ_SHAPE_VERTICAL | 0xf8, OBJ_X_FLIP | 0x70, OBJ_SPRITE_OAM | 0x21f
|
||||
};
|
||||
|
||||
const u16 sItemBannerOAM_TwoLinesSpawn_Frame6[49] = {
|
||||
0x10,
|
||||
OBJ_SHAPE_VERTICAL | 0xf8, 0x188, OBJ_SPRITE_OAM | 0x21c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf8, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x200,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf8, OBJ_SIZE_32x8 | 0x1b0, OBJ_SPRITE_OAM | 0x204,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf8, OBJ_SIZE_32x8 | 0x1d0, OBJ_SPRITE_OAM | 0x208,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf8, OBJ_SIZE_32x8 | 0x1f0, OBJ_SPRITE_OAM | 0x20c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf8, OBJ_SIZE_32x8 | 0x10, OBJ_SPRITE_OAM | 0x210,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf8, OBJ_SIZE_32x8 | 0x30, OBJ_SPRITE_OAM | 0x214,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf8, OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x218,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x260,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x8 | 0x1b0, OBJ_SPRITE_OAM | 0x264,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x8 | 0x1d0, OBJ_SPRITE_OAM | 0x268,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x8 | 0x1f0, OBJ_SPRITE_OAM | 0x26c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x8 | 0x10, OBJ_SPRITE_OAM | 0x270,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x8 | 0x30, OBJ_SPRITE_OAM | 0x274,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x278,
|
||||
OBJ_SHAPE_VERTICAL | 0xf8, OBJ_X_FLIP | 0x70, OBJ_SPRITE_OAM | 0x21c
|
||||
};
|
||||
|
||||
const u16 sItemBannerOAM_TwoLinesSpawn_Frame7[64] = {
|
||||
0x14,
|
||||
0xf6, 0x188, OBJ_SPRITE_OAM | 0x21c,
|
||||
0x2, 0x188, OBJ_SPRITE_OAM | 0x23c,
|
||||
OBJ_SHAPE_VERTICAL | 0xf8, 0x188, OBJ_SPRITE_OAM | 0x21d,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf6, OBJ_SIZE_32x16 | 0x190, OBJ_SPRITE_OAM | 0x200,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf6, OBJ_SIZE_32x16 | 0x1b0, OBJ_SPRITE_OAM | 0x204,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf6, OBJ_SIZE_32x16 | 0x1d0, OBJ_SPRITE_OAM | 0x208,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf6, OBJ_SIZE_32x16 | 0x1f0, OBJ_SPRITE_OAM | 0x20c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf6, OBJ_SIZE_32x16 | 0x10, OBJ_SPRITE_OAM | 0x210,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf6, OBJ_SIZE_32x16 | 0x30, OBJ_SPRITE_OAM | 0x214,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf6, OBJ_SIZE_32x16 | 0x50, OBJ_SPRITE_OAM | 0x218,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x16 | 0x190, OBJ_SPRITE_OAM | 0x240,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x16 | 0x1b0, OBJ_SPRITE_OAM | 0x244,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x16 | 0x1d0, OBJ_SPRITE_OAM | 0x248,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x16 | 0x1f0, OBJ_SPRITE_OAM | 0x24c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x16 | 0x10, OBJ_SPRITE_OAM | 0x250,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x16 | 0x30, OBJ_SPRITE_OAM | 0x254,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x16 | 0x50, OBJ_SPRITE_OAM | 0x258,
|
||||
0xf6, OBJ_X_FLIP | 0x70, OBJ_SPRITE_OAM | 0x21c,
|
||||
0x2, OBJ_X_FLIP | 0x70, OBJ_SPRITE_OAM | 0x23c,
|
||||
OBJ_SHAPE_VERTICAL | 0xf8, OBJ_X_FLIP | 0x70, OBJ_SPRITE_OAM | 0x21d
|
||||
};
|
||||
|
||||
const u16 sItemBannerOAM_TwoLinesSpawn_Frame8[61] = {
|
||||
0x14,
|
||||
0xf4, 0x188, OBJ_SPRITE_OAM | 0x21c,
|
||||
0x4, 0x188, OBJ_SPRITE_OAM | 0x23c,
|
||||
OBJ_SHAPE_VERTICAL | 0xf8, 0x188, OBJ_SPRITE_OAM | 0x21d,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf4, OBJ_SIZE_32x16 | 0x190, OBJ_SPRITE_OAM | 0x200,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf4, OBJ_SIZE_32x16 | 0x1b0, OBJ_SPRITE_OAM | 0x204,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf4, OBJ_SIZE_32x16 | 0x1d0, OBJ_SPRITE_OAM | 0x208,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf4, OBJ_SIZE_32x16 | 0x1f0, OBJ_SPRITE_OAM | 0x20c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf4, OBJ_SIZE_32x16 | 0x10, OBJ_SPRITE_OAM | 0x210,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf4, OBJ_SIZE_32x16 | 0x30, OBJ_SPRITE_OAM | 0x214,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf4, OBJ_SIZE_32x16 | 0x50, OBJ_SPRITE_OAM | 0x218,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x16 | 0x190, OBJ_SPRITE_OAM | 0x240,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x16 | 0x1b0, OBJ_SPRITE_OAM | 0x244,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x16 | 0x1d0, OBJ_SPRITE_OAM | 0x248,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x16 | 0x1f0, OBJ_SPRITE_OAM | 0x24c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x16 | 0x10, OBJ_SPRITE_OAM | 0x250,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x16 | 0x30, OBJ_SPRITE_OAM | 0x254,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x16 | 0x50, OBJ_SPRITE_OAM | 0x258,
|
||||
0xf4, OBJ_X_FLIP | 0x70, OBJ_SPRITE_OAM | 0x21c,
|
||||
0x4, OBJ_X_FLIP | 0x70, OBJ_SPRITE_OAM | 0x23c,
|
||||
OBJ_SHAPE_VERTICAL | 0xf8, OBJ_X_FLIP | 0x70, OBJ_SPRITE_OAM | 0x21d
|
||||
};
|
||||
|
||||
const u16 sItemBannerOAM_TwoLinesSpawn_Frame9[61] = {
|
||||
0x14,
|
||||
0xf2, 0x188, OBJ_SPRITE_OAM | 0x21c,
|
||||
0x6, 0x188, OBJ_SPRITE_OAM | 0x23c,
|
||||
OBJ_SHAPE_VERTICAL | 0xf8, 0x188, OBJ_SPRITE_OAM | 0x21d,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf2, OBJ_SIZE_32x16 | 0x190, OBJ_SPRITE_OAM | 0x200,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf2, OBJ_SIZE_32x16 | 0x1b0, OBJ_SPRITE_OAM | 0x204,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf2, OBJ_SIZE_32x16 | 0x1d0, OBJ_SPRITE_OAM | 0x208,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf2, OBJ_SIZE_32x16 | 0x1f0, OBJ_SPRITE_OAM | 0x20c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf2, OBJ_SIZE_32x16 | 0x10, OBJ_SPRITE_OAM | 0x210,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf2, OBJ_SIZE_32x16 | 0x30, OBJ_SPRITE_OAM | 0x214,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf2, OBJ_SIZE_32x16 | 0x50, OBJ_SPRITE_OAM | 0x218,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x16 | 0x190, OBJ_SPRITE_OAM | 0x240,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x16 | 0x1b0, OBJ_SPRITE_OAM | 0x244,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x16 | 0x1d0, OBJ_SPRITE_OAM | 0x248,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x16 | 0x1f0, OBJ_SPRITE_OAM | 0x24c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x16 | 0x10, OBJ_SPRITE_OAM | 0x250,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x16 | 0x30, OBJ_SPRITE_OAM | 0x254,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x16 | 0x50, OBJ_SPRITE_OAM | 0x258,
|
||||
0xf2, OBJ_X_FLIP | 0x70, OBJ_SPRITE_OAM | 0x21c,
|
||||
0x6, OBJ_X_FLIP | 0x70, OBJ_SPRITE_OAM | 0x23c,
|
||||
OBJ_SHAPE_VERTICAL | 0xf8, OBJ_X_FLIP | 0x70, OBJ_SPRITE_OAM | 0x21d
|
||||
};
|
||||
|
||||
const u16 sItemBannerOAM_TwoLinesStatic_Frame0[31] = {
|
||||
0xa,
|
||||
0xf0, 0x188, OBJ_SPRITE_OAM | 0x21c,
|
||||
0x8, 0x188, OBJ_SPRITE_OAM | 0x23c,
|
||||
OBJ_SHAPE_VERTICAL | 0xf8, 0x188, OBJ_SPRITE_OAM | 0x21d,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_64x32 | 0x190, OBJ_SPRITE_OAM | 0x200,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_64x32 | 0x1d0, OBJ_SPRITE_OAM | 0x208,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf0, OBJ_SIZE_64x32 | 0x10, OBJ_SPRITE_OAM | 0x210,
|
||||
0xf0, OBJ_SIZE_32x32 | 0x50, OBJ_SPRITE_OAM | 0x218,
|
||||
0xf0, OBJ_X_FLIP | 0x70, OBJ_SPRITE_OAM | 0x21c,
|
||||
0x8, OBJ_X_FLIP | 0x70, OBJ_SPRITE_OAM | 0x23c,
|
||||
OBJ_SHAPE_VERTICAL | 0xf8, OBJ_X_FLIP | 0x70, OBJ_SPRITE_OAM | 0x21d
|
||||
};
|
||||
|
||||
const u16 sItemBannerOAM_OneLineSpawn_Frame5[25] = {
|
||||
0x8,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x188, OBJ_SPRITE_OAM | 0x27c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x1a8, OBJ_SPRITE_OAM | 0x27c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x1c8, OBJ_SPRITE_OAM | 0x27c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x1e8, OBJ_SPRITE_OAM | 0x27c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x8, OBJ_SPRITE_OAM | 0x27c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x28, OBJ_SPRITE_OAM | 0x27c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x48, OBJ_SPRITE_OAM | 0x27c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, 0x68, OBJ_SPRITE_OAM | 0x27c
|
||||
};
|
||||
|
||||
const u16 sItemBannerOAM_OneLineSpawn_Frame6[55] = {
|
||||
0x12,
|
||||
0xfa, 0x188, OBJ_SPRITE_OAM | 0x21f,
|
||||
0xfa, OBJ_X_FLIP | 0x70, OBJ_SPRITE_OAM | 0x21f,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x200,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x1b0, OBJ_SPRITE_OAM | 0x204,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x1d0, OBJ_SPRITE_OAM | 0x208,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x1f0, OBJ_SPRITE_OAM | 0x20c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x10, OBJ_SPRITE_OAM | 0x210,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x30, OBJ_SPRITE_OAM | 0x214,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x218,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x260,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x1b0, OBJ_SPRITE_OAM | 0x264,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x1d0, OBJ_SPRITE_OAM | 0x268,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x1f0, OBJ_SPRITE_OAM | 0x26c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x10, OBJ_SPRITE_OAM | 0x270,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x30, OBJ_SPRITE_OAM | 0x274,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfc, OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x278,
|
||||
0xfe, 0x188, OBJ_SPRITE_OAM | 0x23f,
|
||||
0xfe, OBJ_X_FLIP | 0x70, OBJ_SPRITE_OAM | 0x23f
|
||||
};
|
||||
|
||||
const u16 sItemBannerOAM_OneLineSpawn_Frame7[49] = {
|
||||
0x10,
|
||||
OBJ_SHAPE_VERTICAL | 0xf8, 0x188, OBJ_SPRITE_OAM | 0x21f,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x200,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x8 | 0x1b0, OBJ_SPRITE_OAM | 0x204,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x8 | 0x1d0, OBJ_SPRITE_OAM | 0x208,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x8 | 0x1f0, OBJ_SPRITE_OAM | 0x20c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x8 | 0x10, OBJ_SPRITE_OAM | 0x210,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x8 | 0x30, OBJ_SPRITE_OAM | 0x214,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfa, OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x218,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x220,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x8 | 0x1b0, OBJ_SPRITE_OAM | 0x224,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x8 | 0x1d0, OBJ_SPRITE_OAM | 0x228,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x8 | 0x1f0, OBJ_SPRITE_OAM | 0x22c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x8 | 0x10, OBJ_SPRITE_OAM | 0x230,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x8 | 0x30, OBJ_SPRITE_OAM | 0x234,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xfe, OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x238,
|
||||
OBJ_SHAPE_VERTICAL | 0xf8, OBJ_X_FLIP | 0x70, OBJ_SPRITE_OAM | 0x21f
|
||||
};
|
||||
|
||||
const u16 sItemBannerOAM_OneLineStatic_Frame0[49] = {
|
||||
0x10,
|
||||
OBJ_SHAPE_VERTICAL | 0xf8, 0x188, OBJ_SPRITE_OAM | 0x21c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf8, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x200,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf8, OBJ_SIZE_32x8 | 0x1b0, OBJ_SPRITE_OAM | 0x204,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf8, OBJ_SIZE_32x8 | 0x1d0, OBJ_SPRITE_OAM | 0x208,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf8, OBJ_SIZE_32x8 | 0x1f0, OBJ_SPRITE_OAM | 0x20c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf8, OBJ_SIZE_32x8 | 0x10, OBJ_SPRITE_OAM | 0x210,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf8, OBJ_SIZE_32x8 | 0x30, OBJ_SPRITE_OAM | 0x214,
|
||||
OBJ_SHAPE_HORIZONTAL | 0xf8, OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x218,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x220,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x8 | 0x1b0, OBJ_SPRITE_OAM | 0x224,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x8 | 0x1d0, OBJ_SPRITE_OAM | 0x228,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x8 | 0x1f0, OBJ_SPRITE_OAM | 0x22c,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x8 | 0x10, OBJ_SPRITE_OAM | 0x230,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x8 | 0x30, OBJ_SPRITE_OAM | 0x234,
|
||||
OBJ_SHAPE_HORIZONTAL | 0x0, OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x238,
|
||||
OBJ_SHAPE_VERTICAL | 0xf8, OBJ_X_FLIP | 0x70, OBJ_SPRITE_OAM | 0x21c
|
||||
};
|
||||
|
||||
const struct FrameData sSaveYesNoCursorOAM_Idle[5] = {
|
||||
sSaveYesNoCursorOAM_Idle_Frame0,
|
||||
0x8,
|
||||
sSaveYesNoCursorOAM_Idle_Frame1,
|
||||
0x4,
|
||||
sSaveYesNoCursorOAM_Idle_Frame2,
|
||||
0x8,
|
||||
sSaveYesNoCursorOAM_Idle_Frame1,
|
||||
0x8,
|
||||
NULL,
|
||||
0x0
|
||||
};
|
||||
|
||||
const struct FrameData sItemBannerOAM_TwoLinesSpawn[11] = {
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame0,
|
||||
0x1,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame1,
|
||||
0x1,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame2,
|
||||
0x1,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame3,
|
||||
0x1,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame4,
|
||||
0x1,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame5,
|
||||
0x2,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame6,
|
||||
0x2,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame7,
|
||||
0x2,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame8,
|
||||
0x3,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame9,
|
||||
0x3,
|
||||
NULL,
|
||||
0x0
|
||||
};
|
||||
|
||||
const struct FrameData sItemBannerOAM_TwoLinesRemoving[11] = {
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame9,
|
||||
0x3,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame8,
|
||||
0x3,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame7,
|
||||
0x2,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame6,
|
||||
0x2,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame5,
|
||||
0x2,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame4,
|
||||
0x1,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame3,
|
||||
0x1,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame2,
|
||||
0x1,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame1,
|
||||
0x1,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame0,
|
||||
0x1,
|
||||
NULL,
|
||||
0x0
|
||||
};
|
||||
|
||||
const struct FrameData sItemBannerOAM_TwoLinesStatic[2] = {
|
||||
sItemBannerOAM_TwoLinesStatic_Frame0,
|
||||
0xFF,
|
||||
NULL,
|
||||
0x0
|
||||
};
|
||||
|
||||
const struct FrameData sItemBannerOAM_OneLineSpawn[9] = {
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame0,
|
||||
0x1,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame1,
|
||||
0x1,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame2,
|
||||
0x1,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame3,
|
||||
0x2,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame4,
|
||||
0x2,
|
||||
sItemBannerOAM_OneLineSpawn_Frame5,
|
||||
0x2,
|
||||
sItemBannerOAM_OneLineSpawn_Frame6,
|
||||
0x3,
|
||||
sItemBannerOAM_OneLineSpawn_Frame7,
|
||||
0x3,
|
||||
NULL,
|
||||
0x0
|
||||
};
|
||||
|
||||
const struct FrameData sItemBannerOAM_OneLineRemoving[9] = {
|
||||
sItemBannerOAM_OneLineSpawn_Frame7,
|
||||
0x3,
|
||||
sItemBannerOAM_OneLineSpawn_Frame6,
|
||||
0x3,
|
||||
sItemBannerOAM_OneLineSpawn_Frame5,
|
||||
0x3,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame4,
|
||||
0x2,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame3,
|
||||
0x2,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame2,
|
||||
0x1,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame1,
|
||||
0x1,
|
||||
sItemBannerOAM_TwoLinesSpawn_Frame0,
|
||||
0x1,
|
||||
NULL,
|
||||
0x0
|
||||
};
|
||||
|
||||
const struct FrameData sItemBannerOAM_OneLineStatic[2] = {
|
||||
sItemBannerOAM_OneLineStatic_Frame0,
|
||||
0xFF,
|
||||
NULL,
|
||||
0x0
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief 1b6b8 | 110 | Initializes an item banner sprite
|
||||
*
|
||||
*/
|
||||
void ItemBannerInit(void)
|
||||
{
|
||||
u8 message;
|
||||
u8 gfxSlot;
|
||||
u8 count;
|
||||
|
||||
gPreventMovementTimer = 0x3E8;
|
||||
|
||||
if (!(gCurrentSprite.status & SPRITE_STATUS_ONSCREEN))
|
||||
{
|
||||
gCurrentSprite.status |= SPRITE_STATUS_ONSCREEN;
|
||||
gCurrentSprite.roomSlot = 0xFF;
|
||||
}
|
||||
|
||||
message = gCurrentSprite.roomSlot;
|
||||
gCurrentSprite.status |= SPRITE_STATUS_UNKNOWN;
|
||||
gCurrentSprite.bgPriority = 0x0; // On top of everything
|
||||
gCurrentSprite.samusCollision = SSC_NONE;
|
||||
gCurrentSprite.properties |= (SP_ALWAYS_ACTIVE | SP_ABSOLUTE_POSITION);
|
||||
|
||||
gCurrentSprite.drawDistanceTopOffset = 0x10;
|
||||
gCurrentSprite.drawDistanceBottomOffset = 0x10;
|
||||
gCurrentSprite.drawDistanceHorizontalOffset = 0x80;
|
||||
|
||||
gCurrentSprite.hitboxTopOffset = -0x4;
|
||||
gCurrentSprite.hitboxBottomOffset = 0x4;
|
||||
gCurrentSprite.hitboxLeftOffset = -0x4;
|
||||
gCurrentSprite.hitboxRightOffset = 0x4;
|
||||
|
||||
gCurrentSprite.pOam = sItemBannerOAM_TwoLinesSpawn;
|
||||
gCurrentSprite.animationDurationCounter = 0x0;
|
||||
gCurrentSprite.currentAnimationFrame = 0x0;
|
||||
|
||||
gCurrentSprite.yPositionSpawn = 0x9;
|
||||
gCurrentSprite.timer = 0x1;
|
||||
gCurrentSprite.workVariable2 = 0x0;
|
||||
|
||||
// Flag if the message is the save prompt
|
||||
if (message == MESSAGE_SAVE_PROMPT)
|
||||
gCurrentSprite.workVariable = TRUE;
|
||||
else
|
||||
gCurrentSprite.workVariable = FALSE;
|
||||
|
||||
gfxSlot = 0x80; // Default
|
||||
|
||||
// Loop through sprites to try and find if an item banner is in the spriteset
|
||||
for (count = 0x0; count < 0xF; count++)
|
||||
{
|
||||
if (gSpritesetSpritesID[count] == PSPRITE_ITEM_BANNER)
|
||||
{
|
||||
// Found area banner, load the gfx slot
|
||||
gfxSlot = gSpritesetGFXSlots[count];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (gfxSlot < 0x8)
|
||||
{
|
||||
// Found in the spriteset, skip gfx init
|
||||
gCurrentSprite.pose = ITEM_BANNER_POSE_POP_UP;
|
||||
gCurrentSprite.spritesetGFXSlot = gfxSlot;
|
||||
}
|
||||
else
|
||||
gCurrentSprite.pose = ITEM_BANNER_POSE_GFX_INIT;
|
||||
|
||||
// Middle of the screen
|
||||
gCurrentSprite.yPosition = 0x36;
|
||||
gCurrentSprite.xPosition = 0x78;
|
||||
|
||||
start_message(message, gCurrentSprite.spritesetGFXSlot); // Undefined
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 1b7c8 | 5c | Initializes the GFX for an item banner
|
||||
*
|
||||
*/
|
||||
void ItemBannerGFXInit(void)
|
||||
{
|
||||
gPreventMovementTimer = 0x3E8;
|
||||
|
||||
gCurrentSprite.yPositionSpawn--; // Timer (started at 0x9)
|
||||
if (gCurrentSprite.yPositionSpawn == 0x7)
|
||||
SpriteLoadGFX(PSPRITE_ITEM_BANNER, gCurrentSprite.spritesetGFXSlot); // Load GFX
|
||||
else if (gCurrentSprite.yPositionSpawn == 0x8)
|
||||
SpriteLoadPAL(PSPRITE_ITEM_BANNER, gCurrentSprite.spritesetGFXSlot, 0x1); // Load PAL
|
||||
|
||||
if (gCurrentSprite.yPositionSpawn == 0x0)
|
||||
{
|
||||
// Loading done, set pop up behavior
|
||||
gCurrentSprite.pose = ITEM_BANNER_POSE_POP_UP;
|
||||
gCurrentSprite.animationDurationCounter = 0x0;
|
||||
gCurrentSprite.currentAnimationFrame = 0x0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 1b824 | 184 | Handles the pop up animation and the custom behavior based on the current message
|
||||
*
|
||||
*/
|
||||
void ItemBannerPopUp(void)
|
||||
{
|
||||
u16 music;
|
||||
u8 message;
|
||||
u8 timer;
|
||||
|
||||
// Work Variable 2 is used as a bool, 1 if getting new item (leading to status screen), 0 otherwise
|
||||
gPreventMovementTimer = 0x3E8;
|
||||
message = gCurrentSprite.roomSlot;
|
||||
if (gCurrentSprite.timer != 0x0)
|
||||
{
|
||||
gCurrentSprite.animationDurationCounter--;
|
||||
if (process_item_banner_text()) // Process text
|
||||
{
|
||||
// If done processing
|
||||
gCurrentSprite.timer = 0x0;
|
||||
gCurrentSprite.status &= ~SPRITE_STATUS_NOT_DRAWN;
|
||||
|
||||
if ((u8)(message - 0x8) < 0xe)
|
||||
{
|
||||
// New item
|
||||
gCurrentSprite.workVariable2 = TRUE;
|
||||
backup_track_data2_sound_channels(); // Undefined
|
||||
if (message == MESSAGE_UKNOWN_ITEM_PLASMA || message == MESSAGE_UNKNOWN_ITEM_GRAVITY
|
||||
|| message == MESSAGE_UNKNOWN_ITEM_SPACE_JUMP)
|
||||
InsertMusicAndQueueCurrent(0x42, 0x0); // Unknown item
|
||||
else
|
||||
InsertMusicAndQueueCurrent(0x37, 0x0);
|
||||
}
|
||||
else if (message == MESSAGE_FIRST_MISSILE_TANK || message == MESSAGE_FIRST_SUPER_MISSILE_TANK
|
||||
|| message == MESSAGE_FIRST_POWER_BOMB_TANK)
|
||||
{
|
||||
// New tank
|
||||
gCurrentSprite.workVariable2 = TRUE;
|
||||
backup_track_data2_sound_channels();
|
||||
InsertMusicAndQueueCurrent(0x37, 0x0);
|
||||
}
|
||||
else if (message == MESSAGE_FULLY_POWERED_SUIT)
|
||||
{
|
||||
MusicPlay(0x19, 0x0);
|
||||
InsertMusicAndQueueCurrent(0x4A, 0x0);
|
||||
}
|
||||
else if (message != MESSAGE_SAVE_PROMPT)
|
||||
{
|
||||
if ((u8)(message - 0x1) <= 0x1 || message == MESSAGE_SUPER_MISSILE_TANK_ACQUIRED
|
||||
|| message == MESSAGE_POWER_BOMB_TANK_ACQUIRED)
|
||||
backup_track_data2_sound_channels();
|
||||
SoundPlay(0x3A);
|
||||
}
|
||||
|
||||
// Check is one line message (new item/ability, save complete, map text)
|
||||
if (gCurrentSprite.workVariable2 || message == MESSAGE_SAVE_COMPLETE
|
||||
|| (u8)(message - 0x1B) < 0x6)
|
||||
{
|
||||
gCurrentSprite.pOam = sItemBannerOAM_OneLineSpawn;
|
||||
gCurrentSprite.animationDurationCounter = 0x0;
|
||||
gCurrentSprite.currentAnimationFrame = 0x0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Text not done
|
||||
if (SpriteUtilCheckEndCurrentSpriteAnim())
|
||||
{
|
||||
// Spawning animation ended
|
||||
gCurrentSprite.animationDurationCounter = 0x0;
|
||||
gCurrentSprite.currentAnimationFrame = 0x0;
|
||||
gCurrentSprite.pose = ITEM_BANNER_POSE_STATIC;
|
||||
// Set static OAM and timer for how long the banner stays
|
||||
if (gCurrentSprite.pOam == sItemBannerOAM_OneLineSpawn)
|
||||
{
|
||||
gCurrentSprite.pOam = sItemBannerOAM_OneLineStatic;
|
||||
if (message == MESSAGE_FULLY_POWERED_SUIT)
|
||||
gCurrentSprite.yPositionSpawn = 0x154; // Long because jingle is long
|
||||
else
|
||||
gCurrentSprite.yPositionSpawn = 0x64;
|
||||
}
|
||||
else
|
||||
{
|
||||
gCurrentSprite.pOam = sItemBannerOAM_TwoLinesStatic;
|
||||
gCurrentSprite.yPositionSpawn = 0x64;
|
||||
if (message == MESSAGE_SAVE_PROMPT)
|
||||
{
|
||||
SpriteSpawnSecondary(SSPRITE_SAVE_YES_NO_CURSOR, 0x0, gCurrentSprite.spritesetGFXSlot,
|
||||
gCurrentSprite.primarySpriteRAMSlot, 0x3F, 0x96, 0x0); // Spawn cursor
|
||||
}
|
||||
else if (0x1 >= (u8)(message - 0x21)) // Escape message
|
||||
EscapeStart();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 1b9a8 | 68 | Handles the item banner being static
|
||||
*
|
||||
*/
|
||||
void ItemBannerStatic(void)
|
||||
{
|
||||
u8 message;
|
||||
|
||||
message = gCurrentSprite.roomSlot;
|
||||
if (message == MESSAGE_FULLY_POWERED_SUIT)
|
||||
gPreventMovementTimer = 0x0;
|
||||
else
|
||||
gPreventMovementTimer = 0x3E8;
|
||||
|
||||
// Timer
|
||||
if (gCurrentSprite.yPositionSpawn != 0x0)
|
||||
gCurrentSprite.yPositionSpawn--;
|
||||
// Check if should remove (input or demo active, ignore for save prompt)
|
||||
else if (message != MESSAGE_SAVE_PROMPT &&
|
||||
(gButtonInput & (KEY_A | KEY_B | KEY_RIGHT | KEY_LEFT | KEY_UP | KEY_DOWN) || gDemoState != 0x0))
|
||||
gCurrentSprite.pose = ITEM_BANNER_POSE_REMOVAL_INIT;
|
||||
}
|
||||
|
||||
void ItemBannerRemoval(void)
|
||||
/**
|
||||
* @brief 1ba10 | 50 | Initializes the item banner to be removing
|
||||
*
|
||||
*/
|
||||
void ItemBannerRemovalInit(void)
|
||||
{
|
||||
|
||||
if (gCollectingTank)
|
||||
BGClipFinishCollectingTank();
|
||||
if (gCurrentSprite.pOam == sItemBannerOAM_OneLineStatic)
|
||||
gCurrentSprite.pOam = sItemBannerOAM_OneLineRemoving;
|
||||
else
|
||||
gCurrentSprite.pOam = sItemBannerOAM_TwoLinesRemoving;
|
||||
gCurrentSprite.animationDurationCounter = 0x0;
|
||||
gCurrentSprite.currentAnimationFrame = 0x0;
|
||||
gCurrentSprite.pose = 0x25;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 1ba60 | b4 | Handles behavior during the removal animation
|
||||
*
|
||||
*/
|
||||
void ItemBannerRemovalAnimation(void)
|
||||
{
|
||||
u8 message;
|
||||
|
||||
message = gCurrentSprite.roomSlot;
|
||||
if (SpriteUtilCheckEndCurrentSpriteAnim())
|
||||
{
|
||||
gCurrentSprite.status = 0x0;
|
||||
if (message == MESSAGE_SAVE_COMPLETE)
|
||||
gDisablePause = FALSE; // Re-enable pause
|
||||
else if (message == MESSAGE_FULLY_POWERED_SUIT)
|
||||
{
|
||||
gSubSpriteData1.workVariable1 = 0x7; // Start suit animation
|
||||
// Spawn chozo pillar
|
||||
SpriteLoadGFX(PSPRITE_FALLING_CHOZO_PILLAR, 0x7);
|
||||
SpriteLoadPAL(PSPRITE_FALLING_CHOZO_PILLAR, 0x7, 0x1);
|
||||
SpriteSpawnPrimary(PSPRITE_FALLING_CHOZO_PILLAR, 0x0, 0x7, gBossWork.work1 - 0x100, gBossWork.work2 + 0x300, 0x0);
|
||||
}
|
||||
// Check replay sounds
|
||||
else if ((u8)(message - 0x1) < MESSAGE_MISSILE_TANK_ACQUIRED || message == MESSAGE_SUPER_MISSILE_TANK_ACQUIRED || message == MESSAGE_POWER_BOMB_TANK_ACQUIRED)
|
||||
retrieve_track_data2_sound_channels(); // Undefined
|
||||
|
||||
gPreventMovementTimer = 0x0;
|
||||
if (gCurrentSprite.workVariable2)
|
||||
gPauseScreenFlag = PAUSE_SCREEN_ITEM_ACQUISITION;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 1bb14 | e8 | Item banner AI
|
||||
*
|
||||
*/
|
||||
void ItemBanner(void)
|
||||
{
|
||||
gCurrentSprite.ignoreSamusCollisionTimer = 0x1;
|
||||
switch (gCurrentSprite.pose)
|
||||
{
|
||||
case 0x0:
|
||||
ItemBannerInit();
|
||||
break;
|
||||
|
||||
case ITEM_BANNER_POSE_GFX_INIT:
|
||||
ItemBannerGFXInit();
|
||||
break;
|
||||
|
||||
case ITEM_BANNER_POSE_POP_UP:
|
||||
ItemBannerPopUp();
|
||||
break;
|
||||
|
||||
case ITEM_BANNER_POSE_STATIC:
|
||||
ItemBannerStatic();
|
||||
break;
|
||||
|
||||
case ITEM_BANNER_POSE_REMOVAL_INIT:
|
||||
ItemBannerRemovalInit();
|
||||
break;
|
||||
|
||||
case ITEM_BANNER_POSE_REMOVAL_ANIMATION:
|
||||
ItemBannerRemovalAnimation();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 1bbfc | 190 | Save yes no cursor AI
|
||||
*
|
||||
*/
|
||||
void SaveYesNoCursor(void)
|
||||
{
|
||||
u8 ramSlot;
|
||||
|
||||
gCurrentSprite.ignoreSamusCollisionTimer = 0x1;
|
||||
ramSlot = gCurrentSprite.primarySpriteRAMSlot;
|
||||
|
||||
switch (gCurrentSprite.pose)
|
||||
{
|
||||
case 0x0:
|
||||
gCurrentSprite.status |= SPRITE_STATUS_UNKNOWN;
|
||||
gCurrentSprite.status &= ~SPRITE_STATUS_NOT_DRAWN;
|
||||
|
||||
gCurrentSprite.bgPriority = 0x0;
|
||||
gCurrentSprite.drawOrder = 0x3;
|
||||
gCurrentSprite.samusCollision = SSC_NONE;
|
||||
gCurrentSprite.properties |= (SP_ALWAYS_ACTIVE | SP_ABSOLUTE_POSITION);
|
||||
|
||||
gCurrentSprite.drawDistanceTopOffset = 0x10;
|
||||
gCurrentSprite.drawDistanceBottomOffset = 0x10;
|
||||
gCurrentSprite.drawDistanceHorizontalOffset = 0x10;
|
||||
|
||||
gCurrentSprite.hitboxTopOffset = -0x4;
|
||||
gCurrentSprite.hitboxBottomOffset = 0x4;
|
||||
gCurrentSprite.hitboxLeftOffset = -0x4;
|
||||
gCurrentSprite.hitboxRightOffset = 0x4;
|
||||
|
||||
gCurrentSprite.pOam = sSaveYesNoCursorOAM_Idle;
|
||||
gCurrentSprite.animationDurationCounter = 0x0;
|
||||
gCurrentSprite.currentAnimationFrame = 0x0;
|
||||
|
||||
gCurrentSprite.pose = 0x9;
|
||||
gCurrentSprite.yPosition = 0x3F;
|
||||
|
||||
if (gSpriteData[ramSlot].roomSlot == MESSAGE_SAVE_PROMPT)
|
||||
gCurrentSprite.xPosition = SAVE_YES_NO_CURSOR_LEFT_POSITION;
|
||||
else
|
||||
gCurrentSprite.xPosition = SAVE_YES_NO_CURSOR_RIGHT_POSITION;
|
||||
break;
|
||||
|
||||
case SAVE_YES_NO_CURSOR_POSE_INPUT:
|
||||
if (gChangedInput & KEY_LEFT)
|
||||
{
|
||||
// Check not already on left
|
||||
if (gCurrentSprite.xPosition != SAVE_YES_NO_CURSOR_LEFT_POSITION)
|
||||
{
|
||||
SoundPlay(0x207);
|
||||
gCurrentSprite.xPosition = SAVE_YES_NO_CURSOR_LEFT_POSITION;
|
||||
}
|
||||
}
|
||||
else if (gChangedInput & KEY_RIGHT)
|
||||
{
|
||||
// Check not already on right
|
||||
if (gCurrentSprite.xPosition != SAVE_YES_NO_CURSOR_RIGHT_POSITION)
|
||||
{
|
||||
SoundPlay(0x207);
|
||||
gCurrentSprite.xPosition = SAVE_YES_NO_CURSOR_RIGHT_POSITION;
|
||||
}
|
||||
}
|
||||
else if (gChangedInput & KEY_A)
|
||||
{
|
||||
gSpriteData[ramSlot].pose = ITEM_BANNER_POSE_REMOVAL_INIT;
|
||||
if (gCurrentSprite.xPosition == SAVE_YES_NO_CURSOR_LEFT_POSITION)
|
||||
{
|
||||
// On left, "yes" option selected
|
||||
SoundPlay(0x208);
|
||||
gSpriteData[ramSlot].workVariable = 0x1;
|
||||
if (gSpriteData[ramSlot].roomSlot == MESSAGE_SAVE_PROMPT)
|
||||
{
|
||||
gCurrentSprite.pose = SAVE_YES_NO_CURSOR_POSE_SAVING;
|
||||
gCurrentSprite.status |= SPRITE_STATUS_NOT_DRAWN;
|
||||
gDisablePause = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// On right, "no" option selected
|
||||
SoundPlay(0x209);
|
||||
gSpriteData[ramSlot].workVariable = 0x0;
|
||||
}
|
||||
gCurrentSprite.status = 0x0;
|
||||
}
|
||||
break;
|
||||
|
||||
case SAVE_YES_NO_CURSOR_POSE_SAVING:
|
||||
if (save_file()) // Undefined
|
||||
gCurrentSprite.status = 0x0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -3,12 +3,70 @@
|
||||
|
||||
#include "../types.h"
|
||||
|
||||
// Item banner
|
||||
|
||||
#define ITEM_BANNER_POSE_GFX_INIT 0x8
|
||||
#define ITEM_BANNER_POSE_POP_UP 0x9
|
||||
#define ITEM_BANNER_POSE_STATIC 0x23
|
||||
#define ITEM_BANNER_POSE_REMOVAL_INIT 0x24
|
||||
#define ITEM_BANNER_POSE_REMOVAL_ANIMATION 0x25
|
||||
|
||||
// Save yes no cursor
|
||||
|
||||
#define SAVE_YES_NO_CURSOR_POSE_INPUT 0x9
|
||||
#define SAVE_YES_NO_CURSOR_POSE_SAVING 0x43
|
||||
|
||||
#define SAVE_YES_NO_CURSOR_LEFT_POSITION 0x36
|
||||
#define SAVE_YES_NO_CURSOR_RIGHT_POSITION 0x96
|
||||
|
||||
// Temporary place
|
||||
#define MESSAGE_DUMMY 0x0
|
||||
#define MESSAGE_ENERGY_TANK_ACQUIRED 0x1
|
||||
#define MESSAGE_MISSILE_TANK_ACQUIRED 0x2
|
||||
#define MESSAGE_FIRST_MISSILE_TANK 0x3
|
||||
#define MESSAGE_SUPER_MISSILE_TANK_ACQUIRED 0x4
|
||||
#define MESSAGE_FIRST_SUPER_MISSILE_TANK 0x5
|
||||
#define MESSAGE_POWER_BOMB_TANK_ACQUIRED 0x6
|
||||
#define MESSAGE_FIRST_POWER_BOMB_TANK 0x7
|
||||
#define MESSAGE_LONG_BEAM 0x8
|
||||
#define MESSAGE_CHARGE_BEAM 0x9
|
||||
#define MESSAGE_ICE_BEAM 0xA
|
||||
#define MESSAGE_WAVE_BEAM 0xB
|
||||
#define MESSAGE_UKNOWN_ITEM_PLASMA 0xC
|
||||
#define MESSAGE_BOMB 0xD
|
||||
#define MESSAGE_VARIA_SUIT 0xE
|
||||
#define MESSAGE_UNKNOWN_ITEM_GRAVITY 0xF
|
||||
#define MESSAGE_MORPH_BALL 0x10
|
||||
#define MESSAGE_SPEED_BOOSTER 0x11
|
||||
#define MESSAGE_HIGH_JUMP 0x12
|
||||
#define MESSAGE_SCREW_ATTACK 0x13
|
||||
#define MESSAGE_UNKNOWN_ITEM_SPACE_JUMP 0x14
|
||||
#define MESSAGE_POWER_GRIP 0x15
|
||||
#define MESSAGE_SAVE_PROMPT 0x16
|
||||
#define MESSAGE_SAVE_COMPLETE 0x17
|
||||
#define MESSAGE_WEAPON_RESUPPLY_COMPLETE 0x18
|
||||
#define MESSAGE_ENERGY_TANK_RECHARGE_COMPLETE 0x19
|
||||
#define MESSAGE_WEAPONS_AND_ENERGY_RESTORED 0x1A
|
||||
#define MESSAGE_BRINSTAR_MAP_ACQUIRED 0x1B
|
||||
#define MESSAGE_KRAID_MAP_ACQUIRED 0x1C
|
||||
#define MESSAGE_NORFAIR_MAP_ACQUIRED 0x1D
|
||||
#define MESSAGE_RIDLEY_MAP_ACQUIRED 0x1E
|
||||
#define MESSAGE_MOTHER_SHIP_MAP_ACQUIRED 0x1F
|
||||
#define MESSAGE_FULLY_POWERED_SUIT 0x20
|
||||
#define MESSAGE_ZEBES_ESCAPE 0x21
|
||||
#define MESSAGE_CHOZODIA_ESCAPE 0x22
|
||||
#define MESSAGE_ENEMY_LOCATION_ABNORMAL 0x23
|
||||
#define MESSAGE_ACTIVATE_EASY_SLEEP 0x24
|
||||
#define MESSAGE_PRESS_SELECT_L_AND_R 0x25
|
||||
#define MESSAGE_EASY_SLEEP_PROMPT 0x26
|
||||
|
||||
void ItemBannerInit(void);
|
||||
void ItemBannerGFXInit(void);
|
||||
void ItemBannerPopUp(void);
|
||||
void ItemBannerStatic(void);
|
||||
void ItemBannerRemoval(void);
|
||||
void ItemBannerRemovalInit(void);
|
||||
void ItemBannerRemovalAnimation(void);
|
||||
void ItemBanner(void);
|
||||
void SaveYesNoCursor(void);
|
||||
|
||||
#endif /* ITEM_BANNER_AI_H* */
|
@ -1,8 +0,0 @@
|
||||
#include "primary_sprite_B3.h"
|
||||
#include "../../data/data.h"
|
||||
#include "../globals.h"
|
||||
|
||||
void SaveYesNoCursor(void)
|
||||
{
|
||||
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
#ifndef SAVE_YES_NO_CURSOR_AI_H
|
||||
#define SAVE_YES_NO_CURSOR_AI_H
|
||||
|
||||
#include "../types.h"
|
||||
|
||||
void SaveYesNoCursor(void);
|
||||
|
||||
#endif /* SAVE_YES_NO_CURSOR_AI_H */
|
Loading…
Reference in New Issue
Block a user