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 /src/kinstone.c | |
| parent | 756a8a89da46dade06fad1723de88fa5a82cc2ec (diff) | |
Extract some data
And split up subtasks and world events.
Diffstat (limited to 'src/kinstone.c')
| -rw-r--r-- | src/kinstone.c | 143 |
1 files changed, 72 insertions, 71 deletions
diff --git a/src/kinstone.c b/src/kinstone.c index 043f6623..1be80aa3 100644 --- a/src/kinstone.c +++ b/src/kinstone.c @@ -25,12 +25,12 @@ extern const EntityData gUnk_080FEE58[]; extern const void* gUnk_080FED98[]; void sub_08018AB4(int); -void sub_08018BB4(int); -void sub_08018A58(int); -void sub_08018B50(int); -void sub_080189EC(int); -void sub_0801876C(int, int); -void sub_08018738(u32, int); +void sub_08018BB4(u32 worldEventId); +void sub_08018A58(u32 worldEventId); +void sub_08018B50(u32 worldEventId); +void sub_080189EC(u32 worldEventId); +void sub_0801876C(u32 worldEventId, bool32 isKinstoneFused); +void sub_08018738(u32 kinstoneId, u32 worldEventId); void ShuffleEzloHints(int count, u16* basePtr); void sub_08018500(); bool32 sub_080185B4(const struct_gUnk_080B3D20* param_1); @@ -239,60 +239,60 @@ void sub_080186D4(void) { } void sub_080186EC(u32 param_1) { - const struct_080C9CBC* psVar1; + const KinstoneWorldEvent* psVar1; u32 i; - for (i = 0, psVar1 = gUnk_080C9CBC; i <= 100; psVar1++, i++) { - if (psVar1->unk3 == 8) { - sub_08018738(i, psVar1->evt_type); + for (i = 0, psVar1 = gKinstoneWorldEvents; i <= 100; psVar1++, i++) { + if (psVar1->subtask == SUBTASK_WORLDEVENT) { + sub_08018738(i, psVar1->worldEventId); } } } -void sub_08018710(u32 param_1) { - const struct_080C9CBC* psVar1; +void sub_08018710(u32 previousworldEventId) { + const KinstoneWorldEvent* psVar1; u32 i; - for (i = 0, psVar1 = gUnk_080C9CBC; i <= 100; psVar1++, i++) { - if (psVar1->unk3 == 8 && param_1 != psVar1->evt_type) { - sub_08018738(i, psVar1->evt_type); + for (i = 0, psVar1 = gKinstoneWorldEvents; i <= 100; psVar1++, i++) { + if (psVar1->subtask == SUBTASK_WORLDEVENT && previousworldEventId != psVar1->worldEventId) { + sub_08018738(i, psVar1->worldEventId); } } } -void sub_08018738(u32 param_1, int param_2) { - struct_080FE320* ptr = &gUnk_080FE320[param_2]; +void sub_08018738(u32 kinstoneId, u32 worldEventId) { + const WorldEvent* ptr = &gWorldEvents[worldEventId]; if (ptr->area == gRoomControls.area && ptr->room == gRoomControls.room) { - sub_0801876C(param_2, CheckKinstoneFused(param_1)); + sub_0801876C(worldEventId, CheckKinstoneFused(kinstoneId)); } } -void sub_0801876C(int param_1, int param_2) { +void sub_0801876C(u32 worldEventId, bool32 isKinstoneFused) { Entity* roomEnt; Entity* ent; u32 uVar3; u32 tmp; u8* puVar4; u32 uVar5; - struct_080FE320* ptr; + const WorldEvent* ptr; - ptr = &gUnk_080FE320[param_1]; - switch (ptr->evt_type) { - case 6: - if (param_2 == 0) { + ptr = &gWorldEvents[worldEventId]; + switch (ptr->type) { + case WORLD_EVENT_TYPE_6: + if (isKinstoneFused == 0) { sub_08018AB4((ptr->x >> 4 & 0x3f) | (ptr->y >> 4 & 0x3f) << 6); } break; - case 0: + case WORLD_EVENT_TYPE_0: break; - case 2: - if (param_2 != 0) { - sub_08018BB4(param_1); + case WORLD_EVENT_TYPE_2: + if (isKinstoneFused != 0) { + sub_08018BB4(worldEventId); } break; - case 1: - if (param_2 == 0) { + case WORLD_EVENT_TYPE_1: + if (isKinstoneFused == 0) { return; } if (CheckGlobalFlag(ptr->flag)) { @@ -300,8 +300,8 @@ void sub_0801876C(int param_1, int param_2) { } LoadRoomEntity(gUnk_080FEC28 + ptr->entity_idx); break; - case 3: - if (param_2 == 0) { + case WORLD_EVENT_TYPE_3: + if (isKinstoneFused == 0) { return; } if (GetInventoryValue(ptr->flag)) { @@ -309,47 +309,47 @@ void sub_0801876C(int param_1, int param_2) { } LoadRoomEntity(gUnk_080FEBE8 + ptr->entity_idx); break; - case 4: - if (param_2 == 0) { - sub_08018A58(param_1); + case WORLD_EVENT_TYPE_4: + if (isKinstoneFused == 0) { + sub_08018A58(worldEventId); } break; - case 5: - if (param_2 != 0) { - sub_08018B50(param_1); + case WORLD_EVENT_TYPE_5: + if (isKinstoneFused != 0) { + sub_08018B50(worldEventId); } break; - case 7: - if (param_2 != 0) { + case WORLD_EVENT_TYPE_7: + if (isKinstoneFused != 0) { return; } if (ptr->entity_idx != 0x80) { LoadRoomEntity(gUnk_080FECC8 + ptr->entity_idx); } else { - sub_080189EC(param_1); + sub_080189EC(worldEventId); } break; - case 0x19: + case WORLD_EVENT_TYPE_25: roomEnt = LoadRoomEntity(&gUnk_080FED18[ptr->entity_idx]); if (roomEnt != 0) { - roomEnt->type = param_2 ? 2 : 0; + roomEnt->type = isKinstoneFused ? 2 : 0; } break; - case 8: - if (param_2 == 0) { + case WORLD_EVENT_TYPE_8: + if (isKinstoneFused == 0) { return; } SetTileType(0x168, (ptr->x >> 4 & 0x3f) | (ptr->y >> 4 & 0x3f) << 6, 1); break; - case 0xb: - if (param_2 != 0) { + case WORLD_EVENT_TYPE_11: + if (isKinstoneFused != 0) { LoadRoomEntity(&gUnk_080FED58[ptr->entity_idx]); gRoomVars.field_0x8c[ptr->entity_idx] = (void*)gUnk_080FED98[ptr->entity_idx]; } break; - case 9: - if (param_2 == 0) { + case WORLD_EVENT_TYPE_9: + if (isKinstoneFused == 0) { return; } ent = LoadRoomEntity(&gUnk_080FEE78[ptr->entity_idx]); @@ -366,38 +366,38 @@ void sub_0801876C(int param_1, int param_2) { SetTileType(uVar3, uVar5, 1); } break; - case 0x18: - if (param_2 != 0) { + case WORLD_EVENT_TYPE_24: + if (isKinstoneFused != 0) { LoadRoomEntityList(gUnk_080FEE18); } break; - case 0xf: - if (param_2 != 0) { + case WORLD_EVENT_TYPE_15: + if (isKinstoneFused != 0) { LoadRoomEntity(gUnk_080FEE58); } else { LoadRoomEntity(gUnk_080FEE48); } break; - case 0x11: - if (param_2 != 0) { + case WORLD_EVENT_TYPE_17: + if (isKinstoneFused != 0) { SetLocalFlagByBank(FLAG_BANK_1, SOUGEN_05_BOMB_00); LoadRoomEntityList(gUnk_080FEE38); } break; - case 0x1a: - case 0x1b: - case 0x1c: + case WORLD_EVENT_TYPE_26: + case WORLD_EVENT_TYPE_27: + case WORLD_EVENT_TYPE_28: break; } } -void sub_080189EC(int param_1) { +void sub_080189EC(u32 worldEventId) { u32 i; int iVar1; int tilePosition; - struct_080FE320* ptr; + const WorldEvent* ptr; - ptr = &gUnk_080FE320[param_1]; + ptr = &gWorldEvents[worldEventId]; tilePosition = (ptr->x >> 4) & 0x3f; tilePosition |= ((ptr->y >> 4) & 0x3f) << 6; @@ -414,14 +414,14 @@ void sub_080189EC(int param_1) { } } -void sub_08018A58(int param_1) { +void sub_08018A58(u32 worldEventId) { u32 i; int iVar2; u32 j; int tilePosition; - struct_080FE320* ptr; + const WorldEvent* ptr; - ptr = &gUnk_080FE320[param_1]; + ptr = &gWorldEvents[worldEventId]; tilePosition = (ptr->x >> 4) & 0x3f; tilePosition |= ((ptr->y >> 4) & 0x3f) << 6; @@ -470,14 +470,14 @@ void sub_08018B10(int param_1) { } } -void sub_08018B50(int param_1) { +void sub_08018B50(u32 worldEventId) { u32 i; int iVar2; u32 j; int tilePosition; - struct_080FE320* ptr; + const WorldEvent* ptr; - ptr = &gUnk_080FE320[param_1]; + ptr = &gWorldEvents[worldEventId]; if ((ptr->entity_idx & 0x80) == 0) { iVar2 = 0x200; } else { @@ -495,14 +495,15 @@ void sub_08018B50(int param_1) { } } -void sub_08018BB4(int param_1) { +// TODO world event that loads tile entity +void sub_08018BB4(u32 worldEventId) { u32 layer; TileEntity tile; - struct_080FE320* ptr; + const WorldEvent* ptr; u32 position; - MemCopy(gUnk_080FEAC8 + param_1, &tile, sizeof(TileEntity)); - ptr = &gUnk_080FE320[param_1]; + MemCopy(gUnk_080FEAC8 + worldEventId, &tile, sizeof(TileEntity)); + ptr = &gWorldEvents[worldEventId]; tile.tilePos = (ptr->x >> 4 & 0x3f) | (((ptr->y) >> 4 & 0x3f) << 6); sub_0804B3C4(&tile); if (CheckLocalFlag(tile.localFlag) == 0) { |
