mirror of
https://github.com/Xeeynamo/sotn-decomp.git
synced 2024-11-26 22:40:33 +00:00
Stage BSS Organizing, Padding Macros (#1497)
Maps `create_entity` and `e_collect` data, text, and bss for all stages. Adds macros for defining padding for various sections by size. Tables for section sizes have been added to common includes to make calculating offsets easier when segments.
This commit is contained in:
parent
20a3936d29
commit
a34dc9a778
@ -84,5 +84,7 @@ segments:
|
||||
- [0x124C8, c, e_room_fg]
|
||||
- [0x125B4, c, popup]
|
||||
- [0x1298C, c, prim_helpers]
|
||||
- [0x131BC, .bss, bss]
|
||||
- [0x131BC, .bss, create_entity]
|
||||
- [0x131CC, .bss, bss]
|
||||
- [0x13E44, .bss, e_collect]
|
||||
- [0x13E84]
|
||||
|
@ -134,5 +134,7 @@ segments:
|
||||
- [0x14498, .rodata, wrp_psp/e_collect]
|
||||
- [0x144D0, .rodata, wrp_psp/e_misc]
|
||||
- [0x144F8, .rodata, wrp/warp]
|
||||
- [0x14580, .bss, wrp_psp/bss]
|
||||
- [0x14500, .bss, wrp_psp/create_entity]
|
||||
- [0x14520, .bss, wrp_psp/e_collect]
|
||||
- [0x14560, .bss, wrp_psp/bss]
|
||||
- [0x14580]
|
||||
|
@ -82,7 +82,7 @@ segments:
|
||||
- [0x1B274, c]
|
||||
- [0x1BED4, c, prim_helpers]
|
||||
- [0x1C704, .bss, header]
|
||||
- [0x1C718, .bss, create_entity]
|
||||
- [0x1C71C, .bss, holyglassescutscene]
|
||||
- [0x1C764, .bss, create_entity]
|
||||
- [0x1C774, .bss, holyglassescutscene]
|
||||
- [0x1C7C0, .bss, 15C84]
|
||||
- [0x1D46C]
|
||||
|
@ -94,5 +94,7 @@ segments:
|
||||
- [0x1E1C8, c]
|
||||
- [0x22018, c, prim_helpers]
|
||||
- [0x22848, c]
|
||||
- [0x23264, .bss, bss]
|
||||
- [0x23264, .bss, create_entity]
|
||||
- [0x232CA, .bss, bss]
|
||||
- [0x23FB6, .bss, 1C7DC]
|
||||
- [0x23FCC]
|
||||
|
@ -88,5 +88,7 @@ segments:
|
||||
- [0x149C0, c, entity_relic_orb]
|
||||
- [0x15520, c]
|
||||
- [0x18FA0, c, prim_helpers]
|
||||
- [0x197D8, .bss, bss]
|
||||
- [0x197D8, .bss, create_entity]
|
||||
- [0x197ED, .bss, bss]
|
||||
- [0x19E7E, .bss, 139E0]
|
||||
- [0x19E94]
|
||||
|
@ -52,6 +52,7 @@ segments:
|
||||
- [0x1CEC, .data, collision]
|
||||
- [0x20AC, .data, e_red_door]
|
||||
- [0x20C4, data]
|
||||
- [0x22C4, .data, e_collect]
|
||||
- [0x25B4, .data, entity_relic_orb]
|
||||
- [0x2618, data]
|
||||
- [0x3180, data]
|
||||
@ -77,9 +78,9 @@ segments:
|
||||
- [0x37514, .rodata, 3FF00] # EntityDeath
|
||||
- [0x37564, .rodata, 3FF00] # EntityWargExplosionPuffOpaque
|
||||
- [0x37578, .rodata, e_red_door] # EntityRedDoor
|
||||
- [0x37590, rodata]
|
||||
- [0x375E0, .rodata, 46684] # EntityPrizeDrop
|
||||
- [0x37600, .rodata, 46684] # EntityEquipItemDrop
|
||||
- [0x37590, .rodata, e_collect] # CollectGold text
|
||||
- [0x375E0, .rodata, e_collect] # EntityPrizeDrop
|
||||
- [0x37600, .rodata, e_collect] # EntityEquipItemDrop
|
||||
- [0x37618, .rodata, entity_relic_orb]
|
||||
- [0x37650, .rodata, entity_message_box]
|
||||
- [0x37664, .rodata, 48A84] # EntityStageNamePopup
|
||||
@ -98,7 +99,8 @@ segments:
|
||||
- [0x4343C, c, create_entity]
|
||||
- [0x43FB4, c, e_red_door]
|
||||
- [0x44C64, c]
|
||||
- [0x46684, c]
|
||||
- [0x45BC0, c, e_collect]
|
||||
- [0x47680, c, blit_char]
|
||||
- [0x47930, c, entity_relic_orb]
|
||||
- [0x48400, c, entity_heart_drop]
|
||||
- [0x48528, c, entity_message_box]
|
||||
@ -106,5 +108,7 @@ segments:
|
||||
- [0x56264, c]
|
||||
- [0x564B0, c]
|
||||
- [0x56880, c, prim_helpers]
|
||||
- [0x570B0, .bss, bss]
|
||||
- [0x570B0, .bss, create_entity]
|
||||
- [0x57120, .bss, bss]
|
||||
- [0x57DD8, .bss, e_collect]
|
||||
- [0x57E18]
|
||||
|
@ -130,5 +130,8 @@ segments:
|
||||
- [0x4F5B8, c]
|
||||
- [0x50A00, c, blade]
|
||||
- [0x51F38, c, prim_helpers]
|
||||
- [0x52768, .bss, bss]
|
||||
- [0x52768, .bss, create_entity]
|
||||
- [0x5277D, .bss, bss]
|
||||
- [0x53378, .bss, 4D540]
|
||||
- [0x533F4, .bss, e_collect]
|
||||
- [0x53434]
|
||||
|
@ -127,5 +127,7 @@ segments:
|
||||
- [0x48ADC, c, e_stage_name]
|
||||
- [0x49930, c, prim_helpers]
|
||||
- [0x4A160, c, lifeupspawn]
|
||||
- [0x4AA14, .bss, bss]
|
||||
- [0x4AA14, .bss, create_entity]
|
||||
- [0x4AA24, .bss, bss]
|
||||
- [0x4B740, .bss, e_collect]
|
||||
- [0x4B780]
|
||||
|
@ -85,5 +85,7 @@ segments:
|
||||
- [0x14DD4, c, wrp/e_room_fg]
|
||||
- [0x14EC0, c, wrp/popup]
|
||||
- [0x151F0, c, wrp/prim_helpers]
|
||||
- [0x15A20, .bss, rwrp/bss]
|
||||
- [0x15A20, .bss, wrp/create_entity]
|
||||
- [0x15A36, .bss, rwrp/bss]
|
||||
- [0x166A8, .bss, wrp/e_collect]
|
||||
- [0x166E8]
|
||||
|
@ -99,5 +99,7 @@ segments:
|
||||
- [0x36358, c]
|
||||
- [0x3D0C0, c, prim_helpers]
|
||||
- [0x3D8F0, c]
|
||||
- [0x3EB00, .bss, bss]
|
||||
- [0x3EB00, .bss, create_entity]
|
||||
- [0x400B6, .bss, bss]
|
||||
- [0x42584, .bss, 36358]
|
||||
- [0x425C4]
|
||||
|
@ -84,5 +84,7 @@ segments:
|
||||
- [0x12E54, c, e_room_fg]
|
||||
- [0x12F40, c, popup]
|
||||
- [0x13270, c, prim_helpers]
|
||||
- [0x13AB0, .bss, bss]
|
||||
- [0x13AB0, .bss, create_entity]
|
||||
- [0x13AC0, .bss, bss]
|
||||
- [0x14728, .bss, e_collect]
|
||||
- [0x14768]
|
||||
|
@ -1,2 +0,0 @@
|
||||
g_RicFactoryBlueprints = 0x80154A6C;
|
||||
UpdateEntityRichter = 0x80157BFC;
|
@ -14,12 +14,6 @@ g_eBreakableExplosionTypes = 0x80180E78;
|
||||
g_eBreakableanimSets = 0x80180E80;
|
||||
g_eBreakableDrawModes = 0x80180E90;
|
||||
g_TrapDoorFlag = 0x8018123C;
|
||||
g_goldCollectTexts = 0x80182438;
|
||||
c_GoldPrizes = 0x80182460;
|
||||
c_HeartPrizes = 0x801824F0;
|
||||
g_ExplosionYVelocities = 0x801824F4;
|
||||
g_bigRedFireballAnim = 0x8018251C;
|
||||
g_ExplosionAnimations = 0x801825A0;
|
||||
g_eUnk14SpawnRots = 0x80182618;
|
||||
unk15_rot = 0x80182628;
|
||||
unk15_yVel = 0x80182638;
|
||||
|
@ -83,4 +83,37 @@ int sprintf(char* dst, const char* fmt, ...);
|
||||
#define CLAMP_MIN(v, min) ((v) < (min) ? (min) : (v))
|
||||
#define CLAMP_MAX(v, max) ((v) > (max) ? (max) : (v))
|
||||
|
||||
// Creates padding between variables with a unique name and file
|
||||
// visibility. On versions where this padding is unnecessary, these
|
||||
// macros expand to nothing. "Critical" versions of these macros
|
||||
// ensure that the padding is provided, regardless of version, useful
|
||||
// for when locations are accessed using a variety of sizes so
|
||||
// field offset needs to be maintained. The unknown critical versions
|
||||
// expand identically to the critical versions but indicate that it
|
||||
// is not known whether or not the padding is necessary outside of
|
||||
// reproducing an original binary.
|
||||
#define __INDIRECT_CRITICAL_PAD_TYPE_FIELD(type, size, line, counter) \
|
||||
type __pad__##size##__##line##__##counter[size]
|
||||
#define __CRITICAL_PAD_TYPE_FIELD(type, size, line, counter) \
|
||||
__INDIRECT_CRITICAL_PAD_TYPE_FIELD(type, size, line, counter)
|
||||
#define CRITICAL_PAD_TYPE_FIELD(type, size) \
|
||||
__CRITICAL_PAD_TYPE_FIELD(type, size, __LINE__, __COUNTER__)
|
||||
#define CRITICAL_PAD_FIELD(size) CRITICAL_PAD_TYPE_FIELD(uint8_t, size)
|
||||
|
||||
#define UNKNOWN_CRITICAL_PAD_TYPE(type, size) \
|
||||
CRITICAL_PAD_TYPE_FIELD(type, size)
|
||||
#define UNKNOWN_CRITICAL_PAD_FIELD(size) CRITICAL_PAD_FIELD(size)
|
||||
|
||||
#ifndef VERSION_PC
|
||||
#define PAD_FIELD(size) const CRITICAL_PAD_FIELD(size)
|
||||
#define STATIC_PAD_BSS(size) static CRITICAL_PAD_FIELD(size)
|
||||
#define STATIC_PAD_DATA(size) STATIC_PAD_BSS(size) = {0}
|
||||
#define STATIC_PAD_RODATA(size) static const STATIC_PAD_BSS(size) = {0}
|
||||
#else
|
||||
#define PAD_FIELD(size)
|
||||
#define STATIC_PAD_BSS(size)
|
||||
#define STATIC_PAD_DATA(size)
|
||||
#define STATIC_PAD_RODATA(size)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -1,3 +1,10 @@
|
||||
//
|
||||
// Section Sizes:
|
||||
//
|
||||
// | Data | RO Data | Text | BSS |
|
||||
// +-------+---------+--------+------+
|
||||
// PSX US | - | - | 0x2B0 | - |
|
||||
//
|
||||
#include <stage.h>
|
||||
|
||||
char* BlitChar(char* str, u16* xOffset, u8* pix, u16 stride) {
|
||||
|
@ -228,7 +228,7 @@ void EntityPrizeDrop(Entity* self) {
|
||||
|
||||
#include "../blink_item.h"
|
||||
|
||||
u16 g_ItemIconSlots[32];
|
||||
static u16 g_ItemIconSlots[ICON_SLOT_NUM];
|
||||
|
||||
extern s32 D_80097410;
|
||||
extern s32 D_80097414;
|
||||
|
@ -1,10 +1,3 @@
|
||||
#include <types.h>
|
||||
|
||||
static u16* g_LayoutObjHorizontal;
|
||||
static u16* g_LayoutObjVertical;
|
||||
static u8 g_LayoutObjPosHorizontal;
|
||||
static u8 _unused0[3];
|
||||
static u8 g_LayoutObjPosVertical;
|
||||
static u8 _unused1[3];
|
||||
#include <common.h>
|
||||
|
||||
#include "../create_entity.h"
|
||||
|
@ -1,5 +1,22 @@
|
||||
#include "st_private.h"
|
||||
//
|
||||
// Section Sizes:
|
||||
//
|
||||
// | Data | RO Data | Text | BSS |
|
||||
// --------+-------+---------+-------+------+
|
||||
// PSX US | TBD | TBD | 0xB78 | 0x10 |
|
||||
// PSX HD | TBD | TBD | 0xB78 | 0x10 |
|
||||
//
|
||||
|
||||
#include <common.h>
|
||||
|
||||
static u16* g_LayoutObjHorizontal;
|
||||
static u16* g_LayoutObjVertical;
|
||||
static u8 g_LayoutObjPosHorizontal;
|
||||
STATIC_PAD_BSS(3);
|
||||
static u8 g_LayoutObjPosVertical;
|
||||
STATIC_PAD_BSS(3);
|
||||
|
||||
#include "st_private.h"
|
||||
#include "create_entity_from_layout.h"
|
||||
#include "create_entity_in_range.h"
|
||||
#include "find_entity_horizontal.h"
|
||||
|
@ -1,6 +1,8 @@
|
||||
#include "dre.h"
|
||||
#include "sfx.h"
|
||||
|
||||
static u16 g_ItemIconSlots[ICON_SLOT_NUM];
|
||||
|
||||
void EntityEquipItemDrop(Entity* self) {
|
||||
u16 itemId = self->params & 0x7FFF;
|
||||
s32 primIndex;
|
||||
|
@ -1,10 +1,6 @@
|
||||
#include <game.h>
|
||||
#include <common.h>
|
||||
|
||||
u32 D_801A3264[24];
|
||||
u32 g_LayoutObjHorizontal;
|
||||
u32 g_LayoutObjVertical;
|
||||
u8 g_LayoutObjPosHorizontal[4];
|
||||
u8 g_LayoutObjPosVertical[3076];
|
||||
STATIC_PAD_BSS(3072);
|
||||
u32 D_801A3ED4;
|
||||
u32 g_Dialogue;
|
||||
u16 D_801A3EDC;
|
||||
@ -32,4 +28,3 @@ u16 D_801A3F16;
|
||||
u32 D_801A3F18[27];
|
||||
u32 D_801A3F84;
|
||||
u32 D_801A3F88;
|
||||
u16 g_ItemIconSlots[ICON_SLOT_NUM];
|
||||
|
@ -1 +1,5 @@
|
||||
#include <types.h>
|
||||
|
||||
u32 D_801A3264[24];
|
||||
|
||||
#include "../create_entity.h"
|
||||
|
@ -1,3 +1,11 @@
|
||||
//
|
||||
// Section Sizes:
|
||||
//
|
||||
// | Data | RO Data | Text | BSS |
|
||||
// --------+-------+---------+--------+------+
|
||||
// PSX US | 0x2F0 | 0x88 | 0x1AC0 | 0x40 |
|
||||
// PSX HD | 0x200 | 0x88 | 0x1570 | 0x40 |
|
||||
//
|
||||
#include <stage.h>
|
||||
#include "sfx.h"
|
||||
|
||||
@ -91,9 +99,6 @@ static u8* g_ExplosionAnimations[] = {
|
||||
D_80180ED8, g_bigRedFireballAnim, D_80180F08, D_80180F38, D_80180F6C,
|
||||
};
|
||||
|
||||
// TODO BSS
|
||||
extern u16 g_ItemIconSlots[];
|
||||
|
||||
// from another file
|
||||
extern u16 g_InitializeData0[];
|
||||
|
||||
@ -476,6 +481,8 @@ extern u16 g_InitializeEntityData0[];
|
||||
|
||||
#include "blink_item.h"
|
||||
|
||||
u16 g_ItemIconSlots[ICON_SLOT_NUM];
|
||||
|
||||
void EntityEquipItemDrop(Entity* self) {
|
||||
Collider collider;
|
||||
Primitive* prim;
|
||||
|
@ -5,6 +5,8 @@ extern u16 D_80180D4C[];
|
||||
extern u8* D_80180DB0[];
|
||||
extern u16 D_80180E10[];
|
||||
|
||||
static u16 g_ItemIconSlots[ICON_SLOT_NUM];
|
||||
|
||||
void EntityPrizeDrop(Entity* self) {
|
||||
Collider collider;
|
||||
Primitive* prim;
|
||||
|
@ -1,9 +1,4 @@
|
||||
#include <game.h>
|
||||
#include <types.h>
|
||||
|
||||
u32 g_LayoutObjHorizontal;
|
||||
u32 g_LayoutObjVertical;
|
||||
u8 g_LayoutObjPosHorizontal[4];
|
||||
u8 g_LayoutObjPosVertical[4];
|
||||
u16 D_801997E8[768];
|
||||
u32 D_80199DE8[27];
|
||||
u16 g_ItemIconSlots[ICON_SLOT_NUM];
|
||||
|
@ -1,5 +1,14 @@
|
||||
#include "mad.h"
|
||||
|
||||
// BSS START size = 0x16
|
||||
static u16* g_LayoutObjHorizontal;
|
||||
static u16* g_LayoutObjVertical;
|
||||
static u8 g_LayoutObjPosHorizontal;
|
||||
STATIC_PAD_BSS(3);
|
||||
static u8 g_LayoutObjPosVertical;
|
||||
STATIC_PAD_BSS(3);
|
||||
// END BSS
|
||||
|
||||
#include "../st_private.h"
|
||||
|
||||
#include "../create_entity_from_layout.h"
|
||||
|
@ -372,111 +372,3 @@ void CheckFieldCollision(u16* hitSensors, s16 sensorCount) {
|
||||
#include "../get_player_collision_with.h"
|
||||
|
||||
#include "../replace_breakable_with_item_drop.h"
|
||||
|
||||
void func_801C6114(void) {
|
||||
s32 temp_v1;
|
||||
Entity* entity;
|
||||
|
||||
entity = g_CurrentEntity;
|
||||
if (entity->velocityY >= 0) {
|
||||
temp_v1 =
|
||||
entity->ext.generic.unk88.S16.unk0 + entity->ext.generic.unk84.unk;
|
||||
entity->ext.generic.unk84.unk = temp_v1;
|
||||
entity->velocityX = temp_v1;
|
||||
if (temp_v1 == 0x10000 || temp_v1 == -0x10000) {
|
||||
entity->ext.generic.unk88.S16.unk0 =
|
||||
-entity->ext.generic.unk88.S16.unk0;
|
||||
}
|
||||
entity = g_CurrentEntity;
|
||||
}
|
||||
|
||||
if (entity->velocityY < FIX(0.25)) {
|
||||
entity->velocityY += FIX(0.125);
|
||||
}
|
||||
}
|
||||
|
||||
void func_801C6198(u16 arg0) {
|
||||
Collider collider;
|
||||
|
||||
if (g_CurrentEntity->velocityX < 0) {
|
||||
g_api.CheckCollision(g_CurrentEntity->posX.i.hi,
|
||||
g_CurrentEntity->posY.i.hi - 7, &collider, 0);
|
||||
if (collider.effects & EFFECT_NOTHROUGH) {
|
||||
g_CurrentEntity->velocityY = 0;
|
||||
}
|
||||
}
|
||||
|
||||
g_api.CheckCollision(g_CurrentEntity->posX.i.hi,
|
||||
g_CurrentEntity->posY.i.hi + 7, &collider, 0);
|
||||
|
||||
if (arg0) {
|
||||
if (!(collider.effects & EFFECT_NOTHROUGH)) {
|
||||
MoveEntity();
|
||||
FallEntity();
|
||||
return;
|
||||
}
|
||||
|
||||
g_CurrentEntity->velocityX = 0;
|
||||
g_CurrentEntity->velocityY = 0;
|
||||
|
||||
if (collider.effects & EFFECT_QUICKSAND) {
|
||||
g_CurrentEntity->posY.val += FIX(0.125);
|
||||
return;
|
||||
}
|
||||
|
||||
g_CurrentEntity->posY.i.hi += collider.unk18;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(collider.effects & EFFECT_NOTHROUGH)) {
|
||||
MoveEntity();
|
||||
func_801C6114();
|
||||
}
|
||||
}
|
||||
|
||||
#include "../collect_heart.h"
|
||||
|
||||
#include "../collect_gold.h"
|
||||
|
||||
void CollectSubweapon(u16 subWeaponIdx) {
|
||||
Entity* player = &PLAYER;
|
||||
u16 subWeapon;
|
||||
|
||||
g_api.PlaySfx(SFX_ITEM_PICKUP);
|
||||
subWeapon = g_Status.subWeapon;
|
||||
g_Status.subWeapon = D_801823F4[subWeaponIdx];
|
||||
|
||||
if (subWeapon == g_Status.subWeapon) {
|
||||
subWeapon = 1;
|
||||
g_CurrentEntity->unk6D[0] = 0x10;
|
||||
} else {
|
||||
subWeapon = D_80182424[subWeapon];
|
||||
g_CurrentEntity->unk6D[0] = 0x60;
|
||||
}
|
||||
|
||||
if (subWeapon != 0) {
|
||||
g_CurrentEntity->params = subWeapon;
|
||||
g_CurrentEntity->posY.i.hi = player->posY.i.hi + 12;
|
||||
SetStep(7);
|
||||
g_CurrentEntity->velocityY = FIX(-2.5);
|
||||
g_CurrentEntity->animCurFrame = 0;
|
||||
g_CurrentEntity->ext.generic.unk88.S16.unk2 = 5;
|
||||
if (player->facingLeft != 1) {
|
||||
g_CurrentEntity->velocityX = FIX(-2);
|
||||
return;
|
||||
}
|
||||
g_CurrentEntity->velocityX = FIX(2);
|
||||
return;
|
||||
}
|
||||
DestroyEntity(g_CurrentEntity);
|
||||
}
|
||||
|
||||
#include "../collect_heart_vessel.h"
|
||||
|
||||
void CollectLifeVessel(void) {
|
||||
g_api.PlaySfx(SFX_HEART_PICKUP);
|
||||
g_api.func_800FE044(5, 0x8000);
|
||||
DestroyEntity(g_CurrentEntity);
|
||||
}
|
||||
|
||||
void DestroyCurrentEntity(void) { DestroyEntity(g_CurrentEntity); }
|
||||
|
@ -1,411 +0,0 @@
|
||||
#include "no3.h"
|
||||
#include "sfx.h"
|
||||
|
||||
void EntityPrizeDrop(Entity* self) {
|
||||
Collider collider;
|
||||
Primitive* prim;
|
||||
s16 primIndex;
|
||||
s16 var_a2;
|
||||
u16 itemId;
|
||||
s16 temp_a0;
|
||||
|
||||
itemId = self->params & 0x7FFF;
|
||||
if (self->step != 0) {
|
||||
AnimateEntity(D_80182488[itemId], self);
|
||||
}
|
||||
if (self->step - 2 < 3U && self->hitFlags != 0) {
|
||||
self->step = 5;
|
||||
}
|
||||
self->palette = 0;
|
||||
if ((u8)self->unk6D[0] >= 0x18 && !(g_GameTimer & 2) && self->params != 1) {
|
||||
self->palette = 0x815F;
|
||||
}
|
||||
switch (self->step) {
|
||||
case 0:
|
||||
InitializeEntity(g_InitializeData0);
|
||||
self->zPriority = g_unkGraphicsStruct.g_zEntityCenter.unk - 0x14;
|
||||
self->drawMode = DRAW_DEFAULT;
|
||||
if (itemId >= 0x18) {
|
||||
self->params = 0;
|
||||
itemId = 0;
|
||||
}
|
||||
if (itemId > 13 && itemId < 23 &&
|
||||
itemId == D_80182424[g_Status.subWeapon]) {
|
||||
self->params = itemId = 1;
|
||||
}
|
||||
if (itemId == 0 || itemId == 2) {
|
||||
self->hitboxWidth = 4;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
g_api.CheckCollision(self->posX.i.hi, self->posY.i.hi, &collider, 0);
|
||||
if (collider.effects & EFFECT_NOTHROUGH_PLUS) {
|
||||
DestroyEntity(self);
|
||||
} else {
|
||||
self->step++;
|
||||
if (LOH(self->ext.generic.unk94) != 0) {
|
||||
temp_a0 = LOH(self->ext.generic.unk94) - 1;
|
||||
g_unkGraphicsStruct.g_zEntityCenter.S16 =
|
||||
g_unkGraphicsStruct.g_zEntityCenter.S16;
|
||||
g_CastleFlags[(temp_a0 >> 3) + 0x1b0] |= 1 << (temp_a0 & 7);
|
||||
}
|
||||
}
|
||||
if (itemId == 0) {
|
||||
self->ext.generic.unk84.unk = -0x10000;
|
||||
self->ext.generic.unk88.S16.unk0 = 0x800;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (self->velocityY < 0) {
|
||||
g_api.CheckCollision(
|
||||
self->posX.i.hi, self->posY.i.hi - 7, &collider, 0);
|
||||
if (collider.effects & EFFECT_NOTHROUGH) {
|
||||
self->velocityY = 0;
|
||||
}
|
||||
}
|
||||
MoveEntity();
|
||||
g_api.CheckCollision(
|
||||
self->posX.i.hi, self->posY.i.hi + 7, &collider, 0);
|
||||
if (itemId != 0) {
|
||||
if (collider.effects & EFFECT_NOTHROUGH && self->velocityY > 0) {
|
||||
self->velocityX = 0;
|
||||
self->velocityY = 0;
|
||||
self->posY.i.hi += collider.unk18;
|
||||
self->ext.generic.unk80.modeS8.unk0 = 0xF0;
|
||||
self->step++;
|
||||
} else {
|
||||
FallEntity();
|
||||
}
|
||||
CheckFieldCollision(D_801824E8, 2);
|
||||
} else if (collider.effects & EFFECT_NOTHROUGH) {
|
||||
self->posY.i.hi += collider.unk18;
|
||||
self->ext.generic.unk80.modeS8.unk0 = 0x60;
|
||||
self->step++;
|
||||
} else {
|
||||
func_801C6114();
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
func_801C6198(itemId);
|
||||
if (!(self->params & 0x8000) &&
|
||||
--self->ext.generic.unk80.modeS8.unk0 == 0) {
|
||||
self->ext.generic.unk80.modeS8.unk0 = itemId == 0 ? 0x40 : 0x50;
|
||||
self->step++;
|
||||
}
|
||||
break;
|
||||
|
||||
case 4:
|
||||
func_801C6198(itemId);
|
||||
if (--self->ext.generic.unk80.modeS8.unk0) {
|
||||
if (self->ext.generic.unk80.modeS8.unk0 & 2) {
|
||||
self->animCurFrame = 0;
|
||||
}
|
||||
} else {
|
||||
DestroyEntity(self);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case 5:
|
||||
if (itemId == 0 || itemId == 1) {
|
||||
CollectHeart(itemId);
|
||||
} else if (itemId < 12) {
|
||||
CollectGold(itemId);
|
||||
} else if (itemId == 12) {
|
||||
CollectHeartVessel();
|
||||
} else if (itemId < 14) {
|
||||
DestroyCurrentEntity();
|
||||
} else if (itemId < 23) {
|
||||
CollectSubweapon(itemId);
|
||||
} else if (itemId == 23) {
|
||||
CollectLifeVessel();
|
||||
} else {
|
||||
DestroyEntity(self);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case 6:
|
||||
case 7:
|
||||
switch (self->step_s) {
|
||||
case 0:
|
||||
self->animCurFrame = 0;
|
||||
if (itemId > 13 && itemId < 23) {
|
||||
if (itemId == D_80182424[g_Status.subWeapon]) {
|
||||
self->params = itemId = 1;
|
||||
}
|
||||
}
|
||||
primIndex = g_api.AllocPrimitives(PRIM_GT4, 1);
|
||||
if (primIndex != -1) {
|
||||
self->primIndex = primIndex;
|
||||
self->flags |= FLAG_HAS_PRIMS;
|
||||
prim = &g_PrimBuf[primIndex];
|
||||
prim->tpage = 0x1A;
|
||||
prim->clut = 0x170;
|
||||
prim->v2 = prim->v3 = 0x20;
|
||||
prim->u1 = prim->u3 = 0x20;
|
||||
prim->v0 = prim->v1 = 0;
|
||||
prim->u0 = prim->u2 = 0;
|
||||
prim->b0 = prim->b1 = prim->b2 = prim->b3 = 0x80;
|
||||
prim->g0 = prim->g1 = prim->g2 = prim->g3 = 0x80;
|
||||
prim->r0 = prim->r1 = prim->r2 = prim->r3 = 0x80;
|
||||
prim->drawMode = DRAW_HIDE;
|
||||
prim->priority = self->zPriority + 1;
|
||||
self->step_s++;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
MoveEntity();
|
||||
g_api.CheckCollision(
|
||||
self->posX.i.hi, self->posY.i.hi + 7, &collider, 0);
|
||||
if (collider.effects & EFFECT_NOTHROUGH && self->velocityY > 0) {
|
||||
self->velocityX = 0;
|
||||
self->velocityY = 0;
|
||||
self->posY.i.hi += collider.unk18;
|
||||
self->step_s++;
|
||||
} else {
|
||||
FallEntity();
|
||||
}
|
||||
CheckFieldCollision(D_801824E8, 2);
|
||||
self->animCurFrame = 0;
|
||||
if (self->ext.generic.unk88.S16.unk2 != 0) {
|
||||
self->ext.generic.unk88.S16.unk2--;
|
||||
} else {
|
||||
prim = &g_PrimBuf[self->primIndex];
|
||||
prim->x0 = prim->x2 = self->posX.i.hi - 1;
|
||||
prim->x1 = prim->x3 = self->posX.i.hi + 1;
|
||||
prim->y0 = prim->y1 = self->posY.i.hi - 1;
|
||||
prim->y2 = prim->y3 = self->posY.i.hi + 1;
|
||||
prim->drawMode = 0x37;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
func_801C6198(itemId);
|
||||
prim = &g_PrimBuf[self->primIndex];
|
||||
self->ext.generic.unk88.S16.unk2++;
|
||||
if (self->ext.generic.unk88.S16.unk2 < 0x11) {
|
||||
var_a2 = self->ext.generic.unk88.S16.unk2;
|
||||
self->animCurFrame = 0;
|
||||
} else {
|
||||
var_a2 = 0x20 - self->ext.generic.unk88.S16.unk2;
|
||||
prim->r0 = prim->r1 = prim->r2 = prim->r3 = prim->r3 - 8;
|
||||
prim->g0 = prim->g1 = prim->g2 = prim->g3 = prim->g3 - 8;
|
||||
prim->b0 = prim->b1 = prim->b2 = prim->b3 = prim->b3 - 8;
|
||||
}
|
||||
prim->x0 = prim->x2 = self->posX.i.hi - var_a2;
|
||||
prim->x1 = prim->x3 = self->posX.i.hi + var_a2;
|
||||
prim->y0 = prim->y1 = self->posY.i.hi - var_a2;
|
||||
prim->y2 = prim->y3 = self->posY.i.hi + var_a2;
|
||||
if (self->ext.generic.unk88.S16.unk2 == 0x20) {
|
||||
g_api.FreePrimitives(self->primIndex);
|
||||
self->ext.generic.unk80.modeS8.unk0 = 0xD0;
|
||||
self->step = 3;
|
||||
self->step_s = 0;
|
||||
self->flags &= ~FLAG_HAS_PRIMS;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#include "../entity_explosion.h"
|
||||
|
||||
#include "../blink_item.h"
|
||||
|
||||
void EntityEquipItemDrop(Entity* self) {
|
||||
u16 itemId = self->params & 0x7FFF;
|
||||
s32 primIndex;
|
||||
Collider collider;
|
||||
POLY_GT4* poly;
|
||||
s32* itemName;
|
||||
s16 index;
|
||||
s32 vramX;
|
||||
s32 vramY;
|
||||
u8 left;
|
||||
u8 right;
|
||||
u16 top;
|
||||
u8 bottom;
|
||||
u8 temp_v0_6;
|
||||
s16 temp_a0;
|
||||
s32* unk;
|
||||
|
||||
if (((self->step - 2) < 3U) && (self->hitFlags != 0)) {
|
||||
self->step = 5;
|
||||
}
|
||||
|
||||
switch (self->step) {
|
||||
case 0:
|
||||
if (g_PlayableCharacter != PLAYER_ALUCARD) {
|
||||
self->pfnUpdate = EntityPrizeDrop;
|
||||
self->params = 0;
|
||||
self->entityId = 3;
|
||||
SetStep(0);
|
||||
EntityPrizeDrop(self);
|
||||
return;
|
||||
}
|
||||
InitializeEntity(g_InitializeData0);
|
||||
self->ext.generic.unk7C.s = 0;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
g_api.CheckCollision(self->posX.i.hi, self->posY.i.hi, &collider, 0);
|
||||
|
||||
if (!(collider.effects & EFFECT_NOTHROUGH_PLUS)) {
|
||||
for (index = 0; index < 32; index++) {
|
||||
if (g_ItemIconSlots[index] == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (index >= 32) {
|
||||
DestroyEntity(self);
|
||||
return;
|
||||
}
|
||||
|
||||
if (LOH(self->ext.generic.unk94) != 0) {
|
||||
temp_a0 = LOH(self->ext.generic.unk94);
|
||||
temp_a0--;
|
||||
g_CastleFlags[(temp_a0 >> 3) + 0x1b0] |= 1 << (temp_a0 & 7);
|
||||
}
|
||||
|
||||
primIndex = g_api.AllocPrimitives(PRIM_GT4, 1);
|
||||
if (primIndex == -1) {
|
||||
DestroyEntity(self);
|
||||
return;
|
||||
}
|
||||
|
||||
self->flags |= FLAG_HAS_PRIMS;
|
||||
self->primIndex = primIndex;
|
||||
g_ItemIconSlots[index] = 0x1E0;
|
||||
self->ext.generic.unk8C.modeU16.unk0 = index;
|
||||
|
||||
if (itemId < NUM_HAND_ITEMS) {
|
||||
g_api.LoadEquipIcon(g_api.equipDefs[itemId].icon,
|
||||
g_api.equipDefs[itemId].iconPalette, index);
|
||||
} else {
|
||||
itemId -= NUM_HAND_ITEMS;
|
||||
g_api.LoadEquipIcon(
|
||||
g_api.accessoryDefs[itemId].icon,
|
||||
g_api.accessoryDefs[itemId].iconPalette, index);
|
||||
}
|
||||
|
||||
poly = &g_PrimBuf[primIndex];
|
||||
vramX = ((temp_v0_6 = index) & 7) * 0x10;
|
||||
vramY = (temp_v0_6 & 0x18) * 2;
|
||||
|
||||
left = vramX | 1;
|
||||
right = vramX | 0xF;
|
||||
top = 0x81;
|
||||
top = vramY | top;
|
||||
bottom = vramY | 0x8F;
|
||||
|
||||
poly->tpage = 0x1A;
|
||||
poly->v3 = bottom;
|
||||
poly->clut = index + 464;
|
||||
poly->u0 = poly->u2 = left;
|
||||
poly->u1 = poly->u3 = right;
|
||||
poly->v1 = top;
|
||||
poly->v2 = bottom;
|
||||
poly->v0 = top;
|
||||
poly->pad2 = 0x80;
|
||||
poly->pad3 = 6;
|
||||
|
||||
self->ext.generic.unk7C.s = 128;
|
||||
self->step++;
|
||||
break;
|
||||
}
|
||||
DestroyEntity(self);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (self->velocityY < 0) {
|
||||
g_api.CheckCollision(
|
||||
self->posX.i.hi, self->posY.i.hi - 7, &collider, 0);
|
||||
if (collider.effects & EFFECT_NOTHROUGH) {
|
||||
self->velocityY = 0;
|
||||
}
|
||||
}
|
||||
|
||||
MoveEntity();
|
||||
|
||||
g_api.CheckCollision(
|
||||
self->posX.i.hi, self->posY.i.hi + 7, &collider, 0);
|
||||
|
||||
if ((collider.effects & EFFECT_NOTHROUGH) && (self->velocityY > 0)) {
|
||||
self->velocityX = 0;
|
||||
self->velocityY = 0;
|
||||
self->posY.i.hi += collider.unk18;
|
||||
self->ext.generic.unk80.modeS8.unk0 = 240;
|
||||
self->step++;
|
||||
} else {
|
||||
FallEntity();
|
||||
}
|
||||
|
||||
CheckFieldCollision(D_801824E8, 2);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
func_801C6198(1);
|
||||
if (!(self->params & 0x8000)) {
|
||||
if (!(--self->ext.generic.unk80.modeS8.unk0 & 255)) {
|
||||
self->ext.generic.unk80.modeS8.unk0 = 0x50;
|
||||
self->step++;
|
||||
}
|
||||
} else {
|
||||
g_ItemIconSlots[self->ext.generic.unk8C.modeS16.unk0] = 0x10;
|
||||
}
|
||||
break;
|
||||
|
||||
case 4:
|
||||
func_801C6198(1);
|
||||
if (self->ext.generic.unk80.modeS8.unk0 += 255) {
|
||||
poly = &g_PrimBuf[self->primIndex];
|
||||
if (self->ext.generic.unk80.modeS8.unk0 & 2) {
|
||||
poly->pad3 = 8;
|
||||
} else {
|
||||
poly->pad3 = 2;
|
||||
}
|
||||
} else {
|
||||
DestroyEntity(self);
|
||||
}
|
||||
break;
|
||||
|
||||
case 5:
|
||||
unk = &g_unkGraphicsStruct.BottomCornerTextTimer;
|
||||
if (*unk != 0) {
|
||||
g_api.FreePrimitives(g_unkGraphicsStruct.BottomCornerTextPrims);
|
||||
*unk = 0;
|
||||
}
|
||||
|
||||
g_api.PlaySfx(SFX_ITEM_PICKUP);
|
||||
|
||||
if (itemId < NUM_HAND_ITEMS) {
|
||||
itemName = g_api.equipDefs[itemId].name;
|
||||
g_api.AddToInventory(itemId, EQUIP_HAND);
|
||||
} else {
|
||||
itemId -= NUM_HAND_ITEMS;
|
||||
itemName = g_api.accessoryDefs[itemId].name;
|
||||
g_api.AddToInventory(itemId, EQUIP_ARMOR);
|
||||
}
|
||||
|
||||
BottomCornerText(itemName, 1);
|
||||
DestroyEntity(self);
|
||||
break;
|
||||
}
|
||||
|
||||
if (self->step >= 2) {
|
||||
if (self->ext.generic.unk7C.u != 0) {
|
||||
self->ext.generic.unk7C.u--;
|
||||
}
|
||||
BlinkItem(self, self->ext.generic.unk7C.u);
|
||||
}
|
||||
}
|
||||
|
||||
#include "../blit_char.h"
|
1
src/st/no3/blit_char.c
Normal file
1
src/st/no3/blit_char.c
Normal file
@ -0,0 +1 @@
|
||||
#include "../blit_char.h"
|
@ -1,10 +1,7 @@
|
||||
#include <game.h>
|
||||
#include <common.h>
|
||||
|
||||
STATIC_PAD_BSS(3072);
|
||||
|
||||
u32 D_801D70B0[24];
|
||||
u32 g_LayoutObjHorizontal;
|
||||
u32 g_LayoutObjVertical;
|
||||
u8 g_LayoutObjPosHorizontal[4];
|
||||
u8 g_LayoutObjPosVertical[3076];
|
||||
u32 D_801D7D20;
|
||||
u32 g_Dialogue;
|
||||
u16 D_801D7D28;
|
||||
@ -32,4 +29,3 @@ u16 D_801D7D62;
|
||||
u32 D_801D7D64[27];
|
||||
u32 D_801D7DD0;
|
||||
u32 D_801D7DD4;
|
||||
u16 g_ItemIconSlots[ICON_SLOT_NUM];
|
||||
|
@ -1 +1,5 @@
|
||||
#include <common.h>
|
||||
|
||||
STATIC_PAD_BSS(96);
|
||||
|
||||
#include "../create_entity.h"
|
||||
|
1
src/st/no3/e_collect.c
Normal file
1
src/st/no3/e_collect.c
Normal file
@ -0,0 +1 @@
|
||||
#include "../e_collect.h"
|
@ -215,7 +215,6 @@ extern s32 D_801D7D20;
|
||||
extern s32 D_801D7D54;
|
||||
extern s32 D_801D7D58;
|
||||
extern u32 D_801D7DD0;
|
||||
extern u16 g_ItemIconSlots[0x20];
|
||||
|
||||
extern PfnEntityUpdate PfnEntityUpdates[];
|
||||
|
||||
|
@ -35,6 +35,13 @@ void func_801CD620(Entity* self) {
|
||||
}
|
||||
}
|
||||
|
||||
static s32 D_801D3378;
|
||||
static s32 D_801D337C;
|
||||
static s32 D_801D3380;
|
||||
static s32 D_801D3384;
|
||||
static s32 D_801D3388;
|
||||
STATIC_PAD_BSS(104);
|
||||
|
||||
void func_801CD658(void) {
|
||||
g_CurrentBuffer = g_CurrentBuffer->next;
|
||||
FntPrint("a:%x\n", D_801D3378);
|
||||
|
@ -1,12 +1,3 @@
|
||||
#include <game.h>
|
||||
#include <common.h>
|
||||
|
||||
u32 g_LayoutObjHorizontal;
|
||||
u32 g_LayoutObjVertical;
|
||||
u8 g_LayoutObjPosHorizontal[4];
|
||||
u8 g_LayoutObjPosVertical[3076];
|
||||
u32 D_801D3378;
|
||||
u32 D_801D337C;
|
||||
u32 D_801D3380;
|
||||
u32 D_801D3384;
|
||||
u32 D_801D3388[27];
|
||||
u16 g_ItemIconSlots[ICON_SLOT_NUM];
|
||||
STATIC_PAD_BSS(3072);
|
||||
|
@ -331,6 +331,8 @@ void EntityPrizeDrop(Entity* self) {
|
||||
|
||||
#include "../blink_item.h"
|
||||
|
||||
static u16 g_ItemIconSlots[ICON_SLOT_NUM];
|
||||
|
||||
void EntityEquipItemDrop(Entity* self) {
|
||||
u16 itemId = self->params & 0x7FFF;
|
||||
s32 primIndex;
|
||||
|
@ -268,11 +268,6 @@ extern s32 D_80182530;
|
||||
// *** EntityBloodyZombie properties START ***
|
||||
|
||||
extern u16 D_80180B38[]; // InitProps
|
||||
extern s32 D_801D3378;
|
||||
extern s32 D_801D337C;
|
||||
extern s32 D_801D3380;
|
||||
extern s32 D_801D3384;
|
||||
extern s32 D_801D3388;
|
||||
extern s32 D_801825D4;
|
||||
extern u16 D_801825E4[];
|
||||
extern u8 D_801825EC[]; // Animation: Walking
|
||||
|
@ -1,10 +1,6 @@
|
||||
#include <game.h>
|
||||
#include <common.h>
|
||||
|
||||
u32 D_801CAA14[24];
|
||||
u32 g_LayoutObjHorizontal;
|
||||
u32 g_LayoutObjVertical;
|
||||
u8 g_LayoutObjPosHorizontal[4];
|
||||
u8 g_LayoutObjPosVertical[3076];
|
||||
STATIC_PAD_BSS(3072);
|
||||
u32 D_801CB684;
|
||||
u32 g_Dialogue;
|
||||
u16 D_801CB68C;
|
||||
@ -33,4 +29,3 @@ u32 D_801CB6C8[27];
|
||||
u16 g_mariaCutsceneFlags;
|
||||
u16 D_801CB736[3];
|
||||
u32 D_801CB73C;
|
||||
u16 g_ItemIconSlots[ICON_SLOT_NUM];
|
||||
|
@ -1 +1,5 @@
|
||||
#include <types.h>
|
||||
|
||||
u32 D_801CAA14[24];
|
||||
|
||||
#include "../create_entity.h"
|
||||
|
@ -1,9 +1,3 @@
|
||||
#include <game.h>
|
||||
#include <common.h>
|
||||
|
||||
u16* g_LayoutObjHorizontal;
|
||||
u16* g_LayoutObjVertical;
|
||||
s8 g_LayoutObjPosHorizontal;
|
||||
static u8 pad0[3];
|
||||
s8 g_LayoutObjPosVertical;
|
||||
static u8 pad1[0xC6B];
|
||||
u16 g_ItemIconSlots[ICON_SLOT_NUM];
|
||||
STATIC_PAD_BSS(0xC68);
|
||||
|
@ -6,6 +6,8 @@ extern u16 g_InitializeData0[];
|
||||
extern u8* D_80181D18[];
|
||||
extern u16 D_80181D74[];
|
||||
|
||||
static u16 g_ItemIconSlots[ICON_SLOT_NUM];
|
||||
|
||||
// if self->params & 0x8000 then the item will not disappear
|
||||
// self->ext.generic.unk80.modeS8.unk0: frames left before the prize disappear
|
||||
void EntityPrizeDrop(Entity* self) {
|
||||
|
@ -1,18 +1,5 @@
|
||||
#include "common.h"
|
||||
#include <types.h>
|
||||
|
||||
u32 D_801BEB00[25];
|
||||
u32 D_801BEB64;
|
||||
u32 D_801BEB68[165];
|
||||
u32 D_801BEDFC;
|
||||
u32 D_801BEE00;
|
||||
u32 D_801BEE04;
|
||||
u16 D_801BEE08[2];
|
||||
u16 D_801BEE0C[66];
|
||||
u16 D_801BEE90[2312];
|
||||
u32 g_LayoutObjHorizontal;
|
||||
u32 g_LayoutObjVertical;
|
||||
u8 g_LayoutObjPosHorizontal[4];
|
||||
u8 g_LayoutObjPosVertical[4];
|
||||
u16 D_801C00B0[768];
|
||||
u32 D_801C06B0[4];
|
||||
u32 D_801C06C0[1346];
|
||||
@ -49,4 +36,3 @@ u32 D_801C250C[27];
|
||||
u32 D_801C2578;
|
||||
u32 D_801C257C;
|
||||
u32 D_801C2580;
|
||||
u16 g_ItemIconSlots[32];
|
||||
|
@ -1 +1,13 @@
|
||||
#include <types.h>
|
||||
|
||||
u32 D_801BEB00[25];
|
||||
u32 D_801BEB64;
|
||||
u32 D_801BEB68[165];
|
||||
u32 D_801BEDFC;
|
||||
u32 D_801BEE00;
|
||||
u32 D_801BEE04;
|
||||
u16 D_801BEE08[2];
|
||||
u16 D_801BEE0C[66];
|
||||
u16 D_801BEE90[2312];
|
||||
|
||||
#include "../create_entity.h"
|
||||
|
@ -16,21 +16,4 @@
|
||||
#define LAYOUT_OBJ_SLOT 3
|
||||
#define LAYOUT_OBJ_PARAMS 4
|
||||
|
||||
/*
|
||||
* A pointer to the current element in `g_pStObjLayoutHorizontal`
|
||||
*/
|
||||
extern u16* g_LayoutObjHorizontal;
|
||||
/*
|
||||
* A pointer to the current element in `g_pStObjLayoutVertical`
|
||||
*/
|
||||
extern u16* g_LayoutObjVertical;
|
||||
/*
|
||||
* The direction last traversed in `g_pStObjLayoutHorizontal`
|
||||
*/
|
||||
extern u8 g_LayoutObjPosHorizontal;
|
||||
/*
|
||||
* The direction last traversed in `g_pStObjLayoutVertical``
|
||||
*/
|
||||
extern u8 g_LayoutObjPosVertical;
|
||||
|
||||
#endif // ST_PRIVATE_H
|
||||
|
@ -1,11 +1,4 @@
|
||||
#include <game.h>
|
||||
#include <common.h>
|
||||
|
||||
u16* g_LayoutObjHorizontal;
|
||||
u16* g_LayoutObjVertical;
|
||||
s8 g_LayoutObjPosHorizontal;
|
||||
static u8 pad0[3];
|
||||
s8 g_LayoutObjPosVertical;
|
||||
static u8 pad1[3];
|
||||
u16 D_801997E8[0x600];
|
||||
static s32 pad2[0x1A];
|
||||
u16 g_ItemIconSlots[ICON_SLOT_NUM];
|
||||
STATIC_PAD_BSS(104);
|
||||
|
@ -40,10 +40,4 @@ s32 D_psp_0924BC68;
|
||||
s32 D_psp_0924BC60;
|
||||
|
||||
// st_update.c
|
||||
u16 g_ItemIconSlots[0x20];
|
||||
|
||||
// create_entity.c
|
||||
u16* g_LayoutObjHorizontal;
|
||||
u16* g_LayoutObjVertical;
|
||||
u8 g_LayoutObjPosHorizontal;
|
||||
u8 g_LayoutObjPosVertical;
|
||||
// u16 g_ItemIconSlots[0x20];
|
||||
|
@ -1,5 +1,10 @@
|
||||
#include "../wrp/wrp.h"
|
||||
|
||||
static u16* g_LayoutObjHorizontal;
|
||||
static u16* g_LayoutObjVertical;
|
||||
static u8 g_LayoutObjPosHorizontal;
|
||||
static u8 g_LayoutObjPosVertical;
|
||||
|
||||
#include "../st_private.h"
|
||||
|
||||
#include "../create_entity_from_layout.h"
|
||||
|
@ -495,4 +495,6 @@ void EntityPrizeDrop(Entity* self) {
|
||||
|
||||
#include "../blink_item.h"
|
||||
|
||||
u16 g_ItemIconSlots[ICON_SLOT_NUM];
|
||||
|
||||
INCLUDE_ASM("st/wrp_psp/psp/wrp_psp/e_collect", EntityEquipItemDrop);
|
||||
|
Loading…
Reference in New Issue
Block a user