diff options
| author | octorock <79596758+octorock@users.noreply.github.com> | 2022-09-05 22:50:19 +0200 |
|---|---|---|
| committer | anonymous <> | 2022-10-08 22:32:54 +0200 |
| commit | 67467fd831d2928715835f8a389b4f464a0f9a7a (patch) | |
| tree | 261864c07f334c35024033a908b4af8e808caebe /include/kinstone.h | |
| parent | 756a8a89da46dade06fad1723de88fa5a82cc2ec (diff) | |
Extract some data
And split up subtasks and world events.
Diffstat (limited to 'include/kinstone.h')
| -rw-r--r-- | include/kinstone.h | 92 |
1 files changed, 84 insertions, 8 deletions
diff --git a/include/kinstone.h b/include/kinstone.h index 663b5347..f8073cf4 100644 --- a/include/kinstone.h +++ b/include/kinstone.h @@ -10,7 +10,7 @@ typedef struct { u8 _0; u8 action; u8 _2; - u8 _3; + u8 kinstoneId; u8 prevUpdatePriority; u8 _5; u16 textIndex; @@ -22,16 +22,17 @@ static_assert(sizeof(FuseInfo) == 0x10); extern FuseInfo gFuseInfo; typedef struct { - u8 unk0; + u8 objPalette; u8 unk1; u8 unk2; - u8 unk3; - u8 evt_type; + u8 subtask; // SUBTASK_WORLDEVENT or 0 + u8 worldEventId; u8 unk5; u8 unk6; - u8 unk7; -} struct_080C9CBC; -extern const struct_080C9CBC gUnk_080C9CBC[]; + u8 unk7; // TODO flag if it shows a map hint? +} KinstoneWorldEvent; +// Indexed by kinstoneId +extern const KinstoneWorldEvent gKinstoneWorldEvents[]; typedef enum { KINSTONE_0, @@ -130,7 +131,7 @@ typedef enum { KINSTONE_5D, KINSTONE_5E, KINSTONE_5F, -} KinstoneFlag; +} KinstoneId; typedef struct { u8 unk0; /**< Bank or 0xfd or 0xfe or 0xff */ @@ -139,4 +140,79 @@ typedef struct { u8 unk3; /**< Offset on the gfx id? */ } struct_gUnk_080B3D20; +enum { + WORLD_EVENT_0, + WORLD_EVENT_1, + WORLD_EVENT_2, + WORLD_EVENT_3, + WORLD_EVENT_4, + WORLD_EVENT_5, + // TODO add all and use them in gKinstoneWorldEvents +} worldEventId; + +enum { + CND_0, + /**< Always false. */ // CND_FALSE + CND_1, // local flag // CND_FLAG + CND_2, // f CND_INVENTORY != 0 + CND_3, // 0x10 CND_INVENTORY == 1 + CND_4, // 0x11 CND_INVENTORY == 2 + CND_5, // SORA_10_H00 + CND_6, // SORA_11_H00 + CND_7, // SORA_12_T00 + CND_8, // SORA_13_H00 + CND_9, // SORA_14_T00 + CND_10, // KS_B15 +} WorldEvent_Condition; + +enum { + WORLD_EVENT_TYPE_0, // Does nothing + WORLD_EVENT_TYPE_1, // LoadRoomEntity after checking GlobalFlag + WORLD_EVENT_TYPE_2, // sub_08018BB4 + WORLD_EVENT_TYPE_3, // LoadRoomEntity after checking InventoryValue + WORLD_EVENT_TYPE_4, // sub_08018A58 + WORLD_EVENT_TYPE_5, // sub_08018B50 + WORLD_EVENT_TYPE_6, // sub_08018AB4 + WORLD_EVENT_TYPE_7, // LoadRoomEntity or sub_080189EC + WORLD_EVENT_TYPE_8, // set a tile type + WORLD_EVENT_TYPE_9, // LoadRoomEntity and set some tile type + WORLD_EVENT_TYPE_BEANSTALK, + WORLD_EVENT_TYPE_11, // LoadRoomEntity and set gRoomVars.field_0x8c + WORLD_EVENT_TYPE_12, + WORLD_EVENT_TYPE_13, + WORLD_EVENT_TYPE_14, + WORLD_EVENT_TYPE_15, // Load different room entity depending on if fused + WORLD_EVENT_TYPE_16, + WORLD_EVENT_TYPE_17, // Set local flag, LoadroomEntityList + WORLD_EVENT_TYPE_18, + WORLD_EVENT_TYPE_19, + WORLD_EVENT_TYPE_20, + WORLD_EVENT_TYPE_21, + WORLD_EVENT_TYPE_22, + WORLD_EVENT_TYPE_23, + WORLD_EVENT_TYPE_24, // LoadRoomEntityList + WORLD_EVENT_TYPE_25, // LoadRoomEntity, set type depending of if kinstone is fused + // The following do nothing. + WORLD_EVENT_TYPE_26, + WORLD_EVENT_TYPE_27, + WORLD_EVENT_TYPE_28 +} WorldEventType; + +typedef struct { + u8 type; + u8 entity_idx; + u8 area; + u8 room; + u16 offsetX; /**< Scroll offset X from the room origin. */ + u16 offsetY; /**< Scroll offset Y from the room origin. */ + u16 x; /**< X position of the actual event. */ + u16 y; /**< Y position of the actual event. */ + u16 _c; // see sub_080A6A80, related to _0 and _2 of gUnk_08127F94 + u16 _e; // see sub_080A6A80, related to _1 and _3 of gUnk_08127F94 + u8 condition; // TODO some sort of flag determining what type the bank&flag are? see sub_0801E8D4 + u8 bank; /**< @see LocalBanks */ + u16 flag; +} WorldEvent; +extern const WorldEvent gWorldEvents[]; + #endif // KINSTONE_H |
