sa1: move more source, more alignment

This commit is contained in:
Oliver Bell committed 2026-04-09 23:44:28 +01:00
1 parent fc1ca96721
commit f4a041adde
58 files changed
+307 -240

No files matched your search

+3 -1
View File
@@ -14,8 +14,10 @@ typedef s32 CamCoord;
#define TILE_WIDTH 8
#define CAM_REGION_WIDTH 256
#define TILES_PER_METATILE_AXIS 12
#define METATILE_DIM (TILES_PER_METATILE_AXIS * TILE_WIDTH)
#define TO_WORLD_POS(pos, region) ((pos)*TILE_WIDTH + (region)*CAM_REGION_WIDTH)
#define TO_WORLD_POS(pos, region) ((pos)*TILE_WIDTH + (region)*CAM_REGION_WIDTH)
#define TO_WORLD_POS_INV(pos, region) ((region)*CAM_REGION_WIDTH + (pos)*TILE_WIDTH)
#define CAM_BOUND_X ((DISPLAY_WIDTH) + (CAM_REGION_WIDTH))
#define CAM_BOUND_Y ((DISPLAY_HEIGHT) + ((CAM_REGION_WIDTH) / 2))
+21
View File
@@ -11,6 +11,10 @@
#define COLL_FLAG_2 0x00000002
#define COLL_FLAG_4 0x00000004
#define COLL_FLAG_8 0x00000008
#define COLL_FLAG_10 0x00000010
#define COLL_FLAG_20 0x00000020
#define COLL_FLAG_40 0x00000040
#define COLL_FLAG_80 0x00000080
#define COLL_FLAG_10000 0x00010000
#define COLL_FLAG_20000 0x00020000
#define COLL_FLAG_40000 0x00040000
@@ -20,7 +24,11 @@
u32 Coll_Player_Entity_RectIntersection(Sprite *s, s32 sx, s32 sy, Player *p, Rect8 *rectPlayer);
// TODO: Include header this belongs to
#if (GAME == GAME_SA1)
u32 Coll_Player_Itembox(Sprite *s, CamCoord worldX, CamCoord worldY, Player *p);
#else
u32 Coll_Player_ItemBox(Sprite *, s32, s32);
#endif
bool32 Coll_Player_Entity_HitboxN(Sprite *, s32, s32, s16, Player *, s16);
bool32 Coll_Player_Boss_Attack(Sprite *s, s32 sx, s32 sy, s16 hbIndex, Player *p);
@@ -28,7 +36,16 @@ bool32 Coll_Player_Enemy(Sprite *s, s32 sx, s32 sy, s16 hbIndex, Player *p);
bool32 Coll_Cheese_Enemy_Attack(Sprite *sprTarget, s32 sx, s32 sy, s16 hbIndex, Player *p);
u32 sub_800DA4C(Sprite *opponent, s16 oppX, s16 oppY, UNUSED s32 param3, UNUSED s32 param4, u8 layer);
u32 sub_800CDBC(Sprite *, s32, s32, Player *);
#if (GAME == GAME_SA1)
u32 Coll_Player_SkatingStone(Sprite *, CamCoord x, CamCoord y, Player *);
u32 Coll_Player_Gate(Sprite *s, CamCoord worldX, CamCoord worldY, Player *p, u32 param4);
u32 sub_800C394(Sprite *s, CamCoord screenX, CamCoord screenY, Player *p);
u32 Coll_Player_Spring_Sideways(Sprite *s, CamCoord worldX, CamCoord worldY, Player *p);
u32 Coll_Player_PlatformCrumbling(Sprite *s, CamCoord worldX, CamCoord worldY, Player *p);
u32 Coll_Player_Entity_Intersection(Sprite *s, CamCoord x, CamCoord y, Player *p);
#else
u32 Coll_Player_Entity_Intersection(Sprite *, s32, s32, Player *);
#endif
u32 Coll_Player_Interactable(Sprite *s, s32 sx, s32 sy, Player *p);
bool32 Coll_DamagePlayer(Player *);
@@ -36,6 +53,10 @@ void Coll_Player_Enemy_AdjustSpeed(Player *);
u32 Coll_Player_Platform(Sprite *, s32 x, s32 y, Player *);
#if (GAME == GAME_SA1)
bool32 Coll_AmyHammer_Spring(Sprite *s, CamCoord worldX, CamCoord worldY, Player *p);
#endif
u32 sub_800CE94(Sprite *s, s32 sx, s32 sy, Rect8 *param3, Player *p);
bool32 SA2_LABEL(sub_800DD54)(Player *p);
bool32 SA2_LABEL(sub_800DE44)(Player *p);
@@ -6,6 +6,12 @@
#include "task.h"
#include "game/shared/stage/entity.h"
// TODO: merge with the below
typedef struct {
/* 0x00 */ SpriteBase base;
/* 0x0C */ Sprite s;
} EntityShared;
typedef struct {
/* 0x00 */ SpriteBase base;
/* 0x0C */ Sprite displayed;
@@ -42,5 +48,7 @@ void CreateEnemyDefeatScoreAndManageLives(s16 x, s16 y);
// TaskDestructor_SpriteEntity
void TaskDestructor_80095E8(struct Task *);
// The same as above, should align the name
void TaskDestructor_EntityShared(struct Task *);
#endif
+24 -7
View File
@@ -6,17 +6,21 @@
#include "sprite.h"
#include "game/globals.h"
#include "game/shared/stage/collision.h"
#include "game/shared/stage/player.h"
#include "game/shared/stage/terrain_collision.h"
#if (GAME == GAME_SA2)
#include "game/sa2/stage/player_callbacks.h"
#endif
#include "game/shared/stage/player.h"
#include "game/shared/stage/camera.h"
#define ENTITY_DATA_SIZE_SA1 4
#define ENTITY_DATA_SIZE_SA2 4
#define ENTITY_DATA_SIZE_SA3 5
#define ENTITY_DATA_SIZE ENTITY_DATA_SIZE_SA2
#define ENTITY_DATA_SIZE ENTITY_DATA_SIZE_SA1
PACKED(MapEntity, {
/* 0x00 */ u8 x; // While an enemy is active, x gets repurposed as a "state"
@@ -58,6 +62,10 @@ typedef struct {
Sprite s;
} EnemyBase;
u32 sub_800CDBC(Sprite *, s32, s32, Player *);
u32 Coll_Player_Entity_Intersection(Sprite *s, CamCoord x, CamCoord y, Player *p);
// After a MapEntity is initialized, its x-value in the layout-data gets set to -2.
// TODO:
// Find out whether casting these to u8 can work while still matching!
@@ -65,6 +73,8 @@ typedef struct {
#define MAP_ENTITY_STATE_INITIALIZED (-2)
#define MAP_ENTITY_STATE_MINUS_THREE (-3)
#define SET_MAP_ENTITY_INITIALIZED_SIMPLE(mapEnt) (mapEnt)->x = MAP_ENTITY_STATE_INITIALIZED;
// TODO: Find a way to simplify/remove this macro!
#define SET_MAP_ENTITY_INITIALIZED(mapEnt) \
{ \
@@ -101,13 +111,20 @@ typedef struct {
#define ENEMY_SET_SPAWN_POS_GROUND(_enemy, _mapEntity) \
ENEMY_SET_SPAWN_POS_STATIC(_enemy, _mapEntity); \
_enemy->offsetX = 0; \
_enemy->offsetY = Q(sub_801F07C(I(_enemy->spawnY), I(_enemy->spawnX), _enemy->clampParam, 8, NULL, sub_801EE64));
_enemy->offsetY = Q(SA2_LABEL(sub_801F07C)(I(_enemy->spawnY), I(_enemy->spawnX), _enemy->clampParam, 8, NULL, SA2_LABEL(sub_801EE64)));
#if (GAME == GAME_SA1)
#define ENEMY_UPDATE_EX_RAW(_s, _posX, _posY, code_insert) \
{ code_insert }; \
UpdateSpriteAnimation(_s); \
DisplaySprite(_s);
#else
#define ENEMY_UPDATE_EX_RAW(_s, _posX, _posY, code_insert) \
Player_UpdateHomingPosition(_posX, _posY); \
{ code_insert }; \
UpdateSpriteAnimation(_s); \
DisplaySprite(_s);
#endif
#define ENEMY_UPDATE_EX(_s, _posX, _posY, code_insert) ENEMY_UPDATE_EX_RAW(_s, QS(_posX), QS(_posY), code_insert);
@@ -161,8 +178,8 @@ typedef struct {
#define ENEMY_CLAMP_TO_GROUND_RAW(_enemy, _unknownBool, _p) \
{ \
s32 delta \
= sub_801F07C(I(_enemy->spawnY + _enemy->offsetY), I(_enemy->spawnX + _enemy->offsetX), _unknownBool, 8, _p, sub_801EE64); \
s32 delta = SA2_LABEL(sub_801F07C)(I(_enemy->spawnY + _enemy->offsetY), I(_enemy->spawnX + _enemy->offsetX), _unknownBool, 8, _p, \
sub_801EE64); \
\
if (delta < 0) { \
_enemy->offsetY += Q(delta); \
@@ -178,8 +195,8 @@ typedef struct {
#define ENEMY_CLAMP_TO_GROUND_2(_enemy, _unknownBool) \
{ \
s32 delta \
= sub_801F07C(I(_enemy->spawnY + _enemy->offsetY), I(_enemy->spawnX + _enemy->offsetX), _unknownBool, -8, NULL, sub_801EE64); \
s32 delta = SA2_LABEL(sub_801F07C)(I(_enemy->spawnY + _enemy->offsetY), I(_enemy->spawnX + _enemy->offsetX), _unknownBool, -8, \
NULL, SA2_LABEL(sub_801EE64)); \
\
if (delta < 0) { \
_enemy->offsetY -= Q(delta); \
@@ -0,0 +1,8 @@
#ifndef GUARD_GRIND_EFFECT_1_H
#define GUARD_GRIND_EFFECT_1_H
#include "task.h"
struct Task *CreateGrindEffect(void);
#endif // GUARD_GRIND_EFFECT_1_H
+14
View File
@@ -73,6 +73,20 @@ typedef struct {
u8 targetPlayer;
} RoomEvent_ItemEffect;
typedef struct {
ROOMEVENT_BASE;
u8 x; // regionX truncated
u8 y; // regionY truncated
u8 id;
u8 unk4;
} RoomEvent_BalloonPopped;
typedef struct {
ROOMEVENT_BASE;
u8 id1;
u8 id2;
} RoomEvent_ChaoCollected;
typedef struct {
ROOMEVENT_BASE;
u8 unk1;
+1 -1
View File
@@ -279,7 +279,7 @@ typedef struct Player_ {
#endif
} Player;
extern s32 sa2__sub_8022F58(u8 param0, Player *p);
s32 SA2_LABEL(sub_8022F58)(u8 param0, Player *p);
extern Player gPlayer;
#if (GAME == GAME_SA1)
@@ -5,20 +5,20 @@
#include "core.h"
typedef s32 (*Func801F100)(s32, s32, s32);
s32 sub_801EB44(s32, s32, s32);
s32 sub_801EC3C(s32, s32, s32);
s32 SA2_LABEL(sub_801EB44)(s32, s32, s32);
s32 SA2_LABEL(sub_801EC3C)(s32, s32, s32);
typedef s32 (*Func801F07C)(s32, s32, s32, u8 *);
s32 sub_801ED24(s32, s32, s32, u8 *);
s32 sub_801EE64(s32, s32, s32, u8 *);
s32 sub_801F07C(s32, s32, s32, s32, u8 *, Func801F07C);
s32 SA2_LABEL(sub_801ED24)(s32, s32, s32, u8 *);
s32 SA2_LABEL(sub_801EE64)(s32, s32, s32, u8 *);
s32 SA2_LABEL(sub_801F07C)(s32, s32, s32, s32, u8 *, Func801F07C);
// ground collision clamp functions
s32 sub_801E4E4(s32, s32, s32, s32, u8 *, Func801F07C);
s32 SA2_LABEL(sub_801E4E4)(s32, s32, s32, s32, u8 *, Func801F07C);
s32 sub_801E6D4(s32, s32, s32, s32, u8 *, Func801F07C);
void SA2_LABEL(sub_801F044)(void);
s32 sub_801F100(s32, s32, s32, s32, Func801F100);
s32 SA2_LABEL(sub_801F100)(s32, s32, s32, s32, Func801F100);
extern const Collision *gRefCollision;
extern const Collision *const gCollisionTable[];
+58 -56
View File
@@ -253,64 +253,12 @@ SA2_C_FILES := \
src/game/sa1/special_stage/main.c \
src/game/sa1/stage/egg_rocket_transitions.c \
src/game/sa1/stage/temporary_sound_play_task.c \
src/game/sa1/stage/itembox.c \
src/game/sa1/menus/title_screen.c \
src/game/dummy_task.c \
src/game/game.c \
# Can't build
# src/game/sa1/stage/camera_destroy.c \
# src/game/sa1/stage/stage_ui_z.c \
# src/game/sa1/stage/stage_ui.c \
# src/game/sa1/stage/trapped_animals.c \
# src/game/sa1/stage/mystery_itembox.c \
# src/game/sa1/stage/backgrounds/zone_5_init.c \
# src/game/sa1/stage/backgrounds/zone_4.c \
# src/game/sa1/stage/backgrounds/zone_3_firework.c \
# src/game/sa1/stage/backgrounds/zone_3.c \
# src/game/sa1/stage/backgrounds/zone_2_interior.c \
# src/game/sa1/stage/backgrounds/zone_7_act_2.c \
# src/game/sa1/stage/backgrounds/zone_4_init.c \
# src/game/sa1/stage/backgrounds/zone_2.c \
# src/game/sa1/stage/backgrounds/zone_6_hblank.c \
# src/game/sa1/stage/backgrounds/zone_6.c \
# src/game/sa1/stage/backgrounds/zone_7_act_1.c \
# src/game/sa1/stage/backgrounds/zone_1.c \
# src/game/sa1/stage/backgrounds/zone_7_act_2_init.c \
# src/game/sa1/stage/backgrounds/zone_5.c \
# src/game/sa1/stage/enemies/wamu.c \
# src/game/sa1/stage/enemies/bosses_egg_mobile.c \
# src/game/sa1/stage/enemies/tentou.c \
# src/game/sa1/stage/enemies/boss_1_egg_hammer_tank.c \
# src/game/sa1/stage/enemies/gamigami.c \
# src/game/sa1/stage/enemies/boss_4_egg_spider.c \
# src/game/sa1/stage/enemies/kerokero.c \
# src/game/sa1/stage/enemies/boss_3_egg_ball.c \
# src/game/sa1/stage/enemies/pen_mk1.c \
# src/game/sa1/stage/enemies/bosses_misc.c \
# src/game/sa1/stage/enemies/drisame.c \
# src/game/sa1/stage/enemies/leon.c \
# src/game/sa1/stage/enemies/slot.c \
# src/game/sa1/stage/enemies/buzzer.c \
# src/game/sa1/stage/enemies/boss_xtra_super_egg_robot.c \
# src/game/sa1/stage/enemies/oct.c \
# src/game/sa1/stage/enemies/boss_x1_egg_wrecker.c \
# src/game/sa1/stage/enemies/fireball.c \
# src/game/sa1/stage/enemies/pierrot.c \
# src/game/sa1/stage/enemies/kiki.c \
# src/game/sa1/stage/enemies/boss_2_egg_press.c \
# src/game/sa1/stage/enemies/boss_x3_egg_x.c \
# src/game/sa1/stage/enemies/mole.c \
# src/game/sa1/stage/enemies/boss_x2_egg_drillster.c \
# src/game/sa1/stage/enemies/senbon.c \
# src/game/sa1/stage/enemies/rhinotank.c \
# src/game/sa1/stage/enemies/mirror.c \
# src/game/sa1/stage/enemies/kuraa.c \
# src/game/sa1/stage/enemies/boss_5_mecha_knuckles.c \
# src/game/sa1/stage/enemies/boss_6_egg_snake.c \
# src/game/sa1/stage/enemies/yukimaru.c \
# src/game/sa1/stage/enemies/hanabii.c \
# src/game/sa1/stage/itembox.c \
# src/game/sa1/stage/player_amy.c \
# src/game/sa1/stage/player_knuckles.c \
# Non matching
# src/game/sa1/stage/interactables/special_spring.c \
# src/game/sa1/stage/interactables/toggle_gravity.c \
# src/game/sa1/stage/interactables/half_pipe.c \
@@ -387,9 +335,63 @@ SA2_C_FILES := \
# src/game/sa1/stage/interactables/carousel.c \
# src/game/sa1/stage/interactables/swing_rope.c \
# src/game/sa1/stage/interactables/bumpers.c \
# Can't build
# src/game/sa1/stage/camera_destroy.c \
# src/game/sa1/stage/stage_ui_z.c \
# src/game/sa1/stage/stage_ui.c \
# src/game/sa1/stage/trapped_animals.c \
# src/game/sa1/stage/mystery_itembox.c \
# src/game/sa1/stage/backgrounds/zone_5_init.c \
# src/game/sa1/stage/backgrounds/zone_4.c \
# src/game/sa1/stage/backgrounds/zone_3_firework.c \
# src/game/sa1/stage/backgrounds/zone_3.c \
# src/game/sa1/stage/backgrounds/zone_2_interior.c \
# src/game/sa1/stage/backgrounds/zone_7_act_2.c \
# src/game/sa1/stage/backgrounds/zone_4_init.c \
# src/game/sa1/stage/backgrounds/zone_2.c \
# src/game/sa1/stage/backgrounds/zone_6_hblank.c \
# src/game/sa1/stage/backgrounds/zone_6.c \
# src/game/sa1/stage/backgrounds/zone_7_act_1.c \
# src/game/sa1/stage/backgrounds/zone_1.c \
# src/game/sa1/stage/backgrounds/zone_7_act_2_init.c \
# src/game/sa1/stage/backgrounds/zone_5.c \
# src/game/sa1/stage/enemies/wamu.c \
# src/game/sa1/stage/enemies/bosses_egg_mobile.c \
# src/game/sa1/stage/enemies/tentou.c \
# src/game/sa1/stage/enemies/boss_1_egg_hammer_tank.c \
# src/game/sa1/stage/enemies/gamigami.c \
# src/game/sa1/stage/enemies/boss_4_egg_spider.c \
# src/game/sa1/stage/enemies/kerokero.c \
# src/game/sa1/stage/enemies/boss_3_egg_ball.c \
# src/game/sa1/stage/enemies/pen_mk1.c \
# src/game/sa1/stage/enemies/bosses_misc.c \
# src/game/sa1/stage/enemies/drisame.c \
# src/game/sa1/stage/enemies/leon.c \
# src/game/sa1/stage/enemies/slot.c \
# src/game/sa1/stage/enemies/buzzer.c \
# src/game/sa1/stage/enemies/boss_xtra_super_egg_robot.c \
# src/game/sa1/stage/enemies/oct.c \
# src/game/sa1/stage/enemies/boss_x1_egg_wrecker.c \
# src/game/sa1/stage/enemies/fireball.c \
# src/game/sa1/stage/enemies/pierrot.c \
# src/game/sa1/stage/enemies/kiki.c \
# src/game/sa1/stage/enemies/boss_2_egg_press.c \
# src/game/sa1/stage/enemies/boss_x3_egg_x.c \
# src/game/sa1/stage/enemies/mole.c \
# src/game/sa1/stage/enemies/boss_x2_egg_drillster.c \
# src/game/sa1/stage/enemies/senbon.c \
# src/game/sa1/stage/enemies/rhinotank.c \
# src/game/sa1/stage/enemies/mirror.c \
# src/game/sa1/stage/enemies/kuraa.c \
# src/game/sa1/stage/enemies/boss_5_mecha_knuckles.c \
# src/game/sa1/stage/enemies/boss_6_egg_snake.c \
# src/game/sa1/stage/enemies/yukimaru.c \
# src/game/sa1/stage/enemies/hanabii.c \
# src/game/sa1/stage/player_amy.c \
# src/game/sa1/stage/player_knuckles.c \
# src/game/sa1/stage/player_sonic.c \
# src/game/sa1/stage/mp_chao.c \
# src/game/sa1/menus/title_screen.c \
# src/game/sa1/stage/player_super_sonic.c \
# src/game/sa1/stage/player_tails.c \
+10 -9
View File
@@ -108,7 +108,7 @@ u32 Coll_Player_Entity_Intersection(Sprite *s, CamCoord x, CamCoord y, Player *p
#define ENEMY_SET_SPAWN_POS_GROUND(_enemy, _mapEntity) \
ENEMY_SET_SPAWN_POS_STATIC(_enemy, _mapEntity); \
_enemy->offsetX = 0; \
_enemy->offsetY = Q(sub_801F07C(I(_enemy->spawnY), I(_enemy->spawnX), _enemy->clampParam, 8, NULL, sub_801EE64));
_enemy->offsetY = Q(SA2_LABEL(sub_801F07C)(I(_enemy->spawnY), I(_enemy->spawnX), _enemy->clampParam, 8, NULL, SA2_LABEL(sub_801EE64)));
#if (GAME == GAME_SA1)
#define ENEMY_UPDATE_EX_RAW(_s, _posX, _posY, code_insert) \
@@ -167,19 +167,20 @@ u32 Coll_Player_Entity_Intersection(Sprite *s, CamCoord x, CamCoord y, Player *p
#define ENEMY_CROSSED_BOTTOM_BORDER(_enemy, _mapEntity) ENEMY_CROSSED_BOTTOM_BORDER_RAW(_enemy, _mapEntity, I(_enemy->offsetY))
#define ENEMY_CLAMP_TO_GROUND_INNER(_enemy, _unknownBool, _task) \
sub_801F100(I(_enemy->spawnY + _enemy->offsetY), I(_enemy->spawnX + _enemy->offsetX), _unknownBool, 8, _task);
SA2_LABEL(sub_801F100)(I(_enemy->spawnY + _enemy->offsetY), I(_enemy->spawnX + _enemy->offsetX), _unknownBool, 8, _task);
#define ENEMY_CLAMP_TO_GROUND_INNER_X_FIRST(_enemy, _unknownBool) \
sub_801F100(I(_enemy->spawnX + _enemy->offsetX), I(_enemy->spawnY + _enemy->offsetY), _unknownBool, 8, sub_801EC3C);
SA2_LABEL(sub_801F100) \
(I(_enemy->spawnX + _enemy->offsetX), I(_enemy->spawnY + _enemy->offsetY), _unknownBool, 8, SA2_LABEL(sub_801EC3C));
#define ENEMY_CLAMP_TO_GROUND_RAW(_enemy, _unknownBool, _p) \
{ \
s32 delta \
= sub_801F07C(I(_enemy->spawnY + _enemy->offsetY), I(_enemy->spawnX + _enemy->offsetX), _unknownBool, 8, _p, sub_801EE64); \
s32 delta = SA2_LABEL(sub_801F07C)(I(_enemy->spawnY + _enemy->offsetY), I(_enemy->spawnX + _enemy->offsetX), _unknownBool, 8, _p, \
sub_801EE64); \
\
if (delta < 0) { \
_enemy->offsetY += Q(delta); \
delta = ENEMY_CLAMP_TO_GROUND_INNER(_enemy, _unknownBool, sub_801EC3C); \
delta = ENEMY_CLAMP_TO_GROUND_INNER(_enemy, _unknownBool, SA2_LABEL(sub_801EC3C)); \
} \
\
if (delta > 0) { \
@@ -191,12 +192,12 @@ u32 Coll_Player_Entity_Intersection(Sprite *s, CamCoord x, CamCoord y, Player *p
#define ENEMY_CLAMP_TO_GROUND_2(_enemy, _unknownBool) \
{ \
s32 delta \
= sub_801F07C(I(_enemy->spawnY + _enemy->offsetY), I(_enemy->spawnX + _enemy->offsetX), _unknownBool, -8, NULL, sub_801EE64); \
s32 delta = SA2_LABEL(sub_801F07C)(I(_enemy->spawnY + _enemy->offsetY), I(_enemy->spawnX + _enemy->offsetX), _unknownBool, -8, \
NULL, SA2_LABEL(sub_801EE64)); \
\
if (delta < 0) { \
_enemy->offsetY -= Q(delta); \
delta = ENEMY_CLAMP_TO_GROUND_INNER(_enemy, _unknownBool, sub_801EC3C); \
delta = ENEMY_CLAMP_TO_GROUND_INNER(_enemy, _unknownBool, SA2_LABEL(sub_801EC3C)); \
} \
\
if (delta > 0) { \
+4 -4
View File
@@ -33,7 +33,7 @@ SECTIONS {
sa2/src/game/shared/stage/palette_loader.o(.text);
/* Menus */
src/game/sa1/menus/title_screen.o(.text);
sa2/src/game/sa1/menus/title_screen.o(.text);
src/game/shared/menus/unused_level_select.o(.text);
sa2/src/game/sa1/menus/mp_mode_select.o(.text);
sa2/src/game/sa1/menus/mp_mode_select_2.o(.text);
@@ -73,7 +73,7 @@ SECTIONS {
src/game/sa1/stage/enemies/kiki.o(.text);
src/game/sa1/stage/enemies/buzzer.o(.text);
sa2/src/game/shared/stage/collect_ring_effect.o(.text);
src/game/sa1/stage/itembox.o(.text);
sa2/src/game/sa1/stage/itembox.o(.text);
src/game/sa1/stage/interactables/stage_goal.o(.text);
sa2/src/game/shared/stage/dust_cloud.o(.text);
src/game/sa1/stage/interactables/spikes.o(.text);
@@ -320,8 +320,8 @@ SECTIONS {
data/sa1/chao_garden.o(.rodata);
src/data/sa1/entity_tables.o(.rodata);
src/game/shared/stage/entities_manager.o(.rodata);
src/game/sa1/stage/itembox.o(.rodata);
src/game/sa1/menus/title_screen.o(.rodata);
sa2/src/game/sa1/stage/itembox.o(.rodata);
sa2/src/game/sa1/menus/title_screen.o(.rodata);
src/game/shared/menus/unused_level_select.o(.rodata);
sa2/src/game/sa1/menus/mp_mode_select.o(.rodata);
sa2/src/game/sa1/menus/time_attack.o(.rodata);
+1 -1
View File
@@ -1480,7 +1480,7 @@ bool32 Coll_DamagePlayer(Player *p)
p->layer ^= PLAYER_LAYER__MASK;
if (sa2__sub_8022F58(p->rotation + Q(0.5), p) < 4) {
if (SA2_LABEL(sub_8022F58)(p->rotation + Q(0.5), p) < 4) {
p->layer ^= PLAYER_LAYER__MASK;
} else {
p->moveState &= ~MOVESTATE_1000000;
@@ -20,6 +20,8 @@
#include "game/sa1/menus/title_screen.h"
#include "game/shared/stage/water_effects.h"
#include "data/sa1/recordings.h"
// LoadTinyChaoGarden
#include "../chao_garden/include/program_params.h"
#include "game/sa1/assets/compressed/roms.h"
File renamed without changes.
+2 -1
View File
@@ -383,7 +383,8 @@ static void sub_808E114(void)
scene->unk70 = player->qWorldX - (gCamera.x * 256) - 0x4000;
}
result = sub_801F100((scene->unk72 >> 8) + gCamera.y, (scene->unk70 >> 8) + gCamera.x + scene->unk7C, 1, 8, sub_801EC3C);
result = SA2_LABEL(sub_801F100)((scene->unk72 >> 8) + gCamera.y, (scene->unk70 >> 8) + gCamera.x + scene->unk7C, 1, 8,
SA2_LABEL(sub_801EC3C));
if (result < 0) {
scene->unk72 += result * 0x100;
+10 -10
View File
@@ -628,7 +628,7 @@ static void PhysicsHandler_OnTerrain(void)
x = (boss->x + Q(24));
y = (origY + boss->rearAxelY + Q(14.5));
result = sub_801F100(I(y), I(x), 1, 8, sub_801EC3C);
result = SA2_LABEL(sub_801F100)(I(y), I(x), 1, 8, SA2_LABEL(sub_801EC3C));
if (result < 1) {
boss->y += result * 64;
idx = -result;
@@ -652,7 +652,7 @@ static void PhysicsHandler_OnTerrain(void)
x = (boss->x - Q(22));
y = (origY + boss->frontAxelY + Q(14.5));
result = sub_801F100(I(y), I(x), 1, 8, sub_801EC3C);
result = SA2_LABEL(sub_801F100)(I(y), I(x), 1, 8, SA2_LABEL(sub_801EC3C));
if (result < 1) {
boss->y += (result * Q(0.25));
@@ -761,7 +761,7 @@ static void StateHandler_HammerPlunge(EggHammerTankII *boss)
x = I(boss->x) + ((boss->hammerArmSegmentPositions[7] * COS((boss->hammerArmSegmentAngles[7] - val) & (SIN_PERIOD - 1))) >> 0x17);
y = I(boss->y) + ((boss->hammerArmSegmentPositions[7] * SIN((boss->hammerArmSegmentAngles[7] - val) & (SIN_PERIOD - 1))) >> 0x17);
result = sub_801E6D4(y, x, 1, 8, NULL, sub_801EE64);
result = sub_801E6D4(y, x, 1, 8, NULL, SA2_LABEL(sub_801EE64));
if (result < 1) {
m4aSongNumStart(SE_238);
@@ -956,7 +956,7 @@ static void DestructionScene_UpdateComponents(EggHammerTankII *boss)
ds->bodyX += ds->bodySpeedX;
ds->bodyY += ds->bodySpeedY;
result = sub_801F100(I(ds->bodyY) + 28, I(ds->bodyX), 1, 8, sub_801EC3C);
result = SA2_LABEL(sub_801F100)(I(ds->bodyY) + 28, I(ds->bodyX), 1, 8, SA2_LABEL(sub_801EC3C));
if (ds->axelsJoinedRemainingBounces > 0) {
ds->wheels[0].x = ds->bodyX - Q(22);
ds->wheels[0].y = ds->bodyY + boss->frontAxelY + Q(14.5);
@@ -978,7 +978,7 @@ static void DestructionScene_UpdateComponents(EggHammerTankII *boss)
ds->wheels[i].x += ds->wheels[i].speedX;
ds->wheels[i].y += ds->wheels[i].speedY;
result1 = sub_801F100(I(ds->wheels[i].y), I(ds->wheels[i].x), 1, 8, sub_801EC3C);
result1 = SA2_LABEL(sub_801F100)(I(ds->wheels[i].y), I(ds->wheels[i].x), 1, 8, SA2_LABEL(sub_801EC3C));
if (result1 < 0) {
s32 r0;
if (ds->wheels[i].remainingBounces != 0) {
@@ -1025,7 +1025,7 @@ static void DestructionScene_UpdateComponents(EggHammerTankII *boss)
ds->armSegments[i].y += ds->armSegments[i].speedY;
result = sub_801F100(I(ds->armSegments[i].y) + 5, I(ds->armSegments[i].x), 1, 8, sub_801EC3C);
result = SA2_LABEL(sub_801F100)(I(ds->armSegments[i].y) + 5, I(ds->armSegments[i].x), 1, 8, SA2_LABEL(sub_801EC3C));
if (result < 0) {
if (ds->armSegments[i].remainingBounces != 0) {
@@ -1049,7 +1049,7 @@ static void DestructionScene_UpdateComponents(EggHammerTankII *boss)
ds->hammerArmSegments[i].y += ds->hammerArmSegments[i].speedY;
result = sub_801F100(I(ds->hammerArmSegments[i].y) + 5, I(ds->hammerArmSegments[i].x), 1, 8, sub_801EC3C);
result = SA2_LABEL(sub_801F100)(I(ds->hammerArmSegments[i].y) + 5, I(ds->hammerArmSegments[i].x), 1, 8, SA2_LABEL(sub_801EC3C));
if (result < 0) {
if (ds->hammerArmSegments[i].remainingBounces != 0) {
@@ -1071,7 +1071,7 @@ static void DestructionScene_UpdateComponents(EggHammerTankII *boss)
ds->hammerX += ds->hammerSpeedX;
ds->hammerY += ds->hammerSpeedY;
result = sub_801F100(I(ds->hammerY) + 24, I(ds->hammerX), 1, 8, sub_801EC3C);
result = SA2_LABEL(sub_801F100)(I(ds->hammerY) + 24, I(ds->hammerX), 1, 8, SA2_LABEL(sub_801EC3C));
if (result < 0) {
ExplosionPartsInfo parts;
@@ -1532,11 +1532,11 @@ static bool8 IsBossTouchingTerrain(void)
x = (boss->x + Q(24));
y = (boss->y + boss->rearAxelY + Q(14.5));
result = sub_801F100(I(y), I(x), 1, 8, sub_801EC3C);
result = SA2_LABEL(sub_801F100)(I(y), I(x), 1, 8, SA2_LABEL(sub_801EC3C));
if (result > 0) {
x = (boss->x - Q(22));
y = (boss->y + boss->frontAxelY + Q(14.5));
result = sub_801F100(I(y), I(x), 1, 8, sub_801EC3C);
result = SA2_LABEL(sub_801F100)(I(y), I(x), 1, 8, SA2_LABEL(sub_801EC3C));
if (result > 0) {
return FALSE;
+6 -5
View File
@@ -502,7 +502,7 @@ static void UpdatePosition(EggBomberTank *boss)
boss->qWorldX += boss->qSpeedX;
boss->qWorldY += boss->qSpeedY;
ground = sub_801E4E4(I(boss->qWorldY), I(boss->qWorldX), 1, 8, NULL, sub_801EE64);
ground = SA2_LABEL(sub_801E4E4)(I(boss->qWorldY), I(boss->qWorldX), 1, 8, NULL, SA2_LABEL(sub_801EE64));
if (ground < 0) {
boss->qWorldY += QS(ground);
@@ -520,7 +520,8 @@ static void UpdatePosition(EggBomberTank *boss)
boss->qWheelPositions[idx][0] += boss->unk3C[idx][0];
boss->qWheelPositions[idx][1] += boss->unk3C[idx][1];
ground = sub_801E4E4(I(boss->qWheelPositions[idx][1]) - 8, I(boss->qWheelPositions[idx][0]), 1, 8, 0, sub_801EE64);
ground = SA2_LABEL(sub_801E4E4)(I(boss->qWheelPositions[idx][1]) - 8, I(boss->qWheelPositions[idx][0]), 1, 8, 0,
SA2_LABEL(sub_801EE64));
if (ground < 0) {
boss->qWheelPositions[idx][1] += QS(ground);
boss->unk3C[idx][0] -= 0x20;
@@ -652,7 +653,7 @@ static bool8 RenderCannon(EggBomberTank *boss)
boss->unk54 += boss->unk5C;
boss->unk58 += boss->unk5E;
ground = sub_801F100(I(boss->unk58) + 0x18, I(boss->unk54), 1, 8, sub_801EC3C);
ground = SA2_LABEL(sub_801F100)(I(boss->unk58) + 0x18, I(boss->unk54), 1, 8, SA2_LABEL(sub_801EC3C));
if (ground < 0) {
m4aSongNumStart(SE_143);
@@ -1045,7 +1046,7 @@ static void UpdateWheelPositions(EggBomberTank *boss)
s32 y = I(boss->qWheelPositions[i][1]) + 0x12;
val += y;
boss->qWheelPositions[i][1] += QS(sub_801F100(y, x, 1, 8, sub_801EC3C));
boss->qWheelPositions[i][1] += QS(SA2_LABEL(sub_801F100)(y, x, 1, 8, SA2_LABEL(sub_801EC3C)));
}
boss->qWorldY = QS(Div(val, 3)) - 0x1200;
@@ -1141,7 +1142,7 @@ static void Task_EggBomberTankBombExplosion(void)
bomb->y += bomb->speedY + QS(gCamera.dy);
}
ground = sub_801E4E4(I(bomb->y) + 0xC + gCamera.y, I(bomb->x) + gCamera.x, 1, 8, &unusedByte, sub_801EE64);
ground = SA2_LABEL(sub_801E4E4)(I(bomb->y) + 0xC + gCamera.y, I(bomb->x) + gCamera.x, 1, 8, &unusedByte, SA2_LABEL(sub_801EE64));
if (ground < 0) {
bomb->y += QS(ground);
bomb->speedY = Div(-(bomb->speedY * 8), 10);
+7 -6
View File
@@ -768,7 +768,7 @@ void sub_803FB88(EggTotem *totem)
res = totem->qWheelPos[i].y;
discY += res;
totem->qWheelPos[i].y += Q(sub_801F100(I(res) - 1, I(totem->qWheelPos[i].x), 1, +8, sub_801EC3C) + 1);
totem->qWheelPos[i].y += Q(SA2_LABEL(sub_801F100)(I(res) - 1, I(totem->qWheelPos[i].x), 1, +8, SA2_LABEL(sub_801EC3C)) + 1);
}
res = Div(discY, 3) - Q(2.0);
@@ -862,7 +862,7 @@ void sub_803FC14(EggTotem *totem)
t3c->qWorldX += t3c->qUnk8;
t3c->qWorldY += t3c->qUnkA;
divRes = sub_801F100(I(t3c->qWorldY) + 3, I(t3c->qWorldX), 1, +8, sub_801EC3C);
divRes = SA2_LABEL(sub_801F100)(I(t3c->qWorldY) + 3, I(t3c->qWorldX), 1, +8, SA2_LABEL(sub_801EC3C));
if (divRes < 0) {
s32 v;
t3c->qWorldY += Q(divRes);
@@ -891,7 +891,8 @@ void sub_803FF44(EggTotem *totem)
totem->qWheelPos[i].x += totem->unk24[i][0];
totem->qWheelPos[i].y += totem->unk24[i][1];
res = sub_801F100(I(totem->qWheelPos[i].y) + gUnknown_080D7F10[i] - 1, I(totem->qWheelPos[i].x), 1, +8, sub_801EC3C);
res = SA2_LABEL(sub_801F100)(I(totem->qWheelPos[i].y) + gUnknown_080D7F10[i] - 1, I(totem->qWheelPos[i].x), 1, +8,
SA2_LABEL(sub_801EC3C));
if (res < 0) {
// __minRes
@@ -916,7 +917,7 @@ void sub_803FF44(EggTotem *totem)
totem->qUnk9C += totem->qUnkA4;
totem->qUnkA0 += totem->qUnkA6;
res = sub_801F100(I(totem->qUnkA0) - 8, I(totem->qUnk9C), 1, +8, sub_801EC3C);
res = SA2_LABEL(sub_801F100)(I(totem->qUnkA0) - 8, I(totem->qUnk9C), 1, +8, SA2_LABEL(sub_801EC3C));
if (res < 0) {
totem->qUnkA0 += Q(res);
@@ -966,7 +967,7 @@ void sub_803FF44(EggTotem *totem)
totem->qUnk90 += totem->qUnk98;
totem->qUnk94 += totem->qUnk9A;
res = sub_801F100(I(totem->qUnk94) - 50, I(totem->qUnk90), 1, +8, sub_801EC3C);
res = SA2_LABEL(sub_801F100)(I(totem->qUnk94) - 50, I(totem->qUnk90), 1, +8, SA2_LABEL(sub_801EC3C));
if (res < 0) {
// _08040256
@@ -1073,7 +1074,7 @@ void sub_803FF44(EggTotem *totem)
t3c->qWorldX += t3c->qUnk8;
t3c->qWorldY += t3c->qUnkA;
res = sub_801F100(I(t3c->qWorldY) + 4, I(t3c->qWorldX), 1, +8, sub_801EC3C);
res = SA2_LABEL(sub_801F100)(I(t3c->qWorldY) + 4, I(t3c->qWorldX), 1, +8, SA2_LABEL(sub_801EC3C));
if (res < 0) {
s32 v;
t3c->qWorldY += Q(res);
+3 -3
View File
@@ -159,7 +159,7 @@ static void CreateAeroEggBombDebris(AeroEgg *boss, s32 screenX, s32 screenY, s16
_part.x += _part.dx; \
_part.y += _part.dy; \
\
res = sub_801E4E4(I(_part.y) + _halfHeight, I(_part.x), 1, 8, NULL, &sub_801EE64); \
res = SA2_LABEL(sub_801E4E4)(I(_part.y) + _halfHeight, I(_part.x), 1, 8, NULL, &sub_801EE64); \
\
if ((res <= 0) && (_part.dy >= 0)) { \
_part.y += Q(res); \
@@ -923,7 +923,7 @@ static void Task_CreateAeroEggBombMain(void)
s->y = I(eb->screenY);
}
if (sub_801E4E4(I(eb->screenY) + gCamera.y, I(eb->screenX) + gCamera.x, 1, 8, NULL, sub_801EE64) < 0) {
if (SA2_LABEL(sub_801E4E4)(I(eb->screenY) + gCamera.y, I(eb->screenX) + gCamera.x, 1, 8, NULL, SA2_LABEL(sub_801EE64)) < 0) {
m4aSongNumStart(SE_PROJECTILE_IMPACT);
eb->dx = 0;
@@ -1040,7 +1040,7 @@ static void Task_AeroEggBombDebris(void)
s->x = I(deb->screenX);
s->y = I(deb->screenY);
if (sub_801E4E4(I(deb->screenY) + gCamera.y, I(deb->screenX) + gCamera.x, 1, 8, NULL, sub_801EE64) < 0) {
if (SA2_LABEL(sub_801E4E4)(I(deb->screenY) + gCamera.y, I(deb->screenX) + gCamera.x, 1, 8, NULL, SA2_LABEL(sub_801EE64)) < 0) {
if (deb->dy > 0) {
TaskDestroy(gCurTask);
return;
+7 -7
View File
@@ -745,7 +745,7 @@ void sub_8043E2C(EggSaucer *boss)
bottomX = I(x);
bottomY = I(y) + 10;
ground = sub_801E4E4(bottomY, bottomX, 1, 8, NULL, sub_801EE64);
ground = SA2_LABEL(sub_801E4E4)(bottomY, bottomX, 1, 8, NULL, SA2_LABEL(sub_801EE64));
if (ground < 0) {
boss->unk2C += Q(ground);
boss->unk22 = Div(-(boss->unk22 * 80), 100);
@@ -964,7 +964,7 @@ static void SaucerUpdatePosAndRotate(EggSaucer *boss)
bottomX = I(x);
bottomY = I(y) + (BOSS_HEIGHT / 2);
boss->y += Q(sub_801E4E4(bottomY, bottomX, 1, 8, 0, sub_801EE64));
boss->y += Q(SA2_LABEL(sub_801E4E4)(bottomY, bottomX, 1, 8, 0, SA2_LABEL(sub_801EE64)));
boss->cabinDiskAngle = ({ (boss->cabinDiskAngle + DEG_TO_SIN(BOSS_ROTATE_SPEED_DEG)) & (SIN_PERIOD - 1); });
boss->gunDiskAngle = ({ (boss->gunDiskAngle + DEG_TO_SIN(BOSS_ROTATE_SPEED_DEG)) & (SIN_PERIOD - 1); });
@@ -986,7 +986,7 @@ void sub_8044540(EggSaucer *boss)
bottomX = I(boss->x);
bottomY = I(boss->y) + (BOSS_HEIGHT / 2);
boss->y += Q(sub_801E4E4(bottomY, bottomX, 1, 8, 0, sub_801EE64));
boss->y += Q(SA2_LABEL(sub_801E4E4)(bottomY, bottomX, 1, 8, 0, SA2_LABEL(sub_801EE64)));
boss->unkD6 += 0x30;
boss->cabinX += boss->unkD4;
@@ -994,7 +994,7 @@ void sub_8044540(EggSaucer *boss)
bottomX = I(boss->cabinX);
bottomY = I(boss->cabinY);
res = sub_801E4E4(bottomY, bottomX, 1, 8, 0, sub_801EE64);
res = SA2_LABEL(sub_801E4E4)(bottomY, bottomX, 1, 8, 0, SA2_LABEL(sub_801EE64));
if (res < 0) {
boss->cabinY += QS(res);
boss->unkD6 = Div(-0x46 * boss->unkD6, 100);
@@ -1007,7 +1007,7 @@ void sub_8044540(EggSaucer *boss)
bottomX = I(boss->armBaseX);
bottomY = I(boss->armBaseY);
res = sub_801E4E4(bottomY, bottomX, 1, 8, 0, sub_801EE64);
res = SA2_LABEL(sub_801E4E4)(bottomY, bottomX, 1, 8, 0, SA2_LABEL(sub_801EE64));
if (res < 0) {
boss->armBaseY += QS(res);
boss->unkDA = Div(-0x41 * boss->unkDA, 100);
@@ -1021,7 +1021,7 @@ void sub_8044540(EggSaucer *boss)
bottomX = I(boss->unkDC[i][0]);
bottomY = I(boss->unkDC[i][1]);
res = sub_801E4E4(bottomY, bottomX, 1, 8, 0, sub_801EE64);
res = SA2_LABEL(sub_801E4E4)(bottomY, bottomX, 1, 8, 0, SA2_LABEL(sub_801EE64));
if (res < 0) {
boss->unkDC[i][1] += QS(res);
boss->unk10C[i][1] = Div(boss->unk10C[i][1] * (i - 0x41), 100);
@@ -1035,7 +1035,7 @@ void sub_8044540(EggSaucer *boss)
bottomX = I(boss->handX);
bottomY = I(boss->handY);
res = sub_801E4E4(bottomY, bottomX, 1, 8, 0, sub_801EE64);
res = SA2_LABEL(sub_801E4E4)(bottomY, bottomX, 1, 8, 0, SA2_LABEL(sub_801EE64));
if (res < 0) {
boss->handY += QS(res);
boss->unk12E = Div(-60 * boss->unk12E, 100);
+3 -3
View File
@@ -1248,7 +1248,7 @@ static void UpdateIntroPos(EggGoRound *boss)
{
boss->x += boss->speedX + (boss->timer * 8);
boss->y += boss->speedY;
boss->y += Q(sub_801E4E4(I(boss->y), I(boss->x), 0, 8, 0, sub_801EE64));
boss->y += Q(SA2_LABEL(sub_801E4E4)(I(boss->y), I(boss->x), 0, 8, 0, SA2_LABEL(sub_801EE64)));
boss->rotation = (boss->rotation + boss->rotationSpeed) % (unsigned)Q(1024);
}
@@ -1257,7 +1257,7 @@ static void UpdatePos(EggGoRound *boss)
boss->x += boss->speedX;
boss->y += boss->speedY;
boss->y += Q(sub_801F07C(I(boss->y), I(boss->x), 0, 8, 0, sub_801EE64));
boss->y += Q(SA2_LABEL(sub_801F07C)(I(boss->y), I(boss->x), 0, 8, 0, SA2_LABEL(sub_801EE64)));
boss->rotation = (boss->rotation + boss->rotationSpeed) % (unsigned)Q(1024);
if (boss->health < 5 && boss->rotationSpeed != -256) {
@@ -1286,7 +1286,7 @@ static inline void UpdatePropPos(DestructionProp *prop)
prop->x += prop->speedX;
prop->y += prop->speedY;
result = sub_801F100(I(prop->y) + 20, I(prop->x), 1, 8, sub_801EC3C);
result = SA2_LABEL(sub_801F100)(I(prop->y) + 20, I(prop->x), 1, 8, SA2_LABEL(sub_801EC3C));
if (result < 0) {
u32 temp;
prop->speedX -= Q(0.25);
+6 -6
View File
@@ -617,7 +617,7 @@ static void sub_8048654(EggFrog *boss)
boss->x += boss->qSpeedX;
boss->y += boss->qSpeedY;
result = sub_801E4E4(I(boss->y) + 0x1E, I(boss->x), 1, 8, 0, sub_801EE64);
result = SA2_LABEL(sub_801E4E4)(I(boss->y) + 0x1E, I(boss->x), 1, 8, 0, SA2_LABEL(sub_801EE64));
if (result < 0) {
boss->y += Q(result);
boss->qSpeedY = Div(-(boss->qSpeedY * 9), 10);
@@ -633,7 +633,7 @@ static void sub_8048654(EggFrog *boss)
y += ((SIN(boss->unk1C[i][0]) * 0x17) >> 0xE);
y += SIN(boss->unk1C[i][1]) >> temp2;
result = sub_801E4E4(y + 6, x, 1, 8, 0, sub_801EE64);
result = SA2_LABEL(sub_801E4E4)(y + 6, x, 1, 8, 0, SA2_LABEL(sub_801EE64));
if (result >= 1) {
if (boss->unk1C[i][1] >= 0x100 && boss->unk1C[i][1] <= 0x300) {
boss->unk1C[i][1] -= 2;
@@ -651,7 +651,7 @@ static void sub_8048654(EggFrog *boss)
boss->unk1C[i][1] = boss->unk1C[i][1] & (SIN_PERIOD - 1);
y += gUnknown_080D8148[0];
y += ((SIN(boss->unk1C[i][2]) * 0x32) >> 0xE);
result = sub_801E4E4(y, x, 1, 8, 0, sub_801EE64);
result = SA2_LABEL(sub_801E4E4)(y, x, 1, 8, 0, SA2_LABEL(sub_801EE64));
if (result >= 1) {
if (boss->unk1C[i][2] >= 0x100 && boss->unk1C[i][2] <= 0x300) {
@@ -692,7 +692,7 @@ static void sub_8048858(EggFrog *boss)
y += (SIN(boss->unk1C[i][0]) * 0x17) >> 0xE;
y += (SIN(boss->unk1C[i][1]) >> temp);
y += (SIN(boss->unk1C[i][2]) * 0x32) >> 0xE;
result = sub_801E4E4(y, x, 1, someVal, 0, sub_801EE64);
result = SA2_LABEL(sub_801E4E4)(y, x, 1, someVal, 0, SA2_LABEL(sub_801EE64));
if (result < 0) {
boss->y += boss->unk18 != 0 ? -Q(result) : Q(result);
@@ -1130,7 +1130,7 @@ static void sub_804920C(EggFrog *boss)
y += SIN(boss->unk1C[1][1]) >> temp;
y += (SIN(boss->unk1C[1][2]) * 0x32) >> 0xE;
result = sub_801E4E4(y, x, 1, 8, 0, sub_801EE64);
result = SA2_LABEL(sub_801E4E4)(y, x, 1, 8, 0, SA2_LABEL(sub_801EE64));
if (result < 0) {
boss->y += Q(result);
@@ -1242,7 +1242,7 @@ static void sub_80494EC(void)
x = I(bomb->x) + gCamera.x;
y = I(bomb->y) + gCamera.y;
result = sub_801E4E4(y, x, 1, temp, 0, sub_801EE64);
result = SA2_LABEL(sub_801E4E4)(y, x, 1, temp, 0, SA2_LABEL(sub_801EE64));
// hit floor
if (result < 0) {
+2 -3
View File
@@ -1,7 +1,6 @@
#include "global.h"
#include "malloc_vram.h"
#include "game/shared/stage/entity.h"
#include "game/shared/stage/collision.h"
#include "game/shared/stage/entities_manager.h"
#include "game/shared/stage/player.h"
#include "game/shared/stage/camera.h"
@@ -99,7 +98,7 @@ static void Task_FlickeyMain(void)
pos.x = I(flickey->spawnX + flickey->offsetX);
pos.y = I(flickey->spawnY + flickey->offsetY);
someVal = sub_801F07C(pos.y, pos.x, 1, 8, 0, sub_801EE64);
someVal = SA2_LABEL(sub_801F07C)(pos.y, pos.x, 1, 8, 0, SA2_LABEL(sub_801EE64));
s->x = pos.x - gCamera.x;
s->y = pos.y - gCamera.y;
@@ -277,7 +276,7 @@ static void sub_80591FC(void)
flickey->positions[i + 3].y += 0x30;
flickey->positions[i].x += flickey->positions[i + 3].x;
flickey->positions[i].y += flickey->positions[i + 3].y;
someVal = sub_801F07C(I(flickey->positions[i].y), I(flickey->positions[i].x), 1, 8, 0, sub_801EE64);
someVal = SA2_LABEL(sub_801F07C)(I(flickey->positions[i].y), I(flickey->positions[i].x), 1, 8, 0, SA2_LABEL(sub_801EE64));
if (someVal < 0) {
flickey->positions[i].y += QS(someVal);
-2
View File
@@ -1,7 +1,5 @@
#include "global.h"
#include "game/shared/stage/collision.h"
#include "game/shared/stage/entity.h"
#include "game/sa2/stage/enemies/geji_geji.h"
#include "game/shared/stage/player.h"
+3 -5
View File
@@ -2,8 +2,6 @@
#include "game/shared/stage/entity.h"
#include "game/sa2/stage/enemies/gohla.h"
#include "game/shared/stage/collision.h"
#include "malloc_vram.h"
#include "sprite.h"
#include "trig.h"
@@ -57,7 +55,7 @@ void CreateEntity_Gohla(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8
gohla->spawnX = Q(TO_WORLD_POS(me->x, spriteRegionX));
gohla->spawnY = Q(TO_WORLD_POS(me->y, spriteRegionY));
gohla->offsetX = 0;
gohla->offsetY = Q(sub_801F07C(I(gohla->spawnY), I(gohla->spawnX), gohla->unk8C, 8, NULL, sub_801EE64));
gohla->offsetY = Q(SA2_LABEL(sub_801F07C)(I(gohla->spawnY), I(gohla->spawnX), gohla->unk8C, 8, NULL, SA2_LABEL(sub_801EE64)));
gohla->projX = 0;
gohla->projY = 0;
gohla->projZ = 0;
@@ -119,11 +117,11 @@ static void sub_8051AF0(void)
MapEntity *me = gohla->base.me;
Vec2_32 pos;
s32 delta = ENEMY_CLAMP_TO_GROUND_INNER(gohla, gohla->unk8C, sub_801EC3C);
s32 delta = ENEMY_CLAMP_TO_GROUND_INNER(gohla, gohla->unk8C, SA2_LABEL(sub_801EC3C));
if (delta < 0) {
gohla->offsetY += Q(delta);
delta = ENEMY_CLAMP_TO_GROUND_INNER(gohla, gohla->unk8C, sub_801EC3C);
delta = ENEMY_CLAMP_TO_GROUND_INNER(gohla, gohla->unk8C, SA2_LABEL(sub_801EC3C));
}
if (delta > 0) {
-1
View File
@@ -6,7 +6,6 @@
#include "game/shared/stage/player.h"
#include "game/shared/stage/camera.h"
#include "game/shared/stage/entity.h"
#include "game/shared/stage/collision.h"
#include "constants/sa2/animations.h"
+1 -2
View File
@@ -2,7 +2,6 @@
#include "game/shared/stage/entity.h"
#include "game/sa2/stage/enemies/kiki.h"
#include "game/shared/stage/entities_manager.h"
#include "game/shared/stage/collision.h"
#include "game/shared/stage/player.h"
#include "game/shared/stage/camera.h"
#include "malloc_vram.h"
@@ -221,7 +220,7 @@ static void Task_KikiProjMain(void)
s->y += Q_8_8_TO_INT(proj->unk32);
if (proj->unk32 && proj->unk32 > -1) {
s32 delta = sub_801F07C(s->y, s->x, 1, 8, 0, sub_801EE64);
s32 delta = SA2_LABEL(sub_801F07C)(s->y, s->x, 1, 8, 0, SA2_LABEL(sub_801EE64));
if (delta < 0) {
s->y += delta;
if (proj->unk30 == 0) {
+1 -1
View File
@@ -68,7 +68,7 @@ void CreateEntity_Koura(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8
ENEMY_SET_SPAWN_POS_STATIC(koura, me);
koura->offsetX = 0;
if (koura->unk54 < 2) {
koura->offsetY = QS(sub_801F07C(I(koura->spawnY), I(koura->spawnX), koura->unk54, 8, NULL, sub_801EE64));
koura->offsetY = QS(SA2_LABEL(sub_801F07C)(I(koura->spawnY), I(koura->spawnX), koura->unk54, 8, NULL, SA2_LABEL(sub_801EE64)));
} else {
koura->offsetY = 0;
}
+2 -2
View File
@@ -63,10 +63,10 @@ static void Task_MadilloMain(void)
// TODO: Merge with ENEMY_CLAMP_TO_GROUND macro
{
s32 delta = ENEMY_CLAMP_TO_GROUND_INNER(madillo, madillo->clampParam, sub_801EC3C);
s32 delta = ENEMY_CLAMP_TO_GROUND_INNER(madillo, madillo->clampParam, SA2_LABEL(sub_801EC3C));
if (delta < 0) {
madillo->offsetY += Q(delta);
delta = ENEMY_CLAMP_TO_GROUND_INNER(madillo, madillo->clampParam, sub_801EC3C);
delta = ENEMY_CLAMP_TO_GROUND_INNER(madillo, madillo->clampParam, SA2_LABEL(sub_801EC3C));
}
if (delta > 0) {
+2 -1
View File
@@ -9,6 +9,7 @@
#include "game/shared/stage/player.h"
#include "game/shared/stage/camera.h"
// #include "game/shared/stage/.h"
#include "constants/sa2/animations.h"
@@ -46,7 +47,7 @@ void CreateEntity_Mon(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 sp
mon->x = Q(TO_WORLD_POS(me->x, spriteRegionX));
mon->y = Q(TO_WORLD_POS(me->y, spriteRegionY));
mon->y += Q(sub_801F07C(I(mon->y), I(mon->x), r2 >> 31, 8, NULL, sub_801EE64));
mon->y += Q(SA2_LABEL(sub_801F07C)(I(mon->y), I(mon->x), r2 >> 31, 8, NULL, SA2_LABEL(sub_801EE64)));
s->x = 0;
s->y = 0;
+2 -2
View File
@@ -58,9 +58,9 @@ void CreateEntity_Mouse(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8
}
if (mouse->unk51) {
mouse->offsetY = Q(sub_801F07C(I(mouse->spawnY), I(mouse->spawnX), mouse->unk50, 8, 0, sub_801EE64));
mouse->offsetY = Q(SA2_LABEL(sub_801F07C)(I(mouse->spawnY), I(mouse->spawnX), mouse->unk50, 8, 0, SA2_LABEL(sub_801EE64)));
} else {
mouse->offsetY = Q(sub_801F07C(I(mouse->spawnY), I(mouse->spawnX), mouse->unk50, 8, 0, sub_801EE64));
mouse->offsetY = Q(SA2_LABEL(sub_801F07C)(I(mouse->spawnY), I(mouse->spawnX), mouse->unk50, 8, 0, SA2_LABEL(sub_801EE64)));
}
mouse->unk4C = 0;
mouse->unk52 = 0;
-3
View File
@@ -1,9 +1,6 @@
#include "global.h"
#include "malloc_vram.h"
#include "game/shared/stage/collision.h"
#include "game/shared/stage/terrain_collision.h"
#include "game/shared/stage/player.h"
#include "game/shared/stage/entity.h"
-1
View File
@@ -4,7 +4,6 @@
#include "malloc_vram.h"
#include "game/shared/stage/entity.h"
#include "game/shared/stage/entities_manager.h"
#include "constants/sa2/animations.h"
-1
View File
@@ -7,7 +7,6 @@
#include "game/shared/stage/entity.h"
#include "game/sa2/stage/enemies/straw.h"
#include "game/shared/stage/collision.h"
#include "game/shared/stage/entities_manager.h"
#include "game/shared/stage/player.h"
-1
View File
@@ -1,6 +1,5 @@
#include "global.h"
#include "malloc_vram.h"
#include "game/shared/stage/collision.h"
#include "game/shared/stage/dust_cloud.h"
#include "game/shared/stage/entities_manager.h"
#include "game/shared/stage/entity.h"
-2
View File
@@ -1,8 +1,6 @@
#include "global.h"
#include "gba/types.h"
#include "game/shared/stage/collision.h"
#include "game/shared/stage/player.h"
#include "game/shared/stage/camera.h"
#include "game/shared/stage/entity.h"
@@ -4,8 +4,6 @@
#include "task.h"
#include "trig.h"
#include "game/shared/stage/collision.h"
#include "game/shared/stage/player.h"
#include "game/shared/stage/camera.h"
#include "game/sa2/stage/interactables/egg_utopia/iron_ball.h"
@@ -5,7 +5,6 @@
#include "trig.h"
#include "lib/m4a/m4a.h"
#include "game/shared/stage/collision.h"
#include "game/shared/stage/entity.h"
#include "game/shared/stage/player.h"
@@ -106,7 +105,7 @@ static void sub_807F9F0(void)
sub_807FB1C(platform);
if (platform->unk4C && platform->unk5A > -1) {
s32 res = sub_801F100(platform->y + I(platform->unk48), platform->x + I(platform->unk44), 1, 8, sub_801EC3C);
s32 res = SA2_LABEL(sub_801F100)(platform->y + I(platform->unk48), platform->x + I(platform->unk44), 1, 8, SA2_LABEL(sub_801EC3C));
if (res < 0) {
platform->unk4C = FALSE;
gPlayer.transition = PLTRANS_INIT_JUMP;
@@ -7,6 +7,7 @@
#include "game/shared/stage/entity.h"
#include "game/shared/stage/player.h"
#include "game/shared/stage/camera.h"
#include "game/sa2/stage/interactables/hot_crater/floating_spring.h"
#include "constants/sa2/animations.h"
@@ -4,7 +4,6 @@
#include "task.h"
#include "lib/m4a/m4a.h"
#include "game/shared/stage/collision.h"
#include "game/shared/stage/entities_manager.h"
#include "game/shared/stage/entity.h"
@@ -3,7 +3,7 @@
#include "game/shared/stage/entity.h"
#include "game/shared/stage/player.h"
#include "game/shared/stage/camera.h"
#include "game/shared/stage/collision.h"
#include "game/shared/stage/entities_manager.h"
#include "lib/m4a/m4a.h"
@@ -9,7 +9,7 @@
#include "game/shared/stage/camera.h"
#include "game/sa2/stage/player_controls.h"
#include "game/sa2/stage/interactables/leaf_forest/rotating_handle.h"
#include "game/shared/stage/collision.h"
#include "game/shared/stage/entities_manager.h"
#include "malloc_vram.h"
@@ -5,7 +5,6 @@
#include "lib/m4a/m4a.h"
#include "malloc_vram.h"
#include "game/shared/stage/collision.h"
#include "game/globals.h"
#include "game/shared/stage/entity.h"
@@ -7,7 +7,7 @@
#include "game/shared/stage/player.h"
#include "game/shared/stage/camera.h"
#include "game/shared/stage/entity.h"
#include "game/shared/stage/collision.h"
#include "sprite.h"
#include "task.h"
@@ -4,7 +4,6 @@
#include "malloc_vram.h"
#include "game/shared/stage/collision.h"
#include "game/shared/stage/entity.h"
#include "game/shared/stage/camera.h"
#include "game/shared/stage/mp_sprite_task.h"
@@ -128,7 +128,7 @@ static void sub_80769E0(void)
gPlayer.qSpeedAirY += Q(1. / 6.);
// NOTE/BUG(?): Are the first 2 parameters swapped?
res = sub_801F100(I(gPlayer.qWorldY) - gPlayer.spriteOffsetY, I(gPlayer.qWorldX), gPlayer.layer, -8, sub_801EC3C);
res = SA2_LABEL(sub_801F100)(I(gPlayer.qWorldY) - gPlayer.spriteOffsetY, I(gPlayer.qWorldX), gPlayer.layer, -8, SA2_LABEL(sub_801EC3C));
if (res < 0) {
gPlayer.qWorldY -= Q(res);
@@ -162,7 +162,7 @@ static void Task_8076A6C(void)
gPlayer.qWorldY += flute->unkA;
// NOTE/BUG(?): Are the first 2 parameters swapped?
res = sub_801F100(I(gPlayer.qWorldY) - gPlayer.spriteOffsetY, I(r1), gPlayer.layer, -8, sub_801EC3C);
res = SA2_LABEL(sub_801F100)(I(gPlayer.qWorldY) - gPlayer.spriteOffsetY, I(r1), gPlayer.layer, -8, SA2_LABEL(sub_801EC3C));
if (res < 0) {
gPlayer.qWorldY -= Q(res);
}
@@ -5,7 +5,6 @@
#include "trig.h"
#include "malloc_vram.h"
#include "game/shared/stage/collision.h"
#include "game/sa2/stage/interactables/platform.h"
#include "game/shared/stage/player.h"
#include "game/shared/stage/camera.h"
@@ -6,7 +6,6 @@
#include "trig.h"
#include "malloc_vram.h"
#include "game/shared/stage/collision.h"
#include "game/sa2/stage/interactables/platform_square.h"
#include "game/shared/stage/entity.h"
#include "game/shared/stage/player.h"
@@ -173,8 +172,8 @@ static void Task_Platform_Square(void)
p->qWorldY += deltaY - Q(2.0);
}
res = sub_801F100(I(gPlayer.qWorldY) + gPlayer.spriteOffsetY, I(gPlayer.qWorldX) + gPlayer.spriteOffsetX, gPlayer.layer, +8,
sub_801EC3C);
res = SA2_LABEL(sub_801F100)(I(gPlayer.qWorldY) + gPlayer.spriteOffsetY, I(gPlayer.qWorldX) + gPlayer.spriteOffsetX, gPlayer.layer,
+8, SA2_LABEL(sub_801EC3C));
if (res < 0) {
gPlayer.qWorldY += Q(res);
@@ -184,20 +183,21 @@ static void Task_Platform_Square(void)
}
temp = I(p->qWorldX) + 2;
res = sub_801F100(temp + p->spriteOffsetX, I(p->qWorldY), p->layer, +8, sub_801EB44);
res = SA2_LABEL(sub_801F100)(temp + p->spriteOffsetX, I(p->qWorldY), p->layer, +8, sub_801EB44);
if (res < 0) {
p->qWorldX += Q(res);
}
temp2 = I(p->qWorldX) - 2;
res = sub_801F100(temp2 - p->spriteOffsetX, I(p->qWorldY), p->layer, -8, sub_801EB44);
res = SA2_LABEL(sub_801F100)(temp2 - p->spriteOffsetX, I(p->qWorldY), p->layer, -8, sub_801EB44);
if (res < 0) {
p->qWorldX -= Q(res);
}
res = sub_801F100(I(p->qWorldY) + p->spriteOffsetY, I(p->qWorldX) - p->spriteOffsetX, p->layer, +8, sub_801EC3C);
res = SA2_LABEL(sub_801F100)(I(p->qWorldY) + p->spriteOffsetY, I(p->qWorldX) - p->spriteOffsetX, p->layer, +8,
SA2_LABEL(sub_801EC3C));
if (res < 0) {
p->qWorldY += Q(res);
@@ -237,7 +237,7 @@ static void Task_Platform_Square(void)
p->qSpeedAirY = 0;
}
res = sub_801F100(I(p->qWorldY) + p->spriteOffsetY, I(p->qWorldX), p->layer, 8, sub_801EC3C);
res = SA2_LABEL(sub_801F100)(I(p->qWorldY) + p->spriteOffsetY, I(p->qWorldX), p->layer, 8, SA2_LABEL(sub_801EC3C));
if ((res < 0) && (deltaY > 0)) {
Platform_Square_KillPlayer();
@@ -274,7 +274,8 @@ static void Task_Platform_Square(void)
}
if (otherRes & 0x10000) {
s32 newRes = sub_801F100(I(p->qWorldY) - p->spriteOffsetY, I(p->qWorldX), p->layer, -8, sub_801EC3C);
s32 newRes
= SA2_LABEL(sub_801F100)(I(p->qWorldY) - p->spriteOffsetY, I(p->qWorldX), p->layer, -8, SA2_LABEL(sub_801EC3C));
if (newRes < 0) {
if (deltaY < 0) {
@@ -295,7 +296,7 @@ static void Task_Platform_Square(void)
} else {
s32 newRes;
p->qSpeedAirY = 0;
newRes = sub_801F100(I(p->qWorldY) - p->spriteOffsetY, I(p->qWorldX), p->layer, -8, sub_801EC3C);
newRes = SA2_LABEL(sub_801F100)(I(p->qWorldY) - p->spriteOffsetY, I(p->qWorldX), p->layer, -8, SA2_LABEL(sub_801EC3C));
if ((newRes < 0) && (deltaY < 0)) {
Platform_Square_KillPlayer();
@@ -313,14 +314,14 @@ static void Task_Platform_Square(void)
if (result & 0x40000) {
s32 tempXVal = I(p->qWorldX) + 2;
if (sub_801F100(tempXVal + p->spriteOffsetX, I(p->qWorldY), p->layer, -8, sub_801EB44) < 0) {
if (SA2_LABEL(sub_801F100)(tempXVal + p->spriteOffsetX, I(p->qWorldY), p->layer, -8, sub_801EB44) < 0) {
Platform_Square_KillPlayer();
}
}
if (result & 0x80000) {
s32 tempXVal = I(p->qWorldX) - 2;
if (sub_801F100(tempXVal - p->spriteOffsetX, I(p->qWorldY), p->layer, +8, sub_801EB44) < 0) {
if (SA2_LABEL(sub_801F100)(tempXVal - p->spriteOffsetX, I(p->qWorldY), p->layer, +8, sub_801EB44) < 0) {
Platform_Square_KillPlayer();
}
}
@@ -5,7 +5,6 @@
#include "malloc_vram.h"
#include "lib/m4a/m4a.h"
#include "game/shared/stage/collision.h"
#include "game/sa2/stage/interactables/platform_thin.h"
#include "game/shared/stage/entity.h"
+1
View File
@@ -9,6 +9,7 @@
#include "game/shared/stage/player.h"
#include "game/shared/stage/camera.h"
#include "game/shared/stage/entity.h"
#include "game/sa2/stage/interactables/ramp.h"
#include "constants/sa2/animations.h"
@@ -70,20 +70,24 @@ static void Task_PlayerFloating(void)
gPlayer.qWorldX -= Q(0.5);
}
temp = sub_801F100(({ I(gPlayer.qWorldX) + 2; }) + gPlayer.spriteOffsetX, I(gPlayer.qWorldY), gPlayer.layer, +8, sub_801EB44);
temp = SA2_LABEL(sub_801F100)(({ I(gPlayer.qWorldX) + 2; }) + gPlayer.spriteOffsetX, I(gPlayer.qWorldY), gPlayer.layer, +8,
sub_801EB44);
if (temp < 0) {
gPlayer.qWorldX += Q(temp);
}
temp = sub_801F100(({ I(gPlayer.qWorldX) - 2; }) - gPlayer.spriteOffsetX, I(gPlayer.qWorldY), gPlayer.layer, -8, sub_801EB44);
temp = SA2_LABEL(sub_801F100)(({ I(gPlayer.qWorldX) - 2; }) - gPlayer.spriteOffsetX, I(gPlayer.qWorldY), gPlayer.layer, -8,
sub_801EB44);
if (temp < 0) {
gPlayer.qWorldX -= Q(temp);
}
temp = sub_801F100(I(gPlayer.qWorldY) + gPlayer.spriteOffsetY, I(gPlayer.qWorldX), gPlayer.layer, 8, sub_801EC3C);
temp = SA2_LABEL(sub_801F100)(I(gPlayer.qWorldY) + gPlayer.spriteOffsetY, I(gPlayer.qWorldX), gPlayer.layer, 8,
SA2_LABEL(sub_801EC3C));
if (temp < 0) {
gPlayer.qWorldY += Q(temp);
}
temp = sub_801F100(I(gPlayer.qWorldY) - gPlayer.spriteOffsetY, I(gPlayer.qWorldX), gPlayer.layer, -8, sub_801EC3C);
temp = SA2_LABEL(sub_801F100)(I(gPlayer.qWorldY) - gPlayer.spriteOffsetY, I(gPlayer.qWorldX), gPlayer.layer, -8,
SA2_LABEL(sub_801EC3C));
if (temp < 0) {
gPlayer.qWorldY -= Q(temp);
}
@@ -133,22 +137,26 @@ static void sub_807B530(void)
gPlayer.qWorldY += propeller->unk46;
propeller->unk48 -= 4;
temp = sub_801F100(({ I(gPlayer.qWorldX) + 2; }) + gPlayer.spriteOffsetX, I(gPlayer.qWorldY), gPlayer.layer, 8, sub_801EB44);
temp = SA2_LABEL(sub_801F100)(({ I(gPlayer.qWorldX) + 2; }) + gPlayer.spriteOffsetX, I(gPlayer.qWorldY), gPlayer.layer, 8,
sub_801EB44);
if (temp < 0) {
gPlayer.qWorldX += Q(temp);
propeller->unk44 = 32;
}
temp = sub_801F100(({ I(gPlayer.qWorldX) - 2; }) - gPlayer.spriteOffsetX, I(gPlayer.qWorldY), gPlayer.layer, -8, sub_801EB44);
temp = SA2_LABEL(sub_801F100)(({ I(gPlayer.qWorldX) - 2; }) - gPlayer.spriteOffsetX, I(gPlayer.qWorldY), gPlayer.layer, -8,
sub_801EB44);
if (temp < 0) {
gPlayer.qWorldX -= Q(temp);
propeller->unk44 = -32;
}
temp = sub_801F100(I(gPlayer.qWorldY) + gPlayer.spriteOffsetY, I(gPlayer.qWorldX), gPlayer.layer, 8, sub_801EC3C);
temp = SA2_LABEL(sub_801F100)(I(gPlayer.qWorldY) + gPlayer.spriteOffsetY, I(gPlayer.qWorldX), gPlayer.layer, 8,
SA2_LABEL(sub_801EC3C));
if (temp < 0) {
gPlayer.qWorldY += Q(temp);
}
temp = sub_801F100(I(gPlayer.qWorldY) - gPlayer.spriteOffsetY, I(gPlayer.qWorldX), gPlayer.layer, -8, sub_801EC3C);
temp = SA2_LABEL(sub_801F100)(I(gPlayer.qWorldY) - gPlayer.spriteOffsetY, I(gPlayer.qWorldX), gPlayer.layer, -8,
SA2_LABEL(sub_801EC3C));
if (temp < 0) {
gPlayer.qWorldY -= Q(temp);
}
@@ -9,6 +9,7 @@
#include "game/shared/stage/player.h"
#include "game/shared/stage/camera.h"
#include "game/shared/stage/entity.h"
#include "game/sa2/stage/interactables/spring.h"
#include "constants/sa2/animations.h"
@@ -4,7 +4,7 @@
#include "task.h"
#include "trig.h"
#include "lib/m4a/m4a.h"
#include "game/shared/stage/collision.h"
#include "game/shared/stage/entity.h"
#include "game/shared/stage/player.h"
#include "game/shared/stage/camera.h"
@@ -3,6 +3,7 @@
#include "trig.h"
#include "game/shared/stage/player.h"
#include "game/shared/stage/camera.h"
#include "lib/m4a/m4a.h"
#include "constants/sa2/animations.h"
@@ -5,8 +5,6 @@
#include "trig.h"
#include "lib/m4a/m4a.h"
#include "game/shared/stage/collision.h"
#include "game/shared/stage/player.h"
#include "game/shared/stage/camera.h"
#include "game/shared/stage/entity.h"
+5 -5
View File
@@ -1269,7 +1269,7 @@ void Player_Knuckles_Glide_MainUpdate(Player *p)
playerBottomX -= 1;
playerBottomX -= p->spriteOffsetX;
if (sub_801E4E4(playerBottomY, playerBottomX, p->layer, -8, NULL, sub_801EE64) < 0) {
if (SA2_LABEL(sub_801E4E4)(playerBottomY, playerBottomX, p->layer, -8, NULL, SA2_LABEL(sub_801EE64)) < 0) {
PLAYERFN_SET(Player_Knuckles_FallAfterGlide);
p->charState = CHARSTATE_KNUCKLES_GLIDE_FALL;
p->spriteOffsetX = 6;
@@ -1287,7 +1287,7 @@ void Player_Knuckles_Glide_MainUpdate(Player *p)
playerBottomX -= 1;
playerBottomX -= p->spriteOffsetX;
if (sub_801E4E4(playerBottomY, playerBottomX, p->layer, +8, NULL, sub_801EE64) < 0) {
if (SA2_LABEL(sub_801E4E4)(playerBottomY, playerBottomX, p->layer, +8, NULL, SA2_LABEL(sub_801EE64)) < 0) {
PLAYERFN_SET(Player_Knuckles_FallAfterGlide);
p->charState = CHARSTATE_KNUCKLES_GLIDE_FALL;
p->spriteOffsetX = 6;
@@ -1321,7 +1321,7 @@ void Player_Knuckles_Glide_MainUpdate(Player *p)
playerBottomX += 1;
playerBottomX += p->spriteOffsetX;
if (sub_801E4E4(playerBottomY, playerBottomX, p->layer, +8, NULL, sub_801EE64) < 0) {
if (SA2_LABEL(sub_801E4E4)(playerBottomY, playerBottomX, p->layer, +8, NULL, SA2_LABEL(sub_801EE64)) < 0) {
PLAYERFN_SET(Player_Knuckles_FallAfterGlide);
p->charState = CHARSTATE_KNUCKLES_GLIDE_FALL;
p->spriteOffsetX = 6;
@@ -1494,7 +1494,7 @@ s32 sub_8013644(Player *p)
pY = I(p->qWorldY);
result = sub_801E4E4(pX, pY, p->layer, -8, &rot, sub_801ED24);
result = SA2_LABEL(sub_801E4E4)(pX, pY, p->layer, -8, &rot, sub_801ED24);
if (rot & 0x1) {
p->rotation = Q(0.25);
@@ -1510,7 +1510,7 @@ s32 sub_8013644(Player *p)
pY = I(p->qWorldY);
result = sub_801E4E4(pX, pY, p->layer, +8, &rot, sub_801ED24);
result = SA2_LABEL(sub_801E4E4)(pX, pY, p->layer, +8, &rot, sub_801ED24);
if (!(rot & 0x1)) {
p->rotation = rot;
+2 -2
View File
@@ -227,7 +227,7 @@ static void Task_BouncingAnimal(void)
if (animal->inAirTimer > 0) {
animal->inAirTimer--;
} else {
s32 clampedY = y + Q(sub_801F07C(I(animal->y), I(animal->x), 1, 8, NULL, sub_801EE64));
s32 clampedY = y + Q(SA2_LABEL(sub_801F07C)(I(animal->y), I(animal->x), 1, 8, NULL, SA2_LABEL(sub_801EE64)));
// if hit floor
if (clampedY <= animal->y) {
@@ -295,7 +295,7 @@ static void Task_StaticAnimalMain(void)
if (animal->inAirTimer > 0) {
animal->inAirTimer--;
} else {
s32 clampedY = y + Q(sub_801F07C(I(animal->y), I(animal->x), 1, 8, NULL, sub_801EE64));
s32 clampedY = y + Q(SA2_LABEL(sub_801F07C)(I(animal->y), I(animal->x), 1, 8, NULL, SA2_LABEL(sub_801EE64)));
// if collided with floor
if (clampedY <= animal->y) {
+43 -43
View File
@@ -1037,7 +1037,7 @@ s32 sub_802195C(Player *p, u8 *rot, s32 *out)
mask |= 0x80;
}
r5 = sub_801E4E4(playerX2, playerY2, mask, -8, &anotherByte, sub_801ED24);
r5 = SA2_LABEL(sub_801E4E4)(playerX2, playerY2, mask, -8, &anotherByte, sub_801ED24);
playerX = I(p->qWorldX) - (2 + p->spriteOffsetX);
playerY = I(p->qWorldY) + (p->spriteOffsetY);
@@ -1047,7 +1047,7 @@ s32 sub_802195C(Player *p, u8 *rot, s32 *out)
mask |= 0x80;
}
r1 = sub_801E4E4(playerX, playerY, mask, -8, &anotherByte2, sub_801ED24);
r1 = SA2_LABEL(sub_801E4E4)(playerX, playerY, mask, -8, &anotherByte2, sub_801ED24);
if (r5 < r1) {
result = r5;
@@ -1087,7 +1087,7 @@ s32 sub_8021A34(Player *p, u8 *rot, s32 *out)
mask |= 0x80;
}
r5 = sub_801E4E4(playerX2, playerY2, mask, +8, &anotherByte, sub_801ED24);
r5 = SA2_LABEL(sub_801E4E4)(playerX2, playerY2, mask, +8, &anotherByte, sub_801ED24);
playerX = I(p->qWorldX) + (2 + p->spriteOffsetX);
playerY = I(p->qWorldY) + (p->spriteOffsetY);
@@ -1097,7 +1097,7 @@ s32 sub_8021A34(Player *p, u8 *rot, s32 *out)
mask |= 0x80;
}
r1 = sub_801E4E4(playerX, playerY, mask, +8, &anotherByte2, sub_801ED24);
r1 = SA2_LABEL(sub_801E4E4)(playerX, playerY, mask, +8, &anotherByte2, sub_801ED24);
if (r5 < r1) {
result = r5;
@@ -1137,7 +1137,7 @@ s32 sub_8021B08(Player *p, u8 *rot, s32 *out)
mask |= 0x80;
}
r5 = sub_801E4E4(playerY2, playerX2, mask, -8, &anotherByte, sub_801EE64);
r5 = SA2_LABEL(sub_801E4E4)(playerY2, playerX2, mask, -8, &anotherByte, SA2_LABEL(sub_801EE64));
playerY = I(p->qWorldY) - (p->spriteOffsetY);
playerX = I(p->qWorldX) + (2 + p->spriteOffsetX);
@@ -1147,7 +1147,7 @@ s32 sub_8021B08(Player *p, u8 *rot, s32 *out)
mask |= 0x80;
}
r1 = sub_801E4E4(playerY, playerX, mask, -8, &anotherByte2, sub_801EE64);
r1 = SA2_LABEL(sub_801E4E4)(playerY, playerX, mask, -8, &anotherByte2, SA2_LABEL(sub_801EE64));
if (r5 < r1) {
result = r5;
@@ -1203,7 +1203,7 @@ void sub_8021C4C(Player *p)
mask |= mask2;
}
result = sub_801E4E4(playerX, playerY, mask, -8, 0, sub_801ED24);
result = SA2_LABEL(sub_801E4E4)(playerX, playerY, mask, -8, 0, sub_801ED24);
if (result <= 0) {
p->qWorldX -= Q(result);
@@ -1218,7 +1218,7 @@ void sub_8021C4C(Player *p)
mask |= 0x80;
}
result = sub_801E4E4(playerX2, playerY2, mask, +8, 0, sub_801ED24);
result = SA2_LABEL(sub_801E4E4)(playerX2, playerY2, mask, +8, 0, sub_801ED24);
if (result <= 0) {
p->qWorldX += Q(result);
@@ -1304,7 +1304,7 @@ void sub_8021DB8(Player *p)
mask |= mask2;
}
result = sub_801E4E4(playerX, playerY, mask, -8, 0, sub_801ED24);
result = SA2_LABEL(sub_801E4E4)(playerX, playerY, mask, -8, 0, sub_801ED24);
if (result <= 0) {
p->qWorldX -= Q(result);
@@ -1319,7 +1319,7 @@ void sub_8021DB8(Player *p)
mask |= 0x80;
}
result = sub_801E4E4(playerX2, playerY2, mask, +8, 0, sub_801ED24);
result = SA2_LABEL(sub_801E4E4)(playerX2, playerY2, mask, +8, 0, sub_801ED24);
if (result <= 0) {
p->qWorldX += Q(result);
@@ -1383,7 +1383,7 @@ void sub_8021EE4(Player *p)
if (gravity) {
playerX = I(p->qWorldX) - (3 + p->spriteOffsetX);
playerY = I(p->qWorldY);
result = sub_801E4E4(playerX, playerY, mask2, -8, NULL, sub_801ED24);
result = SA2_LABEL(sub_801E4E4)(playerX, playerY, mask2, -8, NULL, sub_801ED24);
} else
#endif
{
@@ -1394,7 +1394,7 @@ void sub_8021EE4(Player *p)
if (p->qSpeedAirY < Q(3.0)) {
mask |= 0x80;
}
result = sub_801E4E4(playerX2, playerY2, mask, -8, NULL, sub_801ED24);
result = SA2_LABEL(sub_801E4E4)(playerX2, playerY2, mask, -8, NULL, sub_801ED24);
}
if (result <= 0) {
@@ -1470,7 +1470,7 @@ void sub_802203C(Player *p)
if (gravity) {
playerX = I(p->qWorldX) + (3 + p->spriteOffsetX);
playerY = I(p->qWorldY);
result = sub_801E4E4(playerX, playerY, mask2, +8, NULL, sub_801ED24);
result = SA2_LABEL(sub_801E4E4)(playerX, playerY, mask2, +8, NULL, sub_801ED24);
} else
#endif
{
@@ -1481,7 +1481,7 @@ void sub_802203C(Player *p)
if (p->qSpeedAirY < Q(3.0)) {
mask |= 0x80;
}
result = sub_801E4E4(playerX2, playerY2, mask, +8, NULL, sub_801ED24);
result = SA2_LABEL(sub_801E4E4)(playerX2, playerY2, mask, +8, NULL, sub_801ED24);
}
if (result <= 0) {
@@ -1747,7 +1747,7 @@ void sub_80223BC(Player *p)
mask = 0x80;
mask |= mask2;
}
result = sub_801E4E4(playerX, playerY, mask, -8, NULL, sub_801ED24);
result = SA2_LABEL(sub_801E4E4)(playerX, playerY, mask, -8, NULL, sub_801ED24);
if (result <= 0) {
p->qWorldX -= Q(result);
@@ -1763,7 +1763,7 @@ void sub_80223BC(Player *p)
if (p->qSpeedAirY < Q(3.0)) {
mask |= 0x80;
}
result = sub_801E4E4(playerX2, playerY2, mask, +8, NULL, sub_801ED24);
result = SA2_LABEL(sub_801E4E4)(playerX2, playerY2, mask, +8, NULL, sub_801ED24);
if (result <= 0) {
p->qWorldX += Q(result);
@@ -1812,7 +1812,7 @@ void sub_80224DC(Player *p)
mask = 0x80;
mask |= mask2;
}
result = sub_801E4E4(playerX, playerY, mask, -8, NULL, sub_801ED24);
result = SA2_LABEL(sub_801E4E4)(playerX, playerY, mask, -8, NULL, sub_801ED24);
if (result <= 0) {
p->qWorldX -= Q(result);
@@ -1828,7 +1828,7 @@ void sub_80224DC(Player *p)
if (p->qSpeedAirY < Q(3.0)) {
mask |= 0x80;
}
result = sub_801E4E4(playerX2, playerY2, mask, +8, NULL, sub_801ED24);
result = SA2_LABEL(sub_801E4E4)(playerX2, playerY2, mask, +8, NULL, sub_801ED24);
if (result <= 0) {
p->qWorldX += Q(result);
@@ -1873,7 +1873,7 @@ void sub_80225E8(Player *p)
if (p->qSpeedAirY < Q(3.0)) {
mask |= 0x80;
}
result = sub_801E4E4(playerX, playerY, mask, -8, NULL, sub_801ED24);
result = SA2_LABEL(sub_801E4E4)(playerX, playerY, mask, -8, NULL, sub_801ED24);
if (result <= 0) {
p->qWorldX -= Q(result);
@@ -1941,7 +1941,7 @@ void sub_8022710(Player *p)
if (p->qSpeedAirY < Q(3.0)) {
mask |= 0x80;
}
result = sub_801E4E4(playerX, playerY, mask, +8, NULL, sub_801ED24);
result = SA2_LABEL(sub_801E4E4)(playerX, playerY, mask, +8, NULL, sub_801ED24);
if (result <= 0) {
p->qWorldX += Q(result);
@@ -2046,14 +2046,14 @@ void sub_80228C0(Player *p)
u32 mask = p->layer;
s32 py = I(playerY);
resultA
= sub_801E4E4(py + p->spriteOffsetY, (playerX = I(playerX)) - (2 + p->spriteOffsetX), mask, 8, &p->SA2_LABEL(unk28), sub_801EE64);
resultA = SA2_LABEL(sub_801E4E4)(py + p->spriteOffsetY, (playerX = I(playerX)) - (2 + p->spriteOffsetX), mask, 8, &p->SA2_LABEL(unk28),
SA2_LABEL(sub_801EE64));
py = py + (p->spriteOffsetY);
playerX += 2;
playerX += p->spriteOffsetX;
p29 = &p->unk29;
resultB = sub_801E4E4(py, playerX, mask, 8, p29, sub_801EE64);
resultB = SA2_LABEL(sub_801E4E4)(py, playerX, mask, 8, p29, SA2_LABEL(sub_801EE64));
val = resultB;
if (resultB > resultA) {
@@ -2160,14 +2160,14 @@ void sub_80229EC(Player *p)
mask = p->layer;
py = I(playerY);
resultA
= sub_801E4E4(py - p->spriteOffsetY, (playerX = I(playerX)) + (2 + p->spriteOffsetX), mask, -8, &p->SA2_LABEL(unk28), sub_801EE64);
resultA = SA2_LABEL(sub_801E4E4)(py - p->spriteOffsetY, (playerX = I(playerX)) + (2 + p->spriteOffsetX), mask, -8, &p->SA2_LABEL(unk28),
SA2_LABEL(sub_801EE64));
py = py - (p->spriteOffsetY);
playerX -= 2;
playerX -= p->spriteOffsetX;
p29 = &p->unk29;
resultB = sub_801E4E4(py, playerX, mask, -8, p29, sub_801EE64);
resultB = SA2_LABEL(sub_801E4E4)(py, playerX, mask, -8, p29, SA2_LABEL(sub_801EE64));
val = resultB;
if (resultB > resultA) {
@@ -2274,14 +2274,14 @@ void sub_8022B18(Player *p)
mask = p->layer;
py = I(playerX);
resultA
= sub_801E4E4(py - p->spriteOffsetY, (playerY = I(playerY)) - (2 + p->spriteOffsetX), mask, -8, &p->SA2_LABEL(unk28), sub_801ED24);
resultA = SA2_LABEL(sub_801E4E4)(py - p->spriteOffsetY, (playerY = I(playerY)) - (2 + p->spriteOffsetX), mask, -8, &p->SA2_LABEL(unk28),
sub_801ED24);
py = py - (p->spriteOffsetY);
playerY += 2;
playerY += p->spriteOffsetX;
p29 = &p->unk29;
resultB = sub_801E4E4(py, playerY, mask, -8, p29, sub_801ED24);
resultB = SA2_LABEL(sub_801E4E4)(py, playerY, mask, -8, p29, sub_801ED24);
val = resultB;
if (resultB > resultA) {
@@ -2387,13 +2387,13 @@ void sub_8022C44(Player *p)
mask = p->layer;
py = I(playerX);
resultA
= sub_801E4E4(py + p->spriteOffsetY, (playerY = I(playerY)) + (2 + p->spriteOffsetX), mask, +8, &p->SA2_LABEL(unk28), sub_801ED24);
resultA = SA2_LABEL(sub_801E4E4)(py + p->spriteOffsetY, (playerY = I(playerY)) + (2 + p->spriteOffsetX), mask, +8, &p->SA2_LABEL(unk28),
sub_801ED24);
py = py + (p->spriteOffsetY);
playerY -= 2;
playerY -= p->spriteOffsetX;
resultB = sub_801E4E4(py, playerY, mask, +8, &p->unk29, sub_801ED24);
resultB = SA2_LABEL(sub_801E4E4)(py, playerY, mask, +8, &p->unk29, sub_801ED24);
val = resultB;
if (resultB > resultA) {
@@ -2605,7 +2605,7 @@ void sub_8022D6C(Player *p)
}
// (100.00%) https://decomp.me/scratch/U0r54
s32 sub_8022F58(u8 param0, Player *p)
s32 SA2_LABEL(sub_8022F58)(u8 param0, Player *p)
{
u32 p0;
s32 result = 0; // maybe u8?
@@ -2744,22 +2744,22 @@ s32 sub_802302C(u8 param0, Player *p)
switch (param0 >> 6) {
case 0: {
s32 y = py + 2;
result = sub_801E4E4(y + p->spriteOffsetX, px, p->layer, +8, NULL, sub_801EE64);
result = SA2_LABEL(sub_801E4E4)(y + p->spriteOffsetX, px, p->layer, +8, NULL, SA2_LABEL(sub_801EE64));
} break;
case 2: {
s32 y = py - 2;
result = sub_801E4E4(y - p->spriteOffsetX, px, p->layer, -8, NULL, sub_801EE64);
result = SA2_LABEL(sub_801E4E4)(y - p->spriteOffsetX, px, p->layer, -8, NULL, SA2_LABEL(sub_801EE64));
} break;
case 1: {
s32 x = (px - 2);
result = sub_801E4E4(x - p->spriteOffsetX, py, p->layer, -8, NULL, sub_801ED24);
result = SA2_LABEL(sub_801E4E4)(x - p->spriteOffsetX, py, p->layer, -8, NULL, sub_801ED24);
} break;
case 3: {
s32 x = (px + 2);
result = sub_801E4E4(x + p->spriteOffsetX, py, p->layer, +8, NULL, sub_801ED24);
result = SA2_LABEL(sub_801E4E4)(x + p->spriteOffsetX, py, p->layer, +8, NULL, sub_801ED24);
} break;
default: {
@@ -3938,7 +3938,7 @@ void sub_80246DC(Player *p)
PLAYERFN_CHANGE_SHIFT_OFFSETS(p, 6, 9);
} else {
if ((p->qSpeedAirY > 0) && (p->variant == 1) && ((((u16)anim - 10) == 0) || (((u16)anim - 10) == 1))) {
s32 newY = sub_801E6D4(I(p->qWorldY) + p->spriteOffsetY, I(p->qWorldX), p->layer, 8, NULL, sub_801EE64);
s32 newY = sub_801E6D4(I(p->qWorldY) + p->spriteOffsetY, I(p->qWorldX), p->layer, 8, NULL, SA2_LABEL(sub_801EE64));
if (gGameMode != GAME_MODE_MULTI_PLAYER_COLLECT_RINGS) {
if (newY <= 32) {
@@ -5169,13 +5169,13 @@ void InitPlayerGrindGraphics(Player *p)
p->itemEffect |= PLAYER_ITEM_EFFECT__TELEPORT;
#ifndef COLLECT_RINGS_ROM
if (GRAVITY_IS_INVERTED) {
newY = sub_801E6D4(I(p->qWorldY) - p->spriteOffsetY, I(p->qWorldX), p->layer, -8, NULL, sub_801EE64);
newY = sub_801E6D4(I(p->qWorldY) - p->spriteOffsetY, I(p->qWorldX), p->layer, -8, NULL, SA2_LABEL(sub_801EE64));
p->qWorldY = p->qWorldY - Q(newY);
} else
#endif
{
newY = sub_801E6D4(I(p->qWorldY) + p->spriteOffsetY, I(p->qWorldX), p->layer, 8, NULL, sub_801EE64);
newY = sub_801E6D4(I(p->qWorldY) + p->spriteOffsetY, I(p->qWorldX), p->layer, 8, NULL, SA2_LABEL(sub_801EE64));
p->qWorldY = p->qWorldY + Q(newY);
}
@@ -7164,7 +7164,7 @@ s32 sub_8029BB8(Player *p, u8 *rotation, s32 *out)
mask |= 0x80;
}
r5 = sub_801E4E4(playerY2, playerX2, mask, 8, &anotherByte, sub_801EE64);
r5 = SA2_LABEL(sub_801E4E4)(playerY2, playerX2, mask, 8, &anotherByte, SA2_LABEL(sub_801EE64));
playerY = I(p->qWorldY) + p->spriteOffsetY;
playerX = I(p->qWorldX) + (2 + p->spriteOffsetX);
@@ -7174,7 +7174,7 @@ s32 sub_8029BB8(Player *p, u8 *rotation, s32 *out)
mask |= 0x80;
}
r1 = sub_801E4E4(playerY, playerX, mask, 8, &anotherByte2, sub_801EE64);
r1 = SA2_LABEL(sub_801E4E4)(playerY, playerX, mask, 8, &anotherByte2, SA2_LABEL(sub_801EE64));
if (r5 < r1) {
result = r5;
@@ -7313,7 +7313,7 @@ bool32 Player_TryJump(Player *p)
}
#endif
if (sub_8022F58(rot + Q(0.5), p) > 3) {
if (SA2_LABEL(sub_8022F58)(rot + Q(0.5), p) > 3) {
PLAYERFN_SET(Player_InitJump);
return TRUE;
}