Start entire codebase refactoring

This commit is contained in:
YohannDR 2022-09-23 15:39:42 +02:00
parent 6102222968
commit bcf82a15fb
156 changed files with 2448 additions and 2094 deletions

View File

@ -2,63 +2,6 @@
#define BG_CLIP_H
#include "types.h"
#include "connection.h"
// Structs
struct BackgroundPointersAndDimensions {
struct {
u16* pDecomp;
u16 width;
u16 height;
} backgrounds[3];
u16* pClipDecomp;
u16 clipdataWidth;
u16 clipdataHeight;
};
struct BG2Movement {
i16 xOffset;
i16 yOffset;
};
struct LastTank {
u16 behavior;
u8 xPosition;
u8 yPosition;
};
struct ItemInfo {
u8 room;
i8 type;
u8 xPosition;
u8 yPosition;
};
struct TankCollectionData {
u16 behaviors[4];
u16 yPositions[3];
u16 xPositions[3];
};
// Globals
#define MAX_AMOUNT_OF_ITEMS_PER_AREA 64
extern struct ItemInfo gItemsCollected[MAX_AMOUNT_OF_AREAS][MAX_AMOUNT_OF_ITEMS_PER_AREA];
extern u8 gNeverReformBlocks[MAX_AMOUNT_OF_AREAS][512];
extern u8 gNumberOfNeverReformBlocks[MAX_AMOUNT_OF_AREAS];
extern u8 gNumberOfItemsCollected[MAX_AMOUNT_OF_AREAS];
extern struct LastTank gLastTankCollected;
extern u16 gBG0XPosition;
extern u16 gBG0YPosition;
extern u16 gBG1XPosition;
extern u16 gBG1YPosition;
extern u16 gBG2XPosition;
extern u16 gBG2YPosition;
extern u16 gBG3XPosition;
extern u16 gBG3YPosition;
// Functions

View File

@ -2,7 +2,7 @@
#define CLIPDATA_H
#include "types.h"
#include "block.h"
#include "structs/clipdata.h"
#include "gba.h"
#define behavior_to_block(behavior) (behavior - 0x10)
@ -10,189 +10,6 @@
#define behavior_to_bldalpha(behavior) (behavior - 0x44)
#define behavior_to_door(behavior) (behavior - 0x7F)
// Globals
extern struct CurrentAffectingClip gCurrentAffectingClipdata;
extern struct TilemapAndClipPointers gTilemapAndClipPointers;
// Defines
#define MAX_AMOUNT_OF_CAA 16
#define CAA_NONE 0x0
#define CAA_REMOVE_SOLID 0x1
#define CAA_MAKE_SOLID_GRIPPABLE 0x2
#define CAA_MAKE_SOLID2 0x3
#define CAA_MAKE_SOLID3 0x4
#define CAA_BOMB_CHAIN_UNUSED 0x5
#define CAA_UNUSED 0x6
#define CAA_BEAM 0x7
#define CAA_BOMB_PISTOL 0x8
#define CAA_MISSILE 0x9
#define CAA_SUPER_MISSILE 0xA
#define CAA_POWER_BOMB 0xB
#define CAA_SPEEDBOOSTER 0xC
#define CAA_SPEEDBOOSTER_ON_GROUND 0xD
#define CAA_SCREW_ATTACK 0xE
#define CAA_BOMB_CHAIN 0xF
#define COLLISION_AIR 0x0
#define COLLISION_LEFT_SLIGHT_FLOOR_SLOPE 0x2
#define COLLISION_RIGHT_SLIGHT_FLOOR_SLOPE 0x3
#define COLLISION_LEFT_STEEP_FLOOR_SLOPE 0x4
#define COLLISION_RIGHT_STEEP_FLOOR_SLOPE 0x5
#define COLLISION_PASS_THROUGH_BOTTOM 0x10
#define COLLISION_SOLID 0x11
#define CLIPDATA_MOVEMENT_NONE 0x0
#define CLIPDATA_MOVEMENT_ELEVATOR_DOWN_BLOCK 0x1
#define CLIPDATA_MOVEMENT_ELEVATOR_UP_BLOCK 0x2
#define CLIPDATA_MOVEMENT_NON_POWER_GRIP 0x6
#define CLIPDATA_MOVEMENT_STOP_ENEMY_BLOCK_SOLID 0x7
#define CLIPDATA_MOVEMENT_SPACE_PIRATE_ZONELINE 0x8
#define CLIPDATA_MOVEMENT_SPACE_PIRATE_WALLJUMP_POINT 0x9
#define HAZARD_TYPE_NONE 0x0
#define HAZARD_TYPE_WATER 0x1
#define HAZARD_TYPE_STRONG_LAVA 0x2
#define HAZARD_TYPE_WEAK_LAVA 0x3
#define HAZARD_TYPE_ACID 0x4
#define HAZARD_TYPE_HEAT 0x5
#define HAZARD_TYPE_SNOWFLAKES_KNOCKBACK 0x6
#define HAZARD_TYPE_COLD 0x7
#define GROUND_EFFECT_NONE 0x0
#define GROUND_EFFECT_WET_GROUND 0x1
#define GROUND_EFFECT_DUSTY_GROUND 0x2
#define GROUND_EFFECT_VERY_DUSTY_GROUND 0x3
#define GROUND_EFFECT_UNKNOWN 0x4
#define GROUND_EFFECT_BUBBLY_GROUND 0x5
#define CLIPDATA_ACTOR_SAMUS 0x0
#define CLIPDATA_ACTOR_NON_SPRITE 0x1
#define CLIPDATA_ACTOR_SPRITE 0x2
#define CLIPDATA_TYPE_AIR 0x0
#define CLIPDATA_TYPE_SOLID 0x1
#define CLIPDATA_TYPE_LEFT_STEEP_FLOOR_SLOPE 0x2
#define CLIPDATA_TYPE_RIGHT_STEEP_FLOOR_SLOPE 0x3
#define CLIPDATA_TYPE_LEFT_UPPER_SLIGHT_FLOOR_SLOPE 0x4
#define CLIPDATA_TYPE_LEFT_LOWER_SLIGHT_FLOOR_SLOPE 0x5
#define CLIPDATA_TYPE_RIGHT_LOWER_SLIGHT_FLOOR_SLOPE 0x6
#define CLIPDATA_TYPE_RIGHT_UPPER_SLIGHT_FLOOR_SLOPE 0x7
#define CLIPDATA_TYPE_ENEMY_ONLY 0x8
#define CLIPDATA_TYPE_STOP_ENEMY 0x9
#define CLIPDATA_TYPE_TANK 0xA
#define CLIPDATA_TYPE_DOOR 0xB
#define CLIPDATA_TYPE_PASS_THROUGH_BOTTOM 0xC
#define CLIPDATA_TYPE_SOLID_FLAG 0x1000000
#define CLIP_BEHAVIOR_AIR_SOLID 0x0
#define CLIP_BEHAVIOR_ELEVATOR_DOWN 0x1
#define CLIP_BEHAVIOR_ELEVATOR_UP 0x2
#define CLIP_BEHAVIOR_DOOR_TRANSITION 0x3
#define CLIP_BEHAVIOR_VERTICAL_UP_TRANSITION 0x4
#define CLIP_BEHAVIOR_VERTICAL_DOWN_TRANSITION 0x5
#define CLIP_BEHAVIOR_NON_POWER_GRIP 0x6
#define CLIP_BEHAVIOR_STOP_ENEMY_SOLID 0x7
#define CLIP_BEHAVIOR_SPACE_PIRATE_ZONELINE 0x8
#define CLIP_BEHAVIOR_SPACE_PIRATE_WALLJUMP_POINT 0x9
#define CLIP_BEHAVIOR_SHOT_BLOCK_NEVER_REFORM 0x10
#define CLIP_BEHAVIOR_TOP_LEFT_SHOT_BLOCK_NEVER_REFORM 0x11
#define CLIP_BEHAVIOR_TOP_RIGHT_SHOT_BLOCK_NEVER_REFORM 0x12
#define CLIP_BEHAVIOR_BOTTOM_LEFT_SHOT_BLOCK_NEVER_REFORM 0x13
#define CLIP_BEHAVIOR_BOTTOM_RIGHT_SHOT_BLOCK_NEVER_REFORM 0x14
#define CLIP_BEHAVIOR_SHOT_BLOCK_NO_REFORM 0x15
#define CLIP_BEHAVIOR_TOP_LEFT_SHOT_BLOCK_NO_REFORM 0x16
#define CLIP_BEHAVIOR_TOP_RIGHT_SHOT_BLOCK_NO_REFORM 0x17
#define CLIP_BEHAVIOR_BOTTOM_LEFT_SHOT_BLOCK_NO_REFORM 0x18
#define CLIP_BEHAVIOR_BOTTOM_RIGHT_SHOT_BLOCK_NO_REFORM 0x19
#define CLIP_BEHAVIOR_SHOT_BLOCK_REFORM 0x1A
#define CLIP_BEHAVIOR_BOMB_BLOCK_NEVER_REFORM 0x1B
#define CLIP_BEHAVIOR_BOMB_BLOCK_REFORM 0x1C
#define CLIP_BEHAVIOR_MISSILE_BLOCK_NEVER_REFORM 0x1D
#define CLIP_BEHAVIOR_MISSILE_BLOCK_NO_REFORM 0x1E
#define CLIP_BEHAVIOR_SUPER_MISSILE_BLOCK_NEVER_REFORM 0x1F
#define CLIP_BEHAVIOR_SUPER_MISSILE_BLOCK_NO_REFORM 0x20
#define CLIP_BEHAVIOR_SPEEDBOOST_BLOCK_NO_REFORM 0x21
#define CLIP_BEHAVIOR_SPEEDBOOST_BLOCK_REFORM 0x22
#define CLIP_BEHAVIOR_CRUMBLE_BLOCK 0x23
#define CLIP_BEHAVIOR_POWER_BOMB_BLOCK_NEVER_REFORM 0x24
#define CLIP_BEHAVIOR_SCREW_ATTACK_BLOCK_NO_REFORM 0x25
#define CLIP_BEHAVIOR_VERTICAL_BOMB_CHAIN1 0x26
#define CLIP_BEHAVIOR_VERTICAL_BOMB_CHAIN2 0x27
#define CLIP_BEHAVIOR_VERTICAL_BOMB_CHAIN3 0x28
#define CLIP_BEHAVIOR_VERTICAL_BOMB_CHAIN4 0x29
#define CLIP_BEHAVIOR_HORIZONTAL_BOMB_CHAIN1 0x2A
#define CLIP_BEHAVIOR_HORIZONTAL_BOMB_CHAIN2 0x2B
#define CLIP_BEHAVIOR_HORIZONTAL_BOMB_CHAIN3 0x2C
#define CLIP_BEHAVIOR_HORIZONTAL_BOMB_CHAIN4 0x2D
#define CLIP_BEHAVIOR_SLOW_CRUMBLE_BLOCK 0x2E
#define CLIP_BEHAVIOR_HIDDEN_ENERGY_TANK 0x34
#define CLIP_BEHAVIOR_HIDDEN_MISSILE_TANK 0x35
#define CLIP_BEHAVIOR_HIDDEN_SUPER_MISSILE_TANK 0x36
#define CLIP_BEHAVIOR_HIDDEN_POWER_BOMB_TANK 0x37
#define CLIP_BEHAVIOR_ENERGY_TANK 0x38
#define CLIP_BEHAVIOR_MISSILE_TANK 0x39
#define CLIP_BEHAVIOR_SUPER_MISSILE_TANK 0x3A
#define CLIP_BEHAVIOR_POWER_BOMB_TANK 0x3B
#define CLIP_BEHAVIOR_UNDERWATER_ENERGY_TANK 0x3C
#define CLIP_BEHAVIOR_UNDERWATER_MISSILE_TANK 0x3D
#define CLIP_BEHAVIOR_UNDERWATER_SUPER_MISSILE_TANK 0x3E
#define CLIP_BEHAVIOR_UNDERWATER_POWER_BOMB_TANK 0x3F
#define CLIP_BEHAVIOR_WATER 0x40
#define CLIP_BEHAVIOR_STRONG_LAVA 0x41
#define CLIP_BEHAVIOR_WEAK_LAVA 0x42
#define CLIP_BEHAVIOR_ACID 0x43
#define CLIP_BEHAVIOR_BG0_TRIGGER_OPAQUE 0x44
#define CLIP_BEHAVIOR_BG0_TRIGGER_TRANSPARENT_LEVEL1 0x45
#define CLIP_BEHAVIOR_BG0_TRIGGER_TRANSPARENT_LEVEL2 0x46
#define CLIP_BEHAVIOR_BG0_TRIGGER_TRANSPARENT_LEVEL3 0x47
#define CLIP_BEHAVIOR_BG0_TRIGGER_TRANSPARENT_LEVEL4 0x48
#define CLIP_BEHAVIOR_BG0_TRIGGER_TRANSPARENT_LEVEL5 0x49
#define CLIP_BEHAVIOR_BG0_TRIGGER_TRANSPARENT_FULL 0x4A
#define CLIP_BEHAVIOR_BG0_TRIGGER_BRIGHTER_LEVEL1 0x4B
#define CLIP_BEHAVIOR_BG0_TRIGGER_BRIGHTER_LEVEL2 0x4C
#define CLIP_BEHAVIOR_BG0_TRIGGER_BRIGHTER_LEVEL3 0x4D
#define CLIP_BEHAVIOR_BG0_TRIGGER_BRIGHTER_LEVEL4 0x4E
#define CLIP_BEHAVIOR_BG0_TRIGGER_DEFAULT_TRANSPARENCY 0x4F
#define CLIP_BEHAVIOR_WET_GROUND 0x50
#define CLIP_BEHAVIOR_DUSTY_GROUND 0x51
#define CLIP_BEHAVIOR_GROUND_EFFECT_UNUSED 0x52
#define CLIP_BEHAVIOR_BUBBLY_GROUND 0x53
#define CLIP_BEHAVIOR_VERY_DUSTY_GROUND 0x54
#define CLIP_BEHAVIOR_GRAY_DOOR 0x80
#define CLIP_BEHAVIOR_REGULAR_DOOR 0x81
#define CLIP_BEHAVIOR_MISSILE_DOOR 0x82
#define CLIP_BEHAVIOR_SUPER_MISSILE_DOOR 0x83
#define CLIP_BEHAVIOR_POWER_BOMB_DOOR 0x84
// Structs
struct CurrentAffectingClip {
u16 movement;
u16 hazard;
};
struct CollisionData {
i32 clipdataType;
i32 subPixelX;
i32 subPixelY;
i32 actorType;
u16 tileX;
u16 tileY;
};
struct TilemapAndClipPointers {
u16* pTilemap;
u8* pClipCollisions;
u16* pClipBehaviors;
};
// Typedef
typedef u32 (*ClipFunc_T)(struct CollisionData*);
// Functions
void ClipdataSetupCode(void);

View File

@ -2,154 +2,6 @@
#define CONNECTION_H
#include "types.h"
#include "event.h"
#include "music.h"
// Globals
#define MAX_AMOUNT_OF_HATCHES 16
#define MAX_AMOUNT_OF_AREAS 8
#define MAX_AMOUNT_OF_HATCH_TYPES 8
#define MAX_AMOUNT_OF_EVENT_BASED_CONNECTIONS 41
extern u32 gHatchesOpened[MAX_AMOUNT_OF_AREAS][8];
extern struct HatchesState gHatchesState;
extern struct HatchData gHatchData[MAX_AMOUNT_OF_HATCHES];
extern u8 gNumberOfValidHatchesInRoom;
// Defines
#define AREA_BRINSTAR 0x0
#define AREA_KRAID 0x1
#define AREA_NORFAIR 0x2
#define AREA_RIDLEY 0x3
#define AREA_TOURIAN 0x4
#define AREA_CRATERIA 0x5
#define AREA_CHOZODIA 0x6
#define AREA_INVALID 0x7
#define AREA_NONE 0xFF
#define DOOR_TYPE_NONE 0x0
#define DOOR_TYPE_AREA_CONNECTION 0x1
#define DOOR_TYPE_NO_HATCH 0x2
#define DOOR_TYPE_OPEN_HATCH 0x3
#define DOOR_TYPE_CLOSED_HATCH 0x4
#define DOOR_TYPE_REMOVE_MOTHER_SHIP 0x5
#define DOOR_TYPE_SET_MOTHER_SHIP 0x6
#define DOOR_TYPE_NO_FLAGS 0xF
#define DOOR_TYPE_EXISTS 0x10
#define DOOR_TYPE_LOAD_EVENT_BASED_ROOM 0x20
#define DOOR_TYPE_DISPLAYS_ROOM_LOCATION 0x40
#define HATCH_NONE 0x0
#define HATCH_UNUSED 0x1
#define HATCH_NORMAL 0x2
#define HATCH_MISSILE 0x3
#define HATCH_SUPER_MISSILE 0x4
#define HATCH_POWER_BOMB 0x5
#define HATCH_LOCKED 0x6
#define HATCH_LOCKED_AND_LOCK_DESTINATION 0x7
#define HATCH_ACTION_CHECKING_OPENED 0x0
#define HATCH_ACTION_SETTING_SOURCE_AND_DESTINATION 0x1
#define HATCH_ACTION_SETTING_SOURCE 0x2
#define HATCH_OPENING_ACTION_NOT_OPENING 0x0
#define HATCH_OPENING_ACTION_OPENING 0x1
#define HATCH_OPENING_ACTION_LOCKED 0x2
#define HATCH_VERTICAL_SIZE 4
#define ELEVATOR_ROUTE_NONE 0x0
#define ELEVATOR_ROUTE_CRATERIA_TO_BRINSTAR 0x1
#define ELEVATOR_ROUTE_BRINSTAR_TO_NORFAIR 0x2
#define ELEVATOR_ROUTE_BRINSTAR_TO_KRAID 0x3
#define ELEVATOR_ROUTE_NORFAIR_TO_RIDLEY 0x4
#define ELEVATOR_ROUTE_BRINSTAR_TO_TOURIAN 0x5
#define ELEVATOR_ROUTE_CRATERIA_TO_TOURIAN 0x6
#define ELEVATOR_ROUTE_CRATERIA_TO_NORFAIR 0x7
#define ELEVATOR_DIRECTION_DOWN 0x1
#define ELEVATOR_DIRECTION_UP -0x1
// Structs
struct Door {
u8 type;
u8 sourceRoom;
u8 xStart;
u8 xEnd;
u8 yStart;
u8 yEnd;
u8 destinationDoor;
i8 xExit;
i8 yExit;
};
struct EventBasedConnection {
u8 sourceArea;
u8 sourceDoor;
u8 event;
u8 destinationDoor;
};
struct HatchLockEvent {
u8 room;
u8 event;
u8 isBefore;
u8 hatchesToLock1:1;
u8 hatchesToLock2:1;
u8 hatchesToLock3:1;
u8 hatchesToLock4:1;
u8 hatchesToLock5:1;
u8 hatchesToLock6:1;
u8 hatchesToLock7:1;
u8 hatchesToLock8:1;
u8 hatchesToLockPart2_1:1;
u8 hatchesToLockPart2_2:1;
u8 hatchesToLockPart2_3:1;
u8 hatchesToLockPart2_4:1;
u8 hatchesToLockPart2_5:1;
u8 hatchesToLockPart2_6:1;
u8 hatchesToLockPart2_7:1;
u8 hatchesToLockPart2_8:1;
};
struct HatchData {
/* 0 */
u8 exists:1;
u8 currentAnimationFrame:3;
u8 facingRight:1;
u8 padding:3;
/* 1 */
u8 opening:2;
u8 locked:2;
u8 flashingTimer:4;
/* 2 */
u8 hitTimer:4;
u8 hits:4;
/* 3 */
u8 type;
u8 animationDurationCounter;
u8 xPosition;
u8 yPosition;
u8 sourceDoor;
};
struct LastElevatorUsed {
u16 unused;
u8 route;
i8 direction;
};
struct HatchesState {
i8 unlocking;
i8 unk;
u16 hatchesLockedWithTimer;
u16 hatchesLockedWithEvent;
u16 unk2;
};
// Functions

64
include/constants/audio.h Normal file
View File

@ -0,0 +1,64 @@
#define MUSIC_NONE 0x0
#define MUSIC_BRINSTAR 0x1
#define MUSIC_TITLE_SCREEN 0x2
#define MUSIC_SAVE_ELEVATOR_ROOM 0x3
#define MUSIC_INTRO 0x4
#define MUSIC_CHOZO_STATUE_HINT 0x5
#define MUSIC_NORFAIR 0x6
#define MUSIC_KRAID 0x7
#define MUSIC_ESCAPE 0x8
#define MUSIC_FILE_SELECT 0x9
#define MUSIC_STATUE_ROOM 0xA
#define MUSIC_BOSS_KILLED 0xB
#define MUSIC_MAP_ROOM 0xC
#define MUSIC_CHOZO_RUINS_DEPTH 0xD
#define MUSIC_CHOZO_RUINS 0xE
#define MUSIC_CHOZO_RUINS_LIGHT 0xF
#define MUSIC_RIDLEY_IN_SPACE 0x10
#define MUSIC_RIDLEY_LANDING 0x11
#define MUSIC_CHOZO_STATUE_HINT_DELAY 0x12
#define MUSIC_GETTING_FULLY_POWERED_SUIT_CUTSCENE 0x13
#define MUSIC_ESCAPING_ZEBES_CUTSCENE 0x14
#define MUSIC_CHOZO_VOICE_1 0x15
#define MUSIC_CHOZO_VOICE_2 0x16
#define MUSIC_BEFORE_RUINS_TEST_UNUSED 0x17
#define MUSIC_ELEVATOR_ROOM 0x18
#define MUSIC_BRINSTAR_REMIX 0x19
#define MUSIC_ESCAPE_SUCCESFUL 0x1A
#define MUSIC_CREDITS 0x1B
#define MUSIC_STATUE_ROOM_OPENED 0x1C
#define MUSIC_RIDLEY 0x32
#define MUSIC_KRAID_BATTLE_WITH_INTRO 0x34
#define MUSIC_RIDLEY_BATTLE 0x35
#define MUSIC_LOADING_JINGLE 0x36
#define MUSIC_GETTING_ITEM_JINGLE 0x37
#define MUSIC_UNUSED 0x39
#define MUSIC_GETTING_TANK_JINGLE 0x3A
#define MUSIC_TOURIAN 0x3B
#define MUSIC_WORMS_BATTLE 0x3C
#define MUSIC_MOTHER_BRAIN_BATTLE 0x3D
#define MUSIC_CATTERPILLARS_BATTLE 0x3E
#define MUSIC_IMAGO_COCOON_BATTLE 0x3F
#define MUSIC_IMAGO_BATTLE 0x40
#define MUSIC_MECHA_RIDLEY_BATTLE 0x41
#define MUSIC_GETTING_UNKNOWN_ITEM_JINGLE 0x42
#define MUSIC_RUINS_TEST_BATTLE_WITH_INTRO 0x43
#define MUSIC_ENTERING_TOURIAN_CUTSCENE 0x44
#define MUSIC_ALARM_ACTIVATED 0x45
#define MUSIC_STEALTH 0x46
#define MUSIC_ENTERING_NORFAIR_CUTSCENE 0x48
#define MUSIC_CHOZODIA_DETECTED 0x49
#define MUSIC_GETTING_FULLY_POWERED_SUIT_JINGLE 0x4A
#define MUSIC_KRAID_BATTLE 0x4B
#define MUSIC_RIDLEY_BATTLE_2 0x4C
#define MUSIC_MECHA_RIDLEY_BATTLE_2 0x4D
#define MUSIC_RUINS_TEST_BATTLE 0x4E
#define MUSIC_CATTERPILLARS_BATTLE_2 0x4F
#define MUSIC_CRATERIA 0x50
#define MUSIC_GAME_OVER 0x53
#define MUSIC_UNKNOWN 0x54
#define MUSIC_CHOZODIA_SURFACE 0x5A
#define MUSIC_MAP_ROOM_2 0x5B
#define MUSIC_SAVE_ELEVATOR_ROOM_2 0x5C
#define MUSIC_BEFORE_RUINS_TEST_ROOM 0x5D
#define MUSIC_STEALTH_2 0x5E

View File

@ -0,0 +1,149 @@
#define MAX_AMOUNT_OF_CAA 16
#define CAA_NONE 0x0
#define CAA_REMOVE_SOLID 0x1
#define CAA_MAKE_SOLID_GRIPPABLE 0x2
#define CAA_MAKE_SOLID2 0x3
#define CAA_MAKE_SOLID3 0x4
#define CAA_BOMB_CHAIN_UNUSED 0x5
#define CAA_UNUSED 0x6
#define CAA_BEAM 0x7
#define CAA_BOMB_PISTOL 0x8
#define CAA_MISSILE 0x9
#define CAA_SUPER_MISSILE 0xA
#define CAA_POWER_BOMB 0xB
#define CAA_SPEEDBOOSTER 0xC
#define CAA_SPEEDBOOSTER_ON_GROUND 0xD
#define CAA_SCREW_ATTACK 0xE
#define CAA_BOMB_CHAIN 0xF
#define COLLISION_AIR 0x0
#define COLLISION_LEFT_SLIGHT_FLOOR_SLOPE 0x2
#define COLLISION_RIGHT_SLIGHT_FLOOR_SLOPE 0x3
#define COLLISION_LEFT_STEEP_FLOOR_SLOPE 0x4
#define COLLISION_RIGHT_STEEP_FLOOR_SLOPE 0x5
#define COLLISION_PASS_THROUGH_BOTTOM 0x10
#define COLLISION_SOLID 0x11
#define CLIPDATA_MOVEMENT_NONE 0x0
#define CLIPDATA_MOVEMENT_ELEVATOR_DOWN_BLOCK 0x1
#define CLIPDATA_MOVEMENT_ELEVATOR_UP_BLOCK 0x2
#define CLIPDATA_MOVEMENT_NON_POWER_GRIP 0x6
#define CLIPDATA_MOVEMENT_STOP_ENEMY_BLOCK_SOLID 0x7
#define CLIPDATA_MOVEMENT_SPACE_PIRATE_ZONELINE 0x8
#define CLIPDATA_MOVEMENT_SPACE_PIRATE_WALLJUMP_POINT 0x9
#define HAZARD_TYPE_NONE 0x0
#define HAZARD_TYPE_WATER 0x1
#define HAZARD_TYPE_STRONG_LAVA 0x2
#define HAZARD_TYPE_WEAK_LAVA 0x3
#define HAZARD_TYPE_ACID 0x4
#define HAZARD_TYPE_HEAT 0x5
#define HAZARD_TYPE_SNOWFLAKES_KNOCKBACK 0x6
#define HAZARD_TYPE_COLD 0x7
#define GROUND_EFFECT_NONE 0x0
#define GROUND_EFFECT_WET_GROUND 0x1
#define GROUND_EFFECT_DUSTY_GROUND 0x2
#define GROUND_EFFECT_VERY_DUSTY_GROUND 0x3
#define GROUND_EFFECT_UNKNOWN 0x4
#define GROUND_EFFECT_BUBBLY_GROUND 0x5
#define CLIPDATA_ACTOR_SAMUS 0x0
#define CLIPDATA_ACTOR_NON_SPRITE 0x1
#define CLIPDATA_ACTOR_SPRITE 0x2
#define CLIPDATA_TYPE_AIR 0x0
#define CLIPDATA_TYPE_SOLID 0x1
#define CLIPDATA_TYPE_LEFT_STEEP_FLOOR_SLOPE 0x2
#define CLIPDATA_TYPE_RIGHT_STEEP_FLOOR_SLOPE 0x3
#define CLIPDATA_TYPE_LEFT_UPPER_SLIGHT_FLOOR_SLOPE 0x4
#define CLIPDATA_TYPE_LEFT_LOWER_SLIGHT_FLOOR_SLOPE 0x5
#define CLIPDATA_TYPE_RIGHT_LOWER_SLIGHT_FLOOR_SLOPE 0x6
#define CLIPDATA_TYPE_RIGHT_UPPER_SLIGHT_FLOOR_SLOPE 0x7
#define CLIPDATA_TYPE_ENEMY_ONLY 0x8
#define CLIPDATA_TYPE_STOP_ENEMY 0x9
#define CLIPDATA_TYPE_TANK 0xA
#define CLIPDATA_TYPE_DOOR 0xB
#define CLIPDATA_TYPE_PASS_THROUGH_BOTTOM 0xC
#define CLIPDATA_TYPE_SOLID_FLAG 0x1000000
#define CLIP_BEHAVIOR_AIR_SOLID 0x0
#define CLIP_BEHAVIOR_ELEVATOR_DOWN 0x1
#define CLIP_BEHAVIOR_ELEVATOR_UP 0x2
#define CLIP_BEHAVIOR_DOOR_TRANSITION 0x3
#define CLIP_BEHAVIOR_VERTICAL_UP_TRANSITION 0x4
#define CLIP_BEHAVIOR_VERTICAL_DOWN_TRANSITION 0x5
#define CLIP_BEHAVIOR_NON_POWER_GRIP 0x6
#define CLIP_BEHAVIOR_STOP_ENEMY_SOLID 0x7
#define CLIP_BEHAVIOR_SPACE_PIRATE_ZONELINE 0x8
#define CLIP_BEHAVIOR_SPACE_PIRATE_WALLJUMP_POINT 0x9
#define CLIP_BEHAVIOR_SHOT_BLOCK_NEVER_REFORM 0x10
#define CLIP_BEHAVIOR_TOP_LEFT_SHOT_BLOCK_NEVER_REFORM 0x11
#define CLIP_BEHAVIOR_TOP_RIGHT_SHOT_BLOCK_NEVER_REFORM 0x12
#define CLIP_BEHAVIOR_BOTTOM_LEFT_SHOT_BLOCK_NEVER_REFORM 0x13
#define CLIP_BEHAVIOR_BOTTOM_RIGHT_SHOT_BLOCK_NEVER_REFORM 0x14
#define CLIP_BEHAVIOR_SHOT_BLOCK_NO_REFORM 0x15
#define CLIP_BEHAVIOR_TOP_LEFT_SHOT_BLOCK_NO_REFORM 0x16
#define CLIP_BEHAVIOR_TOP_RIGHT_SHOT_BLOCK_NO_REFORM 0x17
#define CLIP_BEHAVIOR_BOTTOM_LEFT_SHOT_BLOCK_NO_REFORM 0x18
#define CLIP_BEHAVIOR_BOTTOM_RIGHT_SHOT_BLOCK_NO_REFORM 0x19
#define CLIP_BEHAVIOR_SHOT_BLOCK_REFORM 0x1A
#define CLIP_BEHAVIOR_BOMB_BLOCK_NEVER_REFORM 0x1B
#define CLIP_BEHAVIOR_BOMB_BLOCK_REFORM 0x1C
#define CLIP_BEHAVIOR_MISSILE_BLOCK_NEVER_REFORM 0x1D
#define CLIP_BEHAVIOR_MISSILE_BLOCK_NO_REFORM 0x1E
#define CLIP_BEHAVIOR_SUPER_MISSILE_BLOCK_NEVER_REFORM 0x1F
#define CLIP_BEHAVIOR_SUPER_MISSILE_BLOCK_NO_REFORM 0x20
#define CLIP_BEHAVIOR_SPEEDBOOST_BLOCK_NO_REFORM 0x21
#define CLIP_BEHAVIOR_SPEEDBOOST_BLOCK_REFORM 0x22
#define CLIP_BEHAVIOR_CRUMBLE_BLOCK 0x23
#define CLIP_BEHAVIOR_POWER_BOMB_BLOCK_NEVER_REFORM 0x24
#define CLIP_BEHAVIOR_SCREW_ATTACK_BLOCK_NO_REFORM 0x25
#define CLIP_BEHAVIOR_VERTICAL_BOMB_CHAIN1 0x26
#define CLIP_BEHAVIOR_VERTICAL_BOMB_CHAIN2 0x27
#define CLIP_BEHAVIOR_VERTICAL_BOMB_CHAIN3 0x28
#define CLIP_BEHAVIOR_VERTICAL_BOMB_CHAIN4 0x29
#define CLIP_BEHAVIOR_HORIZONTAL_BOMB_CHAIN1 0x2A
#define CLIP_BEHAVIOR_HORIZONTAL_BOMB_CHAIN2 0x2B
#define CLIP_BEHAVIOR_HORIZONTAL_BOMB_CHAIN3 0x2C
#define CLIP_BEHAVIOR_HORIZONTAL_BOMB_CHAIN4 0x2D
#define CLIP_BEHAVIOR_SLOW_CRUMBLE_BLOCK 0x2E
#define CLIP_BEHAVIOR_HIDDEN_ENERGY_TANK 0x34
#define CLIP_BEHAVIOR_HIDDEN_MISSILE_TANK 0x35
#define CLIP_BEHAVIOR_HIDDEN_SUPER_MISSILE_TANK 0x36
#define CLIP_BEHAVIOR_HIDDEN_POWER_BOMB_TANK 0x37
#define CLIP_BEHAVIOR_ENERGY_TANK 0x38
#define CLIP_BEHAVIOR_MISSILE_TANK 0x39
#define CLIP_BEHAVIOR_SUPER_MISSILE_TANK 0x3A
#define CLIP_BEHAVIOR_POWER_BOMB_TANK 0x3B
#define CLIP_BEHAVIOR_UNDERWATER_ENERGY_TANK 0x3C
#define CLIP_BEHAVIOR_UNDERWATER_MISSILE_TANK 0x3D
#define CLIP_BEHAVIOR_UNDERWATER_SUPER_MISSILE_TANK 0x3E
#define CLIP_BEHAVIOR_UNDERWATER_POWER_BOMB_TANK 0x3F
#define CLIP_BEHAVIOR_WATER 0x40
#define CLIP_BEHAVIOR_STRONG_LAVA 0x41
#define CLIP_BEHAVIOR_WEAK_LAVA 0x42
#define CLIP_BEHAVIOR_ACID 0x43
#define CLIP_BEHAVIOR_BG0_TRIGGER_OPAQUE 0x44
#define CLIP_BEHAVIOR_BG0_TRIGGER_TRANSPARENT_LEVEL1 0x45
#define CLIP_BEHAVIOR_BG0_TRIGGER_TRANSPARENT_LEVEL2 0x46
#define CLIP_BEHAVIOR_BG0_TRIGGER_TRANSPARENT_LEVEL3 0x47
#define CLIP_BEHAVIOR_BG0_TRIGGER_TRANSPARENT_LEVEL4 0x48
#define CLIP_BEHAVIOR_BG0_TRIGGER_TRANSPARENT_LEVEL5 0x49
#define CLIP_BEHAVIOR_BG0_TRIGGER_TRANSPARENT_FULL 0x4A
#define CLIP_BEHAVIOR_BG0_TRIGGER_BRIGHTER_LEVEL1 0x4B
#define CLIP_BEHAVIOR_BG0_TRIGGER_BRIGHTER_LEVEL2 0x4C
#define CLIP_BEHAVIOR_BG0_TRIGGER_BRIGHTER_LEVEL3 0x4D
#define CLIP_BEHAVIOR_BG0_TRIGGER_BRIGHTER_LEVEL4 0x4E
#define CLIP_BEHAVIOR_BG0_TRIGGER_DEFAULT_TRANSPARENCY 0x4F
#define CLIP_BEHAVIOR_WET_GROUND 0x50
#define CLIP_BEHAVIOR_DUSTY_GROUND 0x51
#define CLIP_BEHAVIOR_GROUND_EFFECT_UNUSED 0x52
#define CLIP_BEHAVIOR_BUBBLY_GROUND 0x53
#define CLIP_BEHAVIOR_VERY_DUSTY_GROUND 0x54
#define CLIP_BEHAVIOR_GRAY_DOOR 0x80
#define CLIP_BEHAVIOR_REGULAR_DOOR 0x81
#define CLIP_BEHAVIOR_MISSILE_DOOR 0x82
#define CLIP_BEHAVIOR_SUPER_MISSILE_DOOR 0x83
#define CLIP_BEHAVIOR_POWER_BOMB_DOOR 0x84

View File

@ -0,0 +1,56 @@
// Defines
#define AREA_BRINSTAR 0x0
#define AREA_KRAID 0x1
#define AREA_NORFAIR 0x2
#define AREA_RIDLEY 0x3
#define AREA_TOURIAN 0x4
#define AREA_CRATERIA 0x5
#define AREA_CHOZODIA 0x6
#define AREA_INVALID 0x7
#define AREA_NONE 0xFF
#define DOOR_TYPE_NONE 0x0
#define DOOR_TYPE_AREA_CONNECTION 0x1
#define DOOR_TYPE_NO_HATCH 0x2
#define DOOR_TYPE_OPEN_HATCH 0x3
#define DOOR_TYPE_CLOSED_HATCH 0x4
#define DOOR_TYPE_REMOVE_MOTHER_SHIP 0x5
#define DOOR_TYPE_SET_MOTHER_SHIP 0x6
#define DOOR_TYPE_NO_FLAGS 0xF
#define DOOR_TYPE_EXISTS 0x10
#define DOOR_TYPE_LOAD_EVENT_BASED_ROOM 0x20
#define DOOR_TYPE_DISPLAYS_ROOM_LOCATION 0x40
#define HATCH_NONE 0x0
#define HATCH_UNUSED 0x1
#define HATCH_NORMAL 0x2
#define HATCH_MISSILE 0x3
#define HATCH_SUPER_MISSILE 0x4
#define HATCH_POWER_BOMB 0x5
#define HATCH_LOCKED 0x6
#define HATCH_LOCKED_AND_LOCK_DESTINATION 0x7
#define HATCH_ACTION_CHECKING_OPENED 0x0
#define HATCH_ACTION_SETTING_SOURCE_AND_DESTINATION 0x1
#define HATCH_ACTION_SETTING_SOURCE 0x2
#define HATCH_OPENING_ACTION_NOT_OPENING 0x0
#define HATCH_OPENING_ACTION_OPENING 0x1
#define HATCH_OPENING_ACTION_LOCKED 0x2
#define HATCH_VERTICAL_SIZE 4
#define ELEVATOR_ROUTE_NONE 0x0
#define ELEVATOR_ROUTE_CRATERIA_TO_BRINSTAR 0x1
#define ELEVATOR_ROUTE_BRINSTAR_TO_NORFAIR 0x2
#define ELEVATOR_ROUTE_BRINSTAR_TO_KRAID 0x3
#define ELEVATOR_ROUTE_NORFAIR_TO_RIDLEY 0x4
#define ELEVATOR_ROUTE_BRINSTAR_TO_TOURIAN 0x5
#define ELEVATOR_ROUTE_CRATERIA_TO_TOURIAN 0x6
#define ELEVATOR_ROUTE_CRATERIA_TO_NORFAIR 0x7
#define ELEVATOR_DIRECTION_DOWN 0x1
#define ELEVATOR_DIRECTION_UP -0x1

View File

@ -0,0 +1,7 @@
#define ESCAPE_NONE 0
#define ESCAPE_MOTHER_BRAIN 1
#define ESCAPE_MECHA_RIDLEY 2
#define ESCAPE_STATUS_NONE 0
#define ESCAPE_STATUS_HAPPENNING 1
#define ESCAPE_STATUS_FAILED 2

87
include/constants/event.h Normal file
View File

@ -0,0 +1,87 @@
// Defines
#define EVENT_ACTION_CLEARING 0x0
#define EVENT_ACTION_SETTING 0x1
#define EVENT_ACTION_TOGGLING 0x2
#define EVENT_ACTION_CHECKING 0x3
#define EVENT_NONE 0x0
#define EVENT_EASY 0x1
#define EVENT_HARD 0x2
#define EVENT_ENTER_NORFAIR_DEMO_PLAYED 0x3
#define EVENT_EXIT_KRAID_DEMO_PLAYED 0x4
#define EVENT_ENTER_RIDLEY_DEMO_PLAYED 0x5
#define EVENT_ENTER_MOTHERSHIP_DEMO_PLAYED 0x6
#define EVENT_ENTER_TOURIAN_DEMO_PLAYED 0x7
#define EVENT_STATUE_LONG_BEAM_GRABBED 0x8
#define EVENT_STATUE_BOMBS_GRABBED 0x9
#define EVENT_STATUE_ICE_BEAM_GRABBED 0xA
#define EVENT_STATUE_SPEEDBOOSTER_GRABBED 0xB
#define EVENT_STATUE_HIGH_JUMP_GRABBED 0xC
#define EVENT_STATUE_VARIA_SUIT_GRABBED 0xD
#define EVENT_STATUE_WAVE_BEAM_GRABBED 0xE
#define EVENT_STATUE_SCREW_ATTACK_GRABBED 0xF
#define EVENT_POWER_GRIP_OBTAINED 0x10
#define EVENT_CHOZO_PILLAR_FULLY_EXTENDED 0x11
#define EVENT_HIGH_JUMP_OBTAINED 0x12
#define EVENT_VARIA_SUIT_OBTAINED 0x13
#define EVENT_CHARGE_BEAM_OBTAINED 0x14
#define EVENT_SCREW_ATTACK_OBTAINED 0x15
#define EVENT_SPACE_JUMP_OBTAINED 0x16
#define EVENT_GRAVITY_SUIT_OBTAINED 0x17
#define EVENT_PLASMA_BEAM_OBTAINED 0x18
#define EVENT_DEOREM_ENCOUNTERED_AT_FIRST_LOCATION_OR_KILLED 0x19
#define EVENT_DEOREM_ENCOUNTERED_AT_SECOND_LOCATION_OR_KILLED 0x1A
#define EVENT_DEOREM_KILLED_AT_SECOND_LOCATION 0x1B
#define EVENT_ACID_WORM_KILLED 0x1C
#define EVENT_KRAID_GADORA_KILLED 0x1D
#define EVENT_KRAID_KILLED 0x1E
#define EVENT_KRAID_ELEVATOR_STATUE_DESTROYED 0x1F
#define EVENT_CATERPILLAR_KILLED 0x20
#define EVENT_IMAGO_TUNNEL_DISCOVERED 0x21
#define EVENT_IMAGO_COCOON_KILLED 0x22
#define EVENT_IMAGO_KILLED 0x23
#define EVENT_RIDLEY_GADORA_KILLED 0x24
#define EVENT_RIDLEY_KILLED 0x25
#define EVENT_RIDLEY_ELEVATOR_STATUE_DESTROYED 0x26
#define EVENT_MOTHER_BRAIN_KILLED 0x27
#define EVENT_CROCOMIRE_KILLED 0x28
#define EVENT_REPEL_MACHINE_KILLED 0x29
#define EVENT_VIEWED_STATUE_ROOM 0x2A
#define EVENT_LONG_BEAM_DESSGEEGA_KILLED 0x2B
#define EVENT_THREE_HIVES_DESTROYED 0x2C
#define EVENT_BUGS_KILLED 0x2D
#define EVENT_ZIPLINES_ACTIVATED 0x2E
#define EVENT_PLANT_DESTROYED_LAVA 0x2F
#define EVENT_PLANT_DESTROYED_POST_VARIA 0x30
#define EVENT_PLANT_DESTROYED_VARIA2 0x31
#define EVENT_PLANT_DESTROYED_VARIA3 0x32
#define EVENT_PLANT_DESTROYED_VARIA1 0x33
#define EVENT_KRAID_BARISTUTES_KILLED 0x34
#define EVENT_KRAID_STATUE_OPENED 0x35
#define EVENT_RIDLEY_STATUE_OPENED 0x36
#define EVENT_FIRST_METROID_ROOM_CLEARED 0x37
#define EVENT_THIRD_METROID_ROOM_CLEARED 0x38
#define EVENT_FIFTH_METROID_ROOM_CLEARED 0x39
#define EVENT_SECOND_METROID_ROOM_CLEARED 0x3A
#define EVENT_SIXTH_METROID_ROOM_CLEARED 0x3B
#define EVENT_FOURTH_METROID_ROOM_CLEARED 0x3C
#define EVENT_ZEBETITE_ONE_DESTROYED 0x3D
#define EVENT_ZEBETITE_TWO_DESTROYED 0x3E
#define EVENT_ZEBETITE_THREE_DESTROYED 0x3F
#define EVENT_ZEBETITE_FOUR_DESTROYED 0x40
#define EVENT_ESCAPED_ZEBES 0x41
#define EVENT_MARKER_BETWEEN_ZEBES_AND_MOTHERSHIP 0x42
#define EVENT_FULLY_POWERED_SUIT_OBTAINED 0x43
#define EVENT_SKIPPED_VARIA_SUIT 0x44
#define EVENT_CHOZOBLOCK 0x45
#define EVENT_POWER_BOMB_STOLEN 0x46
#define EVENT_SPACE_PIRATE_WITH_POWER_BOMB_ONE 0x47
#define EVENT_SPACE_PIRATE_WITH_POWER_BOMB_TWO 0x48
#define EVENT_GLASS_TUBE_BROKEN 0x49
#define EVENT_MECHA_RIDLEY_KILLED 0x4A
#define EVENT_ESCAPED_CHOZODIA 0x4B
#define EVENT_AKI 0x4C
#define EVENT_BOMBATE 0x4D
#define EVENT_END_UNUSED 0x4E

View File

@ -0,0 +1,44 @@
#define PAUSE_SCREEN_NONE 0
#define PAUSE_SCREEN_UNKNOWN_1 1
#define PAUSE_SCREEN_PAUSE_OR_CUTSCENE 2
#define PAUSE_SCREEN_UNKNOWN_3 3
#define PAUSE_SCREEN_CHOZO_HINT 4
#define PAUSE_SCREEN_MAP_DOWNLOAD 5
#define PAUSE_SCREEN_ITEM_ACQUISITION 6
#define PAUSE_SCREEN_SUITLESS_ITEMS 7
#define PAUSE_SCREEN_FULLY_POWERED_SUIT_ITEMS 8
#define PAUSE_SCREEN_UNKNOWN_9 9
#define MAX_AMOUNT_OF_DIFFICULTIES 3
#define DIFF_EASY 0
#define DIFF_NORMAL 2
#define DIFF_HARD 3
#define LANGUAGE_JAPANESE 0
#define LANGUAGE_HIRAGANA 1
#define LANGUAGE_ENGLISH 2
#define GM_SOFTRESET 0
#define GM_INTRO 1
#define GM_TITLE 2
#define GM_FILESELECT 3
#define GM_INGAME 4
#define GM_MAP_SCREEN 5
#define GM_GAMEOVER 6
#define GM_CHOZODIA_ESCAPE 7
#define GM_CREDITS 8
#define GM_TOURIAN_ESCAPE 9
#define GM_CUTSCENE 10
#define GM_DEMO 11
#define GM_GALLERY 12
#define GM_FUSION_GALLERY 13
#define GM_START_SOFTRESET 14
#define GM_ERASE_SRAM 15
#define GM_DEBUG_MENU 16
// For in game
#define SUB_GAME_MODE_PLAYING 0x2
#define SUB_GAME_MODE_LOADING_ROOM 0x3

View File

@ -0,0 +1,44 @@
#define PROJECTILE_NONE 0x0
#define PROJECTILE_BEAM 0x1
#define PROJECTILE_MISSILE 0x2
#define PROJECTILE_SUPER_MISSILE 0x3
#define PROJECTILE_BOMB 0x4
#define PROJECTILE_POWER_BOMB 0x5
#define PROJECTILE_CHARGED_BEAM 0x6
#define PROJ_STATUS_NONE 0x0
#define PROJ_STATUS_EXISTS 0x1
#define PROJ_STATUS_ON_SCREEN 0x2
#define PROJ_STATUS_NOT_DRAWN 0x4
#define PROJ_STATUS_HIGH_PRIORITY 0x8
#define PROJ_STATUS_CAN_AFFECT_ENVIRONMENT 0x10
#define PROJ_STATUS_YFLIP 0x20
#define PROJ_STATUS_XFLIP 0x40
#define PROJ_STATUS_UNKNOWN 0x80
#define PROJ_TYPE_BEAM 0x0
#define PROJ_TYPE_LONG_BEAM 0x1
#define PROJ_TYPE_ICE_BEAM 0x2
#define PROJ_TYPE_WAVE_BEAM 0x3
#define PROJ_TYPE_PLASMA_BEAM 0x4
#define PROJ_TYPE_PISTOL 0x5
#define PROJ_TYPE_CHARGED_BEAM 0x6
#define PROJ_TYPE_CHARGED_LONG_BEAM 0x7
#define PROJ_TYPE_CHARGED_ICE_BEAM 0x8
#define PROJ_TYPE_CHARGED_WAVE_BEAM 0x9
#define PROJ_TYPE_CHARGED_PLASMA_BEAM 0xA
#define PROJ_TYPE_CHARGED_PISTOL 0xB
#define PROJ_TYPE_MISSILE 0xC
#define PROJ_TYPE_SUPER_MISSILE 0xD
#define PROJ_TYPE_BOMB 0xE
#define PROJ_TYPE_POWER_BOMB 0xF
#define BOMB_STAGE_INIT 0x0
#define BOMB_STAGE_FIRST_SPIN 0x1
#define BOMB_STAGE_FAST_SPIN 0x2
#define BOMB_STAGE_EXPLODING 0x3
#define BOMB_STAGE_PLACED_ON_LAUNCHER 0x4
#define BOMB_STAGE_FIRST_SPIN_ON_LAUNCHER 0x5
#define BOMB_STAGE_FAST_SPIN_ON_LAUNCHER 0x6
#define BOMB_STAGE_EXPLODING_ON_LAUNCHER 0x7

199
include/constants/samus.h Normal file
View File

@ -0,0 +1,199 @@
#define BBF_NONE 0x0
#define BBF_LONG_BEAM 0x1
#define BBF_ICE_BEAM 0x2
#define BBF_WAVE_BEAM 0x4
#define BBF_PLASMA_BEAM 0x8
#define BBF_CHARGE_BEAM 0x10
#define BBF_BOMBS 0x80
#define SMF_NONE 0x0
#define SMF_HIGH_JUMP 0x1
#define SMF_SPEEDBOOSTER 0x2
#define SMF_SPACE_JUMP 0x4
#define SMF_SCREW_ATTACK 0x8
#define SMF_VARIA_SUIT 0x10
#define SMF_GRAVITY_SUIT 0x20
#define SMF_MORPH_BALL 0x40
#define SMF_POWER_GRIP 0x80
#define SUIT_NORMAL 0x0
#define SUIT_FULLY_POWERED 0x1
#define SUIT_SUITLESS 0x2
#define DIAG_AIM_NONE 0x0
#define DIAG_AIM_UP 0x1
#define DIAG_AIM_DOWN 0x2
#define WH_NONE 0x0
#define WH_MISSILE 0x1
#define WH_SUPER_MISSILE 0x2
#define WH_POWER_BOMB 0x4
#define SPOSE_RUNNING 0x0
#define SPOSE_STANDING 0x1
#define SPOSE_TURNING_AROUND 0x2
#define SPOSE_SHOOTING 0x3
#define SPOSE_CROUCHING 0x4
#define SPOSE_TURNING_AROUND_AND_CROUCHING 0x5
#define SPOSE_SHOOTING_AND_CROUCHING 0x6
#define SPOSE_SKIDDING 0x7
#define SPOSE_MIDAIR 0x8
#define SPOSE_TURNING_AROUND_MIDAIR 0x9
#define SPOSE_LANDING 0xA
#define SPOSE_STARTING_SPIN_JUMP 0xB
#define SPOSE_SPINNING 0xC
#define SPOSE_STARTING_WALL_JUMP 0xD
#define SPOSE_SPACE_JUMPING 0xE
#define SPOSE_SCREW_ATTACKING 0xF
#define SPOSE_MORPHING 0x10
#define SPOSE_MORPH_BALL 0x11
#define SPOSE_ROLLING 0x12
#define SPOSE_UNMORPHING 0x13
#define SPOSE_MORPH_BALL_MIDAIR 0x14
#define SPOSE_HANGING_ON_LEDGE 0x15
#define SPOSE_TURNING_TO_AIM_WHILE_HANGING 0x16
#define SPOSE_HIDING_ARM_CANNON_WHILE_HANGING 0x17
#define SPOSE_AIMING_WHILE_HANGING 0x18
#define SPOSE_SHOOTING_WHILE_HANGING 0x19
#define SPOSE_PULLING_YOURSELF_UP_FROM_HANGING 0x1A
#define SPOSE_PULLING_YOURSELF_FORWARD_FROM_HANGING 0x1B
#define SPOSE_PULLING_YOURSELF_INTO_A_MORPH_BALL_TUNNEL 0x1C
#define SPOSE_USING_AN_ELEVATOR 0x1D
#define SPOSE_FACING_THE_FOREGROUND 0x1E
#define SPOSE_TURNING_FROM_FACING_THE_FOREGROUND 0x1F
#define SPOSE_GRABBED_BY_CHOZO_STATUE 0x20
#define SPOSE_DELAY_BEFORE_SHINESPARKING 0x21
#define SPOSE_SHINESPARKING 0x22
#define SPOSE_SHINESPARK_COLLISION 0x23
#define SPOSE_DELAY_AFTER_SHINESPARKING 0x24
#define SPOSE_DELAY_BEFORE_BALLSPARKING 0x25
#define SPOSE_BALLSPARKING 0x26
#define SPOSE_BALLSPARK_COLLISION 0x27
#define SPOSE_ON_ZIPLINE 0x28
#define SPOSE_SHOOTING_ON_ZIPLINE 0x29
#define SPOSE_TURNING_ON_ZIPLINE 0x2A
#define SPOSE_MORPH_BALL_ON_ZIPLINE 0x2B
#define SPOSE_SAVING_LOADING_GAME 0x2C
#define SPOSE_DOWNLOADING_MAP_DATA 0x2D
#define SPOSE_TURNING_AROUND_TO_DOWNLOAD_MAP_DATA 0x2E
#define SPOSE_GETTING_HURT 0x2F
#define SPOSE_GETTING_KNOCKED_BACK 0x30
#define SPOSE_GETTING_HURT_IN_MORPH_BALL 0x31
#define SPOSE_GETTING_KNOCKED_BACK_IN_MORPH_BALL 0x32
#define SPOSE_DYING 0x33
#define SPOSE_CROUCHING_TO_CRAWL 0x34
#define SPOSE_CRAWLING_STOPPED 0x35
#define SPOSE_STARTING_TO_CRAWL 0x36
#define SPOSE_CRAWLING 0x37
#define SPOSE_UNCROUCHING_FROM_CRAWLING 0x38
#define SPOSE_TURNING_AROUND_WHILE_CRAWLING 0x39
#define SPOSE_SHOOTING_WHILE_CRAWLING 0x3A
#define SPOSE_UNCROUCHING_SUITLESS 0x3B
#define SPOSE_CROUCHING_SUITLESS 0x3C
#define SPOSE_GRABBING_A_LEDGE_SUITLESS 0x3D
#define SPOSE_FACING_THE_BACKGROUND_SUITLESS 0x3E
#define SPOSE_TURNING_FROM_FACING_THE_BACKGROUND_SUITLESS 0x3F
#define SPOSE_ACTIVATING_ZIPLINES 0x40
#define SPOSE_IN_ESCAPE_SHIP 0x41
#define SPOSE_TURNING_TO_ENTER_ESCAPE_SHIP 0x42
#define SPOSE_KNOCKBACK_REQUEST 0xF9
#define SPOSE_HURT_REQUEST 0xFA
#define SPOSE_LANDING_REQUEST 0xFD
#define SPOSE_UPDATE_JUMP_VELOCITY_REQUEST 0xFE
#define SPOSE_NONE 0xFF
#define STANDING_GROUND 0x0
#define STANDING_ENEMY 0x1
#define STANDING_MIDAIR 0x2
#define STANDING_NOT_IN_CONTROL 0x3
#define STANDING_FORCED_POSE 0x4
#define STANDING_HANGING 0x5
#define STANDING_INVALID 0xFF
#define ACD_FORWARD 0x0
#define ACD_DIAGONALLY_UP 0x1
#define ACD_DIAGONALLY_DOWN 0x2
#define ACD_UP 0x3
#define ACD_DOWN 0x4
#define ACD_NONE 0x5
#define SLOPE_NONE 0x0
#define SLOPE_STEEP 0x1
#define SLOPE_SLIGHT 0x2
#define SLOPE_LEFT 0x10
#define SLOPE_RIGHT 0x20
#define HDMOVING_NONE 0x0
#define HDMOVING_LEFT 0x1
#define HDMOVING_RIGHT 0x2
#define VDMOVING_NONE 0x0
#define VDMOVING_UP 0x1
#define VDMOVING_DOWN 0x2
#define ENV_EFFECT_NONE 0x0
#define ENV_EFFECT_RUNNING_ON_WET_GROUND 0x1
#define ENV_EFFECT_RUNNING_ON_DUSTY_GROUND 0x2
#define ENV_EFFECT_RUNNING_ON_VERY_DUSTY_GROUND 0x3
#define ENV_EFFECT_GOING_OUT_OF_WATER 0x4
#define ENV_EFFECT_RUNNING_INTO_WATER 0x5
#define ENV_EFFECT_GOING_OUT_OF_LAVA 0x6
#define ENV_EFFECT_RUNNING_INTO_LAVA 0x7
#define ENV_EFFECT_GOING_OUT_OF_ACID 0x8
#define ENV_EFFECT_RUNNING_INTO_ACID 0x9
#define ENV_EFFECT_TAKING_DAMAGE_IN_LAVA 0xA
#define ENV_EFFECT_TAKING_DAMAGE_IN_ACID 0xB
#define ENV_EFFECT_LANDING_ON_WET_GROUND 0xC
#define ENV_EFFECT_LANDING_ON_BUBBLY_GROUND 0xD
#define ENV_EFFECT_LANDING_ON_DUSTY_GROUND 0xE
#define ENV_EFFECT_LANDING_ON_VERY_DUSTY_GROUND 0xF
#define ENV_EFFECT_SKIDDING_ON_WET_GROUND 0x10
#define ENV_EFFECT_SKIDDING_ON_DUSTY_GROUND 0x11
#define ENV_EFFECT_BREATHING_BUBBLES 0x12
#define WANTING_RUNNING_EFFECT 0x0
#define WANTING_RUNNING_EFFECT_ 0x1
#define WANTING_LANDING_EFFECT 0x2
#define WANTING_GOING_OUT_OF_LIQUID_EFFECT 0x3
#define WANTING_RUNNING_OUT_OF_LIQUID_EFFECT 0x4
#define WANTING_BREATHING_BUBBLES 0x5
#define WANTING_SKIDDING_EFFECT 0x6
#define WANTING_RUNNING_ON_WET_GROUND 0x7
#define DESTRUCTING_ACTION_NONE 0x0
#define DESTRUCTING_ACTION_SPEED 0x1
#define DESTRUCTING_ACTION_SCREW 0x2
#define DESTRUCTING_ACTION_SPEED_SCREW 0x3
#define DESTRUCTING_ACTION_SPEED_ON_GROUND 0x4
#define SAMUS_ANIM_STATE_NONE 0x0
#define SAMUS_ANIM_STATE_SUB_ENDED 0x1
#define SAMUS_ANIM_STATE_ENDED 0x2
// Probably not 100% true
#define SAMUS_COLLISION_DETECTION_NONE 0x0
#define SAMUS_COLLISION_DETECTION_LEFT_MOST 0x1
#define SAMUS_COLLISION_DETECTION_MIDDLE_LEFT 0x2
#define SAMUS_COLLISION_DETECTION_MIDDLE_RIGHT 0x4
#define SAMUS_COLLISION_DETECTION_RIGHT_MOST 0x8
#define SAMUS_COLLISION_DETECTION_SLOPE 0x80
#define FORCED_MOVEMENT_UPWARDS_SHINESPARK 0x0
#define FORCED_MOVEMENT_SIDEWARDS_SHINESPARK 0x1
#define FORCED_MOVEMENT_CROUCHING_ARM_CANNON_UP 0x1
#define FORCED_MOVEMENT_DIAGONAL_SHINESPARK 0x2
#define FORCED_MOVEMENT_LAUNCHED_BY_CANNON 0xF0
#define FORCED_MOVEMENT_BOMB_JUMP 0x0
#define FORCED_MOVEMENT_BOMB_JUMP_RIGHT 0xA
#define FORCED_MOVEMENT_BOMB_JUMP_UP 0xB
#define FORCED_MOVEMENT_BOMB_JUMP_LEFT 0xC
#define FORCED_MOVEMENT_BOMB_JUMP_ABOVE 0x80
#define SCREW_SPEED_FLAG_NONE 0x0
#define SCREW_SPEED_FLAG_SHINESPARKING 0x1
#define SCREW_SPEED_FLAG_SPEEDBOOSTING 0x1
#define SCREW_SPEED_FLAG_SCREW_ATTACKING 0x1
#define SCREW_SPEED_FLAG_STORING_SHINESPARK 0x8

362
include/constants/sprite.h Normal file
View File

@ -0,0 +1,362 @@
// Defines
#define SPRITE_STATUS_NONE 0x0
#define SPRITE_STATUS_EXISTS 0x1
#define SPRITE_STATUS_ONSCREEN 0x2
#define SPRITE_STATUS_NOT_DRAWN 0x4
#define SPRITE_STATUS_ROTATION_SCALING 0x8
#define SPRITE_STATUS_UNKNOWN 0x10
#define SPRITE_STATUS_MOSAIC 0x20
#define SPRITE_STATUS_XFLIP 0x40
#define SPRITE_STATUS_YFLIP 0x80
#define SPRITE_STATUS_FACING_DOWN 0x100
#define SPRITE_STATUS_FACING_RIGHT 0x200
#define SPRITE_STATUS_UNKNOWN2 0x400
#define SPRITE_STATUS_SAMUS_COLLIDING 0x800
#define SPRITE_STATUS_SAMUS_ON_TOP 0x1000
#define SPRITE_STATUS_ALPHA_BLENDING 0x2000
#define SPRITE_STATUS_DOUBLE_SIZE 0x4000
#define SPRITE_STATUS_IGNORE_PROJECTILES 0x8000
#define PSPRITE_UNUSED0 0x0
#define PSPRITE_UNUSED1 0x1
#define PSPRITE_UNUSED2 0x2
#define PSPRITE_UNUSED3 0x3
#define PSPRITE_UNUSED4 0x4
#define PSPRITE_UNUSED5 0x5
#define PSPRITE_UNUSED6 0x6
#define PSPRITE_UNUSED7 0x7
#define PSPRITE_UNUSED8 0x8
#define PSPRITE_UNUSED9 0x9
#define PSPRITE_UNUSED10 0xA
#define PSPRITE_UNUSED11 0xB
#define PSPRITE_UNUSED12 0xC
#define PSPRITE_UNUSED13 0xD
#define PSPRITE_UNUSED14 0xE
#define PSPRITE_UNUSED15 0xF
#define PSPRITE_UNUSED16 0x10
#define PSPRITE_ITEM_BANNER 0x11
#define PSPRITE_ZOOMER_YELLOW 0x12
#define PSPRITE_ZOOMER_RED 0x13
#define PSPRITE_ZEELA 0x14
#define PSPRITE_ZEELA_RED 0x15
#define PSPRITE_RIPPER_BROWN 0x16
#define PSPRITE_RIPPER_PURPLE 0x17
#define PSPRITE_ZEB 0x18
#define PSPRITE_ZEB_BLUE 0x19
#define PSPRITE_LARGE_ENERGY_DROP 0x1A
#define PSPRITE_SMALL_ENERGY_DROP 0x1B
#define PSPRITE_MISSILE_DROP 0x1C
#define PSPRITE_SUPER_MISSILE_DROP 0x1D
#define PSPRITE_POWER_BOMB_DROP 0x1E
#define PSPRITE_SKREE_GREEN 0x1F
#define PSPRITE_SKREE_BLUE 0x20
#define PSPRITE_MORPH_BALL 0x21
#define PSPRITE_CHOZO_STATUE_LONG_HINT 0x22
#define PSPRITE_CHOZO_STATUE_LONG 0x23
#define PSPRITE_CHOZO_STATUE_ICE_HINT 0x24
#define PSPRITE_CHOZO_STATUE_ICE 0x25
#define PSPRITE_CHOZO_STATUE_WAVE_HINT 0x26
#define PSPRITE_CHOZO_STATUE_WAVE 0x27
#define PSPRITE_CHOZO_STATUE_BOMB_HINT 0x28
#define PSPRITE_CHOZO_STATUE_BOMB 0x29
#define PSPRITE_CHOZO_STATUE_SPEEDBOOSTER_HINT 0x2A
#define PSPRITE_CHOZO_STATUE_SPEEDBOOSTER 0x2B
#define PSPRITE_CHOZO_STATUE_HIGH_JUMP_HINT 0x2C
#define PSPRITE_CHOZO_STATUE_HIGH_JUMP 0x2D
#define PSPRITE_CHOZO_STATUE_SCREW_HINT 0x2E
#define PSPRITE_CHOZO_STATUE_SCREW 0x2F
#define PSPRITE_CHOZO_STATUE_VARIA_HINT 0x30
#define PSPRITE_CHOZO_STATUE_VARIA 0x31
#define PSPRITE_SOVA_PURPLE 0x32
#define PSPRITE_SOVA_ORANGE 0x33
#define PSPRITE_MULTIVIOLA 0x34
#define PSPRITE_MULTIPLE_LARGE_ENERGY 0x35
#define PSPRITE_GERUTA_RED 0x36
#define PSPRITE_GERUTA_GREEN 0x37
#define PSPRITE_SQUEEPT 0x38
#define PSPRITE_SQUEEPT_UNUSED 0x39
#define PSPRITE_MAP_STATION 0x3A
#define PSPRITE_DRAGON 0x3B
#define PSPRITE_DRAGON_UNUSED 0x3C
#define PSPRITE_ZIPLINE 0x3D
#define PSPRITE_ZIPLINE_BUTTON 0x3E
#define PSPRITE_REO_GREEN_WINGS 0x3F
#define PSPRITE_REO_PURPLE_WINGS 0x40
#define PSPRITE_GUNSHIP 0x41
#define PSPRITE_DEOREM 0x42
#define PSPRITE_DEOREM_SECOND_LOCATION 0x43
#define PSPRITE_CHARGE_BEAM 0x44
#define PSPRITE_SKULTERA 0x45
#define PSPRITE_DESSGEEGA 0x46
#define PSPRITE_DESSGEEGA_AFTER_LONG_BEAM 0x47
#define PSPRITE_WAVER 0x48
#define PSPRITE_WAVER_UNUSED 0x49
#define PSPRITE_MELLOW 0x4A
#define PSPRITE_HIVE 0x4B
#define PSPRITE_POWER_GRIP 0x4C
#define PSPRITE_IMAGO_LARVA_RIGHT 0x4D
#define PSPRITE_MORPH_BALL_LAUNCHER 0x4E
#define PSPRITE_IMAGO_COCOON 0x4F
#define PSPRITE_ELEVATOR_PAD 0x50
#define PSPRITE_SPACE_PIRATE 0x51
#define PSPRITE_SPACE_PIRATE_WAITING1 0x52
#define PSPRITE_SPACE_PIRATE_WAITING2 0x53
#define PSPRITE_SPACE_PIRATE_WAITING3 0x54
#define PSPRITE_SPACE_PIRATE2 0x55
#define PSPRITE_GAMET_BLUE_SINGLE 0x56
#define PSPRITE_GAMET_RED_SINGLE 0x57
#define PSPRITE_CHOZO_STATUE_GRAVITY 0x58
#define PSPRITE_CHOZO_STATUE_SPACE_JUMP 0x59
#define PSPRITE_SECURITY_GATE_DEFAULT_OPEN 0x5A
#define PSPRITE_ZEBBO_GREEN 0x5B
#define PSPRITE_ZEBBO_YELLOW 0x5C
#define PSPRITE_WORKER_ROBOT 0x5D
#define PSPRITE_PARASITE_MULTIPLE 0x5E
#define PSPRITE_PARASITE 0x5F
#define PSPRITE_PISTON 0x60
#define PSPRITE_RIDLEY 0x61
#define PSPRITE_SECURITY_GATE_DEFAULT_CLOSED 0x62
#define PSPRITE_ZIPLINE_GENERATOR 0x63
#define PSPRITE_METROID 0x64
#define PSPRITE_FROZEN_METROID 0x65
#define PSPRITE_RINKA_ORANGE 0x66
#define PSPRITE_POLYP 0x67
#define PSPRITE_VIOLA_BLUE 0x68
#define PSPRITE_VIOLA_ORANGE 0x69
#define PSPRITE_GERON_NORFAIR 0x6A
#define PSPRITE_HOLTZ 0x6B
#define PSPRITE_GEKITAI_MACHINE 0x6C
#define PSPRITE_RUINS_TEST 0x6D
#define PSPRITE_SAVE_PLATFORM 0x6E
#define PSPRITE_KRAID 0x6F
#define PSPRITE_IMAGO_COCOON_AFTER_FIGHT 0x70
#define PSPRITE_RIPPERII 0x71
#define PSPRITE_MELLA 0x72
#define PSPRITE_ATOMIC 0x73
#define PSPRITE_AREA_BANNER 0x74
#define PSPRITE_MOTHER_BRAIN 0x75
#define PSPRITE_FAKE_POWER_BOMB_EVENT_TRIGGER 0x76
#define PSPRITE_ACID_WORM 0x77
#define PSPRITE_ESCAPE_SHIP 0x78
#define PSPRITE_SIDEHOPPER 0x79
#define PSPRITE_GEEGA 0x7A
#define PSPRITE_GEEGA_WHITE 0x7B
#define PSPRITE_RINKA_MOTHER_BRAIN 0x7C
#define PSPRITE_ZEBETITE_ONE_AND_THREE 0x7D
#define PSPRITE_CANNON 0x7E
#define PSPRITE_IMAGO_LARVA_RIGHT_SIDE 0x7F
#define PSPRITE_TANGLE_VINE_TALL 0x80
#define PSPRITE_TANGLE_VINE_MEDIUM 0x81
#define PSPRITE_TANGLE_VINE_CURVED 0x82
#define PSPRITE_TANGLE_VINE_SHORT 0x83
#define PSPRITE_MELLOW_SWARM 0x84
#define PSPRITE_MELLOW_SWARM_HEALTH_BASED 0x85
#define PSPRITE_IMAGO 0x86
#define PSPRITE_ZEBITITE_TWO_AND_FOUR 0x87
#define PSPRITE_CANNON2 0x88
#define PSPRITE_CANNON3 0x89
#define PSPRITE_CROCOMIRE 0x8A
#define PSPRITE_IMAGO_LARVA_LEFT 0x8B
#define PSPRITE_GERON_BRINSTAR_ROOM_15 0x8C
#define PSPRITE_GERON_BRINSTAR_ROOM_1C 0x8D
#define PSPRITE_GERON_VARIA1 0x8E
#define PSPRITE_GERON_VARIA2 0x8F
#define PSPRITE_GERON_VARIA3 0x90
#define PSPRITE_GLASS_TUBE 0x91
#define PSPRITE_SAVE_PLATFORM_CHOZODIA 0x92
#define PSPRITE_BARISTUTE 0x93
#define PSPRITE_CHOZO_STATUE_PLASMA_BEAM 0x94
#define PSPRITE_KRAID_ELEVATOR_STATUE 0x95
#define PSPRITE_RIDLEY_ELEVATOR_STATUE 0x96
#define PSPRITE_RISING_CHOZO_PILLAR 0x97
#define PSPRITE_SECURITY_LASER_VERTICAL 0x98
#define PSPRITE_SECURITY_LASER_HORIZONTAL 0x99
#define PSPRITE_SECURITY_LASER_VERTICAL2 0x9A
#define PSPRITE_SECURITY_LASER_HORIZONTAL2 0x9B
#define PSPRITE_LOCK_UNLOCK_METROID_DOORS_UNUSED 0x9C
#define PSPRITE_GAMET_BLUE_LEADER 0x9D
#define PSPRITE_GAMET_BLUE_FOLLOWER 0x9E
#define PSPRITE_GEEGA_LEADER 0x9F
#define PSPRITE_GEEGA_FOLLOWER 0xA0
#define PSPRITE_ZEBBO_GREEN_LEADER 0xA1
#define PSPRITE_ZEBBO_GREEN_FOLLOWER 0xA2
#define PSPRITE_KRAID_STATUE 0xA3
#define PSPRITE_RIDLEY_STATUE 0xA4
#define PSPRITE_RINKA_GREEN 0xA5
#define PSPRITE_SEARCHLIGHT_EYE 0xA6
#define PSPRITE_SEARCHLIGHT_EYE2 0xA7
#define PSPRITE_STEAM_LARGE 0xA8
#define PSPRITE_STEAM_SMALL 0xA9
#define PSPRITE_PLASMA_BEAM_BLOCK 0xAA
#define PSPRITE_GRAVITY_SUIT_BLOCK 0xAB
#define PSPRITE_SPACE_JUMP_BLOCK 0xAC
#define PSPRITE_GADORA_KRAID 0xAD
#define PSPRITE_GADORA_RIDLEY 0xAE
#define PSPRITE_SEARCHLIGHT 0xAF
#define PSPRITE_SEARCHLIGHT2 0xB0
#define PSPRITE_SEARCHLIGHT3 0xB1
#define PSPRITE_SEARCHLIGHT4 0xB2
#define PSPRITE_MAYBE_SEARCHLIGHT_TRIGGER 0xB3
#define PSPRITE_DISCOVERED_IMAGO_PASSAGE_EVENT_TRIGGER 0xB4
#define PSPRITE_FAKE_POWER_BOMB 0xB5
#define PSPRITE_SPACE_PIRATE_CARRYING_POWER_BOMB 0xB6
#define PSPRITE_TANGLE_VINE_RED_GARUTA 0xB7
#define PSPRITE_TANGLE_VINE_GERUTA 0xB8
#define PSPRITE_TANGLE_VINE_LARVA_RIGHT 0xB9
#define PSPRITE_TANGLE_VINE_LARVA_LEFT 0xBA
#define PSPRITE_WATER_DROP 0xBB
#define PSPRITE_FALLING_CHOZO_PILLAR 0xBC
#define PSPRITE_MECHA_RIDLEY 0xBD
#define PSPRITE_EXPLOSION_ZEBES_ESCAPE 0xBE
#define PSPRITE_STEAM_LARGE_DIAGONAL_UP 0xBF
#define PSPRITE_STEAM_SMALL_DIAGONAL_UP 0xC0
#define PSPRITE_STEAM_LARGE_DIAGONAL_DOWN 0xC1
#define PSPRITE_STEAM_SMALL_DIAGONAL_DOWN 0xC2
#define PSPRITE_BARISTUTE_KRAID_UPPER 0xC3
#define PSPRITE_ESCAPE_GATE1 0xC4
#define PSPRITE_ESCAPE_GATE2 0xC5
#define PSPRITE_BLACK_SPACE_PIRATE 0xC6
#define PSPRITE_ESCAPE_SHIP_SPACE_PIRATE 0xC7
#define PSPRITE_BARISTUTE_KRAID_LOWER 0xC8
#define PSPRITE_RINKA_MOTHER_BRAIN2 0xC9
#define PSPRITE_RINKA_MOTHER_BRAIN3 0xCA
#define PSPRITE_RINKA_MOTHER_BRAIN4 0xCB
#define PSPRITE_RINKA_MOTHER_BRAIN5 0xCC
#define PSPRITE_RINKA_MOTHER_BRAIN6 0xCD
#define SSPRITE_CHOZO_BALL 0x0
#define SSPRITE_CHOZO_STATUE_PART 0x1
#define SSPRITE_CHOZO_STATUE_REFILL 0x2
#define SSPRITE_KRAID_PART 0x3
#define SSPRITE_CHOZO_STATUE_MOVEMENT 0x4
#define SSPRITE_CHARGE_BEAM_GLOW 0x5
#define SSPRITE_WINGED_RIPPER 0x6
#define SSPRITE_MULTIVIOLA_UNUSED 0x7
#define SSPRITE_DRAGON_FIREBALL 0x8
#define SSPRITE_DEOREM_SEGMENT 0x9
#define SSPRITE_DEOREM_EYE 0xA
#define SSPRITE_DEOREM_THORN 0xB
#define SSPRITE_SKREE_EXPLOSION 0xC
#define SSPRITE_SAVE_PLATFORM_PART 0xD
#define SSPRITE_SAVE_YES_NO_CURSOR 0xE
#define SSPRITE_BLUE_SKREE_EXPLOSION 0xF
#define SSPRITE_ZEELA_EYES 0x10
#define SSPRITE_HIVE_ROOTS 0x11
#define SSPRITE_IMAGO_LARVA_PART 0x12
#define SSPRITE_MORPH_BALL_OUTSIDE 0x13
#define SSPRITE_IMAGO_COCOON_VINE 0x14
#define SSPRITE_IMAGO_COCOON_SPORE 0x15
#define SSPRITE_SPACE_PIRATE_LASER 0x16
#define SSPRITE_RIDLEY_PART 0x17
#define SSPRITE_RIDLEY_TAIL 0x18
#define SSPRITE_SEARCHLIGHT_EYE_BEAM 0x19
#define SSPRITE_METROID_SHELL 0x1A
#define SSPRITE_POLYP_PROJECTILE 0x1B
#define SSPRITE_KRAID_SPIKE 0x1C
#define SSPRITE_KRAID_NAIL 0x1D
#define SSPRITE_ZIPLINE_GENERATOR_PART 0x1E
#define SSPRITE_ATOMIC_ELECTRICITY 0x1F
#define SSPRITE_MOTHER_BRAIN_PART 0x20
#define SSPRITE_RIDLEY_FIREBALL 0x21
#define SSPRITE_UNKNOWN_ITEM_CHOZO_STATUE_PART 0x22
#define SSPRITE_UNKNOWN_ITEM_CHOZO_STATUE_REFILL 0x23
#define SSPRITE_MORPH_BALL_LAUNCHER_PART 0x24
#define SSPRITE_ACID_WORM_BODY 0x25
#define SSPRITE_ACID_WORM_SPIT 0x26
#define SSPRITE_CANNON_BULLET 0x27
#define SSPRITE_CROCOMIRE_PART 0x28
#define SSPRITE_IMAGO_PART 0x29
#define SSPRITE_DEFEATED_IMAGO_COCOON 0x2A
#define SSPRITE_IMAGO_CEILING_VINE 0x2B
#define SSPRITE_SEARCHLIGHT_EYE_BEAM2 0x2C
#define SSPRITE_TANGLE_VINE_GERUTA_PART 0x2D
#define SSPRITE_CHOZODIA_SAVE_PLATFORM_PART 0x2E
#define SSPRITE_IMAGO_NEEDLE 0x2F
#define SSPRITE_ELEVATOR_STATUE_DEBRIS 0x30
#define SSPRITE_IMAGO_DAMAGED_STINGER 0x31
#define SSPRITE_GUNSHIP_PART 0x32
#define SSPRITE_IMAGO_EGG 0x33
#define SSPRITE_MAP_STATION_PART 0x34
#define SSPRITE_CHOZO_PILLAR_PLATFORM 0x35
#define SSPRITE_GADORA_EYE 0x36
#define SSPRITE_GADORA_BEAM 0x37
#define SSPRITE_UNKNOWN_ITEM_BLOCK_LIGHT 0x38
#define SSPRITE_SEARCHLIGHT_EYE_PROJECTILE 0x39
#define SSPRITE_CHOZO_PILLAR_PLATFORM_SHADOW 0x3A
#define SSPRITE_RUINS_TEST_SYMBOL 0x3B
#define SSPRITE_RUINS_TEST_SAMUS_REFLECTION_START 0x3C
#define SSPRITE_RUINS_TEST_REFLECTION_COVER 0x3D
#define SSPRITE_RUINS_TEST_GHOST_OUTLINE 0x3E
#define SSPRITE_RUINS_TEST_GHOST 0x3F
#define SSPRITE_RUINS_TEST_SHOOTABLE_SYMBOL 0x40
#define SSPRITE_RUINS_TEST_SAMUS_REFLECTION_END 0x41
#define SSPRITE_RUINS_TEST_LIGHTNING 0x42
#define SSPRITE_RIDLEY_BIG_FIREBALL 0x43
#define SSPRITE_MECHA_RIDLEY_PART 0x44
#define SSPRITE_ESCAPE_SHIP_PART 0x45
#define SSPRITE_POWER_GRIP_GLOW 0x46
#define SSPRITE_MECHA_RIDLEY_LASER 0x47
#define SSPRITE_MECHA_RIDLEY_MISSILE 0x48
#define SSPRITE_MECHA_RIDLEY_FIREBALL 0x49
#define SSPRITE_MOTHER_BRAIN_BEAM 0x4A
#define SSPRITE_MOTHER_BRAIN_BLOCK 0x4B
#define SSPRITE_MOTHER_BRAIN_GLASS_BREAKING 0x4C
#define SSC_NONE 0x0
#define SSC_SOLID 0x1
#define SSC_ESCAPE_SHIP 0x2
#define SSC_HURTS_SAMUS_CAN_STAND_ON_TOP 0x3
#define SSC_HURTS_SAMUS 0x4
#define SSC_ATOMIC_DISCHARGE 0x5
#define SSC_HURTS_SAMUS_STOP_DIES_WHEN_HIT 0x6
#define SSC_KNOCKS_BACK_SAMUS 0x7
#define SSC_HURTS_SAMUS_NO_KNOCKBACK 0x9
#define SSC_KRAID 0xA
#define SSC_HURTS_SAMUS_NO_PASS_THROUGH 0xB
#define SSC_ZEBETITE 0xC
#define SSC_IMAGO_STINGER 0xD
#define SSC_HURTS_SAMUS_STOP_DIES_WHEN_HIT_BIG_KNOCKBACK 0xE
#define SSC_MOTHER_BRAIN_BEAM 0xF
#define SSC_HURTS_SAMUS_STOP_DIES_WHEN_HIT_NO_KNOCKBACK 0x10
#define SSC_HURTS_SAMUS_NO_KNOCKBACK_NO_CONTACT_DAMAGE 0x11
#define SSC_MELLOW 0x12
#define SSC_SPACE_PIRATE_LASER 0x13
#define SSC_SPACE_PIRATE 0x14
#define SSC_ACID_WORM 0x15
#define SSC_ACID_WORM_MOUTH 0x16
#define SSC_BUG 0x17
#define SSC_METROID 0x18
#define SSC_KRAID_SPIKE 0x19
#define SSC_ZIPLINE 0x1A
#define SSC_IMAGO_EGG 0x1B
#define SSC_RIDLEY_CLAW 0x1C
#define SSC_MECHA_RIDLEY 0x1D
#define SSC_ABILITY_LASER_SEARCHLIGHT 0x1E
#define SSC_SMALL_ENERGY_DROP 0x1F
#define SSC_LARGE_ENERGY_DROP 0x20
#define SSC_MISSILE_DROP 0x21
#define SSC_SUPER_MISSILE_DROP 0x22
#define SSC_POWER_BOMB_DROP 0x23
#define SSC_MULTIPLE_LARGE_ENERGY_DROP 0x24
#define SP_NONE 0x0
#define SP_ALWAYS_ACTIVE 0x1
#define SP_DAMAGED 0x2
#define SP_KILL_OFF_SCREEN 0x4
#define SP_SOLID_FOR_PROJECTILES 0x8
#define SP_DESTROYED 0x10
#define SP_ABSOLUTE_POSITION 0x20
#define SP_IMMUNE_TO_PROJECTILES 0x40
#define SP_SECONDARY_SPRITE 0x80
#define WEAKNESS_NONE 0x0
#define WEAKNESS_CHARGE_BEAM_PISTOL 0x1
#define WEAKNESS_BEAM_BOMBS 0x2
#define WEAKNESS_SUPER_MISSILES 0x4
#define WEAKNESS_MISSILES 0x8
#define WEAKNESS_POWER_BOMB 0x10
#define WEAKNESS_SPEEDBOOSTER_SCREW_ATTACK 0x20
#define WEAKNESS_CAN_BE_FROZEN 0x40

View File

@ -0,0 +1,32 @@
#define NSLR_OUT_OF_RANGE 0x0
#define NSLR_LEFT 0x4
#define NSLR_RIGHT 0x8
#define NSAB_OUT_OF_RANGE 0x0
#define NSAB_ABOVE 0x1
#define NSAB_BELOW 0x2
#define NSFB_OUT_OF_RANGE 0x0
#define NSAB_IN_FRONT 0x3
#define NSAB_BEHIND 0xC
#define DCT_NONE 0x0
#define DCT_SHINESPARK 0x1
#define DCT_SPEEDBOOSTER 0x2
#define DCT_SCREW_ATTACK 0x3
#define DCT_SUDO_SCREW 0x4
#define DEATH_NORMAL 0x0
#define DEATH_RESPAWNING 0x1
#define DEATH_NO_DEATH_OR_RESPAWNING_ALREADY_HAS_DROP 0x2
#define SPLASH_NONE 0x0
#define SPLASH_SMALL 0x1
#define SPLASH_BIG 0x2
#define SPLASH_HUGE 0x3
#define SPRITE_COLLISION_FLAG_NONE 0x0
#define SPRITE_COLLISION_FLAG_ON_TOP 0x1
#define SPRITE_COLLISION_FLAG_ON_BOTTOM 0x2
#define SPRITE_COLLISION_FLAG_ON_LEFT 0x4
#define SPRITE_COLLISION_FLAG_ON_RIGHT 0x8

View File

@ -60,7 +60,7 @@ static const u8 sRandomNumberTable[256] = {
116, 180, 78, 153, 60, 7, 223, 175
};
const Func_T sIntrTable[13] = {
static const Func_T sIntrTable[13] = {
sub_08003380,
CallbackCallSerialCommunication,
CallbackCallTimer3,

View File

@ -2,6 +2,8 @@
#define HATCH_DATA_C
#include "types.h"
#include "constants/event.h"
#include "constants/clipdata.h"
#include "connection.h"
#include "clipdata.h"

View File

@ -2,10 +2,12 @@
#define POINTERS_DATA_C
#include "types.h"
#include "samus.h"
#include "projectile.h"
#include "particle.h"
#include "connection.h"
#include "constants/samus.h"
#include "constants/particle.h"
#include "constants/projectile.h"
#include "constants/sprite.h"
#include "structs/samus.h"
#include "sprites_AI/sprites.h"
#include "sprites/chozo_statue.c"
#include "sprites/crocomire.c"

View File

@ -2,7 +2,7 @@
#define SPRITE_DATA_C
#include "types.h"
#include "sprite.h"
#include "constants/sprite.h"
// 2b0c94

View File

@ -8,19 +8,6 @@
// Structs
struct IORegistersBackup {
u16 DISPCNT_NonGameplay;
u16 BLDCNT_NonGameplay;
u8 BLDALPHA_NonGameplay_EVA;
u8 BLDALPHA_NonGameplay_EVB;
u8 WININ_H_NonGameplay;
u8 WINOUT_L_NonGameplay;
u16 BG0CNT_WriteOnly;
u16 BG0CNT;
u16 BG1CNT;
u16 BG2CNT;
u16 BG3CNT;
};
// Functions

View File

@ -9,16 +9,6 @@ extern u8 gCurrentEscapeStatus;
extern u8 gEscapeTimerCounter;
extern struct EscapeDigits gEscapeTimerDigits;
// Defines
#define ESCAPE_NONE 0x0
#define ESCAPE_MOTHER_BRAIN 0x1
#define ESCAPE_MECHA_RIDLEY 0x2
#define ESCAPE_STATUS_NONE 0x0
#define ESCAPE_STATUS_HAPPENNING 0x1
#define ESCAPE_STATUS_FAILED 0x2
// Structs
struct __attribute__((packed)) EscapeDigits {

View File

@ -3,98 +3,6 @@
#include "types.h"
// Globals
// Defines
#define EVENT_ACTION_CLEARING 0x0
#define EVENT_ACTION_SETTING 0x1
#define EVENT_ACTION_TOGGLING 0x2
#define EVENT_ACTION_CHECKING 0x3
#define EVENT_NONE 0x0
#define EVENT_EASY 0x1
#define EVENT_HARD 0x2
#define EVENT_ENTER_NORFAIR_DEMO_PLAYED 0x3
#define EVENT_EXIT_KRAID_DEMO_PLAYED 0x4
#define EVENT_ENTER_RIDLEY_DEMO_PLAYED 0x5
#define EVENT_ENTER_MOTHERSHIP_DEMO_PLAYED 0x6
#define EVENT_ENTER_TOURIAN_DEMO_PLAYED 0x7
#define EVENT_STATUE_LONG_BEAM_GRABBED 0x8
#define EVENT_STATUE_BOMBS_GRABBED 0x9
#define EVENT_STATUE_ICE_BEAM_GRABBED 0xA
#define EVENT_STATUE_SPEEDBOOSTER_GRABBED 0xB
#define EVENT_STATUE_HIGH_JUMP_GRABBED 0xC
#define EVENT_STATUE_VARIA_SUIT_GRABBED 0xD
#define EVENT_STATUE_WAVE_BEAM_GRABBED 0xE
#define EVENT_STATUE_SCREW_ATTACK_GRABBED 0xF
#define EVENT_POWER_GRIP_OBTAINED 0x10
#define EVENT_CHOZO_PILLAR_FULLY_EXTENDED 0x11
#define EVENT_HIGH_JUMP_OBTAINED 0x12
#define EVENT_VARIA_SUIT_OBTAINED 0x13
#define EVENT_CHARGE_BEAM_OBTAINED 0x14
#define EVENT_SCREW_ATTACK_OBTAINED 0x15
#define EVENT_SPACE_JUMP_OBTAINED 0x16
#define EVENT_GRAVITY_SUIT_OBTAINED 0x17
#define EVENT_PLASMA_BEAM_OBTAINED 0x18
#define EVENT_DEOREM_ENCOUNTERED_AT_FIRST_LOCATION_OR_KILLED 0x19
#define EVENT_DEOREM_ENCOUNTERED_AT_SECOND_LOCATION_OR_KILLED 0x1A
#define EVENT_DEOREM_KILLED_AT_SECOND_LOCATION 0x1B
#define EVENT_ACID_WORM_KILLED 0x1C
#define EVENT_KRAID_GADORA_KILLED 0x1D
#define EVENT_KRAID_KILLED 0x1E
#define EVENT_KRAID_ELEVATOR_STATUE_DESTROYED 0x1F
#define EVENT_CATERPILLAR_KILLED 0x20
#define EVENT_IMAGO_TUNNEL_DISCOVERED 0x21
#define EVENT_IMAGO_COCOON_KILLED 0x22
#define EVENT_IMAGO_KILLED 0x23
#define EVENT_RIDLEY_GADORA_KILLED 0x24
#define EVENT_RIDLEY_KILLED 0x25
#define EVENT_RIDLEY_ELEVATOR_STATUE_DESTROYED 0x26
#define EVENT_MOTHER_BRAIN_KILLED 0x27
#define EVENT_CROCOMIRE_KILLED 0x28
#define EVENT_REPEL_MACHINE_KILLED 0x29
#define EVENT_VIEWED_STATUE_ROOM 0x2A
#define EVENT_LONG_BEAM_DESSGEEGA_KILLED 0x2B
#define EVENT_THREE_HIVES_DESTROYED 0x2C
#define EVENT_BUGS_KILLED 0x2D
#define EVENT_ZIPLINES_ACTIVATED 0x2E
#define EVENT_PLANT_DESTROYED_LAVA 0x2F
#define EVENT_PLANT_DESTROYED_POST_VARIA 0x30
#define EVENT_PLANT_DESTROYED_VARIA2 0x31
#define EVENT_PLANT_DESTROYED_VARIA3 0x32
#define EVENT_PLANT_DESTROYED_VARIA1 0x33
#define EVENT_KRAID_BARISTUTES_KILLED 0x34
#define EVENT_KRAID_STATUE_OPENED 0x35
#define EVENT_RIDLEY_STATUE_OPENED 0x36
#define EVENT_FIRST_METROID_ROOM_CLEARED 0x37
#define EVENT_THIRD_METROID_ROOM_CLEARED 0x38
#define EVENT_FIFTH_METROID_ROOM_CLEARED 0x39
#define EVENT_SECOND_METROID_ROOM_CLEARED 0x3A
#define EVENT_SIXTH_METROID_ROOM_CLEARED 0x3B
#define EVENT_FOURTH_METROID_ROOM_CLEARED 0x3C
#define EVENT_ZEBETITE_ONE_DESTROYED 0x3D
#define EVENT_ZEBETITE_TWO_DESTROYED 0x3E
#define EVENT_ZEBETITE_THREE_DESTROYED 0x3F
#define EVENT_ZEBETITE_FOUR_DESTROYED 0x40
#define EVENT_ESCAPED_ZEBES 0x41
#define EVENT_MARKER_BETWEEN_ZEBES_AND_MOTHERSHIP 0x42
#define EVENT_FULLY_POWERED_SUIT_OBTAINED 0x43
#define EVENT_SKIPPED_VARIA_SUIT 0x44
#define EVENT_CHOZOBLOCK 0x45
#define EVENT_POWER_BOMB_STOLEN 0x46
#define EVENT_SPACE_PIRATE_WITH_POWER_BOMB_ONE 0x47
#define EVENT_SPACE_PIRATE_WITH_POWER_BOMB_TWO 0x48
#define EVENT_GLASS_TUBE_BROKEN 0x49
#define EVENT_MECHA_RIDLEY_KILLED 0x4A
#define EVENT_ESCAPED_CHOZODIA 0x4B
#define EVENT_AKI 0x4C
#define EVENT_BOMBATE 0x4D
#define EVENT_END_UNUSED 0x4E
// Functions
u32 EventFunction(u8 action, u8 event);
#endif /* EVENT_H */

View File

@ -1,34 +0,0 @@
#ifndef GAME_MODE_H
#define GAME_MODE_H
enum MainGameMode {
GM_SOFTRESET,
GM_INTRO,
GM_TITLE,
GM_FILESELECT,
GM_INGAME,
GM_MAP_SCREEN,
GM_GAMEOVER,
GM_CHOZODIA_ESCAPE,
GM_CREDITS,
GM_TOURIAN_ESCAPE,
GM_CUTSCENE,
GM_DEMO,
GM_GALLERY,
GM_FUSION_GALLERY,
GM_START_SOFTRESET, /* probably */
GM_ERASE_SRAM,
GM_DEBUG_MENU,
};
// For in game
#define SUB_GAME_MODE_PLAYING 0x2
#define SUB_GAME_MODE_LOADING_ROOM 0x3
extern i16 gMainGameMode;
extern i16 gGameModeSub1;
extern i8 gGameModeSub2;
extern i8 gGameModeSub3;
#endif /* GAME_MODE_H */

View File

@ -4,7 +4,6 @@
#include "callbacks.h"
#include "types.h"
#include "sprite_debris.h"
#include "sprite.h"
#include "room.h"
#include "particle.h"
#include "oam.h"
@ -28,31 +27,6 @@ extern u16 unk_02035400;
// IWRAM
enum PauseScreenFlags {
PAUSE_SCREEN_NONE,
PAUSE_SCREEN_UNKNOWN_1,
PAUSE_SCREEN_PAUSE_OR_CUTSCENE,
PAUSE_SCREEN_UNKNOWN_3,
PAUSE_SCREEN_CHOZO_HINT,
PAUSE_SCREEN_MAP_DOWNLOAD,
PAUSE_SCREEN_ITEM_ACQUISITION,
PAUSE_SCREEN_SUITLESS_ITEMS,
PAUSE_SCREEN_FULLY_POWERED_SUIT_ITEMS,
PAUSE_SCREEN_UNKNOWN_9,
};
#define MAX_AMOUNT_OF_DIFFICULTIES 3
enum Difficulty {
DIFF_EASY = 0x0,
DIFF_NORMAL = 0x1,
DIFF_HARD = 0x2
};
#define LANGUAGE_JAPANESE 0x0
#define LANGUAGE_HIRAGANA 0x1
#define LANGUAGE_ENGLISH 0x2
// Temporary place
#define CUTSCENE_NONE 0x0
@ -71,17 +45,6 @@ enum Difficulty {
#define CUTSCENE_MECHA_RIDLEY_SEES_SAMUS 0xD
#define CUTSCENE_SAMUS_IN_BLUE_SHIP 0xE
struct InGameTimer {
u8 hours;
u8 minutes;
u8 seconds;
u8 frames;
};
extern u8 gMaxInGameTimerFlag;
extern struct InGameTimer gInGameTimer;
extern struct InGameTimer gInGameTimerAtBosses[5];
union TileData {
struct {
u32 tile:10;
@ -96,70 +59,32 @@ union TileData {
extern u8 unk_02038000[];
extern u8 gDebugFlag;
extern u16 gFrameCounter16Bit;
extern u16 gWrittenToDISPCNT;
extern u8 gStereoFlag;
extern struct MusicTrackInfo gMusicTrackInfo;
extern u32 gCurrentDemo; /* XXX: type */
extern u8 gMonochromeBGFading;
extern u8 gWhichBGPositionIsWrittenToBG3OFS;
extern u8 gSamusOnTopOfBackgrounds;
extern u8 gDifficulty;
extern i8 gLanguage;
extern u8 gUseMotherShip;
extern u8 gResetGame;
extern u8 gDisableScrolling;
extern u16 gSlowScrollingTimer;
extern u8 gSkipDoorTransition;
extern u8 gDisableSoftreset;
extern u8 gDisableDoorAndTanks;
extern i8 gCollectingTank;
extern u8 gDisablePause;
extern u8 gShipLandingFlag;
extern u8 gDisableClipdataChangingTransparency;
extern i8 gDisableAnimatedPalette;
extern u8 gCurrentArea;
extern u8 gAreaBeforeTransition;
extern u8 gCurrentRoom;
extern u8 gLastDoorUsed;
extern u8 gLastDoorProperties;
extern u8 gDisplayLocationText;
extern u16 gEffectYPosition;
extern i16 gEffectYPositionOffset;
extern u8 gScreenShakeXRelated;
extern u8 gScreenShakeYRelated;
extern u16 gScreenShakeRelated;
extern u16 gDISPCNTBackup;
extern u8 gSpriteset;
extern u8 gCurrentClipdataAffectingAction;
extern u8 gSpritesetEntryUsed;
extern i8 gDoorUnlockTimer;
extern i8 gCurrentCutscene;
extern i8 gTourianEscapeCutsceneStage;
extern struct IORegistersBackup gIORegistersBackup;
extern struct BackgroundPointersAndDimensions gBGPointersAndDimensions;
extern u8 gEnergyRefillAnimation;
extern u8 gMissileRefillAnimation;
extern u8 gSuperMissileRefillAnimation;
extern u8 gPowerBombRefillAnimation;
extern struct RawCoordsX gWaitingSpacePiratesPosition;
extern struct BG2Movement gBG2Movement;
extern struct ScreenShake gScreenShakeY;
extern struct ScreenShake gScreenShakeX;
extern struct LastElevatorUsed gLastElevatorUsed;
extern i8 gIsLoadingFile;
extern i8 gPauseScreenFlag;
extern i8 gClearedEveryFrame;
extern u8 gFrameCounter8Bit;
extern vu16 gVBlankRequestFlag;
extern u16 gInterruptCode[0x100];
extern u8 gSRAMCorruptFlag;
extern u16 gButtonInput;
extern u16 gPreviousButtonInput;
extern u16 gChangedInput;
extern u8 gNextOAMSlot;
extern u8 gDemoState;
extern struct ButtonAssignments gButtonAssignments;
@ -169,8 +94,6 @@ extern struct RawCoordsX gDoorPositionStart;
extern struct BG3Movement gBG3Movement;
extern struct BG0Movement gBG0Movement;
extern u16 gRainSoundEffect;
extern u8* gCurrentRoomScrollDataPointer;
extern ClipFunc_T gClipdataCodePointer;
extern void *sp_sys;
extern void *sp_irq;

View File

@ -9,30 +9,6 @@
#define HIGHLIGHT_STATUS_SELECTED 1
#define HIGHLIGHT_STATUS_HIGHLIGHTED 2
// Globals
extern u8 gHideHud;
extern u8 gMissileHighlightStatus;
extern u8 gPowerBombHighlightStatus;
extern u8 gSuperMissileHighlightStatus;
extern struct HudDigits gEnergyDigits;
extern struct HudDigits gMaxEnergyDigits;
extern struct HudDigits gMissileDigits;
extern struct HudDigits gPowerBombDigits;
extern struct HudDigits gSuperMissileDigits;
extern u8 gAmmoDigitsGFX[64];
// Structs
struct HudDigits {
u8 ones;
u8 tens;
u8 hundreds;
u8 thousands;
};
// Functions
void HUDUpdateOAM(void);

View File

@ -3,82 +3,6 @@
#include "types.h"
// Defines
#define MUSIC_NONE 0x0
#define MUSIC_BRINSTAR 0x1
#define MUSIC_TITLE_SCREEN 0x2
#define MUSIC_SAVE_ELEVATOR_ROOM 0x3
#define MUSIC_INTRO 0x4
#define MUSIC_CHOZO_STATUE_HINT 0x5
#define MUSIC_NORFAIR 0x6
#define MUSIC_KRAID 0x7
#define MUSIC_ESCAPE 0x8
#define MUSIC_FILE_SELECT 0x9
#define MUSIC_STATUE_ROOM 0xA
#define MUSIC_BOSS_KILLED 0xB
#define MUSIC_MAP_ROOM 0xC
#define MUSIC_CHOZO_RUINS_DEPTH 0xD
#define MUSIC_CHOZO_RUINS 0xE
#define MUSIC_CHOZO_RUINS_LIGHT 0xF
#define MUSIC_RIDLEY_IN_SPACE 0x10
#define MUSIC_RIDLEY_LANDING 0x11
#define MUSIC_CHOZO_STATUE_HINT_DELAY 0x12
#define MUSIC_GETTING_FULLY_POWERED_SUIT_CUTSCENE 0x13
#define MUSIC_ESCAPING_ZEBES_CUTSCENE 0x14
#define MUSIC_CHOZO_VOICE_1 0x15
#define MUSIC_CHOZO_VOICE_2 0x16
#define MUSIC_BEFORE_RUINS_TEST_UNUSED 0x17
#define MUSIC_ELEVATOR_ROOM 0x18
#define MUSIC_BRINSTAR_REMIX 0x19
#define MUSIC_ESCAPE_SUCCESFUL 0x1A
#define MUSIC_CREDITS 0x1B
#define MUSIC_STATUE_ROOM_OPENED 0x1C
#define MUSIC_RIDLEY 0x32
#define MUSIC_KRAID_BATTLE_WITH_INTRO 0x34
#define MUSIC_RIDLEY_BATTLE 0x35
#define MUSIC_LOADING_JINGLE 0x36
#define MUSIC_GETTING_ITEM_JINGLE 0x37
#define MUSIC_UNUSED 0x39
#define MUSIC_GETTING_TANK_JINGLE 0x3A
#define MUSIC_TOURIAN 0x3B
#define MUSIC_WORMS_BATTLE 0x3C
#define MUSIC_MOTHER_BRAIN_BATTLE 0x3D
#define MUSIC_CATTERPILLARS_BATTLE 0x3E
#define MUSIC_IMAGO_COCOON_BATTLE 0x3F
#define MUSIC_IMAGO_BATTLE 0x40
#define MUSIC_MECHA_RIDLEY_BATTLE 0x41
#define MUSIC_GETTING_UNKNOWN_ITEM_JINGLE 0x42
#define MUSIC_RUINS_TEST_BATTLE_WITH_INTRO 0x43
#define MUSIC_ENTERING_TOURIAN_CUTSCENE 0x44
#define MUSIC_ALARM_ACTIVATED 0x45
#define MUSIC_STEALTH 0x46
#define MUSIC_ENTERING_NORFAIR_CUTSCENE 0x48
#define MUSIC_CHOZODIA_DETECTED 0x49
#define MUSIC_GETTING_FULLY_POWERED_SUIT_JINGLE 0x4A
#define MUSIC_KRAID_BATTLE 0x4B
#define MUSIC_RIDLEY_BATTLE_2 0x4C
#define MUSIC_MECHA_RIDLEY_BATTLE_2 0x4D
#define MUSIC_RUINS_TEST_BATTLE 0x4E
#define MUSIC_CATTERPILLARS_BATTLE_2 0x4F
#define MUSIC_CRATERIA 0x50
#define MUSIC_GAME_OVER 0x53
#define MUSIC_UNKNOWN 0x54
#define MUSIC_CHOZODIA_SURFACE 0x5A
#define MUSIC_MAP_ROOM_2 0x5B
#define MUSIC_SAVE_ELEVATOR_ROOM_2 0x5C
#define MUSIC_BEFORE_RUINS_TEST_ROOM 0x5D
#define MUSIC_STEALTH_2 0x5E
// Structs
struct MusicTrackInfo {
u16 currentRoomTrack;
u8 pauseScreenFlag;
u8 takingNormalTransition;
i8 unk;
};
// Functions
void SoundPlay(u16 sound);

View File

@ -3,91 +3,8 @@
#include "types.h"
#include "oam.h"
#include "particle.h"
#include "sprite.h"
#include "clipdata.h"
#include "samus.h"
// Defines
#define PROJECTILE_NONE 0x0
#define PROJECTILE_BEAM 0x1
#define PROJECTILE_MISSILE 0x2
#define PROJECTILE_SUPER_MISSILE 0x3
#define PROJECTILE_BOMB 0x4
#define PROJECTILE_POWER_BOMB 0x5
#define PROJECTILE_CHARGED_BEAM 0x6
#define PROJ_STATUS_NONE 0x0
#define PROJ_STATUS_EXISTS 0x1
#define PROJ_STATUS_ON_SCREEN 0x2
#define PROJ_STATUS_NOT_DRAWN 0x4
#define PROJ_STATUS_HIGH_PRIORITY 0x8
#define PROJ_STATUS_CAN_AFFECT_ENVIRONMENT 0x10
#define PROJ_STATUS_YFLIP 0x20
#define PROJ_STATUS_XFLIP 0x40
#define PROJ_STATUS_UNKNOWN 0x80
#define PROJ_TYPE_BEAM 0x0
#define PROJ_TYPE_LONG_BEAM 0x1
#define PROJ_TYPE_ICE_BEAM 0x2
#define PROJ_TYPE_WAVE_BEAM 0x3
#define PROJ_TYPE_PLASMA_BEAM 0x4
#define PROJ_TYPE_PISTOL 0x5
#define PROJ_TYPE_CHARGED_BEAM 0x6
#define PROJ_TYPE_CHARGED_LONG_BEAM 0x7
#define PROJ_TYPE_CHARGED_ICE_BEAM 0x8
#define PROJ_TYPE_CHARGED_WAVE_BEAM 0x9
#define PROJ_TYPE_CHARGED_PLASMA_BEAM 0xA
#define PROJ_TYPE_CHARGED_PISTOL 0xB
#define PROJ_TYPE_MISSILE 0xC
#define PROJ_TYPE_SUPER_MISSILE 0xD
#define PROJ_TYPE_BOMB 0xE
#define PROJ_TYPE_POWER_BOMB 0xF
#define BOMB_STAGE_INIT 0x0
#define BOMB_STAGE_FIRST_SPIN 0x1
#define BOMB_STAGE_FAST_SPIN 0x2
#define BOMB_STAGE_EXPLODING 0x3
#define BOMB_STAGE_PLACED_ON_LAUNCHER 0x4
#define BOMB_STAGE_FIRST_SPIN_ON_LAUNCHER 0x5
#define BOMB_STAGE_FAST_SPIN_ON_LAUNCHER 0x6
#define BOMB_STAGE_EXPLODING_ON_LAUNCHER 0x7
// Structs
struct ProjectileData {
u8 status;
const struct FrameData* pOam;
u16 yPosition;
u16 xPosition;
u16 currentAnimationFrame;
u8 animationDurationCounter;
u8 type;
u8 direction;
u8 movementStage;
u8 drawDistanceOffset;
u8 timer;
i16 hitboxTopOffset;
i16 hitboxBottomOffset;
i16 hitboxLeftOffset;
i16 hitboxRightOffset;
};
// Typedef
typedef void (*ProjFunc_T)(struct ProjectileData*);
// Globals
#define MAX_AMOUNT_OF_PROJECTILES 16
extern struct ProjectileData gProjectileData[MAX_AMOUNT_OF_PROJECTILES];
extern u16 gArmCannonY;
extern u16 gArmCannonX;
// Functions
#include "structs/projectile.h"
#include "structs/sprite.h"
void ProjectileSetBeamParticleEffect(void);
u8 ProjectileCheckNumberOfProjectiles(u8 type, u8 limit);

View File

@ -2,7 +2,6 @@
#define ROOM_H
#include "types.h"
#include "sprite.h"
#include "transparency.h"
#include "block.h"
#include "event.h"

View File

@ -3,375 +3,7 @@
#include "types.h"
#include "oam.h"
#include "game_modes.h"
#define MAX_AMOUNT_OF_SAMUS_POSES 67
// Globals
extern struct SamusData gSamusData;
extern struct SamusData gSamusDataCopy;
extern struct WeaponInfo gSamusWeaponInfo;
extern struct SamusEcho gSamusEcho;
extern struct ScrewSpeedAnimation gScrewSpeedAnimation;
extern struct Equipment gEquipment;
extern struct HazardDamage gSamusHazardDamage;
extern struct EnvironmentalEffect gSamusEnvirnmentalEffects[5];
extern struct SamusPhysics gSamusPhysics;
extern u16 gPreviousXPosition;
extern u16 gPreviousYPosition;
extern u16 gPreventMovementTimer;
extern u16 gSamusPalette[32];
extern i16 gSamusDoorPositionOffset;
// Defines
#define BBF_NONE 0x0
#define BBF_LONG_BEAM 0x1
#define BBF_ICE_BEAM 0x2
#define BBF_WAVE_BEAM 0x4
#define BBF_PLASMA_BEAM 0x8
#define BBF_CHARGE_BEAM 0x10
#define BBF_BOMBS 0x80
#define SMF_NONE 0x0
#define SMF_HIGH_JUMP 0x1
#define SMF_SPEEDBOOSTER 0x2
#define SMF_SPACE_JUMP 0x4
#define SMF_SCREW_ATTACK 0x8
#define SMF_VARIA_SUIT 0x10
#define SMF_GRAVITY_SUIT 0x20
#define SMF_MORPH_BALL 0x40
#define SMF_POWER_GRIP 0x80
#define SUIT_NORMAL 0x0
#define SUIT_FULLY_POWERED 0x1
#define SUIT_SUITLESS 0x2
#define DIAG_AIM_NONE 0x0
#define DIAG_AIM_UP 0x1
#define DIAG_AIM_DOWN 0x2
#define WH_NONE 0x0
#define WH_MISSILE 0x1
#define WH_SUPER_MISSILE 0x2
#define WH_POWER_BOMB 0x4
#define SPOSE_RUNNING 0x0
#define SPOSE_STANDING 0x1
#define SPOSE_TURNING_AROUND 0x2
#define SPOSE_SHOOTING 0x3
#define SPOSE_CROUCHING 0x4
#define SPOSE_TURNING_AROUND_AND_CROUCHING 0x5
#define SPOSE_SHOOTING_AND_CROUCHING 0x6
#define SPOSE_SKIDDING 0x7
#define SPOSE_MIDAIR 0x8
#define SPOSE_TURNING_AROUND_MIDAIR 0x9
#define SPOSE_LANDING 0xA
#define SPOSE_STARTING_SPIN_JUMP 0xB
#define SPOSE_SPINNING 0xC
#define SPOSE_STARTING_WALL_JUMP 0xD
#define SPOSE_SPACE_JUMPING 0xE
#define SPOSE_SCREW_ATTACKING 0xF
#define SPOSE_MORPHING 0x10
#define SPOSE_MORPH_BALL 0x11
#define SPOSE_ROLLING 0x12
#define SPOSE_UNMORPHING 0x13
#define SPOSE_MORPH_BALL_MIDAIR 0x14
#define SPOSE_HANGING_ON_LEDGE 0x15
#define SPOSE_TURNING_TO_AIM_WHILE_HANGING 0x16
#define SPOSE_HIDING_ARM_CANNON_WHILE_HANGING 0x17
#define SPOSE_AIMING_WHILE_HANGING 0x18
#define SPOSE_SHOOTING_WHILE_HANGING 0x19
#define SPOSE_PULLING_YOURSELF_UP_FROM_HANGING 0x1A
#define SPOSE_PULLING_YOURSELF_FORWARD_FROM_HANGING 0x1B
#define SPOSE_PULLING_YOURSELF_INTO_A_MORPH_BALL_TUNNEL 0x1C
#define SPOSE_USING_AN_ELEVATOR 0x1D
#define SPOSE_FACING_THE_FOREGROUND 0x1E
#define SPOSE_TURNING_FROM_FACING_THE_FOREGROUND 0x1F
#define SPOSE_GRABBED_BY_CHOZO_STATUE 0x20
#define SPOSE_DELAY_BEFORE_SHINESPARKING 0x21
#define SPOSE_SHINESPARKING 0x22
#define SPOSE_SHINESPARK_COLLISION 0x23
#define SPOSE_DELAY_AFTER_SHINESPARKING 0x24
#define SPOSE_DELAY_BEFORE_BALLSPARKING 0x25
#define SPOSE_BALLSPARKING 0x26
#define SPOSE_BALLSPARK_COLLISION 0x27
#define SPOSE_ON_ZIPLINE 0x28
#define SPOSE_SHOOTING_ON_ZIPLINE 0x29
#define SPOSE_TURNING_ON_ZIPLINE 0x2A
#define SPOSE_MORPH_BALL_ON_ZIPLINE 0x2B
#define SPOSE_SAVING_LOADING_GAME 0x2C
#define SPOSE_DOWNLOADING_MAP_DATA 0x2D
#define SPOSE_TURNING_AROUND_TO_DOWNLOAD_MAP_DATA 0x2E
#define SPOSE_GETTING_HURT 0x2F
#define SPOSE_GETTING_KNOCKED_BACK 0x30
#define SPOSE_GETTING_HURT_IN_MORPH_BALL 0x31
#define SPOSE_GETTING_KNOCKED_BACK_IN_MORPH_BALL 0x32
#define SPOSE_DYING 0x33
#define SPOSE_CROUCHING_TO_CRAWL 0x34
#define SPOSE_CRAWLING_STOPPED 0x35
#define SPOSE_STARTING_TO_CRAWL 0x36
#define SPOSE_CRAWLING 0x37
#define SPOSE_UNCROUCHING_FROM_CRAWLING 0x38
#define SPOSE_TURNING_AROUND_WHILE_CRAWLING 0x39
#define SPOSE_SHOOTING_WHILE_CRAWLING 0x3A
#define SPOSE_UNCROUCHING_SUITLESS 0x3B
#define SPOSE_CROUCHING_SUITLESS 0x3C
#define SPOSE_GRABBING_A_LEDGE_SUITLESS 0x3D
#define SPOSE_FACING_THE_BACKGROUND_SUITLESS 0x3E
#define SPOSE_TURNING_FROM_FACING_THE_BACKGROUND_SUITLESS 0x3F
#define SPOSE_ACTIVATING_ZIPLINES 0x40
#define SPOSE_IN_ESCAPE_SHIP 0x41
#define SPOSE_TURNING_TO_ENTER_ESCAPE_SHIP 0x42
#define SPOSE_KNOCKBACK_REQUEST 0xF9
#define SPOSE_HURT_REQUEST 0xFA
#define SPOSE_LANDING_REQUEST 0xFD
#define SPOSE_UPDATE_JUMP_VELOCITY_REQUEST 0xFE
#define SPOSE_NONE 0xFF
#define STANDING_GROUND 0x0
#define STANDING_ENEMY 0x1
#define STANDING_MIDAIR 0x2
#define STANDING_NOT_IN_CONTROL 0x3
#define STANDING_FORCED_POSE 0x4
#define STANDING_HANGING 0x5
#define STANDING_INVALID 0xFF
#define ACD_FORWARD 0x0
#define ACD_DIAGONALLY_UP 0x1
#define ACD_DIAGONALLY_DOWN 0x2
#define ACD_UP 0x3
#define ACD_DOWN 0x4
#define ACD_NONE 0x5
#define SLOPE_NONE 0x0
#define SLOPE_STEEP 0x1
#define SLOPE_SLIGHT 0x2
#define SLOPE_LEFT 0x10
#define SLOPE_RIGHT 0x20
#define HDMOVING_NONE 0x0
#define HDMOVING_LEFT 0x1
#define HDMOVING_RIGHT 0x2
#define VDMOVING_NONE 0x0
#define VDMOVING_UP 0x1
#define VDMOVING_DOWN 0x2
#define ENV_EFFECT_NONE 0x0
#define ENV_EFFECT_RUNNING_ON_WET_GROUND 0x1
#define ENV_EFFECT_RUNNING_ON_DUSTY_GROUND 0x2
#define ENV_EFFECT_RUNNING_ON_VERY_DUSTY_GROUND 0x3
#define ENV_EFFECT_GOING_OUT_OF_WATER 0x4
#define ENV_EFFECT_RUNNING_INTO_WATER 0x5
#define ENV_EFFECT_GOING_OUT_OF_LAVA 0x6
#define ENV_EFFECT_RUNNING_INTO_LAVA 0x7
#define ENV_EFFECT_GOING_OUT_OF_ACID 0x8
#define ENV_EFFECT_RUNNING_INTO_ACID 0x9
#define ENV_EFFECT_TAKING_DAMAGE_IN_LAVA 0xA
#define ENV_EFFECT_TAKING_DAMAGE_IN_ACID 0xB
#define ENV_EFFECT_LANDING_ON_WET_GROUND 0xC
#define ENV_EFFECT_LANDING_ON_BUBBLY_GROUND 0xD
#define ENV_EFFECT_LANDING_ON_DUSTY_GROUND 0xE
#define ENV_EFFECT_LANDING_ON_VERY_DUSTY_GROUND 0xF
#define ENV_EFFECT_SKIDDING_ON_WET_GROUND 0x10
#define ENV_EFFECT_SKIDDING_ON_DUSTY_GROUND 0x11
#define ENV_EFFECT_BREATHING_BUBBLES 0x12
#define WANTING_RUNNING_EFFECT 0x0
#define WANTING_RUNNING_EFFECT_ 0x1
#define WANTING_LANDING_EFFECT 0x2
#define WANTING_GOING_OUT_OF_LIQUID_EFFECT 0x3
#define WANTING_RUNNING_OUT_OF_LIQUID_EFFECT 0x4
#define WANTING_BREATHING_BUBBLES 0x5
#define WANTING_SKIDDING_EFFECT 0x6
#define WANTING_RUNNING_ON_WET_GROUND 0x7
#define DESTRUCTING_ACTION_NONE 0x0
#define DESTRUCTING_ACTION_SPEED 0x1
#define DESTRUCTING_ACTION_SCREW 0x2
#define DESTRUCTING_ACTION_SPEED_SCREW 0x3
#define DESTRUCTING_ACTION_SPEED_ON_GROUND 0x4
#define SAMUS_ANIM_STATE_NONE 0x0
#define SAMUS_ANIM_STATE_SUB_ENDED 0x1
#define SAMUS_ANIM_STATE_ENDED 0x2
// Probably not 100% true
#define SAMUS_COLLISION_DETECTION_NONE 0x0
#define SAMUS_COLLISION_DETECTION_LEFT_MOST 0x1
#define SAMUS_COLLISION_DETECTION_MIDDLE_LEFT 0x2
#define SAMUS_COLLISION_DETECTION_MIDDLE_RIGHT 0x4
#define SAMUS_COLLISION_DETECTION_RIGHT_MOST 0x8
#define SAMUS_COLLISION_DETECTION_SLOPE 0x80
#define FORCED_MOVEMENT_UPWARDS_SHINESPARK 0x0
#define FORCED_MOVEMENT_SIDEWARDS_SHINESPARK 0x1
#define FORCED_MOVEMENT_CROUCHING_ARM_CANNON_UP 0x1
#define FORCED_MOVEMENT_DIAGONAL_SHINESPARK 0x2
#define FORCED_MOVEMENT_LAUNCHED_BY_CANNON 0xF0
#define FORCED_MOVEMENT_BOMB_JUMP 0x0
#define FORCED_MOVEMENT_BOMB_JUMP_RIGHT 0xA
#define FORCED_MOVEMENT_BOMB_JUMP_UP 0xB
#define FORCED_MOVEMENT_BOMB_JUMP_LEFT 0xC
#define FORCED_MOVEMENT_BOMB_JUMP_ABOVE 0x80
#define SCREW_SPEED_FLAG_NONE 0x0
#define SCREW_SPEED_FLAG_SHINESPARKING 0x1
#define SCREW_SPEED_FLAG_SPEEDBOOSTING 0x1
#define SCREW_SPEED_FLAG_SCREW_ATTACKING 0x1
#define SCREW_SPEED_FLAG_STORING_SHINESPARK 0x8
// Structs
struct Equipment {
u16 maxEnergy;
u16 maxMissiles;
u8 maxSuperMissiles;
u8 maxPowerBombs;
u16 currentEnergy;
u16 currentMissiles;
u8 currentSuperMissiles;
u8 currentPowerBombs;
u8 beamBombs;
u8 beamBombsActivation;
u8 suitMisc;
u8 suitMiscActivation;
u8 downloadedMapStatus;
u8 lowHealth;
u8 suitType;
u8 grabbedByMetroid;
};
struct WeaponInfo {
u8 diagonalAim;
u8 newProjectile;
u8 weaponHighlighted;
u8 missilesSeleced;
u8 cooldown;
u8 chargeCounter;
u8 beamReleasePaletteTimer;
};
struct SamusData {
u8 pose;
u8 standingStatus;
u8 armCannonDirection;
u8 turning;
u8 forcedMovement;
u8 speedboostingShinesparking;
u8 invincibilityTimer;
u8 walljumpTimer;
u8 shinesparkTimer;
u8 unmorphPaletteTimer;
u8 timer;
u16 lastWallTouchedMidAir;
u16 direction;
u16 elevatorDirection;
u16 xPosition;
u16 yPosition;
i16 xVelocity;
i16 yVelocity;
u16 currentSlope;
u8 animationDurationCounter;
u8 currentAnimationFrame;
};
struct SamusPhysics {
u16* pBodyOam;
u8* pShouldersGFX;
u16 shoulderGFXSize;
u8* pTorsoGFX;
u16 torsoGFXSize;
u8* pLegsGFX;
u16 legsGFXSize;
u8* pBodyLowerHalfGFX;
u16 bodyLowerHalfGFXSize;
u16 unk;
u16* pArmCannonOAM;
u8* pArmCannonGFXUpper;
u16 armCannonGFXUpperSize;
u8* pArmCannonGFXLower;
u16 armCannonGFXLowerSize;
u16* pScrewSpeedOAM;
u8* pScrewSpeedGFX;
u16 screwSpeedGFXSize;
u8* pScrewShinesparkGFX;
u16 screwShinesparkGFXSize;
u16 armCannonXPositionOffset;
u16 armCannonYPositionOffset;
u8 horizontalMovingDirection;
u8 verticalMovingDirection;
i16 hitboxLeftOffset;
i16 hitboxRightOffset;
i16 hitboxTopOffset;
u8 standingStatus;
u8 hitboxType; // TODO define
u8 touchingSideBlock;
u8 touchingTopBlock;
u8 unknown;
u8 slowedByLiquid;
u8 hasNewProjectile;
i16 xAcceleration;
i16 xVelocityCap;
i16 yAcceleration;
i16 positiveYVelocityCap;
i16 negativeYVelocityCap;
i16 midairXAcceleration;
i16 midairXVelocityCap;
i16 midairMorphedXVelocityCap;
i16 drawDistanceLeftOffset;
i16 drawDistanceTopOffset;
i16 drawDistanceRightOffset;
i16 drawDistanceBottomOffset;
};
struct ScrewSpeedAnimation {
u8 flag;
u8 animationDurationCounter;
u8 currentAnimationFrame;
u32 unknown;
};
struct HazardDamage {
u8 damageTimer;
// u8 undefined; // Needed for correct alignment
u16 knockbackTimer;
u8 paletteTimer;
};
struct EnvironmentalEffect {
u8 type;
u8 animationDurationCounter;
u8 currentAnimationFrame;
u8 breathingTimer;
u16 xPosition;
u16 yPosition;
struct OamFrame* pOamFrame;
};
struct SamusEcho {
u8 active;
u8 timer;
u8 position;
u8 distance;
u16 previous64XPositions[64];
u16 previous64YPositions[64];
u16 previousPositionCounter;
u8 unknown;
};
// Typedefs
typedef u8 (*SamusFunc_T)(struct SamusData*);
// Functions
#include "structs/samus.h"
void SamusCheckScrewSpeedboosterAffectingEnvironment(struct SamusData* pData, struct SamusPhysics* pPhysics);
u8 SamusSlopeRelated(u16 xPosition, u16 yPosition, u16* pXPosition, u16* pYPosition, u16* pSlope);

View File

@ -2,46 +2,11 @@
#define SCROLL_H
#include "types.h"
#include "structs/scroll.h"
#define SCREEN_WIDTH (BLOCK_SIZE * 9)
#define SCREEN_HEIGHT (BLOCK_SIZE * 5)
extern struct Scroll gCurrentScrolls[2];
extern struct ScreenPositionAndVelocity gScreenPositionAndVelocity;
extern struct LockScreen gLockScreen;
extern i8 gScreenYOffset;
extern i16 gScreenXOffset;
extern struct Unk_3005714 gUnk_3005714;
struct Scroll {
u8 within;
u16 xEnd;
u16 xStart;
u16 yStart;
u16 yEnd;
};
struct ScreenPositionAndVelocity {
u16 xPosition;
u16 yPosition;
i8 xVelocity;
i8 yVelocity;
};
struct LockScreen {
u8 lock;
u16 xPositionCenter;
u16 yPositionCenter;
};
struct Unk_3005714 {
i16 unk0;
i16 unk2;
i16 unk4;
i16 unk6;
};
void ScrollProcess(struct RawCoordsX* pCoords);
void ScrollScreen(u16 screen_x, u16 screen_y);
i32 ScrollProcessX(struct Scroll* pScroll, struct RawCoordsX* pCoords);

View File

@ -3,480 +3,7 @@
#include "types.h"
#include "oam.h"
// Defines
#define SPRITE_STATUS_NONE 0x0
#define SPRITE_STATUS_EXISTS 0x1
#define SPRITE_STATUS_ONSCREEN 0x2
#define SPRITE_STATUS_NOT_DRAWN 0x4
#define SPRITE_STATUS_ROTATION_SCALING 0x8
#define SPRITE_STATUS_UNKNOWN 0x10
#define SPRITE_STATUS_MOSAIC 0x20
#define SPRITE_STATUS_XFLIP 0x40
#define SPRITE_STATUS_YFLIP 0x80
#define SPRITE_STATUS_FACING_DOWN 0x100
#define SPRITE_STATUS_FACING_RIGHT 0x200
#define SPRITE_STATUS_UNKNOWN2 0x400
#define SPRITE_STATUS_SAMUS_COLLIDING 0x800
#define SPRITE_STATUS_SAMUS_ON_TOP 0x1000
#define SPRITE_STATUS_ALPHA_BLENDING 0x2000
#define SPRITE_STATUS_DOUBLE_SIZE 0x4000
#define SPRITE_STATUS_IGNORE_PROJECTILES 0x8000
#define PSPRITE_UNUSED0 0x0
#define PSPRITE_UNUSED1 0x1
#define PSPRITE_UNUSED2 0x2
#define PSPRITE_UNUSED3 0x3
#define PSPRITE_UNUSED4 0x4
#define PSPRITE_UNUSED5 0x5
#define PSPRITE_UNUSED6 0x6
#define PSPRITE_UNUSED7 0x7
#define PSPRITE_UNUSED8 0x8
#define PSPRITE_UNUSED9 0x9
#define PSPRITE_UNUSED10 0xA
#define PSPRITE_UNUSED11 0xB
#define PSPRITE_UNUSED12 0xC
#define PSPRITE_UNUSED13 0xD
#define PSPRITE_UNUSED14 0xE
#define PSPRITE_UNUSED15 0xF
#define PSPRITE_UNUSED16 0x10
#define PSPRITE_ITEM_BANNER 0x11
#define PSPRITE_ZOOMER_YELLOW 0x12
#define PSPRITE_ZOOMER_RED 0x13
#define PSPRITE_ZEELA 0x14
#define PSPRITE_ZEELA_RED 0x15
#define PSPRITE_RIPPER_BROWN 0x16
#define PSPRITE_RIPPER_PURPLE 0x17
#define PSPRITE_ZEB 0x18
#define PSPRITE_ZEB_BLUE 0x19
#define PSPRITE_LARGE_ENERGY_DROP 0x1A
#define PSPRITE_SMALL_ENERGY_DROP 0x1B
#define PSPRITE_MISSILE_DROP 0x1C
#define PSPRITE_SUPER_MISSILE_DROP 0x1D
#define PSPRITE_POWER_BOMB_DROP 0x1E
#define PSPRITE_SKREE_GREEN 0x1F
#define PSPRITE_SKREE_BLUE 0x20
#define PSPRITE_MORPH_BALL 0x21
#define PSPRITE_CHOZO_STATUE_LONG_HINT 0x22
#define PSPRITE_CHOZO_STATUE_LONG 0x23
#define PSPRITE_CHOZO_STATUE_ICE_HINT 0x24
#define PSPRITE_CHOZO_STATUE_ICE 0x25
#define PSPRITE_CHOZO_STATUE_WAVE_HINT 0x26
#define PSPRITE_CHOZO_STATUE_WAVE 0x27
#define PSPRITE_CHOZO_STATUE_BOMB_HINT 0x28
#define PSPRITE_CHOZO_STATUE_BOMB 0x29
#define PSPRITE_CHOZO_STATUE_SPEEDBOOSTER_HINT 0x2A
#define PSPRITE_CHOZO_STATUE_SPEEDBOOSTER 0x2B
#define PSPRITE_CHOZO_STATUE_HIGH_JUMP_HINT 0x2C
#define PSPRITE_CHOZO_STATUE_HIGH_JUMP 0x2D
#define PSPRITE_CHOZO_STATUE_SCREW_HINT 0x2E
#define PSPRITE_CHOZO_STATUE_SCREW 0x2F
#define PSPRITE_CHOZO_STATUE_VARIA_HINT 0x30
#define PSPRITE_CHOZO_STATUE_VARIA 0x31
#define PSPRITE_SOVA_PURPLE 0x32
#define PSPRITE_SOVA_ORANGE 0x33
#define PSPRITE_MULTIVIOLA 0x34
#define PSPRITE_MULTIPLE_LARGE_ENERGY 0x35
#define PSPRITE_GERUTA_RED 0x36
#define PSPRITE_GERUTA_GREEN 0x37
#define PSPRITE_SQUEEPT 0x38
#define PSPRITE_SQUEEPT_UNUSED 0x39
#define PSPRITE_MAP_STATION 0x3A
#define PSPRITE_DRAGON 0x3B
#define PSPRITE_DRAGON_UNUSED 0x3C
#define PSPRITE_ZIPLINE 0x3D
#define PSPRITE_ZIPLINE_BUTTON 0x3E
#define PSPRITE_REO_GREEN_WINGS 0x3F
#define PSPRITE_REO_PURPLE_WINGS 0x40
#define PSPRITE_GUNSHIP 0x41
#define PSPRITE_DEOREM 0x42
#define PSPRITE_DEOREM_SECOND_LOCATION 0x43
#define PSPRITE_CHARGE_BEAM 0x44
#define PSPRITE_SKULTERA 0x45
#define PSPRITE_DESSGEEGA 0x46
#define PSPRITE_DESSGEEGA_AFTER_LONG_BEAM 0x47
#define PSPRITE_WAVER 0x48
#define PSPRITE_WAVER_UNUSED 0x49
#define PSPRITE_MELLOW 0x4A
#define PSPRITE_HIVE 0x4B
#define PSPRITE_POWER_GRIP 0x4C
#define PSPRITE_IMAGO_LARVA_RIGHT 0x4D
#define PSPRITE_MORPH_BALL_LAUNCHER 0x4E
#define PSPRITE_IMAGO_COCOON 0x4F
#define PSPRITE_ELEVATOR_PAD 0x50
#define PSPRITE_SPACE_PIRATE 0x51
#define PSPRITE_SPACE_PIRATE_WAITING1 0x52
#define PSPRITE_SPACE_PIRATE_WAITING2 0x53
#define PSPRITE_SPACE_PIRATE_WAITING3 0x54
#define PSPRITE_SPACE_PIRATE2 0x55
#define PSPRITE_GAMET_BLUE_SINGLE 0x56
#define PSPRITE_GAMET_RED_SINGLE 0x57
#define PSPRITE_CHOZO_STATUE_GRAVITY 0x58
#define PSPRITE_CHOZO_STATUE_SPACE_JUMP 0x59
#define PSPRITE_SECURITY_GATE_DEFAULT_OPEN 0x5A
#define PSPRITE_ZEBBO_GREEN 0x5B
#define PSPRITE_ZEBBO_YELLOW 0x5C
#define PSPRITE_WORKER_ROBOT 0x5D
#define PSPRITE_PARASITE_MULTIPLE 0x5E
#define PSPRITE_PARASITE 0x5F
#define PSPRITE_PISTON 0x60
#define PSPRITE_RIDLEY 0x61
#define PSPRITE_SECURITY_GATE_DEFAULT_CLOSED 0x62
#define PSPRITE_ZIPLINE_GENERATOR 0x63
#define PSPRITE_METROID 0x64
#define PSPRITE_FROZEN_METROID 0x65
#define PSPRITE_RINKA_ORANGE 0x66
#define PSPRITE_POLYP 0x67
#define PSPRITE_VIOLA_BLUE 0x68
#define PSPRITE_VIOLA_ORANGE 0x69
#define PSPRITE_GERON_NORFAIR 0x6A
#define PSPRITE_HOLTZ 0x6B
#define PSPRITE_GEKITAI_MACHINE 0x6C
#define PSPRITE_RUINS_TEST 0x6D
#define PSPRITE_SAVE_PLATFORM 0x6E
#define PSPRITE_KRAID 0x6F
#define PSPRITE_IMAGO_COCOON_AFTER_FIGHT 0x70
#define PSPRITE_RIPPERII 0x71
#define PSPRITE_MELLA 0x72
#define PSPRITE_ATOMIC 0x73
#define PSPRITE_AREA_BANNER 0x74
#define PSPRITE_MOTHER_BRAIN 0x75
#define PSPRITE_FAKE_POWER_BOMB_EVENT_TRIGGER 0x76
#define PSPRITE_ACID_WORM 0x77
#define PSPRITE_ESCAPE_SHIP 0x78
#define PSPRITE_SIDEHOPPER 0x79
#define PSPRITE_GEEGA 0x7A
#define PSPRITE_GEEGA_WHITE 0x7B
#define PSPRITE_RINKA_MOTHER_BRAIN 0x7C
#define PSPRITE_ZEBETITE_ONE_AND_THREE 0x7D
#define PSPRITE_CANNON 0x7E
#define PSPRITE_IMAGO_LARVA_RIGHT_SIDE 0x7F
#define PSPRITE_TANGLE_VINE_TALL 0x80
#define PSPRITE_TANGLE_VINE_MEDIUM 0x81
#define PSPRITE_TANGLE_VINE_CURVED 0x82
#define PSPRITE_TANGLE_VINE_SHORT 0x83
#define PSPRITE_MELLOW_SWARM 0x84
#define PSPRITE_MELLOW_SWARM_HEALTH_BASED 0x85
#define PSPRITE_IMAGO 0x86
#define PSPRITE_ZEBITITE_TWO_AND_FOUR 0x87
#define PSPRITE_CANNON2 0x88
#define PSPRITE_CANNON3 0x89
#define PSPRITE_CROCOMIRE 0x8A
#define PSPRITE_IMAGO_LARVA_LEFT 0x8B
#define PSPRITE_GERON_BRINSTAR_ROOM_15 0x8C
#define PSPRITE_GERON_BRINSTAR_ROOM_1C 0x8D
#define PSPRITE_GERON_VARIA1 0x8E
#define PSPRITE_GERON_VARIA2 0x8F
#define PSPRITE_GERON_VARIA3 0x90
#define PSPRITE_GLASS_TUBE 0x91
#define PSPRITE_SAVE_PLATFORM_CHOZODIA 0x92
#define PSPRITE_BARISTUTE 0x93
#define PSPRITE_CHOZO_STATUE_PLASMA_BEAM 0x94
#define PSPRITE_KRAID_ELEVATOR_STATUE 0x95
#define PSPRITE_RIDLEY_ELEVATOR_STATUE 0x96
#define PSPRITE_RISING_CHOZO_PILLAR 0x97
#define PSPRITE_SECURITY_LASER_VERTICAL 0x98
#define PSPRITE_SECURITY_LASER_HORIZONTAL 0x99
#define PSPRITE_SECURITY_LASER_VERTICAL2 0x9A
#define PSPRITE_SECURITY_LASER_HORIZONTAL2 0x9B
#define PSPRITE_LOCK_UNLOCK_METROID_DOORS_UNUSED 0x9C
#define PSPRITE_GAMET_BLUE_LEADER 0x9D
#define PSPRITE_GAMET_BLUE_FOLLOWER 0x9E
#define PSPRITE_GEEGA_LEADER 0x9F
#define PSPRITE_GEEGA_FOLLOWER 0xA0
#define PSPRITE_ZEBBO_GREEN_LEADER 0xA1
#define PSPRITE_ZEBBO_GREEN_FOLLOWER 0xA2
#define PSPRITE_KRAID_STATUE 0xA3
#define PSPRITE_RIDLEY_STATUE 0xA4
#define PSPRITE_RINKA_GREEN 0xA5
#define PSPRITE_SEARCHLIGHT_EYE 0xA6
#define PSPRITE_SEARCHLIGHT_EYE2 0xA7
#define PSPRITE_STEAM_LARGE 0xA8
#define PSPRITE_STEAM_SMALL 0xA9
#define PSPRITE_PLASMA_BEAM_BLOCK 0xAA
#define PSPRITE_GRAVITY_SUIT_BLOCK 0xAB
#define PSPRITE_SPACE_JUMP_BLOCK 0xAC
#define PSPRITE_GADORA_KRAID 0xAD
#define PSPRITE_GADORA_RIDLEY 0xAE
#define PSPRITE_SEARCHLIGHT 0xAF
#define PSPRITE_SEARCHLIGHT2 0xB0
#define PSPRITE_SEARCHLIGHT3 0xB1
#define PSPRITE_SEARCHLIGHT4 0xB2
#define PSPRITE_MAYBE_SEARCHLIGHT_TRIGGER 0xB3
#define PSPRITE_DISCOVERED_IMAGO_PASSAGE_EVENT_TRIGGER 0xB4
#define PSPRITE_FAKE_POWER_BOMB 0xB5
#define PSPRITE_SPACE_PIRATE_CARRYING_POWER_BOMB 0xB6
#define PSPRITE_TANGLE_VINE_RED_GARUTA 0xB7
#define PSPRITE_TANGLE_VINE_GERUTA 0xB8
#define PSPRITE_TANGLE_VINE_LARVA_RIGHT 0xB9
#define PSPRITE_TANGLE_VINE_LARVA_LEFT 0xBA
#define PSPRITE_WATER_DROP 0xBB
#define PSPRITE_FALLING_CHOZO_PILLAR 0xBC
#define PSPRITE_MECHA_RIDLEY 0xBD
#define PSPRITE_EXPLOSION_ZEBES_ESCAPE 0xBE
#define PSPRITE_STEAM_LARGE_DIAGONAL_UP 0xBF
#define PSPRITE_STEAM_SMALL_DIAGONAL_UP 0xC0
#define PSPRITE_STEAM_LARGE_DIAGONAL_DOWN 0xC1
#define PSPRITE_STEAM_SMALL_DIAGONAL_DOWN 0xC2
#define PSPRITE_BARISTUTE_KRAID_UPPER 0xC3
#define PSPRITE_ESCAPE_GATE1 0xC4
#define PSPRITE_ESCAPE_GATE2 0xC5
#define PSPRITE_BLACK_SPACE_PIRATE 0xC6
#define PSPRITE_ESCAPE_SHIP_SPACE_PIRATE 0xC7
#define PSPRITE_BARISTUTE_KRAID_LOWER 0xC8
#define PSPRITE_RINKA_MOTHER_BRAIN2 0xC9
#define PSPRITE_RINKA_MOTHER_BRAIN3 0xCA
#define PSPRITE_RINKA_MOTHER_BRAIN4 0xCB
#define PSPRITE_RINKA_MOTHER_BRAIN5 0xCC
#define PSPRITE_RINKA_MOTHER_BRAIN6 0xCD
#define SSPRITE_CHOZO_BALL 0x0
#define SSPRITE_CHOZO_STATUE_PART 0x1
#define SSPRITE_CHOZO_STATUE_REFILL 0x2
#define SSPRITE_KRAID_PART 0x3
#define SSPRITE_CHOZO_STATUE_MOVEMENT 0x4
#define SSPRITE_CHARGE_BEAM_GLOW 0x5
#define SSPRITE_WINGED_RIPPER 0x6
#define SSPRITE_MULTIVIOLA_UNUSED 0x7
#define SSPRITE_DRAGON_FIREBALL 0x8
#define SSPRITE_DEOREM_SEGMENT 0x9
#define SSPRITE_DEOREM_EYE 0xA
#define SSPRITE_DEOREM_THORN 0xB
#define SSPRITE_SKREE_EXPLOSION 0xC
#define SSPRITE_SAVE_PLATFORM_PART 0xD
#define SSPRITE_SAVE_YES_NO_CURSOR 0xE
#define SSPRITE_BLUE_SKREE_EXPLOSION 0xF
#define SSPRITE_ZEELA_EYES 0x10
#define SSPRITE_HIVE_ROOTS 0x11
#define SSPRITE_IMAGO_LARVA_PART 0x12
#define SSPRITE_MORPH_BALL_OUTSIDE 0x13
#define SSPRITE_IMAGO_COCOON_VINE 0x14
#define SSPRITE_IMAGO_COCOON_SPORE 0x15
#define SSPRITE_SPACE_PIRATE_LASER 0x16
#define SSPRITE_RIDLEY_PART 0x17
#define SSPRITE_RIDLEY_TAIL 0x18
#define SSPRITE_SEARCHLIGHT_EYE_BEAM 0x19
#define SSPRITE_METROID_SHELL 0x1A
#define SSPRITE_POLYP_PROJECTILE 0x1B
#define SSPRITE_KRAID_SPIKE 0x1C
#define SSPRITE_KRAID_NAIL 0x1D
#define SSPRITE_ZIPLINE_GENERATOR_PART 0x1E
#define SSPRITE_ATOMIC_ELECTRICITY 0x1F
#define SSPRITE_MOTHER_BRAIN_PART 0x20
#define SSPRITE_RIDLEY_FIREBALL 0x21
#define SSPRITE_UNKNOWN_ITEM_CHOZO_STATUE_PART 0x22
#define SSPRITE_UNKNOWN_ITEM_CHOZO_STATUE_REFILL 0x23
#define SSPRITE_MORPH_BALL_LAUNCHER_PART 0x24
#define SSPRITE_ACID_WORM_BODY 0x25
#define SSPRITE_ACID_WORM_SPIT 0x26
#define SSPRITE_CANNON_BULLET 0x27
#define SSPRITE_CROCOMIRE_PART 0x28
#define SSPRITE_IMAGO_PART 0x29
#define SSPRITE_DEFEATED_IMAGO_COCOON 0x2A
#define SSPRITE_IMAGO_CEILING_VINE 0x2B
#define SSPRITE_SEARCHLIGHT_EYE_BEAM2 0x2C
#define SSPRITE_TANGLE_VINE_GERUTA_PART 0x2D
#define SSPRITE_CHOZODIA_SAVE_PLATFORM_PART 0x2E
#define SSPRITE_IMAGO_NEEDLE 0x2F
#define SSPRITE_ELEVATOR_STATUE_DEBRIS 0x30
#define SSPRITE_IMAGO_DAMAGED_STINGER 0x31
#define SSPRITE_GUNSHIP_PART 0x32
#define SSPRITE_IMAGO_EGG 0x33
#define SSPRITE_MAP_STATION_PART 0x34
#define SSPRITE_CHOZO_PILLAR_PLATFORM 0x35
#define SSPRITE_GADORA_EYE 0x36
#define SSPRITE_GADORA_BEAM 0x37
#define SSPRITE_UNKNOWN_ITEM_BLOCK_LIGHT 0x38
#define SSPRITE_SEARCHLIGHT_EYE_PROJECTILE 0x39
#define SSPRITE_CHOZO_PILLAR_PLATFORM_SHADOW 0x3A
#define SSPRITE_RUINS_TEST_SYMBOL 0x3B
#define SSPRITE_RUINS_TEST_SAMUS_REFLECTION_START 0x3C
#define SSPRITE_RUINS_TEST_REFLECTION_COVER 0x3D
#define SSPRITE_RUINS_TEST_GHOST_OUTLINE 0x3E
#define SSPRITE_RUINS_TEST_GHOST 0x3F
#define SSPRITE_RUINS_TEST_SHOOTABLE_SYMBOL 0x40
#define SSPRITE_RUINS_TEST_SAMUS_REFLECTION_END 0x41
#define SSPRITE_RUINS_TEST_LIGHTNING 0x42
#define SSPRITE_RIDLEY_BIG_FIREBALL 0x43
#define SSPRITE_MECHA_RIDLEY_PART 0x44
#define SSPRITE_ESCAPE_SHIP_PART 0x45
#define SSPRITE_POWER_GRIP_GLOW 0x46
#define SSPRITE_MECHA_RIDLEY_LASER 0x47
#define SSPRITE_MECHA_RIDLEY_MISSILE 0x48
#define SSPRITE_MECHA_RIDLEY_FIREBALL 0x49
#define SSPRITE_MOTHER_BRAIN_BEAM 0x4A
#define SSPRITE_MOTHER_BRAIN_BLOCK 0x4B
#define SSPRITE_MOTHER_BRAIN_GLASS_BREAKING 0x4C
#define SSC_NONE 0x0
#define SSC_SOLID 0x1
#define SSC_ESCAPE_SHIP 0x2
#define SSC_HURTS_SAMUS_CAN_STAND_ON_TOP 0x3
#define SSC_HURTS_SAMUS 0x4
#define SSC_ATOMIC_DISCHARGE 0x5
#define SSC_HURTS_SAMUS_STOP_DIES_WHEN_HIT 0x6
#define SSC_KNOCKS_BACK_SAMUS 0x7
#define SSC_HURTS_SAMUS_NO_KNOCKBACK 0x9
#define SSC_KRAID 0xA
#define SSC_HURTS_SAMUS_NO_PASS_THROUGH 0xB
#define SSC_ZEBETITE 0xC
#define SSC_IMAGO_STINGER 0xD
#define SSC_HURTS_SAMUS_STOP_DIES_WHEN_HIT_BIG_KNOCKBACK 0xE
#define SSC_MOTHER_BRAIN_BEAM 0xF
#define SSC_HURTS_SAMUS_STOP_DIES_WHEN_HIT_NO_KNOCKBACK 0x10
#define SSC_HURTS_SAMUS_NO_KNOCKBACK_NO_CONTACT_DAMAGE 0x11
#define SSC_MELLOW 0x12
#define SSC_SPACE_PIRATE_LASER 0x13
#define SSC_SPACE_PIRATE 0x14
#define SSC_ACID_WORM 0x15
#define SSC_ACID_WORM_MOUTH 0x16
#define SSC_BUG 0x17
#define SSC_METROID 0x18
#define SSC_KRAID_SPIKE 0x19
#define SSC_ZIPLINE 0x1A
#define SSC_IMAGO_EGG 0x1B
#define SSC_RIDLEY_CLAW 0x1C
#define SSC_MECHA_RIDLEY 0x1D
#define SSC_ABILITY_LASER_SEARCHLIGHT 0x1E
#define SSC_SMALL_ENERGY_DROP 0x1F
#define SSC_LARGE_ENERGY_DROP 0x20
#define SSC_MISSILE_DROP 0x21
#define SSC_SUPER_MISSILE_DROP 0x22
#define SSC_POWER_BOMB_DROP 0x23
#define SSC_MULTIPLE_LARGE_ENERGY_DROP 0x24
#define SP_NONE 0x0
#define SP_ALWAYS_ACTIVE 0x1
#define SP_DAMAGED 0x2
#define SP_KILL_OFF_SCREEN 0x4
#define SP_SOLID_FOR_PROJECTILES 0x8
#define SP_DESTROYED 0x10
#define SP_ABSOLUTE_POSITION 0x20
#define SP_IMMUNE_TO_PROJECTILES 0x40
#define SP_SECONDARY_SPRITE 0x80
#define WEAKNESS_NONE 0x0
#define WEAKNESS_CHARGE_BEAM_PISTOL 0x1
#define WEAKNESS_BEAM_BOMBS 0x2
#define WEAKNESS_SUPER_MISSILES 0x4
#define WEAKNESS_MISSILES 0x8
#define WEAKNESS_POWER_BOMB 0x10
#define WEAKNESS_SPEEDBOOSTER_SCREW_ATTACK 0x20
#define WEAKNESS_CAN_BE_FROZEN 0x40
// Structs
struct __attribute__((packed)) EnemyRoomData {
u8 yPosition;
u8 xPosition;
u8 spritesetSlot;
};
struct SubSpriteData {
const struct FrameData* pMultiOam;
u16 currentAnimationFrame;
u16 yPosition;
u16 xPosition;
u16 health;
u8 animationDurationCounter;
u8 workVariable1;
u8 workVariable2;
u8 workVariable3;
u8 workVariable4;
u8 workVariable5;
u8 workVariable6;
u8 workVariable7;
};
struct SpriteData {
u16 status;
u16 yPosition;
u16 xPosition;
u16 yPositionSpawn;
u16 xPositionSpawn;
i16 hitboxTopOffset;
i16 hitboxBottomOffset;
i16 hitboxLeftOffset;
i16 hitboxRightOffset;
u16 oamScaling;
u16 health;
u16 currentAnimationFrame;
const struct FrameData* pOam;
u8 animationDurationCounter;
u8 spriteID;
u8 roomSlot;
u8 spritesetGFXSlot;
u8 paletteRow;
u8 bgPriority;
u8 drawOrder;
u8 primarySpriteRAMSlot;
u8 pose;
u8 samusCollision;
u8 ignoreSamusCollisionTimer;
u8 drawDistanceTopOffset;
u8 drawDistanceBottomOffset;
u8 drawDistanceHorizontalOffset;
u8 oamRotation;
u8 invicibilityStunFlashTimer;
u8 timer;
u8 workVariable;
u8 workVariable2;
u8 arrayOffset;
u8 freezeTimer;
u8 standingOnSprite;
u8 properties;
u8 frozenPaletteRowOffset;
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;
};
// Globals
#define MAX_AMOUNT_OF_SPRITES 24
extern u16 gAlarmTimer;
extern struct SpriteData gSpriteData[MAX_AMOUNT_OF_SPRITES];
extern u8 gSpritesetSpritesID[15];
extern u8 gSpritesetGFXSlots[15];
extern struct SubSpriteData gSubSpriteData1;
extern struct SubSpriteData gSubSpriteData2;
extern u8 gParasiteRelated;
extern struct SpriteData gCurrentSprite;
extern u8 gPreviousVerticalCollisionCheck;
extern u8 gPreviousCollisionCheck;
extern u8 gIgnoreSamusAndSpriteCollision;
extern u8 gSpriteDrawOrder[MAX_AMOUNT_OF_SPRITES];
extern struct BossWork gBossWork;
extern u8 gSpriteRNG;
// Functions
#include "structs/sprite.h"
void SpriteUpdate(void);
void SpriteUpdateAnimation(struct SpriteData* pSprite);

View File

@ -1,43 +1,8 @@
#ifndef SPRITE_UTIL_H
#define SPRITE_UTIL_H
#include "sprite.h"
#include "block.h"
#include "samus.h"
#include "types.h"
#define NSLR_OUT_OF_RANGE 0x0
#define NSLR_LEFT 0x4
#define NSLR_RIGHT 0x8
#define NSAB_OUT_OF_RANGE 0x0
#define NSAB_ABOVE 0x1
#define NSAB_BELOW 0x2
#define NSFB_OUT_OF_RANGE 0x0
#define NSAB_IN_FRONT 0x3
#define NSAB_BEHIND 0xC
#define DCT_NONE 0x0
#define DCT_SHINESPARK 0x1
#define DCT_SPEEDBOOSTER 0x2
#define DCT_SCREW_ATTACK 0x3
#define DCT_SUDO_SCREW 0x4
#define DEATH_NORMAL 0x0
#define DEATH_RESPAWNING 0x1
#define DEATH_NO_DEATH_OR_RESPAWNING_ALREADY_HAS_DROP 0x2
#define SPLASH_NONE 0x0
#define SPLASH_SMALL 0x1
#define SPLASH_BIG 0x2
#define SPLASH_HUGE 0x3
#define SPRITE_COLLISION_FLAG_NONE 0x0
#define SPRITE_COLLISION_FLAG_ON_TOP 0x1
#define SPRITE_COLLISION_FLAG_ON_BOTTOM 0x2
#define SPRITE_COLLISION_FLAG_ON_LEFT 0x4
#define SPRITE_COLLISION_FLAG_ON_RIGHT 0x8
#include "structs/sprite.h"
void SpriteUtilInitLocationText(void);
void SpriteUtilCheckStopSamusAgainstSolidSpriteLeft(u16 yPosition, u16 xPosition);

View File

@ -2,7 +2,7 @@
#define HIVE_AI_H
#include "types.h"
#include "sprite.h"
#include "structs/sprite.h"
void HiveSpawnParticle(void);
void HiveInit(void);

View File

@ -2,7 +2,7 @@
#define IMAGO_LARVA_AI_H
#include "types.h"
#include "sprite.h"
#include "structs/sprite.h"
#define IMAGO_LARVA_POSE_IDLE_INIT 0x8
#define IMAGO_LARVA_POSE_IDLE 0x9

View File

@ -2,7 +2,7 @@
#define PARASITE_AI_H
#include "types.h"
#include "sprite.h"
#include "structs/sprite.h"
#define PARASITE_POSE_IDLE_INIT 0x8
#define PARASITE_POSE_IDLE 0x9

View File

@ -1,5 +1,5 @@
#ifndef STRUCTS_H
#define STRUCTS_H
#ifndef STRUCT_H
#define STRUCT_H
#include "types.h"
@ -9,4 +9,4 @@ struct struct_08002a38 {
u8 unk_01e;
};
#endif /* STRUCTS_H */
#endif /* STRUCT_H */

18
include/structs/audio.h Normal file
View File

@ -0,0 +1,18 @@
#ifndef AUDIO_STRUCT_H
#define AUDIO_STRUCT_H
#include "types.h"
// Structs
struct MusicTrackInfo {
u16 currentRoomTrack;
u8 pauseScreenFlag;
u8 takingNormalTransition;
i8 unk;
};
extern u8 gStereoFlag;
extern struct MusicTrackInfo gMusicTrackInfo;
#endif

70
include/structs/bg_clip.h Normal file
View File

@ -0,0 +1,70 @@
#ifndef BG_CLIP_STRUCT_H
#define BG_CLIP_STRUCT_H
#include "types.h"
#include "structs/connection.h"
// Structs
struct BackgroundPointersAndDimensions {
struct {
u16* pDecomp;
u16 width;
u16 height;
} backgrounds[3];
u16* pClipDecomp;
u16 clipdataWidth;
u16 clipdataHeight;
};
struct BG2Movement {
i16 xOffset;
i16 yOffset;
};
struct LastTank {
u16 behavior;
u8 xPosition;
u8 yPosition;
};
struct ItemInfo {
u8 room;
i8 type;
u8 xPosition;
u8 yPosition;
};
struct TankCollectionData {
u16 behaviors[4];
u16 yPositions[3];
u16 xPositions[3];
};
// Globals
#define MAX_AMOUNT_OF_ITEMS_PER_AREA 64
extern struct ItemInfo gItemsCollected[MAX_AMOUNT_OF_AREAS][MAX_AMOUNT_OF_ITEMS_PER_AREA];
extern u8 gNeverReformBlocks[MAX_AMOUNT_OF_AREAS][512];
extern u8 gNumberOfNeverReformBlocks[MAX_AMOUNT_OF_AREAS];
extern u8 gNumberOfItemsCollected[MAX_AMOUNT_OF_AREAS];
extern struct LastTank gLastTankCollected;
extern struct BackgroundPointersAndDimensions gBGPointersAndDimensions;
extern struct BG2Movement gBG2Movement;
extern struct BG3Movement gBG3Movement;
extern struct BG0Movement gBG0Movement;
extern u16 gBG0XPosition;
extern u16 gBG0YPosition;
extern u16 gBG1XPosition;
extern u16 gBG1YPosition;
extern u16 gBG2XPosition;
extern u16 gBG2YPosition;
extern u16 gBG3XPosition;
extern u16 gBG3YPosition;
extern i8 gCollectingTank;
#endif

View File

@ -0,0 +1,43 @@
#ifndef CLIPDATA_STRUCT_H
#define CLIPDATA_STRUCT_H
#include "types.h"
// Structs
struct CurrentAffectingClip {
u16 movement;
u16 hazard;
};
struct CollisionData {
i32 clipdataType;
i32 subPixelX;
i32 subPixelY;
i32 actorType;
u16 tileX;
u16 tileY;
};
struct TilemapAndClipPointers {
u16* pTilemap;
u8* pClipCollisions;
u16* pClipBehaviors;
};
// Typedef
typedef u32 (*ClipFunc_T)(struct CollisionData*);
// Globals
extern ClipFunc_T gClipdataCodePointer;
extern u8 gCurrentClipdataAffectingAction;
extern struct CurrentAffectingClip gCurrentAffectingClipdata;
extern struct TilemapAndClipPointers gTilemapAndClipPointers;
extern u16 gEffectYPosition;
extern i16 gEffectYPositionOffset;
#endif

View File

@ -0,0 +1,102 @@
#ifndef CONNECTION_STRUCT_H
#define CONNECTION_STRUCT_H
#include "types.h"
// Structs
struct Door {
u8 type;
u8 sourceRoom;
u8 xStart;
u8 xEnd;
u8 yStart;
u8 yEnd;
u8 destinationDoor;
i8 xExit;
i8 yExit;
};
struct EventBasedConnection {
u8 sourceArea;
u8 sourceDoor;
u8 event;
u8 destinationDoor;
};
struct HatchLockEvent {
u8 room;
u8 event;
u8 isBefore;
u8 hatchesToLock1:1;
u8 hatchesToLock2:1;
u8 hatchesToLock3:1;
u8 hatchesToLock4:1;
u8 hatchesToLock5:1;
u8 hatchesToLock6:1;
u8 hatchesToLock7:1;
u8 hatchesToLock8:1;
u8 hatchesToLockPart2_1:1;
u8 hatchesToLockPart2_2:1;
u8 hatchesToLockPart2_3:1;
u8 hatchesToLockPart2_4:1;
u8 hatchesToLockPart2_5:1;
u8 hatchesToLockPart2_6:1;
u8 hatchesToLockPart2_7:1;
u8 hatchesToLockPart2_8:1;
};
struct HatchData {
/* 0 */
u8 exists:1;
u8 currentAnimationFrame:3;
u8 facingRight:1;
u8 padding:3;
/* 1 */
u8 opening:2;
u8 locked:2;
u8 flashingTimer:4;
/* 2 */
u8 hitTimer:4;
u8 hits:4;
/* 3 */
u8 type;
u8 animationDurationCounter;
u8 xPosition;
u8 yPosition;
u8 sourceDoor;
};
struct LastElevatorUsed {
u16 unused;
u8 route;
i8 direction;
};
struct HatchesState {
i8 unlocking;
i8 unk;
u16 hatchesLockedWithTimer;
u16 hatchesLockedWithEvent;
u16 unk2;
};
#define MAX_AMOUNT_OF_HATCHES 16
#define MAX_AMOUNT_OF_AREAS 8
#define MAX_AMOUNT_OF_HATCH_TYPES 8
#define MAX_AMOUNT_OF_EVENT_BASED_CONNECTIONS 41
extern u32 gHatchesOpened[MAX_AMOUNT_OF_AREAS][8];
extern u8 gCurrentArea;
extern u8 gAreaBeforeTransition;
extern u8 gCurrentRoom;
extern u8 gLastDoorUsed;
extern u8 gLastDoorProperties;
extern u8 gDisplayLocationText;
extern i8 gDoorUnlockTimer;
extern struct HatchesState gHatchesState;
extern struct HatchData gHatchData[MAX_AMOUNT_OF_HATCHES];
extern u8 gNumberOfValidHatchesInRoom;
#endif

22
include/structs/display.h Normal file
View File

@ -0,0 +1,22 @@
#ifndef DISPLAY_STRUCT_H
#define DISPLAY_STRUCT_H
#include "types.h"
struct IORegistersBackup {
u16 DISPCNT_NonGameplay;
u16 BLDCNT_NonGameplay;
u8 BLDALPHA_NonGameplay_EVA;
u8 BLDALPHA_NonGameplay_EVB;
u8 WININ_H_NonGameplay;
u8 WINOUT_L_NonGameplay;
u16 BG0CNT_WriteOnly;
u16 BG0CNT;
u16 BG1CNT;
u16 BG2CNT;
u16 BG3CNT;
};
extern struct IORegistersBackup gIORegistersBackup;
#endif

View File

@ -0,0 +1,26 @@
#ifndef GAME_STATE_STRUCT_H
#define GAME_STATE_STRUCT_H
#include "types.h"
extern u8 gDebugFlag;
extern u8 gDisablePause;
extern u8 gShipLandingFlag;
extern u16 gButtonInput;
extern u16 gPreviousButtonInput;
extern u16 gChangedInput;
extern i8 gIsLoadingFile;
extern i8 gPauseScreenFlag;
extern i8 gClearedEveryFrame;
extern u8 gFrameCounter8Bit;
extern u16 gFrameCounter16Bit;
extern u8 gDifficulty;
extern i8 gLanguage;
extern u8 gResetGame;
extern i16 gMainGameMode;
extern i16 gGameModeSub1;
extern i8 gGameModeSub2;
extern i8 gGameModeSub3;
#endif

35
include/structs/hud.h Normal file
View File

@ -0,0 +1,35 @@
#ifndef HUD_STRUCT_H
#define HUD_STRUCT_H
#include "types.h"
// Structs
struct HudDigits {
u8 ones;
u8 tens;
u8 hundreds;
u8 thousands;
};
// Globals
extern u8 gHideHud;
extern u8 gMissileHighlightStatus;
extern u8 gPowerBombHighlightStatus;
extern u8 gSuperMissileHighlightStatus;
extern struct HudDigits gEnergyDigits;
extern struct HudDigits gMaxEnergyDigits;
extern struct HudDigits gMissileDigits;
extern struct HudDigits gPowerBombDigits;
extern struct HudDigits gSuperMissileDigits;
extern u8 gEnergyRefillAnimation;
extern u8 gMissileRefillAnimation;
extern u8 gSuperMissileRefillAnimation;
extern u8 gPowerBombRefillAnimation;
extern u8 gAmmoDigitsGFX[64];
#endif

View File

@ -0,0 +1,19 @@
#ifndef IN_GAME_TIMER_STRUCT_H
#define IN_GAME_TIMER_STRUCT_H
#include "types.h"
#define MAX_AMOUNT_OF_IGT_AT_BOSSES 5
struct InGameTimer {
u8 hours;
u8 minutes;
u8 seconds;
u8 frames;
};
extern u8 gMaxInGameTimerFlag;
extern struct InGameTimer gInGameTimer;
extern struct InGameTimer gInGameTimerAtBosses[MAX_AMOUNT_OF_IGT_AT_BOSSES];
#endif

View File

@ -0,0 +1,39 @@
#ifndef PROJECTILE_STRUCT_H
#define PROJECTILE_STRUCT_H
#include "types.h"
// Structs
struct ProjectileData {
u8 status;
const struct FrameData* pOam;
u16 yPosition;
u16 xPosition;
u16 currentAnimationFrame;
u8 animationDurationCounter;
u8 type;
u8 direction;
u8 movementStage;
u8 drawDistanceOffset;
u8 timer;
i16 hitboxTopOffset;
i16 hitboxBottomOffset;
i16 hitboxLeftOffset;
i16 hitboxRightOffset;
};
// Globals
#define MAX_AMOUNT_OF_PROJECTILES 16
extern struct ProjectileData gProjectileData[MAX_AMOUNT_OF_PROJECTILES];
extern u16 gArmCannonY;
extern u16 gArmCannonX;
// Typedef
typedef void (*ProjFunc_T)(struct ProjectileData*);
#endif

170
include/structs/samus.h Normal file
View File

@ -0,0 +1,170 @@
#ifndef SAMUS_STRUCT_H
#define SAMUS_STRUCT_H
#include "types.h"
// Globals
#define MAX_AMOUNT_OF_SAMUS_POSES 67
extern struct SamusData gSamusData;
extern struct SamusData gSamusDataCopy;
extern struct WeaponInfo gSamusWeaponInfo;
extern struct SamusEcho gSamusEcho;
extern struct ScrewSpeedAnimation gScrewSpeedAnimation;
extern struct Equipment gEquipment;
extern struct HazardDamage gSamusHazardDamage;
extern struct EnvironmentalEffect gSamusEnvirnmentalEffects[5];
extern struct SamusPhysics gSamusPhysics;
extern u16 gPreviousXPosition;
extern u16 gPreviousYPosition;
extern u16 gPreventMovementTimer;
extern u16 gSamusPalette[16 * 2];
extern i16 gSamusDoorPositionOffset;
// Structs
struct Equipment {
u16 maxEnergy;
u16 maxMissiles;
u8 maxSuperMissiles;
u8 maxPowerBombs;
u16 currentEnergy;
u16 currentMissiles;
u8 currentSuperMissiles;
u8 currentPowerBombs;
u8 beamBombs;
u8 beamBombsActivation;
u8 suitMisc;
u8 suitMiscActivation;
u8 downloadedMapStatus;
u8 lowHealth;
u8 suitType;
u8 grabbedByMetroid;
};
struct WeaponInfo {
u8 diagonalAim;
u8 newProjectile;
u8 weaponHighlighted;
u8 missilesSeleced;
u8 cooldown;
u8 chargeCounter;
u8 beamReleasePaletteTimer;
};
struct SamusData {
u8 pose;
u8 standingStatus;
u8 armCannonDirection;
u8 turning;
u8 forcedMovement;
u8 speedboostingShinesparking;
u8 invincibilityTimer;
u8 walljumpTimer;
u8 shinesparkTimer;
u8 unmorphPaletteTimer;
u8 timer;
u16 lastWallTouchedMidAir;
u16 direction;
u16 elevatorDirection;
u16 xPosition;
u16 yPosition;
i16 xVelocity;
i16 yVelocity;
u16 currentSlope;
u8 animationDurationCounter;
u8 currentAnimationFrame;
};
struct SamusPhysics {
u16* pBodyOam;
u8* pShouldersGFX;
u16 shoulderGFXSize;
u8* pTorsoGFX;
u16 torsoGFXSize;
u8* pLegsGFX;
u16 legsGFXSize;
u8* pBodyLowerHalfGFX;
u16 bodyLowerHalfGFXSize;
u16 unk;
u16* pArmCannonOAM;
u8* pArmCannonGFXUpper;
u16 armCannonGFXUpperSize;
u8* pArmCannonGFXLower;
u16 armCannonGFXLowerSize;
u16* pScrewSpeedOAM;
u8* pScrewSpeedGFX;
u16 screwSpeedGFXSize;
u8* pScrewShinesparkGFX;
u16 screwShinesparkGFXSize;
u16 armCannonXPositionOffset;
u16 armCannonYPositionOffset;
u8 horizontalMovingDirection;
u8 verticalMovingDirection;
i16 hitboxLeftOffset;
i16 hitboxRightOffset;
i16 hitboxTopOffset;
u8 standingStatus;
u8 hitboxType; // TODO define
u8 touchingSideBlock;
u8 touchingTopBlock;
u8 unknown;
u8 slowedByLiquid;
u8 hasNewProjectile;
i16 xAcceleration;
i16 xVelocityCap;
i16 yAcceleration;
i16 positiveYVelocityCap;
i16 negativeYVelocityCap;
i16 midairXAcceleration;
i16 midairXVelocityCap;
i16 midairMorphedXVelocityCap;
i16 drawDistanceLeftOffset;
i16 drawDistanceTopOffset;
i16 drawDistanceRightOffset;
i16 drawDistanceBottomOffset;
};
struct ScrewSpeedAnimation {
u8 flag;
u8 animationDurationCounter;
u8 currentAnimationFrame;
u32 unknown;
};
struct HazardDamage {
u8 damageTimer;
// u8 undefined; // Needed for correct alignment
u16 knockbackTimer;
u8 paletteTimer;
};
struct EnvironmentalEffect {
u8 type;
u8 animationDurationCounter;
u8 currentAnimationFrame;
u8 breathingTimer;
u16 xPosition;
u16 yPosition;
struct OamFrame* pOamFrame;
};
struct SamusEcho {
u8 active;
u8 timer;
u8 position;
u8 distance;
u16 previous64XPositions[64];
u16 previous64YPositions[64];
u16 previousPositionCounter;
u8 unknown;
};
// Typedefs
typedef u8 (*SamusFunc_T)(struct SamusData*);
#endif

45
include/structs/scroll.h Normal file
View File

@ -0,0 +1,45 @@
#ifndef SCROLL_STRUCT_H
#define SCROLL_STRUCT_H
#include "types.h"
struct Scroll {
u8 within;
u16 xEnd;
u16 xStart;
u16 yStart;
u16 yEnd;
};
struct Camera {
u16 xPosition;
u16 yPosition;
i8 xVelocity;
i8 yVelocity;
};
struct LockScreen {
u8 lock;
u16 xPositionCenter;
u16 yPositionCenter;
};
struct Unk_3005714 {
i16 unk0;
i16 unk2;
i16 unk4;
i16 unk6;
};
extern u8 gDisableScrolling;
extern u16 gSlowScrollingTimer;
extern u8 gSkipDoorTransition;
extern struct Scroll gCurrentScrolls[2];
extern struct Camera gCamera;
extern struct LockScreen gLockScreen;
extern i8 gScreenYOffset;
extern i16 gScreenXOffset;
extern struct Unk_3005714 gUnk_3005714;
extern u8* gCurrentRoomScrollDataPointer;
#endif

117
include/structs/sprite.h Normal file
View File

@ -0,0 +1,117 @@
#ifndef SPRITE_STRUCT_H
#define SPRITE_STRUCT_H
#include "types.h"
// Structs
struct __attribute__((packed)) EnemyRoomData {
u8 yPosition;
u8 xPosition;
u8 spritesetSlot;
};
struct SubSpriteData {
const struct FrameData* pMultiOam;
u16 currentAnimationFrame;
u16 yPosition;
u16 xPosition;
u16 health;
u8 animationDurationCounter;
u8 workVariable1;
u8 workVariable2;
u8 workVariable3;
u8 workVariable4;
u8 workVariable5;
u8 workVariable6;
u8 workVariable7;
};
struct SpriteData {
u16 status;
u16 yPosition;
u16 xPosition;
u16 yPositionSpawn;
u16 xPositionSpawn;
i16 hitboxTopOffset;
i16 hitboxBottomOffset;
i16 hitboxLeftOffset;
i16 hitboxRightOffset;
u16 oamScaling;
u16 health;
u16 currentAnimationFrame;
const struct FrameData* pOam;
u8 animationDurationCounter;
u8 spriteID;
u8 roomSlot;
u8 spritesetGFXSlot;
u8 paletteRow;
u8 bgPriority;
u8 drawOrder;
u8 primarySpriteRAMSlot;
u8 pose;
u8 samusCollision;
u8 ignoreSamusCollisionTimer;
u8 drawDistanceTopOffset;
u8 drawDistanceBottomOffset;
u8 drawDistanceHorizontalOffset;
u8 oamRotation;
u8 invicibilityStunFlashTimer;
u8 timer;
u8 workVariable;
u8 workVariable2;
u8 arrayOffset;
u8 freezeTimer;
u8 standingOnSprite;
u8 properties;
u8 frozenPaletteRowOffset;
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;
};
// Globals
#define MAX_AMOUNT_OF_SPRITES 24
extern u16 gAlarmTimer;
extern struct SpriteData gSpriteData[MAX_AMOUNT_OF_SPRITES];
extern u8 gSpritesetSpritesID[15];
extern u8 gSpritesetGFXSlots[15];
extern struct SubSpriteData gSubSpriteData1;
extern struct SubSpriteData gSubSpriteData2;
extern u8 gParasiteRelated;
extern struct SpriteData gCurrentSprite;
extern u8 gPreviousVerticalCollisionCheck;
extern u8 gPreviousCollisionCheck;
extern u8 gIgnoreSamusAndSpriteCollision;
extern u8 gSpriteDrawOrder[MAX_AMOUNT_OF_SPRITES];
extern struct BossWork gBossWork;
extern u8 gSpriteRNG;
#endif

View File

@ -0,0 +1,8 @@
#ifndef VISUAL_EFFECTS_STRUCT_H
#define VISUAL_EFFECTS_STRUCT_H
#include "types.h"
extern i8 gDisableAnimatedPalette;
#endif

View File

@ -76,7 +76,7 @@ SECTIONS {
. = 0x00000114; gScreenShakeX = .;
. = 0x00000118; gCurrentScrolls = .;
. = 0x00000130; gCurrentPowerBomb = .;
. = 0x00000144; gScreenPositionAndVelocity = .;
. = 0x00000144; gCamera = .;
. = 0x00000150; gInGameTimer = .;
. = 0x00000184; gInGameTimerAtBosses = .;
. = 0x00000198; gLastElevatorUsed = .;

View File

@ -1,10 +1,11 @@
#include "funcs.h"
#include "game_modes.h"
#include "globals.h"
#include "init_game.h"
#include "softreset.h"
#include "syscalls.h"
#include "update_input.h"
#include "constants/game_state.h"
#include "structs/game_state.h"
void agbmain(void)
{
@ -230,7 +231,6 @@ void agbmain(void)
case GM_DEBUG_MENU:
for (;;) {
// TODO add debug code
/* EMPTY */
}
}

View File

@ -1,7 +1,13 @@
#include "bg_clip.h"
#include "globals.h"
#include "data/block_data.c"
#include "data/data.h"
#include "constants/connection.h"
#include "constants/clipdata.h"
#include "constants/game_state.h"
#include "constants/samus.h"
#include "constants/sprite.h"
#include "structs/bg_clip.h"
#include "structs/connection.h"
#include "structs/game_state.h"
void BGClipMotherBrainUpdateGlass(u8 bg, u16 value, u16 yPosition, u16 xPosition)
{
@ -97,13 +103,13 @@ u16 BGClipGetNewBLDALPHAValue(u16 clip)
u16 bldalpha;
u16 offset;
offset = clip - 0x44;
offset = behavior_to_bldalpha(clip);
if (offset < 0xB)
return bldalpha_values_for_clipdata[offset];
return 0;//bldalpha_values_for_clipdata[offset];
else
{
bldalpha = 0x0;
if (clip == 0x4F)
if (clip == CLIP_BEHAVIOR_BG0_TRIGGER_DEFAULT_TRANSPARENCY)
return 0xFFFF;
}
return bldalpha;

View File

@ -2,7 +2,12 @@
#include "clipdata.h"
#include "power_bomb_explosion.h"
#include "data/block_data.c"
#include "globals.h"
#include "clipdata.h" // ?
#include "constants/samus.h"
#include "constants/clipdata.h"
#include "structs/bg_clip.h"
#include "structs/clipdata.h"
#include "structs/game_state.h"
/**
* @brief 590b0 | 214 | Checks if soemthing should happen to a block depending on the CCAA

View File

@ -3,10 +3,9 @@
#include "gba.h"
#include "globals.h"
#include "io.h"
#include "music.h"
#include "structs/game_state.h"
void
CallbackCallVblank(void)
void CallbackCallVblank(void)
{
if (gVBlankCallback) {
gVBlankCallback();

View File

@ -1,5 +1,7 @@
#include "clipdata.h"
#include "globals.h"
#include "gba.h"
#include "constants/clipdata.h"
#include "structs/bg_clip.h"
/**
* @brief 57dcc | 2c | Transfers the clipdata code to RAM and sets the pointer to it

View File

@ -1,9 +1,14 @@
#include "connection.h"
#include "globals.h"
#include "bg_clip.h" // Required
#include "data/pointers.c"
#include "data/empty_datatypes.c"
#include "data/hatch_data.c"
#include "constants/connection.h"
#include "constants/game_state.h"
#include "structs/bg_clip.h"
#include "structs/display.h"
#include "structs/game_state.h"
#include "structs/connection.h"
/**
* @brief 5e760 | 198 | Updates the hatches

View File

@ -1,6 +1,6 @@
#include "display.h"
#include "globals.h"
#include "gba/memory.h"
#include "gba.h"
#include "structs/display.h"
void IOWriteRegisters(void)
{

View File

@ -1,6 +1,9 @@
#include "escape.h"
#include "event.h"
#include "globals.h"
#include "constants/event.h"
#include "constants/escape.h"
#include "constants/game_state.h"
#include "structs/game_state.h"
#include "structs/samus.h"
u8 EscapeDetermineTimer(void)
{

View File

@ -3,6 +3,7 @@
#include "minimap.h"
#include "escape.h" // Required
#include "data/hud_data.c"
#include "constants/particle.h"
#include "globals.h"
/**

View File

@ -1,5 +1,5 @@
#include "types.h"
#include "globals.h"
#include "structs/in_game_timer.h"
/**
* @brief 579b8 | 6c | Updates the in game timer

View File

@ -2,7 +2,7 @@
#include "callbacks.h"
#include "funcs.h"
#include "game_modes.h"
#include "gba.h"
#include "io.h"
#include "softreset.h"

View File

@ -1,9 +1,11 @@
#include "location_text.h"
#include "sprite.h"
#include "gba.h"
#include "data/data.h"
#include "data/sprites/area_banner.c"
#include "globals.h"
#include "constants/connection.h"
#include "constants/sprite.h"
#include "structs/connection.h"
#include "structs/sprite.h"
/**
* @brief 11ed8 | b8 | Gets the location text of the current room for brinstar

View File

@ -1,16 +1,13 @@
#include "projectile.h"
#include "sprite.h"
#include "clipdata.h"
#include "sprite_util.h"
#include "power_bomb_explosion.h"
#include "music.h"
#include "game_modes.h"
#include "hud.h"
#include "data/data.h"
#include "data/projectile_data.c"
#include "data/sprite_data.c"
#include "data/pointers.c"
#include "globals.h"
#include "constants/game_state.h"
#include "structs/game_state.h"
#include "structs/sprite.h"
void ProjectileSetBeamParticleEffect(void)
{

View File

@ -38,8 +38,8 @@ void RoomLoad(void)
if (gPauseScreenFlag == PAUSE_SCREEN_NONE && !gIsLoadingFile)
{
ScrollProcessGeneral();
gBG1YPosition = gScreenPositionAndVelocity.yPosition;
gBG1XPosition = gScreenPositionAndVelocity.xPosition;
gBG1YPosition = gCamera.yPosition;
gBG1XPosition = gCamera.xPosition;
ScrollBG3Related();
ScrollProcessGeneral();
}

View File

@ -10,8 +10,8 @@ void ScrollProcess(struct RawCoordsX* pCoords)
struct Scroll* pScroll;
ScrollUpdateCurrent(pCoords);
screen_x = gScreenPositionAndVelocity.xPosition;
screen_y = gScreenPositionAndVelocity.yPosition;
screen_x = gCamera.xPosition;
screen_y = gCamera.yPosition;
pScroll = gCurrentScrolls;
if (pScroll->within)
@ -252,7 +252,7 @@ void ScrollWithNoScrollsX(struct RawCoordsX* pCoords)
xOffset = gScreenXOffset + (clipPosition - 0x1E0);
}
gScreenPositionAndVelocity.xPosition = xOffset;
gCamera.xPosition = xOffset;
xOffset -= gBG1XPosition;
if (xOffset > 0x0)
@ -266,7 +266,7 @@ void ScrollWithNoScrollsX(struct RawCoordsX* pCoords)
xOffset = gUnk_3005714.unk0;
}
gScreenPositionAndVelocity.xVelocity = xOffset;
gCamera.xVelocity = xOffset;
gBG1XPosition += xOffset;
}

View File

@ -2,7 +2,7 @@
#include "callbacks.h"
#include "funcs.h"
#include "game_modes.h"
#include "gba.h"
#include "globals.h"
#include "init_helpers.h"

View File

@ -1,5 +1,5 @@
#include "sprite.h"
#include "escape.h"
#include "constants/particle.h"
#include "sprite_debris.h"
#include "sprite_util.h"
#include "syscalls.h"
@ -7,7 +7,8 @@
#include "data/pointers.c"
#include "data/sprite_data.c"
#include "data/data.h"
#include "globals.h"
#include "constants/game_state.h"
#include "structs/game_state.h"
/**
* cf00 | 42c | Main routine that updates all the sprites
@ -22,7 +23,7 @@ void SpriteUpdate(void)
pCurrent = &gCurrentSprite;
rngParam1 = gFrameCounter8Bit;
rngParam2 = (gFrameCounter16Bit >> 0x4); // Incorrect stack
rngParam2 = (gFrameCounter16Bit >> 0x4);
if (gGameModeSub1 == SUB_GAME_MODE_PLAYING)
{
@ -30,11 +31,11 @@ void SpriteUpdate(void)
if (!SpriteUtilCheckStopSpritesPose())
{
SpriteUtilSamusAndSpriteCollision();
for (count = 0x0; count < 0x18; count++)
for (count = 0x0; count < MAX_AMOUNT_OF_SPRITES; count++)
{
if (gSpriteData[count].status & SPRITE_STATUS_EXISTS)
{
dma_set(3, &gSpriteData[count], &gCurrentSprite, 0x8000001c); // Transfer sprite to current
dma_set(3, &gSpriteData[count], &gCurrentSprite, DMA_ENABLE << 16 | (sizeof(struct SpriteData) * 2)); // Transfer sprite to current
gSpriteRNG = sSpriteRandomNumberTable[(rngParam1 + count + rngParam2 + pCurrent->xPosition + pCurrent->yPosition) & 0x1F];
SpriteUtilUpdateStunTimer(pCurrent);
if (pCurrent->properties & SP_SECONDARY_SPRITE) // Call AI
@ -47,7 +48,7 @@ void SpriteUpdate(void)
SpriteUpdateAnimation(pCurrent);
SpriteCheckOnScreen(pCurrent);
}
dma_set(3, &gCurrentSprite, &gSpriteData[count], 0x8000001c); // Transfer current back to array
dma_set(3, &gCurrentSprite, &gSpriteData[count], DMA_ENABLE << 16 | (sizeof(struct SpriteData) * 2)); // Transfer current back to array
}
}
DecrementChozodiaAlarm();
@ -56,13 +57,13 @@ void SpriteUpdate(void)
}
else
{
for (count = 0x0; count < 0x18; count++)
for (count = 0x0; count < MAX_AMOUNT_OF_SPRITES; count++)
{
if (gSpriteData[count].status & SPRITE_STATUS_EXISTS)
{
if (gSpriteData[count].pose == 0x0 || gSpriteData[count].properties & SP_ALWAYS_ACTIVE)
{
dma_set(3, &gSpriteData[count], &gCurrentSprite, 0x8000001c); // Incorrect ldr
dma_set(3, &gSpriteData[count], &gCurrentSprite, DMA_ENABLE << 16 | (sizeof(struct SpriteData) * 2));
gSpriteRNG = sSpriteRandomNumberTable[(rngParam1 + count + rngParam2 + pCurrent->xPosition + pCurrent->yPosition) & 0x1F];
SpriteUtilUpdateStunTimer(pCurrent);
if (pCurrent->properties & SP_SECONDARY_SPRITE) // Call AI
@ -76,13 +77,13 @@ void SpriteUpdate(void)
SpriteUpdateAnimation(pCurrent);
SpriteCheckOnScreen(pCurrent);
}
dma_set(3, &gCurrentSprite, &gSpriteData[count], 0x8000001c);
dma_set(3, &gCurrentSprite, &gSpriteData[count], DMA_ENABLE << 16 | (sizeof(struct SpriteData) * 2));
}
else
{
dma_set(3, &gSpriteData[count], &gCurrentSprite, 0x8000001c);
dma_set(3, &gSpriteData[count], &gCurrentSprite, DMA_ENABLE << 16 | (sizeof(struct SpriteData) * 2));
SpriteCheckOnScreen(pCurrent);
dma_set(3, &gCurrentSprite, &gSpriteData[count], 0x8000001c);
dma_set(3, &gCurrentSprite, &gSpriteData[count], DMA_ENABLE << 16 | (sizeof(struct SpriteData) * 2));
}
}
}
@ -91,11 +92,11 @@ void SpriteUpdate(void)
}
else if (gGameModeSub1 == 0x6)
{
for (count = 0x0; count < 0x18; count++)
for (count = 0x0; count < MAX_AMOUNT_OF_SPRITES; count++)
{
if (gSpriteData[count].status & SPRITE_STATUS_EXISTS)
{
dma_set(3, &gSpriteData[count], &gCurrentSprite, 0x8000001c);
dma_set(3, &gSpriteData[count], &gCurrentSprite, DMA_ENABLE << 16 | (sizeof(struct SpriteData) * 2));
gSpriteRNG = sSpriteRandomNumberTable[(rngParam1 + count + rngParam2 + pCurrent->xPosition + pCurrent->yPosition) & 0x1F];
SpriteUtilUpdateStunTimer(pCurrent);
if (pCurrent->properties & SP_SECONDARY_SPRITE)
@ -109,7 +110,7 @@ void SpriteUpdate(void)
SpriteUpdateAnimation(pCurrent);
SpriteCheckOnScreen(pCurrent);
}
dma_set(3, &gCurrentSprite, &gSpriteData[count], 0x8000001c);
dma_set(3, &gCurrentSprite, &gSpriteData[count], DMA_ENABLE << 16 | (sizeof(struct SpriteData) * 2));
}
}
DecrementChozodiaAlarm();
@ -118,12 +119,11 @@ void SpriteUpdate(void)
}
else
{
count = 0x0;
for (count = 0x0; count < 0x18; count++)
for (count = 0x0; count < MAX_AMOUNT_OF_SPRITES; count++)
{
if (gSpriteData[count].status & SPRITE_STATUS_EXISTS)
{
dma_set(3, &gSpriteData[count], &gCurrentSprite, 0x8000001c);
dma_set(3, &gSpriteData[count], &gCurrentSprite, DMA_ENABLE << 16 | (sizeof(struct SpriteData) * 2));
gSpriteRNG = sSpriteRandomNumberTable[(rngParam1 + count + rngParam2 + pCurrent->xPosition + pCurrent->yPosition) & 0x1F];
if (pCurrent->pose == 0x0)
@ -135,7 +135,7 @@ void SpriteUpdate(void)
}
if (pCurrent->status & SPRITE_STATUS_EXISTS)
SpriteCheckOnScreen(pCurrent);
dma_set(3, &gCurrentSprite, &gSpriteData[count], 0x8000001c);
dma_set(3, &gCurrentSprite, &gSpriteData[count], DMA_ENABLE << 16 | (sizeof(struct SpriteData) * 2));
}
}
}
@ -144,7 +144,7 @@ void SpriteUpdate(void)
/**
* d32c | 40 | Updates the animation related info of a sprite
*
* @param pSprite Sprite Data Pointer to the concerned sprite
* @param pSprite Sprite Data Pointer
*/
void SpriteUpdateAnimation(struct SpriteData* pSprite)
{
@ -171,57 +171,7 @@ void SpriteDrawAll_2(void)
void SpriteDrawAll(void)
{
/*struct SpriteData* pSprite1;
struct SpriteData* pSprite2;
u16 status_flag;
u16 status_check;
u8* drawOrder;
u8* g_drawOrder;
u32 ramSlot;
int i;
u32 unk;
i32 unk2;
u8 zero;
status_flag = SPRITE_STATUS_EXISTS | SPRITE_STATUS_ONSCREEN | SPRITE_STATUS_NOT_DRAWN | SPRITE_STATUS_UNKNOWN;
status_check = SPRITE_STATUS_EXISTS | SPRITE_STATUS_ONSCREEN;
SpriteDebrisDrawAll();
pSprite1 = gSpriteData;
zero = 0x0;
g_drawOrder = gSpriteDrawOrder;
drawOrder = &gSpriteData[0].drawOrder;
//ramSlot = 0x17;
for (i = 0x17; i >= 0x0; i--)
{
if ((pSprite1->status & status_flag) == status_check && *drawOrder < 0x9)
*g_drawOrder = *drawOrder;
else
*g_drawOrder = zero;
g_drawOrder += 0x1;
drawOrder += 0x38;
pSprite1++;
}
unk = 0x1;
do
{
ramSlot = 0x0;
pSprite2 = gSpriteData;
unk2 = unk + 0x1;
while (pSprite2 < gSpriteData + MAX_AMOUNT_OF_SPRITES)
{
if (gSpriteDrawOrder[ramSlot] == unk)
{
SpriteDraw(pSprite2, ramSlot);
}
ramSlot++;
pSprite2++;
}
unk = unk2;
} while (unk2 < 0x9);*/
}
void SpriteDrawAll_3(void)
@ -236,53 +186,7 @@ void SpriteDraw(struct SpriteData* pSprite, u32 slot)
void SpriteCheckOnScreen(struct SpriteData* pSprite)
{
// /!\ Maths hell wtf
/*u16 bg_y;
u16 bg_x;
u16 spriteY;
u16 spriteX;
u16 yOffset;
u16 xOffset;
u16 bg_x_offset;
u16 bg_y_offset;
u16 screen_top;
u16 screen_bottom;
u16 screen_right;
u16 screen_left;
if (!(pSprite->properties & SP_ABSOLUTE_POSITION))
{
bg_y = gBG1YPosition;
bg_x = gBG1XPosition;
spriteY = pSprite->yPosition;
spriteX = pSprite->xPosition;
yOffset = spriteY + 0x200;
xOffset = spriteX + 0x200;
screen_bottom = bg_y - (pSprite->drawDistanceBottomOffset * 0x4) + 0x200;
screen_top = bg_y + 0x200 + (pSprite->drawDistanceTopOffset * 0x4 + 0x280);
screen_left = bg_x - (pSprite->drawDistanceHorizontalOffset * 0x4) + 0x200;
screen_right = bg_x + 0x200;
screen_right += (pSprite->drawDistanceHorizontalOffset * 0x4 + 0x3C0);
if (screen_left < xOffset && xOffset < screen_right && screen_bottom < yOffset && yOffset < screen_top)
pSprite->status |= SPRITE_STATUS_ONSCREEN;
else
{
pSprite->status &= ~SPRITE_STATUS_ONSCREEN;
if (pSprite->properties & SP_KILL_OFF_SCREEN)
{
xOffset = spriteX + 0x280;
yOffset = spriteY + 0x280;
screen_left = bg_x + 0x40;
screen_right = bg_x + 0x880;
screen_bottom = bg_y + 0x40;
screen_top = bg_y + 0x740;
if (screen_left >= xOffset || xOffset >= screen_right || yOffset < screen_bottom || screen_top < yOffset)
pSprite->status = 0x0;
}
}
}*/
}
void SpriteLoadAllData(void)
@ -341,24 +245,7 @@ void SpriteClearData(void)
void SpriteLoadRoomSprites(void)
{
// Most likely a fake match, need to do this function again
u8 roomSlot;
u8 y_pos;
u8 x_pos;
roomSlot = 0x0;
y_pos = (gCurrentRoomEntry.pEnemyRoomData)->yPosition;
if (y_pos == 0xFF) return;
while (1)
{
x_pos = gCurrentRoomEntry.pEnemyRoomData[roomSlot].xPosition;
SpriteInitPrimary(gCurrentRoomEntry.pEnemyRoomData[roomSlot].spritesetSlot, y_pos, x_pos, roomSlot);
roomSlot++;
if (roomSlot > 0x17) return;
y_pos = gCurrentRoomEntry.pEnemyRoomData[roomSlot].yPosition;
if (y_pos == 0xFF) return;
}
// https://decomp.me/scratch/N5TjC
}
/**
@ -434,14 +321,13 @@ void SpriteInitPrimary(u8 spritesetSlot, u16 yPosition, u16 xPosition, u8 roomSl
*/
u8 SpriteSpawnSecondary(u8 spriteID, u8 roomSlot, u8 gfxSlot, u8 ramSlot, u16 yPosition, u16 xPosition, u16 statusToAdd)
{
u8 new_ramSlot;
u8 newSlot;
struct SpriteData* pSprite;
u16 status;
new_ramSlot = 0x0;
pSprite = gSpriteData;
newSlot = 0x0;
while (pSprite < gSpriteData + MAX_AMOUNT_OF_SPRITES)
for (pSprite = gSpriteData; pSprite < gSpriteData + MAX_AMOUNT_OF_SPRITES; pSprite++)
{
status = pSprite->status & SPRITE_STATUS_EXISTS;
if (status == 0x0)
@ -466,11 +352,10 @@ u8 SpriteSpawnSecondary(u8 spriteID, u8 roomSlot, u8 gfxSlot, u8 ramSlot, u16 yP
pSprite->freezeTimer = 0x0;
pSprite->standingOnSprite = FALSE;
return new_ramSlot;
return newSlot;
}
new_ramSlot += 0x1;
pSprite += 0x1;
newSlot++;
}
return 0xFF;
@ -490,14 +375,13 @@ u8 SpriteSpawnSecondary(u8 spriteID, u8 roomSlot, u8 gfxSlot, u8 ramSlot, u16 yP
*/
u8 SpriteSpawnPrimary(u8 spriteID, u8 roomSlot, u8 gfxSlot, u16 yPosition, u16 xPosition, u16 statusToAdd)
{
u8 new_ramSlot;
u8 newSlot;
struct SpriteData* pSprite;
u16 status;
new_ramSlot = 0x0;
pSprite = gSpriteData;
newSlot = 0x0;
while (pSprite < gSpriteData + MAX_AMOUNT_OF_SPRITES)
for (pSprite = gSpriteData; pSprite < gSpriteData + MAX_AMOUNT_OF_SPRITES; pSprite++)
{
status = pSprite->status & SPRITE_STATUS_EXISTS;
if (status == 0x0)
@ -518,15 +402,14 @@ u8 SpriteSpawnPrimary(u8 spriteID, u8 roomSlot, u8 gfxSlot, u16 yPosition, u16 x
pSprite->frozenPaletteRowOffset = 0x0;
pSprite->absolutePaletteRow = 0x0;
pSprite->ignoreSamusCollisionTimer = 0x1;
pSprite->primarySpriteRAMSlot = new_ramSlot;
pSprite->primarySpriteRAMSlot = newSlot;
pSprite->freezeTimer = 0x0;
pSprite->standingOnSprite = FALSE;
return new_ramSlot;
return newSlot;
}
new_ramSlot += 0x1;
pSprite += 0x1;
newSlot++;
}
return 0xFF;
@ -547,14 +430,13 @@ u8 SpriteSpawnPrimary(u8 spriteID, u8 roomSlot, u8 gfxSlot, u16 yPosition, u16 x
*/
u8 SpriteSpawnDropFollowers(u8 spriteID, u8 roomSlot, u8 gfxSlot, u8 ramSlot, u16 yPosition, u16 xPosition, u16 statusToAdd)
{
u8 new_ramSlot;
u8 newSlot;
struct SpriteData* pSprite;
u16 status;
new_ramSlot = 0x0;
pSprite = gSpriteData;
newSlot = 0x0;
while (pSprite < gSpriteData + MAX_AMOUNT_OF_SPRITES)
for (pSprite = gSpriteData; pSprite < gSpriteData + MAX_AMOUNT_OF_SPRITES; pSprite++)
{
status = pSprite->status & SPRITE_STATUS_EXISTS;
if (status == 0x0)
@ -579,11 +461,10 @@ u8 SpriteSpawnDropFollowers(u8 spriteID, u8 roomSlot, u8 gfxSlot, u8 ramSlot, u1
pSprite->freezeTimer = 0x0;
pSprite->standingOnSprite = FALSE;
return new_ramSlot;
return newSlot;
}
new_ramSlot++;
pSprite++;
newSlot++;
}
return 0xFF;

View File

@ -1,7 +1,7 @@
#include "sprite_debris.h"
#include "data/particle_data.c"
#include "data/sprite_data.c"
#include "game_modes.h"
#include "data/data.h"
#include "globals.h"

View File

@ -1,6 +1,6 @@
#include "sprite_util.h"
#include "sprite_debris.h"
#include "particle.h"
#include "constants/particle.h"
#include "samus.h"
#include "location_text.h"
#include "clipdata.h"

View File

@ -3,6 +3,10 @@
#include "data/sprites/acid_worm.c"
#include "data/sprite_data.c"
#include "data/generic_data.c"
#include "constants/particle.h"
#include "constants/sprite.h"
#include "constants/event.h"
#include "structs/sprite.h"
#include "globals.h"
/**

View File

@ -1,6 +1,8 @@
#include "sprites_AI/area_banner.h"
#include "data/data.h"
#include "data/sprites/area_banner.c"
#include "constants/sprite.h"
#include "structs/sprite.h"
#include "globals.h"
/**

View File

@ -2,6 +2,8 @@
#include "data/pointers.c"
#include "data/data.h"
#include "data/sprites/atomic.c"
#include "constants/sprite.h"
#include "structs/sprite.h"
#include "data/sprite_data.c"
#include "globals.h"

View File

@ -3,6 +3,10 @@
#include "data/sprites/baristute.c"
#include "data/sprite_data.c"
#include "data/generic_data.c"
#include "constants/sprite.h"
#include "constants/particle.h"
#include "constants/event.h"
#include "structs/sprite.h"
#include "globals.h"
/**

View File

@ -3,7 +3,12 @@
#include "data/data.h"
#include "data/sprite_data.c"
#include "data/sprites/space_pirate.c"
#include "globals.h"
#include "constants/particle.h"
#include "constants/samus.h"
#include "constants/projectile.h"
#include "constants/sprite.h"
#include "structs/sprite.h"
#include "structs/projectile.h"
/**
* @brief 2cb68 | 268 | Handles black space pirate/projectile collision

View File

@ -1,7 +1,20 @@
#include "sprites_AI/boss_statues.h"
#include "data/data.h"
#include "data/sprites/boss_statues.c"
#include "globals.h"
#include "constants/clipdata.h"
#include "constants/event.h"
#include "constants/game_state.h"
#include "constants/sprite.h"
#include "constants/sprite_util.h"
#include "constants/projectile.h"
#include "structs/bg_clip.h"
#include "structs/connection.h"
#include "structs/clipdata.h"
#include "structs/display.h"
#include "structs/scroll.h"
#include "structs/sprite.h"
#include "structs/samus.h"
#include "structs/projectile.h"
#include "structs/game_state.h"
/**
* @brief 49184 | 80 | Changes the clipdata of a 6 blocks vertical lign

View File

@ -1,8 +1,11 @@
#include "sprites_AI/charge_beam.h"
#include "sprites_AI/item_banner.h"
#include "data/sprites/charge_beam.c"
#include "globals.h"
#include "event.h"
#include "constants/sprite.h"
#include "constants/event.h"
#include "constants/samus.h"
#include "structs/sprite.h"
#include "structs/samus.h"
/**
* @brief 13498 | a4 | Initializes the charge beam sprite

View File

@ -2,9 +2,11 @@
#include "sprites_AI/item_banner.h"
#include "sprites_AI/chozo_statue.h"
#include "sprites_AI/unknown_item_chozo_statue.h"
#include "globals.h"
#include "data/sprites/chozo_statue.c"
#include "data/sprites/unknown_item_chozo_statue.c"
#include "constants/sprite.h"
#include "structs/sprite.h"
#include "structs/samus.h"
/**
* 162b0 | 94 | Spawns an item banner depending on the chozo statue sprite ID

View File

@ -2,8 +2,18 @@
#include "sprites_AI/unknown_item_chozo_statue.h"
#include "data/pointers.c"
#include "data/sprites/chozo_statue.c"
#include "data/data.h"
#include "globals.h"
#include "constants/audio.h"
#include "constants/clipdata.h"
#include "constants/game_state.h"
#include "constants/sprite.h"
#include "constants/event.h"
#include "constants/samus.h"
#include "structs/audio.h"
#include "structs/game_state.h"
#include "structs/hud.h"
#include "structs/sprite.h"
#include "structs/samus.h"
#include "structs/scroll.h"
/**
* @brief 13850 | 88 | Synchronize the sub sprites of a chozo statue

View File

@ -1,6 +1,7 @@
#include "sprites_AI/chozo_statue_movement.h"
#include "sprite.h"
#include "structs/sprite.h"
#include "constants/sprite.h"
/**
* @brief 125e8 | 160 | Spawns a new chozo statue movement secondary sprite

View File

@ -1,9 +1,9 @@
#include "sprites_AI/crocomire.h"
#include "data/data.h"
#include "data/pointers.c"
#include "data/sprites/crocomire.c"
#include "data/sprite_data.c"
#include "globals.h"
#include "constants/sprite.h"
#include "structs/sprite.h"
/**
* @brief 43d88 | 68 | Synchronize the sub sprites of Crocomire

View File

@ -1,7 +1,13 @@
#include "sprites_AI/deorem.h"
#include "data/data.h"
#include "data/sprite_data.c"
#include "globals.h"
#include "constants/game_state.h"
#include "constants/particle.h"
#include "constants/sprite.h"
#include "constants/clipdata.h"
#include "constants/sprite_util.h"
#include "structs/game_state.h"
#include "structs/sprite.h"
void DeoremChangeLeftCCAA(u8 caa)
{
@ -81,9 +87,9 @@ void DeoremSpawnChargeBeam(u16 yPosition, u16 xPosition)
*/
void DeoremSetEyeOpeningTimer(void)
{
if (gDifficulty == 0x0)
if (gDifficulty == DIFF_EASY)
gCurrentSprite.timer = 0x78; // Easy
else if (gDifficulty == 0x2)
else if (gDifficulty == DIFF_HARD)
gCurrentSprite.timer = 0x28; // Hard
else
gCurrentSprite.timer = 0x50; // Normal

View File

@ -2,8 +2,14 @@
#include "data/data.h"
#include "data/sprites/dessgeega.c"
#include "data/sprite_data.c"
#include "data/sprite_data.c"
#include "globals.h"
#include "constants/clipdata.h"
#include "constants/particle.h"
#include "constants/sprite.h"
#include "constants/sprite_util.h"
#include "constants/event.h"
#include "structs/clipdata.h"
#include "structs/connection.h"
#include "structs/sprite.h"
/**
* @brief 23b4c | 20 | Checks if samus is near the dessgeega on the sides in a 5 block range

View File

@ -2,7 +2,12 @@
#include "data/data.h"
#include "data/sprites/dragon.c"
#include "data/sprite_data.c"
#include "globals.h"
#include "constants/clipdata.h"
#include "constants/particle.h"
#include "constants/sprite.h"
#include "constants/sprite_util.h"
#include "structs/display.h"
#include "structs/sprite.h"
/**
* @brief 20564 | 50 | Handles the Y movement of a dragon

View File

@ -1,6 +1,9 @@
#include "sprites_AI/elevator_pad.h"
#include "globals.h"
#include "data/sprites/elevator_pad.c"
#include "constants/sprite.h"
#include "constants/samus.h"
#include "structs/sprite.h"
#include "structs/samus.h"
/**
* @brief 2872c | b8 | Elevator pad AI

View File

@ -1,7 +1,12 @@
#include "sprites_AI/elevator_statue.h"
#include "data/data.h"
#include "data/sprites/elevator_statue.c"
#include "globals.h"
#include "constants/clipdata.h"
#include "constants/sprite.h"
#include "constants/event.h"
#include "constants/samus.h"
#include "structs/sprite.h"
#include "structs/samus.h"
#include "structs/clipdata.h"
/**
* @brief 47ebc | 50 | Updates the clipdata of the statue debris on the ground

View File

@ -1,6 +1,9 @@
#include "sprites_AI/enemy_drop.h"
#include "data/sprites/enemy_drop.c"
#include "globals.h"
#include "constants/sprite.h"
#include "structs/display.h"
#include "structs/sprite.h"
#include "structs/samus.h"
/**
* @brief 12d14 | 17a | Initializes an enemy drop sprite

View File

@ -1,7 +1,11 @@
#include "sprites_AI/escape_gate.h"
#include "data/sprites/escape_gate.c"
#include "data/data.h"
#include "globals.h"
#include "constants/clipdata.h"
#include "constants/sprite.h"
#include "constants/sprite_util.h"
#include "structs/sprite.h"
#include "structs/clipdata.h"
/**
* @brief 4e910 | b0 | Updates the hitbox of the escape gate
@ -111,7 +115,7 @@ void EscapeGate(void)
break;
case ESCAPE_GATE_POSE_CHECK_OPEN:
if (spriteID != PSPRITE_ESCAPE_GATE1 || SpriteUtilCheckSamusNearSpriteLeftRight(0x40, 0x180) == NSLR_LEFT)
if (spriteID != PSPRITE_ESCAPE_GATE1 || SpriteUtilCheckSamusNearSpriteLeftRight(BLOCK_SIZE, BLOCK_SIZE * 6) == NSLR_LEFT)
{
// Open gate if samus near
gCurrentSprite.pOam = sEscapeGateOAM_Opening;

View File

@ -1,7 +1,9 @@
#include "gba.h"
#include "sprites_AI/escape_ship.h"
#include "data/data.h"
#include "data/sprites/escape_ship.c"
#include "globals.h"
#include "constants/particle.h"
#include "constants/sprite.h"
#include "structs/sprite.h"
/**
* @brief 4ac00 | 94 | Updates the palette of the escape ship

View File

@ -3,7 +3,10 @@
#include "data/data.h"
#include "data/sprite_data.c"
#include "data/sprites/space_pirate.c"
#include "globals.h"
#include "constants/sprite.h"
#include "constants/samus.h"
#include "structs/game_state.h"
#include "structs/sprite.h"
/**
* @brief 2dc78 | 60 | Initializes an escape ship space pirate sprite

View File

@ -1,9 +1,10 @@
#include "sprites_AI/explosion_zebes_escape.h"
#include "data/sprites/enemy_drop.c"
#include "sprite.h"
#include "bg_clip.h"
#include "samus.h"
#include "constants/particle.h"
#include "constants/sprite.h"
#include "structs/bg_clip.h"
#include "structs/sprite.h"
#include "structs/samus.h"
void ExplosionZebesEscape(void)
{

View File

@ -2,7 +2,11 @@
#include "data/data.h"
#include "screen_shake.h"
#include "data/sprites/falling_chozo_pillar.c"
#include "globals.h"
#include "constants/particle.h"
#include "constants/sprite.h"
#include "structs/display.h"
#include "structs/game_state.h"
#include "structs/sprite.h"
/**
* @brief 4b884 | 218 | Falling chozo pillar AI

View File

@ -3,7 +3,13 @@
#include "data/sprites/gadora.c"
#include "data/sprites/enemy_drop.c"
#include "data/sprite_data.c"
#include "globals.h"
#include "constants/clipdata.h"
#include "constants/particle.h"
#include "constants/sprite.h"
#include "constants/sprite_util.h"
#include "constants/event.h"
#include "structs/display.h"
#include "structs/sprite.h"
/**
* @brief 49eb8 | 134 | Initializes a gadora sprite

View File

@ -1,8 +1,11 @@
#include "sprites_AI/gamet.h"
#include "data/data.h"
#include "data/sprites/gamet.c"
#include "data/sprite_data.c"
#include "globals.h"
#include "constants/particle.h"
#include "constants/sprite.h"
#include "structs/sprite.h"
#include "constants/sprite_util.h"
#include "structs/samus.h"
/**
* @brief 2e610 | 60 | Initializes a gamet sprite

View File

@ -1,8 +1,11 @@
#include "sprites_AI/geega.h"
#include "data/data.h"
#include "data/sprites/geega.c"
#include "data/sprite_data.c"
#include "globals.h"
#include "constants/particle.h"
#include "constants/sprite.h"
#include "structs/sprite.h"
#include "constants/sprite_util.h"
#include "structs/samus.h"
/**
* @brief 40230 | 60 | Initializes a geega sprite

View File

@ -1,6 +1,5 @@
#include "sprites_AI/gekitai_machine.h"
#include "data/data.h"
#include "globals.h"
#include "structs/sprite.h"
/**
* @brief 3897c | c | Gekitai machine AI

View File

@ -1,7 +1,11 @@
#include "sprites_AI/geron.h"
#include "data/data.h"
#include "sprites_AI/parasite.h"
#include "data/sprites/geron.c"
#include "globals.h"
#include "constants/sprite.h"
#include "constants/event.h"
#include "constants/clipdata.h"
#include "structs/sprite.h"
#include "structs/clipdata.h"
/**
* @brief 448e0 | 344 | Geron AI

View File

@ -1,7 +1,10 @@
#include "sprites_AI/geron_norfair.h"
#include "data/data.h"
#include "data/sprites/geron_norfair.c"
#include "globals.h"
#include "constants/sprite.h"
#include "constants/event.h"
#include "constants/clipdata.h"
#include "structs/sprite.h"
#include "structs/clipdata.h"
/**
* 40178 | b8 | Geron Norfair AI

View File

@ -1,8 +1,12 @@
#include "sprites_AI/geruta.h"
#include "data/data.h"
#include "data/sprites/geruta.c"
#include "data/sprite_data.c"
#include "globals.h"
#include "constants/particle.h"
#include "constants/clipdata.h"
#include "constants/sprite.h"
#include "constants/sprite_util.h"
#include "structs/sprite.h"
#include "structs/samus.h"
/**
* @brief 1ea68 | b0 | Handles the Y movement of a geruta

View File

@ -1,8 +1,13 @@
#include "sprites_AI/glass_tube.h"
#include "power_bomb_explosion.h"
#include "data/sprites/glass_tube.c"
#include "data/data.h"
#include "globals.h"
#include "constants/particle.h"
#include "constants/sprite.h"
#include "constants/clipdata.h"
#include "constants/event.h"
#include "structs/sprite.h"
#include "structs/samus.h"
#include "structs/clipdata.h"
/**
* @brief 4627c | 160 | Removes the clipdata for the glass tube

View File

@ -1,8 +1,17 @@
#include "gba.h"
#include "sprites_AI/gunship.h"
#include "hud.h"
#include "data/data.h"
#include "sprites_AI/item_banner.h"
#include "data/sprites/gunship.c"
#include "globals.h"
#include "constants/sprite.h"
#include "constants/sprite_util.h"
#include "constants/event.h"
#include "constants/samus.h"
#include "structs/connection.h"
#include "structs/display.h"
#include "structs/game_state.h"
#include "structs/hud.h"
#include "structs/sprite.h"
#include "structs/samus.h"
/**
* @brief 44c24 | 84 | Updates the flames palette

View File

@ -1,8 +1,14 @@
#include "sprites_AI/hive.h"
#include "data/data.h"
#include "data/sprites/hive.c"
#include "data/sprite_data.c"
#include "globals.h"
#include "constants/particle.h"
#include "constants/sprite.h"
#include "constants/event.h"
#include "constants/sprite_util.h"
#include "structs/bg_clip.h"
#include "structs/display.h"
#include "structs/sprite.h"
#include "structs/samus.h"
/**
* @brief 24a10 | 2c | Spawns 2 particle effects
@ -838,7 +844,7 @@ void MellowSwarm(void)
gCurrentSprite.currentAnimationFrame = 0x0;
gCurrentSprite.animationDurationCounter = 0x0;
gCurrentSprite.pose = 0x9;
if (0x78 < (gSamusData.xPosition >> 0x2) -( gBG1XPosition >> 0x2))
if (0x78 < (gSamusData.xPosition >> 0x2) -(gBG1XPosition >> 0x2))
gCurrentSprite.status |= SPRITE_STATUS_XFLIP;
gCurrentSprite.yPositionSpawn = 0xF0;

View File

@ -1,8 +1,12 @@
#include "sprites_AI/holtz.h"
#include "data/data.h"
#include "data/sprites/holtz.c"
#include "data/sprite_data.c"
#include "globals.h"
#include "constants/particle.h"
#include "constants/clipdata.h"
#include "constants/sprite.h"
#include "constants/sprite_util.h"
#include "structs/sprite.h"
#include "structs/samus.h"
/**
* @brief 3830c | cc | Handles the Y movement of a holtz
@ -168,7 +172,7 @@ void HoltzIdle(void)
gCurrentSprite.yPosition += movement;
// Detect samus
if ((i32)(gSamusData.yPosition - 0x48) >= gCurrentSprite.yPosition)
if ((gSamusData.yPosition - 0x48) >= gCurrentSprite.yPosition)
{
nslr = SpriteUtilCheckSamusNearSpriteLeftRight(BLOCK_SIZE * 8, BLOCK_SIZE * 5);
if (nslr == NSLR_RIGHT || nslr == NSLR_LEFT)

Some files were not shown because too many files have changed in this diff Show More