SURFACETYPE0/1 getter macros

This commit is contained in:
Dragorn421
2022-06-21 11:48:48 +02:00
parent 5dda2f9ffc
commit e61cccf2e6
2 changed files with 103 additions and 21 deletions
+85 -3
View File
@@ -87,11 +87,93 @@ typedef struct {
// 0x0000_00FF = BgCam Index
} WaterBox; // size = 0x10
// SurfaceType.data[0]
#define SURFACETYPE0_BGCAMINDEX_SHIFT 0
#define SURFACETYPE0_BGCAMINDEX_MASK 0x000000FF
#define SURFACETYPE0_BGCAMINDEX(data0) \
(((data0) >> SURFACETYPE0_BGCAMINDEX_SHIFT) & (SURFACETYPE0_BGCAMINDEX_MASK >> SURFACETYPE0_BGCAMINDEX_SHIFT))
#define SURFACETYPE0_SCENEEXITINDEX_SHIFT 8
#define SURFACETYPE0_SCENEEXITINDEX_MASK 0x00001F00
#define SURFACETYPE0_SCENEEXITINDEX(data0) \
(((data0) >> SURFACETYPE0_SCENEEXITINDEX_SHIFT) & \
(SURFACETYPE0_SCENEEXITINDEX_MASK >> SURFACETYPE0_SCENEEXITINDEX_SHIFT))
#define SURFACETYPE0_13_SHIFT 13
#define SURFACETYPE0_13_MASK 0x0003E000
#define SURFACETYPE0_13(data0) (((data0) >> SURFACETYPE0_13_SHIFT) & (SURFACETYPE0_13_MASK >> SURFACETYPE0_13_SHIFT))
#define SURFACETYPE0_18_SHIFT 18
#define SURFACETYPE0_18_MASK 0x001C0000
#define SURFACETYPE0_18(data0) (((data0) >> SURFACETYPE0_18_SHIFT) & (SURFACETYPE0_18_MASK >> SURFACETYPE0_18_SHIFT))
#define SURFACETYPE0_21_SHIFT 21
#define SURFACETYPE0_21_MASK 0x03E00000
#define SURFACETYPE0_21(data0) (((data0) >> SURFACETYPE0_21_SHIFT) & (SURFACETYPE0_21_MASK >> SURFACETYPE0_21_SHIFT))
#define SURFACETYPE0_FLOORPROPERTY_SHIFT 26
#define SURFACETYPE0_FLOORPROPERTY_MASK 0x3C000000
#define SURFACETYPE0_FLOORPROPERTY(data0) \
(((data0) >> SURFACETYPE0_FLOORPROPERTY_SHIFT) & \
(SURFACETYPE0_FLOORPROPERTY_MASK >> SURFACETYPE0_FLOORPROPERTY_SHIFT))
#define SURFACETYPE0_30_SHIFT 30
#define SURFACETYPE0_30_MASK 0x40000000
#define SURFACETYPE0_30(data0) (((data0) >> SURFACETYPE0_30_SHIFT) & (SURFACETYPE0_30_MASK >> SURFACETYPE0_30_SHIFT))
#define SURFACETYPE0_ISHORSEBLOCKED_SHIFT 31
#define SURFACETYPE0_ISHORSEBLOCKED_MASK 0x80000000
#define SURFACETYPE0_ISHORSEBLOCKED(data0) \
(((data0) >> SURFACETYPE0_ISHORSEBLOCKED_SHIFT) & \
(SURFACETYPE0_ISHORSEBLOCKED_MASK >> SURFACETYPE0_ISHORSEBLOCKED_SHIFT))
// SurfaceType.data[1]
#define SURFACETYPE1_0_SHIFT 0
#define SURFACETYPE1_0_MASK 0x0000000F
#define SURFACETYPE1_0(data1) (((data1) >> SURFACETYPE1_0_SHIFT) & (SURFACETYPE1_0_MASK >> SURFACETYPE1_0_SHIFT))
#define SURFACETYPE1_SLOPE_SHIFT 4
#define SURFACETYPE1_SLOPE_MASK 0x00000030
#define SURFACETYPE1_SLOPE(data1) \
(((data1) >> SURFACETYPE1_SLOPE_SHIFT) & (SURFACETYPE1_SLOPE_MASK >> SURFACETYPE1_SLOPE_SHIFT))
#define SURFACETYPE1_LIGHTSETTINGINDEX_SHIFT 6
#define SURFACETYPE1_LIGHTSETTINGINDEX_MASK 0x000007C0
#define SURFACETYPE1_LIGHTSETTINGINDEX(data1) \
(((data1) >> SURFACETYPE1_LIGHTSETTINGINDEX_SHIFT) & \
(SURFACETYPE1_LIGHTSETTINGINDEX_MASK >> SURFACETYPE1_LIGHTSETTINGINDEX_SHIFT))
#define SURFACETYPE1_ECHO_SHIFT 11
#define SURFACETYPE1_ECHO_MASK 0x0001F800
#define SURFACETYPE1_ECHO(data1) \
(((data1) >> SURFACETYPE1_ECHO_SHIFT) & (SURFACETYPE1_ECHO_MASK >> SURFACETYPE1_ECHO_SHIFT))
#define SURFACETYPE1_ISHOOKSHOTSURFACE_SHIFT 17
#define SURFACETYPE1_ISHOOKSHOTSURFACE_MASK 0x00020000
#define SURFACETYPE1_ISHOOKSHOTSURFACE(data1) \
(((data1) >> SURFACETYPE1_ISHOOKSHOTSURFACE_SHIFT) & \
(SURFACETYPE1_ISHOOKSHOTSURFACE_MASK >> SURFACETYPE1_ISHOOKSHOTSURFACE_SHIFT))
#define SURFACETYPE1_CONVEYORSPEED_SHIFT 18
#define SURFACETYPE1_CONVEYORSPEED_MASK 0x001C0000
#define SURFACETYPE1_CONVEYORSPEED(data1) \
(((data1) >> SURFACETYPE1_CONVEYORSPEED_SHIFT) & \
(SURFACETYPE1_CONVEYORSPEED_MASK >> SURFACETYPE1_CONVEYORSPEED_SHIFT))
#define SURFACETYPE1_CONVEYORDIRECTION_SHIFT 21
#define SURFACETYPE1_CONVEYORDIRECTION_MASK 0x07E00000
#define SURFACETYPE1_CONVEYORDIRECTION(data1) \
(((data1) >> SURFACETYPE1_CONVEYORDIRECTION_SHIFT) & \
(SURFACETYPE1_CONVEYORDIRECTION_MASK >> SURFACETYPE1_CONVEYORDIRECTION_SHIFT))
#define SURFACETYPE1_WALLDAMAGE_SHIFT 27
#define SURFACETYPE1_WALLDAMAGE_FLAG (1 << SURFACETYPE1_WALLDAMAGE_SHIFT)
#define SURFACETYPE1_WALLDAMAGE(data1) ((data1) & SURFACETYPE1_WALLDAMAGE_FLAG ? true : false)
typedef struct {
u32 data[2];
// Type 1
// 0x0800_0000 = wall damage
} SurfaceType;
typedef struct {