remove game/types, fix sa2 compilation, clean up sa1 includes

This commit is contained in:
Oliver Bell committed 2026-04-03 12:55:55 +01:00
1 parent 546216e316
commit a9122877c7
374 files changed
+1223 -1387

No files matched your search

+36 -34
View File
@@ -1,40 +1,42 @@
#ifndef GUARD_CONSTANTS_ENEMIES_H
#define GUARD_CONSTANTS_ENEMIES_H
#if (GAME == GAME_SA1)
#define ENEMY__KIKI 0
#define ENEMY__BUZZER 1
#define ENEMY__GAMIGAMI 2
#define ENEMY__RHINOTANK 3
#define ENEMY__KEROKERO 4
#define ENEMY__SENBON 5
#define ENEMY__TENTOU 6
#define ENEMY__FIREBALL 7
#define ENEMY__HANABII 8
#define ENEMY__SLOT 9
#define ENEMY__PIERROT 10
#define ENEMY__LEON 11
#define ENEMY__MIRROR 12
#define ENEMY__WAMU 13
#define ENEMY__OCT 14
#define ENEMY__MOLE 15
#define ENEMY__YUKIMARU 16
#define ENEMY__YUKIMARU_SIDEWAYS 17
#define ENEMY__DRISAME 18
#define ENEMY__KURAA 19
#define ENEMY__PEN 20
#define ENEMY__BOSS_1_INTRO 21
#define ENEMY__EGG_HAMMER_TANK 22
#define ENEMY__EGG_PRESS 23
#define ENEMY__EGG_BALL 24
#define ENEMY__EGG_SPIDER 25
#define ENEMY__MECHA_KNUCKLES 26
#define ENEMY__EGG_SNAKE 27
#define ENEMY__EGG_WRECKER 28
#define ENEMY__EGG_DRILLSTER 29
#define ENEMY__EGG_X 30
#define ENEMY__SUPER_EGG_ROBOT 31
#elif (GAME == GAME_SA2)
// #if (GAME == GAME_SA1)
// #define ENEMY__KIKI 0
// #define ENEMY__BUZZER 1
// #define ENEMY__GAMIGAMI 2
// #define ENEMY__RHINOTANK 3
// #define ENEMY__KEROKERO 4
// #define ENEMY__SENBON 5
// #define ENEMY__TENTOU 6
// #define ENEMY__FIREBALL 7
// #define ENEMY__HANABII 8
// #define ENEMY__SLOT 9
// #define ENEMY__PIERROT 10
// #define ENEMY__LEON 11
// #define ENEMY__MIRROR 12
// #define ENEMY__WAMU 13
// #define ENEMY__OCT 14
// #define ENEMY__MOLE 15
// #define ENEMY__YUKIMARU 16
// #define ENEMY__YUKIMARU_SIDEWAYS 17
// #define ENEMY__DRISAME 18
// #define ENEMY__KURAA 19
// #define ENEMY__PEN 20
// #define ENEMY__BOSS_1_INTRO 21
// #define ENEMY__EGG_HAMMER_TANK 22
// #define ENEMY__EGG_PRESS 23
// #define ENEMY__EGG_BALL 24
// #define ENEMY__EGG_SPIDER 25
// #define ENEMY__MECHA_KNUCKLES 26
// #define ENEMY__EGG_SNAKE 27
// #define ENEMY__EGG_WRECKER 28
// #define ENEMY__EGG_DRILLSTER 29
// #define ENEMY__EGG_X 30
// #define ENEMY__SUPER_EGG_ROBOT 31
// #endif
#if (GAME == GAME_SA2)
#define ENEMY__MON 0 // Jumping monkey
#define ENEMY__KIKI 1 // Monkey on tree
#define ENEMY__BUZZER 2
+122 -120
View File
@@ -1,128 +1,130 @@
#ifndef GUARD_CONSTANTS_INTERACTABLES_H
#define GUARD_CONSTANTS_INTERACTABLES_H
#if (GAME == GAME_SA1)
#define IA__STAGE_GOAL 0
#define IA__SPIKES__NORMAL_UP 1
#define IA__SPIKES__NORMAL_DOWN 2
#define IA__SPIKES__NORMAL_LEFT 3
#define IA__SPIKES__NORMAL_RIGHT 4
#define IA__SPIKES__HIDING_UP 5
#define IA__SPIKES__HIDING_DOWN 6
#define IA__CHECKPOINT 7
#define IA__SPRING__UP 8
#define IA__SPRING__DOWN 9
#define IA__SPRING__LEFT 10
#define IA__SPRING__RIGHT 11
#define IA__SPRING__BIG_UPLEFT 12
#define IA__SPRING__BIG_UPRIGHT 13
#define IA__SPRING__SMALL_UPLEFT 14
#define IA__SPRING__SMALL_UPRIGHT 15
#define IA__DECORATION 16
#define IA__TOGGLE_PLAYER_LAYER__FRONT 17
#define IA__TOGGLE_PLAYER_LAYER__BACK 18
#define IA__GRIND_RAIL__START 19
#define IA__GRIND_RAIL__END 20
#define IA__PLATFORM_THIN 21
#define IA__PLATFORM_THIN__FALLING 22
#define IA__TRAMPOLINE 23
#define IA__PLATFORM_CRUMBLING 24
#define IA__BOUNCE_BLOCK 25
#define IA__INCLINE_RAMP 26
#define IA__WATERFALL 27
#define IA__HALFPIPE__START 28
#define IA__HALFPIPE__END 29
#define IA__SHRUBBERY 30
#define IA__BOOSTER 31
#define IA__BOOSTER__SLIGHT_LEFT 32
#define IA__BOOSTER__SLIGHT_RIGHT 33
#define IA__IA034 34
#define IA__MINILOOP_BASE 35
#define IA__MINILOOP_START_BOOST 36
#define IA__MINILOOP_EXIT 37
#define IA__MINILOOP_ENTRANCE 38
#define IA__IA039 39
#define IA__WATER_BRIDGE 40
#define IA__TOGGLE__TO_BE_CONTINUED 41
#define IA__RED_FLAG 42
#define IA__IA043 43
#define IA__WALL_POLE__LEFT 44
#define IA__WALL_POLE__RIGHT 45
#define IA__FORCED_ICE_SLIDE 46
#define IA__BOOSTER__WALL 47
#define IA__BUMPER__HEXAGON 48
#define IA__BUMPER_ROUND__LINEAR 49
#define IA__BUMPER_ROUND__CIRCULAR 50
#define IA__BUMPER_TRI__HORIZONTAL 51
#define IA__BUMPER_TRI__VERTICAL 52
#define IA__BUMPER_TRI__BIG 53
#define IA__FLIPPER 54
#define IA__PLATFORM_SQUARE 55
#define IA__FLIPPER__VERTICAL 56
#define IA__BARREL_OF_DOOM_MINI 57
#define IA__SEGA_SONIC_LETTER 58
#define IA__PARTY_BALLOON 59
#define IA__SHIP_SWING 60
#define IA__PLATFORM_SPIKED 61
#define IA__BOWL 62
#define IA__PANEL_GATE__VERTICAL 63
#define IA__PANEL_GATE__HORIZONTAL 64
#define IA__MARBLE_TRACK__DIR 65
#define IA__MARBLE_TRACK__UNK 66
#define IA__MARBLE_TRACK__ENTRANCE 67
#define IA__MARBLE_TRACK__EXIT 68
#define IA__CONVEYOR_BELT 69
#define IA__TOGGLE__PLAYER_VISIBILITY 70
#define IA__WALL_BUMPER 71
#define IA__TELEPORT_ORB 72
#define IA__FLIPPER_SMALL_BLUE 73
#define IA__CAROUSEL 74
#define IA__HOOK_RAIL 75
#define IA__SWINGING_HOOK 76
#define IA__SECURITY_GATE 77
#define IA__SWING_ROPE 78
#define IA__STEAM_EXHAUST 79
#define IA__CRANE_CLAW 80
#define IA__MOVING_SPRING 81
#define IA__IRON_BALL 82
#define IA__HANG_BAR 83
#define IA__SKATING_STONE 84
#define IA__IA085 85
#define IA__RUN_WHEEL 86
#define IA__TORCH 87
#define IA__LIFT 88
#define IA__IA089 89
#define IA__TOGGLE__PLAYER_FLOAT 90
#define IA__FERRIS_WHEEL 91
#define IA__BOULDER_SPAWNER 92
#define IA__SPIKED_BARREL 93
#define IA__AIR_BUBBLES 94
#define IA__ICE_BLOCK 95
#define IA__IA096 96
#define IA__IA097 97
#define IA__UNDERWATER_LAVA_PLATFORM 98
#define IA__IA099 99
#define IA__BOOSTER_STEEP 100
#define IA__BOOSTER_STEEP_2 101
#define IA__SPECIAL_SPRING 102
#define IA__SPIKED_BARREL__CHAOHUNT 103
#define IA__SMALL_FALL_BLOCK 104
#define IA__LAVA 105
#define IA__TRACK 106
#define IA__IA107 107
#define IA__SPRING__HIDING 108
#define IA__TOGGLE_GRAVITY 109
#define IA__PIPE_ENTRANCE 110
#define IA__PIPE_EXIT 111
#define IA__TRACK_AIR_CORNER 112
#define IA__IA113 113
#define IA__BREAKABLE_WALL 114
#define IA__ITEMBOX_CHAOHUNT 115
// #if (GAME == GAME_SA1)
// #define IA__STAGE_GOAL 0
// #define IA__SPIKES__NORMAL_UP 1
// #define IA__SPIKES__NORMAL_DOWN 2
// #define IA__SPIKES__NORMAL_LEFT 3
// #define IA__SPIKES__NORMAL_RIGHT 4
// #define IA__SPIKES__HIDING_UP 5
// #define IA__SPIKES__HIDING_DOWN 6
// #define IA__CHECKPOINT 7
// #define IA__SPRING__UP 8
// #define IA__SPRING__DOWN 9
// #define IA__SPRING__LEFT 10
// #define IA__SPRING__RIGHT 11
// #define IA__SPRING__BIG_UPLEFT 12
// #define IA__SPRING__BIG_UPRIGHT 13
// #define IA__SPRING__SMALL_UPLEFT 14
// #define IA__SPRING__SMALL_UPRIGHT 15
// #define IA__DECORATION 16
// #define IA__TOGGLE_PLAYER_LAYER__FRONT 17
// #define IA__TOGGLE_PLAYER_LAYER__BACK 18
// #define IA__GRIND_RAIL__START 19
// #define IA__GRIND_RAIL__END 20
// #define IA__PLATFORM_THIN 21
// #define IA__PLATFORM_THIN__FALLING 22
// #define IA__TRAMPOLINE 23
// #define IA__PLATFORM_CRUMBLING 24
// #define IA__BOUNCE_BLOCK 25
// #define IA__INCLINE_RAMP 26
// #define IA__WATERFALL 27
// #define IA__HALFPIPE__START 28
// #define IA__HALFPIPE__END 29
// #define IA__SHRUBBERY 30
// #define IA__BOOSTER 31
// #define IA__BOOSTER__SLIGHT_LEFT 32
// #define IA__BOOSTER__SLIGHT_RIGHT 33
// #define IA__IA034 34
// #define IA__MINILOOP_BASE 35
// #define IA__MINILOOP_START_BOOST 36
// #define IA__MINILOOP_EXIT 37
// #define IA__MINILOOP_ENTRANCE 38
// #define IA__IA039 39
// #define IA__WATER_BRIDGE 40
// #define IA__TOGGLE__TO_BE_CONTINUED 41
// #define IA__RED_FLAG 42
// #define IA__IA043 43
// #define IA__WALL_POLE__LEFT 44
// #define IA__WALL_POLE__RIGHT 45
// #define IA__FORCED_ICE_SLIDE 46
// #define IA__BOOSTER__WALL 47
// #define IA__BUMPER__HEXAGON 48
// #define IA__BUMPER_ROUND__LINEAR 49
// #define IA__BUMPER_ROUND__CIRCULAR 50
// #define IA__BUMPER_TRI__HORIZONTAL 51
// #define IA__BUMPER_TRI__VERTICAL 52
// #define IA__BUMPER_TRI__BIG 53
// #define IA__FLIPPER 54
// #define IA__PLATFORM_SQUARE 55
// #define IA__FLIPPER__VERTICAL 56
// #define IA__BARREL_OF_DOOM_MINI 57
// #define IA__SEGA_SONIC_LETTER 58
// #define IA__PARTY_BALLOON 59
// #define IA__SHIP_SWING 60
// #define IA__PLATFORM_SPIKED 61
// #define IA__BOWL 62
// #define IA__PANEL_GATE__VERTICAL 63
// #define IA__PANEL_GATE__HORIZONTAL 64
// #define IA__MARBLE_TRACK__DIR 65
// #define IA__MARBLE_TRACK__UNK 66
// #define IA__MARBLE_TRACK__ENTRANCE 67
// #define IA__MARBLE_TRACK__EXIT 68
// #define IA__CONVEYOR_BELT 69
// #define IA__TOGGLE__PLAYER_VISIBILITY 70
// #define IA__WALL_BUMPER 71
// #define IA__TELEPORT_ORB 72
// #define IA__FLIPPER_SMALL_BLUE 73
// #define IA__CAROUSEL 74
// #define IA__HOOK_RAIL 75
// #define IA__SWINGING_HOOK 76
// #define IA__SECURITY_GATE 77
// #define IA__SWING_ROPE 78
// #define IA__STEAM_EXHAUST 79
// #define IA__CRANE_CLAW 80
// #define IA__MOVING_SPRING 81
// #define IA__IRON_BALL 82
// #define IA__HANG_BAR 83
// #define IA__SKATING_STONE 84
// #define IA__IA085 85
// #define IA__RUN_WHEEL 86
// #define IA__TORCH 87
// #define IA__LIFT 88
// #define IA__IA089 89
// #define IA__TOGGLE__PLAYER_FLOAT 90
// #define IA__FERRIS_WHEEL 91
// #define IA__BOULDER_SPAWNER 92
// #define IA__SPIKED_BARREL 93
// #define IA__AIR_BUBBLES 94
// #define IA__ICE_BLOCK 95
// #define IA__IA096 96
// #define IA__IA097 97
// #define IA__UNDERWATER_LAVA_PLATFORM 98
// #define IA__IA099 99
// #define IA__BOOSTER_STEEP 100
// #define IA__BOOSTER_STEEP_2 101
// #define IA__SPECIAL_SPRING 102
// #define IA__SPIKED_BARREL__CHAOHUNT 103
// #define IA__SMALL_FALL_BLOCK 104
// #define IA__LAVA 105
// #define IA__TRACK 106
// #define IA__IA107 107
// #define IA__SPRING__HIDING 108
// #define IA__TOGGLE_GRAVITY 109
// #define IA__PIPE_ENTRANCE 110
// #define IA__PIPE_EXIT 111
// #define IA__TRACK_AIR_CORNER 112
// #define IA__IA113 113
// #define IA__BREAKABLE_WALL 114
// #define IA__ITEMBOX_CHAOHUNT 115
#define IA__MP_TOGGLE_PLAYER_LAYER__FRONT 12 // Used in GAME_MODE_MULTI_PLAYER_COLLECT_RINGS
#define IA__MP_TOGGLE_PLAYER_LAYER__BACK 13 // Used in GAME_MODE_MULTI_PLAYER_COLLECT_RINGS
// #define IA__MP_TOGGLE_PLAYER_LAYER__FRONT 12 // Used in GAME_MODE_MULTI_PLAYER_COLLECT_RINGS
// #define IA__MP_TOGGLE_PLAYER_LAYER__BACK 13 // Used in GAME_MODE_MULTI_PLAYER_COLLECT_RINGS
#elif (GAME == GAME_SA2)
// #endif
#if (GAME == GAME_SA2)
// NOTE: Keep the format as: IA__<name>__<type> if you add Interactables to this list
// (or create a new list) that have multiple entries, like the springs and spikes
// do. This will ensure compatibility with our tools.
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_BALLOON_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Balloon(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_BELL_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Bell(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_BULLET_BUZZER_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_BulletBuzzer(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_BUZZER_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Buzzer(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_CIRCUS_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Circus(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_FLICKEY_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Flickey(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_GEJI_GEJI_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_GejiGeji(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_GOHLA_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Gohla(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_HAMMERHEAD_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Hammerhead(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_KIKI_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Kiki(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_KOURA_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Koura(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_KUBINAGA_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Kubinaga(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_KURA_KURA_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_KuraKura(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_KYURA_H
#include "gba/types.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Kyura(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_MADILLO_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Madillo(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_MON_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Mon(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_MOUSE_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Mouse(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_PEN_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Pen(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_PIKO_PIKO_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_PikoPiko(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_SPINNER_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Spinner(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_STAR_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Star(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_STRAW_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Straw(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_ENEMY_YADO_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Yado(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_105
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Interactable105(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_CEILING_SLOPE_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_CeilingSlope(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_COLLECT_RINGS_LAP_TRIGGER
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_CollectRingsLapTrigger(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_093_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Cannon(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_FLYING_HANDLE_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_FlyingHandle(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_GRAVITY_TOGGLE_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Toggle_Gravity__Down(MapEntity *, u16, u16, u8);
void CreateEntity_Toggle_Gravity__Up(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_IRON_BALL_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_IronBall(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_LAUNCHER_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Launcher_Left_GDown(MapEntity *, u16, u16, u8);
void CreateEntity_Launcher_Right_GDown(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_094_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Pole(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_097_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_SpeedingPlatform(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_GRIND_RAIL_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_GrindRail_Start(MapEntity *, u16, u16, u8);
void CreateEntity_GrindRail_StartAir(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_IA_CRANE_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Crane(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
@@ -3,7 +3,7 @@
#include "global.h"
#include "sprite.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
#define DASH_RING__NUM_ORIENTATIONS 8
@@ -2,7 +2,7 @@
#define GUARD_IA_FLOATING_SPRING_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_FloatingSpring_Up(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_HOOK_RAIL_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_HookRail_Unused(MapEntity *, u16, u16, u8);
void CreateEntity_HookRail_Start(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_052_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_TurnAroundBar(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_IA_WIND_UP_STICK_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_WindUpStick(MapEntity *, u16, u16, u8);
#endif
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_069_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_BigSnowball(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_FUNNEL_SPHERE_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_FunnelSphere(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_HALF_PIPE_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_HalfPipe_End(MapEntity *, u16, u16, u8);
void CreateEntity_HalfPipe_Start(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_SLOWING_SNOW_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_SlowingSnow(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_BOOSTER_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Booster(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_BOUNCY_BAR_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_BouncyBar(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_CHECKPOINT_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Checkpoint(MapEntity *, u16, u16, u8);
void CreateEntity_Toggle_Checkpoint(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_CORKSCREW_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Corkscrew_Start(MapEntity *, u16, u16, u8);
void CreateEntity_Corkscrew_End(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_CORKSCREW_3D_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Corkscrew3D_Start(MapEntity *, u16, u16, u8);
void CreateEntity_Corkscrew3D_End(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_DECORATION_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Decoration(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_GAPPED_LOOP_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_GappedLoop_Start(MapEntity *, u16, u16, u8);
void CreateEntity_GappedLoop_End(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_INCLINE_RAMP_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_InclineRamp(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_019_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_PlatformCrumbling(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_IA_ROTATING_HANDLE_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_RotatingHandle(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_SPIKES_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Spikes_Up(MapEntity *, u16, u16, u8);
void CreateEntity_Spikes_Down(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_SPRING_BOUNCY_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_BouncySpring(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_STAGE_GOAL_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_StageGoal(MapEntity *, u16, u16, u8);
void CreateEntity_Toggle_StageGoal(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_TOGGLE_PLAYER_LAYER_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Toggle_PlayerLayer(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_IA_WINDMILL_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Windmill(MapEntity *, u16, u16, u8);
#endif
@@ -3,7 +3,7 @@
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Chord(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_FRENCH_HORN_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
#include "game/sa2/stage/interactables/music_plant/pipe_sequence.h"
void CreateEntity_FrenchHorn_Entry(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_070_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_GermanFlute(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_KEYBOARD_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Keyboard_Vertical(MapEntity *, u16, u16, u8);
void CreateEntity_Keyboard_Horizontal_PushLeft(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_NOTE_BLOCK_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_NoteBlock(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_NOTE_SPHERE_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_NoteSphere(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_PIPE_HORN_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
#include "game/sa2/stage/interactables/music_plant/pipe_sequence.h"
void CreateEntity_PipeInstrument_Entry(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_PIPE_SEQUENCE_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
#define NUM_PIPE_SEGMENT_TYPES 16
#define PIPE_SEGMENT_TYPE_TRANSLATE 0
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_CLEAR_PIPE_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Pipe_Start(MapEntity *, u16, u16, u8);
void CreateEntity_Pipe_End(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_PLATFORM_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Platform(MapEntity *, u16, u16, u8);
void CreateEntity_FallingPlatform(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_PLATFORM_SQUARE_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Platform_Square(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_PLATFORM_THIN_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_PlatformThin(MapEntity *, u16, u16, u8);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_RAMP_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Ramp(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_SMALL_PROPELLER_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Fan_Left(MapEntity *, u16, u16, u8);
void CreateEntity_Fan_Right(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_PROPELLER_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Propeller(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_085_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_PropellerSpring(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_SMALL_WINDMILL_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_SmallWindmill(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_WHIRLWIND_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Whirlwind_A(MapEntity *, u16, u16, u8);
void CreateEntity_Whirlwind_B(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_SLIDY_ICE_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_SlidyIce(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_SPECIAL_RING_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_SpecialRing(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_SPRING_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_Spring_Normal_Up(MapEntity *, u16, u16, u8);
void CreateEntity_Spring_Normal_Down(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_075_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_ArrowPlatform_Left(MapEntity *, u16, u16, u8);
void CreateEntity_ArrowPlatform_Right(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_TEC_BASE_NOTE_BLOCK_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_BounceBlock(MapEntity *ia, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
@@ -11,7 +11,7 @@
#define BRIDGE_TYPE_CURVED 1
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_LightBridge(MapEntity *ia, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_080_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_LightGlobe(MapEntity *, u16, u16, u8);
@@ -2,7 +2,7 @@
#define GUARD_INTERACTABLE_078_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_SpikePlatform(MapEntity *, u16, u16, u8);
+1 -1
View File
@@ -3,7 +3,7 @@
#define GUARD_STAGE_ITEM_BOX_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_ItemBox(MapEntity *, u16, u16, u8);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_MYSTERY_ITEM_BOX_H
#include "global.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
void CreateEntity_MysteryItemBox(MapEntity *ia, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
+1 -1
View File
@@ -2,7 +2,7 @@
#define GUARD_player_callbacks_H
#include "core.h"
#include "game/types/player.h"
#include "game/shared/stage/player.h"
struct Task *CreateSonicAmySkidAttackEffect(s32 x, s32 y, u16 p2);
void Player_SonicAmy_InitSkidAttack(Player *);
+102 -1
View File
@@ -3,8 +3,109 @@
#include "global.h"
#include "core.h"
#include "tilemap.h"
#include "game/types/camera.h"
#if (GAME == GAME_SA1)
typedef s16 CamCoord;
#else
typedef s32 CamCoord;
#endif
#define TILE_WIDTH 8
#define CAM_REGION_WIDTH 256
#define TILES_PER_METATILE_AXIS 12
#define TO_WORLD_POS(pos, region) ((pos)*TILE_WIDTH + (region)*CAM_REGION_WIDTH)
#define CAM_BOUND_X ((DISPLAY_WIDTH) + (CAM_REGION_WIDTH))
#define CAM_BOUND_Y ((DISPLAY_HEIGHT) + ((CAM_REGION_WIDTH) / 2))
typedef void (*BgUpdate)(s32, s32);
#define CAM_MODE_SPECTATOR 4
// NOTE: This was copy-pasted from SA2.
// There are type differences for members
typedef struct Camera {
/* 0x00|0x04 */ CamCoord x;
/* 0x02|0x04 */ CamCoord y;
#if (GAME == GAME_SA1)
u8 filler4[0x2C];
/* 0x30 */ struct Task *movementTask;
/* 0x34 */ s16 shakeOffsetX;
/* 0x36 */ s16 shakeOffsetY;
#elif (GAME == GAME_SA2)
/* 0x08 */ s32 unk8;
/* 0x0C */ s32 unkC;
/* 0x10 */ s32 unk10;
/* 0x14 */ s32 unk14;
/* 0x18 */ s32 shiftX;
/* 0x1C */ s32 shiftY;
/* 0x20 */ s32 unk20;
/* 0x24 */ s32 unk24;
// TODO: Why are X/Y swapped?
// Did they make this a matrix or sth.?
// (Used to calc min/max cam pos in UpdateCamera())
/* 0x28 */ s32 minY;
/* 0x2c */ s32 maxY;
/* 0x30 */ s32 minX;
/* 0x34 */ s32 maxX;
/* 0x38 */ s32 dx;
/* 0x3c */ s32 dy;
/* 0x40 */ s16 unk40;
/* 0x44 */ s32 unk44;
/* 0x48 */ s32 unk48;
/* 0x4c */ s32 unk4C;
// 0x4 = spectator
// mode
/* 0x50 */ u16 unk50;
/* 0x52 */ u16 unk52;
/* 0x54 */ u16 unk54;
/* 0x56 */ s16 unk56;
/* 0x58 */ BgUpdate fnBgUpdate;
/* 0x5C */ struct Task *movementTask;
/* 0x60 */ s16 shakeOffsetX;
/* 0x62 */ s16 shakeOffsetY;
/* 0x64 */ s16 unk64;
/* 0x66 */ u8 spectatorTarget;
#endif
} Camera; /* size 0x80(in SA2) */
extern struct Camera gCamera;
// TODO: Merge all these into one!
#define IS_OUT_OF_RANGE_2(x, y, radiusX, radiusY) \
((x < -(radiusX)) || (x > DISPLAY_WIDTH + (radiusX)) || (y < -(radiusY)) || (y > DISPLAY_HEIGHT + (radiusY)))
// No idea on this one
#define IS_OUT_OF_RANGE_3(x, y, radiusX, radiusY) \
((x < -(radiusX)) || (x > DISPLAY_WIDTH + (radiusX)) || ((y) + (radiusY) < 0) || (y > DISPLAY_HEIGHT + (radiusY)))
// TODO: Merge all these into one!
#define IS_OUT_OF_RANGE_(UNUSED, x, y, radius) IS_OUT_OF_RANGE_2(x, y, radius, radius)
#define IS_OUT_OF_RANGE_OLD(castType, x, y, dim) \
(((castType)(x + (dim / 2)) > DISPLAY_WIDTH + dim) || (y + (dim / 2) < 0) || (y > DISPLAY_HEIGHT + (dim / 2)))
#define IS_OUT_OF_RANGE IS_OUT_OF_RANGE_OLD
// @NOTE/INVESTIGATE: Some places match with u16, some with u32,
// but u16 is more common, so it's the default.
#define IS_OUT_OF_CAM_RANGE(_x, _y) IS_OUT_OF_RANGE(u16, _x, _y, CAM_REGION_WIDTH)
#define IS_OUT_OF_CAM_RANGE_TYPED(castType, _x, _y) IS_OUT_OF_RANGE(castType, _x, _y, CAM_REGION_WIDTH)
// TODO: Remove macro and replace calls of it with 'IS_OUT_OF_RANGE' once rewritten.
#define IS_OUT_OF_CAM_RANGE_2(x, y) IS_OUT_OF_RANGE_(u16, x, y, (CAM_REGION_WIDTH / 2))
#define IS_OUT_OF_DISPLAY_RANGE(_x, _y) \
((_x) > gCamera.x + (DISPLAY_WIDTH + (CAM_REGION_WIDTH / 2)) || (_x) < gCamera.x - (CAM_REGION_WIDTH / 2) \
|| (_y) > gCamera.y + CAM_BOUND_Y || (_y) < gCamera.y - (CAM_REGION_WIDTH / 2))
#define IS_OUT_OF_LOOP_TRIGGER_RANGE(x, y) IS_OUT_OF_RANGE_3(x, y, (CAM_REGION_WIDTH / 2), (CAM_REGION_WIDTH / 2))
void InitCamera(u32);
void DestroyCameraMovementTask(void);
+2 -2
View File
@@ -3,8 +3,8 @@
#include "core.h"
#include "rect.h"
#include "game/types/camera.h" // for CamCoord
#include "game/types/player.h"
#include "game/shared/stage/camera.h" // for CamCoord
#include "game/shared/stage/player.h"
#define COLL_NONE 0
#define COLL_FLAG_1 0x00000001
+1 -1
View File
@@ -4,7 +4,7 @@
#include "global.h"
#include "sprite.h"
#include "task.h"
#include "game/types/entity.h"
#include "game/shared/stage/entity.h"
typedef struct {
/* 0x00 */ SpriteBase base;
@@ -6,8 +6,8 @@
#include "sprite.h"
#include "game/globals.h"
#include "game/shared/stage/collision.h"
#include "game/shared/stage/collision.h"
#include "game/shared/stage/terrain_collision.h"
#include "game/sa2/stage/player_callbacks.h"
#include "game/shared/stage/player.h"
+211 -2
View File
@@ -1,13 +1,222 @@
#ifndef GUARD_STAGE_PLAYER_H
#define GUARD_STAGE_PLAYER_H
// TODO: Merge this file with this one!!!
#include "game/types/player.h"
#include "core.h"
#include "constants/move_states.h"
// TODO: merge these
#include "constants/characters.h"
#include "game/shared/parameters/characters.h"
#define PLAYER_IS_ALIVE (!(gPlayer.moveState & MOVESTATE_DEAD))
#define IS_ALIVE(player) (!(player->moveState & MOVESTATE_DEAD))
typedef struct {
/*0x00 */ SpriteTransform transform;
/*0x0C */ Sprite s;
/*0x3C */ Hitbox reserved; // TODO: Maybe 3 hitboxes (Player, Action, Shield)?
} PlayerSpriteInfo; /* size: 0x44 */
extern PlayerSpriteInfo gPlayerLimbsPSI;
extern PlayerSpriteInfo gPlayerBodyPSI;
// TODO: Better name.
// This is used for an apparent around the value Cream uses for flying duration
typedef struct {
/* 0xAC */ u8 flags;
/* 0xAD */ s8 unkAD;
/* 0xAE */ u16 unkAE;
/* 0xB0 */ u16 unkB0;
} SonicFlags;
typedef struct {
/* 0xAC */ s16 flyingDuration;
/* 0xAE */ u16 unkAE;
/* 0xB0 */ s8 unkB0;
} CreamFlags;
typedef struct {
/* 0xAC */ u8 flags;
/* 0xAD */ s8 shift;
/* 0xAE */ s8 unkAE;
/* 0xAF */ s8 unkAF;
// NOTE: For some reason this is a 4-byte value, while Cream's is a 2-byte
/* 0xB0 */ s32 flyingDuration;
} TailsFlags;
typedef struct {
/* 0xAC */ u8 flags;
/* 0xAD */ s8 shift; // TODO: Name
/* 0xAE */ s8 unkAE;
} KnucklesFlags;
typedef struct {
/* 0xAC */ u8 unkAC;
} AmyFlags;
#define PLAYER_ITEM_EFFECT__NONE 0x00
#define PLAYER_ITEM_EFFECT__SHIELD_NORMAL 0x01
#define PLAYER_ITEM_EFFECT__INVINCIBILITY 0x02
#define PLAYER_ITEM_EFFECT__SPEED_UP 0x04
#define PLAYER_ITEM_EFFECT__SHIELD_MAGNETIC 0x08
#define PLAYER_ITEM_EFFECT__MP_SLOW_DOWN 0x10
#define PLAYER_ITEM_EFFECT__20 0x20
#define PLAYER_ITEM_EFFECT__CONFUSION 0x40
#define PLAYER_ITEM_EFFECT__TELEPORT 0x80
#define HAS_SHIELD(p) ((p)->itemEffect & (PLAYER_ITEM_EFFECT__SHIELD_MAGNETIC | PLAYER_ITEM_EFFECT__SHIELD_NORMAL))
#define PLAYER_LAYER__FRONT 0x00
#define PLAYER_LAYER__BACK 0x01
#define PLAYER_LAYER__MASK 0x01
#define PLAYER_LAYER__80 0x80
#define PLAYER_1 0
#define PLAYER_2 1
#define PLAYER_3 2
#define PLAYER_4 3
#if (GAME == GAME_SA1)
#define GET_SP_PLAYER_V0(index) ((index == 0) ? &gPlayer : &gPartner)
#define GET_SP_PLAYER_V1(index) ((index != 0) ? &gPartner : &gPlayer)
#elif (GAME == GAME_SA2)
// NOTE: Ignores index, in SA2 you only ever have 1 player char in single player mode
#define GET_SP_PLAYER_V0(index) (&gPlayer)
#define GET_SP_PLAYER_V1(index) (&gPlayer)
#elif (GAME == GAME_SA3)
#define GET_SP_PLAYER_V0(index) ((index == PLAYER_1) ? &gPlayers[gStageData.playerIndex] : &gPlayers[p->charFlags.partnerIndex])
#define GET_SP_PLAYER_V1(index) ((index != PLAYER_1) ? &gPlayers[p->charFlags.partnerIndex] : &gPlayers[gStageData.playerIndex])
#endif
// Declared beforehand because it's used inside Player struct
struct Player_;
typedef void (*PlayerCallback)(struct Player_ *);
typedef struct Player_ {
/* 0x00 */ PlayerCallback callback;
/* 0x04 */ u16 unk4;
/* 0x08 */ s32 qWorldX;
/* 0x0C */ s32 qWorldY;
/* 0x10 */ s16 qSpeedAirX;
/* 0x12 */ s16 qSpeedAirY;
/* 0x14 */ s16 qSpeedGround;
// The player sprite's position is actually at the middle of its graphics,
// this offset denotes the difference to the ground.
/* 0x16 */ s8 spriteOffsetX;
/* 0x17 */ s8 spriteOffsetY;
/* 0x18 */ u8 filler18[8];
// set/compare to values in "include/constants/move_states.h"
/* 0x20 */ u32 moveState;
/* 0x24 */ u8 rotation;
/* 0x25 */ u8 unk25;
/* 0x26 */ s16 spindashAccel;
/* 0x28 */ u8 unk28;
/* 0x29 */ u8 unk29;
/* 0x2A */ s16 unk2A;
/* 0x2C */ s16 timerInvulnerability;
/* 0x2E */ s16 timerInvincibility;
/* 0x30 */ u16 timerSpeedup;
/* 0x32 */ u16 confusionTimer;
/* 0x34 */ u16 itemEffect20Timer;
/* 0x36 */ s8 disableTrickTimer;
/* 0x37 */ u8 itemEffect; // bitfield
/* 0x38 */ u8 layer; // bitfield(?), 0x1 determines layer
/* 0x3C */ void *stoodObj; // the object player collides with this frame?
/* 0x40 */ s32 maxSpeed; // top speed the player can go period
/* 0x44 */ s32 topSpeed; // top speed the player can accelerate to
/* 0x48 */ s32 acceleration;
/* 0x4C */ s32 deceleration;
/* 0x50 */ u16 rollingDeceleration;
/* 0x52 */ u16 boostThreshold;
/* 0x54 */ u16 walkAnim;
/* 0x56 */ u16 unk56;
/* 0x58 */ s16 boostSpeed;
/* 0x5A */ bool8 isBoosting;
/* 0x5B */ u8 trickDir;
/* 0x5C */ u16 heldInput;
/* 0x5E */ u16 frameInput;
/* 0x60 */ s8 playerID;
/* 0x61 */ s8 unk61;
/* 0x62 */ u8 unk62;
/* 0x63 */ u8 unk63;
/* 0x64 */ s16 charState; // charState values appear to be a default behavior to transition into another animation
/* 0x66 */ s16 prevCharState;
/* 0x68 */ AnimId anim;
/* 0x6A */ u16 variant;
/* 0x6C */ bool8 unk6C;
// 0x6D Some player state, cleared after usage
// 0x01 = Player_Sonic_HomingAttack
// 0x05 = Set by IA ClearPipe_End if data[1] is set (also in GermanFlute IA), by
// Player_Cream_Flying
//
// use constants/player_transitions.h
/* 0x6D */ u8 transition;
/* 0x6E */ u8 unk6E; // Parameter for transition(?)
/* 0x6F */ u8 prevTransition;
/* 0x70 */ bool8 unk70;
/* 0x71 */ u8 unk71;
// unk72 appears to be a duration timer for side-forward trick animations + Homing Attack
/* 0x72 */ s16 unk72;
/* 0x74 */ s16 checkPointX;
/* 0x76 */ s16 checkPointY;
/* 0x78 */ u32 checkpointTime;
/* 0x7C */ u16 unk7C;
/* 0x7E */ u16 unk7E;
/* 0x80 */ s16 unk80;
/* 0x82 */ s16 unk82;
// Denotes how many points the player should get after defeating an enemy.
// (see stage/enemy_defeat_score.c and stage/entity_manager.c for usage)
/* 0x84 */ s8 defeatScoreIndex;
/* 0x85 */ s8 character;
/* 0x86 */ s8 secondsUntilDrown;
/* 0x87 */ s8 framesUntilDrownCountDecrement;
/* 0x88 */ s8 framesUntilWaterSurfaceEffect;
/* 0x88 */ u8 filler88[3];
/* 0x8C */ struct Task *spriteTask;
/* 0x90 */ PlayerSpriteInfo *spriteInfoBody; // for character sprites
/* 0x94 */ PlayerSpriteInfo *spriteInfoLimbs; // SpriteInfo for Tails' tails / Cream's ears, when rolling
#if PORTABLE
// NOTE: There's a copy in player.c's 'InitializePlayer' that
// copies via a (u32 *) to unk99.
//
// Since it is offset originally, platforms only writing words
// aligned (or crash when trying to write to an odd pointer) will
// not have the memory initialized properly.
//
// Ironically this is a non-crashing bug on GBA as well.
/* 0x99 */ s8 unk99[16];
/* 0x98 */ u8 unk98; // Multiplayer var. TODO: check sign!
#else
/* 0x98 */ u8 unk98; // Multiplayer var. TODO: check sign!
/* 0x99 */ s8 unk99[16];
#endif
/* 0x9A */ u8 fillerA9[0x3];
// Cream's framecounter for flying
// TODO/HACK: I guess this is actually part of a union per character?
// When the player selected Tails, player->unk6D is actually some x-offset
// when jumping.
/* 0xAC */
union {
SonicFlags sf;
CreamFlags cf;
TailsFlags tf;
KnucklesFlags kf;
AmyFlags af;
} w;
} Player;
extern Player gPlayer;
// In SA2 tricks stop all characters when the buttons are pressed.
// Set this to TRUE to behave more like SA3.
#define DISABLE_TRICK_AIR_WAIT !TRUE
@@ -2,7 +2,7 @@
#define GUARD_UNDERWATER_EFFECTS_H
#include "core.h"
#include "game/types/player.h"
#include "game/shared/stage/player.h"
struct Task *SpawnDrowningCountdownNum(Player *p, s32 countdown);
struct Task *SpawnAirBubbles(s32 p0, s32 p1, s32 p2, s32 p3);
-109
View File
@@ -1,109 +0,0 @@
#ifndef GUARD_SAKIT_CAMERA_H
#define GUARD_SAKIT_CAMERA_H
#include "core.h"
#include "tilemap.h"
#if (GAME == GAME_SA1)
typedef s16 CamCoord;
#else
typedef s32 CamCoord;
#endif
#define TILE_WIDTH 8
#define CAM_REGION_WIDTH 256
#define TILES_PER_METATILE_AXIS 12
#define TO_WORLD_POS(pos, region) ((pos)*TILE_WIDTH + (region)*CAM_REGION_WIDTH)
#define CAM_BOUND_X ((DISPLAY_WIDTH) + (CAM_REGION_WIDTH))
#define CAM_BOUND_Y ((DISPLAY_HEIGHT) + ((CAM_REGION_WIDTH) / 2))
typedef void (*BgUpdate)(s32, s32);
#define CAM_MODE_SPECTATOR 4
// NOTE: This was copy-pasted from SA2.
// There are type differences for members
typedef struct Camera {
/* 0x00|0x04 */ CamCoord x;
/* 0x02|0x04 */ CamCoord y;
#if (GAME == GAME_SA1)
u8 filler4[0x2C];
/* 0x30 */ struct Task *movementTask;
/* 0x34 */ s16 shakeOffsetX;
/* 0x36 */ s16 shakeOffsetY;
#elif (GAME == GAME_SA2)
/* 0x08 */ s32 unk8;
/* 0x0C */ s32 unkC;
/* 0x10 */ s32 unk10;
/* 0x14 */ s32 unk14;
/* 0x18 */ s32 shiftX;
/* 0x1C */ s32 shiftY;
/* 0x20 */ s32 unk20;
/* 0x24 */ s32 unk24;
// TODO: Why are X/Y swapped?
// Did they make this a matrix or sth.?
// (Used to calc min/max cam pos in UpdateCamera())
/* 0x28 */ s32 minY;
/* 0x2c */ s32 maxY;
/* 0x30 */ s32 minX;
/* 0x34 */ s32 maxX;
/* 0x38 */ s32 dx;
/* 0x3c */ s32 dy;
/* 0x40 */ s16 unk40;
/* 0x44 */ s32 unk44;
/* 0x48 */ s32 unk48;
/* 0x4c */ s32 unk4C;
// 0x4 = spectator
// mode
/* 0x50 */ u16 unk50;
/* 0x52 */ u16 unk52;
/* 0x54 */ u16 unk54;
/* 0x56 */ s16 unk56;
/* 0x58 */ BgUpdate fnBgUpdate;
/* 0x5C */ struct Task *movementTask;
/* 0x60 */ s16 shakeOffsetX;
/* 0x62 */ s16 shakeOffsetY;
/* 0x64 */ s16 unk64;
/* 0x66 */ u8 spectatorTarget;
#endif
} Camera; /* size 0x80(in SA2) */
extern struct Camera gCamera;
// TODO: Merge all these into one!
#define IS_OUT_OF_RANGE_2(x, y, radiusX, radiusY) \
((x < -(radiusX)) || (x > DISPLAY_WIDTH + (radiusX)) || (y < -(radiusY)) || (y > DISPLAY_HEIGHT + (radiusY)))
// No idea on this one
#define IS_OUT_OF_RANGE_3(x, y, radiusX, radiusY) \
((x < -(radiusX)) || (x > DISPLAY_WIDTH + (radiusX)) || ((y) + (radiusY) < 0) || (y > DISPLAY_HEIGHT + (radiusY)))
// TODO: Merge all these into one!
#define IS_OUT_OF_RANGE_(UNUSED, x, y, radius) IS_OUT_OF_RANGE_2(x, y, radius, radius)
#define IS_OUT_OF_RANGE_OLD(castType, x, y, dim) \
(((castType)(x + (dim / 2)) > DISPLAY_WIDTH + dim) || (y + (dim / 2) < 0) || (y > DISPLAY_HEIGHT + (dim / 2)))
#define IS_OUT_OF_RANGE IS_OUT_OF_RANGE_OLD
// @NOTE/INVESTIGATE: Some places match with u16, some with u32,
// but u16 is more common, so it's the default.
#define IS_OUT_OF_CAM_RANGE(_x, _y) IS_OUT_OF_RANGE(u16, _x, _y, CAM_REGION_WIDTH)
#define IS_OUT_OF_CAM_RANGE_TYPED(castType, _x, _y) IS_OUT_OF_RANGE(castType, _x, _y, CAM_REGION_WIDTH)
// TODO: Remove macro and replace calls of it with 'IS_OUT_OF_RANGE' once rewritten.
#define IS_OUT_OF_CAM_RANGE_2(x, y) IS_OUT_OF_RANGE_(u16, x, y, (CAM_REGION_WIDTH / 2))
#define IS_OUT_OF_DISPLAY_RANGE(_x, _y) \
((_x) > gCamera.x + (DISPLAY_WIDTH + (CAM_REGION_WIDTH / 2)) || (_x) < gCamera.x - (CAM_REGION_WIDTH / 2) \
|| (_y) > gCamera.y + CAM_BOUND_Y || (_y) < gCamera.y - (CAM_REGION_WIDTH / 2))
#define IS_OUT_OF_LOOP_TRIGGER_RANGE(x, y) IS_OUT_OF_RANGE_3(x, y, (CAM_REGION_WIDTH / 2), (CAM_REGION_WIDTH / 2))
#endif // GUARD_SAKIT_CAMERA_H
-218
View File
@@ -1,218 +0,0 @@
#ifndef GUARD_SAKIT_PLAYER_H
#define GUARD_SAKIT_PLAYER_H
#include "core.h"
#include "constants/move_states.h"
#define PLAYER_IS_ALIVE (!(gPlayer.moveState & MOVESTATE_DEAD))
#define IS_ALIVE(player) (!(player->moveState & MOVESTATE_DEAD))
typedef struct {
/*0x00 */ SpriteTransform transform;
/*0x0C */ Sprite s;
/*0x3C */ Hitbox reserved; // TODO: Maybe 3 hitboxes (Player, Action, Shield)?
} PlayerSpriteInfo; /* size: 0x44 */
extern PlayerSpriteInfo gPlayerLimbsPSI;
extern PlayerSpriteInfo gPlayerBodyPSI;
// TODO: Better name.
// This is used for an apparent around the value Cream uses for flying duration
typedef struct {
/* 0xAC */ u8 flags;
/* 0xAD */ s8 unkAD;
/* 0xAE */ u16 unkAE;
/* 0xB0 */ u16 unkB0;
} SonicFlags;
typedef struct {
/* 0xAC */ s16 flyingDuration;
/* 0xAE */ u16 unkAE;
/* 0xB0 */ s8 unkB0;
} CreamFlags;
typedef struct {
/* 0xAC */ u8 flags;
/* 0xAD */ s8 shift;
/* 0xAE */ s8 unkAE;
/* 0xAF */ s8 unkAF;
// NOTE: For some reason this is a 4-byte value, while Cream's is a 2-byte
/* 0xB0 */ s32 flyingDuration;
} TailsFlags;
typedef struct {
/* 0xAC */ u8 flags;
/* 0xAD */ s8 shift; // TODO: Name
/* 0xAE */ s8 unkAE;
} KnucklesFlags;
typedef struct {
/* 0xAC */ u8 unkAC;
} AmyFlags;
#define PLAYER_ITEM_EFFECT__NONE 0x00
#define PLAYER_ITEM_EFFECT__SHIELD_NORMAL 0x01
#define PLAYER_ITEM_EFFECT__INVINCIBILITY 0x02
#define PLAYER_ITEM_EFFECT__SPEED_UP 0x04
#define PLAYER_ITEM_EFFECT__SHIELD_MAGNETIC 0x08
#define PLAYER_ITEM_EFFECT__MP_SLOW_DOWN 0x10
#define PLAYER_ITEM_EFFECT__20 0x20
#define PLAYER_ITEM_EFFECT__CONFUSION 0x40
#define PLAYER_ITEM_EFFECT__TELEPORT 0x80
#define HAS_SHIELD(p) ((p)->itemEffect & (PLAYER_ITEM_EFFECT__SHIELD_MAGNETIC | PLAYER_ITEM_EFFECT__SHIELD_NORMAL))
#define PLAYER_LAYER__FRONT 0x00
#define PLAYER_LAYER__BACK 0x01
#define PLAYER_LAYER__MASK 0x01
#define PLAYER_LAYER__80 0x80
#define PLAYER_1 0
#define PLAYER_2 1
#define PLAYER_3 2
#define PLAYER_4 3
#if (GAME == GAME_SA1)
#define GET_SP_PLAYER_V0(index) ((index == 0) ? &gPlayer : &gPartner)
#define GET_SP_PLAYER_V1(index) ((index != 0) ? &gPartner : &gPlayer)
#elif (GAME == GAME_SA2)
// NOTE: Ignores index, in SA2 you only ever have 1 player char in single player mode
#define GET_SP_PLAYER_V0(index) (&gPlayer)
#define GET_SP_PLAYER_V1(index) (&gPlayer)
#elif (GAME == GAME_SA3)
#define GET_SP_PLAYER_V0(index) ((index == PLAYER_1) ? &gPlayers[gStageData.playerIndex] : &gPlayers[p->charFlags.partnerIndex])
#define GET_SP_PLAYER_V1(index) ((index != PLAYER_1) ? &gPlayers[p->charFlags.partnerIndex] : &gPlayers[gStageData.playerIndex])
#endif
// Declared beforehand because it's used inside Player struct
struct Player_;
typedef void (*PlayerCallback)(struct Player_ *);
typedef struct Player_ {
/* 0x00 */ PlayerCallback callback;
/* 0x04 */ u16 unk4;
/* 0x08 */ s32 qWorldX;
/* 0x0C */ s32 qWorldY;
/* 0x10 */ s16 qSpeedAirX;
/* 0x12 */ s16 qSpeedAirY;
/* 0x14 */ s16 qSpeedGround;
// The player sprite's position is actually at the middle of its graphics,
// this offset denotes the difference to the ground.
/* 0x16 */ s8 spriteOffsetX;
/* 0x17 */ s8 spriteOffsetY;
/* 0x18 */ u8 filler18[8];
// set/compare to values in "include/constants/move_states.h"
/* 0x20 */ u32 moveState;
/* 0x24 */ u8 rotation;
/* 0x25 */ u8 unk25;
/* 0x26 */ s16 spindashAccel;
/* 0x28 */ u8 unk28;
/* 0x29 */ u8 unk29;
/* 0x2A */ s16 unk2A;
/* 0x2C */ s16 timerInvulnerability;
/* 0x2E */ s16 timerInvincibility;
/* 0x30 */ u16 timerSpeedup;
/* 0x32 */ u16 confusionTimer;
/* 0x34 */ u16 itemEffect20Timer;
/* 0x36 */ s8 disableTrickTimer;
/* 0x37 */ u8 itemEffect; // bitfield
/* 0x38 */ u8 layer; // bitfield(?), 0x1 determines layer
/* 0x3C */ void *stoodObj; // the object player collides with this frame?
/* 0x40 */ s32 maxSpeed; // top speed the player can go period
/* 0x44 */ s32 topSpeed; // top speed the player can accelerate to
/* 0x48 */ s32 acceleration;
/* 0x4C */ s32 deceleration;
/* 0x50 */ u16 rollingDeceleration;
/* 0x52 */ u16 boostThreshold;
/* 0x54 */ u16 walkAnim;
/* 0x56 */ u16 unk56;
/* 0x58 */ s16 boostSpeed;
/* 0x5A */ bool8 isBoosting;
/* 0x5B */ u8 trickDir;
/* 0x5C */ u16 heldInput;
/* 0x5E */ u16 frameInput;
/* 0x60 */ s8 playerID;
/* 0x61 */ s8 unk61;
/* 0x62 */ u8 unk62;
/* 0x63 */ u8 unk63;
/* 0x64 */ s16 charState; // charState values appear to be a default behavior to transition into another animation
/* 0x66 */ s16 prevCharState;
/* 0x68 */ AnimId anim;
/* 0x6A */ u16 variant;
/* 0x6C */ bool8 unk6C;
// 0x6D Some player state, cleared after usage
// 0x01 = Player_Sonic_HomingAttack
// 0x05 = Set by IA ClearPipe_End if data[1] is set (also in GermanFlute IA), by
// Player_Cream_Flying
//
// use constants/player_transitions.h
/* 0x6D */ u8 transition;
/* 0x6E */ u8 unk6E; // Parameter for transition(?)
/* 0x6F */ u8 prevTransition;
/* 0x70 */ bool8 unk70;
/* 0x71 */ u8 unk71;
// unk72 appears to be a duration timer for side-forward trick animations + Homing Attack
/* 0x72 */ s16 unk72;
/* 0x74 */ s16 checkPointX;
/* 0x76 */ s16 checkPointY;
/* 0x78 */ u32 checkpointTime;
/* 0x7C */ u16 unk7C;
/* 0x7E */ u16 unk7E;
/* 0x80 */ s16 unk80;
/* 0x82 */ s16 unk82;
// Denotes how many points the player should get after defeating an enemy.
// (see stage/enemy_defeat_score.c and stage/entity_manager.c for usage)
/* 0x84 */ s8 defeatScoreIndex;
/* 0x85 */ s8 character;
/* 0x86 */ s8 secondsUntilDrown;
/* 0x87 */ s8 framesUntilDrownCountDecrement;
/* 0x88 */ s8 framesUntilWaterSurfaceEffect;
/* 0x88 */ u8 filler88[3];
/* 0x8C */ struct Task *spriteTask;
/* 0x90 */ PlayerSpriteInfo *spriteInfoBody; // for character sprites
/* 0x94 */ PlayerSpriteInfo *spriteInfoLimbs; // SpriteInfo for Tails' tails / Cream's ears, when rolling
#if PORTABLE
// NOTE: There's a copy in player.c's 'InitializePlayer' that
// copies via a (u32 *) to unk99.
//
// Since it is offset originally, platforms only writing words
// aligned (or crash when trying to write to an odd pointer) will
// not have the memory initialized properly.
//
// Ironically this is a non-crashing bug on GBA as well.
/* 0x99 */ s8 unk99[16];
/* 0x98 */ u8 unk98; // Multiplayer var. TODO: check sign!
#else
/* 0x98 */ u8 unk98; // Multiplayer var. TODO: check sign!
/* 0x99 */ s8 unk99[16];
#endif
/* 0x9A */ u8 fillerA9[0x3];
// Cream's framecounter for flying
// TODO/HACK: I guess this is actually part of a union per character?
// When the player selected Tails, player->unk6D is actually some x-offset
// when jumping.
/* 0xAC */
union {
SonicFlags sf;
CreamFlags cf;
TailsFlags tf;
KnucklesFlags kf;
AmyFlags af;
} w;
} Player;
extern Player gPlayer;
// TODO: fill
#endif // GUARD_SAKIT_PLAYER_H
-135
View File
@@ -1,135 +0,0 @@
#ifndef GUARD_SA2_CHAR_STATES_H
#define GUARD_SA2_CHAR_STATES_H
/* The values in here are used for Player.charState!
They are used to determine the next behavior (and Player.anim/Player.variant in most instances).
Some are shared between characters (CHARSTATE_xyz)
*/
#if (GAME == GAME_SA2)
#define CHARSTATE_INVALID -1
#define CHARSTATE_IDLE 0
#define CHARSTATE_TAUNT 1
#define CHARSTATE_CROUCH 2
#define CHARSTATE_SPIN_DASH 3
#define CHARSTATE_SPIN_ATTACK 4
#define CHARSTATE_TURN_SLOW 5
#define CHARSTATE_TURN_AFTER_BRAKE 6
#define CHARSTATE_BRAKE 7
#define CHARSTATE_BRAKE_GOAL 8
#define CHARSTATE_WALK_A 9
#define CHARSTATE_JUMP_1 10
#define CHARSTATE_JUMP_2 11
#define CHARSTATE_HIT_GROUND 12
#define CHARSTATE_FALLING_VULNERABLE_A 13
#define CHARSTATE_FALLING_VULNERABLE_B 14
#define CHARSTATE_BOOSTLESS_ATTACK 15
#define CHARSTATE_AIR_ATTACK 16
#define CHARSTATE_BOOST_ATTACK 17
#define CHARSTATE_SOME_ATTACK 18
#define CHARSTATE_SOME_OTHER_ATTACK 19
#if (GAME == GAME_SA1)
#define CHARSTATE_HIT_AIR 15
#else
#define CHARSTATE_HIT_AIR 20
#endif
#define CHARSTATE_HIT_STUNNED 21
#define CHARSTATE_DEAD 22
#define CHARSTATE_UNUSED_A 23
#define CHARSTATE_UNUSED_B 24
#define CHARSTATE_GOAL_BRAKE_A 25
#define CHARSTATE_GOAL_BRAKE_B 26
#define CHARSTATE_GOAL_BRAKE_C 27
#define CHARSTATE_ACT_CLEAR_A 28
#define CHARSTATE_ACT_CLEAR_B 29
#define CHARSTATE_ACT_CLEAR_C 30
#define CHARSTATE_UNUSED_C 31
#define CHARSTATE_ACT_CLEAR_TIME_ATTACK_OR_BOSS 32
#define CHARSTATE_TRICK_UP 33
#define CHARSTATE_TRICK_FORWARD 34
#define CHARSTATE_TRICK_BACKWARD 35
#define CHARSTATE_TRICK_DOWN 36
#define CHARSTATE_SPRING_MUSIC_PLANT 37
#define CHARSTATE_SPRING_B 38
#define CHARSTATE_SPRING_C 39
#define CHARSTATE_RAMP_AND_DASHRING 40
#define CHARSTATE_GRINDING 41
#define CHARSTATE_GRINDING_SONIC_AMY_JUMP_OFF 42
#define CHARSTATE_GRAVITY_FLIP_UNUSED 43
#define CHARSTATE_IN_WHIRLWIND 44
#define CHARSTATE_GRABBING_HANDLE_A 45
#define CHARSTATE_GRABBING_HANDLE_B 46
#define CHARSTATE_IN_CORKSCREW 47
#define CHARSTATE_IN_CORKSCREW_3D_RUNNING_DOWN 48
#define CHARSTATE_IN_CORKSCREW_3D_RUNNING_UP 49
#define CHARSTATE_CURLED_IN_AIR 50
#define CHARSTATE_WINDUP_STICK_UPWARDS 51
#define CHARSTATE_WINDUP_STICK_DOWNWARDS 52
#define CHARSTATE_WINDUP_STICK_SINGLE_TURN_UP 53
#define CHARSTATE_WINDUP_STICK_SINGLE_TURN_DOWN 54
#define CHARSTATE_HANGING 55 // both for HookRail and Crane
#define CHARSTATE_TURNAROUND_BAR 56
#define CHARSTATE_NOTE_BLOCK 57
#define CHARSTATE_FLUTE_EXHAUST 58
#define CHARSTATE_WALLRUN_INIT 59
#define CHARSTATE_WALLRUN_TO_WALL 60
#define CHARSTATE_WALLRUN_ON_WALL 61
#define CHARSTATE_ICE_SLIDE 62
#define CHARSTATE_WALK_B 63
#define CHARSTATE_LAUNCHER_IN_CART 64
#define CHARSTATE_LAUNCHER_IN_AIR 65
#define CHARSTATE_POLE 66
#define CHARSTATE_CUTSCENE_LOOK_UP_FRAME_0 67
#define CHARSTATE_CUTSCENE_LOOK_UP_FRAME_1 68
#define CHARSTATE_CUTSCENE_LOOK_UP_FRAME_2 69
#define CHARSTATE_CUTSCENE_LOOK_UP_FRAME_3 70
#define CHARSTATE_UNUSED_D 71
#define CHARSTATE_UNUSED_E 72
#define CHARSTATE_UNUSED_F 73
#define CHARSTATE_UNUSED_G 74
#define CHARSTATE_UNUSED_H 75
#define CHARSTATE_UNUSED_I 76
#define CHARSTATE_UNUSED_J 77
#define CHARSTATE_UNUSED_K 78
#define CHARSTATE_UNUSED_L 79
#define CHARSTATE_SHARED_COUNT 80
#define CHARSTATE_SONIC_FORWARD_THRUST CHARSTATE_SHARED_COUNT
#define CHARSTATE_SONIC_CATCHING_CREAM 81
#define CHARSTATE_SONIC_CAUGHT_CREAM 82
#define CHARSTATE_CREAM_FLYING 83
#define CHARSTATE_CREAM_FLYING_TURNING 84
#define CHARSTATE_CREAM_FLYING_TIRED 85
#define CHARSTATE_CREAM_ANIM_20 86
#define CHARSTATE_CREAM_CHAO_ATTACK 87
#define CHARSTATE_TAILS_FLYING 88
#define CHARSTATE_TAILS_FLYING_TURNING 89
#define CHARSTATE_TAILS_FLYING_TIRED 90
#define CHARSTATE_TAILS_ANIM_19 91
#define CHARSTATE_KNUCKLES_GLIDE 92
#define CHARSTATE_KNUCKLES_GLIDE_FALL 93
#define CHARSTATE_KNUCKLES_GLIDE_FALL_HIT 94
#define CHARSTATE_KNUCKLES_GLIDE_IMPACT 95
#define CHARSTATE_KNUCKLES_GLIDE_TURN_FRAME_A 96
#define CHARSTATE_KNUCKLES_GLIDE_TURN_FRAME_B 97
#define CHARSTATE_KNUCKLES_GLIDE_TURN_FRAME_C 98
#define CHARSTATE_KNUCKLES_GLIDE_TURN_FRAME_D 99
#define CHARSTATE_KNUCKLES_GLIDE_GRAB_WALL 100
#define CHARSTATE_KNUCKLES_CLIMB_A 101
#define CHARSTATE_KNUCKLES_CLIMB_B 102
#define CHARSTATE_KNUCKLES_CLIMB_C 103
#define CHARSTATE_KNUCKLES_CLIMB_D 104
#define CHARSTATE_KNUCKLES_CLIMB_E 105
#define CHARSTATE_KNUCKLES_DRILL_CLAW_INIT 106
#define CHARSTATE_KNUCKLES_DRILL_CLAW_MAIN 107
#define CHARSTATE_KNUCKLES_DRILL_CLAW_GROUND 108
#define CHARSTATE_AMY_SA1_JUMP 109
#define CHARSTATE_UNUSED_M 110
#define CHARSTATE_AMY_HAMMER_ATTACK 111
#define CHARSTATE_AMY_SA1_HAMMER_ATTACK 112
#define CHARSTATE_UNUSED_N 113
#define CHARSTATE_AMY_MID_AIR_HAMMER_SWIRL 114 // might be SA1 version?
#define CHARSTATE_COUNT 115
#endif
#endif // GUARD_SA2_CHAR_STATES_H
@@ -9,6 +9,7 @@ typedef struct CreditsString {
char padding[3];
} CreditsString;
// TODO: move to staff_credits.h
extern void CreateStaffCredits();
extern void CreateCongratulationsAnimation();
Loaded 100 of 374 files, more files were not shown because too many files have changed in this diff. Show more