Overlay NO0: Deduplicate and split collision data (#1710)

This commit is contained in:
Aleksandr Shabelnikov 2024-10-01 20:46:56 +02:00 committed by GitHub
parent 74ce2c49b8
commit b9f02684ee
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 76 additions and 81 deletions

View File

@ -40,7 +40,11 @@ segments:
subsegments:
- [0x0, data]
- [0x113C, .data, st_update] # UNK_Invincibility0 data
- [0x1168, data]
- [0x1168, .data, collision]
- [0x1528, .data, e_red_door]
- [0x1540, data]
- [0x164C, .data, st_common] # g_SineTable
- [0x184C, data]
- [0x41368, .rodata, first_c_file]
- [0x4137C, .rodata, e_red_door]
- [0x41394, .rodata, e_collect]

View File

@ -11,6 +11,7 @@ D_80180C6A = 0x80180C02;
D_80180C70 = 0x80180C08;
D_80180C88 = 0x80180C38;
D_80180CA0 = 0x80180C50;
g_eRedDoorTiles = 0x80180C5C;
UNK_Invincibility0 = 0x8018113C;
g_testCollEnemyLookup = 0x80181168;
g_testCollLuckCutoff = 0x80181488;
@ -94,7 +95,7 @@ GetSine = 0x801C80FC;
SetEntityVelocityFromAngle = 0x801C8118;
Ratan2Shifted = 0x801C8184;
GetAngleBetweenEntitiesShifted = 0x801C81BC;
GetAnglePointToEntity = 0x801C8204;
GetAnglePointToEntityShifted = 0x801C8204;
AdjustValueWithinThreshold = 0x801C824C;
UnkEntityFunc0 = 0x801C82A4;
Ratan2 = 0x801C8330;

View File

@ -1,6 +1,2 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
#include "common.h"
INCLUDE_ASM("st/no0/nonmatchings/collision", HitDetection);
INCLUDE_ASM("st/no0/nonmatchings/collision", EntityDamageDisplay);
#include "../collision.h"

View File

@ -1,6 +1,2 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
#include "common.h"
INCLUDE_ASM("st/no0/nonmatchings/e_red_door", EntityIsNearPlayer);
INCLUDE_ASM("st/no0/nonmatchings/e_red_door", EntityRedDoor);
#include "../e_red_door.h"

65
src/st/no0/no0.h Normal file
View File

@ -0,0 +1,65 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
#include "stage.h"
#define OVL_EXPORT(x) NO0_##x
void EntityUnkId14(Entity* entity);
void EntityUnkId15(Entity* entity);
typedef enum EntityIDs {
/* 0x00 */ E_NONE,
/* 0x01 */ E_BREAKABLE,
/* 0x02 */ E_EXPLOSION,
/* 0x03 */ E_PRIZE_DROP,
/* 0x04 */ E_NUMERIC_DAMAGE,
/* 0x05 */ E_RED_DOOR,
/* 0x06 */ E_INTENSE_EXPLOSION,
/* 0x07 */ E_SOUL_STEAL_ORB,
/* 0x08 */ E_ROOM_FOREGROUND,
/* 0x09 */ E_STAGE_NAME_POPUP,
/* 0x0A */ E_EQUIP_ITEM_DROP,
/* 0x0B */ E_RELIC_ORB,
/* 0x0C */ E_HEART_DROP,
/* 0x0D */ E_ENEMY_BLOOD,
/* 0x0E */ E_SAVE_GAME_POPUP,
/* 0x0F */ E_DUMMY_0F,
/* 0x10 */ E_DUMMY_10,
/* 0x11 */ E_ID_11 = 0x11,
/* 0x14 */ E_ID_14 = 0x14,
/* 0x15 */ E_FIREBALL = 0x15,
/* 0x17 */ E_BG_LIGHTNING = 0x17,
/* 0x1E */ E_CAVERN_DOOR_LEVER_UNK0 = 0x1E,
/* 0x27 */ E_FALLING_ROCK_2 = 0x27,
/* 0x2E */ E_ID_2E = 0x2E,
/* 0x30 */ E_ID_30 = 0x30,
/* 0x31 */ E_ID_31,
/* 0x32 */ E_ID_32,
/* 0x33 */ E_ID_33,
/* 0x35 */ E_SPLASH_WATER = 0x35,
/* 0x36 */ E_SURFACING_WATER,
/* 0x37 */ E_SIDE_WATER_SPLASH,
/* 0x38 */ E_SMALL_WATER_DROP,
/* 0x39 */ E_WATER_DROP,
/* 0x3A */ E_MERMAN_SPAWNER_3A,
/* 0x3B */ E_MERMAN_JUMP_WATER,
/* 0x3C */ E_MERMAN2_UNK1,
/* 0x3D */ E_MEDIUM_WATER_SPLASH,
/* 0x3E */ E_MERMAN2_SPIT_FIRE,
/* 0x3F */ E_MERMAN2_DYING,
/* 0x40 */ E_MERMAN2_JUMP_AIR,
/* 0x41 */ E_MERMAN_SPAWNER_41,
/* 0x42 */ E_MERMAN_SPIT_FIRE,
/* 0x43 */ E_MERMAN_JUMP_AIR,
/* 0x44 */ E_MERMAN_DYING,
/* 0x47 */ E_BONE_SCIMITAR_HEAD = 0x47,
/* 0x4C */ E_ZOMBIE = 0x4C,
/* 0x59 */ E_ID_59 = 0x59,
/* 0x5B */ E_DEATH_5B = 0x5B,
/* 0x5D */ E_FALLING_ROCK = 0x5D,
/* 0x5E */ E_DEATH_5E,
/* 0x60 */ E_FLYING_OWL_UNK60 = 0x60,
/* 0x62 */ E_WARG_EXP_OPAQUE = 0x62,
} EntityIDs;
extern s16 g_SineTable[];

View File

@ -1,70 +1,3 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
#include "common.h"
INCLUDE_ASM("st/no0/nonmatchings/st_common", DestroyEntity);
INCLUDE_ASM("st/no0/nonmatchings/st_common", DestroyEntitiesFromIndex);
INCLUDE_ASM("st/no0/nonmatchings/st_common", PreventEntityFromRespawning);
INCLUDE_ASM("st/no0/nonmatchings/st_common", AnimateEntity);
INCLUDE_ASM("st/no0/nonmatchings/st_common", UnkAnimFunc);
INCLUDE_ASM("st/no0/nonmatchings/st_common", GetDistanceToPlayerX);
INCLUDE_ASM("st/no0/nonmatchings/st_common", GetDistanceToPlayerY);
INCLUDE_ASM("st/no0/nonmatchings/st_common", GetSideToPlayer);
INCLUDE_ASM("st/no0/nonmatchings/st_common", MoveEntity);
INCLUDE_ASM("st/no0/nonmatchings/st_common", FallEntity);
INCLUDE_ASM("st/no0/nonmatchings/st_common", UnkCollisionFunc3);
INCLUDE_ASM("st/no0/nonmatchings/st_common", UnkCollisionFunc2);
INCLUDE_ASM("st/no0/nonmatchings/st_common", AllocEntity);
INCLUDE_ASM("st/no0/nonmatchings/st_common", GetSineScaled);
INCLUDE_ASM("st/no0/nonmatchings/st_common", GetSine);
INCLUDE_ASM("st/no0/nonmatchings/st_common", SetEntityVelocityFromAngle);
INCLUDE_ASM("st/no0/nonmatchings/st_common", Ratan2Shifted);
INCLUDE_ASM("st/no0/nonmatchings/st_common", GetAngleBetweenEntitiesShifted);
INCLUDE_ASM("st/no0/nonmatchings/st_common", GetAnglePointToEntity);
INCLUDE_ASM("st/no0/nonmatchings/st_common", AdjustValueWithinThreshold);
INCLUDE_ASM("st/no0/nonmatchings/st_common", UnkEntityFunc0);
INCLUDE_ASM("st/no0/nonmatchings/st_common", Ratan2);
INCLUDE_ASM("st/no0/nonmatchings/st_common", GetAngleBetweenEntities);
INCLUDE_ASM("st/no0/nonmatchings/st_common", func_us_801C8398);
INCLUDE_ASM("st/no0/nonmatchings/st_common", GetNormalizedAngle);
INCLUDE_ASM("st/no0/nonmatchings/st_common", SetStep);
INCLUDE_ASM("st/no0/nonmatchings/st_common", SetSubStep);
INCLUDE_ASM("st/no0/nonmatchings/st_common", EntityExplosionSpawn);
INCLUDE_ASM("st/no0/nonmatchings/st_common", InitializeEntity);
INCLUDE_ASM("st/no0/nonmatchings/st_common", EntityDummy);
INCLUDE_ASM("st/no0/nonmatchings/st_common", UnkCollisionFunc);
INCLUDE_ASM("st/no0/nonmatchings/st_common", CheckFieldCollision);
INCLUDE_ASM("st/no0/nonmatchings/st_common", GetPlayerCollisionWith);
INCLUDE_ASM("st/no0/nonmatchings/st_common", ReplaceBreakableWithItemDrop);
#include "no0.h"
#include "../st_common.h"