Files
ss/include/d/col/bg/d_bg_pc.h
T
Elijah Thomas c235e32d95 d_a_obj_tumble_weed mostly done (#88)
* 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>
2024-11-06 16:36:17 -05:00

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