mirror of
https://github.com/zeldaret/ss
synced 2026-05-26 07:38:54 -04:00
c235e32d95
* mostly done * Update d_t_tumble_weed.cpp * remove cM::calcTimer * just regswap on adjustSpeed * Create inlines for angle between vectors * name data symbols --------- Co-authored-by: robojumper <robojumper@gmail.com>
169 lines
4.2 KiB
C++
169 lines
4.2 KiB
C++
#ifndef D_BG_PC_H
|
|
#define D_BG_PC_H
|
|
|
|
#include "common.h"
|
|
|
|
struct sBgPc { // Size: 0x14
|
|
/* 0x00 */ u32 code0;
|
|
/* 0x04 */ u32 code1;
|
|
/* 0x08 */ u32 code2; // Always 0xFFFF_FF00
|
|
/* 0x0C */ u32 code3; // Only 0x0000_03FF used
|
|
/* 0x10 */ u32 code4; // Always 0x0000_0000
|
|
};
|
|
|
|
enum dBgPc_ECode {
|
|
/* 0x00004000 */ CODE_OBJ_THRU = 0x4000,
|
|
/* 0x00008000 */ CODE_CAM_THRU = 0x8000,
|
|
/* 0x00010000 */ CODE_LINK_THRU = 0x10000,
|
|
/* 0x00020000 */ CODE_ARROW_THRU = 0x20000,
|
|
/* 0x00040000 */ CODE_SLINGSHOT_THRU = 0x40000,
|
|
/* 0x00080000 */ CODE_BEETLE_THRU = 0x80000,
|
|
/* 0x00100000 */ CODE_CLAWSHOT_THRU = 0x100000,
|
|
/* 0x00200000 */ CODE_TARGET_THRU = 0x200000,
|
|
/* 0x00400000 */ CODE_SHDW_THRU = 0x400000,
|
|
/* 0x00800000 */ CODE_BOMB_THRU = 0x800000,
|
|
/* 0x01000000 */ CODE_WHIP_THRU = 0x1000000,
|
|
/* 0x40000000 */ CODE_UNDERWATER_ROOF = 0x40000000,
|
|
/* 0x80000000 */ CODE_UNUSED_8000_0000 = 0x80000000,
|
|
};
|
|
|
|
enum dBgPc_Attribute {
|
|
POLY_ATTR_NORMAL = 0,
|
|
POLY_ATTR_SLOPE = 1,
|
|
POLY_ATTR_LAVA = 7,
|
|
POLY_ATTR_SAND_SHALLOW = 9,
|
|
POLY_ATTR_SAND_MED = 10,
|
|
POLY_ATTR_SAND_DEEP_INSTANT = 11,
|
|
POLY_ATTR_WATER = 12,
|
|
POLY_ATTR_DAMAGE = 13,
|
|
POLY_ATTR_SLOPE_RUN = 15,
|
|
POLY_ATTR_SAND_DEEP_SLOW = 16,
|
|
};
|
|
class dBgPc {
|
|
public:
|
|
void setCode(sBgPc &);
|
|
bool getWtr() const;
|
|
|
|
u32 getObjThrough() {
|
|
return m_code.code0 & CODE_OBJ_THRU;
|
|
}
|
|
u32 getCamThrough() {
|
|
return m_code.code0 & CODE_CAM_THRU;
|
|
}
|
|
u32 getLinkThrough() {
|
|
return m_code.code0 & CODE_LINK_THRU;
|
|
}
|
|
u32 getObjThrough() const {
|
|
return m_code.code0 & CODE_OBJ_THRU;
|
|
}
|
|
u32 getCamThrough() const {
|
|
return m_code.code0 & CODE_CAM_THRU;
|
|
}
|
|
u32 getLinkThrough() const {
|
|
return m_code.code0 & CODE_LINK_THRU;
|
|
}
|
|
u32 getArrowThrough() const {
|
|
return m_code.code0 & CODE_ARROW_THRU;
|
|
}
|
|
u32 getClawshotThrough() const {
|
|
return m_code.code0 & CODE_CLAWSHOT_THRU;
|
|
}
|
|
u32 getSlingshotThrough() const {
|
|
return m_code.code0 & CODE_SLINGSHOT_THRU;
|
|
}
|
|
u32 getBeetleThrough() const {
|
|
return m_code.code0 & CODE_BEETLE_THRU;
|
|
}
|
|
bool getTargetThrough() const {
|
|
return m_code.code0 & CODE_TARGET_THRU;
|
|
}
|
|
bool getShdwThrough() const {
|
|
return m_code.code0 & CODE_SHDW_THRU;
|
|
}
|
|
u32 getBombThrough() const {
|
|
return m_code.code0 & CODE_BOMB_THRU;
|
|
}
|
|
u32 getWhipThrough() const {
|
|
return m_code.code0 & CODE_WHIP_THRU;
|
|
}
|
|
u32 getUnderwaterRoof() const {
|
|
return m_code.code0 & CODE_UNDERWATER_ROOF;
|
|
}
|
|
bool getCode0_0x80000000() const {
|
|
return m_code.code0 & CODE_UNUSED_8000_0000;
|
|
}
|
|
|
|
s32 getWallCode() const {
|
|
return m_code.code1 >> 0x8 & 0xF;
|
|
}
|
|
u32 getCode1_0x02000000() const {
|
|
return m_code.code1 & 0x02000000;
|
|
}
|
|
u32 getCode1_0x04000000() const {
|
|
return m_code.code1 & 0x04000000;
|
|
}
|
|
u32 getCode1_0x08000000() const {
|
|
return m_code.code1 & 0x08000000;
|
|
}
|
|
|
|
u32 getGroundCode() const {
|
|
return m_code.code1 >> 20 & 0x1F;
|
|
}
|
|
u32 getLightingCode() const {
|
|
return m_code.code1 >> 28;
|
|
}
|
|
u32 getSpecialCode() const {
|
|
return m_code.code3 & 0x1F;
|
|
}
|
|
|
|
u32 getAtt0Code() const {
|
|
return m_code.code3 >> 5 & 0x3F;
|
|
}
|
|
u32 getAtt1Code() const {
|
|
return m_code.code1 >> 17 & 0x7;
|
|
}
|
|
|
|
u8 getGrpRoomIdx() const {
|
|
return m_code.code0 & 0x3F;
|
|
}
|
|
|
|
u8 getExitId() const {
|
|
return m_code.code0 >> 6;
|
|
}
|
|
|
|
u32 getCode0_0x30000000() const {
|
|
return m_code.code0 >> 0x1C & 3;
|
|
}
|
|
|
|
u8 getLinkNo() const {
|
|
return m_code.code1;
|
|
}
|
|
|
|
u8 getCamMoveBG() const {
|
|
return m_code.code2;
|
|
}
|
|
u8 getRoomCam() const {
|
|
return m_code.code2 >> 8;
|
|
}
|
|
u8 getRoomPath() const {
|
|
return m_code.code2 >> 0x10;
|
|
}
|
|
u8 getRoomPathPnt() const {
|
|
return m_code.code2 >> 0x18;
|
|
}
|
|
|
|
u8 getRoomInf() const {
|
|
return m_code.code4;
|
|
}
|
|
u8 getSnd() const {
|
|
return m_code.code4 >> 0xB;
|
|
}
|
|
u32 maskNrm() {
|
|
return m_code.code4 & 0x100;
|
|
}
|
|
|
|
/* 0x0 */ sBgPc m_code;
|
|
};
|
|
|
|
#endif
|