mirror of
https://github.com/SAT-R/sa2.git
synced 2026-10-28 09:43:38 +00:00
more changes for sa1 sa2 merge
- Migrate specific game headers into their own folders - Remove headers from sa1 codebase which can be referenced from sa2
This commit is contained in:
1 parent
eca97cd122
commit
d355f290fe
525 files changed
+9512
-23181
No files matched your search
+3
-2
@@ -13,8 +13,9 @@
|
||||
#define ENGINE_3 3
|
||||
#define ENGINE_4 4
|
||||
|
||||
// TODO: Define this in Makefile through a compiler macro?
|
||||
#define GAME GAME_SA2
|
||||
#ifndef GAME
|
||||
#error GAME must be defined to compile
|
||||
#endif
|
||||
|
||||
// TODO: Do SA1 and SA2 use the same engine ver?
|
||||
// TODO: Do SA3 and KATAM use the same engine ver?
|
||||
|
||||
File renamed without changes.
File renamed without changes.
@@ -4,7 +4,7 @@
|
||||
/* Collection of animation indices for Sonic Advance 1.
|
||||
* - By JaceCear
|
||||
*/
|
||||
#include "constants/anim_sizes.h"
|
||||
#include "constants/sa1/anim_sizes.h"
|
||||
|
||||
/**************************** SA1 ****************************/
|
||||
|
||||
@@ -0,0 +1,246 @@
|
||||
#ifndef GUARD_SA1_CHAR_STATES_H
|
||||
#define GUARD_SA1_CHAR_STATES_H
|
||||
|
||||
// TODO: merge these lists together
|
||||
|
||||
/* 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_SA1)
|
||||
#define CHARSTATE_INVALID -1
|
||||
#define CHARSTATE_IDLE 0
|
||||
#define CHARSTATE_DEAD 1
|
||||
#define CHARSTATE_CROUCH 2
|
||||
#define CHARSTATE_3 3 // Look-down state?
|
||||
#define CHARSTATE_WALK_A 4
|
||||
#define CHARSTATE_SPINATTACK 5
|
||||
#define CHARSTATE_SPINDASH 6
|
||||
#define CHARSTATE_7 7
|
||||
#define CHARSTATE_8 8
|
||||
#define CHARSTATE_BRAKE 9
|
||||
#define CHARSTATE_LOOK_UP 10
|
||||
#define CHARSTATE_11 11
|
||||
#define CHARSTATE_12 12
|
||||
#define CHARSTATE_13 13
|
||||
#define CHARSTATE_14 14
|
||||
#define CHARSTATE_15 15
|
||||
#define CHARSTATE_16 16
|
||||
#define CHARSTATE_17 17
|
||||
#define CHARSTATE_18 18
|
||||
#define CHARSTATE_19 19
|
||||
#define CHARSTATE_RAIL_EXTRA_JUMP 20
|
||||
#define CHARSTATE_SPRING_B 21
|
||||
#define CHARSTATE_22 22
|
||||
#define CHARSTATE_BOUNCE 23
|
||||
#define CHARSTATE_24 24 // Halfpipe run?
|
||||
#define CHARSTATE_25 25 // Halfpipe run?
|
||||
#define CHARSTATE_26 26 // Halfpipe run?
|
||||
#define CHARSTATE_27 27
|
||||
#define CHARSTATE_28 28
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
#define CHARSTATE_HIT_AIR 15
|
||||
#define CHARSTATE_ACT_CLEAR_B 29 // unchecked
|
||||
#else
|
||||
#define CHARSTATE_HIT_AIR 20
|
||||
#define CHARSTATE_ACT_CLEAR_B 29
|
||||
#endif
|
||||
|
||||
#define CHARSTATE_30 30
|
||||
#define CHARSTATE_31 31
|
||||
#define CHARSTATE_32 32
|
||||
#define CHARSTATE_33 33
|
||||
#define CHARSTATE_34 34
|
||||
#define CHARSTATE_35 35
|
||||
#define CHARSTATE_36 36
|
||||
#define CHARSTATE_37 37
|
||||
#define CHARSTATE_38 38
|
||||
#define CHARSTATE_39 39 // react to Mecha Knuckles?
|
||||
#define CHARSTATE_40 40
|
||||
#define CHARSTATE_41 41
|
||||
#define CHARSTATE_AMY_SA1_JUMP 42
|
||||
#define CHARSTATE_43 43
|
||||
#define CHARSTATE_AIR_DASH 44
|
||||
#define CHARSTATE_45 45
|
||||
#define CHARSTATE_46 46
|
||||
#define CHARSTATE_47 47
|
||||
#define CHARSTATE_48 48
|
||||
#define CHARSTATE_49 49
|
||||
#define CHARSTATE_50 50
|
||||
|
||||
#define CHARSTATE_FLYING 53
|
||||
#define CHARSTATE_54 54
|
||||
#define CHARSTATE_FLY_EXHAUSTED 55
|
||||
#define CHARSTATE_56 56
|
||||
#define CHARSTATE_SWIMMING 57
|
||||
#define CHARSTATE_58 58
|
||||
#define CHARSTATE_59 59
|
||||
#define CHARSTATE_GROUND_ATTACK 60
|
||||
|
||||
// NOTE: Inferred from CHARSTATE_KNUCKLES_GLIDE in SA2_LABEL(sub_8022318)
|
||||
#define CHARSTATE_KNUCKLES_GLIDE 62
|
||||
#define CHARSTATE_63 63
|
||||
#define CHARSTATE_64 64
|
||||
#define CHARSTATE_65 65
|
||||
#define CHARSTATE_66 66
|
||||
#define CHARSTATE_67 67
|
||||
#define CHARSTATE_68 68
|
||||
#define CHARSTATE_69 69
|
||||
#define CHARSTATE_70 70
|
||||
#define CHARSTATE_71 71
|
||||
#define CHARSTATE_72 72
|
||||
#define CHARSTATE_73 73
|
||||
#define CHARSTATE_74 74
|
||||
#define CHARSTATE_75 75
|
||||
#define CHARSTATE_76 76
|
||||
#define CHARSTATE_77 77
|
||||
#define CHARSTATE_78 78
|
||||
#define CHARSTATE_79 79
|
||||
#define CHARSTATE_80 80
|
||||
#define CHARSTATE_KNUCKLES_SWIM 81
|
||||
#define CHARSTATE_KNUCKLES_FLOAT 82
|
||||
#define CHARSTATE_83 83
|
||||
#define CHARSTATE_84 84
|
||||
#define CHARSTATE_85 85
|
||||
#define CHARSTATE_86 86
|
||||
#define CHARSTATE_87 87
|
||||
#define CHARSTATE_88 88
|
||||
#define CHARSTATE_89 89
|
||||
#define CHARSTATE_90 90
|
||||
#define CHARSTATE_91 91
|
||||
#define CHARSTATE_92 92
|
||||
#define CHARSTATE_93 93
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
#define CHARSTATE_SHARED_COUNT 43
|
||||
#elif (GAME == GAME_SA2)
|
||||
#define CHARSTATE_SHARED_COUNT 80
|
||||
#endif
|
||||
|
||||
#elif (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
|
||||
#define CHARSTATE_HIT_AIR 20
|
||||
#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_SA1_CHAR_STATES_H
|
||||
@@ -0,0 +1,39 @@
|
||||
#ifndef GUARD_CONSTANTS_CHARACTERS_H
|
||||
#define GUARD_CONSTANTS_CHARACTERS_H
|
||||
|
||||
#if 01
|
||||
typedef enum {
|
||||
CHARACTER_SONIC,
|
||||
#if (GAME >= GAME_SA2)
|
||||
CHARACTER_CREAM,
|
||||
#endif
|
||||
CHARACTER_TAILS,
|
||||
CHARACTER_KNUCKLES,
|
||||
CHARACTER_AMY,
|
||||
|
||||
NUM_CHARACTERS
|
||||
} ECharacters;
|
||||
#else
|
||||
// TODO: Right now these have to be defined like this for BriBaSA_ex to work.
|
||||
// Obviously this shall change!
|
||||
#define CHARACTER_SONIC 0
|
||||
#define CHARACTER_TAILS 1
|
||||
#define CHARACTER_KNUCKLES 2
|
||||
#define CHARACTER_AMY 3
|
||||
#define NUM_CHARACTERS 4
|
||||
#endif
|
||||
|
||||
// NOTE: Put this after NUM_CHARACTERS, to allow BriBaSA_ex to parse this file properly.
|
||||
// Naming it CHARACTER_<something> before NUM_CHARACTERS confuses it.
|
||||
#define CHARACTER_SHARED_ANIM 0
|
||||
|
||||
#define CHARACTER_BIT(character) (1 << (character))
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
#define PARTNER_CHARACTER CHARACTER_TAILS
|
||||
#elif (GAME == GAME_SA2)
|
||||
#define MAIN_CHARACTERS \
|
||||
(CHARACTER_BIT(CHARACTER_SONIC) | CHARACTER_BIT(CHARACTER_CREAM) | CHARACTER_BIT(CHARACTER_TAILS) | CHARACTER_BIT(CHARACTER_KNUCKLES))
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,63 @@
|
||||
#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)
|
||||
#define ENEMY__MON 0 // Jumping monkey
|
||||
#define ENEMY__KIKI 1 // Monkey on tree
|
||||
#define ENEMY__BUZZER 2
|
||||
#define ENEMY__GOHLA 3
|
||||
#define ENEMY__KURAKURA 4
|
||||
#define ENEMY__KUBINAGA 5
|
||||
#define ENEMY__PIKOPIKO 6 // Hammer Clown
|
||||
#define ENEMY__BELL 7
|
||||
#define ENEMY__YADO 8
|
||||
#define ENEMY__CIRCUS 9 // Monkey with explosive
|
||||
#define ENEMY__KOURA 10 // Turtle with spring on its back, can have rocket engines.
|
||||
#define ENEMY__MADILLO 11
|
||||
#define ENEMY__STRAW 12 // Bird
|
||||
#define ENEMY__HAMMERHEAD 13 // Shark-shaped platform
|
||||
#define ENEMY__SPINNER 14
|
||||
#define ENEMY__MOUSE 15
|
||||
#define ENEMY__PEN 16 // Penguin
|
||||
#define ENEMY__GEJIGEJI 17
|
||||
#define ENEMY__BALLOON 18 // Flying Squid
|
||||
#define ENEMY__FLICKEY 19
|
||||
#define ENEMY__KYURA 20
|
||||
#define ENEMY__STAR 21
|
||||
#define ENEMY__BULLETBUZZER 22 // A Buzzer with Jet-Engines
|
||||
#endif
|
||||
|
||||
#endif // GUARD_CONSTANTS_ENEMIES_H
|
||||
@@ -0,0 +1,237 @@
|
||||
#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
|
||||
|
||||
#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)
|
||||
// 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.
|
||||
#define IA__TOGGLE_PLAYER_LAYER__FOREGROUND 0
|
||||
#define IA__TOGGLE_PLAYER_LAYER__BACKGROUND 1
|
||||
#define IA__PLATFORM_A 2
|
||||
#define IA__SPRING__UP 3
|
||||
#define IA__SPRING__DOWN 4
|
||||
#define IA__SPRING__RIGHT 5
|
||||
#define IA__SPRING__LEFT 6
|
||||
#define IA__SPRING__BIG_UPLEFT 7
|
||||
#define IA__SPRING__BIG_UPRIGHT 8
|
||||
#define IA__SPRING__BIG_DOWNRIGHT 9
|
||||
#define IA__SPRING__BIG_DOWNLEFT 10
|
||||
#define IA__SPRING__SMALL_UPRIGHT 11
|
||||
#define IA__SPRING__SMALL_UPLEFT 12
|
||||
#define IA__COMMON_THIN_PLATFORM 13
|
||||
#define IA__DECORATION 14
|
||||
#define IA__RAMP 15
|
||||
#define IA__BOOSTER 16
|
||||
#define IA__INCLINE_RAMP 17
|
||||
#define IA__BOUNCY_SPRING 18
|
||||
#define IA__PLATFORM_CRUMBLING 19
|
||||
#define IA__ROTATING_HANDLE 20
|
||||
#define IA__GAPPED_LOOP__START 21
|
||||
#define IA__GAPPED_LOOP__END 22
|
||||
#define IA__SPIKES__NORMAL_UP 23
|
||||
#define IA__SPIKES__NORMAL_DOWN 24
|
||||
#define IA__SPIKES__NORMAL_LEFT 25
|
||||
#define IA__SPIKES__NORMAL_RIGHT 26
|
||||
#define IA__SPIKES__HIDING_UP 27
|
||||
#define IA__SPIKES__HIDING_DOWN 28
|
||||
#define IA__CORK_SCREW__START 29
|
||||
#define IA__CORK_SCREW__STOP 30
|
||||
#define IA__BOUNCY_BAR 31
|
||||
#define IA__GRIND_RAIL__START_GROUND 32
|
||||
#define IA__GRIND_RAIL__START_AIR 33
|
||||
#define IA__GRIND_RAIL__END_GROUND 34
|
||||
#define IA__GRIND_RAIL__END_FORCED_JUMP 35
|
||||
#define IA__GRIND_RAIL__END_ALTERNATE 36
|
||||
#define IA__GRIND_RAIL__END_AIR 37
|
||||
#define IA__GRIND_RAIL__END_GROUND_LEFT 38
|
||||
#define IA__GRIND_RAIL__END_AIR_LEFT 39
|
||||
#define IA__CORKSCREW__START 40
|
||||
#define IA__CORKSCREW__END 41
|
||||
#define IA__GOAL_LEVER 42
|
||||
#define IA__CHECKPOINT 43
|
||||
#define IA__CEILING_SLOPE__A 44
|
||||
#define IA__TOGGLE__CHECKPOINT 45
|
||||
#define IA__TOGGLE__GOAL 46
|
||||
#define IA__WINDUP_STICK 47
|
||||
#define IA__HOOK_RAIL__UNUSED 48
|
||||
#define IA__HOOK_RAIL__START 49
|
||||
#define IA__HOOK_RAIL__END 50
|
||||
#define IA__WINDMILL 51
|
||||
#define IA__TURNAROUND_BAR 52
|
||||
#define IA__CRANE 53
|
||||
#define IA__DASH_RING 54
|
||||
#define IA__FLOATING_SPRING 55
|
||||
#define IA__NOTE_BLOCK__SPHERE 56
|
||||
#define IA__NOTE_BLOCK__BLOCK 57
|
||||
#define IA__CHORD 58
|
||||
#define IA__KEYBOARD_VERTICAL 59
|
||||
#define IA__KEYBOARD_HORIZONTAL_LEFT 60
|
||||
#define IA__KEYBOARD_HORIZONTAL_RIGHT 61
|
||||
#define IA__GERMAN_FLUTE 62
|
||||
#define IA__TRUMPET_ENTRY 63
|
||||
#define IA__PIPE_INSTRUMENT_ENTRY 64 // TODO: Name
|
||||
#define IA__SLOWING_SNOW 65
|
||||
#define IA__FUNNEL_SPHERE 66
|
||||
#define IA__HALFPIPE__END 67
|
||||
#define IA__HALFPIPE__START 68
|
||||
#define IA__BIG_SNOWBALL 69
|
||||
#define IA__NOTE_BLOCK__2 70
|
||||
#define IA__CEILING_SLOPE__B 71 // Same code as IA__CEILING_SLOPE__A
|
||||
#define IA__PIPE__START 72
|
||||
#define IA__PIPE__END 73
|
||||
#define IA__LIGHT_BRIDGE 74
|
||||
#define IA__ARROW_PLATFORM__LEFT 75
|
||||
#define IA__ARROW_PLATFORM__RIGHT 76
|
||||
#define IA__ARROW_PLATFORM__UP 77
|
||||
#define IA__SPIKE_PLATFORM 78
|
||||
#define IA__PLATFORM_B 79
|
||||
#define IA__LIGHT_GLOBE 80
|
||||
#define IA__PLATFORM_SQUARE 81
|
||||
#define IA__PROPELLER 82
|
||||
#define IA__SLIDY_ICE 83
|
||||
#define IA__SMALL_WINDMILL 84
|
||||
#define IA__PROPELLER_SPRING 85
|
||||
#define IA__WHIRLWIND__A 86
|
||||
#define IA__FAN__LEFT 87
|
||||
#define IA__FAN__RIGHT 88
|
||||
#define IA__FAN__PERIODIC_LEFT 89
|
||||
#define IA__FAN__PERIODIC_RIGHT 90
|
||||
#define IA__LAUNCHER__DOWN_LEFT 91
|
||||
#define IA__LAUNCHER__DOWN_RIGHT 92
|
||||
#define IA__CANNON 93
|
||||
#define IA__POLE 94
|
||||
#define IA__IRON_BALL 95
|
||||
#define IA__FLYING_HANDLE 96
|
||||
#define IA__SPEEDING_PLATFORM 97
|
||||
#define IA__TOGGLE_GRAVITY__DOWN 98
|
||||
#define IA__TOGGLE_GRAVITY__UP 99
|
||||
#define IA__TOGGLE_GRAVITY__TOGGLE 100
|
||||
#define IA__LAUNCHER__UP_LEFT 101
|
||||
#define IA__LAUNCHER__UP_RIGHT 102
|
||||
#define IA__SPECIAL_RING 103
|
||||
#define IA__WHIRLWIND__B 104
|
||||
#define IA__IA105 105
|
||||
#endif
|
||||
|
||||
#endif // GUARD_CONSTANTS_INTERACTABLES_H
|
||||
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,24 @@
|
||||
#ifndef GUARD_CONSTANTS_MP_MAP_INTERACTABLES_H
|
||||
#define GUARD_CONSTANTS_MP_MAP_INTERACTABLES_H
|
||||
|
||||
// Used for the Single Pak, "Collect Rings" stage
|
||||
#define IA__MP_IA000 0 // => IA001
|
||||
#define IA__MP_IA001 1 // => IA002
|
||||
#define IA__MP_IA002 2 // => IA003
|
||||
#define IA__MP_IA003 3 // => IA003
|
||||
#define IA__MP_IA004 4 // => IA001
|
||||
#define IA__MP_IA005 5 // => IA002
|
||||
#define IA__MP_IA006 6 // => IA008
|
||||
#define IA__MP_IA007 7 // => IA009
|
||||
#define IA__MP_IA008 8 // => IA010
|
||||
#define IA__MP_IA009 9 // => IA010
|
||||
#define IA__MP_IA010 10 // => IA012
|
||||
#define IA__MP_IA011 11 // => IA012
|
||||
#define IA__MP_TOGGLE_PLAYER_LAYER__FRONT 12
|
||||
#define IA__MP_TOGGLE_PLAYER_LAYER__BACK 13
|
||||
#define IA__MP_IA014 14 // => IA021
|
||||
#define IA__MP_IA015 15 // => IA022
|
||||
#define IA__MP_IA016 16 // => IA040
|
||||
#define IA__MP_IA017 17 // => IA115
|
||||
|
||||
#endif // GUARD_CONSTANTS_MP_MAP_INTERACTABLES_H
|
||||
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,33 @@
|
||||
#define NUM_LANGUAGES 6
|
||||
|
||||
#define UILANG_JAPANESE 0
|
||||
#define UILANG_ENGLISH 1
|
||||
#define UILANG_COUNT 2
|
||||
#define UILANG_DEFAULT UILANG_ENGLISH
|
||||
|
||||
#define LANG_DEFAULT 0
|
||||
#define LANG_JAPANESE 1
|
||||
#define LANG_ENGLISH 2
|
||||
#define LANG_GERMAN 3
|
||||
#define LANG_FRENCH 4
|
||||
#define LANG_SPANISH 5
|
||||
#define LANG_ITALIAN 6
|
||||
|
||||
#define LanguageIndex(lang) (lang - 1)
|
||||
|
||||
#define TextElementOffset(lang, elementsPerLang, element) (element + ((lang) * (elementsPerLang)))
|
||||
#define TextElementOffsetAlt(lang, elementsPerLang, element) (((lang) * (elementsPerLang)) + element)
|
||||
|
||||
// TODO: move these to a better place
|
||||
|
||||
#define TextElementAlt(elementsPerLang, lang, element, a, b) \
|
||||
[(lang) * (elementsPerLang) + (element - 1)] = { .numTiles = (a), .anim = (b), .variant = (element) }
|
||||
#define TextElement(elementsPerLang, lang, element, a, b) \
|
||||
[TextElementOffset(lang, elementsPerLang, element)] = { .numTiles = (a), .anim = (b), .variant = (element) }
|
||||
|
||||
#define TextElementAlt2(lang, element, a, b) [lang] = { .numTiles = (a), .anim = (b), .variant = (element) }
|
||||
#define TextElementAlt3(element, a, b) [element] = { .numTiles = (a), .anim = (b), .variant = (element) }
|
||||
#define TextElementAlt4(_variant, _numTiles, _anim) \
|
||||
{ \
|
||||
.numTiles = (_numTiles), .anim = (_anim), .variant = (_variant) \
|
||||
}
|
||||
File renamed without changes.
@@ -0,0 +1,134 @@
|
||||
#ifndef GUARD_SA1_UI_GRAPHICS_H
|
||||
#define GUARD_SA1_UI_GRAPHICS_H
|
||||
|
||||
#define UIGFX_ASCII_CHARS 0
|
||||
#define UIGFX_UI_ICON_SONIC 1
|
||||
#define UIGFX_UI_ICON_TAILS 2
|
||||
#define UIGFX_UI_ICON_KNUCKLES 3
|
||||
#define UIGFX_UI_ICON_AMY 4
|
||||
#define UIGFX_UI_ICON_RING 5
|
||||
#define UIGFX_STGINTRO_ZIGZAG_SONIC 6
|
||||
#define UIGFX_STGINTRO_ZIGZAG_TAILS 7
|
||||
#define UIGFX_STGINTRO_ZIGZAG_KNUCKLES 8
|
||||
#define UIGFX_STGINTRO_ZIGZAG_AMY 9
|
||||
#define UIGFX_STGINTRO_CHAR_NAMES 10
|
||||
#define UIGFX_STGRESULT_SONIC 11
|
||||
#define UIGFX_STGRESULT_TAILS 12
|
||||
#define UIGFX_STGRESULT_KNUCKLES 13
|
||||
#define UIGFX_STGRESULT_AMY 14
|
||||
#define UIGFX_STGRESULT_ACT12 15
|
||||
#define UIGFX_STGRESULT_HEADLINE_BACK 16
|
||||
#define UIGFX_STGNAMES_JP_0 17
|
||||
#define UIGFX_18 18
|
||||
#define UIGFX_STGNAME_1 19
|
||||
#define UIGFX_STGNAME_2 20
|
||||
#define UIGFX_STGNAME_3 21
|
||||
#define UIGFX_STGNAME_4 22
|
||||
#define UIGFX_STGNAME_5 23
|
||||
#define UIGFX_STGNAME_6 24
|
||||
#define UIGFX_STGNAME_7 25
|
||||
#define UIGFX_26 26
|
||||
#define UIGFX_27 27
|
||||
#define UIGFX_28 28
|
||||
#define UIGFX_29 29
|
||||
#define UIGFX_30 30
|
||||
#define UIGFX_31 31
|
||||
#define UIGFX_TIMER_DIGITS 32
|
||||
#define UIGFX_OK 33
|
||||
#define UIGFX_34 34
|
||||
#define UIGFX_35 35
|
||||
#define UIGFX_36 36
|
||||
#define UIGFX_37 37
|
||||
#define UIGFX_38 38
|
||||
#define UIGFX_39 39
|
||||
#define UIGFX_40 40
|
||||
#define UIGFX_41 41
|
||||
#define UIGFX_42 42
|
||||
#define UIGFX_43 43
|
||||
#define UIGFX_CHAR_SELECT_OK 44
|
||||
#define UIGFX_CHAR_SELECT_BLACK_BOX_2 45
|
||||
#define UIGFX_CHAR_SP_STAGE_RINGS_BG 46
|
||||
#define UIGFX_47 47
|
||||
#define UIGFX_48 48
|
||||
#define UIGFX_49 49
|
||||
#define UIGFX_50 50
|
||||
#define UIGFX_51 51
|
||||
#define UIGFX_52 52
|
||||
#define UIGFX_53 53
|
||||
#define UIGFX_54 54
|
||||
#define UIGFX_55 55
|
||||
#define UIGFX_56 56
|
||||
#define UIGFX_57 57
|
||||
#define UIGFX_58 58
|
||||
#define UIGFX_59 59
|
||||
#define UIGFX_60 60
|
||||
#define UIGFX_61 61
|
||||
#define UIGFX_62 62
|
||||
#define UIGFX_63 63
|
||||
#define UIGFX_64 64
|
||||
#define UIGFX_65 65
|
||||
#define UIGFX_66 66
|
||||
#define UIGFX_67 67
|
||||
#define UIGFX_68 68
|
||||
#define UIGFX_69 69
|
||||
#define UIGFX_70 70
|
||||
#define UIGFX_71 71
|
||||
#define UIGFX_72 72
|
||||
#define UIGFX_73 73
|
||||
#define UIGFX_74 74
|
||||
#define UIGFX_75 75
|
||||
#define UIGFX_76 76
|
||||
#define UIGFX_77 77
|
||||
#define UIGFX_78 78
|
||||
#define UIGFX_79 79
|
||||
#define UIGFX_80 80
|
||||
#define UIGFX_81 81
|
||||
#define UIGFX_82 82
|
||||
#define UIGFX_83 83
|
||||
#define UIGFX_84 84
|
||||
#define UIGFX_85 85
|
||||
#define UIGFX_86 86
|
||||
#define UIGFX_87 87
|
||||
#define UIGFX_88 88
|
||||
#define UIGFX_89 89
|
||||
#define UIGFX_90 90
|
||||
#define UIGFX_91 91
|
||||
#define UIGFX_92 92
|
||||
#define UIGFX_93 93
|
||||
#define UIGFX_94 94
|
||||
#define UIGFX_95 95
|
||||
#define UIGFX_96 96
|
||||
#define UIGFX_97 97
|
||||
#define UIGFX_98 98
|
||||
#define UIGFX_99 99
|
||||
#define UIGFX_100 100
|
||||
#define UIGFX_101 101
|
||||
#define UIGFX_102 102
|
||||
#define UIGFX_103 103
|
||||
#define UIGFX_104 104
|
||||
#define UIGFX_105 105
|
||||
#define UIGFX_106 106
|
||||
#define UIGFX_107 107
|
||||
#define UIGFX_108 108
|
||||
#define UIGFX_109 109
|
||||
#define UIGFX_110 110
|
||||
#define UIGFX_111 111
|
||||
#define UIGFX_112 112
|
||||
#define UIGFX_113 113
|
||||
#define UIGFX_114 114
|
||||
#define UIGFX_115 115
|
||||
#define UIGFX_116 116
|
||||
#define UIGFX_117 117
|
||||
#define UIGFX_118 118
|
||||
#define UIGFX_119 119
|
||||
#define UIGFX_120 120
|
||||
#define UIGFX_121 121
|
||||
#define UIGFX_122 122
|
||||
#define UIGFX_123 123
|
||||
#define UIGFX_124 124
|
||||
#define UIGFX_125 125
|
||||
#define UIGFX_126 126
|
||||
#define UIGFX_127 127
|
||||
#define UIGFX_OPTIONS 128
|
||||
|
||||
#endif // GUARD_SA1_UI_GRAPHICS_H
|
||||
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,52 @@
|
||||
#ifndef GUARD_CONST_ANIM_COMMANDS_H
|
||||
#define GUARD_CONST_ANIM_COMMANDS_H
|
||||
|
||||
#define ANIM_CMD__TILES -1
|
||||
#define ANIM_CMD__PALETTE -2
|
||||
#define ANIM_CMD__JUMP_BACK -3
|
||||
#define ANIM_CMD__END -4
|
||||
#define ANIM_CMD__PLAY_SOUND -5
|
||||
#define ANIM_CMD__HITBOX -6
|
||||
#define ANIM_CMD__TRANSLATE -7
|
||||
#define ANIM_CMD__8 -8
|
||||
#define ANIM_CMD__CHANGE_ANIM -9
|
||||
#define ANIM_CMD__10 -10
|
||||
#define ANIM_CMD__SET_PRIORITY -11
|
||||
#define ANIM_CMD__12 -12
|
||||
#define ANIM_CMD__SHOW_FRAME -13
|
||||
|
||||
#define NUM_ANIMATION_TABLE_ENTRIES 1133
|
||||
|
||||
#define TILES(index, count) ANIM_CMD__TILES, index, count,
|
||||
#define PALETTE(num, count, offset) ANIM_CMD__PALETTE, num, (((u16)count << 0) | ((u16)offset << 16)),
|
||||
#define JUMP_BACK(offset) ANIM_CMD__JUMP_BACK, offset,
|
||||
#define END() ANIM_CMD__END,
|
||||
#define PLAY_SOUND(id) ANIM_CMD__PLAY_SOUND, id,
|
||||
#define HITBOX(index, left, top, right, bottom) \
|
||||
ANIM_CMD__HITBOX, index, (((left & 0xFF) << 0) | ((top & 0xFF) << 8) | ((right & 0xFF) << 16) | ((bottom & 0xFF) << 24)),
|
||||
#define TRANSLATE(x, y) ANIM_CMD__TRANSLATE, (((u16)x << 0) | ((u16)y << 16)),
|
||||
#define CMD_8(a, b) ANIM_CMD__8, a, b,
|
||||
#define CHANGE_ANIM(anim, variant) ANIM_CMD__CHANGE_ANIM, (((u16)anim << 0) | ((u16)variant << 16)),
|
||||
#define CMD_10(a, b, c) ANIM_CMD__10, a, b, c,
|
||||
#define SET_PRIORITY(prio) ANIM_CMD__SET_PRIORITY, prio,
|
||||
#define CMD_12(a) ANIM_CMD__12, a,
|
||||
#define SHOW_FRAME(duration, frameId) duration, frameId,
|
||||
|
||||
#ifdef M2C
|
||||
// M2C: #undef directives get removed (manully, beforehand), thus the macros would be re-defined
|
||||
// Also apparently it just ignores the __BYTE_ORDER__ check?
|
||||
#else
|
||||
#if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
|
||||
#undef PALETTE
|
||||
#undef HITBOX
|
||||
#undef TRANSLATE
|
||||
#undef CHANGE_ANIM
|
||||
#define PALETTE(num, count, offset) ANIM_CMD__PALETTE, num, (((u16)count << 16) | ((u16)offset << 0)),
|
||||
#define HITBOX(index, left, top, right, bottom) \
|
||||
ANIM_CMD__HITBOX, index, (((left & 0xFF) << 24) | ((top & 0xFF) << 16) | ((right & 0xFF) << 8) | ((bottom & 0xFF) << 0)),
|
||||
#define TRANSLATE(x, y) ANIM_CMD__TRANSLATE, (((u16)x << 16) | ((u16)y << 0)),
|
||||
#define CHANGE_ANIM(anim, variant) ANIM_CMD__CHANGE_ANIM, (((u16)anim << 16) | ((u16)variant << 0)),
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,42 @@
|
||||
#ifndef GUARD_CONSTANTS_ITEMS_H
|
||||
#define GUARD_CONSTANTS_ITEMS_H
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
#define ITEM__ONE_UP 0
|
||||
#define ITEM__SHIELD 1
|
||||
#define ITEM__SHIELD_MAGNETIC 2
|
||||
#define ITEM__INVINCIBILITY 3
|
||||
#define ITEM__SPEED_UP 4
|
||||
#define ITEM__RINGS_RANDOM 5
|
||||
#define ITEM__RINGS_5 6
|
||||
#define ITEM__RINGS_10 7
|
||||
#define ITEM__MP_8 8
|
||||
#define ITEM__MP_9 9
|
||||
#define ITEM__MP_10 10
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
#define ITEM__COUNT 11
|
||||
#else
|
||||
#define ITEM__MP_11 11
|
||||
#define ITEM__MP_12 12
|
||||
|
||||
#define ITEM__COUNT 13
|
||||
#endif
|
||||
#elif (GAME == GAME_SA2)
|
||||
#define ITEM__ONE_UP 0
|
||||
#define ITEM__SHIELD 1
|
||||
#define ITEM__SHIELD_MAGNETIC 2
|
||||
#define ITEM__INVINCIBILITY 3
|
||||
#define ITEM__SPEED_UP 4
|
||||
#define ITEM__RINGS_RANDOM 5
|
||||
#define ITEM__RINGS_5 6
|
||||
#define ITEM__RINGS_10 7
|
||||
#define ITEM__MP_SWAP 8
|
||||
#define ITEM__MP_CONFUSION 9
|
||||
#define ITEM__MP_SLOWDOWN 10
|
||||
#define ITEM__MP_ATTACK 11
|
||||
#define ITEM__MP_ATTACK_2 12
|
||||
#define ITEM__MP_RANDOM 13
|
||||
#endif
|
||||
|
||||
#endif // GUARD_CONSTANTS_ITEMS_H
|
||||
@@ -0,0 +1,83 @@
|
||||
#ifndef GUARD_MOVESTATES_H
|
||||
#define GUARD_MOVESTATES_H
|
||||
|
||||
// NOTE(Jace): Movestates are different across games.
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
/* Many from Sonic Advance 2 */
|
||||
#define MOVESTATE_FACING_LEFT 0x00000001
|
||||
#define MOVESTATE_IN_AIR 0x00000002
|
||||
#define MOVESTATE_4 0x00000004
|
||||
#define MOVESTATE_JUMPING (MOVESTATE_IN_AIR | MOVESTATE_4)
|
||||
#define MOVESTATE_STOOD_ON_OBJ 0x00000008
|
||||
#define MOVESTATE_FLIP_WITH_MOVE_DIR 0x00000010
|
||||
#define MOVESTATE_20 0x00000020
|
||||
#define MOVESTATE_IN_WATER 0x00000040
|
||||
#define MOVESTATE_DEAD 0x00000080
|
||||
#define MOVESTATE_100 0x00000100
|
||||
#define MOVESTATE_200 0x00000200
|
||||
#define MOVESTATE_400 0x00000400
|
||||
#define MOVESTATE_SPINDASH 0x00000400
|
||||
#define MOVESTATE_800 0x00000800 // SA2: MOVESTATE_ICE_SLIDE
|
||||
#define MOVESTATE_1000 0x00001000
|
||||
#define MOVESTATE_2000 0x00002000
|
||||
#define MOVESTATE_4000 0x00004000
|
||||
#define MOVESTATE_8000 0x00008000
|
||||
#define MOVESTATE_10000 0x00010000
|
||||
#define MOVESTATE_20000 0x00020000
|
||||
#define MOVESTATE_40000 0x00040000
|
||||
#define MOVESTATE_80000 0x00080000
|
||||
#define MOVESTATE_100000 0x00100000 // visibility?
|
||||
#define MOVESTATE_IGNORE_INPUT 0x00200000 // does not ignore Start-Button
|
||||
#define MOVESTATE_IA_OVERRIDE 0x00400000
|
||||
#define MOVESTATE_800000 0x00800000
|
||||
#define MOVESTATE_1000000 0x01000000
|
||||
#if (GAME == GAME_SA1)
|
||||
#define MOVESTATE_2000000 0x02000000
|
||||
#elif (GAME == GAME_SA2)
|
||||
#define MOVESTATE_BOOST_EFFECT_ON 0x02000000
|
||||
#endif
|
||||
#define MOVESTATE_4000000 0x04000000
|
||||
#define MOVESTATE_GOAL_REACHED 0x08000000
|
||||
#define MOVESTATE_10000000 0x10000000
|
||||
#define MOVESTATE_SOME_ATTACK 0x20000000
|
||||
#define MOVESTATE_IN_SCRIPTED 0x40000000 // Player speed/pos are currently handled by an Interactable
|
||||
#define MOVESTATE_80000000 0x80000000
|
||||
#elif (GAME == GAME_SA2)
|
||||
/* Sonic Advance 2 */
|
||||
#define MOVESTATE_FACING_LEFT 0x00000001
|
||||
#define MOVESTATE_IN_AIR 0x00000002
|
||||
#define MOVESTATE_SPIN_ATTACK 0x00000004
|
||||
#define MOVESTATE_JUMPING (MOVESTATE_IN_AIR | MOVESTATE_SPIN_ATTACK)
|
||||
#define MOVESTATE_STOOD_ON_OBJ 0x00000008
|
||||
#define MOVESTATE_FLIP_WITH_MOVE_DIR 0x00000010
|
||||
#define MOVESTATE_20 0x00000020
|
||||
#define MOVESTATE_IN_WATER 0x00000040
|
||||
#define MOVESTATE_DEAD 0x00000080
|
||||
#define MOVESTATE_100 0x00000100
|
||||
#define MOVESTATE_200 0x00000200
|
||||
#define MOVESTATE_400 0x00000400
|
||||
#define MOVESTATE_ICE_SLIDE 0x00000800
|
||||
#define MOVESTATE_1000 0x00001000
|
||||
#define MOVESTATE_2000 0x00002000
|
||||
#define MOVESTATE_4000 0x00004000
|
||||
#define MOVESTATE_8000 0x00008000
|
||||
#define MOVESTATE_10000 0x00010000
|
||||
#define MOVESTATE_20000 0x00020000
|
||||
#define MOVESTATE_40000 0x00040000
|
||||
#define MOVESTATE_80000 0x00080000
|
||||
#define MOVESTATE_100000 0x00100000
|
||||
#define MOVESTATE_IGNORE_INPUT 0x00200000 // does not ignore Start-Button
|
||||
#define MOVESTATE_IA_OVERRIDE 0x00400000
|
||||
#define MOVESTATE_800000 0x00800000
|
||||
#define MOVESTATE_1000000 0x01000000
|
||||
#define MOVESTATE_BOOST_EFFECT_ON 0x02000000
|
||||
#define MOVESTATE_4000000 0x04000000
|
||||
#define MOVESTATE_GOAL_REACHED 0x08000000
|
||||
#define MOVESTATE_10000000 0x10000000
|
||||
#define MOVESTATE_SOME_ATTACK 0x20000000
|
||||
#define MOVESTATE_IN_SCRIPTED 0x40000000 // Player speed/pos are currently handled by an Interactable
|
||||
#define MOVESTATE_80000000 0x80000000
|
||||
#endif
|
||||
|
||||
#endif // GUARD_MOVESTATES_H
|
||||
@@ -0,0 +1,24 @@
|
||||
#ifndef GUARD_CONSTANTS_MP_MAP_INTERACTABLES_H
|
||||
#define GUARD_CONSTANTS_MP_MAP_INTERACTABLES_H
|
||||
|
||||
// Used for the Single Pak, "Collect Rings" stage
|
||||
#define IA__MP_IA000 0 // => IA001
|
||||
#define IA__MP_IA001 1 // => IA002
|
||||
#define IA__MP_IA002 2 // => IA003
|
||||
#define IA__MP_IA003 3 // => IA003
|
||||
#define IA__MP_IA004 4 // => IA001
|
||||
#define IA__MP_IA005 5 // => IA002
|
||||
#define IA__MP_IA006 6 // => IA008
|
||||
#define IA__MP_IA007 7 // => IA009
|
||||
#define IA__MP_IA008 8 // => IA010
|
||||
#define IA__MP_IA009 9 // => IA010
|
||||
#define IA__MP_IA010 10 // => IA012
|
||||
#define IA__MP_IA011 11 // => IA012
|
||||
#define IA__MP_TOGGLE_PLAYER_LAYER__FRONT 12
|
||||
#define IA__MP_TOGGLE_PLAYER_LAYER__BACK 13
|
||||
#define IA__MP_IA014 14 // => IA021
|
||||
#define IA__MP_IA015 15 // => IA022
|
||||
#define IA__MP_IA016 16 // => IA040
|
||||
#define IA__MP_IA017 17 // => IA115
|
||||
|
||||
#endif // GUARD_CONSTANTS_MP_MAP_INTERACTABLES_H
|
||||
@@ -0,0 +1,45 @@
|
||||
#ifndef GUARD_PLAYER_TRANSITIONS_H
|
||||
#define GUARD_PLAYER_TRANSITIONS_H
|
||||
|
||||
// 0x07 = Set in Egg Utopia - Launcher
|
||||
// 0x08 = Set in Coll_Player_Enemy_AdjustSpeed (0x0800CB18 - collision.c)
|
||||
// 0x0A = Player cleared the stage (only for Acts, not Bosses?)
|
||||
// 0x0B = Something Grinding
|
||||
// 0x0C = Something Grinding
|
||||
// 0x0D = Something Grinding
|
||||
// 0x16 = Set in IA Ramp
|
||||
// 0x17 = Used in interactable CeilingSlope
|
||||
// 0x18 = Dash Ring Object
|
||||
// 0x1C = Set by IA ClearPipe_End if data[1] is 0
|
||||
|
||||
#define PLTRANS_NONE 0
|
||||
#define PLTRANS_TOUCH_GROUND 1
|
||||
#define PLTRANS_CORKSCREW_END 2
|
||||
#define PLTRANS_INIT_JUMP 3
|
||||
#define PLTRANS_PT4 4
|
||||
#define PLTRANS_UNCURL 5
|
||||
#define PLTRANS_PT6 6
|
||||
#define PLTRANS_PT7 7
|
||||
#define PLTRANS_HOMING_ATTACK_RECOIL 8
|
||||
#define PLTRANS_HURT 9
|
||||
#define PLTRANS_REACHED_GOAL 10
|
||||
#define PLTRANS_GRINDING 11
|
||||
#define PLTRANS_GRIND_RAIL_END_GROUND 12
|
||||
#define PLTRANS_GRIND_RAIL_END_AIR 13
|
||||
#define PLTRANS_SPRING_UP 14
|
||||
#define PLTRANS_SPRING_DOWN 15
|
||||
#define PLTRANS_SPRING_LEFT 16
|
||||
#define PLTRANS_SPRING_RIGHT 17
|
||||
#define PLTRANS_SPRING_UP_LEFT 18
|
||||
#define PLTRANS_SPRING_UP_RIGHT 19
|
||||
#define PLTRANS_SPRING_DOWN_LEFT 20
|
||||
#define PLTRANS_SPRING_DOWN_RIGHT 21
|
||||
#define PLTRANS_RAMP_AND_DASHRING 22
|
||||
#define PLTRANS_PT23 23
|
||||
#define PLTRANS_DASHRING 24
|
||||
#define PLTRANS_PIPE_ENTRY 25
|
||||
#define PLTRANS_PROPELLER_SPRING 26
|
||||
#define PLTRANS_CORKSCREW 27
|
||||
#define PLTRANS_PIPE_EXIT 28
|
||||
|
||||
#endif // GUARD_PLAYER_TRANSITIONS_H
|
||||
@@ -0,0 +1,603 @@
|
||||
#ifndef GUARD_CONSTANTS_SONGS_H
|
||||
#define GUARD_CONSTANTS_SONGS_H
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
|
||||
// 000
|
||||
#define MUS_INTRO 1
|
||||
#define MUS_TITLE_FANFARE 2
|
||||
#define MUS_CHARACTER_SELECTION 3
|
||||
#define MUS_COURSE_SELECTION 4
|
||||
#define MUS_VS_PLEASE_WAIT 5
|
||||
#define MUS_006 6
|
||||
#define MUS_007 7
|
||||
#define MUS_008 8
|
||||
#define MUS_009 9
|
||||
#define MUS_VS_RECORD 10
|
||||
#define MUS_OPTIONS 11 // Scrap Brain Zone remix
|
||||
#define MUS_NEO_GREEN_HILL__ACT_1 12
|
||||
#define MUS_NEO_GREEN_HILL__ACT_2 13
|
||||
#define MUS_SECRET_BASE__ACT_1 14
|
||||
#define MUS_SECRET_BASE__ACT_2 15
|
||||
#define MUS_CASINO_PARADISE__ACT_1 16
|
||||
#define MUS_CASINO_PARADISE__ACT_2 17
|
||||
#define MUS_ICE_MOUNTAIN__ACT_1 18
|
||||
#define MUS_ICE_MOUNTAIN__ACT_2 19
|
||||
#define MUS_ANGEL_ISLAND__ACT_1 20
|
||||
#define MUS_ANGEL_ISLAND__ACT_2 21
|
||||
#define MUS_EGG_ROCKET 22
|
||||
#define MUS_COSMIC_ANGEL 23
|
||||
#define MUS_X_ZONE 24
|
||||
#define MUS_FINAL_BOSS 25
|
||||
#define MUS_EXTRA_BOSS 26
|
||||
#define MUS_DROWNING 27
|
||||
#define MUS_INVINCIBILITY 28
|
||||
#define MUS_BOSS_FIGHT 29
|
||||
#define MUS_BOSS_INTRO 30
|
||||
#define MUS_BOSS_MECHA_KNUCKLES 31
|
||||
#define MUS_BOSS_EGG_SNAKE 32
|
||||
#define MUS_ACT_CLEAR 33
|
||||
#define MUS_BOSS_CLEAR 34
|
||||
#define MUS_FINAL_CLEAR 35
|
||||
#define MUS_EXTRA_CLEAR 36
|
||||
#define MUS_GAME_OVER 37
|
||||
#define MUS_CUTSCENE_TORNADO_RESCUE 38
|
||||
#define MUS_CUTSCENE_A_FEW_DAYS_LATER 39
|
||||
#define MUS_STAFF_CREDITS 40
|
||||
#define MUS_SPECIAL_STAGE_INTRO 41
|
||||
#define MUS_SPECIAL_STAGE 42
|
||||
#define MUS_SP_STAGE_TRICK 43
|
||||
#define MUS_SPECIAL_STAGE_CLEAR 44
|
||||
#define MUS_CHAOS_EMERALD 45
|
||||
#define MUS_SPECIAL_STAGE_RESULT_LOSE 46
|
||||
#define MUS_047 47
|
||||
#define MUS_PLAYER_DATA 48 // Star Light Zone remix
|
||||
#define MUS_BOSS_EGG_WRECKER 49
|
||||
#define MUS_BOSS_EGG_DRILLSTER 50
|
||||
#define MUS_051 51
|
||||
#define MUS_VS_SCORE_OVERVIEW 52
|
||||
#define MUS_VS_RING_RUSH_MODE 53
|
||||
#define MUS_VS_RESULT 54
|
||||
|
||||
/* 055 - 101: Dummies */
|
||||
|
||||
#define SE_RING 102
|
||||
#define SE_SHIFT 103
|
||||
#define SE_SUCCESS 104
|
||||
#define SE_ABORT 105
|
||||
#define SE_SELECT 106
|
||||
#define SE_RETURN 107
|
||||
#define SE_MENU_CURSOR_MOVE 108
|
||||
#define SE_SPIN_ATTACK 109
|
||||
#define SE_SPINDASH_RELEASE 110
|
||||
#define SE_SONIC_SKID_ATTACK 111
|
||||
#define SE_SONIC_MIDAIR_SOMERSAULT 112
|
||||
#define SE_SONIC_INSTA_SHIELD 113
|
||||
#define SE_GRINDING 114
|
||||
#define SE_BRAKE 115
|
||||
#define SE_JUMP 116
|
||||
#define SE_RING_COPY 117
|
||||
#define SE_RINGS_LOST 118
|
||||
#define SE_LIFE_LOST 119
|
||||
#define SE_TAILS_PROPELLER_FLYING 120
|
||||
#define SE_TAILS_TAIL_SWIPE 121
|
||||
#define SE_122 122
|
||||
#define SE_123 123
|
||||
#define SE_124 124
|
||||
#define SE_125 125
|
||||
#define SE_126 126
|
||||
#define SE_127 127
|
||||
#define SE_128 128
|
||||
#define SE_129 129
|
||||
#define SE_AMY_SUPER_HAMMER_ATTACK 130
|
||||
#define SE_AMY_HAMMER_SWIRL 131
|
||||
#define SE_132 132
|
||||
#define SE_AMY_ROLLS 133
|
||||
#define SE_AMY_GRINDING 134
|
||||
#define SE_GOAL 135
|
||||
#define SE_136 136
|
||||
#define SE_137 137
|
||||
#define SE_ITEM_BOX 138
|
||||
#define SE_TIMER 139 // Almost Time Up / Extra Boss Rings low
|
||||
#define SE_STAGE_RESULT_COUNTER 140
|
||||
#define SE_STAGE_RESULT_COUNTER_DONE 141
|
||||
#define SE_PAUSE 142
|
||||
#define SE_BOSS_HIT 143
|
||||
#define SE_EXPLOSION 144
|
||||
#define SE_IMPACT 145 // Boss 1 Hammer hits ground
|
||||
#define SE_146 146
|
||||
#define SE_147 147
|
||||
#define SE_148 148
|
||||
#define SE_149 149
|
||||
#define SE_150 150
|
||||
#define SE_151 151
|
||||
#define SE_152 152
|
||||
#define SE_153 153
|
||||
#define SE_154 154
|
||||
#define SE_155 155
|
||||
#define SE_156 156
|
||||
#define SE_157 157
|
||||
#define SE_158 158
|
||||
#define SE_159 159
|
||||
#define SE_160 160
|
||||
#define SE_KNOCK_TEAMMATE 161
|
||||
#define SE_KNOCK_OPPONENT 162 // also EXTRA_BOSS_LASER
|
||||
#define SE_CHAO_HUH 163
|
||||
#define SE_164 164
|
||||
// 165
|
||||
#define SE_TIME_UP 166
|
||||
#define SE_ITEM_BOX_2 167
|
||||
#define SE_ACTIVATE_SHIELD 168
|
||||
#define SE_CHECKPOINT 169
|
||||
#define SE_SPRING 170
|
||||
#define SE_171 171
|
||||
#define SE_BOOSTER 172
|
||||
#define SE_173 173
|
||||
#define SE_POLE 175
|
||||
#define SE_CRUMBLING_PLATFORM 173
|
||||
#define SE_TRAMPOLINE 176
|
||||
#define SE_WATER_BRIDGE_SPLASH 177
|
||||
#define SE_SHRUBBERY 178
|
||||
#define SE_179 179
|
||||
#define SE_HOOK_RAIL 180
|
||||
#define SE_LIFT 181
|
||||
#define SE_LAVA_PLATFORM_SPURT 182
|
||||
#define SE_BUMPER_A 183
|
||||
#define SE_BUMPER_B 184
|
||||
#define SE_PANEL_GATE 185
|
||||
// 186
|
||||
// 187
|
||||
#define SE_188 188
|
||||
#define SE_BALLOON_POP 189
|
||||
#define SE_WATERFALL_SURFACE_HIT 190
|
||||
#define SE_AIR_BUBBLE 191
|
||||
#define SE_DROWNED 192
|
||||
#define SE_193 193
|
||||
#define SE_194 194
|
||||
#define SE_195 195
|
||||
#define SE_196 196
|
||||
// 197
|
||||
#define SE_198 198
|
||||
#define SE_199 199
|
||||
#define SE_200 200
|
||||
#define SE_201 201
|
||||
#define SE_202 202
|
||||
#define SE_203 203
|
||||
#define SE_204 204
|
||||
#define SE_205 205
|
||||
#define SE_BOWL 206
|
||||
#define SE_BOWL_2 207
|
||||
#define SE_BOWL_3 208
|
||||
#define SE_CAROUSEL_A 209
|
||||
#define SE_CAROUSEL_B 210
|
||||
#define SE_CAROUSEL_C 211
|
||||
#define SE_RUN_WHEEL_A 212
|
||||
#define SE_RUN_WHEEL_B 213
|
||||
#define SE_RUN_WHEEL_C 214
|
||||
#define SE_215 215
|
||||
#define SE_216 216
|
||||
#define SE_217 217
|
||||
#define SE_218 218
|
||||
#define SE_219 219
|
||||
#define SE_220 220
|
||||
#define SE_221 221
|
||||
#define SE_222 222
|
||||
#define SE_223 223
|
||||
#define SE_224 224
|
||||
|
||||
/* 225 - 300: Dummies */
|
||||
|
||||
#define SE_301 301
|
||||
#define SE_302 302
|
||||
#define SE_VS_MULTIPAK_CONN_CLOSE 303
|
||||
#define SE_VS_MULTIPAK_ROUND_OVER 304
|
||||
#define SE_305 305
|
||||
#define SE_306 306
|
||||
#define MUS_1_UP 307
|
||||
|
||||
#elif (GAME == GAME_SA2)
|
||||
|
||||
#define MUS_DUMMY 0
|
||||
#define MUS_INTRO 1
|
||||
#define MUS_TITLE_FANFARE 2
|
||||
#define MUS_CHARACTER_SELECTION 3
|
||||
#define MUS_TA_COURSE_SELECTION 4 // plays both in Time Attack and (initially) the zone map
|
||||
#define MUS_COURSE_SELECTION_2 5
|
||||
#define MUS_COURSE_SELECTION_3 6
|
||||
#define MUS_TIME_ATTACK_MENU 7
|
||||
// 8
|
||||
#define MUS_OPTIONS 9
|
||||
// 10
|
||||
// 11
|
||||
// 12
|
||||
#define MUS_LEAF_FOREST__ACT_1 13
|
||||
#define MUS_LEAF_FOREST__ACT_2 14
|
||||
#define MUS_HOT_CRATER__ACT_1 15
|
||||
#define MUS_HOT_CRATER__ACT_2 16
|
||||
#define MUS_MUSIC_PLANT__ACT_1 17
|
||||
#define MUS_MUSIC_PLANT__ACT_2 18
|
||||
#define MUS_ICE_PARADISE__ACT_1 19
|
||||
#define MUS_ICE_PARADISE__ACT_2 20
|
||||
#define MUS_SKY_CANYON__ACT_1 21
|
||||
#define MUS_SKY_CANYON__ACT_2 22
|
||||
#define MUS_TECHNO_BASE__ACT_1 23
|
||||
#define MUS_TECHNO_BASE__ACT_2 24
|
||||
#define MUS_EGG_UTOPIA__ACT_1 25
|
||||
#define MUS_EGG_UTOPIA__ACT_2 26
|
||||
#define MUS_XX__FINAL_ZONE 27
|
||||
#define MUS_TRUE_AREA_53 28
|
||||
#define MUS_INVINCIBILITY 29
|
||||
// 30
|
||||
#define MUS_DROWNING 31
|
||||
#define MUS_BOSS 32
|
||||
#define MUS_BOSS_PINCH 33
|
||||
#define MUS_BOSS_KNUCKLES 34
|
||||
#define MUS_7_BOSS 35
|
||||
#define MUS_7_BOSS_PINCH 36
|
||||
#define MUS_FINAL_BOSS 37
|
||||
#define MUS_FINAL_BOSS_PINCH 38
|
||||
// 39
|
||||
// 40
|
||||
#define MUS_GAME_OVER 41
|
||||
#define MUS_FINAL_ENDING 42
|
||||
#define MUS_EXTRA_ENDING 43
|
||||
#define MUS_STAFF_CREDITS 44
|
||||
#define MUS_DEMO_1 45
|
||||
#define MUS_DEMO_2 46
|
||||
// 47
|
||||
#define MUS_EXTRA_DEMO_1 48
|
||||
#define MUS_EXTRA_DEMO_2 49
|
||||
#define MUS_SPECIAL_STAGE_INTRO 50
|
||||
#define MUS_SPECIAL_STAGE 51
|
||||
#define MUS_SPECIAL_STAGE_PINCH 52
|
||||
#define MUS_ACHIEVEMENT 53
|
||||
#define MUS_SPECIAL_STAGE_CLEAR 54
|
||||
#define MUS_SPECIAL_STAGE_RESULT 55
|
||||
#define MUS_CHAOS_EMERALD 56
|
||||
#define MUS_SPECIAL_STAGE_RESULT_LOSE 57
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
#define MUS_VS_2 58
|
||||
#define MUS_VS_3 59
|
||||
#else
|
||||
#define MUS_VS_2 2
|
||||
#define MUS_VS_3 5
|
||||
#endif
|
||||
|
||||
// 60
|
||||
#define MUS_CONNECTION_PENDING 61
|
||||
// 62
|
||||
// 63
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
#define MUS_VS_LOBBY 64
|
||||
#else
|
||||
#define MUS_VS_LOBBY 3
|
||||
#endif
|
||||
// 65
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
#define MUS_VS_SELECT_PAK_MODE 66
|
||||
#else
|
||||
#define MUS_VS_SELECT_PAK_MODE 1
|
||||
#endif
|
||||
|
||||
/* 67 - 101: Dummies */
|
||||
|
||||
// TODO: Many soundeffect IDs are shared between SA! and SA2!
|
||||
#define SE_RING 102
|
||||
#define SE_SHIFT 103
|
||||
#define SE_SUCCESS 104
|
||||
#define SE_ABORT 105
|
||||
#define SE_SELECT 106
|
||||
#define SE_RETURN 107
|
||||
#define SE_MENU_CURSOR_MOVE 108
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
#define SE_SPIN_ATTACK 109
|
||||
#else
|
||||
#define SE_SPIN_ATTACK 11
|
||||
#endif
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
#define SE_SPIN_DASH_RELEASE 110
|
||||
#else
|
||||
#define SE_SPIN_DASH_RELEASE 12
|
||||
#endif
|
||||
|
||||
#define SE_SONIC_SKID_ATTACK 111
|
||||
#define SE_SONIC_MIDAIR_SOMERSAULT 112
|
||||
#define SE_SONIC_INSTA_SHIELD 113
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
#define SE_GRINDING 114
|
||||
#else
|
||||
#define SE_GRINDING 26
|
||||
#endif
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
#define SE_BRAKE 115
|
||||
#define SE_JUMP 116
|
||||
#else
|
||||
#define SE_BRAKE 13
|
||||
#define SE_JUMP 14
|
||||
#endif
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
#define SE_RING_COPY 117
|
||||
#else
|
||||
#define SE_RING_COPY 15
|
||||
#endif
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
#define SE_RINGS_LOST 118
|
||||
#define SE_LIFE_LOST 119
|
||||
#else
|
||||
#define SE_RINGS_LOST 16
|
||||
#define SE_LIFE_LOST 17
|
||||
#endif
|
||||
|
||||
#define SE_TAILS_PROPELLER_FLYING 120
|
||||
#define SE_TAILS_TAIL_SWIPE 121
|
||||
// 122
|
||||
// 123
|
||||
// 124
|
||||
#define SE_125 125
|
||||
#define SE_126 126
|
||||
#define SE_127 127
|
||||
#define SE_AMY_GROUND_HAMMER 128
|
||||
#define SE_AMY_SUPER_HAMMER_ATTACK 129
|
||||
// 130
|
||||
#define SE_AMY_HAMMER_SWIRL 131
|
||||
// 132
|
||||
// 133
|
||||
// 134
|
||||
#define SE_SA1_GOAL_POST 135
|
||||
// 136
|
||||
// 137
|
||||
#define SE_ITEM_BOX 138
|
||||
#define SE_TIMER 139
|
||||
#define SE_STAGE_RESULT_COUNTER 140
|
||||
#define SE_STAGE_RESULT_COUNTER_DONE 141
|
||||
#define SE_PAUSE_SCREEN 142
|
||||
#define SE_143 143
|
||||
#define SE_EXPLOSION 144
|
||||
#define SE_145 145
|
||||
#define SE_146 146
|
||||
#define SE_SPIN 147
|
||||
#define SE_148 148
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
#define SE_TIME_UP 149
|
||||
#else
|
||||
#define SE_TIME_UP 18
|
||||
#endif
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
#define SE_ITEM_BOX_2 150
|
||||
#else
|
||||
#define SE_ITEM_BOX_2 19
|
||||
#endif
|
||||
|
||||
#define SE_ACTIVATE_SHIELD 151
|
||||
#define SE_CHECKPOINT 152
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
#define SE_SPRING 153
|
||||
#else
|
||||
#define SE_SPRING 20
|
||||
#endif
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
#define SE_SPIKES 154
|
||||
#else
|
||||
#define SE_SPIKES 21
|
||||
#endif
|
||||
|
||||
#define SE_SPEED_BOOSTER 155
|
||||
#define SE_WATERFALL_SURFACE_HIT 156
|
||||
#define SE_157 157
|
||||
#define SE_AIR_BUBBLE 158
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
#define SE_ALARM_1 159
|
||||
#else
|
||||
#define SE_ALARM_1 22
|
||||
#endif
|
||||
|
||||
#define SE_ALARM_2 160
|
||||
#define SE_ALARM_3 161
|
||||
#define SE_ALARM_4 162
|
||||
#define SE_ALARM_5 163
|
||||
#define SE_ALARM_6 164
|
||||
#define SE_ALARM_7 165
|
||||
#define SE_ALARM_8 166
|
||||
#define SE_ALARM_9 167
|
||||
#define SE_ALARM_10 168
|
||||
#define SE_SPRINGY_POLE 169
|
||||
#define SE_SPRINGY_SPRING 170
|
||||
|
||||
/* 171 - 200: Dummies */
|
||||
|
||||
#define VOICE__ANNOUNCER__SONIC_ADVANCE_2 201
|
||||
#define VOICE__ANNOUNCER__SONIC 202
|
||||
#define VOICE__ANNOUNCER__TAILS 203
|
||||
#define VOICE__ANNOUNCER__KNUCKLES 204
|
||||
#define VOICE__ANNOUNCER__AMY 205
|
||||
#define VOICE__ANNOUNCER__CREAM 206
|
||||
// 207
|
||||
#define VOICE__ANNOUNCER__3 208
|
||||
#define VOICE__ANNOUNCER__2 209
|
||||
#define VOICE__ANNOUNCER__1 210
|
||||
#define VOICE__ANNOUNCER__GO 211
|
||||
#define VOICE__ANNOUNCER__CONGRATULATIONS 212
|
||||
#define SE_MAP_MOVE 213
|
||||
#define SE_MAP_214 214
|
||||
#define SE_MAP_MOVE_END 215
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
#define SE_216 216
|
||||
#else
|
||||
#define SE_216 23
|
||||
#endif
|
||||
|
||||
#define SE_ITEM_CONFUSION 217
|
||||
#define SE_218 218
|
||||
#define SE_219 219
|
||||
#define SE_DELETE_GAME_DATA 220
|
||||
#define SE_221 221
|
||||
#define SE_222 222
|
||||
// Plays when Sonic does his "Bound" trick and collides with the ground
|
||||
#define SE_SONIC_BOUND_IMPACT 223
|
||||
#define SE_224 224
|
||||
#define SE_SPIRAL_ATTACK 225
|
||||
#define SE_226 226
|
||||
#define SE_CREAM_FLYING 227
|
||||
#define SE_228 228
|
||||
#define SE_CREAM_CHEESE_ATTACK 229
|
||||
#define SE_TAILS_CREAM_STOP_N_SLAM 230
|
||||
#define SE_231 231
|
||||
#define SE_LONG_BRAKE 232
|
||||
// 233
|
||||
#define SE_234 234
|
||||
#define SE_235 235
|
||||
#define SE_236 236
|
||||
#define SE_EGGMOBILE_FLEES 237
|
||||
#define SE_238 238
|
||||
#define SE_239 239
|
||||
// 240
|
||||
#define SE_241 241
|
||||
#define SE_242 242
|
||||
#define SE_243 243
|
||||
#define SE_244 244
|
||||
#define SE_245 245
|
||||
#define SE_246 246
|
||||
// 247
|
||||
#define SE_PROJECTILE_DROP 248
|
||||
#define SE_PROJECTILE_IMPACT 249
|
||||
#define SE_250 250
|
||||
#define SE_251 251
|
||||
#define SE_252 252
|
||||
#define SE_253 253
|
||||
#define SE_254 254
|
||||
#define SE_255 255
|
||||
#define SE_256 256
|
||||
#define SE_257 257
|
||||
#define SE_258 258
|
||||
#define SE_259 259
|
||||
#define SE_260 260
|
||||
#define SE_261 261
|
||||
#define SE_262 262
|
||||
#define SE_263 263
|
||||
#define SE_264 264
|
||||
#define SE_265 265
|
||||
#define SE_266 266
|
||||
#define SE_267 267
|
||||
#define SE_268 268
|
||||
#define SE_269 269
|
||||
#define SE_SUCTION 270
|
||||
#define SE_271 271
|
||||
#define SE_272 272
|
||||
#define SE_273 273
|
||||
#define SE_274 274
|
||||
#define SE_275 275
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
#define SE_276 276
|
||||
#else
|
||||
#define SE_276 25
|
||||
#endif
|
||||
|
||||
#define SE_DASH_RING 277
|
||||
#define SE_278 278
|
||||
#define SE_279 279
|
||||
#define SE_280 280
|
||||
#define SE_281 281
|
||||
#define SE_282 282
|
||||
#define SE_283 283
|
||||
#define SE_284 284
|
||||
#define SE_WHIRLWIND 285
|
||||
#define SE_286 286
|
||||
#define SE_287 287
|
||||
#define SE_288 288
|
||||
#define SE_289 289
|
||||
#define SE_POLE_SLIDING 290
|
||||
#define SE_291 291
|
||||
#define SE_ICE_PARADISE_SLIDE 292
|
||||
#define SE_293 293
|
||||
#define SE_TECHNO_BASE_COMMON 294
|
||||
#define SE_295 295
|
||||
#define SE_296 296
|
||||
#define SE_297 297
|
||||
#define SE_SPECIAL_RING 298
|
||||
// 299
|
||||
|
||||
/* 300 - 329: Music Plant Instruments */
|
||||
#define SE_MUSIC_PLANT_SPRING_1 300
|
||||
#define SE_MUSIC_PLANT_SPRING_2 301
|
||||
#define SE_MUSIC_PLANT_SPRING_3 302
|
||||
#define SE_MUSIC_PLANT_SPRING_4 303
|
||||
#define SE_MUSIC_PLANT_CRASH_HIT 304
|
||||
|
||||
// TODO(Jace): Name them by the note they play, instead of 1-n
|
||||
#define SE_MUSIC_PLANT_NOTES_1 305
|
||||
#define SE_MUSIC_PLANT_NOTES_2 306
|
||||
#define SE_MUSIC_PLANT_NOTES_3 307
|
||||
#define SE_MUSIC_PLANT_NOTES_4 308
|
||||
#define SE_MUSIC_PLANT_NOTES_5 309
|
||||
#define SE_MUSIC_PLANT_NOTES_6 310
|
||||
#define SE_MUSIC_PLANT_NOTES_7 311
|
||||
#define SE_MUSIC_PLANT_NOTES_8 312
|
||||
#define SE_MUSIC_PLANT_GLOCKENSPIEL_1 313
|
||||
#define SE_MUSIC_PLANT_GLOCKENSPIEL_2 314
|
||||
#define SE_MUSIC_PLANT_GLOCKENSPIEL_3 315
|
||||
#define SE_MUSIC_PLANT_GLOCKENSPIEL_4 316
|
||||
#define SE_MUSIC_PLANT_GLOCKENSPIEL_5 317
|
||||
#define SE_MUSIC_PLANT_GLOCKENSPIEL_6 318
|
||||
#define SE_MUSIC_PLANT_ENTER_HORN 319
|
||||
#define SE_MUSIC_PLANT_EXIT_HORN 320
|
||||
#define SE_MUSIC_PLANT_ENTER_HORN2 321
|
||||
#define SE_MUSIC_PLANT_EXIT_HORN2 322
|
||||
#define SE_MUSIC_PLANT_HORN3 323
|
||||
#define SE_MUSIC_PLANT_CHORD 324
|
||||
#define SE_MUSIC_PLANT_PIANO 325
|
||||
#define SE_MUSIC_PLANT_FLUTE_1 326
|
||||
#define SE_MUSIC_PLANT_FLUTE_2 327
|
||||
#define SE_MUSIC_PLANT_FLUTE_3 328
|
||||
#define SE_MUSIC_PLANT_FLUTE_4 329
|
||||
// 330
|
||||
#define SE_331 331
|
||||
#define SE_332 332
|
||||
#define SE_333 333
|
||||
|
||||
/* 334 - 400: Dummies */
|
||||
|
||||
#define MUS_ACT_CLEAR 401
|
||||
#define MUS_BOSS_CLEAR 402
|
||||
#define MUS_FINAL_CLEAR 403
|
||||
#define MUS_EXTRA_CLEAR 404
|
||||
#define MUS_TIME_ATTACK_2 405
|
||||
#define MUS_TIME_ATTACK_3 406
|
||||
#define MUS_1_UP 407
|
||||
#define MUS_MESSAGE_2 408
|
||||
|
||||
#define MUS_GOT_ALL_CHAOS_EMERALDS 410
|
||||
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
#define MUS_FANFARE 411
|
||||
#else
|
||||
#define MUS_FANFARE 4
|
||||
#endif
|
||||
|
||||
#define MUS_VS_EXIT 412
|
||||
#define MUS_VS_SUCCESS 413
|
||||
#define MUS_VS_MISS 414
|
||||
#define MUS_MESSAGE 415
|
||||
|
||||
/* 416 - 503: Dummies */
|
||||
|
||||
#define MUS_504 504
|
||||
#define MUS_505 505
|
||||
#define MUS_506 506
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
File renamed without changes.
@@ -0,0 +1,356 @@
|
||||
#ifndef GUARD_TILEMAPS
|
||||
#define GUARD_TILEMAPS
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
|
||||
// NOTE: * 0-53 are MapHeaders
|
||||
#define TM_LEVEL_METATILES_0(level) (((level)*3) + 0)
|
||||
#define TM_LEVEL_METATILES_1(level) (((level)*3) + 1)
|
||||
#define TM_LEVEL_BG(level) (((level)*3) + 2)
|
||||
|
||||
#define TM_TILEMAP_54 54
|
||||
#define TM_SPECIAL_STAGE_BG_FRAME_0 55
|
||||
#define TM_SPECIAL_STAGE_BG_FRAME_1 56
|
||||
#define TM_SPECIAL_STAGE_BG_FRAME_2 57
|
||||
#define TM_SPECIAL_STAGE_BG_FRAME_3 58
|
||||
#define TM_SPECIAL_STAGE_BG_FRAME_4 59
|
||||
#define TM_SPECIAL_STAGE_BG_FRAME_5 60
|
||||
#define TM_SPECIAL_STAGE_BG_FRAME_6 61
|
||||
#define TM_SPECIAL_STAGE_BG_FRAME_7 62
|
||||
#define TM_SPECIAL_STAGE_BG_FRAME_8 63
|
||||
#define TM_SPECIAL_STAGE_BG_FRAME_9 64
|
||||
#define TM_SPECIAL_STAGE_BG_FRAME_10 65
|
||||
#define TM_SPECIAL_STAGE_BG_FRAME_11 66
|
||||
#define TM_SPECIAL_STAGE_BG_FRAME_12 67
|
||||
#define TM_SPECIAL_STAGE_BG_FRAME_13 68
|
||||
#define TM_SPECIAL_STAGE_BG_FRAME_14 69
|
||||
#define TM_SPECIAL_STAGE_BG_FRAME_15 70
|
||||
#define TM_ICE_PARADISE_SNOW 71
|
||||
#define TM_EGG_ROCKET_CLOUDS 72
|
||||
#define TM_SA1_TITLE_LOGO_JP 73
|
||||
#define TM_SA1_TITLE_LOGO_EN 74
|
||||
#define TM_SA1_TITLE_BG 75
|
||||
#define TM_MP_CHOOSE_PAK_TYPE_JP 76
|
||||
#define TM_MP_CHOOSE_PAK_TYPE_EN 77
|
||||
#define TM_MP_CONNECTION_SUCCESS 78
|
||||
#define TM_MP_CONNECTION_ERROR 79
|
||||
#define TM_MP_CONTINUE_SCREEN 80
|
||||
#define TM_MP_TEAM_PLAY_SCREEN 81
|
||||
#define TM_MP_VS_BACKGROUND 82
|
||||
#define TM_MP_SINGLEPAK_PROGRAM_IS_BEING_SENT 83
|
||||
#define TM_VS_MODE_SELECT_JP 84
|
||||
#define TM_VS_MODE_SELECT 85
|
||||
#define TM_INTRO_PRESENTED_BY_SEGA 86
|
||||
#define TM_INTRO_CREATED_BY_SONIC_TEAM 87
|
||||
#define TM_MP_MULTIPAK_PLAYER_OVERVIEW 88
|
||||
#define TM_TILEMAP_89 89
|
||||
|
||||
#elif (GAME == GAME_SA2)
|
||||
|
||||
// NOTE: * 0-92 are MapHeaders
|
||||
// * 93 == NULL
|
||||
#define TM_LEVEL_METATILES_0(level) (((level)*3) + 0)
|
||||
#define TM_LEVEL_METATILES_1(level) (((level)*3) + 1)
|
||||
#define TM_LEVEL_BG(level) (((level)*3) + 2)
|
||||
|
||||
#define TM_EMPTY_93 93
|
||||
#define TM_SA1_TITLE_LOGO 94
|
||||
#define TM_SA1_TITLE_BG 95
|
||||
#define TM_INTRO_PRESENTED_BY_SEGA 96
|
||||
#define TM_INTRO_CREATED_BY_SONIC_TEAM 97
|
||||
#define TM_CHARACTER_SELECT_BACKGROUND 98
|
||||
#define TM_CHARACTER_SELECT_WHEEL 99
|
||||
#define TM_STAGE_SELECT_BG_SONIC 100
|
||||
#define TM_STAGE_SELECT_BG_CREAM 101
|
||||
#define TM_STAGE_SELECT_BG_TAILS 102
|
||||
#define TM_STAGE_SELECT_BG_KNUCKLES 103
|
||||
#define TM_STAGE_SELECT_BG_AMY 104
|
||||
#define TM_STAGE_SELECT_MAP 105
|
||||
#define TM_EGG_SAUCER_WHEEL_COPY 106
|
||||
#define TM_UNKNOWN_OPTIONS_BG 107
|
||||
#define TM_TILEMAP_108 108
|
||||
#define TM_SA2_TITLE_LOGO_JP 109
|
||||
#define TM_TA_AND_MP_WHITE_BG 110
|
||||
#define TM_MP_ORANGE_BG 111
|
||||
#define TM_TA_ORANGE_BG 112
|
||||
#define TM_STAGE_1_BG_0_COPY 113
|
||||
#define TM_MP_WAIT_CONNECTION 114
|
||||
#define TM_MP_MESSAGE_BOX_UNKNOWN 115
|
||||
#define TM_MP_CHARACTERS_SELECTED_JP 116
|
||||
#define TM_MP_CHARACTERS_SELECTED_EN 117
|
||||
#define TM_MP_CHARACTERS_SELECTED_DE 118
|
||||
#define TM_MP_CHARACTERS_SELECTED_FR 119
|
||||
#define TM_MP_CHARACTERS_SELECTED_ES 120
|
||||
#define TM_MP_CHARACTERS_SELECTED_IT 121
|
||||
#define TM_MP_UNKNOWN_ORANGE_ZIGZAG 122
|
||||
#define TM_MP_UNKNOWN_GREEN 123
|
||||
#define TM_UNKNOWN_MESSAGE_BOX_WHITE 124
|
||||
#define TM_UNKNOWN_MESSAGE_BOX_WHITE_SMALL 125
|
||||
#define TM_MP_VS_BACKGROUND_TEXT 126
|
||||
#define TM_MP_CHEESE_PLEASE_WAIT_JP 127
|
||||
#define TM_MP_CHEESE_PLEASE_WAIT_EN 128
|
||||
#define TM_MP_CHEESE_PLEASE_WAIT_DE 129
|
||||
#define TM_MP_CHEESE_PLEASE_WAIT_FR 130
|
||||
#define TM_MP_CHEESE_PLEASE_WAIT_ES 131
|
||||
#define TM_MP_CHEESE_PLEASE_WAIT_IT 132
|
||||
#define TM_OPTIONS_BG0 133
|
||||
#define TM_OPTIONS_LANGUAGE_SELECT 134
|
||||
#define TM_OPTIONS_ENTER_NAME 135
|
||||
#define TM_OPTIONS_ENTER_NAME_CHARACTERS 136
|
||||
#define TM_OPTIONS_TIME_RECORD_BG0 137
|
||||
#define TM_OPTIONS_TIME_RECORD_BG1 138
|
||||
#define TM_TILEMAP_139 139
|
||||
#define TM_MP_CHARACTER_SELECTED_SONIC_BG 140
|
||||
#define TM_MP_CHARACTER_SELECTED_SONIC 141
|
||||
#define TM_MP_CHARACTER_SELECTED_TAILS_BG 142
|
||||
#define TM_MP_CHARACTER_SELECTED_TAILS 143
|
||||
#define TM_MP_CHARACTER_SELECTED_KNUCKLES_BG 144
|
||||
#define TM_MP_CHARACTER_SELECTED_KNUCKLES 145
|
||||
#define TM_MP_CHARACTER_SELECTED_AMY_BG 146
|
||||
#define TM_MP_CHARACTER_SELECTED_AMY 147
|
||||
#define TM_MP_CHARACTER_SELECTED_CREAM_BG 148
|
||||
#define TM_MP_CHARACTER_SELECTED_CREAM 149
|
||||
#define TM_MESSAGE_BOX_BLACK 150
|
||||
#define TM_GREEN_CARET 151
|
||||
#define TM_OPTIONS_VS_RECORD_BG1 152
|
||||
#define TM_SPECIAL_STAGE_1 153
|
||||
#define TM_SPECIAL_STAGE_1_BG 154
|
||||
#define TM_SPECIAL_STAGE_2 155
|
||||
#define TM_SPECIAL_STAGE_2_BG 156
|
||||
#define TM_SPECIAL_STAGE_3 157
|
||||
#define TM_SPECIAL_STAGE_3_BG 158
|
||||
#define TM_SPECIAL_STAGE_4 159
|
||||
#define TM_SPECIAL_STAGE_4_BG 160
|
||||
#define TM_SPECIAL_STAGE_5 161
|
||||
#define TM_SPECIAL_STAGE_5_BG 162
|
||||
#define TM_SPECIAL_STAGE_6 163
|
||||
#define TM_SPECIAL_STAGE_6_BG 164
|
||||
#define TM_SPECIAL_STAGE_7 165
|
||||
#define TM_SPECIAL_STAGE_7_BG 166
|
||||
#define TM_TECHNO_BASE_BG_PURPLE_GRID 167
|
||||
#define TM_TECHNO_BASE_BG_CIRCUIT_MASK 168
|
||||
#define TM_SOUND_TEST_BG 169
|
||||
#define TM_CUTSCENE_POST_EXTRA_BOSS_BG 170
|
||||
#define TM_CUTSCENE_FINAL_ENDING_FALL_BG 171
|
||||
#define TM_CUTSCENE_FINAL_ENDING_FALL_CLOUDS 172
|
||||
#define TM_CUTSCENE_FINAL_ENDING_FALL_BG_DARK 173
|
||||
#define TM_CUTSCENE_FINAL_ENDING_FALL_BG_DARK_2 174
|
||||
|
||||
// This has an image of Eggman, other languages are only the textbox
|
||||
#define TM_COLLECT_ALL_CHAOS_EMERALDS_JP 175
|
||||
#define TM_COLLECT_ALL_CHAOS_EMERALDS_EN 176
|
||||
#define TM_COLLECT_ALL_CHAOS_EMERALDS_FR 177
|
||||
#define TM_COLLECT_ALL_CHAOS_EMERALDS_DE 178
|
||||
#define TM_COLLECT_ALL_CHAOS_EMERALDS_IT 179
|
||||
#define TM_COLLECT_ALL_CHAOS_EMERALDS_ES 180
|
||||
|
||||
// (Also used as BG for SoundTest unlock) This fills the entire screen, other
|
||||
// languages are only the textbox
|
||||
#define TM_UNLOCKED_TINY_CHAO_GARDEN_JP 181
|
||||
#define TM_UNLOCKED_TINY_CHAO_GARDEN_EN 182
|
||||
#define TM_UNLOCKED_TINY_CHAO_GARDEN_FR 183
|
||||
#define TM_UNLOCKED_TINY_CHAO_GARDEN_DE 184
|
||||
#define TM_UNLOCKED_TINY_CHAO_GARDEN_IT 185
|
||||
#define TM_UNLOCKED_TINY_CHAO_GARDEN_ES 186
|
||||
|
||||
// Uses TM_UNLOCKED_TINY_CHAO_GARDEN_JP as BG
|
||||
#define TM_UNLOCKED_SOUND_TEST_JP 187
|
||||
#define TM_UNLOCKED_SOUND_TEST_EN 188
|
||||
#define TM_UNLOCKED_SOUND_TEST_FR 189
|
||||
#define TM_UNLOCKED_SOUND_TEST_DE 190
|
||||
#define TM_UNLOCKED_SOUND_TEST_IT 191
|
||||
#define TM_UNLOCKED_SOUND_TEST_ES 192
|
||||
|
||||
// Uses TM_UNLOCKED_TINY_CHAO_GARDEN_JP as BG
|
||||
#define TM_UNLOCKED_BOSSES_TIME_ATTACK_JP 193
|
||||
#define TM_UNLOCKED_BOSSES_TIME_ATTACK_EN 194
|
||||
#define TM_UNLOCKED_BOSSES_TIME_ATTACK_FR 195
|
||||
#define TM_UNLOCKED_BOSSES_TIME_ATTACK_DE 196
|
||||
#define TM_UNLOCKED_BOSSES_TIME_ATTACK_IT 197
|
||||
#define TM_UNLOCKED_BOSSES_TIME_ATTACK_ES 198
|
||||
#define TM_UNLOCKED_AMY_JP 199
|
||||
#define TM_UNLOCKED_AMY_EN 200
|
||||
#define TM_UNLOCKED_AMY_FR 201
|
||||
#define TM_UNLOCKED_AMY_DE 202
|
||||
#define TM_UNLOCKED_AMY_IT 203
|
||||
#define TM_UNLOCKED_AMY_ES 204
|
||||
#define TM_CUTSCENE_FINAL_ENDING_LAND_FG 205
|
||||
#define TM_CUTSCENE_FINAL_ENDING_LAND_BG 206
|
||||
#define TM_CUTSCENE_FINAL_ENDING_LAND_FLOWER_FIELD 207
|
||||
#define TM_CUTSCENE_FINAL_ENDING_LAND_BG_ALT 208
|
||||
#define TM_UNK_SPACE_BG 209
|
||||
#define TM_STORYFRAME_SONIC_CATCHES_VANILLA 210
|
||||
#define TM_STORYFRAME_SONIC_FINDS_FRIENDS 211
|
||||
#define TM_STORYFRAME_SONIC_PATS_TAILS 212
|
||||
#define TM_STORYFRAME_CREAM_HUGS_VANILLA 213
|
||||
#define TM_STORYFRAME_CREAM_TAILS_VANILLA_LOOK_AROUND 214
|
||||
#define TM_STORYFRAME_CREAM_CHEESE_VANILLA_HAPPY 215
|
||||
#define TM_STORYFRAME_SONIC_LEAVES_0 216
|
||||
#define TM_STORYFRAME_SONIC_LEAVES_1 217
|
||||
#define TM_STORYFRAME_SONIC_LEAVES_2 218
|
||||
#define TM_STORYFRAME_SONIC_LEAVES_3 219
|
||||
#define TM_STORYFRAME_SONIC_LEAVES_4 220
|
||||
#define TM_STORYFRAME_SONIC_LEAVES_5 221
|
||||
#define TM_STORYFRAME_SONIC_LEAVES_6 222
|
||||
#define TM_STORYFRAME_SONIC_LEAVES_7 223
|
||||
#define TM_STORYFRAME_SONIC_LEAVES_8 224
|
||||
#define TM_STORYFRAME_SONIC_LEAVES_9 225
|
||||
#define TM_STORYFRAME_SONIC_LEAVES_10 226
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_0_SEPIA 227
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_1_SEPIA 228
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_1_SEPIA 229
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_1_SEPIA 230
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_3_SEPIA 231
|
||||
#define TM_CREDITS_SA2_LOGO_JP 232
|
||||
#define TM_CREDITS_SA2_LOGO_EN 233
|
||||
#define TM_CREDITS_0 234
|
||||
#define TM_CREDITS_1 235
|
||||
#define TM_CREDITS_2 236
|
||||
#define TM_CREDITS_3 237
|
||||
#define TM_CREDITS_4 238
|
||||
#define TM_CREDITS_5 239
|
||||
#define TM_CREDITS_6 240
|
||||
#define TM_CREDITS_7 241
|
||||
#define TM_CREDITS_8 242
|
||||
#define TM_CREDITS_9 243
|
||||
#define TM_CREDITS_10 244
|
||||
#define TM_CREDITS_11 245
|
||||
#define TM_CREDITS_12 246
|
||||
#define TM_CREDITS_13 247
|
||||
#define TM_CREDITS_14 248
|
||||
#define TM_CREDITS_15 249
|
||||
#define TM_CREDITS_16 250
|
||||
#define TM_CREDITS_17 251
|
||||
#define TM_CREDITS_18 252
|
||||
#define TM_CREDITS_19 253
|
||||
#define TM_CREDITS_20 254
|
||||
#define TM_CREDITS_21 255
|
||||
#define TM_CREDITS_22 256
|
||||
#define TM_CREDITS_23 257
|
||||
#define TM_CREDITS_24 258
|
||||
#define TM_CREDITS_COPYRIGHT 259
|
||||
#define TM_CREDITS_PRESENTED_BY_SEGA 260
|
||||
#define TM_TITLE_SCREEN_BG 261
|
||||
#define TM_INTRO_WATER 262
|
||||
#define TM_LENS_FLARE_BG 263
|
||||
#define TM_SA2_LOGO_JP 264
|
||||
#define TM_SA2_LOGO_EN 265
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_0 266
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_1 267
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_2 268
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_3 269
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_0_DLG_JP 270
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_1_DLG_JP 271
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_2_DLG_JP 272
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_3_DLG_JP 273
|
||||
#define TM_STORYFRAME_CREAM_UNLOCKED_JP 274
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_0_DLG_EN 275
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_1_DLG_EN 276
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_2_DLG_EN 277
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_3_DLG_EN 278
|
||||
#define TM_STORYFRAME_CREAM_UNLOCKED_EN 279
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_0_DLG_FR 280
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_1_DLG_FR 281
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_2_DLG_FR 282
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_3_DLG_FR 283
|
||||
#define TM_STORYFRAME_CREAM_UNLOCKED_FR 284
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_0_DLG_DE 285
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_1_DLG_DE 286
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_2_DLG_DE 287
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_3_DLG_DE 288
|
||||
#define TM_STORYFRAME_CREAM_UNLOCKED_DE 289
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_0_DLG_IT 290
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_1_DLG_IT 291
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_2_DLG_IT 292
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_3_DLG_IT 293
|
||||
#define TM_STORYFRAME_CREAM_UNLOCKED_IT 294
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_0_DLG_ES 295
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_1_DLG_ES 296
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_2_DLG_ES 297
|
||||
#define TM_STORYFRAME_CREAM_UNLOCK_3_DLG_ES 298
|
||||
#define TM_STORYFRAME_CREAM_UNLOCKED_ES 299
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_0 300
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_1 301
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_2 302
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_3 303
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_0_DLG_JP 304
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_1_DLG_JP 305
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_2_DLG_JP 306
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_3_DLG_JP 307
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCKED_JP 308
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_0_DLG_EN 309
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_1_DLG_EN 310
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_2_DLG_EN 311
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_3_DLG_EN 312
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCKED_EN 313
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_0_DLG_FR 314
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_1_DLG_FR 315
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_2_DLG_FR 316
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_3_DLG_FR 317
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCKED_FR 318
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_0_DLG_DE 319
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_1_DLG_DE 320
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_2_DLG_DE 321
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_3_DLG_DE 322
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCKED_DE 323
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_0_DLG_IT 324
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_1_DLG_IT 325
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_2_DLG_IT 326
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_3_DLG_IT 327
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCKED_IT 328
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_0_DLG_ES 329
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_1_DLG_ES 330
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_2_DLG_ES 331
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCK_3_DLG_ES 332
|
||||
#define TM_STORYFRAME_KNUCKLES_UNLOCKED_ES 333
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_0 334
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_1 335
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_2 336
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_3 337
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_0_DLG_JP 338
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_1_DLG_JP 339
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_2_DLG_JP 340
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_3_DLG_JP 341
|
||||
#define TM_STORYFRAME_TAILS_UNLOCKED_JP 342
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_0_DLG_EN 343
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_1_DLG_EN 344
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_2_DLG_EN 345
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_3_DLG_EN 346
|
||||
#define TM_STORYFRAME_TAILS_UNLOCKED_EN 347
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_0_DLG_FR 348
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_1_DLG_FR 349
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_2_DLG_FR 350
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_3_DLG_FR 351
|
||||
#define TM_STORYFRAME_TAILS_UNLOCKED_FR 352
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_0_DLG_DE 353
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_1_DLG_DE 354
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_2_DLG_DE 355
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_3_DLG_DE 356
|
||||
#define TM_STORYFRAME_TAILS_UNLOCKED_DE 357
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_0_DLG_IT 358
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_1_DLG_IT 359
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_2_DLG_IT 360
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_3_DLG_IT 361
|
||||
#define TM_STORYFRAME_TAILS_UNLOCKED_IT 362
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_0_DLG_ES 363
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_1_DLG_ES 364
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_2_DLG_ES 365
|
||||
#define TM_STORYFRAME_TAILS_UNLOCK_3_DLG_ES 366
|
||||
#define TM_STORYFRAME_TAILS_UNLOCKED_ES 367
|
||||
#define TM_REGULAR_FINAL_BOSS 368
|
||||
#define TM_MUSIC_PLANT_MOVING_STARS 369
|
||||
#define TM_SKY_CANYON_CLOUDS_FOREGROUND 370
|
||||
#define TM_SPOTLIGHT_SNOW 371
|
||||
#define TM_EXTRA_BOSS_BACKGROUND 372
|
||||
#define TM_CHARACTER_SELECT_BACKGROUND_0 373
|
||||
#define TM_CHARACTER_SELECT_BACKGROUND_1 374
|
||||
#define TM_EXTRA_BOSS_COCKPIT 375
|
||||
#define TM_EXTRA_BOSS_BACKGROUND_COPY 376
|
||||
#define TM_CUTSCENE_VANILLA_KIDNAPPED_FULL_MAP 377
|
||||
#define TM_CUTSCENE_VANILLA_KIDNAPPED_FULL_MAP_COPY 378
|
||||
#define TM_CUTSCENE_VANILLA_KIDNAPPED_SUPER_SONIC_ART 379
|
||||
#define TM_REGULAR_FINAL_BOSS_BUILDING_BG 380
|
||||
#define TM_COUNT 381
|
||||
#endif
|
||||
|
||||
#endif // GUARD_TILEMAPS
|
||||
@@ -0,0 +1,134 @@
|
||||
#ifndef GUARD_SA1_UI_GRAPHICS_H
|
||||
#define GUARD_SA1_UI_GRAPHICS_H
|
||||
|
||||
#define UIGFX_ASCII_CHARS 0
|
||||
#define UIGFX_UI_ICON_SONIC 1
|
||||
#define UIGFX_UI_ICON_TAILS 2
|
||||
#define UIGFX_UI_ICON_KNUCKLES 3
|
||||
#define UIGFX_UI_ICON_AMY 4
|
||||
#define UIGFX_UI_ICON_RING 5
|
||||
#define UIGFX_STGINTRO_ZIGZAG_SONIC 6
|
||||
#define UIGFX_STGINTRO_ZIGZAG_TAILS 7
|
||||
#define UIGFX_STGINTRO_ZIGZAG_KNUCKLES 8
|
||||
#define UIGFX_STGINTRO_ZIGZAG_AMY 9
|
||||
#define UIGFX_STGINTRO_CHAR_NAMES 10
|
||||
#define UIGFX_STGRESULT_SONIC 11
|
||||
#define UIGFX_STGRESULT_TAILS 12
|
||||
#define UIGFX_STGRESULT_KNUCKLES 13
|
||||
#define UIGFX_STGRESULT_AMY 14
|
||||
#define UIGFX_STGRESULT_ACT12 15
|
||||
#define UIGFX_STGRESULT_HEADLINE_BACK 16
|
||||
#define UIGFX_STGNAMES_JP_0 17
|
||||
#define UIGFX_18 18
|
||||
#define UIGFX_STGNAME_1 19
|
||||
#define UIGFX_STGNAME_2 20
|
||||
#define UIGFX_STGNAME_3 21
|
||||
#define UIGFX_STGNAME_4 22
|
||||
#define UIGFX_STGNAME_5 23
|
||||
#define UIGFX_STGNAME_6 24
|
||||
#define UIGFX_STGNAME_7 25
|
||||
#define UIGFX_26 26
|
||||
#define UIGFX_27 27
|
||||
#define UIGFX_28 28
|
||||
#define UIGFX_29 29
|
||||
#define UIGFX_30 30
|
||||
#define UIGFX_31 31
|
||||
#define UIGFX_TIMER_DIGITS 32
|
||||
#define UIGFX_OK 33
|
||||
#define UIGFX_34 34
|
||||
#define UIGFX_35 35
|
||||
#define UIGFX_36 36
|
||||
#define UIGFX_37 37
|
||||
#define UIGFX_38 38
|
||||
#define UIGFX_39 39
|
||||
#define UIGFX_40 40
|
||||
#define UIGFX_41 41
|
||||
#define UIGFX_42 42
|
||||
#define UIGFX_43 43
|
||||
#define UIGFX_CHAR_SELECT_OK 44
|
||||
#define UIGFX_CHAR_SELECT_BLACK_BOX_2 45
|
||||
#define UIGFX_CHAR_SP_STAGE_RINGS_BG 46
|
||||
#define UIGFX_47 47
|
||||
#define UIGFX_48 48
|
||||
#define UIGFX_49 49
|
||||
#define UIGFX_50 50
|
||||
#define UIGFX_51 51
|
||||
#define UIGFX_52 52
|
||||
#define UIGFX_53 53
|
||||
#define UIGFX_54 54
|
||||
#define UIGFX_55 55
|
||||
#define UIGFX_56 56
|
||||
#define UIGFX_57 57
|
||||
#define UIGFX_58 58
|
||||
#define UIGFX_59 59
|
||||
#define UIGFX_60 60
|
||||
#define UIGFX_61 61
|
||||
#define UIGFX_62 62
|
||||
#define UIGFX_63 63
|
||||
#define UIGFX_64 64
|
||||
#define UIGFX_65 65
|
||||
#define UIGFX_66 66
|
||||
#define UIGFX_67 67
|
||||
#define UIGFX_68 68
|
||||
#define UIGFX_69 69
|
||||
#define UIGFX_70 70
|
||||
#define UIGFX_71 71
|
||||
#define UIGFX_72 72
|
||||
#define UIGFX_73 73
|
||||
#define UIGFX_74 74
|
||||
#define UIGFX_75 75
|
||||
#define UIGFX_76 76
|
||||
#define UIGFX_77 77
|
||||
#define UIGFX_78 78
|
||||
#define UIGFX_79 79
|
||||
#define UIGFX_80 80
|
||||
#define UIGFX_81 81
|
||||
#define UIGFX_82 82
|
||||
#define UIGFX_83 83
|
||||
#define UIGFX_84 84
|
||||
#define UIGFX_85 85
|
||||
#define UIGFX_86 86
|
||||
#define UIGFX_87 87
|
||||
#define UIGFX_88 88
|
||||
#define UIGFX_89 89
|
||||
#define UIGFX_90 90
|
||||
#define UIGFX_91 91
|
||||
#define UIGFX_92 92
|
||||
#define UIGFX_93 93
|
||||
#define UIGFX_94 94
|
||||
#define UIGFX_95 95
|
||||
#define UIGFX_96 96
|
||||
#define UIGFX_97 97
|
||||
#define UIGFX_98 98
|
||||
#define UIGFX_99 99
|
||||
#define UIGFX_100 100
|
||||
#define UIGFX_101 101
|
||||
#define UIGFX_102 102
|
||||
#define UIGFX_103 103
|
||||
#define UIGFX_104 104
|
||||
#define UIGFX_105 105
|
||||
#define UIGFX_106 106
|
||||
#define UIGFX_107 107
|
||||
#define UIGFX_108 108
|
||||
#define UIGFX_109 109
|
||||
#define UIGFX_110 110
|
||||
#define UIGFX_111 111
|
||||
#define UIGFX_112 112
|
||||
#define UIGFX_113 113
|
||||
#define UIGFX_114 114
|
||||
#define UIGFX_115 115
|
||||
#define UIGFX_116 116
|
||||
#define UIGFX_117 117
|
||||
#define UIGFX_118 118
|
||||
#define UIGFX_119 119
|
||||
#define UIGFX_120 120
|
||||
#define UIGFX_121 121
|
||||
#define UIGFX_122 122
|
||||
#define UIGFX_123 123
|
||||
#define UIGFX_124 124
|
||||
#define UIGFX_125 125
|
||||
#define UIGFX_126 126
|
||||
#define UIGFX_127 127
|
||||
#define UIGFX_OPTIONS 128
|
||||
|
||||
#endif // GUARD_SA1_UI_GRAPHICS_H
|
||||
@@ -0,0 +1,58 @@
|
||||
#ifndef GUARD_VRAM_HARDCODED_H
|
||||
#define GUARD_VRAM_HARDCODED_H
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
#define VRAM_RESERVED_TO_BE_CONTINUED ((void *)OBJ_VRAM0 + 0x0000)
|
||||
#define VRAM_RESERVED_STAFF_CREDITS_A ((void *)OBJ_VRAM0 + 0x0400)
|
||||
#define VRAM_RESERVED_UI_DIGITS_A ((void *)OBJ_VRAM0 + 0x0800)
|
||||
#define VRAM_RESERVED_STGINTRO_CHAR_NAME ((void *)OBJ_VRAM0 + 0x0800)
|
||||
#define VRAM_RESERVED_UI_DIGITS_B ((void *)OBJ_VRAM0 + 0x0880)
|
||||
#define VRAM_RESERVED_UI_DIGITS_C ((void *)OBJ_VRAM0 + 0x0A80)
|
||||
#define VRAM_RESERVED_UI_DIGITS_D ((void *)OBJ_VRAM0 + 0x0D40)
|
||||
#define VRAM_RESERVED_STAFF_CREDITS_B ((void *)OBJ_VRAM0 + 0x4000)
|
||||
#define VRAM_RESERVED_STAFF_CREDITS_C ((void *)OBJ_VRAM0 + 0x6000)
|
||||
#define VRAM_RESERVED_UI_DIGITS_E ((void *)OBJ_VRAM0 + 0x75E0)
|
||||
#define VRAM_RESERVED_UI_DIGITS_F ((void *)OBJ_VRAM0 + 0x78A0)
|
||||
#define VRAM_RESERVED_UI_DIGITS_G ((void *)OBJ_VRAM0 + 0x7BE0)
|
||||
#define VRAM_RESERVED_DUST_EFFECT_BRAKING ((void *)OBJ_VRAM0 + 0x2100)
|
||||
#define VRAM_RESERVED_BOSS_EGGMOBILE (void *)(OBJ_VRAM0 + 0x2580)
|
||||
#define VRAM_RESERVED_BOSS_XTRA_CAPSULE (void *)(OBJ_VRAM0 + 0x2580)
|
||||
#define VRAM_RESERVED_EN_FIREBALL_SPARK (void *)(OBJ_VRAM0 + 0x2580)
|
||||
#define VRAM_RESERVED_EN_KIKI_PROJ (void *)(OBJ_VRAM0 + 0x2580)
|
||||
#define VRAM_RESERVED_EN_MIRROR_PROJ (void *)(OBJ_VRAM0 + 0x2580)
|
||||
#define VRAM_RESERVED_EN_YUKIMARU_PROJ (void *)(OBJ_VRAM0 + 0x2580)
|
||||
#define VRAM_RESERVED_EN_PEN_MK1_PROJ (void *)(OBJ_VRAM0 + 0x25A0)
|
||||
#define VRAM_RESERVED_EN_PEN_MK1_PROJ2 (void *)(OBJ_VRAM0 + 0x2600)
|
||||
#define VRAM_RESERVED_EN_PEN_MK1_PROJ3 (void *)(OBJ_VRAM0 + 0x2620)
|
||||
#define VRAM_RESERVED_EN_BUZZER_PROJ (void *)(OBJ_VRAM0 + 0x2600)
|
||||
#define VRAM_RESERVED_EN_OCT_PROJ (void *)(OBJ_VRAM0 + 0x2600)
|
||||
#define VRAM_RESERVED_EN_SLOT_PROJ (void *)(OBJ_VRAM0 + 0x2600)
|
||||
#define VRAM_RESERVED_SPIKES ((void *)OBJ_VRAM0 + 0x1B00)
|
||||
#define VRAM_RESERVED_EN_GAMIGAMI_PROJ (void *)(OBJ_VRAM0 + 0x2620)
|
||||
#define VRAM_RESERVED_WATER_SURFACE (void *)(OBJ_VRAM0 + 0x2660)
|
||||
#define VRAM_RESERVED_TRACK_AIR_CORNER (void *)(OBJ_VRAM0 + 0x2680)
|
||||
#define VRAM_RESERVED_EN_SLOT_PROJ2 (void *)(OBJ_VRAM0 + 0x2680)
|
||||
#define RESERVED_INDICATOR_TILES_VRAM (void *)(OBJ_VRAM0 + 0x2500)
|
||||
#define VRAM_RESERVED_BUBBLES_SMALL (void *)(OBJ_VRAM0 + 0x2A20)
|
||||
#define VRAM_RESERVED_BUBBLES_GROUP (void *)(OBJ_VRAM0 + 0x2AA0)
|
||||
#define VRAM_RESERVED_BUMPER_TRI_BIG ((void *)OBJ_VRAM0 + 0x26A0)
|
||||
#define VRAM_RESERVED_BUMPER_TRI ((void *)OBJ_VRAM0 + 0x2B20)
|
||||
#define VRAM_RESERVED_BUMPER_TRI_2 ((void *)OBJ_VRAM0 + 0x2CA0)
|
||||
#define VRAM_RESERVED_BUMPER ((void *)OBJ_VRAM0 + 0x2E20)
|
||||
#define VRAM_RESERVED_EGGMAN ((void *)OBJ_VRAM0 + 0x2E40)
|
||||
#define VRAM_RESERVED_BOSS_XTRA_ARM (void *)(OBJ_VRAM0 + 0x2600)
|
||||
#define VRAM_RESERVED_BOSS_XTRA_BEARING (void *)(OBJ_VRAM0 + 0x2E00)
|
||||
#define VRAM_RESERVED_BOSS_XTRA_ROCK0 (void *)(OBJ_VRAM0 + 0x2E80)
|
||||
#define VRAM_RESERVED_FERRIS_WHEEL_HOOK (void *)(OBJ_VRAM0 + 0x3020)
|
||||
#define VRAM_RESERVED_FERRIS_WHEEL_SEGMENT (void *)(OBJ_VRAM0 + 0x30A0)
|
||||
#define VRAM_RESERVED_BOSS_XTRA_ROCK1 (void *)(OBJ_VRAM0 + 0x3080)
|
||||
#define VRAM_RESERVED_BOSS_XTRA_ROCK2 (void *)(OBJ_VRAM0 + 0x3100)
|
||||
#elif (GAME == GAME_SA2)
|
||||
#define VRAM_RESERVED_DUST_EFFECT_BRAKING ((void *)OBJ_VRAM0 + 0x2300)
|
||||
#define RESERVED_INDICATOR_TILES_VRAM (void *)(OBJ_VRAM0 + 0x2700)
|
||||
#define VRAM_RESERVED_WATER_SURFACE (void *)(OBJ_VRAM0 + 0x2980)
|
||||
#define VRAM_RESERVED_BUBBLES_SMALL (void *)(OBJ_VRAM0 + 0x2A40)
|
||||
#define VRAM_RESERVED_BUBBLES_GROUP (void *)(OBJ_VRAM0 + 0x2AC0)
|
||||
#endif
|
||||
|
||||
#endif // GUARD_VRAM_HARDCODED_H
|
||||
@@ -0,0 +1,111 @@
|
||||
#ifndef GUARD_ZONES_H
|
||||
#define GUARD_ZONES_H
|
||||
|
||||
#define ZONE_1 0
|
||||
#define ZONE_2 1
|
||||
#define ZONE_3 2
|
||||
#define ZONE_4 3
|
||||
#define ZONE_5 4
|
||||
#define ZONE_6 5
|
||||
#define ZONE_7 6
|
||||
#if (GAME == GAME_SA1)
|
||||
#define ZONE_FINAL ZONE_7
|
||||
#else
|
||||
#define ZONE_FINAL 7
|
||||
#define ZONE_UNUSED 8
|
||||
#endif
|
||||
|
||||
#define ACT_1 0
|
||||
#define ACT_2 1
|
||||
#if (GAME == GAME_SA1)
|
||||
#define ACT_BOSS ACT_2
|
||||
#elif (GAME == GAME_SA2)
|
||||
#define ACT_BOSS 2
|
||||
#define ACT_UNUSED 3
|
||||
#elif (GAME == GAME_SA3)
|
||||
#define ACT_BOSS 7
|
||||
#endif
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
#define ACT_X_ZONE ACT_1
|
||||
#define ACT_THE_MOON ACT_2
|
||||
#define ACT_CHAO_HUNT_A (NUM_LEVEL_IDS_SP + 0)
|
||||
#define ACT_CHAO_HUNT_B (NUM_LEVEL_IDS_SP + 1)
|
||||
#define ACT_CHAO_HUNT_C (NUM_LEVEL_IDS_SP + 2)
|
||||
#define ACT_CHAO_HUNT_D (NUM_LEVEL_IDS_SP + 3)
|
||||
#elif (GAME == GAME_SA2)
|
||||
#define ACT_XX_FINAL_ZONE ACT_1
|
||||
#define ACT_TRUE_AREA_53 ACT_2
|
||||
#endif
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
#define NUM_COURSE_ZONES 7
|
||||
#define NUM_ANIMAL_ZONES 6 // # of zones where animals are trapped inside enemies
|
||||
#define NUM_TIME_ATTACK_ZONES 6
|
||||
#define ACTS_PER_ZONE 2
|
||||
#define ACT_SLOTS_PER_ZONE (ACTS_PER_ZONE)
|
||||
#elif (GAME == GAME_SA2)
|
||||
#define NUM_COURSE_ZONES 7
|
||||
#define NUM_ANIMAL_ZONES 7 // # of zones where animals are trapped inside enemies
|
||||
#define NUM_TIME_ATTACK_ZONES NUM_COURSE_ZONES
|
||||
#define ACTS_PER_ZONE 3
|
||||
#define ACT_SLOTS_PER_ZONE (ACTS_PER_ZONE + 1)
|
||||
#endif
|
||||
|
||||
#define LEVEL_INDEX(zone, act) ((zone)*ACT_SLOTS_PER_ZONE) + (act)
|
||||
#define ACT_INDEX(lvl) ((lvl) & (ACT_SLOTS_PER_ZONE - 1))
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
#define NUM_LEVEL_IDS_SP 14
|
||||
#define NUM_LEVEL_IDS_MP 4
|
||||
#define NUM_LEVEL_IDS 18
|
||||
#elif (GAME == GAME_SA2)
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
#define NUM_LEVEL_IDS 34
|
||||
#else
|
||||
#define NUM_LEVEL_IDS 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
#define LEVEL_TO_ZONE(level) ((level) >> 1)
|
||||
#elif (GAME == GAME_SA2)
|
||||
#define LEVEL_TO_ZONE(level) ((level) >> 2)
|
||||
#elif (GAME == GAME_SA3)
|
||||
#define LEVEL_TO_ZONE(level) ((level) / 10u)
|
||||
#endif
|
||||
// ((((level) / (ACTS_PER_ZONE + 1)) * 2) | ((level) & 1))
|
||||
#define LEVEL_TO_COURSE_INDEX(level) ((((level) / ACT_SLOTS_PER_ZONE) << 0x19 >> 0x18) | ((level)&1))
|
||||
#define COURSE_LEVEL_TO_COURSE_INDEX(level) (((level) >> 1) + ((level)&1))
|
||||
|
||||
#define COURSE_INDEX(zone, act) (LEVEL_TO_COURSE_INDEX(LEVEL_INDEX(zone, act)))
|
||||
|
||||
#define CHAOS_EMERALD(zone) (1 << (zone))
|
||||
#define ALL_ZONE_CHAOS_EMERALDS \
|
||||
(CHAOS_EMERALD(ZONE_1) | CHAOS_EMERALD(ZONE_2) | CHAOS_EMERALD(ZONE_3) | CHAOS_EMERALD(ZONE_4) | CHAOS_EMERALD(ZONE_5) \
|
||||
| CHAOS_EMERALD(ZONE_6) | CHAOS_EMERALD(ZONE_7))
|
||||
|
||||
#define CHAOS_EMERALDS_COMPLETED CHAOS_EMERALD(7)
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
#define IS_BOSS_STAGE(lvl) ((ACT_INDEX(lvl) == ACT_BOSS) || (IS_FINAL_STAGE(lvl) && (gFinalBossActive == 0)) || (IS_EXTRA_STAGE(lvl)))
|
||||
#define IS_FINAL_STAGE(lvl) ((lvl) == LEVEL_INDEX(ZONE_FINAL, ACT_X_ZONE))
|
||||
#define IS_EXTRA_STAGE(lvl) ((lvl) == LEVEL_INDEX(ZONE_FINAL, ACT_THE_MOON))
|
||||
#elif (GAME == GAME_SA2)
|
||||
#define IS_BOSS_STAGE(lvl) \
|
||||
((ACT_INDEX(lvl) == ACT_BOSS) || (((lvl) == LEVEL_INDEX(ZONE_FINAL, ACT_XX_FINAL_ZONE)) && !gFinalBossActive) \
|
||||
|| (((lvl) == LEVEL_INDEX(ZONE_FINAL, ACT_TRUE_AREA_53))))
|
||||
|
||||
#define IS_FINAL_STAGE(lvl) ((lvl) == LEVEL_INDEX(ZONE_FINAL, ACT_XX_FINAL_ZONE))
|
||||
#define IS_EXTRA_STAGE(lvl) ((lvl) == LEVEL_INDEX(ZONE_FINAL, ACT_TRUE_AREA_53))
|
||||
#endif
|
||||
|
||||
#define IS_FINAL_OR_EXTRA_STAGE(lvl) ((IS_FINAL_STAGE(lvl)) || (IS_EXTRA_STAGE(lvl)))
|
||||
|
||||
#define TIME(minutes, seconds) (int)(((minutes * 60.) + seconds) * GBA_FRAMES_PER_SECOND)
|
||||
#define TIMER_WARNING_BEGIN (TIME(0, 20))
|
||||
#define MAX_COURSE_TIME (TIME(10, 0))
|
||||
|
||||
#define SPECIAL_STAGE_REQUIRED_SP_RING_COUNT 7
|
||||
|
||||
#endif // GUARD_ZONES_H
|
||||
@@ -0,0 +1,19 @@
|
||||
#ifndef GUARD_SA1_CREDITS_H
|
||||
#define GUARD_SA1_CREDITS_H
|
||||
|
||||
typedef struct CreditsString {
|
||||
unsigned char length;
|
||||
unsigned char unk1;
|
||||
signed char unk2;
|
||||
char name[25 + 1];
|
||||
char padding[3];
|
||||
} CreditsString;
|
||||
|
||||
// TODO: move to staff_credits.h
|
||||
extern void CreateStaffCredits();
|
||||
extern void CreateCongratulationsAnimation();
|
||||
|
||||
#define NUM_ENTRIES 334
|
||||
extern const CreditsString sCreditsEntries[NUM_ENTRIES];
|
||||
|
||||
#endif // GUARD_SA1_CREDITS_H
|
||||
@@ -0,0 +1,8 @@
|
||||
#ifndef GUARD_RECORDINGS_H
|
||||
#define GUARD_RECORDINGS_H
|
||||
|
||||
// Has to be extern or compiler complains about alignment? Bit
|
||||
// confused
|
||||
extern const u8 *const gDemoRecordings[];
|
||||
|
||||
#endif // GUARD_RECORDINGS_H
|
||||
@@ -0,0 +1,15 @@
|
||||
#ifndef GUARD_DATA_ANIMATIONS_H
|
||||
#define GUARD_DATA_ANIMATIONS_H
|
||||
|
||||
#include "gba/types.h"
|
||||
#include "animation_commands.h"
|
||||
#include "sprite.h"
|
||||
|
||||
#define NUM_SPRITE_ANIMATIONS 908
|
||||
|
||||
extern s32 **const gAnimations[NUM_SPRITE_ANIMATIONS];
|
||||
extern const SpriteOffset *const gSpriteDimensions[NUM_SPRITE_ANIMATIONS];
|
||||
extern const OamDataShort *const gSpriteOamData[NUM_SPRITE_ANIMATIONS];
|
||||
extern const u16 gSpritePalettes[];
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,8 @@
|
||||
#ifndef GUARD_SPRITE_TABLES_H
|
||||
#define GUARD_SPRITE_TABLES_H
|
||||
|
||||
#include "core.h"
|
||||
|
||||
extern const struct SpriteTables gSpriteTables;
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,8 @@
|
||||
#ifndef GUARD_TILESET_DEBUG_ASCII_H
|
||||
#define GUARD_TILESET_DEBUG_ASCII_H
|
||||
|
||||
#include "gba/types.h"
|
||||
|
||||
extern const u8 Tileset_DebugAscii[];
|
||||
|
||||
#endif // GUARD_TILESET_DEBUG_ASCII_H
|
||||
@@ -0,0 +1,219 @@
|
||||
#ifndef SA1_UI_GRAPHICS_H
|
||||
#define SA1_UI_GRAPHICS_H
|
||||
#include "global.h"
|
||||
|
||||
#include "constants/sa1/ui_graphics.h"
|
||||
|
||||
/* This file was created using './scripts/extract_ui_graphics_data.py'.
|
||||
If you want to change a name or some other property,
|
||||
please change it in there and run the script again,
|
||||
so that they are adjusted in all auto-generated files! */
|
||||
|
||||
typedef struct UiGraphics {
|
||||
const u8 *tiles;
|
||||
const u16 *palette;
|
||||
s32 unk8;
|
||||
s32 unkC;
|
||||
s32 unk10;
|
||||
s32 unk14;
|
||||
s32 unk18;
|
||||
} UiGraphics;
|
||||
|
||||
extern const UiGraphics gUiGraphics[];
|
||||
|
||||
extern const u8 gUiGraphicsAsciiChars[];
|
||||
extern const u16 gUiPaletteAsciiChars[];
|
||||
|
||||
extern const u8 gUiGraphics1UpIconSonic[];
|
||||
extern const u16 gUiPalette1UpIconSonic[];
|
||||
|
||||
extern const u8 gUiGraphics1UpIconTails[];
|
||||
extern const u16 gUiPalette1UpIconTails[];
|
||||
|
||||
extern const u8 gUiGraphics1UpIconKnuckles[];
|
||||
extern const u16 gUiPalette1UpIconKnuckles[];
|
||||
|
||||
extern const u8 gUiGraphics1UpIconAmy[];
|
||||
extern const u16 gUiPalette1UpIconAmy[];
|
||||
|
||||
extern const u8 gUiGraphicsHudRing[];
|
||||
extern const u16 gUiPaletteHudRing[];
|
||||
|
||||
extern const u8 gUiGraphicsStageIntroSonic[];
|
||||
extern const u16 gUiPaletteStageIntroSonic[];
|
||||
|
||||
extern const u8 gUiGraphicsStageIntroTails[];
|
||||
extern const u16 gUiPaletteStageIntroTails[];
|
||||
|
||||
extern const u8 gUiGraphicsStageIntroKnuckles[];
|
||||
extern const u16 gUiPaletteStageIntroKnuckles[];
|
||||
|
||||
extern const u8 gUiGraphicsStageIntroAmy[];
|
||||
extern const u16 gUiPaletteStageIntroAmy[];
|
||||
|
||||
extern const u8 gUiGraphicsStageIntrochar_names[];
|
||||
extern const u16 gUiPaletteStageIntrochar_names[];
|
||||
|
||||
extern const u8 gUiGraphicsStageResultSonic[];
|
||||
extern const u16 gUiPaletteStageResultSonic[];
|
||||
|
||||
extern const u8 gUiGraphicsStageResultTails[];
|
||||
extern const u16 gUiPaletteStageResultTails[];
|
||||
|
||||
extern const u8 gUiGraphicsStageResultKnuckles[];
|
||||
extern const u16 gUiPaletteStageResultKnuckles[];
|
||||
|
||||
extern const u8 gUiGraphicsStageResultAmy[];
|
||||
extern const u16 gUiPaletteStageResultAmy[];
|
||||
|
||||
extern const u8 gUiGraphicsStageResultAct12[];
|
||||
extern const u16 gUiPaletteStageResultAct12[];
|
||||
|
||||
extern const u8 gUiGraphicsStageResultHeadlineBack[];
|
||||
extern const u16 gUiPaletteStageResultHeadlineBack[];
|
||||
|
||||
extern const u8 gUiGraphicsStageNamesJapanese0[];
|
||||
extern const u16 gUiPaletteStageNamesJapanese0[];
|
||||
|
||||
extern const u8 gUiGraphicsStageNamesJapanese1[];
|
||||
extern const u16 gUiPaletteStageNamesJapanese1[];
|
||||
|
||||
extern const u8 gUiGraphicsStageNameNeoGreenHillZone[];
|
||||
extern const u16 gUiPaletteStageNameNeoGreenHillZone[];
|
||||
|
||||
extern const u8 gUiGraphicsStageNameSecretBaseZone[];
|
||||
extern const u16 gUiPaletteStageNameSecretBaseZone[];
|
||||
|
||||
extern const u8 gUiGraphicsStageNameCasinoParadiseZone[];
|
||||
extern const u16 gUiPaletteStageNameCasinoParadiseZone[];
|
||||
|
||||
extern const u8 gUiGraphicsStageNameIceMountainZone[];
|
||||
extern const u16 gUiPaletteStageNameIceMountainZone[];
|
||||
|
||||
extern const u8 gUiGraphicsStageNameAngelIslandZone[];
|
||||
extern const u16 gUiPaletteStageNameAngelIslandZone[];
|
||||
|
||||
extern const u8 gUiGraphicsStageNameEggRocketZone[];
|
||||
extern const u16 gUiPaletteStageNameEggRocketZone[];
|
||||
|
||||
extern const u8 gUiGraphicsStageNameCosmicAngelZone[];
|
||||
extern const u16 gUiPaletteStageNameCosmicAngelZone[];
|
||||
|
||||
extern const u8 gUiGraphicsStageNameXZone[];
|
||||
extern const u16 gUiPaletteStageNameXZone[];
|
||||
|
||||
extern const u8 gUiGraphicsStageNameTheMoonZone[];
|
||||
extern const u16 gUiPaletteStageNameTheMoonZone[];
|
||||
|
||||
extern const u8 gUiGraphicsStageNameForestChaoGarden[];
|
||||
extern const u16 gUiPaletteStageNameForestChaoGarden[];
|
||||
|
||||
extern const u8 gUiGraphicsStageNameFactoryChaoGarden[];
|
||||
extern const u16 gUiPaletteStageNameFactoryChaoGarden[];
|
||||
|
||||
extern const u8 gUiGraphicsStageNamePinballChaoGarden[];
|
||||
extern const u16 gUiPaletteStageNamePinballChaoGarden[];
|
||||
|
||||
extern const u8 gUiGraphicsStageNameSpaceChaoGarden[];
|
||||
extern const u16 gUiPaletteStageNameSpaceChaoGarden[];
|
||||
|
||||
extern const u8 gUiGraphicsTimerDigits[];
|
||||
extern const u16 gUiPaletteTimerDigits[];
|
||||
|
||||
extern const u8 gUiGraphicsOK[];
|
||||
extern const u16 gUiPaletteOK[];
|
||||
|
||||
extern const u8 gUiGraphicsGotThroughTexts[];
|
||||
extern const u16 gUiPaletteGotThroughTexts[];
|
||||
|
||||
extern const u8 gUiGraphicsOverlayEnterName[];
|
||||
extern const u16 gUiPaletteOverlayEnterName[];
|
||||
|
||||
extern const u8 gUiGraphicsOverlayCharacters[];
|
||||
extern const u16 gUiPaletteOverlayCharacters[];
|
||||
|
||||
extern const u8 gUiGraphicsOverlayRedCorner[];
|
||||
extern const u16 gUiPaletteOverlayRedCorner[];
|
||||
|
||||
extern const u8 gUiGraphicsOverlayCursors[];
|
||||
extern const u16 gUiPaletteOverlayCursors[];
|
||||
|
||||
extern const u8 gUiGraphicsCharSelectZigZag[];
|
||||
extern const u16 gUiPaletteCharSelectZigZag[];
|
||||
|
||||
extern const u8 gUiGraphicsCharSelectArrow[];
|
||||
extern const u16 gUiPaletteCharSelectArrow[];
|
||||
|
||||
extern const u8 gUiGraphicsCharSelectNames[];
|
||||
extern const u16 gUiPaletteCharSelectNames[];
|
||||
|
||||
extern const u8 gUiGraphicsCharSelectSelectACharacter[];
|
||||
extern const u16 gUiPaletteCharSelectSelectACharacter[];
|
||||
|
||||
extern const u8 gUiGraphicsCharSelectBlackBox[];
|
||||
extern const u16 gUiPaletteCharSelectBlackBox[];
|
||||
|
||||
extern const u8 gUiGraphicsCharSelectOK[];
|
||||
extern const u16 gUiPaletteCharSelectOK[];
|
||||
|
||||
extern const u8 gUiGraphicsCharSelectBlackBox2[];
|
||||
extern const u16 gUiPaletteCharSelectBlackBox2[];
|
||||
|
||||
extern const u8 gUiGraphicsSpecialStage46[];
|
||||
extern const u16 gUiPaletteSpecialStage46[];
|
||||
|
||||
extern const u8 gUiGraphicsSpecialStageTextGotRings0[];
|
||||
extern const u16 gUiPaletteSpecialStageTextGotRings0[];
|
||||
|
||||
extern const u8 gUiGraphicsSpecialStageTextGotRings1[];
|
||||
extern const u16 gUiPaletteSpecialStageTextGotRings1[];
|
||||
|
||||
extern const u8 gUiGraphicsSpecialStageTextGotRings2[];
|
||||
extern const u16 gUiPaletteSpecialStageTextGotRings2[];
|
||||
|
||||
extern const u8 gUiGraphicsSpecialStageTextStart[];
|
||||
extern const u16 gUiPaletteSpecialStageTextStart[];
|
||||
|
||||
extern const u8 gUiGraphicsSpecialStageTextGotAChaosEmerald[];
|
||||
extern const u16 gUiPaletteSpecialStageTextGotAChaosEmerald[];
|
||||
|
||||
extern const u8 gUiGraphicsSpecialStageTextSpecialStage[];
|
||||
extern const u16 gUiPaletteSpecialStageTextSpecialStage[];
|
||||
|
||||
extern const u8 gUiGraphicsSpecialStage53[];
|
||||
extern const u16 gUiPaletteSpecialStage53[];
|
||||
|
||||
extern const u8 gUiGraphicsSpecialStageChaosEmerald[];
|
||||
extern const u16 gUiPaletteSpecialStageChaosEmerald[];
|
||||
|
||||
extern const u8 gUiGraphicsTransparent0[];
|
||||
extern const u16 gUiPaletteTransparent0[];
|
||||
|
||||
extern const u8 gUiGraphicsTransparent1[];
|
||||
extern const u16 gUiPaletteTransparent1[];
|
||||
|
||||
extern const u8 gUiGraphicsTransparent2[];
|
||||
extern const u16 gUiPaletteTransparent2[];
|
||||
|
||||
extern const u8 gUiGraphicsTransparent3[];
|
||||
extern const u16 gUiPaletteTransparent3[];
|
||||
|
||||
extern const u8 gUiGraphicsTransparent4[];
|
||||
extern const u16 gUiPaletteTransparent4[];
|
||||
|
||||
extern const u8 gUiGraphicsTransparent5[];
|
||||
extern const u16 gUiPaletteTransparent5[];
|
||||
|
||||
extern const u8 gUiGraphicsSoundTestBackground[];
|
||||
extern const u16 gUiPaletteSoundTestBackground[];
|
||||
|
||||
extern const u8 gUiGraphicsSoundTestBox2[];
|
||||
extern const u16 gUiPaletteSoundTestBox2[];
|
||||
|
||||
extern const u8 gUiGraphicsSoundTestBox3[];
|
||||
extern const u16 gUiPaletteSoundTestBox3[];
|
||||
|
||||
extern const u8 gUiGraphicsSoundTestBox4[];
|
||||
extern const u16 gUiPaletteSoundTestBox4[];
|
||||
|
||||
#endif // SA1_UI_GRAPHICS_H
|
||||
@@ -2,7 +2,7 @@
|
||||
#define GUARD_SA2_DATA_INPUT_COMBOS
|
||||
|
||||
#include "types.h"
|
||||
#include "constants/characters.h"
|
||||
#include "constants/sa2/characters.h"
|
||||
|
||||
extern const u8 *const *const gUnknown_08C871D4[NUM_CHARACTERS];
|
||||
|
||||
|
||||
+29
-13
@@ -19,15 +19,7 @@
|
||||
#define GAME_MODE_MULTI_PLAYER_COLLECT_RINGS 5
|
||||
#endif
|
||||
|
||||
// TODO: not verfied yet but all instances of this condition
|
||||
// seem to be compiled out in collect rings
|
||||
#ifndef COLLECT_RINGS_ROM
|
||||
#define IS_COLLECT_RINGS_MINIGAME (gGameMode == GAME_MODE_MULTI_PLAYER_COLLECT_RINGS)
|
||||
#else
|
||||
#define IS_COLLECT_RINGS_MINIGAME TRUE
|
||||
#endif
|
||||
|
||||
// TODO: Improve this name; SA1 only?
|
||||
// TODO: Improve this name
|
||||
#define IS_MP_OR_TEAM_PLAY ((gGameMode == GAME_MODE_MULTI_PLAYER) || (gGameMode == GAME_MODE_TEAM_PLAY))
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
@@ -106,16 +98,26 @@ typedef struct {
|
||||
|
||||
// Incomplete
|
||||
extern u8 gDemoPlayCounter;
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
extern u16 ALIGNED(4) gSpecialStageReturnX;
|
||||
#endif
|
||||
|
||||
extern u8 gGameMode;
|
||||
|
||||
extern s8 gCurrentLevel;
|
||||
extern s8 gSelectedCharacter;
|
||||
#if (GAME == GAME_SA1)
|
||||
extern bool8 gTailsEnabled;
|
||||
// NOTE: Treat gTailsEnabled as bool8, it just does not match unsigned
|
||||
extern s8 gTailsEnabled;
|
||||
extern s8 gNumSingleplayerCharacters;
|
||||
#define NUM_SINGLEPLAYER_CHARS_MAX 2
|
||||
#elif (GAME == GAME_SA2)
|
||||
extern u8 gNumSingleplayerCharacters;
|
||||
#endif
|
||||
|
||||
extern u8 gMultiplayerLanguage;
|
||||
extern s8 gMultiplayerCurrentLevel;
|
||||
|
||||
// Sometimes loaded as s16, but as u16 most of the time.
|
||||
// If you encounter it being loaded as s16, please cast it.
|
||||
@@ -131,14 +133,20 @@ extern u8 gSpecialRingCount;
|
||||
|
||||
// TODO: Types not checked yet!
|
||||
extern s32 gWorldSpeedY;
|
||||
#if (GAME == GAME_SA2)
|
||||
extern s32 gWorldSpeedX;
|
||||
#endif
|
||||
|
||||
extern u16 gBossCameraClampYLower;
|
||||
extern u16 gBossCameraClampYUpper;
|
||||
extern u8 gRandomItemBox;
|
||||
#if (GAME == GAME_SA1)
|
||||
extern u16 gSpecialStageCollectedRings;
|
||||
extern u16 gUnknown_0300507C;
|
||||
#endif
|
||||
extern u8 gSpikesUnknownTimer;
|
||||
|
||||
extern s8 gUnknown_0300543C;
|
||||
extern s8 SA2_LABEL(gUnknown_0300543C);
|
||||
extern struct Task *gEntitiesManagerTask;
|
||||
|
||||
extern u8 gDestroySpotlights;
|
||||
@@ -154,8 +162,7 @@ extern u8 gDifficultyLevel;
|
||||
|
||||
extern s8 gTrappedAnimalVariant;
|
||||
|
||||
extern u8 gBossIndex; // TODO: Boss ID in XX-Stage? But it's used in checkpointc.c ...
|
||||
extern u8 gNumSingleplayerCharacters;
|
||||
extern u8 gBossIndex; // TODO: Rename to gLastCheckpointIndex? (SA1 AND SA2!)
|
||||
|
||||
// Incremented by 1 every frame if the game is not paused.
|
||||
// Starts before the stage-timer that is used for scores does.
|
||||
@@ -179,7 +186,13 @@ extern u8 gMultiplayerMissingHeartbeats[4];
|
||||
extern u8 gActiveCollectRingEffectCount;
|
||||
|
||||
extern u8 gMultiplayerUnlockedCharacters;
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
extern u16 gSpecialStageReturnY;
|
||||
#elif (GAME == GAME_SA2)
|
||||
extern u8 gMultiplayerUnlockedLevels;
|
||||
#endif
|
||||
|
||||
extern u32 gMultiplayerIds[MULTI_SIO_PLAYERS_MAX];
|
||||
extern u16 gMultiplayerNames[MULTI_SIO_PLAYERS_MAX][MAX_PLAYER_NAME_LENGTH];
|
||||
|
||||
@@ -244,6 +257,9 @@ void LinkCommunicationError(void);
|
||||
})
|
||||
|
||||
#if (GAME == GAME_SA1) && !defined(BUG_FIX)
|
||||
// NOTE: gNumLives is u8, so without the bounds-check,
|
||||
// which SA1 did not have, 255 would overflow to 0.
|
||||
// During regular gameplay you would not get that many 1UPs, though.
|
||||
#define LIVES_BOUND_CHECK_A(lives) (lives)
|
||||
#define LIVES_BOUND_CHECK_B(lives) (lives)
|
||||
#define NEW_LIVE_COUNT(_type, _varname, _inc) (gNumLives += 1)
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
#ifndef GUARD_DATA_ENTITIES_H
|
||||
#define GUARD_DATA_ENTITIES_H
|
||||
#include "global.h"
|
||||
|
||||
extern const u8 zone1_act1_rings[];
|
||||
extern const u8 zone1_act1_enemies[];
|
||||
extern const u8 zone1_act1_itemboxes[];
|
||||
extern const u8 zone1_act1_interactables[];
|
||||
|
||||
extern const u8 zone1_act2_rings[];
|
||||
extern const u8 zone1_act2_enemies[];
|
||||
extern const u8 zone1_act2_itemboxes[];
|
||||
extern const u8 zone1_act2_interactables[];
|
||||
|
||||
extern const u8 zone1_boss_rings[];
|
||||
extern const u8 zone1_boss_enemies[];
|
||||
extern const u8 zone1_boss_itemboxes[];
|
||||
extern const u8 zone1_boss_interactables[];
|
||||
|
||||
extern const u8 zone2_act1_rings[];
|
||||
extern const u8 zone2_act1_enemies[];
|
||||
extern const u8 zone2_act1_itemboxes[];
|
||||
extern const u8 zone2_act1_interactables[];
|
||||
|
||||
extern const u8 zone2_act2_rings[];
|
||||
extern const u8 zone2_act2_enemies[];
|
||||
extern const u8 zone2_act2_itemboxes[];
|
||||
extern const u8 zone2_act2_interactables[];
|
||||
|
||||
extern const u8 zone2_boss_rings[];
|
||||
extern const u8 zone2_boss_enemies[];
|
||||
extern const u8 zone2_boss_itemboxes[];
|
||||
extern const u8 zone2_boss_interactables[];
|
||||
|
||||
extern const u8 zone3_act1_rings[];
|
||||
extern const u8 zone3_act1_enemies[];
|
||||
extern const u8 zone3_act1_itemboxes[];
|
||||
extern const u8 zone3_act1_interactables[];
|
||||
|
||||
extern const u8 zone3_act2_rings[];
|
||||
extern const u8 zone3_act2_enemies[];
|
||||
extern const u8 zone3_act2_itemboxes[];
|
||||
extern const u8 zone3_act2_interactables[];
|
||||
|
||||
extern const u8 zone3_boss_rings[];
|
||||
extern const u8 zone3_boss_enemies[];
|
||||
extern const u8 zone3_boss_itemboxes[];
|
||||
extern const u8 zone3_boss_interactables[];
|
||||
|
||||
extern const u8 zone4_act1_rings[];
|
||||
extern const u8 zone4_act1_enemies[];
|
||||
extern const u8 zone4_act1_itemboxes[];
|
||||
extern const u8 zone4_act1_interactables[];
|
||||
|
||||
extern const u8 zone4_act2_rings[];
|
||||
extern const u8 zone4_act2_enemies[];
|
||||
extern const u8 zone4_act2_itemboxes[];
|
||||
extern const u8 zone4_act2_interactables[];
|
||||
|
||||
extern const u8 zone4_boss_rings[];
|
||||
extern const u8 zone4_boss_enemies[];
|
||||
extern const u8 zone4_boss_itemboxes[];
|
||||
extern const u8 zone4_boss_interactables[];
|
||||
|
||||
extern const u8 zone5_act1_rings[];
|
||||
extern const u8 zone5_act1_enemies[];
|
||||
extern const u8 zone5_act1_itemboxes[];
|
||||
extern const u8 zone5_act1_interactables[];
|
||||
|
||||
extern const u8 zone5_act2_rings[];
|
||||
extern const u8 zone5_act2_enemies[];
|
||||
extern const u8 zone5_act2_itemboxes[];
|
||||
extern const u8 zone5_act2_interactables[];
|
||||
|
||||
extern const u8 zone5_boss_rings[];
|
||||
extern const u8 zone5_boss_enemies[];
|
||||
extern const u8 zone5_boss_itemboxes[];
|
||||
extern const u8 zone5_boss_interactables[];
|
||||
|
||||
extern const u8 zone6_act1_rings[];
|
||||
extern const u8 zone6_act1_enemies[];
|
||||
extern const u8 zone6_act1_itemboxes[];
|
||||
extern const u8 zone6_act1_interactables[];
|
||||
|
||||
extern const u8 zone6_act2_rings[];
|
||||
extern const u8 zone6_act2_enemies[];
|
||||
extern const u8 zone6_act2_itemboxes[];
|
||||
extern const u8 zone6_act2_interactables[];
|
||||
|
||||
extern const u8 zone6_boss_rings[];
|
||||
extern const u8 zone6_boss_enemies[];
|
||||
extern const u8 zone6_boss_itemboxes[];
|
||||
extern const u8 zone6_boss_interactables[];
|
||||
|
||||
extern const u8 zone7_act1_rings[];
|
||||
extern const u8 zone7_act1_enemies[];
|
||||
extern const u8 zone7_act1_itemboxes[];
|
||||
extern const u8 zone7_act1_interactables[];
|
||||
|
||||
extern const u8 zone7_act2_rings[];
|
||||
extern const u8 zone7_act2_enemies[];
|
||||
extern const u8 zone7_act2_itemboxes[];
|
||||
extern const u8 zone7_act2_interactables[];
|
||||
|
||||
extern const u8 zone7_boss_rings[];
|
||||
extern const u8 zone7_boss_enemies[];
|
||||
extern const u8 zone7_boss_itemboxes[];
|
||||
extern const u8 zone7_boss_interactables[];
|
||||
|
||||
extern const u8 zone8_act1_rings[];
|
||||
extern const u8 zone8_act1_enemies[];
|
||||
extern const u8 zone8_act1_itemboxes[];
|
||||
extern const u8 zone8_act1_interactables[];
|
||||
|
||||
extern const u8 zone8_act2_rings[];
|
||||
extern const u8 zone8_act2_enemies[];
|
||||
extern const u8 zone8_act2_itemboxes[];
|
||||
extern const u8 zone8_act2_interactables[];
|
||||
|
||||
extern const u8 zone8_boss_rings[];
|
||||
extern const u8 zone8_boss_enemies[];
|
||||
extern const u8 zone8_boss_itemboxes[];
|
||||
extern const u8 zone8_boss_interactables[];
|
||||
|
||||
#endif // GUARD_DATA_ENTITIES_H
|
||||
@@ -0,0 +1,8 @@
|
||||
#ifndef GUARD_COMPRESSED_ROMS_H
|
||||
#define GUARD_COMPRESSED_ROMS_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
extern const u8 gMultiBootProgram_TinyChaoGarden[];
|
||||
|
||||
#endif // GUARD_COMPRESSED_ROMS_H
|
||||
@@ -0,0 +1,8 @@
|
||||
#ifndef GUARD_MULTIPLAYER_MODE_SELECT_H
|
||||
#define GUARD_MULTIPLAYER_MODE_SELECT_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
void CreateMultiplayerModeSelectScreen(void);
|
||||
|
||||
#endif // GUARD_MULTIPLAYER_MODE_SELECT_H
|
||||
@@ -0,0 +1,19 @@
|
||||
#ifndef GUARD_MULTIPLAYER_SINGLEPAK_CONNECTION_H
|
||||
#define GUARD_MULTIPLAYER_SINGLEPAK_CONNECTION_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
#define COMM_DATA(val) (val)
|
||||
#define MP_LANGUAGE LOADED_SAVE->uiLanguage
|
||||
#define UNK_GFX_SIZE 0x1C0
|
||||
#elif (GAME == GAME_SA2)
|
||||
#define COMM_DATA(val) ((val) | 0x4000)
|
||||
#define MP_LANGUAGE gMultiplayerLanguage
|
||||
#define UNK_GFX_SIZE 0x180
|
||||
#endif
|
||||
|
||||
void SA2_LABEL(sub_8081200)(void);
|
||||
void ShowSinglePakResults(void);
|
||||
|
||||
#endif // GUARD_MULTIPLAYER_SINGLEPAK_CONNECTION_H
|
||||
@@ -0,0 +1,31 @@
|
||||
#ifndef GUARD_OPTION_SCREEN_H
|
||||
#define GUARD_OPTION_SCREEN_H
|
||||
|
||||
#include "global.h"
|
||||
#include "config.h"
|
||||
#include "game/sa1/ui/game_over.h"
|
||||
#include "game/sa1/save.h"
|
||||
#include "sprite.h"
|
||||
#include "constants/sa1/text.h"
|
||||
|
||||
#define NUM_LANGSCRN_SPRITES_TYPE_1 6
|
||||
#define NUM_LANGSCRN_SPRITES_TYPE_2 3
|
||||
#define NUM_LANGSCRN_SPRITES (NUM_LANGSCRN_SPRITES_TYPE_1 + NUM_LANGSCRN_SPRITES_TYPE_2)
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ Background bg;
|
||||
/* 0x040 */ Sprite sprites[NUM_LANGSCRN_SPRITES];
|
||||
/* 0x1F0 */ Sprite spr1F0;
|
||||
#ifndef NON_MATCHING
|
||||
/* 0x220 */ Sprite sprUnused;
|
||||
#endif
|
||||
/* 0x250 */ Sprite spr250;
|
||||
/* 0x280 */ StrcUi_805423C unk280;
|
||||
/* 0x28C */ u8 unk28C;
|
||||
/* 0x28D */ s8 unk28D;
|
||||
} EditLanguageScreen; /* 0x290 */
|
||||
|
||||
void CreateEditLanguageScreen(bool8 param0);
|
||||
void CreateOptionsMenu(void);
|
||||
|
||||
#endif // GUARD_OPTION_SCREEN_H
|
||||
@@ -0,0 +1,6 @@
|
||||
#ifndef GUARD_SA1_TIME_ATTACK_MENU_H
|
||||
#define GUARD_SA1_TIME_ATTACK_MENU_H
|
||||
|
||||
void CreateTimeAttackMenu(void);
|
||||
|
||||
#endif // GUARD_SA1_TIME_ATTACK_MENU_H
|
||||
@@ -0,0 +1,19 @@
|
||||
#ifndef GUARD_INTRO_H
|
||||
#define GUARD_INTRO_H
|
||||
|
||||
#include "global.h"
|
||||
#include "sprite.h"
|
||||
|
||||
// TODO: not sure why these were shared from here, may
|
||||
// not be
|
||||
extern const AnimId gPressStartTiles[2];
|
||||
|
||||
void CreateTitleScreen(bool32 playMusic);
|
||||
void CreateSegaLogo(void);
|
||||
void CreateMainMenu(u32 param0);
|
||||
void LoadTinyChaoGarden(void);
|
||||
|
||||
#define TITLESCREEN_PARAM__BOOT_SILENT 0
|
||||
#define TITLESCREEN_PARAM__PLAY_MUSIC 1
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,14 @@
|
||||
#ifndef GUARD_PARAMETERS_STAGE_H
|
||||
#define GUARD_PARAMETERS_STAGE_H
|
||||
|
||||
#define INITIAL_WATERLEVEL_ZONE_4_ACT_1 1546
|
||||
#define INITIAL_WATERLEVEL_ZONE_4_ACT_2 1664
|
||||
|
||||
#define SPOTLIGHT_DESPAWN_X0 1368
|
||||
#define SPOTLIGHT_DESPAWN_X1 1488
|
||||
|
||||
#define EGG_ROCKET_LAUNCH_MIN_X 1058
|
||||
#define EGG_ROCKET_BOOSTER_DEPART_MAX_Y 5568
|
||||
#define EGG_ROCKET_MIDDLE_DEPART_MAX_Y 3264
|
||||
|
||||
#endif // GUARD_PARAMETERS_STAGE_H
|
||||
@@ -0,0 +1,94 @@
|
||||
#ifndef GUARD_SAVE_H
|
||||
#define GUARD_SAVE_H
|
||||
|
||||
#include "global.h"
|
||||
#include "game/globals.h"
|
||||
|
||||
#include "constants/sa1/zones.h"
|
||||
#include "constants/sa1/characters.h"
|
||||
|
||||
#define PLAYER_NAME_END_CHAR 0xFFFF
|
||||
|
||||
#define NUM_MULTIPLAYER_SCORES 10
|
||||
#define MAX_MULTIPLAYER_SCORE 99
|
||||
|
||||
#define TIME_RECORDS_PER_COURSE 3
|
||||
|
||||
typedef u8 PlayerNameChar;
|
||||
typedef u32 TimeRecord;
|
||||
|
||||
struct TimeRecords {
|
||||
TimeRecord table[NUM_CHARACTERS][NUM_LEVEL_IDS][TIME_RECORDS_PER_COURSE];
|
||||
};
|
||||
|
||||
// This is split off because of some code accessing the data as an array.
|
||||
// Modern compilers don't like that (for good reason!)
|
||||
typedef struct MultiplayerScoreDataSplit {
|
||||
// TODO/NOTE: Only 6 chars are displayed, but the string is treated 8-char wide
|
||||
PlayerNameChar playerName[MAX_PLAYER_NAME_LENGTH + 2];
|
||||
|
||||
u8 wins;
|
||||
u8 losses;
|
||||
u8 draws;
|
||||
} MultiplayerScoreDataSplit;
|
||||
|
||||
typedef union {
|
||||
MultiplayerScoreDataSplit split;
|
||||
u8 raw[sizeof(MultiplayerScoreDataSplit)];
|
||||
} MultiplayerScoreData;
|
||||
|
||||
struct MultiplayerScore {
|
||||
u32 playerId;
|
||||
MultiplayerScoreData data;
|
||||
};
|
||||
|
||||
#define NUM_TIME_RECORD_ROWS (NUM_TIME_ATTACK_ZONES * ACTS_PER_ZONE * NUM_CHARACTERS * TIME_RECORDS_PER_COURSE)
|
||||
|
||||
#define BTNCONFIG_NORMAL 0
|
||||
#define BTNCONFIG_REVERSE 1
|
||||
|
||||
typedef struct SaveGame {
|
||||
/* 0x000 */ u32 security; // Save Sector Magic Number
|
||||
/* 0x004 */ s32 unk4;
|
||||
/* 0x008 */ u16 unlockedLevels[NUM_CHARACTERS];
|
||||
/* 0x010 */ PlayerNameChar playerName[MAX_PLAYER_NAME_LENGTH + 2];
|
||||
/* 0x018 */ u8 difficultyLevel;
|
||||
/* 0x019 */ u8 uiLanguage;
|
||||
/* 0x01A */ u8 language;
|
||||
/* 0x01B */ u8 timeLimitDisabled;
|
||||
/* 0x01C */ u8 btnConfig;
|
||||
/* 0x01D */ u8 chaosEmeralds;
|
||||
/* 0x020 */ struct TimeRecords timeRecords;
|
||||
/* 0x380 */ struct MultiplayerScore multiplayerScores[NUM_MULTIPLAYER_SCORES];
|
||||
/* 0x420 */ u32 unk420;
|
||||
/* 0x424 */ u8 unk424;
|
||||
/* 0x425 */ u8 unk425;
|
||||
/* 0x426 */ u8 unk426;
|
||||
/* 0x427 */ u8 unk427;
|
||||
/* 0x428 */ u32 score;
|
||||
/* 0x42C */ u32 checksum;
|
||||
} SaveGame; /* 0x430 */
|
||||
|
||||
// NOTE: Not a pointer in SA1!
|
||||
extern struct SaveGame gLoadedSaveGame;
|
||||
|
||||
#define LOADED_SAVE (&gLoadedSaveGame)
|
||||
|
||||
#define MULTIPLAYER_RESULT_WIN 0
|
||||
#define MULTIPLAYER_RESULT_LOSS 1
|
||||
#define MULTIPLAYER_RESULT_DRAW 2
|
||||
|
||||
void InsertMultiplayerProfile(u32 playerId, u16 *name);
|
||||
void RecordOwnMultiplayerResult(s16 result);
|
||||
void RecordMultiplayerResult(u32 id, u16 *name, s16 result);
|
||||
|
||||
bool32 RegisterTimeRecord(TimeRecord newRecord);
|
||||
|
||||
void SaveInit(void);
|
||||
bool32 SaveGameExists(void);
|
||||
u16 WriteSaveGame(void);
|
||||
s16 NewSaveGame(void);
|
||||
s16 LoadSaveGame(void);
|
||||
void LoadCompletedSaveGame(void);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,12 @@
|
||||
#ifndef GUARD_SA1_SPECIAL_STAGE_H
|
||||
#define GUARD_SA1_SPECIAL_STAGE_H
|
||||
|
||||
extern u16 gSpecialStageCollectedRings;
|
||||
extern u16 gSpecialStageTargetRings; // TODO: another ring counter...
|
||||
extern u8 gUnknown_03005730; // TODO: is this u8 or s8?
|
||||
extern void CreateTempSoundTask(u16 songId);
|
||||
extern void CreateSpStageTrickSoundTask(u16 expectedSongId, u16 resumeSongId);
|
||||
extern void CreateSpecialStage(); // SA2: has 2 params
|
||||
extern void CreateSpecialStageIntro();
|
||||
|
||||
#endif // GUARD_SA1_SPECIAL_STAGE_H
|
||||
@@ -0,0 +1,21 @@
|
||||
#ifndef GUARD_GAME_STAGE_BG_ZONE3_H
|
||||
#define GUARD_GAME_STAGE_BG_ZONE3_H
|
||||
|
||||
#include "gba/types.h"
|
||||
#include "sprite.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 qWorldX;
|
||||
/* 0x04 */ s32 qWorldY;
|
||||
/* 0x08 */ u8 filler08[0x10];
|
||||
/* 0x18 */ Sprite s;
|
||||
} CasinoParadiseFirework;
|
||||
|
||||
extern const TileInfoFirework gTileInfoZone3Fireworks[2];
|
||||
|
||||
extern void CreateStageBg_Zone5(void);
|
||||
extern void StageBgUpdate_Zone5Acts12(s32 x, s32 y);
|
||||
extern struct Task *SpawnCasinoFireworkMP(s16 x, s16 y, s32 fireworkType);
|
||||
extern void Task_UpdateFireworkAnimation(void);
|
||||
|
||||
#endif // GUARD_GAME_STAGE_BG_ZONE3_H
|
||||
@@ -0,0 +1,9 @@
|
||||
#ifndef GUARD_GAME_STAGE_BG_ZONE5_H
|
||||
#define GUARD_GAME_STAGE_BG_ZONE5_H
|
||||
|
||||
#include "gba/types.h"
|
||||
|
||||
extern void CreateStageBg_Zone5(void);
|
||||
extern void StageBgUpdate_Zone5Acts12(s32 x, s32 y);
|
||||
|
||||
#endif // GUARD_GAME_STAGE_BG_ZONE5_H
|
||||
@@ -0,0 +1,8 @@
|
||||
#ifndef GUARD_GAME_STAGE_BG_ZONE6_H
|
||||
#define GUARD_GAME_STAGE_BG_ZONE6_H
|
||||
|
||||
#include "gba/types.h"
|
||||
|
||||
extern void HBlankCallback_803FA1C(int_vcount line);
|
||||
|
||||
#endif // GUARD_GAME_STAGE_BG_ZONE6_H
|
||||
@@ -0,0 +1,9 @@
|
||||
#ifndef GUARD_EGG_ROCKET_TRANSITIONS_H
|
||||
#define GUARD_EGG_ROCKET_TRANSITIONS_H
|
||||
|
||||
#include "game/shared/stage/camera.h" // for CamCoord
|
||||
|
||||
void CreateEggRocketLaunchScreenShakeEffect(void);
|
||||
void CreateEggRocketStageSeparation(CamCoord worldY);
|
||||
|
||||
#endif // GUARD_EGG_ROCKET_TRANSITIONS_H
|
||||
@@ -0,0 +1,69 @@
|
||||
#ifndef GUARD_ENEMY_BOSS_SUPER_EGG_ROBO_H
|
||||
#define GUARD_ENEMY_BOSS_SUPER_EGG_ROBO_H
|
||||
|
||||
#include "sprite.h"
|
||||
#include "game/shared/stage/entity.h"
|
||||
#include "game/sa1/stage/some_task_manager.h"
|
||||
|
||||
/* Used in SuperEggRobo.unk58 */
|
||||
#define SER_FLAG__2 0x2
|
||||
#define SER_FLAG__80 0x80
|
||||
#define SER_FLAG__400000 0x400000
|
||||
|
||||
#define SER_NUM_PARTS 18
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ SpriteBase base;
|
||||
/* 0x0C */ Sprite unusedSprite;
|
||||
/* 0x3C */ Hitbox reserved;
|
||||
/* 0x44 */ s32 qUnk44;
|
||||
/* 0x48 */ s32 qUnk48;
|
||||
/* 0x4C */ s16 qUnk4C;
|
||||
/* 0x4E */ s16 qUnk4E;
|
||||
/* 0x50 */ s16 qUnk50;
|
||||
/* 0x52 */ s16 qUnk52;
|
||||
/* 0x54 */ s16 qUnk54;
|
||||
/* 0x54 */ s16 qUnk56;
|
||||
/* 0x58 */ u32 flags58;
|
||||
/* 0x58 */ s32 unk5C;
|
||||
/* 0x58 */ s32 unk60;
|
||||
/* 0x58 */ s32 qUnk64;
|
||||
/* 0x6F */ s8 unk68;
|
||||
/* 0x6F */ s8 unk69;
|
||||
/* 0x6F */ s8 unk6A;
|
||||
/* 0x6F */ s8 unk6B;
|
||||
/* 0x5C */ s16 unk6C;
|
||||
/* 0x6F */ s8 unk6E;
|
||||
/* 0x6F */ s8 unk6F;
|
||||
} SuperEggRobo; /* 0x70 */
|
||||
|
||||
typedef struct ExtraBossTaskData {
|
||||
SuperEggRobo *boss;
|
||||
SomeTaskManager_7C *parts[SER_NUM_PARTS];
|
||||
} ExtraBossTaskData;
|
||||
|
||||
extern ExtraBossTaskData gExtraBossTaskData;
|
||||
|
||||
#define CAPSULE_STATE__CAPTURED +1
|
||||
#define CAPSULE_STATE__MOVING 0
|
||||
#define CAPSULE_STATE__DESTROYED -1
|
||||
|
||||
typedef s32 CapsuleState;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s8 pid;
|
||||
/* 0x04 */ u32 unk4; // TODO: Check the type!
|
||||
} player_0_Task; /* size: 0x8 */
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ player_0_Task unk0;
|
||||
/* 0x08 */ s32 unk8; // counter of some kind
|
||||
/* 0x0C */ s32 qXs[16];
|
||||
/* 0x0C */ s32 qYs[16];
|
||||
} MaybeSuperSonic; /* size: 0x8C */
|
||||
|
||||
s32 ExtraBoss__CapsuleGetCaptureState(SomeTaskManager_7C *mgr, Sprite *s, SuperEggRobo *extraBoss, Player *p);
|
||||
|
||||
#define EXTRA_BOSS__INITIAL_RING_COUNT 50
|
||||
|
||||
#endif // GUARD_ENEMY_BOSS_SUPER_EGG_ROBO_H
|
||||
@@ -0,0 +1,25 @@
|
||||
#ifndef GUARD_SA1_BOSSES_SHARED_H
|
||||
#define GUARD_SA1_BOSSES_SHARED_H
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Sprite s;
|
||||
/* 0x30 */ SpriteTransform transform;
|
||||
/* 0x3C */ s16 unk3C;
|
||||
/* 0x3E */ s16 unk3E;
|
||||
/* 0x48 */ u16 unk40;
|
||||
/* 0x48 */ s16 unk42;
|
||||
/* 0x44 */ s16 qUnk44;
|
||||
/* 0x46 */ s16 qUnk46;
|
||||
/* 0x48 */ s16 unk48;
|
||||
} Strc_sub_80168F0; /* 0x4C */
|
||||
|
||||
void CreateBossCapsule(s16, s16);
|
||||
|
||||
void CreatePostBossEggMobile(CamCoord worldX, CamCoord worldY);
|
||||
|
||||
struct Task *sub_80168F0(CamCoord worldX, CamCoord worldY, u16 numTiles, AnimId anim, u8 variant); // -> Strc_sub_80168F0
|
||||
struct Task *Bosses_SetCamBounds(CamCoord minY, CamCoord maxY, CamCoord minX, CamCoord maxX);
|
||||
struct Task *CreatePreBossCameraPan(s16 yMin, s16 yMax);
|
||||
struct Task *sub_8017540(s32 param0, s32 param1); // -> NutsAndBolts
|
||||
struct Task *sub_8016D80(CamCoord worldX, CamCoord worldY, AnimId anim, u8 variant);
|
||||
#endif // GUARD_SA1_BOSSES_SHARED_H
|
||||
@@ -0,0 +1,6 @@
|
||||
#ifndef GUARD_SA1_EXTRA_STAGE_H
|
||||
#define GUARD_SA1_EXTRA_STAGE_H
|
||||
|
||||
extern void CreateExtraStageResults();
|
||||
|
||||
#endif // GUARD_SA1_EXTRA_STAGE_H
|
||||
@@ -0,0 +1,20 @@
|
||||
#ifndef GUARD_SA1_IA_PARTY_BALLOON_H
|
||||
#define GUARD_SA1_IA_PARTY_BALLOON_H
|
||||
|
||||
#include "core.h"
|
||||
#include "game/shared/stage/entity.h"
|
||||
|
||||
typedef enum EPartyBallonColors {
|
||||
PBCOLOR_BLUE,
|
||||
PBCOLOR_RED,
|
||||
PBCOLOR_YELLOW,
|
||||
} EPartyBallonColors;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ SpriteBase base;
|
||||
/* 0x0C */ Sprite s;
|
||||
/* 0x3C */ s32 unk3C;
|
||||
/* 0x40 */ u8 unk40;
|
||||
} PartyBalloon;
|
||||
|
||||
#endif // GUARD_SA1_IA_PARTY_BALLOON_H
|
||||
@@ -0,0 +1,12 @@
|
||||
|
||||
#ifndef GUARD_STAGE_ITEM_BOX_H
|
||||
#define GUARD_STAGE_ITEM_BOX_H
|
||||
|
||||
#include "global.h"
|
||||
#include "game/shared/stage/entity.h"
|
||||
|
||||
void CreateEntity_ItemBox(MapEntity *, u16, u16, u8);
|
||||
|
||||
extern const s8 ItemBox_RingAmountTable[];
|
||||
|
||||
#endif // GUARD_STAGE_ITEM_BOX_H
|
||||
@@ -0,0 +1,17 @@
|
||||
#ifndef GUARD_SA1_CHAO_H
|
||||
#define GUARD_SA1_CHAO_H
|
||||
|
||||
typedef struct Chao {
|
||||
Sprite s;
|
||||
s32 qWorldX;
|
||||
s32 qWorldY;
|
||||
s16 qDistanceToPlayer;
|
||||
s16 qSpeedX;
|
||||
s16 qSpeedY;
|
||||
u16 angle;
|
||||
u8 id;
|
||||
u8 playerIdA;
|
||||
u8 playerIdB;
|
||||
} Chao;
|
||||
|
||||
#endif // GUARD_SA1_CHAO_H
|
||||
@@ -0,0 +1,8 @@
|
||||
#ifndef GUARD_MULTIPLAYER_HUD_H
|
||||
#define GUARD_MULTIPLAYER_HUD_H
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
void CreateChaoHuntHUD(void);
|
||||
#endif
|
||||
|
||||
#endif // GUARD_MULTIPLAYER_HUD_H
|
||||
@@ -0,0 +1,12 @@
|
||||
#ifndef GUARD_MULTIPLAYER_RESULTS_H
|
||||
#define GUARD_MULTIPLAYER_RESULTS_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
// TODO: possibly the wrong way around
|
||||
#define MULTIPLAYER_RESULTS_MODE_CHARACTER_SELECTION 0
|
||||
#define MULTIPLAYER_RESULTS_MODE_COURSE_COMPLETE 1
|
||||
|
||||
void CreateMultiplayerResultsScreen(u8 mode);
|
||||
|
||||
#endif // GUARD_MULTIPLAYER_RESULTS_H
|
||||
@@ -0,0 +1,13 @@
|
||||
#ifndef GUARD_SA1_MP_UNK_0_H
|
||||
#define GUARD_SA1_MP_UNK_0_H
|
||||
|
||||
typedef struct UnkMP0 {
|
||||
u16 unk0;
|
||||
s16 unk2;
|
||||
u16 unk4;
|
||||
u8 unk6;
|
||||
} UnkMP0;
|
||||
|
||||
struct Task *sub_801C704(void); // -> UnkMP0
|
||||
|
||||
#endif // GUARD_SA1_MP_UNK_0_H
|
||||
@@ -0,0 +1,6 @@
|
||||
#ifndef GUARD_SA1_MP_UNK_1_H
|
||||
#define GUARD_SA1_MP_UNK_1_H
|
||||
|
||||
void sub_801C9D8(void);
|
||||
|
||||
#endif // GUARD_SA1_MP_UNK_1_H
|
||||
@@ -0,0 +1,9 @@
|
||||
#ifndef GUARD_MYSTERY_ITEM_BOX_H
|
||||
#define GUARD_MYSTERY_ITEM_BOX_H
|
||||
|
||||
#include "global.h"
|
||||
#include "game/shared/stage/entity.h"
|
||||
|
||||
void CreateEntity_MysteryItemBox(MapEntity *ia, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY);
|
||||
|
||||
#endif // GUARD_MYSTERY_ITEM_BOX_H
|
||||
@@ -0,0 +1,25 @@
|
||||
#ifndef GUARD_SA1_NUTS_AND_BOLTS_TASK_H
|
||||
#define GUARD_SA1_NUTS_AND_BOLTS_TASK_H
|
||||
|
||||
#include "core.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Sprite s;
|
||||
/* 0x30 */ s32 qUnk30;
|
||||
/* 0x34 */ s32 qUnk34;
|
||||
/* 0x38 */ s16 qUnk38;
|
||||
/* 0x3A */ s16 qUnk3A;
|
||||
/* 0x3C */ u16 qUnk3C;
|
||||
/* 0x3E */ s16 qUnk3E;
|
||||
/* 0x40 */ u16 qUnk40; // TODO: qUnk40 not a Q()?
|
||||
} NutsAndBolts;
|
||||
|
||||
extern struct Task *CreateNutsAndBoltsTask(u16 taskFlags, void *vramTiles, u16 anim, u8 variant, TaskDestructor dtor);
|
||||
extern void Task_NutsAndBolts(void);
|
||||
extern void TaskDestructor_NutsAndBolts(struct Task *t);
|
||||
|
||||
extern const u16 gUnknown_080BB41C[8];
|
||||
extern const u8 gUnknown_080BB42C[8];
|
||||
extern const u8 gUnknown_080BB434[8];
|
||||
|
||||
#endif // GUARD_SA1_NUTS_AND_BOLTS_TASK_H
|
||||
@@ -0,0 +1,20 @@
|
||||
#ifndef GUARD_PLAYER_CONTROLS_H
|
||||
#define GUARD_PLAYER_CONTROLS_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
struct ButtonConfig {
|
||||
u16 jump;
|
||||
u16 attack;
|
||||
u16 trick;
|
||||
};
|
||||
|
||||
extern struct ButtonConfig gPlayerControls;
|
||||
|
||||
s32 GetAirDashDirection(s32 n);
|
||||
void sub_804D13C(u16 param0);
|
||||
void SetPlayerControls(bool32);
|
||||
|
||||
extern u16 gUnknown_030060F0[64];
|
||||
|
||||
#endif // GUARD_PLAYER_CONTROLS_H
|
||||
@@ -0,0 +1,6 @@
|
||||
#ifndef GUARD_STAGE_PLAYER_SONIC_H
|
||||
#define GUARD_STAGE_PLAYER_SONIC_H
|
||||
|
||||
void Player_Sonic_InitInstaShield(Player *p);
|
||||
|
||||
#endif // GUARD_STAGE_PLAYER_SONIC_H
|
||||
@@ -0,0 +1,11 @@
|
||||
#ifndef GUARD_STAGE_PLAYER_SUPER_SONIC_H
|
||||
#define GUARD_STAGE_PLAYER_SUPER_SONIC_H
|
||||
|
||||
#include "game/sa1/stage/enemies/boss_xtra_super_egg_robo.h"
|
||||
|
||||
void Task_8049898(void);
|
||||
void sub_804A1B8(Player *p); // Called when Super Sonic is initialized
|
||||
|
||||
#define EXTRA_BOSS__INITIAL_RING_COUNT 50
|
||||
|
||||
#endif // GUARD_STAGE_PLAYER_SUPER_SONIC_H
|
||||
@@ -0,0 +1,7 @@
|
||||
#ifndef GUARD_STAGE_PLAYER_TAILS_H
|
||||
#define GUARD_STAGE_PLAYER_TAILS_H
|
||||
|
||||
void Player_Tails_InitFlying(Player *p);
|
||||
struct Task *Player_Tails_InitGfxMarbleTrack(Player *p);
|
||||
|
||||
#endif // GUARD_STAGE_PLAYER_TAILS_H
|
||||
@@ -0,0 +1,46 @@
|
||||
#ifndef GUARD_SOME_TASK_MANAGER_H
|
||||
#define GUARD_SOME_TASK_MANAGER_H
|
||||
|
||||
typedef struct GfxInfo {
|
||||
TileInfoBitfield tileInfo;
|
||||
u8 *vram;
|
||||
} GfxInfo;
|
||||
|
||||
struct SomeTaskManager_7C;
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 unk0;
|
||||
/* 0x02 */ u8 unk2;
|
||||
/* 0x03 */ u8 unk3;
|
||||
/* 0x04 */ s32 unk4;
|
||||
/* 0x08 */ struct SomeTaskManager_7C *unk8;
|
||||
/* 0x0C */ SpriteTransform transform;
|
||||
/* 0x18 */ Sprite s;
|
||||
/* 0x48 */ Hitbox reserved;
|
||||
/* 0x50 */ s32 qUnk50;
|
||||
/* 0x54 */ s32 qUnk54;
|
||||
/* 0x58 */ s16 qUnk58;
|
||||
/* 0x5A */ s16 qUnk5A;
|
||||
/* 0x5C */ u16 qUnk5C;
|
||||
/* 0x5E */ u16 qUnk5E;
|
||||
} SomeTaskManager_60; /* 0x60 */
|
||||
|
||||
typedef struct SomeTaskManager_7C {
|
||||
/* 0x00 */ SomeTaskManager_60 unk0;
|
||||
/* 0x60 */ u32 unk60;
|
||||
/* 0x64 */ s32 unk64;
|
||||
/* 0x68 */ s32 unk68;
|
||||
/* 0x6C */ s32 unk6C;
|
||||
/* 0x70 */ u16 unk70;
|
||||
/* 0x72 */ s16 unk72;
|
||||
/* 0x74 */ u16 unk74;
|
||||
/* 0x76 */ u16 unk76;
|
||||
/* 0x78 */ u8 filler78[0x4];
|
||||
} SomeTaskManager_7C; /* 0x7C */
|
||||
|
||||
void sub_804CFA0(SomeTaskManager_60 *taskData);
|
||||
bool32 sub_804CFE0(u16 *param0, u16 param1, u16 param2);
|
||||
struct Task *CreateSomeTaskManager_60_Task(GfxInfo *gfx, TaskMain proc, TaskDestructor dtor); // -> SomeTaskManager_60
|
||||
struct Task *CreateSomeTaskManager_7C_Task(GfxInfo *gfx, TaskMain proc, TaskDestructor dtor); // -> SomeTaskManager_7C
|
||||
void TaskDestructor_SomeTaskManager_60_Common(struct Task *t);
|
||||
|
||||
#endif // GUARD_SOME_TASK_MANAGER_H
|
||||
@@ -0,0 +1,14 @@
|
||||
#ifndef GUARD_STAGE_DATA_H
|
||||
#define GUARD_STAGE_DATA_H
|
||||
|
||||
#include "global.h"
|
||||
#include "constants/sa1/zones.h"
|
||||
|
||||
extern const s16 gSpawnPositions[NUM_LEVEL_IDS_SP][2];
|
||||
extern const s16 gSpawnPositions_Modes_4_and_5[NUM_LEVEL_IDS_MP][MULTI_SIO_PLAYERS_MAX][2];
|
||||
extern const Vec2_32 gCheckpointPositions[];
|
||||
|
||||
extern const Vec2_32 SA2_LABEL(gUnknown_080D650C)[];
|
||||
extern const Vec2_32 SA2_LABEL(gUnknown_080D661C)[];
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,113 @@
|
||||
#ifndef GUARD_SA1_GAME_STAGE_UI_H
|
||||
#define GUARD_SA1_GAME_STAGE_UI_H
|
||||
|
||||
#include "gba/types.h" // for bool32
|
||||
#include "game/sa1/ui/game_over.h"
|
||||
#include "game/sa1/stage/ui_rendering.h" // Strc_8052C84 *
|
||||
|
||||
/* NOTE: This header is much more complicated than it needs to be.
|
||||
It originated from splitting a "UI" module,
|
||||
which wasn't one module after all, but the parts called functions that have shared
|
||||
struct pointers as parameters.
|
||||
*/
|
||||
|
||||
bool8 sub_805423C(StrcUi_805423C *param0);
|
||||
void sub_80543A4(StrcUi_805423C *param0);
|
||||
|
||||
#define UI_OAM_ORDER_INDEX 1
|
||||
|
||||
#define UI_DIGIT(_digit) ((_digit) + 32)
|
||||
#define FROM_UI_DIGIT(_digit) ((_digit)-32)
|
||||
|
||||
typedef struct {
|
||||
u8 unk0[3];
|
||||
u8 unk3;
|
||||
u8 filler4[4];
|
||||
u8 unk9;
|
||||
u8 unkA;
|
||||
u8 unkB;
|
||||
} StageUI_10;
|
||||
|
||||
typedef struct {
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
u8 unk6;
|
||||
u8 unk7;
|
||||
} StageUI_20;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 digitsRings[3];
|
||||
/* 0x03 */ u8 filler3[0x5];
|
||||
/* 0x08 */ s16 unk8;
|
||||
/* 0x0A */ s16 unkA;
|
||||
/* 0x0C */ s16 unkC;
|
||||
/* 0x0E */ s16 unkE;
|
||||
/* 0x10 */ StageUI_10 unk10;
|
||||
/* 0x1C */ u8 filler1C[0x4];
|
||||
/* 0x20 */ StageUI_20 unk20;
|
||||
/* 0x28 */ u8 filler28[0x8];
|
||||
/* 0x30 */ u8 digitLives;
|
||||
/* 0x31 */ u8 filler31[0xF];
|
||||
/* 0x40 */ u16 unk40;
|
||||
/* 0x31 */ u8 filler42[0x2];
|
||||
/* 0x44 */ u16 ringCount;
|
||||
/* 0x46 */ u8 filler46[0x2];
|
||||
/* 0x48 */ u16 unk48;
|
||||
/* 0x4A */ u8 filler4A[0x2];
|
||||
/* 0x4C */ s16 unk4C;
|
||||
/* 0x4E */ u8 filler4E[0x2];
|
||||
} StageUI; /* 0x50 */
|
||||
|
||||
typedef struct {
|
||||
// TODO: Seems like this (until incl. unk16?) is GameOverB?
|
||||
GameOverB unk0;
|
||||
|
||||
s16 unk18;
|
||||
u16 unk1A;
|
||||
void *unk1C;
|
||||
bool8 unk20;
|
||||
u8 unk21;
|
||||
} Strc_Ui_24;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ StrcUi_805423C unk0;
|
||||
/* 0x0C */ struct Task *taskC; // -> Strc_Ui_24
|
||||
/* 0x10 */ struct Task *task10; // -> Strc_Ui_24
|
||||
/* 0x14 */ struct Task *task14; // -> Strc_Ui_24
|
||||
/* 0x18 */ struct Task *task18; // -> Strc_Ui_24
|
||||
/* 0x1C */ struct Task *task1C; // -> Strc_Ui_24
|
||||
/* 0x20 */ struct Task *task20; // -> Strc_Ui_24
|
||||
/* 0x24 */ s16 unk24;
|
||||
/* 0x26 */ bool8 unk26;
|
||||
/* 0x27 */ u8 unk27;
|
||||
} Strc_Ui_28;
|
||||
|
||||
typedef struct {
|
||||
void *vram0;
|
||||
void *vram4;
|
||||
void *vram8;
|
||||
void *vramC;
|
||||
void *vram10;
|
||||
struct Task *task14;
|
||||
struct Task *task18;
|
||||
struct Task *task1C;
|
||||
struct Task *task20;
|
||||
struct Task *task24;
|
||||
} StrcStack;
|
||||
|
||||
void LoadStageIntroGraphics(StrcStack *param0);
|
||||
void sub_804A5D8(s32 x, s32 y);
|
||||
|
||||
void CreateStageUI(void);
|
||||
void CreateSpecialStageUI(void);
|
||||
|
||||
// TODO: Maybe param1 is actually (GameOverB *) ?
|
||||
void sub_8052E40(u8 *param0, Strc_8052C84 *param1);
|
||||
void sub_80538BC(void);
|
||||
bool32 sub_80549FC(void);
|
||||
|
||||
#endif // GUARD_SA1_GAME_STAGE_UI_H
|
||||
@@ -0,0 +1,8 @@
|
||||
#ifndef GUARD_TILEMAP_TABLE_H
|
||||
#define GUARD_TILEMAP_TABLE_H
|
||||
|
||||
#include "tilemap.h"
|
||||
|
||||
extern const Tilemap *const gTilemaps[];
|
||||
|
||||
#endif // GUARD_TILEMAP_TABLE_H
|
||||
@@ -0,0 +1,8 @@
|
||||
#ifndef GUARD_TRAPPED_ANIMALS_H
|
||||
#define GUARD_TRAPPED_ANIMALS_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
void CreateTrappedAnimal(s16 x, s16 y);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,102 @@
|
||||
#ifndef GUARD_gTask_03006240
|
||||
#define GUARD_gTask_03006240
|
||||
|
||||
#include "task.h"
|
||||
#include "game/sa1/ui/game_over.h"
|
||||
|
||||
// TODO: Seems like this task is Game Over-related?
|
||||
|
||||
// UI, OAM-related?
|
||||
typedef struct Strc0 {
|
||||
/* 0x000 */ s32 unk0; // tilenum (OAM)
|
||||
/* 0x004 */ s32 unk4;
|
||||
/* 0x008 */ u8 unk8;
|
||||
/* 0x009 */ u8 unk9;
|
||||
/* 0x00A */ u8 unkA;
|
||||
/* 0x00B */ u8 unkB;
|
||||
} Strc0;
|
||||
|
||||
typedef struct Strc_80528AC {
|
||||
/* 0x00 */ struct Strc0 unk0;
|
||||
/* 0x0C */ u8 *vramC;
|
||||
/* 0x10 */ const u8 *layout;
|
||||
/* 0x14 */ const u8 *tiles;
|
||||
/* 0x18 */ s32 tilesSize; // in bytes
|
||||
/* 0x1C */ s32 layoutSize;
|
||||
/* 0x20 */ const u16 *palette;
|
||||
/* 0x24 */ u32 paletteSize;
|
||||
/* 0x28 */ u8 unk28; // destination palID ?
|
||||
/* 0x29 */ u8 unk29; // backgroundID?
|
||||
/* 0x2A */ u8 unk2A; // flags - 0x1: freed?, 0x4: copy palette, 0x8: active?
|
||||
/* 0x2B */ u8 unk2B;
|
||||
/* 0x2C */ u8 uiGfxID;
|
||||
} Strc_80528AC; /* size: 0x30 */
|
||||
|
||||
typedef struct Strc_8055C50 {
|
||||
/* 0x00 */ void *vram0;
|
||||
/* 0x04 */ void *vram4;
|
||||
/* 0x08 */ void *vram8;
|
||||
} Strc_8055C50;
|
||||
|
||||
typedef struct Strc_8052C84 {
|
||||
/* 0x00 */ u16 unk0; // TODO: qX?
|
||||
/* 0x02 */ u16 unk2; // TODO: qY?
|
||||
/* 0x04 */ s16 unk4; // TODO: angle
|
||||
/* 0x06 */ u16 unk6; // TODO: affineIndex
|
||||
/* 0x08 */ u16 unk8;
|
||||
/* 0x0A */ u16 unkA;
|
||||
/* 0x0C */ u16 unkC;
|
||||
/* 0x0E */ s16 byteCount;
|
||||
/* 0x10 */ u16 unk10;
|
||||
/* 0x12 */ u16 unk12;
|
||||
/* 0x14 */ u8 filler14[2];
|
||||
/* 0x16 */ u8 unk16;
|
||||
} Strc_8052C84; /* size: 0x18 */ // <- GameOverB struct?
|
||||
|
||||
extern struct Task *gTask_03006240;
|
||||
|
||||
struct GfxSubstruct {
|
||||
struct GfxSubstruct *next;
|
||||
|
||||
GraphicsData graphics;
|
||||
// void *rom;
|
||||
// void *vram;
|
||||
// u8 fillerC[4];
|
||||
};
|
||||
|
||||
struct Strc_30063F0 {
|
||||
struct Strc_30063F0 *next;
|
||||
u8 unk4[10];
|
||||
s32 unk10;
|
||||
s32 unk14;
|
||||
u32 unk18; // bgID?
|
||||
u32 unk1C;
|
||||
u8 unk20;
|
||||
}; /* 0x30 ?? */
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ struct Strc0 unk0[10]; // TODO: might be more in this array?
|
||||
/* 0x078 */ u8 filler78[0xF0];
|
||||
/* 0x168 */ struct GfxSubstruct *first;
|
||||
/* 0x16C */ struct GfxSubstruct gfxList[16]; // last entry empty?
|
||||
/* 0x26C */ u8 filler26C[0xE0];
|
||||
} Task_3006240; /* 0x34C */
|
||||
|
||||
struct Strc_3006250 {
|
||||
struct Strc_3006250 *next;
|
||||
u8 unk4[0x20];
|
||||
}; /* 0x24 */
|
||||
|
||||
void sub_80535C8(struct Strc0 *inTask, u8 param1);
|
||||
|
||||
void sub_80535FC(void);
|
||||
IwramData UiGfxStackInit(void);
|
||||
GraphicsData *UiGfxStackPop(void);
|
||||
void sub_80528AC(Strc_80528AC *strc);
|
||||
// TODO: Is this the correct module?
|
||||
void sub_8052C84(const char *param0, Strc_8052C84 *param1);
|
||||
void sub_8052F78(const char *param0, struct GameOverB *strc);
|
||||
void sub_80530CC(const char *param0, struct GameOverB *param1);
|
||||
void sub_8055C50(Strc_8055C50 *param0);
|
||||
|
||||
#endif // GUARD_gTask_03006240
|
||||
@@ -0,0 +1,8 @@
|
||||
#ifndef GUARD_CHARACTER_SELECT_H
|
||||
#define GUARD_CHARACTER_SELECT_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
void CreateCharacterSelectionScreen(u8 selectedCharacter);
|
||||
|
||||
#endif // GUARD_CHARACTER_SELECT_H
|
||||
@@ -0,0 +1,6 @@
|
||||
#ifndef GUARD_SA1_COLLECT_CHAOS_EMERALDS_H
|
||||
#define GUARD_SA1_COLLECT_CHAOS_EMERALDS_H
|
||||
|
||||
void CreateGetAllChaosEmeraldsMessage(void);
|
||||
|
||||
#endif // GUARD_SA1_COLLECT_CHAOS_EMERALDS_H
|
||||
@@ -0,0 +1,8 @@
|
||||
#ifndef GUARD_COURSE_SELECT_H
|
||||
#define GUARD_COURSE_SELECT_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
void CreateCourseSelect(u8 param0);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,87 @@
|
||||
#ifndef GUARD_GAME_OVER_H
|
||||
#define GUARD_GAME_OVER_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
enum ELostLifeCause {
|
||||
OVER_CAUSE_ZERO_LIVES = 0x1,
|
||||
OVER_CAUSE_TIME_UP = 0x2,
|
||||
};
|
||||
|
||||
#ifndef NON_MATCHING
|
||||
typedef u8 LostLifeCause;
|
||||
#else
|
||||
typedef enum ELostLifeCause LostLifeCause;
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Sprite s;
|
||||
/* 0x30 */ u8 filler30[0xC];
|
||||
/* 0x3C */ Sprite s2;
|
||||
/* 0x6C */ u8 filler6C[0xC];
|
||||
/* 0x78 */ u32 frames;
|
||||
/* 0x7C */ u32 lostLifeCause;
|
||||
/* 0x80 */ u8 unk80;
|
||||
} GameOverScreen;
|
||||
|
||||
// TODO: Appears to be a shared, UI-related struct?
|
||||
typedef struct GameOverB {
|
||||
/* 0x00 */ u8 unk0;
|
||||
/* 0x01 */ u8 unk1;
|
||||
/* 0x02 */ u8 unk2;
|
||||
/* 0x03 */ u8 unk3;
|
||||
/* 0x04 */ u8 unk4;
|
||||
/* 0x05 */ u8 unk5;
|
||||
/* 0x06 */ u8 unk6;
|
||||
/* 0x07 */ u8 unk7;
|
||||
/* 0x08 */ u16 unk8;
|
||||
/* 0x0A */ s16 qUnkA; // NOTE: Actually a Y-value it looks like?
|
||||
/* 0x0C */ s16 unkC;
|
||||
/* 0x0E */ s16 unkE; // String/Data length?
|
||||
/* 0x10 */ u16 unk10;
|
||||
/* 0x12 */ u16 unk12; // variant?
|
||||
/* 0x14 */ u16 unk14;
|
||||
/* 0x16 */ u8 unk16;
|
||||
/* 0x17 */ u8 unk17;
|
||||
} GameOverB; /* 0x18 */
|
||||
|
||||
// Exclusive to game_over.c
|
||||
typedef struct {
|
||||
/* 0x00 */ GameOverB unk0;
|
||||
/* 0x18 */ u32 unk18;
|
||||
/* 0x1C */ void *vram1C;
|
||||
} GameOverB0; /* 0x20 */
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 unk0;
|
||||
/* 0x02 */ s16 unk2;
|
||||
/* 0x04 */ s16 unk4;
|
||||
/* 0x06 */ s16 unk6;
|
||||
/* 0x08 */ s16 unk8;
|
||||
/* 0x0A */ u8 unkA;
|
||||
/* 0x0B */ u8 unkB;
|
||||
} StrcUi_805423C; /* size: ??? */
|
||||
|
||||
typedef struct GameOverC {
|
||||
/* 0x00 */ StrcUi_805423C unk0;
|
||||
/* 0x0C */ void *unkC;
|
||||
/* 0x10 */ void *unk10;
|
||||
/* 0x14 */ void *unk14;
|
||||
/* 0x18 */ u32 unk18;
|
||||
} GameOverC; /* 0x1C */
|
||||
|
||||
typedef struct GameOverD {
|
||||
/* 0x00 */ u8 filler0[0x18];
|
||||
/* 0x18 */ GameOverScreen *unk18;
|
||||
/* 0x1C */ GameOverB0 *unk1C;
|
||||
/* 0x20 */ GameOverC *unk20;
|
||||
/* 0x24 */ u32 unk24;
|
||||
/* 0x28 */ u16 unk28;
|
||||
/* 0x26 */ u8 filler2A[0x2];
|
||||
/* 0x2C */ void *vram2C;
|
||||
/* 0x30 */ void *vram30;
|
||||
} GameOverD; /* 0x34 */
|
||||
|
||||
void CreateGameOverScreen(LostLifeCause lostLifeCause);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,15 @@
|
||||
#ifndef GUARD_STAGE_RESULTS_H
|
||||
#define GUARD_STAGE_RESULTS_H
|
||||
|
||||
#include "global.h"
|
||||
#include "sprite.h"
|
||||
|
||||
u32 CreateStageResults(u32, u32);
|
||||
void StageResults_AnimateSeparator(void);
|
||||
void StageResults_AnimateTitle(void);
|
||||
|
||||
extern const u16 gAnimsGotThroughZoneAndActNames[][3];
|
||||
extern const u16 gStageResultsHeadlineTexts[][3];
|
||||
extern const u16 gAnimsGotThroughCharacterNames[][3];
|
||||
|
||||
#endif // GUARD_STAGE_RESULTS_H
|
||||
@@ -0,0 +1,8 @@
|
||||
#ifndef GUARD_TIME_ATTACK_LOBBY_H
|
||||
#define GUARD_TIME_ATTACK_LOBBY_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
void CreateTimeAttackLobbyScreen(void);
|
||||
|
||||
#endif // GUARD_TIME_ATTACK_LOBBY_H
|
||||
@@ -0,0 +1,8 @@
|
||||
#ifndef GUARD_TIME_ATTACK_RESULTS_H
|
||||
#define GUARD_TIME_ATTACK_RESULTS_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
u32 CreateTimeAttackResults(u32 finishTime);
|
||||
|
||||
#endif // GUARD_TIME_ATTACK_RESULTS_H
|
||||
@@ -0,0 +1,6 @@
|
||||
#ifndef GUARD_SA1_TIME_OVER_H
|
||||
#define GUARD_SA1_TIME_OVER_H
|
||||
|
||||
void CreateTimeOver();
|
||||
|
||||
#endif // GUARD_SA1_TIME_OVER_H
|
||||
@@ -5,7 +5,7 @@
|
||||
#include "game/sa2/save.h"
|
||||
#include "sprite.h"
|
||||
#include "game/sa2/stage/screen_fade.h"
|
||||
#include "constants/text.h"
|
||||
#include "constants/sa2/text.h"
|
||||
#include "game/sa2/stage/player_controls.h"
|
||||
|
||||
#define RENDER_TARGET_SCREEN 0
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
#include "game/globals.h"
|
||||
|
||||
#include "game/sa2/stage/player_controls.h"
|
||||
#include "constants/zones.h"
|
||||
#include "constants/characters.h"
|
||||
#include "constants/sa2/zones.h"
|
||||
#include "constants/sa2/characters.h"
|
||||
|
||||
#define PLAYER_NAME_END_CHAR 0xFFFF
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "global.h"
|
||||
#include "sprite.h" // for the 'AnimId' type
|
||||
#include "constants/zones.h"
|
||||
#include "constants/sa2/zones.h"
|
||||
|
||||
#define SPRITE_ARRAY_END \
|
||||
{ \
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#define GUARD_SPECIAL_STAGE_TABLES_H
|
||||
|
||||
#include "global.h"
|
||||
#include "constants/zones.h"
|
||||
#include "constants/sa2/zones.h"
|
||||
|
||||
extern const s16 gUnknown_080DF9D8[][3];
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "global.h"
|
||||
#include "sprite.h"
|
||||
#include "constants/characters.h"
|
||||
#include "constants/sa2/characters.h"
|
||||
|
||||
void sub_801561C(void);
|
||||
void sub_8015750(void);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef GUARD_PLAYER_SUPER_SONIC_H
|
||||
#define GUARD_PLAYER_SUPER_SONIC_H
|
||||
|
||||
#include "constants/zones.h"
|
||||
#include "constants/sa2/zones.h"
|
||||
|
||||
struct SuperSonic;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef GUARD_PARAMETERS_CHARACTERS_H
|
||||
#define GUARD_PARAMETERS_CHARACTERS_H
|
||||
|
||||
#include "constants/zones.h"
|
||||
#include "constants/sa2/zones.h"
|
||||
|
||||
/* NOTE: Copied from SA2! */
|
||||
|
||||
|
||||
@@ -27,13 +27,40 @@ typedef void (*BgUpdate)(s32, s32);
|
||||
// NOTE: This was copy-pasted from SA2.
|
||||
// There are type differences for members
|
||||
typedef struct Camera {
|
||||
/* 0x00|0x04 */ CamCoord x;
|
||||
/* 0x02|0x04 */ CamCoord y;
|
||||
/* 0x00|0x04 */ CamCoord x; // TODO: might this be unsigned actually?
|
||||
/* 0x02|0x04 */ CamCoord y; // TODO: might this be unsigned actually?
|
||||
#if (GAME == GAME_SA1)
|
||||
u8 filler4[0x2C];
|
||||
/* 0x04 */ s16 SA2_LABEL(unk8);
|
||||
/* 0x06 */ s16 SA2_LABEL(unkC);
|
||||
/* 0x08 */ CamCoord SA2_LABEL(unk10);
|
||||
/* 0x0A */ CamCoord SA2_LABEL(unk14);
|
||||
/* 0x0C */ s16 shiftX;
|
||||
/* 0x0E */ s16 shiftY;
|
||||
/* 0x10 */ s16 SA2_LABEL(unk20);
|
||||
/* 0x12 */ s16 SA2_LABEL(unk24);
|
||||
|
||||
// TODO: Why are X/Y swapped?
|
||||
// Did they make this a matrix or sth.?
|
||||
// (Used to calc min/max cam pos in UpdateCamera())
|
||||
/* 0x14 */ s16 minY;
|
||||
/* 0x16 */ s16 maxY;
|
||||
/* 0x18 */ s16 minX;
|
||||
/* 0x1A */ s16 maxX;
|
||||
/* 0x1C */ s16 SA2_LABEL(unk40);
|
||||
/* 0x1E */ s16 SA2_LABEL(unk44);
|
||||
/* 0x20 */ s16 SA2_LABEL(unk48);
|
||||
/* 0x22 */ s16 SA2_LABEL(unk4C);
|
||||
/* 0x24 */ u16 unk24;
|
||||
/* 0x26 */ u16 SA2_LABEL(unk50);
|
||||
/* 0x28 */ u16 SA2_LABEL(unk52);
|
||||
/* 0x2A */ u16 SA2_LABEL(unk54);
|
||||
/* 0x2C */ BgUpdate fnBgUpdate;
|
||||
/* 0x30 */ struct Task *movementTask;
|
||||
/* 0x34 */ s16 shakeOffsetX;
|
||||
/* 0x36 */ s16 shakeOffsetY;
|
||||
/* 0x38 */ s16 SA2_LABEL(unk64);
|
||||
/* 0x3A */ u8 spectatorTarget;
|
||||
/* 0x3B */ u8 filler3B[0x2];
|
||||
#elif (GAME == GAME_SA2)
|
||||
/* 0x08 */ s32 unk8;
|
||||
/* 0x0C */ s32 unkC;
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
#define GUARD_STAGE_PLAYER_H
|
||||
|
||||
#include "core.h"
|
||||
#include "constants/move_states.h"
|
||||
#include "constants/sa2/move_states.h"
|
||||
|
||||
// TODO: merge these
|
||||
#include "constants/characters.h"
|
||||
#include "constants/sa2/characters.h"
|
||||
#include "game/shared/parameters/characters.h"
|
||||
|
||||
#define PLAYER_IS_ALIVE (!(gPlayer.moveState & MOVESTATE_DEAD))
|
||||
@@ -217,6 +217,11 @@ typedef struct Player_ {
|
||||
|
||||
extern Player gPlayer;
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
// "Cheat Code" Tails
|
||||
extern Player gPartner;
|
||||
#endif
|
||||
|
||||
// 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
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "global.h"
|
||||
#include "rect.h"
|
||||
#include "constants/zones.h"
|
||||
#include "constants/sa2/zones.h"
|
||||
|
||||
#define MP_COLLECT_RINGS_COMPRESSED_POS_DATA ((u8 **)(EWRAM_START + 0x33008))
|
||||
#define MP_COLLECT_RINGS_COMPRESSED_SIZE (u8 **)(EWRAM_START + 0x3300C)
|
||||
|
||||
@@ -1,11 +1,45 @@
|
||||
#ifndef GUARD_SA2_RINGS_SCATTER_H
|
||||
#define GUARD_SA2_RINGS_SCATTER_H
|
||||
|
||||
extern struct Task *gRingsScatterTask;
|
||||
#include "core.h"
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
#define MAX_SCATTERING_RINGS_COUNT_SP 48
|
||||
#define MAX_SCATTERING_RINGS_COUNT_MP 32
|
||||
#elif (GAME == GAME_SA2)
|
||||
#define MAX_SCATTERING_RINGS_COUNT_SP 32
|
||||
#define MAX_SCATTERING_RINGS_COUNT_MP 16
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 x;
|
||||
/* 0x04 */ s32 y;
|
||||
/* 0x08 */ s16 velX;
|
||||
/* 0x0A */ s16 velY;
|
||||
/* 0x0C */ u16 unkC;
|
||||
/* 0x0E */ s16 unkE;
|
||||
#if (GAME == GAME_SA2)
|
||||
/* 0x10 */ u16 unk10;
|
||||
#endif
|
||||
} ScatterRing; /* size: 0x14 */
|
||||
|
||||
typedef struct {
|
||||
/* 0x000|0x000 */ Sprite sprRing;
|
||||
/* 0x030|0x030 */ ScatterRing rings[MAX_SCATTERING_RINGS_COUNT_SP];
|
||||
/* 0x330|0x2B0 */ u32 SA2_LABEL(unk2B0);
|
||||
/* 0x334|0x2B4 */ u16 SA2_LABEL(unk2B4);
|
||||
/* 0x336|0x2B6 */ u16 SA2_LABEL(unk2B6);
|
||||
} RingsScatter; /* size: 0x2B8 */
|
||||
|
||||
extern struct Task *gRingsScatterTask; // -> RingsScatter
|
||||
|
||||
void InitPlayerHitRingsScatter(void);
|
||||
void DestroyRingsScatterTask(void);
|
||||
|
||||
void InitScatteringRings(s32 x, s32 y, s32 numRings);
|
||||
|
||||
#if (GAME == GAME_SA1)
|
||||
void InitScatteringRings_ExtraBossCapsule(s32 x, s32 y, s32 numRings);
|
||||
#endif
|
||||
|
||||
#endif // GUARD_SA2_RINGS_SCATTER_H
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "global.h"
|
||||
#include "core.h"
|
||||
#include "constants/zones.h"
|
||||
#include "constants/sa2/zones.h"
|
||||
|
||||
void ApplyGameStageSettings(void);
|
||||
void GameStageStart(void);
|
||||
|
||||
@@ -74,8 +74,19 @@ extern void DmaSet(int dmaNum, const void *src, void *dest, u32 control);
|
||||
dmaRegs[5] &= ~DMA_ENABLE; \
|
||||
dmaRegs[5]; \
|
||||
}
|
||||
// Used in SA1, stage.c
|
||||
#define SlowDmaStop(dmaNum) \
|
||||
{ \
|
||||
vu16 *dmaRegs = (vu16 *)REG_ADDR_DMA##dmaNum##SAD; \
|
||||
dmaRegs[5] &= ~(DMA_START_MASK | DMA_DREQ_ON | DMA_REPEAT); \
|
||||
dmaRegs[5]; \
|
||||
dmaRegs[5] &= ~DMA_ENABLE; \
|
||||
dmaRegs[5]; \
|
||||
dmaRegs[5]; \
|
||||
}
|
||||
#else
|
||||
extern void DmaStop(int dmaNum);
|
||||
static inline void SlowDmaStop(int dmaNum) { DmaStop(dmaNum); }
|
||||
#endif
|
||||
|
||||
#define DmaCopyLarge(dmaNum, src, dest, size, block, bit) \
|
||||
|
||||
Loaded 100 of 525 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user