From 107bef8fcd824c632f7a57d2ca317c55d6469d10 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 31 Jul 2022 15:40:44 -0700 Subject: [PATCH 1/9] better names and clean things up --- include/felicity_bank.h | 2 +- include/music.h | 2 ++ include/text_util.h | 15 ++++++++ src/code_800D090.c | 4 +-- src/code_8069E0C.c | 2 +- src/felicity_bank_1.c | 4 +-- src/items.c | 6 ++-- src/kangaskhan_storage_2.c | 70 ++++++++++++++++++------------------- src/kangaskhan_storage_3.c | 32 ++++++++--------- src/music.c | 14 +++----- src/personality_test.c | 2 +- src/wonder_mail.c | 3 +- src/wonder_mail_2_1.c | 16 ++++----- src/wonder_mail_3_mid.c | 14 ++++---- src/wonder_mail_5.c | 2 +- src/wonder_mail_6.c | 4 +-- src/wonder_mail_802DF88.c | 6 ++-- src/wonder_mail_main_menu.c | 4 +-- 18 files changed, 106 insertions(+), 96 deletions(-) create mode 100644 include/text_util.h diff --git a/include/felicity_bank.h b/include/felicity_bank.h index 078ebd5aa..7cd64ec0d 100644 --- a/include/felicity_bank.h +++ b/include/felicity_bank.h @@ -10,7 +10,7 @@ struct unkStruct_203B204 // size: 0x108 u32 unk0; s32 currState; - u32 unk8; + u32 fallbackState; u32 chosenAmount; u32 unk10; struct MenuItem unk14[8]; diff --git a/include/music.h b/include/music.h index 15e182870..753fa045d 100644 --- a/include/music.h +++ b/include/music.h @@ -20,6 +20,8 @@ void PlayFanfareSE(u16 songIndex, u16 volume); void StopFanfareSE(u16 songIndex); void FadeOutFanfareSE(u16 songIndex, u16 speed); bool8 IsFanfareSEPlaying(u16 songIndex); +void SoundBiasReset(void); +void SoundBiasSet(void); void nullsub_19(void); void nullsub_20(u16 songIndex); diff --git a/include/text_util.h b/include/text_util.h new file mode 100644 index 000000000..736af98bf --- /dev/null +++ b/include/text_util.h @@ -0,0 +1,15 @@ +#ifndef GUARD_TEXT_UTIL_H +#define GUARD_TEXT_UTIL_H + +void sub_80922B4(u8 *buffer, u8 *string, s32 size); +u32 sub_80922E4(u32 r0); +void CopyStringtoBuffer(u8 *buffer, u8 *string); +void BoundedCopyStringtoBuffer(u8 *buffer, u8 *string, s32 size); +const char *GetUnformattedTypeString(u8 type); +const char * GetFormattedTypeString(u8 type); +u8 sub_8092354(u8 index); +u8 sub_8092364(u8 index); +void CopyAbilityNametoBuffer(char *buffer, u8 index); +u8 *GetAbilityDescription(u8 index); + +#endif diff --git a/src/code_800D090.c b/src/code_800D090.c index 1744087d8..cbd359230 100644 --- a/src/code_800D090.c +++ b/src/code_800D090.c @@ -3,9 +3,7 @@ #include "gba/gba.h" #include "config.h" #include "global.h" - -extern void SoundBiasReset(void); -extern void SoundBiasSet(void); +#include "music.h" extern u32 gUnknown_202DB60[2]; extern u16 gUnknown_202DB30[2][8]; diff --git a/src/code_8069E0C.c b/src/code_8069E0C.c index e70e52f85..7c893a1a6 100644 --- a/src/code_8069E0C.c +++ b/src/code_8069E0C.c @@ -11,6 +11,7 @@ #include "pokemon.h" #include "weather.h" #include "gUnknown_203B46C.h" +#include "text_util.h" extern struct UnkSaveStruct1 *gUnknown_203B46C; @@ -30,7 +31,6 @@ extern u8 *gUnknown_80FCC7C[]; extern u8 *gUnknown_80FCCAC[]; extern u8 *gUnknown_80FDCC8[]; -extern u8* GetUnformattedTypeString(s16); extern void SetMessageArgument(char[], struct DungeonEntity*, u32); void sub_80522F4(struct DungeonEntity *r0, struct DungeonEntity *r1, const char r2[]); extern void sub_8042900(struct DungeonEntity *r0); diff --git a/src/felicity_bank_1.c b/src/felicity_bank_1.c index 19f8e7cad..d9e4fc57d 100644 --- a/src/felicity_bank_1.c +++ b/src/felicity_bank_1.c @@ -100,7 +100,7 @@ void sub_8016B00(void) s32 auStack8; if (sub_80144A4(&auStack8) == 0) { - UpdateFelicityBankState(gUnknown_203B204->unk8); + UpdateFelicityBankState(gUnknown_203B204->fallbackState); } } @@ -109,7 +109,7 @@ void sub_8016B24(void) s32 auStack8; if (sub_80144A4(&auStack8) == 4) { - UpdateFelicityBankState(gUnknown_203B204->unk8); + UpdateFelicityBankState(gUnknown_203B204->fallbackState); } } diff --git a/src/items.c b/src/items.c index 6d2acafc2..8a55705bd 100644 --- a/src/items.c +++ b/src/items.c @@ -9,6 +9,7 @@ #include "subStruct_203B240.h" #include "team_inventory.h" #include "code_800D090.h" +#include "text_util.h" #include @@ -42,9 +43,8 @@ extern s32 sub_8090FEC(s32 a1, u8* a2, u8 a3); extern void sub_80073B8(u32); extern u32 sub_8097DF0(char *, struct subStruct_203B240 **); extern void sub_80078A4(u32, u32, u32, u32, u32); -extern u8* GetUnformattedTypeString(s16); extern void sub_80073E0(u32); -extern void xxx_format_and_draw(u32, u32, u8 *, u32, u32); +extern void xxx_format_and_draw(u32, u32, const u8 *, u32, u32); extern s32 sub_8091E94(s32 a1, s32 a2, s32 a3); extern void xxx_sort_inv_unk230_80918EC(); bool8 xxx_insert_unk250_8091C1C(u8); @@ -701,7 +701,7 @@ u32 sub_80913E0(struct ItemSlot* slot, u32 a2, struct subStruct_203B240 ** a3) struct PokemonMove *buffer8 = (struct PokemonMove*) (buffer88 + 0x50); // field in struct u16 move = GetItemMove(slot->itemIndex); u8 moves_data; - u8* typestring; + const u8* typestring; u32 result; InitPokemonMove(buffer8, move); diff --git a/src/kangaskhan_storage_2.c b/src/kangaskhan_storage_2.c index 226f31e7c..2dc765cc3 100644 --- a/src/kangaskhan_storage_2.c +++ b/src/kangaskhan_storage_2.c @@ -111,13 +111,13 @@ void sub_80177F8(void) void sub_8017828(void) { - s32 local_8; + s32 menuAction; - if (sub_80144A4(&local_8) == 0) { - if (local_8 != 1) { - gUnknown_203B208->unk18 = local_8; + if (sub_80144A4(&menuAction) == 0) { + if (menuAction != 1) { + gUnknown_203B208->unk18 = menuAction; } - switch(local_8) + switch(menuAction) { case 2: if (GetNumberOfFilledInventorySlots() == 0) { @@ -158,10 +158,10 @@ void sub_8017828(void) void sub_80178D0(void) { - s32 local_18; + s32 menuAction; - if (sub_80144A4(&local_18) == 0) { - switch(local_18) + if (sub_80144A4(&menuAction) == 0) { + switch(menuAction) { case 4: MoveToStorage(&gUnknown_203B208->unkC); @@ -179,25 +179,25 @@ void sub_80178D0(void) void sub_8017928(void) { - int local_c; + int menuAction; u32 itemindex; u32 numItems; - struct HeldItem_Alt local_8; + struct HeldItem_Alt item; - if (sub_80144A4(&local_c) == 0) { - switch(local_c) + if (sub_80144A4(&menuAction) == 0) { + switch(menuAction) { case 4: gTeamInventory_203B460->teamStorage[gUnknown_203B208->unkC.itemIndex] -= gUnknown_203B208->unkC.numItems; itemindex = gUnknown_203B208->unkC.itemIndex; - local_8.temp.full_bits = (local_8.temp.full_bits & 0xffffff00) | itemindex; + item.temp.full_bits = (item.temp.full_bits & 0xffffff00) | itemindex; numItems = gUnknown_203B208->unkC.numItems << 8; - local_8.temp.full_bits = (local_8.temp.full_bits & 0xffff00ff) | numItems; + item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | numItems; - AddHeldItemToInventory((struct HeldItem *)&local_8); + AddHeldItemToInventory((struct HeldItem *)&item); UpdateKangaskhanStorageState(0x1d); break; case 1: @@ -211,10 +211,10 @@ void sub_8017928(void) void sub_80179A8(void) { s32 iVar1; - s32 local_18; + s32 menuAction; - if (sub_80144A4(&local_18) == 0) { - switch(local_18) + if (sub_80144A4(&menuAction) == 0) { + switch(menuAction) { case 4: for(iVar1 = 0; iVar1 < INVENTORY_SIZE; iVar1++) @@ -240,38 +240,38 @@ void sub_80179A8(void) void sub_8017A1C(void) { - u8 iVar2_u8; - u32 uVar4; + u8 itemID_u8; + u32 numItems_cast; s32 itemID; - int local_18; + int menuAction; u16 cast; - struct HeldItem_Alt local_14; + struct HeldItem_Alt item; - if (sub_80144A4(&local_18) == 0) { + if (sub_80144A4(&menuAction) == 0) { - switch(local_18) + switch(menuAction) { case 4: for(itemID = 0; itemID < NUMBER_OF_ITEM_IDS; itemID++) { - iVar2_u8 = itemID; + itemID_u8 = itemID; if (sub_801CFE0(itemID) != 0) { - local_14.temp.full_bits = (local_14.temp.full_bits & 0xffffff00) | iVar2_u8; - if (IsThrowableItem(local_14.temp.norm.itemIndex)) { - uVar4 = gTeamInventory_203B460->teamStorage[local_14.temp.norm.itemIndex]; - if (uVar4 > 99) { - local_14.temp.full_bits = (local_14.temp.full_bits & 0xffff00ff) | 0x6300; + item.temp.full_bits = (item.temp.full_bits & 0xffffff00) | itemID_u8; + if (IsThrowableItem(item.temp.norm.itemIndex)) { + numItems_cast = gTeamInventory_203B460->teamStorage[item.temp.norm.itemIndex]; + if (numItems_cast > 99) { + item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | 0x6300; } else { - cast = uVar4 << 8; - local_14.temp.full_bits = (local_14.temp.full_bits & 0xffff00ff) | cast; + cast = numItems_cast << 8; + item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | cast; } } else { - local_14.temp.full_bits = (local_14.temp.full_bits & 0xffff00ff) | 0x100; + item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | 0x100; } - gTeamInventory_203B460->teamStorage[local_14.temp.norm.itemIndex] -= local_14.temp.norm.numItems; - AddHeldItemToInventory((struct HeldItem *)&local_14); + gTeamInventory_203B460->teamStorage[item.temp.norm.itemIndex] -= item.temp.norm.numItems; + AddHeldItemToInventory((struct HeldItem *)&item); } } FillInventoryGaps(); diff --git a/src/kangaskhan_storage_3.c b/src/kangaskhan_storage_3.c index 568e69f0b..bda6bb490 100644 --- a/src/kangaskhan_storage_3.c +++ b/src/kangaskhan_storage_3.c @@ -130,20 +130,20 @@ void sub_80186F8(void) { struct HeldItem_Alt item; u16 cast; - s32 iVar6; - u8 iVar6_32; + s32 itemID; + u8 itemID_u8; switch(sub_801CA08(1)) { case 3: if(sub_801CFB8() != 0) { - for(iVar6 = 0; iVar6 < NUMBER_OF_ITEM_IDS; iVar6++) + for(itemID = 0; itemID < NUMBER_OF_ITEM_IDS; itemID++) { - iVar6_32 = iVar6; // dumb cast needed to match - if(sub_801CFE0(iVar6) != 0) + itemID_u8 = itemID; // dumb cast needed to match + if(sub_801CFE0(itemID) != 0) { - item.temp.full_bits = (item.temp.full_bits & 0xffffff00) | iVar6_32; + item.temp.full_bits = (item.temp.full_bits & 0xffffff00) | itemID_u8; if(IsThrowableItem(item.temp.norm.itemIndex)) if(gTeamInventory_203B460->teamStorage[item.temp.norm.itemIndex] > 0x63) { @@ -244,17 +244,17 @@ void sub_8018854(void) void sub_8018904(void) { - s32 temp; + s32 menuAction; - temp = 0; + menuAction = 0; sub_801A6E8(0); if(sub_8012FD8(&gUnknown_203B20C->unk70) == 0) { - sub_8013114(&gUnknown_203B20C->unk70, &temp); - if(temp != 1) gUnknown_203B20C->unk18 = temp; + sub_8013114(&gUnknown_203B20C->unk70, &menuAction); + if(menuAction != 1) gUnknown_203B20C->unk18 = menuAction; } - switch(temp) + switch(menuAction) { case 2: if(IsNotMoneyOrUsedTMItem(gUnknown_203B20C->unk8.itemIndex)) @@ -290,19 +290,19 @@ void sub_8018904(void) void sub_80189C8(void) { struct HeldItem_Alt item; - s32 temp; + s32 menuAction; u32 itemsCast; u32 indexCast; - temp = 0; + menuAction = 0; sub_801CA08(0); if(sub_8012FD8(&gUnknown_203B20C->unk70) == 0) { - sub_8013114(&gUnknown_203B20C->unk70, &temp); - if(temp != 1) gUnknown_203B20C->unk1C = temp; + sub_8013114(&gUnknown_203B20C->unk70, &menuAction); + if(menuAction != 1) gUnknown_203B20C->unk1C = menuAction; } - switch(temp) + switch(menuAction) { case 3: if(GetNumberOfFilledInventorySlots() >= INVENTORY_SIZE) diff --git a/src/music.c b/src/music.c index ed60dd330..9ef768943 100644 --- a/src/music.c +++ b/src/music.c @@ -5,21 +5,20 @@ #include "music.h" #include "input.h" #include "constants/bg_music.h" +#include "random.h" extern bool8 EnableInterrupts(void); extern bool8 DisableInterrupts(void); -extern void SoundBiasReset(); -extern void SoundBiasSet(); extern void AckInterrupt(u16); extern void nullsub_25(void); + void nullsub_18(void); void UpdateSound(void); void nullsub_21(u16); - -extern void Random(); -extern void sub_800BA5C(); +void sub_800BA5C(); void xxx_update_bg_sound_input(); - +void SoundVSync(); +void BlinkSavingIcon(); typedef void (*IntrCallback)(void); extern IntrCallback gIntrCallbacks[]; @@ -84,9 +83,6 @@ enum NUM_BGS }; -void SoundVSync(); -extern void BlinkSavingIcon(); - void UnusedIntrFunc(void) { } diff --git a/src/personality_test.c b/src/personality_test.c index 58814693b..8c4cac8cf 100644 --- a/src/personality_test.c +++ b/src/personality_test.c @@ -9,6 +9,7 @@ #include "memory.h" #include "gUnknown_203B46C.h" #include "text.h" +#include "text_util.h" #include "menu.h" enum @@ -46,7 +47,6 @@ extern void sub_8014248(const char *text, u32, u32, const struct MenuItem *r0, u extern u32 sub_80144A4(s32 *); -extern void CopyStringtoBuffer(char *r0, char *r1); extern void sub_801602C(u32, char *r0); extern u32 sub_8016080(void); diff --git a/src/wonder_mail.c b/src/wonder_mail.c index 33dc9fd56..7cf877f2c 100644 --- a/src/wonder_mail.c +++ b/src/wonder_mail.c @@ -3,6 +3,7 @@ #include "pokemon.h" #include "file_system.h" #include "item.h" +#include "input.h" #include "sub_8095228.h" #include "wonder_mail.h" #include "memory.h" @@ -33,7 +34,6 @@ extern u32 sub_8095324(u32); extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32); extern void nullsub_130(void); extern void sub_8028348(void); -extern void ResetUnusedInputStruct(); extern void sub_803084C(); extern u32 sub_8030768(u32); extern s8 sub_80307EC(); @@ -69,7 +69,6 @@ extern s32 sub_8001658(u32, u32); extern u8 sub_8099B94(); extern void sub_8099A5C(u32, u32, u32*); extern void sub_8099AFC(u32, u32, u32*); -extern void ResetUnusedInputStruct(); extern void sub_8099690(u32); extern void sub_8031E10(void); extern void sub_803084C(void); diff --git a/src/wonder_mail_2_1.c b/src/wonder_mail_2_1.c index ebc50e3af..83cb7a2f0 100644 --- a/src/wonder_mail_2_1.c +++ b/src/wonder_mail_2_1.c @@ -212,10 +212,10 @@ bool8 sub_802C4A4(void) return TRUE; } -u32 sub_802C4C8(int param_1,struct UnkTextStruct2_sub *param_2,u32 param_3) +bool8 sub_802C4C8(int param_1,struct UnkTextStruct2_sub *param_2,u32 param_3) { if (HasNoAcceptedJobs()) { - return 0; + return FALSE; } else { @@ -238,7 +238,7 @@ u32 sub_802C4C8(int param_1,struct UnkTextStruct2_sub *param_2,u32 param_3) sub_8013984(&gUnknown_203B2E8->unk8); sub_802C6DC(); sub_802C750(); - return 1; + return TRUE; } } @@ -418,16 +418,16 @@ bool8 HasNoAcceptedJobs(void) for(index = 0; index < MAX_ACCEPTED_JOBS; index++) { if(!IsJobSlotEmpty(index)) - return 0; + return FALSE; } - return 1; + return TRUE; } -u32 sub_802C860(u32 r0) +bool8 sub_802C860(u32 r0) { if(HasNoAcceptedJobs()) { - return 0; + return FALSE; } else { @@ -435,7 +435,7 @@ u32 sub_802C860(u32 r0) gUnknown_203B2F0->unk68 = 0; gUnknown_203B2F0->unk0 = r0; sub_802C910(0); - return 1; + return TRUE; } } diff --git a/src/wonder_mail_3_mid.c b/src/wonder_mail_3_mid.c index 66e4011cf..650cf05f8 100644 --- a/src/wonder_mail_3_mid.c +++ b/src/wonder_mail_3_mid.c @@ -445,7 +445,7 @@ void HandleMissionReward(void) const char *rankString; u8 uVar7; struct unkStruct_8090F58 local_20; - struct ItemSlot_Alt local_14; + struct ItemSlot_Alt item; u32 numItems; u32 index_cast; u32 index_cast2; @@ -526,22 +526,22 @@ void HandleMissionReward(void) // Cast ItemIndex index_cast = uVar7 << 16; - local_14.temp.full_bits = (local_14.temp.full_bits & 0xff00ffff) | index_cast; + item.temp.full_bits = (item.temp.full_bits & 0xff00ffff) | index_cast; - index_cast2 = local_14.temp.full_bits >> 16; + index_cast2 = item.temp.full_bits >> 16; if (IsThrowableItem(index_cast2)) { // Cast number items numItems = (gUnknown_203B310->unk10->numItems << 8); - local_14.temp.full_bits = (local_14.temp.full_bits & 0xffff00ff) | numItems; + item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | numItems; } else { - local_14.temp.full_bits = (local_14.temp.full_bits & 0xffff00ff) | 0; + item.temp.full_bits = (item.temp.full_bits & 0xffff00ff) | 0; } - local_14.temp.full_bits = (local_14.temp.full_bits & 0xffffff00) | ITEM_FLAG_EXISTS; + item.temp.full_bits = (item.temp.full_bits & 0xffffff00) | ITEM_FLAG_EXISTS; local_20.unk0 = 0; local_20.unk4 = 0; local_20.unk8 = 1; - sub_8090E14(gUnknown_202DEA8,(struct ItemSlot *)&local_14,&local_20); + sub_8090E14(gUnknown_202DEA8,(struct ItemSlot *)&item,&local_20); if (gUnknown_203B310->displayClientDialogueSprite) { sub_80141B4(gUnknown_80E0640,0,&gUnknown_203B310->faceFile,0x10d); gUnknown_203B310->nextState = 5; diff --git a/src/wonder_mail_5.c b/src/wonder_mail_5.c index aa5098283..1842673c9 100644 --- a/src/wonder_mail_5.c +++ b/src/wonder_mail_5.c @@ -35,7 +35,7 @@ bool8 sub_8030D40(u8 param_1, s32 param_2) sub_8006518(gUnknown_203B324->unk18); gUnknown_203B324->unk18[gUnknown_203B324->unk10] = gUnknown_80E091C; sub_8030DD4(); - return 1; + return TRUE; } u8 sub_8030DA0(void) diff --git a/src/wonder_mail_6.c b/src/wonder_mail_6.c index cd3b4ab75..6e72c49fa 100644 --- a/src/wonder_mail_6.c +++ b/src/wonder_mail_6.c @@ -75,7 +75,7 @@ bool8 sub_8030F58(u32 wonderMailMode) MemoryFill8((u8 *)gUnknown_203B328,0,sizeof(struct unkStruct_203B328)); } gUnknown_203B328->wonderMailMode = wonderMailMode; - iVar3 = GetDialogueSpriteDataPtr(0x130); + iVar3 = GetDialogueSpriteDataPtr(SPECIES_PELIPPER); gUnknown_203B328->faceFile = iVar3; gUnknown_203B328->faceData = iVar3->data; gUnknown_203B328->unk114 = 0; @@ -102,7 +102,7 @@ bool8 sub_8030F58(u32 wonderMailMode) gUnknown_203B328->state = 0; sub_80306A8(wonderMailMode,0,0,8); } - return 1; + return TRUE; } s32 sub_8031050(void) diff --git a/src/wonder_mail_802DF88.c b/src/wonder_mail_802DF88.c index 74d3fdac0..b8f2f06a2 100644 --- a/src/wonder_mail_802DF88.c +++ b/src/wonder_mail_802DF88.c @@ -127,13 +127,13 @@ void sub_802DF88(void); void sub_802DF14(void); void sub_801317C(void); -u32 sub_802DB28(u8 jobSlot, u8 param_2) +bool8 sub_802DB28(u8 jobSlot, u8 param_2) { char local_18 [8]; sub_8096AF8(local_18,jobSlot,param_2); if (local_18[0] == '\0') { - return 0; + return FALSE; } else { ResetUnusedInputStruct(); @@ -154,7 +154,7 @@ u32 sub_802DB28(u8 jobSlot, u8 param_2) gUnknown_203B2FC->faceData = gUnknown_203B2FC->faceFile->data; } sub_802DC28(0); - return 1; + return TRUE; } } diff --git a/src/wonder_mail_main_menu.c b/src/wonder_mail_main_menu.c index 06fdb54c1..be22e6429 100644 --- a/src/wonder_mail_main_menu.c +++ b/src/wonder_mail_main_menu.c @@ -271,12 +271,12 @@ void HandleWonderMailMainScreen(void) if (sub_80144A4(&menuAction) == 0) { gUnknown_203B3E8->unk24C = 10; switch(menuAction) { - case 3: + case WONDER_MAIL_GAME_LINK: case 4: gUnknown_203B3E8->wonderMailMethod = WONDER_MAIL_GAME_LINK; SetWonderMailMainMenuState(GAME_LINK_CABLE_MENU); break; - case 5: + case WONDER_MAIL_PASSWORD: gUnknown_203B3E8->wonderMailMethod = WONDER_MAIL_PASSWORD; SetWonderMailMainMenuState(PROMPT_PASSWORD_ENTRY); break; From 73a81289719e0928ba53727486cebd17b020e52e Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 31 Jul 2022 17:07:42 -0700 Subject: [PATCH 2/9] decomp a few funcs --- asm/code_807AEBC.s | 78 +------------------------------------ asm/code_807BB78.s | 26 ------------- ld_script.txt | 1 - src/dungeon_ai_movement.c | 35 +++++++++++++++++ src/dungeon_ai_movement_1.c | 11 ++++++ 5 files changed, 47 insertions(+), 104 deletions(-) delete mode 100644 asm/code_807BB78.s diff --git a/asm/code_807AEBC.s b/asm/code_807AEBC.s index e613c6505..e5cb86f34 100644 --- a/asm/code_807AEBC.s +++ b/asm/code_807AEBC.s @@ -5,82 +5,6 @@ .text - thumb_func_start CanTakeItem -CanTakeItem: - push {r4-r6,lr} - adds r4, r0, 0 - ldr r5, [r4, 0x70] - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807AF50 - adds r0, r4, 0 - bl CannotUseItems - lsls r0, 24 - cmp r0, 0 - bne _0807AF50 - adds r0, r4, 0 - bl GetMapTileForDungeonEntity_2 - adds r6, r0, 0 - ldr r4, [r6, 0x14] - cmp r4, 0 - beq _0807AF50 - adds r0, r4, 0 - bl GetEntityType - cmp r0, 0x5 - bhi _0807AF50 - lsls r0, 2 - ldr r1, _0807AEFC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807AEFC: .4byte _0807AF00 - .align 2, 0 -_0807AF00: - .4byte _0807AF50 - .4byte _0807AF50 - .4byte _0807AF50 - .4byte _0807AF18 - .4byte _0807AF50 - .4byte _0807AF50 -_0807AF18: - ldrb r0, [r5, 0x7] - cmp r0, 0 - bne _0807AF50 - adds r0, r5, 0 - adds r0, 0x60 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0807AF50 - ldrh r1, [r6] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - bne _0807AF3C - ldrb r0, [r5, 0x6] - cmp r0, 0 - bne _0807AF50 -_0807AF3C: - adds r0, r4, 0 - bl GetItemData - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0807AF50 - movs r0, 0x1 - b _0807AF52 -_0807AF50: - movs r0, 0 -_0807AF52: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end CanTakeItem - thumb_func_start ChooseTargetPosition ChooseTargetPosition: push {r4-r7,lr} @@ -944,4 +868,4 @@ _0807B5CE: bx r0 thumb_func_end DecideMovement - .align 2, 0 \ No newline at end of file + .align 2, 0 diff --git a/asm/code_807BB78.s b/asm/code_807BB78.s deleted file mode 100644 index 84364a061..000000000 --- a/asm/code_807BB78.s +++ /dev/null @@ -1,26 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_807BB78 -sub_807BB78: - ldr r3, [r0, 0x70] - adds r1, r3, 0 - adds r1, 0x78 - movs r2, 0 - strb r2, [r1] - adds r1, 0x10 - ldr r0, [r0, 0x4] - str r0, [r1] - adds r0, r3, 0 - adds r0, 0x80 - str r2, [r0] - subs r0, 0x4 - strh r2, [r0] - bx lr - thumb_func_end sub_807BB78 - - .align 2, 0 \ No newline at end of file diff --git a/ld_script.txt b/ld_script.txt index c2d1b33b2..98c0abc29 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -246,7 +246,6 @@ SECTIONS { src/dungeon_ai_movement.o(.text); asm/code_807AEBC.o(.text); src/dungeon_ai_movement_1.o(.text); - asm/code_807BB78.o(.text); src/dungeon_ai_attack.o(.text); asm/code_807CABC.o(.text); src/targeting_flags.o(.text); diff --git a/src/dungeon_ai_movement.c b/src/dungeon_ai_movement.c index a9f7a2f0b..1393aa16d 100644 --- a/src/dungeon_ai_movement.c +++ b/src/dungeon_ai_movement.c @@ -5,11 +5,15 @@ #include "constants/dungeon_action.h" #include "constants/tactic.h" #include "dungeon_action.h" +#include "dungeon_capabilities_1.h" #include "dungeon_pokemon_attributes.h" #include "dungeon_random.h" #include "dungeon_ai_movement_1.h" #include "dungeon_ai_targeting.h" +#include "dungeon_util.h" +#include "item.h" #include "number_util.h" +#include "map.h" extern bool8 CanTakeItem(struct DungeonEntity *pokemon); extern bool8 ChooseTargetPosition(struct DungeonEntity *pokemon); @@ -72,3 +76,34 @@ void MoveIfPossible(struct DungeonEntity *pokemon, bool8 showRunAwayEffect) } } } + +bool8 CanTakeItem(struct DungeonEntity *pokemon) +{ + struct MapTile *mapTile; + struct ItemSlot *item; + struct DungeonEntity *mapEntity; + struct DungeonEntityData *entityData; + + entityData = pokemon->entityData; + if (EntityExists(pokemon) && !CannotUseItems(pokemon)) { + mapTile = GetMapTileForDungeonEntity_2(pokemon); + mapEntity = mapTile->mapObject; + if (mapEntity != NULL) { + switch(GetEntityType(mapEntity)) { + case ENTITY_NONE: + case ENTITY_POKEMON: + case ENTITY_TRAP: + case 4: + case 5: + break; + case ENTITY_ITEM: + if ((((!entityData->isLeader) && !(entityData->heldItem.itemFlags & ITEM_FLAG_EXISTS)) && + (((mapTile->tileType & (TILE_TYPE_FLOOR | TILE_TYPE_LIQUID)) || (!entityData->isEnemy)))) && + (item = GetItemData(mapEntity), (item->itemFlags & ITEM_FLAG_FOR_SALE) == 0)) { + return TRUE; + } + } + } + } + return FALSE; +} diff --git a/src/dungeon_ai_movement_1.c b/src/dungeon_ai_movement_1.c index b240faf73..02efefc1b 100644 --- a/src/dungeon_ai_movement_1.c +++ b/src/dungeon_ai_movement_1.c @@ -618,3 +618,14 @@ bool8 Wander(struct DungeonEntity *pokemon) "_0807BB74: .4byte gAdjacentTileOffsets"); } #endif + +void sub_807BB78(struct DungeonEntity *pokemon) +{ + struct DungeonEntityData *entityData; + + entityData = pokemon->entityData; + entityData->movementAction = 0; + entityData->targetMovePosition = pokemon->posWorld; + entityData->targetPokemon = 0; + entityData->targetPokemonSpawnIndex = 0; +} From d9893a6274e7558a2d85fc72332351856bc27435 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 31 Jul 2022 19:13:05 -0700 Subject: [PATCH 3/9] decomp a few more --- asm/code_80521D0.s | 2 +- asm/code_8057144.s | 152 ---------------------------------- asm/code_8057824.s | 2 +- data/data_80F59C8.s | 4 +- include/dungeon_ai_movement.h | 1 + include/dungeon_entity.h | 7 +- src/dungeon_ai_movement.c | 7 +- src/move_util.c | 76 +++++++++++++++++ 8 files changed, 89 insertions(+), 162 deletions(-) diff --git a/asm/code_80521D0.s b/asm/code_80521D0.s index 500210389..5e0829f03 100644 --- a/asm/code_80521D0.s +++ b/asm/code_80521D0.s @@ -7184,7 +7184,7 @@ _080560CC: .align 2, 0 _08056108: .4byte gDungeonGlobalData _0805610C: .4byte 0x00003a0e -_08056110: .4byte gUnknown_80F5D10 +_08056110: .4byte gNaturePowerMoveTable _08056114: .4byte gUnknown_80FECE0 _08056118: .4byte gAvailablePokemonNames _0805611C: .4byte gUnknown_202DE58 diff --git a/asm/code_8057144.s b/asm/code_8057144.s index 65182e664..064e55d71 100644 --- a/asm/code_8057144.s +++ b/asm/code_8057144.s @@ -96,156 +96,4 @@ _080571DE: _080571EC: .4byte 0x00000163 thumb_func_end sub_8057144 - thumb_func_start sub_80571F0 -sub_80571F0: - push {lr} - ldr r0, [r0, 0x70] - adds r2, r0, 0 - adds r2, 0xFF - ldrb r2, [r2] - cmp r2, 0x1 - bne _08057212 - ldrh r1, [r1, 0x2] - cmp r1, 0x88 - beq _08057274 - cmp r1, 0xA2 - beq _08057274 - cmp r1, 0x39 - beq _08057274 - cmp r1, 0x40 - beq _08057274 - b _08057264 -_08057212: - cmp r2, 0x2 - bne _08057274 - adds r0, 0xC0 - ldrb r0, [r0] - cmp r0, 0x9 - bne _0805722A - ldrh r1, [r1, 0x2] - cmp r1, 0x20 - beq _08057274 - cmp r1, 0xDB - bne _08057264 - b _08057274 -_0805722A: - cmp r0, 0xA - bne _08057264 - ldrh r1, [r1, 0x2] - cmp r1, 0x76 - beq _08057274 - movs r0, 0x94 - lsls r0, 1 - cmp r1, r0 - beq _08057274 - cmp r1, 0x77 - bne _08057264 - ldr r0, _08057268 - ldr r0, [r0] - ldr r1, _0805726C - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - cmp r1, 0 - bge _08057252 - movs r1, 0 -_08057252: - cmp r1, 0x4A - ble _08057258 - movs r1, 0x4A -_08057258: - ldr r0, _08057270 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0x76 - beq _08057274 -_08057264: - movs r0, 0x1 - b _08057276 - .align 2, 0 -_08057268: .4byte gDungeonGlobalData -_0805726C: .4byte 0x00003a0e -_08057270: .4byte gUnknown_80F5D10 -_08057274: - movs r0, 0 -_08057276: - pop {r1} - bx r1 - thumb_func_end sub_80571F0 - - thumb_func_start sub_805727C -sub_805727C: - push {r4-r6,lr} - adds r6, r0, 0 - adds r5, r1, 0 - adds r4, r2, 0 - bl sub_8044B28 - lsls r0, 24 - cmp r0, 0 - bne _080572FC - adds r0, r6, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080572FC - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080572FC - ldr r1, [r5, 0x70] - movs r2, 0xAC - lsls r2, 1 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080572FC - movs r2, 0xE - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _080572FC - cmp r4, 0 - beq _080572DE - adds r0, r6, 0 - movs r1, 0x26 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _080572D2 - lsls r0, r4, 1 - b _080572D4 -_080572D2: - adds r0, r4, 0 -_080572D4: - bl RollPercentChance_2 - lsls r0, 24 - lsrs r4, r0, 24 - b _080572E0 -_080572DE: - movs r4, 0x1 -_080572E0: - cmp r4, 0 - beq _08057300 - cmp r6, r5 - beq _08057300 - adds r0, r5, 0 - movs r1, 0x4C - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _08057300 - adds r0, r5, 0 - bl sub_80429C8 -_080572FC: - movs r0, 0 - b _08057302 -_08057300: - adds r0, r4, 0 -_08057302: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_805727C - .align 2, 0 diff --git a/asm/code_8057824.s b/asm/code_8057824.s index d4600ed4c..1d3288b72 100644 --- a/asm/code_8057824.s +++ b/asm/code_8057824.s @@ -2446,7 +2446,7 @@ _08058F7E: .align 2, 0 _08058FB0: .4byte gDungeonGlobalData _08058FB4: .4byte 0x00003a0e -_08058FB8: .4byte gUnknown_80F5D10 +_08058FB8: .4byte gNaturePowerMoveTable thumb_func_end sub_8058F58 thumb_func_start sub_8058FBC diff --git a/data/data_80F59C8.s b/data/data_80F59C8.s index 3a41f0a35..81ee966bc 100644 --- a/data/data_80F59C8.s +++ b/data/data_80F59C8.s @@ -6,8 +6,8 @@ gUnknown_80F59C8: @ 80F59C8 .incbin "baserom.gba", 0xF59C8, 0x348 - .global gUnknown_80F5D10 -gUnknown_80F5D10: @ 80F5D10 + .global gNaturePowerMoveTable +gNaturePowerMoveTable: @ 80F5D10 .incbin "baserom.gba", 0xF5D10, 0x260 .global gUnknown_80F5F70 diff --git a/include/dungeon_ai_movement.h b/include/dungeon_ai_movement.h index 71caca652..1717cbaff 100644 --- a/include/dungeon_ai_movement.h +++ b/include/dungeon_ai_movement.h @@ -4,5 +4,6 @@ #include "dungeon_entity.h" void MoveIfPossible(struct DungeonEntity *pokemon, bool8 showRunAwayEffect); +bool8 CanTakeItem(struct DungeonEntity *pokemon); #endif diff --git a/include/dungeon_entity.h b/include/dungeon_entity.h index 9f24213f7..750f4a96e 100644 --- a/include/dungeon_entity.h +++ b/include/dungeon_entity.h @@ -170,7 +170,8 @@ struct DungeonEntityData // This is done by going to the teammate's held item in the toolbox and selecting "Use". /* 0xFC */ bool8 useHeldItem; /* 0xFD */ u8 perishSongTimer; // When this reaches 0, the Pokémon faints from Perish Song. Doubles as a bool for whether the Pokémon is afflicted by Perish Song. - u8 fillFE[0x100 - 0xFE]; + u8 unkFE; + u8 unkFF; /* 0x100 */ u8 targetingDecoy; // If the Pokémon is targeting a decoy, this indicates whether the decoy target is a team or wild Pokémon. /* 0x104 */ s32 movementSpeed; // The turn counter for movement speed up/down is split into five timers each. Multiple timers are used if the Pokémon is affected by multiple @@ -195,7 +196,9 @@ struct DungeonEntityData /* 0x14E */ u16 visualFlags; /* 0x150 */ u16 previousVisualFlags; /* 0x152 */ u8 unk152; - u8 fill153[0x15A - 0x153]; + u8 fill153[0x158 - 0x153]; + u8 unk158; + u8 unk159; u8 unk15A; u8 unk15B; u8 unk15C; diff --git a/src/dungeon_ai_movement.c b/src/dungeon_ai_movement.c index 1393aa16d..2c626a06c 100644 --- a/src/dungeon_ai_movement.c +++ b/src/dungeon_ai_movement.c @@ -15,7 +15,6 @@ #include "number_util.h" #include "map.h" -extern bool8 CanTakeItem(struct DungeonEntity *pokemon); extern bool8 ChooseTargetPosition(struct DungeonEntity *pokemon); extern void DecideMovement(struct DungeonEntity *pokemon, bool8 showRunAwayEffect); @@ -97,9 +96,9 @@ bool8 CanTakeItem(struct DungeonEntity *pokemon) case 5: break; case ENTITY_ITEM: - if ((((!entityData->isLeader) && !(entityData->heldItem.itemFlags & ITEM_FLAG_EXISTS)) && - (((mapTile->tileType & (TILE_TYPE_FLOOR | TILE_TYPE_LIQUID)) || (!entityData->isEnemy)))) && - (item = GetItemData(mapEntity), (item->itemFlags & ITEM_FLAG_FOR_SALE) == 0)) { + if ((!entityData->isLeader && !(entityData->heldItem.itemFlags & ITEM_FLAG_EXISTS) && + ((mapTile->tileType & (TILE_TYPE_FLOOR | TILE_TYPE_LIQUID)) || !entityData->isEnemy)) && + (item = GetItemData(mapEntity), !(item->itemFlags & ITEM_FLAG_FOR_SALE))) { return TRUE; } } diff --git a/src/move_util.c b/src/move_util.c index cf4f630f4..3dfa0c4b4 100644 --- a/src/move_util.c +++ b/src/move_util.c @@ -8,6 +8,82 @@ #include "dungeon_util.h" #include "dungeon_pokemon_attributes.h" #include "dungeon_random.h" +#include "dungeon_global_data.h" + + +extern bool8 sub_8044B28(void); +extern void sub_80429C8(struct DungeonEntity *r0); +extern u16 gNaturePowerMoveTable[]; + +bool8 sub_80571F0(struct DungeonEntity * pokemon, struct PokemonMove *move) +{ + u16 moveID; + s32 tileset; + struct DungeonEntityData *entityData; + + entityData = pokemon->entityData; + + if (entityData->unkFF == 1) { + moveID = move->moveID; + if ((moveID == MOVE_SKY_UPPERCUT) || (moveID == MOVE_TWISTER) || (moveID == MOVE_GUST) || (moveID == MOVE_THUNDER)) + return FALSE; + else + return TRUE; + } + else if (entityData->unkFF == 2) { + if (entityData->chargingStatus == CHARGING_STATUS_DIVE) { + if (move->moveID == MOVE_WHIRLPOOL || move->moveID == MOVE_SURF) return FALSE; + } + else if (entityData->chargingStatus == CHARGING_STATUS_DIG) { + moveID = move->moveID; + if (moveID == MOVE_EARTHQUAKE || moveID == MOVE_MAGNITUDE) return FALSE; + if (moveID == MOVE_NATURE_POWER) { + tileset = gDungeonGlobalData->tileset; + if (tileset < 0) { + tileset = 0; + } + if (0x4a < tileset) { + tileset = 0x4a; + } + if (gNaturePowerMoveTable[tileset << 2] == MOVE_EARTHQUAKE) return FALSE; + } + } + return TRUE; + } + return FALSE; +} + +bool8 sub_805727C(struct DungeonEntity * pokemon, struct DungeonEntity * target, s32 chance) +{ + bool8 uVar2; + if (!sub_8044B28() && EntityExists(pokemon) && EntityExists(target) && + (target->entityData->unk158 != 0) && + (target->entityData->HP != 0)) { + if (chance != 0) { + if (HasAbility(pokemon, ABILITY_SERENE_GRACE)) { + uVar2 = RollPercentChance_2(chance * 2); + } + else + { + uVar2 = RollPercentChance_2(chance); + } + } + else + { + uVar2 = TRUE; + } + if ((uVar2 != 0) && (pokemon != target) && HasAbility(target, ABILITY_SHIELD_DUST)) + { + sub_80429C8(target); +end: + return FALSE; + } + else + return uVar2; + } + + goto end; +} bool8 sub_8057308(struct DungeonEntity *pokemon, s32 chance) { From 00940175b4113bb09568deedaf091ecf53c5c8ea Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 1 Aug 2022 09:18:19 -0700 Subject: [PATCH 4/9] pre-flight decomp --- asm/code_807034C.s | 289 ------------------------------------------ include/pokemon.h | 2 + src/pokemon_mid.c | 8 +- src/status_checks_1.c | 117 +++++++++++++++++ 4 files changed, 123 insertions(+), 293 deletions(-) diff --git a/asm/code_807034C.s b/asm/code_807034C.s index 83d614fb4..30b20cdee 100644 --- a/asm/code_807034C.s +++ b/asm/code_807034C.s @@ -678,293 +678,4 @@ _08070820: .4byte gDungeonGlobalData _08070824: .4byte 0x0000066e thumb_func_end GetMovementSpeed - thumb_func_start sub_8070828 -sub_8070828: - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r6, r1, 24 - movs r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _08070840 - movs r0, 0 - b _080708AE -_08070840: - adds r0, r4, 0 - movs r1, 0x1B - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0807085E - adds r0, r4, 0 - bl GetWeather - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _0807085E - movs r5, 0x1 -_0807085E: - adds r0, r4, 0 - movs r1, 0x4A - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _0807087C - adds r0, r4, 0 - bl GetWeather - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0807087C - movs r5, 0x1 -_0807087C: - cmp r6, 0 - beq _080708A0 - ldr r0, [r4, 0x70] - movs r1, 0x40 - adds r2, r5, 0 - bl SetVisualFlags - lsls r0, 24 - cmp r0, 0 - beq _080708A0 - adds r0, r4, 0 - bl sub_80429B4 - ldr r0, _080708A8 - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage -_080708A0: - cmp r5, 0 - bne _080708AC - movs r0, 0x1 - b _080708AE .align 2, 0 -_080708A8: .4byte gUnknown_80FEE80 -_080708AC: - movs r0, 0x2 -_080708AE: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8070828 - - thumb_func_start SetMessageArgument_2 -SetMessageArgument_2: - push {r4,r5,lr} - adds r3, r0, 0 - adds r4, r2, 0 - ldr r0, _080708E8 - ldr r2, [r0] - ldr r5, _080708EC - adds r0, r2, r5 - ldrb r0, [r0] - cmp r0, 0 - bne _080708DC - adds r5, 0x6 - adds r0, r2, r5 - ldrb r0, [r0] - cmp r0, 0 - bne _080708DC - adds r0, r1, 0 - adds r0, 0xE4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080708F4 -_080708DC: - ldrb r0, [r1, 0x6] - cmp r0, 0 - beq _080708F4 - ldr r0, _080708F0 - b _08070900 - .align 2, 0 -_080708E8: .4byte gDungeonGlobalData -_080708EC: .4byte 0x0001820a -_080708F0: .4byte gUnknown_80F8988 -_080708F4: - adds r0, r1, 0 - adds r0, 0xC8 - ldrb r0, [r0] - cmp r0, 0x2 - bne _08070910 - ldr r0, _0807090C -_08070900: - ldr r1, [r0] - adds r0, r3, 0 - bl strcpy - b _0807095A - .align 2, 0 -_0807090C: .4byte gUnknown_80F8968 -_08070910: - ldrb r0, [r1, 0x6] - cmp r0, 0 - beq _08070942 - adds r0, r1, 0 - adds r0, 0x40 - ldrb r0, [r0] - cmp r0, 0x4A - beq _0807092A - adds r0, r1, 0 - adds r0, 0xA4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08070936 -_0807092A: - movs r0, 0x4 - ldrsh r1, [r1, r0] - adds r0, r3, 0 - bl CopyYellowSpeciesNametoBuffer - b _0807095A -_08070936: - movs r5, 0x4 - ldrsh r1, [r1, r5] - adds r0, r3, 0 - bl CopyCyanSpeciesNametoBuffer - b _0807095A -_08070942: - ldr r2, _08070960 - ldrb r1, [r1, 0xA] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08070964 - adds r0, r1 - ldr r1, [r2] - adds r1, r0 - adds r0, r3, 0 - adds r2, r4, 0 - bl sub_808D9DC -_0807095A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08070960: .4byte gRecruitedPokemonRef -_08070964: .4byte 0x00008df8 - thumb_func_end SetMessageArgument_2 - - thumb_func_start sub_8070968 -sub_8070968: - push {r4,lr} - adds r4, r0, 0 - adds r3, r2, 0 - adds r0, r1, 0 - adds r0, 0xC8 - ldrb r0, [r0] - cmp r0, 0x2 - bne _08070990 - ldr r1, _08070988 - adds r2, 0x30 - ldr r0, _0807098C - ldr r3, [r0] - adds r0, r4, 0 - bl sprintf_2 - b _080709BA - .align 2, 0 -_08070988: .4byte gUnknown_8106FA4 -_0807098C: .4byte gUnknown_80F8974 -_08070990: - ldrb r0, [r1, 0x6] - cmp r0, 0 - beq _080709A2 - movs r0, 0x4 - ldrsh r1, [r1, r0] - adds r0, r4, 0 - bl CopyCyanSpeciesNametoBuffer - b _080709BA -_080709A2: - ldr r2, _080709C0 - ldrb r1, [r1, 0xA] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080709C4 - adds r0, r1 - ldr r1, [r2] - adds r1, r0 - adds r0, r4, 0 - adds r2, r3, 0 - bl sub_808D9DC -_080709BA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080709C0: .4byte gRecruitedPokemonRef -_080709C4: .4byte 0x00008df8 - thumb_func_end sub_8070968 - - thumb_func_start sub_80709C8 -sub_80709C8: - push {r4,lr} - adds r3, r0, 0 - ldr r0, _080709F8 - ldr r2, [r0] - ldr r4, _080709FC - adds r0, r2, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _080709EE - adds r4, 0x6 - adds r0, r2, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _080709EE - adds r0, r1, 0 - adds r0, 0xE4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08070A04 -_080709EE: - ldrb r0, [r1, 0x6] - cmp r0, 0 - beq _08070A04 - ldr r0, _08070A00 - b _08070A10 - .align 2, 0 -_080709F8: .4byte gDungeonGlobalData -_080709FC: .4byte 0x0001820a -_08070A00: .4byte gUnknown_80F8994 -_08070A04: - adds r0, r1, 0 - adds r0, 0xC8 - ldrb r0, [r0] - cmp r0, 0x2 - bne _08070A20 - ldr r0, _08070A1C -_08070A10: - ldr r1, [r0] - adds r0, r3, 0 - bl strcpy - b _08070A48 - .align 2, 0 -_08070A1C: .4byte gUnknown_80F8974 -_08070A20: - ldrb r0, [r1, 0x6] - cmp r0, 0 - beq _08070A32 - movs r0, 0x4 - ldrsh r1, [r1, r0] - adds r0, r3, 0 - bl CopySpeciesNametoBuffer - b _08070A48 -_08070A32: - ldr r2, _08070A50 - ldrb r1, [r1, 0xA] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08070A54 - adds r0, r1 - ldr r1, [r2] - adds r1, r0 - adds r0, r3, 0 - bl sub_808DA0C -_08070A48: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08070A50: .4byte gRecruitedPokemonRef -_08070A54: .4byte 0x00008df8 - thumb_func_end sub_80709C8 - - .align 2, 0 \ No newline at end of file diff --git a/include/pokemon.h b/include/pokemon.h index c3135b7ca..186e8bceb 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -190,6 +190,8 @@ void CopySpeciesNametoBuffer(u8 * buffer, s16 index); void CopyYellowSpeciesNametoBuffer(u8 *buffer, s16 index); void CopyCyanSpeciesNametoBuffer(u8 *buffer, s16 index); void PrintColoredPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon, s32 colorNum); +void sub_808D9DC(u8 *buffer, struct PokemonStruct2 *param_2, s32 colorNum); +void sub_808DA0C(u8 *buffer, struct PokemonStruct2 *param_2); void PeekPokemonItem(s16 index_, struct HeldItem* item); void GivePokemonItem(s16 index_, struct HeldItem* item); bool8 IsPokemonRenamed(struct PokemonStruct* pokemon); diff --git a/src/pokemon_mid.c b/src/pokemon_mid.c index bc4004c54..d7dbe8f3b 100644 --- a/src/pokemon_mid.c +++ b/src/pokemon_mid.c @@ -281,22 +281,22 @@ void PrintColoredPokeNameToBuffer(u8 *buffer, struct PokemonStruct *pokemon, s32 sprintf_2(buffer,gUnknown_810763C,colorNum,nameBuffer); // {COLOR_2}%c%s{END_COLOR_TEXT_2} } -void sub_808D9DC(u8 *buffer, u8 *param_2, s32 colorNum) +void sub_808D9DC(u8 *buffer, struct PokemonStruct2 *param_2, s32 colorNum) { u8 nameBuffer [20]; - sub_80922B4(nameBuffer, param_2 + 0x58, POKEMON_NAME_LENGTH); + sub_80922B4(nameBuffer, param_2->name, POKEMON_NAME_LENGTH); if (colorNum == COLOR_WHITE) { colorNum = COLOR_YELLOW; } sprintf_2(buffer,gUnknown_810763C,colorNum,nameBuffer); // {COLOR_2}%c%s{END_COLOR_TEXT_2} } -void sub_808DA0C(u8 *buffer, u8 *param_2) +void sub_808DA0C(u8 *buffer, struct PokemonStruct2 *param_2) { u8 nameBuffer [20]; - sub_80922B4(nameBuffer, param_2 + 0x58, POKEMON_NAME_LENGTH); + sub_80922B4(nameBuffer, param_2->name, POKEMON_NAME_LENGTH); sprintf_2(buffer,gUnknown_8107638,nameBuffer); // %s } diff --git a/src/status_checks_1.c b/src/status_checks_1.c index 7070acded..b2c12e6df 100644 --- a/src/status_checks_1.c +++ b/src/status_checks_1.c @@ -1,7 +1,124 @@ #include "global.h" #include "status_checks_1.h" +#include "constants/ability.h" #include "constants/status.h" +#include "constants/weather.h" +#include "dungeon_global_data.h" +#include "dungeon_pokemon_attributes.h" +#include "dungeon_util.h" +#include "code_800D090.h" +#include "code_80521D0.h" +#include "pokemon.h" +#include "weather.h" + +extern void sub_80429B4(struct DungeonEntity *r0); + +extern u8 *gUnknown_80FEE80[]; +extern u8 *gUnknown_80F8974[]; +extern u8 *gUnknown_80F8994[]; +extern u8 *gUnknown_80F8968[]; +extern u8 *gUnknown_80F8988[]; +extern u8 gUnknown_8106FA4[]; + +u8 sub_8070828(struct DungeonEntity *pokemon, bool8 displayMessage) +{ + bool8 flag; + + flag = FALSE; + if (!EntityExists(pokemon)) { + return 0; + } + else { + if ((HasAbility(pokemon, ABILITY_SWIFT_SWIM)) && (GetWeather(pokemon) == WEATHER_RAIN)) { + flag = TRUE; + } + if ((HasAbility(pokemon, ABILITY_CHLOROPHYLL)) && (GetWeather(pokemon) == WEATHER_SUNNY)) { + flag = TRUE; + } + if (displayMessage && SetVisualFlags(pokemon->entityData, 0x40, flag)) { + sub_80429B4(pokemon); + SendMessage(pokemon, *gUnknown_80FEE80); + } + if (flag) { + return 2; + } + else { + return 1; + } + } +} + +void SetMessageArgument_2(u8 *buffer, struct DungeonEntityData *param_2, s32 colorNum) +{ + if (((gDungeonGlobalData->displayBlinker || + gDungeonGlobalData->displayCrossEyed) || + (param_2->transformStatus == TRANSFORM_STATUS_INVISIBLE)) && + (param_2->isEnemy)) + { + strcpy(buffer, *gUnknown_80F8988); + } + else + { + if (param_2->waitingStatus == WAITING_STATUS_DECOY) { + strcpy(buffer, *gUnknown_80F8968); + } + else + { + if (param_2->isEnemy) { + if ((param_2->joinLocation == 0x4A) || (param_2->clientType == CLIENT_TYPE_CLIENT)) { + CopyYellowSpeciesNametoBuffer(buffer, param_2->transformSpecies); + } + else + CopyCyanSpeciesNametoBuffer(buffer, param_2->transformSpecies); + } + else + { + sub_808D9DC(buffer, &gRecruitedPokemonRef->pokemon2[param_2->partyIndex],colorNum); + } + } + } +} + +void sub_8070968(u8 *buffer, struct DungeonEntityData *entityData, s32 colorNum) +{ + if (entityData->waitingStatus == WAITING_STATUS_DECOY) { + sprintf_2(buffer, gUnknown_8106FA4, colorNum + 0x30, *gUnknown_80F8974); + } + else if (entityData->isEnemy) { + CopyCyanSpeciesNametoBuffer(buffer, entityData->transformSpecies); + } + else { + sub_808D9DC(buffer, &gRecruitedPokemonRef->pokemon2[entityData->partyIndex], colorNum); + } +} + +void sub_80709C8(u8 *buffer, struct DungeonEntityData *entityData) +{ + if (((gDungeonGlobalData->displayBlinker || + gDungeonGlobalData->displayCrossEyed) || + (entityData->transformStatus == TRANSFORM_STATUS_INVISIBLE)) && + (entityData->isEnemy)) + { + strcpy(buffer, *gUnknown_80F8994); + } + else + { + if (entityData->waitingStatus == WAITING_STATUS_DECOY) { + strcpy(buffer, *gUnknown_80F8974); + } + else + { + if (entityData->isEnemy) { + CopySpeciesNametoBuffer(buffer, entityData->transformSpecies); + } + else + { + sub_808DA0C(buffer, &gRecruitedPokemonRef->pokemon2[entityData->partyIndex]); + } + } + } +} bool8 HasNegativeStatus(struct DungeonEntity *pokemon) { From 7fd9ef920a23a4485907cecc9eb3d6bb1f72aa7b Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sat, 20 Aug 2022 10:03:09 -0700 Subject: [PATCH 5/9] continue decomping more dungeon side --- asm/code_80521D0.s | 2 +- asm/code_8057824.s | 4 +- asm/code_8069E0C.s | 16 +- asm/code_806CD90.s | 10 +- asm/code_8073CF0.s | 20 +- asm/code_8077274.s | 1862 +-------------------------------- asm/code_8077274_1.s | 344 ++++++ include/code_8077274_1.h | 22 + include/dungeon_entity.h | 11 +- include/dungeon_global_data.h | 6 +- ld_script.txt | 2 + src/code_8048480.c | 8 +- src/code_8057824.c | 2 +- src/code_8077274_1.c | 743 +++++++++++++ 14 files changed, 1162 insertions(+), 1890 deletions(-) create mode 100644 asm/code_8077274_1.s create mode 100644 include/code_8077274_1.h create mode 100644 src/code_8077274_1.c diff --git a/asm/code_80521D0.s b/asm/code_80521D0.s index 5e0829f03..620bff5f9 100644 --- a/asm/code_80521D0.s +++ b/asm/code_80521D0.s @@ -7542,7 +7542,7 @@ _08056400: bl SendImmobilizeEndMessage adds r0, r5, 0 adds r1, r5, 0 - bl sub_807A6C8 + bl SendLinkedEndMessage _08056418: ldr r0, _08056464 ldrb r0, [r0] diff --git a/asm/code_8057824.s b/asm/code_8057824.s index 1d3288b72..a46b59f84 100644 --- a/asm/code_8057824.s +++ b/asm/code_8057824.s @@ -1133,7 +1133,7 @@ _080585EC: bl sub_80522F4 adds r0, r5, 0 adds r1, r4, 0 - bl sub_807A4C8 + bl SendProtectionEndMessage movs r6, 0x1 _08058602: movs r3, 0x80 @@ -1414,7 +1414,7 @@ sub_80587E8: lsrs r4, r1, 31 adds r0, r6, 0 adds r1, r5, 0 - bl sub_807A290 + bl SendNonVolatileEndMessage b _0805882E _0805881A: movs r3, 0x80 diff --git a/asm/code_8069E0C.s b/asm/code_8069E0C.s index 2e8f0da14..5d2836e35 100644 --- a/asm/code_8069E0C.s +++ b/asm/code_8069E0C.s @@ -431,7 +431,7 @@ _0806A650: bne _0806A6D2 adds r0, r6, 0 adds r1, r6, 0 - bl sub_807A290 + bl SendNonVolatileEndMessage b _0806A6D2 _0806A664: cmp r1, 0 @@ -1157,7 +1157,7 @@ sub_806ABAC: bne _0806ABD4 adds r0, r6, 0 adds r1, r4, 0 - bl sub_807A290 + bl SendNonVolatileEndMessage _0806ABD4: adds r0, r4, 0 movs r1, 0x40 @@ -1172,7 +1172,7 @@ _0806ABD4: bne _0806ABF4 adds r0, r6, 0 adds r1, r4, 0 - bl sub_807A400 + bl SendVolatileEndMessage _0806ABF4: adds r0, r4, 0 movs r1, 0x42 @@ -1187,7 +1187,7 @@ _0806ABF4: bne _0806AC14 adds r0, r6, 0 adds r1, r4, 0 - bl sub_807A290 + bl SendNonVolatileEndMessage _0806AC14: adds r0, r4, 0 movs r1, 0x29 @@ -1202,7 +1202,7 @@ _0806AC14: bne _0806AC34 adds r0, r6, 0 adds r1, r4, 0 - bl sub_807A400 + bl SendVolatileEndMessage _0806AC34: adds r0, r4, 0 movs r1, 0x36 @@ -1232,7 +1232,7 @@ _0806AC66: adds r1, r4, 0 movs r2, 0 movs r3, 0x1 - bl sub_807A124 + bl SendSleepEndMessage _0806AC72: adds r0, r4, 0 movs r1, 0x41 @@ -1265,7 +1265,7 @@ _0806AC92: bhi _0806ACB8 adds r0, r6, 0 adds r1, r4, 0 - bl sub_807A290 + bl SendNonVolatileEndMessage _0806ACB8: adds r0, r4, 0 movs r1, 0x25 @@ -1284,7 +1284,7 @@ _0806ACB8: bne _0806ACE0 adds r0, r6, 0 adds r1, r4, 0 - bl sub_807A4C8 + bl SendProtectionEndMessage _0806ACE0: pop {r4-r6} pop {r0} diff --git a/asm/code_806CD90.s b/asm/code_806CD90.s index abb3d79c1..5dff0e3d4 100644 --- a/asm/code_806CD90.s +++ b/asm/code_806CD90.s @@ -1232,7 +1232,7 @@ _0806D9D4: bne _0806D9E6 mov r0, r9 adds r1, r7, 0 - bl sub_807A7C8 + bl SendTransformEndMessage _0806D9E6: mov r0, r8 cmp r0, 0 @@ -1692,7 +1692,7 @@ _0806DD62: mov r0, r9 adds r1, r7, 0 movs r2, 0x3 - bl sub_807A5D0 + bl SendWaitingEndMessage b _0806DDA2 .align 2, 0 _0806DD80: .4byte gDungeonGlobalData @@ -1706,7 +1706,7 @@ _0806DD94: mov r0, r9 adds r1, r7, 0 movs r2, 0x2 - bl sub_807A5D0 + bl SendWaitingEndMessage _0806DDA2: adds r0, r7, 0 bl sub_8078084 @@ -1854,7 +1854,7 @@ _0806DEC8: mov r0, r9 adds r1, r7, 0 movs r2, 0x3 - bl sub_807A5D0 + bl SendWaitingEndMessage b _0806DEF2 .align 2, 0 _0806DED4: .4byte gTeamInventory_203B460 @@ -1867,7 +1867,7 @@ _0806DEE4: mov r0, r9 adds r1, r7, 0 movs r2, 0x2 - bl sub_807A5D0 + bl SendWaitingEndMessage _0806DEF2: adds r0, r7, 0 bl sub_8078084 diff --git a/asm/code_8073CF0.s b/asm/code_8073CF0.s index b4d2e59a4..acc2ada43 100644 --- a/asm/code_8073CF0.s +++ b/asm/code_8073CF0.s @@ -1880,7 +1880,7 @@ _08074C48: adds r1, r7, 0 movs r2, 0x1 movs r3, 0x1 - bl sub_807A124 + bl SendSleepEndMessage _08074C6E: adds r0, r7, 0 bl EntityExists @@ -1909,7 +1909,7 @@ _08074C88: bne _08074CAA adds r0, r7, 0 adds r1, r7, 0 - bl sub_807A290 + bl SendNonVolatileEndMessage _08074CAA: adds r0, r7, 0 bl EntityExists @@ -1967,7 +1967,7 @@ _08074D00: bne _08074D22 adds r0, r7, 0 adds r1, r7, 0 - bl sub_807A400 + bl SendVolatileEndMessage _08074D22: adds r0, r7, 0 bl EntityExists @@ -1996,7 +1996,7 @@ _08074D3C: bne _08074D5E adds r0, r7, 0 adds r1, r7, 0 - bl sub_807A4C8 + bl SendProtectionEndMessage _08074D5E: adds r0, r7, 0 bl EntityExists @@ -2026,7 +2026,7 @@ _08074D78: adds r0, r7, 0 adds r1, r7, 0 movs r2, 0 - bl sub_807A5D0 + bl SendWaitingEndMessage _08074D9C: adds r0, r7, 0 bl EntityExists @@ -2055,7 +2055,7 @@ _08074DB6: bne _08074DD8 adds r0, r7, 0 adds r1, r7, 0 - bl sub_807A6C8 + bl SendLinkedEndMessage _08074DD8: adds r0, r7, 0 bl EntityExists @@ -2084,7 +2084,7 @@ _08074DF2: bne _08074E14 adds r0, r7, 0 adds r1, r7, 0 - bl sub_807A734 + bl SendMoveEndMessage _08074E14: adds r0, r7, 0 bl EntityExists @@ -2113,7 +2113,7 @@ _08074E2E: bne _08074E50 adds r0, r7, 0 adds r1, r7, 0 - bl sub_807A7C8 + bl SendTransformEndMessage _08074E50: adds r0, r7, 0 bl EntityExists @@ -2142,7 +2142,7 @@ _08074E6A: bne _08074E8C adds r0, r7, 0 adds r1, r7, 0 - bl sub_807A888 + bl SendEyesightEndMessage _08074E8C: adds r0, r7, 0 bl EntityExists @@ -2169,7 +2169,7 @@ _08074E9A: bne _08074EC6 adds r0, r7, 0 adds r1, r7, 0 - bl sub_807A924 + bl SendMuzzledEndMessage _08074EC6: adds r0, r7, 0 bl EntityExists diff --git a/asm/code_8077274.s b/asm/code_8077274.s index 67aaf86cc..fcc6d51be 100644 --- a/asm/code_8077274.s +++ b/asm/code_8077274.s @@ -1029,7 +1029,7 @@ _08078442: adds r0, r5, 0 adds r1, r4, 0 movs r2, 0 - bl sub_807A5D0 + bl SendWaitingEndMessage movs r0, 0x2A bl sub_803E46C _08078480: @@ -1049,7 +1049,7 @@ _08078480: adds r0, r5, 0 adds r1, r7, 0 movs r2, 0x2 - bl sub_807A5D0 + bl SendWaitingEndMessage _080784A8: movs r4, 0 movs r0, 0x2 @@ -1193,7 +1193,7 @@ sub_8078594: adds r0, r5, 0 adds r1, r6, 0 movs r2, 0x1 - bl sub_807A5D0 + bl SendWaitingEndMessage adds r0, r6, 0 bl sub_8041D48 movs r1, 0xE @@ -1284,7 +1284,7 @@ sub_8078678: adds r0, r7, 0 adds r1, r6, 0 movs r2, 0x3 - bl sub_807A5D0 + bl SendWaitingEndMessage movs r5, 0 _0807869A: ldr r0, _0807873C @@ -1307,7 +1307,7 @@ _0807869A: adds r0, r7, 0 adds r1, r4, 0 movs r2, 0 - bl sub_807A5D0 + bl SendWaitingEndMessage _080786C8: adds r5, 0x1 cmp r5, 0x13 @@ -1516,7 +1516,7 @@ sub_807885C: bne _08078884 adds r0, r6, 0 adds r1, r4, 0 - bl sub_807A7C8 + bl SendTransformEndMessage _08078884: ldr r0, _080788C0 adds r1, r4, 0 @@ -2351,7 +2351,7 @@ sub_8078F50: bne _08078F78 adds r0, r6, 0 adds r1, r4, 0 - bl sub_807A7C8 + bl SendTransformEndMessage _08078F78: ldr r0, _08078FB4 adds r1, r4, 0 @@ -4306,1852 +4306,4 @@ _08079F0E: _08079F1C: .4byte gUnknown_80FBD3C thumb_func_end sub_8079E34 - thumb_func_start sub_8079F20 -sub_8079F20: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r5, r0, 0 - adds r4, r1, 0 - lsls r2, 24 - lsrs r2, 24 - str r2, [sp] - lsls r3, 24 - lsrs r3, 24 - mov r10, r3 - movs r0, 0 - mov r8, r0 - mov r9, r0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _08079F50 - b _0807A0B8 -_08079F50: - ldr r7, [r4, 0x70] - adds r0, r4, 0 - bl HasNegativeStatus - lsls r0, 24 - cmp r0, 0 - beq _08079FF2 - movs r2, 0x1 - mov r8, r2 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0 - bl sub_807A124 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _08079F7C - b _0807A0B8 -_08079F7C: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_807A290 - adds r0, r5, 0 - adds r1, r4, 0 - bl SendImmobilizeEndMessage - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_807A400 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0 - bl sub_807A5D0 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_807A6C8 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_807A734 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_807A888 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_807A924 - adds r1, r7, 0 - adds r1, 0xFD - ldrb r0, [r1] - cmp r0, 0 - beq _08079FD8 - mov r0, r9 - strb r0, [r1] - ldr r0, _0807A08C - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079FD8: - adds r1, r7, 0 - adds r1, 0xF5 - ldrb r0, [r1] - cmp r0, 0 - beq _08079FF2 - mov r2, r9 - strb r2, [r1] - ldr r0, _0807A090 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079FF2: - adds r0, r4, 0 - bl GetMovementSpeed - adds r6, r0, 0 - movs r1, 0 - movs r3, 0x4 - ldr r2, _0807A094 - adds r0, r7, r2 -_0807A002: - strb r1, [r0] - subs r0, 0x1 - subs r3, 0x1 - cmp r3, 0 - bge _0807A002 - adds r0, r4, 0 - bl GetMovementSpeed - cmp r6, r0 - beq _0807A032 - movs r0, 0x1 - mov r8, r0 - ldr r1, _0807A098 - movs r2, 0x82 - lsls r2, 1 - adds r0, r7, r2 - ldr r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_0807A032: - movs r6, 0x1 - movs r0, 0x8C - lsls r0, 1 - adds r2, r7, r0 - movs r7, 0xFE - movs r3, 0x3 -_0807A03E: - ldrb r1, [r2] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _0807A05E - ldrb r1, [r2, 0x1] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _0807A05E - movs r0, 0x1 - mov r8, r0 - mov r9, r0 - adds r0, r7, 0 - ands r0, r1 - strb r0, [r2, 0x1] -_0807A05E: - adds r2, 0x8 - subs r3, 0x1 - cmp r3, 0 - bge _0807A03E - mov r2, r8 - cmp r2, 0 - beq _0807A0A0 - ldr r0, [sp] - cmp r0, 0 - beq _0807A078 - adds r0, r4, 0 - bl sub_80420C8 -_0807A078: - mov r2, r9 - cmp r2, 0 - beq _0807A0B2 - ldr r0, _0807A09C - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _0807A0B2 - .align 2, 0 -_0807A08C: .4byte gUnknown_8100594 -_0807A090: .4byte gPtrExposedWoreOffMessage -_0807A094: .4byte 0x00000111 -_0807A098: .4byte gUnknown_80FA124 -_0807A09C: .4byte gPtrSealedMoveReleasedMessage -_0807A0A0: - mov r0, r10 - cmp r0, 0 - bne _0807A0B2 - ldr r0, _0807A0C8 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_0807A0B2: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_0807A0B8: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807A0C8: .4byte gUnknown_81004E8 - thumb_func_end sub_8079F20 - - thumb_func_start sub_807A0CC -sub_807A0CC: - push {r4-r7,lr} - adds r5, r1, 0 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807A11E - ldr r4, [r5, 0x70] - adds r0, r4, 0 - movs r1, 0 - bl sub_806BFC0 - adds r1, r4, 0 - adds r1, 0xFD - movs r0, 0 - strb r0, [r1] - subs r1, 0x8 - strb r0, [r1] - movs r7, 0x1 - movs r6, 0xFE - movs r0, 0x8C - lsls r0, 1 - adds r2, r4, r0 - movs r3, 0x3 -_0807A0FE: - ldrb r1, [r2] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _0807A110 - ldrb r1, [r2, 0x1] - adds r0, r6, 0 - ands r0, r1 - strb r0, [r2, 0x1] -_0807A110: - adds r2, 0x8 - subs r3, 0x1 - cmp r3, 0 - bge _0807A0FE - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_0807A11E: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_807A0CC - - thumb_func_start sub_807A124 -sub_807A124: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r6, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r4, r2, 24 - lsls r3, 24 - lsrs r3, 24 - mov r8, r3 - movs r0, 0 - mov r9, r0 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _0807A14E - b _0807A27C -_0807A14E: - ldr r7, [r5, 0x70] - ldr r0, _0807A170 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r7, 0 - adds r0, 0xA8 - ldrb r0, [r0] - cmp r0, 0x6 - bls _0807A166 - b _0807A260 -_0807A166: - lsls r0, 2 - ldr r1, _0807A174 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807A170: .4byte gAvailablePokemonNames -_0807A174: .4byte _0807A178 - .align 2, 0 -_0807A178: - .4byte _0807A260 - .4byte _0807A194 - .4byte _0807A1A0 - .4byte _0807A1B4 - .4byte _0807A228 - .4byte _0807A1E8 - .4byte _0807A260 -_0807A194: - movs r1, 0x1 - mov r9, r1 - ldr r0, _0807A19C - b _0807A1A2 - .align 2, 0 -_0807A19C: .4byte gUnknown_80FA6E8 -_0807A1A0: - ldr r0, _0807A1B0 -_0807A1A2: - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80522F4 - b _0807A260 - .align 2, 0 -_0807A1B0: .4byte gUnknown_80FA708 -_0807A1B4: - movs r2, 0x1 - mov r9, r2 - ldr r0, _0807A1DC - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80522F4 - mov r0, r8 - cmp r0, 0 - beq _0807A260 - ldr r0, _0807A1E0 - movs r2, 0 - ldrsh r1, [r0, r2] - ldr r3, _0807A1E4 - adds r0, r5, 0 - movs r2, 0x8 - bl sub_806F324 - b _0807A260 - .align 2, 0 -_0807A1DC: .4byte gUnknown_80FA70C -_0807A1E0: .4byte gUnknown_80F4F78 -_0807A1E4: .4byte 0x0000020f -_0807A1E8: - movs r0, 0x1 - mov r9, r0 - ldr r0, _0807A220 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80522F4 - ldr r0, _0807A224 - movs r1, 0 - ldrsh r2, [r0, r1] - movs r4, 0 - str r4, [sp] - adds r0, r6, 0 - adds r1, r5, 0 - movs r3, 0 - bl HealTargetHP - adds r0, r7, 0 - adds r0, 0xA8 - strb r4, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - movs r2, 0x1 - movs r3, 0x1 - bl sub_8079F20 - b _0807A260 - .align 2, 0 -_0807A220: .4byte gUnknown_80FA710 -_0807A224: .4byte gUnknown_80F4F7A -_0807A228: - cmp r4, 0 - beq _0807A254 - adds r1, r7, 0 - adds r1, 0xA8 - movs r0, 0 - strb r0, [r1] - ldr r1, _0807A250 - adds r0, r5, 0 - movs r2, 0x1 - bl CalculateStatusTurns - adds r2, r0, 0 - adds r2, 0x1 - adds r0, r6, 0 - adds r1, r5, 0 - movs r3, 0x1 - bl sub_8075C58 - b _0807A27C - .align 2, 0 -_0807A250: .4byte gUnknown_80F4F2C -_0807A254: - ldr r0, _0807A28C - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80522F4 -_0807A260: - adds r1, r7, 0 - adds r1, 0xA8 - movs r0, 0 - strb r0, [r1] - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites - mov r2, r9 - cmp r2, 0 - beq _0807A27C - adds r0, r5, 0 - movs r1, 0x8 - bl sub_806CE68 -_0807A27C: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807A28C: .4byte gUnknown_80FA734 - thumb_func_end sub_807A124 - - thumb_func_start sub_807A290 -sub_807A290: - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807A31A - ldr r6, [r4, 0x70] - ldr r0, _0807A2C4 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r6, 0 - adds r0, 0xAC - ldrb r0, [r0] - cmp r0, 0x5 - bhi _0807A30C - lsls r0, 2 - ldr r1, _0807A2C8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807A2C4: .4byte gAvailablePokemonNames -_0807A2C8: .4byte _0807A2CC - .align 2, 0 -_0807A2CC: - .4byte _0807A30C - .4byte _0807A300 - .4byte _0807A2E4 - .4byte _0807A2E4 - .4byte _0807A2EC - .4byte _0807A30C -_0807A2E4: - ldr r0, _0807A2E8 - b _0807A2EE - .align 2, 0 -_0807A2E8: .4byte gUnknown_80FA8A8 -_0807A2EC: - ldr r0, _0807A2FC -_0807A2EE: - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _0807A30C - .align 2, 0 -_0807A2FC: .4byte gUnknown_80FA868 -_0807A300: - ldr r0, _0807A320 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_0807A30C: - adds r1, r6, 0 - adds r1, 0xAC - movs r0, 0 - strb r0, [r1] - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_0807A31A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807A320: .4byte gUnknown_80FA888 - thumb_func_end sub_807A290 - - thumb_func_start SendImmobilizeEndMessage -SendImmobilizeEndMessage: - push {r4-r7,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r7, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807A3F4 - ldr r6, [r4, 0x70] - ldr r0, _0807A358 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r6, 0 - adds r0, 0xB0 - ldrb r0, [r0] - cmp r0, 0x8 - bhi _0807A3DC - lsls r0, 2 - ldr r1, _0807A35C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807A358: .4byte gAvailablePokemonNames -_0807A35C: .4byte _0807A360 - .align 2, 0 -_0807A360: - .4byte _0807A3DC - .4byte _0807A384 - .4byte _0807A3A0 - .4byte _0807A3B4 - .4byte _0807A3B4 - .4byte _0807A3A0 - .4byte _0807A3D0 - .4byte _0807A398 - .4byte _0807A3DC -_0807A384: - ldr r0, _0807A394 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - movs r7, 0x1 - b _0807A3DC - .align 2, 0 -_0807A394: .4byte gUnknown_80FA8BC -_0807A398: - ldr r0, _0807A39C - b _0807A3A2 - .align 2, 0 -_0807A39C: .4byte gUnknown_80FA820 -_0807A3A0: - ldr r0, _0807A3B0 -_0807A3A2: - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _0807A3DC - .align 2, 0 -_0807A3B0: .4byte gUnknown_80FA824 -_0807A3B4: - ldr r0, _0807A3CC - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - adds r0, r6, 0 - adds r0, 0x9C - ldr r0, [r0] - bl sub_8076CB4 - b _0807A3DC - .align 2, 0 -_0807A3CC: .4byte gUnknown_80FA81C -_0807A3D0: - ldr r0, _0807A3FC - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_0807A3DC: - adds r1, r6, 0 - adds r1, 0xB0 - movs r0, 0 - strb r0, [r1] - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites - cmp r7, 0 - beq _0807A3F4 - adds r0, r4, 0 - bl sub_8042A74 -_0807A3F4: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807A3FC: .4byte gUnknown_80FABF8 - thumb_func_end SendImmobilizeEndMessage - - thumb_func_start sub_807A400 -sub_807A400: - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807A4BC - ldr r6, [r5, 0x70] - ldr r0, _0807A434 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r6, 0 - adds r0, 0xBC - ldrb r0, [r0] - cmp r0, 0x8 - bhi _0807A4A8 - lsls r0, 2 - ldr r1, _0807A438 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807A434: .4byte gAvailablePokemonNames -_0807A438: .4byte _0807A43C - .align 2, 0 -_0807A43C: - .4byte _0807A4A8 - .4byte _0807A49C - .4byte _0807A460 - .4byte _0807A478 - .4byte _0807A468 - .4byte _0807A470 - .4byte _0807A488 - .4byte _0807A480 - .4byte _0807A4A8 -_0807A460: - ldr r0, _0807A464 - b _0807A48A - .align 2, 0 -_0807A464: .4byte gUnknown_80FA800 -_0807A468: - ldr r0, _0807A46C - b _0807A48A - .align 2, 0 -_0807A46C: .4byte gUnknown_80FA97C -_0807A470: - ldr r0, _0807A474 - b _0807A48A - .align 2, 0 -_0807A474: .4byte gUnknown_80FA9DC -_0807A478: - ldr r0, _0807A47C - b _0807A48A - .align 2, 0 -_0807A47C: .4byte gUnknown_80FAC38 -_0807A480: - ldr r0, _0807A484 - b _0807A48A - .align 2, 0 -_0807A484: .4byte gUnknown_80FAB90 -_0807A488: - ldr r0, _0807A498 -_0807A48A: - ldr r2, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80522F4 - b _0807A4A8 - .align 2, 0 -_0807A498: .4byte gUnknown_80FAAAC -_0807A49C: - ldr r0, _0807A4C4 - ldr r2, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80522F4 -_0807A4A8: - adds r1, r6, 0 - adds r1, 0xBC - movs r0, 0 - strb r0, [r1] - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites - adds r0, r5, 0 - bl GetMovementSpeed -_0807A4BC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807A4C4: .4byte gUnknown_80FAC18 - thumb_func_end sub_807A400 - - thumb_func_start sub_807A4C8 -sub_807A4C8: - push {r4,r5,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _0807A4DA - b _0807A5C4 -_0807A4DA: - ldr r5, [r4, 0x70] - ldr r0, _0807A4FC - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r5, 0 - adds r0, 0xC4 - ldrb r0, [r0] - cmp r0, 0xF - bhi _0807A5B6 - lsls r0, 2 - ldr r1, _0807A500 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807A4FC: .4byte gAvailablePokemonNames -_0807A500: .4byte _0807A504 - .align 2, 0 -_0807A504: - .4byte _0807A5B6 - .4byte _0807A544 - .4byte _0807A54C - .4byte _0807A554 - .4byte _0807A55C - .4byte _0807A564 - .4byte _0807A56C - .4byte _0807A574 - .4byte _0807A57C - .4byte _0807A584 - .4byte _0807A55C - .4byte _0807A58C - .4byte _0807A594 - .4byte _0807A59C - .4byte _0807A5AC - .4byte _0807A5B6 -_0807A544: - ldr r0, _0807A548 - b _0807A59E - .align 2, 0 -_0807A548: .4byte gUnknown_80FA638 -_0807A54C: - ldr r0, _0807A550 - b _0807A59E - .align 2, 0 -_0807A550: .4byte gUnknown_80FA69C -_0807A554: - ldr r0, _0807A558 - b _0807A59E - .align 2, 0 -_0807A558: .4byte gUnknown_80FA658 -_0807A55C: - ldr r0, _0807A560 - b _0807A59E - .align 2, 0 -_0807A560: .4byte gUnknown_80FA67C -_0807A564: - ldr r0, _0807A568 - b _0807A59E - .align 2, 0 -_0807A568: .4byte gUnknown_80FA6BC -_0807A56C: - ldr r0, _0807A570 - b _0807A59E - .align 2, 0 -_0807A570: .4byte gUnknown_80FA6D4 -_0807A574: - ldr r0, _0807A578 - b _0807A59E - .align 2, 0 -_0807A578: .4byte gUnknown_80FA9C0 -_0807A57C: - ldr r0, _0807A580 - b _0807A59E - .align 2, 0 -_0807A580: .4byte gUnknown_80FAA68 -_0807A584: - ldr r0, _0807A588 - b _0807A59E - .align 2, 0 -_0807A588: .4byte gUnknown_80FAAC8 -_0807A58C: - ldr r0, _0807A590 - b _0807A59E - .align 2, 0 -_0807A590: .4byte gUnknown_80FAAE8 -_0807A594: - ldr r0, _0807A598 - b _0807A59E - .align 2, 0 -_0807A598: .4byte gUnknown_80FAB08 -_0807A59C: - ldr r0, _0807A5A8 -_0807A59E: - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage - b _0807A5B6 - .align 2, 0 -_0807A5A8: .4byte gUnknown_80FAB28 -_0807A5AC: - ldr r0, _0807A5CC - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage -_0807A5B6: - adds r1, r5, 0 - adds r1, 0xC4 - movs r0, 0 - strb r0, [r1] - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_0807A5C4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807A5CC: .4byte gUnknown_80FAB40 - thumb_func_end sub_807A4C8 - - thumb_func_start sub_807A5D0 -sub_807A5D0: - push {r4-r7,lr} - adds r5, r1, 0 - lsls r2, 24 - lsrs r6, r2, 24 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807A6B2 - ldr r7, [r5, 0x70] - ldr r0, _0807A604 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r7, 0 - adds r0, 0xC8 - ldrb r0, [r0] - cmp r0, 0x4 - bhi _0807A6A4 - lsls r0, 2 - ldr r1, _0807A608 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807A604: .4byte gAvailablePokemonNames -_0807A608: .4byte _0807A60C - .align 2, 0 -_0807A60C: - .4byte _0807A6A4 - .4byte _0807A620 - .4byte _0807A668 - .4byte _0807A634 - .4byte _0807A6A4 -_0807A620: - cmp r6, 0x1 - beq _0807A6A4 - ldr r0, _0807A630 - ldr r1, [r0] - adds r0, r5, 0 - bl SendMessage - b _0807A6A4 - .align 2, 0 -_0807A630: .4byte gUnknown_80FA7BC -_0807A634: - cmp r6, 0x3 - beq _0807A642 - ldr r0, _0807A658 - ldr r1, [r0] - adds r0, r5, 0 - bl SendMessage -_0807A642: - ldr r0, _0807A65C - ldr r0, [r0] - ldr r2, _0807A660 - adds r1, r0, r2 - movs r2, 0 - str r2, [r1] - ldr r1, _0807A664 - adds r0, r1 - str r2, [r0] - b _0807A6A4 - .align 2, 0 -_0807A658: .4byte gUnknown_80FA7DC -_0807A65C: .4byte gDungeonGlobalData -_0807A660: .4byte 0x00017b30 -_0807A664: .4byte 0x00017b3c -_0807A668: - adds r0, r7, 0 - adds r0, 0xC8 - movs r4, 0 - strb r4, [r0] - adds r0, r5, 0 - bl sub_806CEBC - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl sub_806CCB4 - ldr r0, _0807A6B8 - ldr r0, [r0] - ldr r2, _0807A6BC - adds r0, r2 - strb r4, [r0] - cmp r6, 0x2 - beq _0807A6A4 - ldr r0, _0807A6C0 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _0807A6C4 - ldr r1, [r0] - adds r0, r5, 0 - bl SendMessage -_0807A6A4: - adds r1, r7, 0 - adds r1, 0xC8 - movs r0, 0 - strb r0, [r1] - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_0807A6B2: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807A6B8: .4byte gDungeonGlobalData -_0807A6BC: .4byte 0x000037fc -_0807A6C0: .4byte gAvailablePokemonNames -_0807A6C4: .4byte gUnknown_80FA9A0 - thumb_func_end sub_807A5D0 - - thumb_func_start sub_807A6C8 -sub_807A6C8: - push {r4,r5,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807A72A - ldr r5, [r4, 0x70] - ldr r0, _0807A6F8 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r5, 0 - adds r0, 0xD0 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0807A6FC - cmp r0, 0x1 - ble _0807A716 - cmp r0, 0x2 - beq _0807A70C - b _0807A716 - .align 2, 0 -_0807A6F8: .4byte gAvailablePokemonNames -_0807A6FC: - ldr r0, _0807A708 - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage - b _0807A716 - .align 2, 0 -_0807A708: .4byte gUnknown_80FA79C -_0807A70C: - ldr r0, _0807A730 - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage -_0807A716: - adds r1, r5, 0 - adds r1, 0xD0 - movs r0, 0 - strb r0, [r1] - adds r1, 0x8 - movs r0, 0xFF - strb r0, [r1] - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_0807A72A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807A730: .4byte gUnknown_80FAA8C - thumb_func_end sub_807A6C8 - - thumb_func_start sub_807A734 -sub_807A734: - push {r4,r5,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807A7BC - ldr r5, [r4, 0x70] - ldr r0, _0807A764 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r5, 0 - adds r0, 0xDC - ldrb r0, [r0] - cmp r0, 0x5 - bhi _0807A7AE - lsls r0, 2 - ldr r1, _0807A768 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807A764: .4byte gAvailablePokemonNames -_0807A768: .4byte _0807A76C - .align 2, 0 -_0807A76C: - .4byte _0807A7AE - .4byte _0807A784 - .4byte _0807A78C - .4byte _0807A794 - .4byte _0807A7A4 - .4byte _0807A7AE -_0807A784: - ldr r0, _0807A788 - b _0807A796 - .align 2, 0 -_0807A788: .4byte gUnknown_80FA8E0 -_0807A78C: - ldr r0, _0807A790 - b _0807A796 - .align 2, 0 -_0807A790: .4byte gUnknown_80FA90C -_0807A794: - ldr r0, _0807A7A0 -_0807A796: - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage - b _0807A7AE - .align 2, 0 -_0807A7A0: .4byte gUnknown_80FA934 -_0807A7A4: - ldr r0, _0807A7C4 - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage -_0807A7AE: - adds r1, r5, 0 - adds r1, 0xDC - movs r0, 0 - strb r0, [r1] - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_0807A7BC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807A7C4: .4byte gUnknown_80FA95C - thumb_func_end sub_807A734 - - thumb_func_start sub_807A7C8 -sub_807A7C8: - push {r4-r6,lr} - adds r4, r1, 0 - movs r6, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807A87E - ldr r5, [r4, 0x70] - ldr r0, _0807A7FC - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r5, 0 - adds r0, 0xE4 - ldrb r0, [r0] - cmp r0, 0x4 - bhi _0807A866 - lsls r0, 2 - ldr r1, _0807A800 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807A7FC: .4byte gAvailablePokemonNames -_0807A800: .4byte _0807A804 - .align 2, 0 -_0807A804: - .4byte _0807A866 - .4byte _0807A818 - .4byte _0807A834 - .4byte _0807A824 - .4byte _0807A866 -_0807A818: - movs r6, 0x1 - ldr r0, _0807A820 - b _0807A826 - .align 2, 0 -_0807A820: .4byte gUnknown_80FA9F4 -_0807A824: - ldr r0, _0807A830 -_0807A826: - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage - b _0807A866 - .align 2, 0 -_0807A830: .4byte gUnknown_80FABBC -_0807A834: - movs r0, 0x2 - ldrsh r1, [r5, r0] - adds r0, r4, 0 - bl sub_8069F54 - strh r0, [r5, 0x4] - movs r1, 0x4 - ldrsh r0, [r5, r1] - bl sub_80687D0 - str r0, [r4, 0x64] - adds r0, r4, 0 - bl sub_806CEBC - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_806CCB4 - ldr r0, _0807A884 - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage -_0807A866: - adds r1, r5, 0 - adds r1, 0xE4 - movs r0, 0 - strb r0, [r1] - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites - cmp r6, 0 - beq _0807A87E - movs r0, 0x1 - bl sub_807EC28 -_0807A87E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807A884: .4byte gUnknown_80FAB6C - thumb_func_end sub_807A7C8 - - thumb_func_start sub_807A888 -sub_807A888: - push {r4,r5,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807A918 - ldr r5, [r4, 0x70] - ldr r0, _0807A8B8 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r5, 0 - adds r0, 0xE8 - ldrb r0, [r0] - cmp r0, 0x4 - bhi _0807A8F6 - lsls r0, 2 - ldr r1, _0807A8BC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0807A8B8: .4byte gAvailablePokemonNames -_0807A8BC: .4byte _0807A8C0 - .align 2, 0 -_0807A8C0: - .4byte _0807A8F6 - .4byte _0807A8D4 - .4byte _0807A8DC - .4byte _0807A8EC - .4byte _0807A8F6 -_0807A8D4: - ldr r0, _0807A8D8 - b _0807A8DE - .align 2, 0 -_0807A8D8: .4byte gUnknown_80FAA0C -_0807A8DC: - ldr r0, _0807A8E8 -_0807A8DE: - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage - b _0807A8F6 - .align 2, 0 -_0807A8E8: .4byte gUnknown_80FAA2C -_0807A8EC: - ldr r0, _0807A920 - ldr r1, [r0] - adds r0, r4, 0 - bl SendMessage -_0807A8F6: - adds r0, r5, 0 - adds r0, 0xE8 - movs r1, 0 - strb r1, [r0] - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites - ldrb r0, [r5, 0x7] - cmp r0, 0 - beq _0807A918 - movs r0, 0x31 - bl sub_803E46C - bl sub_8049ED4 - bl sub_8040A84 -_0807A918: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807A920: .4byte gUnknown_80FAA48 - thumb_func_end sub_807A888 - - thumb_func_start sub_807A924 -sub_807A924: - push {r4,r5,lr} - adds r5, r1, 0 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807A95C - ldr r4, [r5, 0x70] - ldr r0, _0807A964 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - adds r4, 0xEC - ldrb r0, [r4] - cmp r0, 0x1 - bne _0807A952 - ldr r0, _0807A968 - ldr r1, [r0] - adds r0, r5, 0 - bl SendMessage -_0807A952: - movs r0, 0 - strb r0, [r4] - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_0807A95C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807A964: .4byte gAvailablePokemonNames -_0807A968: .4byte gUnknown_80FABC0 - thumb_func_end sub_807A924 - - thumb_func_start sub_807A96C -sub_807A96C: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - ldr r0, [r4, 0x70] - adds r5, r0, 0 - movs r2, 0 - adds r0, 0xB0 - ldrb r0, [r0] - cmp r0, 0x6 - bne _0807A988 - adds r0, r6, 0 - bl SendImmobilizeEndMessage - movs r2, 0x1 -_0807A988: - adds r0, r5, 0 - adds r0, 0xA8 - ldrh r1, [r0] - ldr r0, _0807A9AC - cmp r1, r0 - bne _0807A9A2 - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x1 - bl sub_807A124 - movs r2, 0x1 -_0807A9A2: - adds r0, r2, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0807A9AC: .4byte 0x00007f01 - thumb_func_end sub_807A96C - - thumb_func_start sub_807A9B0 -sub_807A9B0: - push {r4,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x70] - adds r1, r0, 0 - adds r1, 0xA8 - movs r2, 0 - strb r2, [r1] - adds r0, 0xA9 - strb r2, [r0] - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_806A898 - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_807A9B0 - - thumb_func_start sub_807A9D8 -sub_807A9D8: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807AA20 - ldr r2, [r4, 0x70] - adds r3, r2, 0 - adds r3, 0xB0 - ldrb r0, [r3] - cmp r0, 0x1 - bne _0807AA20 - movs r1, 0 - strb r1, [r3] - adds r0, r2, 0 - adds r0, 0xB8 - strb r1, [r0] - adds r0, 0x1 - strb r1, [r0] - ldr r0, _0807AA28 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _0807AA2C - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_0807AA20: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807AA28: .4byte gAvailablePokemonNames -_0807AA2C: .4byte gUnknown_80FA8BC - thumb_func_end sub_807A9D8 - - thumb_func_start sub_807AA30 -sub_807AA30: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r4, 0 -_0807AA3C: - ldr r0, _0807AAD8 - ldr r0, [r0] - lsls r1, r4, 2 - ldr r2, _0807AADC - adds r0, r2 - adds r0, r1 - ldr r5, [r0] - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - adds r4, 0x1 - mov r10, r4 - cmp r0, 0 - beq _0807AB22 - ldr r1, [r5, 0x70] - adds r0, r1, 0 - adds r0, 0xA8 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0807AB22 - adds r0, r1, 0 - adds r0, 0xA9 - ldrb r0, [r0] - cmp r0, 0x7F - bne _0807AB22 - movs r0, 0 - mov r9, r0 - mov r8, r0 - adds r0, r5, 0 - bl GetEntityRoomIndex - lsls r0, 24 - lsrs r7, r0, 24 - movs r6, 0 -_0807AA82: - ldr r0, _0807AAD8 - ldr r0, [r0] - lsls r1, r6, 2 - ldr r2, _0807AAE0 - adds r0, r2 - adds r0, r1 - ldr r4, [r0] - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807AB00 - adds r0, r4, 0 - movs r1, 0x18 - bl HasItem - lsls r0, 24 - cmp r0, 0 - bne _0807AB00 - movs r0, 0x4 - ldrsh r1, [r4, r0] - movs r2, 0x4 - ldrsh r0, [r5, r2] - subs r1, r0 - cmp r1, 0 - bge _0807AABA - negs r1, r1 -_0807AABA: - cmp r1, 0x1 - bgt _0807AAE4 - movs r0, 0x6 - ldrsh r1, [r4, r0] - movs r2, 0x6 - ldrsh r0, [r5, r2] - subs r1, r0 - cmp r1, 0 - bge _0807AACE - negs r1, r1 -_0807AACE: - cmp r1, 0x1 - bgt _0807AAE4 - movs r0, 0x1 - mov r9, r0 - b _0807AB06 - .align 2, 0 -_0807AAD8: .4byte gDungeonGlobalData -_0807AADC: .4byte 0x0001358c -_0807AAE0: .4byte 0x0001357c -_0807AAE4: - adds r0, r4, 0 - movs r1, 0x1D - bl HasItem - lsls r0, 24 - cmp r0, 0 - beq _0807AB00 - adds r0, r4, 0 - bl GetEntityRoomIndex - lsls r0, 24 - lsrs r0, 24 - cmp r7, r0 - beq _0807AB1C -_0807AB00: - adds r6, 0x1 - cmp r6, 0x3 - ble _0807AA82 -_0807AB06: - mov r2, r8 - cmp r2, 0 - bne _0807AB1C - mov r0, r9 - cmp r0, 0 - beq _0807AB16 - movs r2, 0x1 - mov r8, r2 -_0807AB16: - mov r0, r8 - cmp r0, 0 - beq _0807AB22 -_0807AB1C: - adds r0, r5, 0 - bl sub_807A9B0 -_0807AB22: - mov r4, r10 - cmp r4, 0xF - ble _0807AA3C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_807AA30 - - thumb_func_start sub_807AB38 -sub_807AB38: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1A8 - adds r2, r0, 0 - lsls r1, 24 - lsrs r4, r1, 24 - ldr r0, [r2, 0x70] - ldrb r0, [r0, 0x6] - cmp r0, 0 - beq _0807AB54 - b _0807ADA6 -_0807AB54: - adds r0, r2, 0 - str r2, [sp, 0x1A4] - bl GetMapTileForDungeonEntity_2 - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - ldr r2, [sp, 0x1A4] - cmp r0, 0 - bne _0807AB6A - b _0807ADA6 -_0807AB6A: - ldr r3, _0807AC10 - ldr r0, [r3] - ldr r5, _0807AC14 - adds r1, r0, r5 - ldrb r0, [r1] - cmp r0, 0 - beq _0807AB7A - b _0807ADA6 -_0807AB7A: - movs r0, 0x1 - strb r0, [r1] - ldr r3, [r3] - ldr r1, _0807AC18 - adds r0, r3, r1 - ldrb r1, [r0] - cmp r1, 0xFF - bne _0807AB8C - b _0807ADA6 -_0807AB8C: - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r5, _0807AC1C - adds r0, r5 - adds r3, r0 - movs r0, 0 - mov r8, r0 - cmp r4, 0 - beq _0807AC20 - movs r1, 0x6 - ldrsh r0, [r2, r1] - subs r6, r0, 0x4 - adds r0, 0x4 - cmp r6, r0 - ble _0807ABAE - b _0807ACB4 -_0807ABAE: - movs r4, 0x4 - ldrsh r0, [r2, r4] - subs r4, r0, 0x4 - adds r0, 0x4 - adds r5, r6, 0x1 - mov r9, r5 - cmp r4, r0 - bgt _0807AC00 - mov r1, r8 - lsls r0, r1, 2 - mov r1, sp - adds r5, r0, r1 -_0807ABC6: - adds r0, r4, 0 - adds r1, r6, 0 - str r2, [sp, 0x1A4] - bl GetMapTile_2 - adds r1, r0, 0 - ldr r0, [r1, 0x10] - ldr r2, [sp, 0x1A4] - cmp r0, 0 - bne _0807ABF4 - ldrh r1, [r1] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _0807ABF4 - mov r0, r8 - cmp r0, 0x63 - bgt _0807ABF4 - strh r4, [r5] - strh r6, [r5, 0x2] - adds r5, 0x4 - movs r1, 0x1 - add r8, r1 -_0807ABF4: - adds r4, 0x1 - movs r1, 0x4 - ldrsh r0, [r2, r1] - adds r0, 0x4 - cmp r4, r0 - ble _0807ABC6 -_0807AC00: - mov r6, r9 - movs r4, 0x6 - ldrsh r0, [r2, r4] - adds r0, 0x4 - cmp r6, r0 - ble _0807ABAE - b _0807ACB4 - .align 2, 0 -_0807AC10: .4byte gDungeonGlobalData -_0807AC14: .4byte 0x00000671 -_0807AC18: .4byte 0x00003a0c -_0807AC1C: .4byte 0x000104c4 -_0807AC20: - movs r5, 0x4 - ldrsh r0, [r2, r5] - subs r1, r0, 0x4 - movs r5, 0x2 - ldrsh r4, [r3, r5] - mov r10, r4 - cmp r10, r1 - bge _0807AC32 - mov r10, r1 -_0807AC32: - adds r1, r0, 0x5 - movs r0, 0x6 - ldrsh r7, [r3, r0] - cmp r7, r1 - ble _0807AC3E - adds r7, r1, 0 -_0807AC3E: - movs r1, 0x6 - ldrsh r0, [r2, r1] - subs r2, r0, 0x4 - movs r4, 0x4 - ldrsh r1, [r3, r4] - cmp r1, r2 - bge _0807AC4E - adds r1, r2, 0 -_0807AC4E: - adds r0, 0x5 - movs r5, 0x8 - ldrsh r2, [r3, r5] - cmp r2, r0 - ble _0807AC5A - adds r2, r0, 0 -_0807AC5A: - adds r6, r1, 0 - cmp r6, r2 - bge _0807ACB4 -_0807AC60: - mov r4, r10 - adds r0, r6, 0x1 - mov r9, r0 - cmp r4, r7 - bge _0807ACAE - mov r1, r8 - lsls r0, r1, 2 - mov r1, sp - adds r5, r0, r1 -_0807AC72: - adds r0, r4, 0 - adds r1, r6, 0 - str r2, [sp, 0x1A4] - bl GetMapTile_2 - adds r1, r0, 0 - ldr r0, [r1, 0x10] - ldr r2, [sp, 0x1A4] - cmp r0, 0 - bne _0807ACA8 - ldrh r1, [r1] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _0807ACA8 - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0807ACA8 - mov r0, r8 - cmp r0, 0x63 - bgt _0807ACA8 - strh r4, [r5] - strh r6, [r5, 0x2] - adds r5, 0x4 - movs r1, 0x1 - add r8, r1 -_0807ACA8: - adds r4, 0x1 - cmp r4, r7 - blt _0807AC72 -_0807ACAE: - mov r6, r9 - cmp r6, r2 - blt _0807AC60 -_0807ACB4: - ldr r0, _0807AD74 - movs r2, 0 - ldrsh r0, [r0, r2] - ldr r1, _0807AD78 - movs r4, 0 - ldrsh r1, [r1, r4] - bl DungeonRandomRange - adds r7, r0, 0 - cmp r7, r8 - blt _0807ACCC - mov r7, r8 -_0807ACCC: - movs r6, 0 - cmp r6, r7 - bge _0807ADA0 - mov r10, r6 -_0807ACD4: - mov r0, r8 - bl DungeonRandomCapped - adds r2, r0, 0 - movs r3, 0 - cmp r3, r8 - bge _0807AD0C - lsls r0, r2, 2 - mov r5, sp - adds r1, r5, r0 - movs r4, 0 - ldrsh r1, [r1, r4] - adds r5, r0, 0 - cmp r1, 0 - bne _0807AD1C -_0807ACF2: - adds r2, 0x1 - cmp r2, r8 - blt _0807ACFA - movs r2, 0 -_0807ACFA: - adds r3, 0x1 - cmp r3, r8 - bge _0807AD0C - lsls r0, r2, 2 - add r0, sp - movs r5, 0 - ldrsh r0, [r0, r5] - cmp r0, 0 - beq _0807ACF2 -_0807AD0C: - lsls r0, r2, 2 - mov r2, sp - adds r1, r2, r0 - movs r4, 0 - ldrsh r1, [r1, r4] - adds r5, r0, 0 - cmp r1, 0 - beq _0807ADA0 -_0807AD1C: - movs r0, 0x1 - bl sub_803D970 - add r4, sp, 0x190 - movs r1, 0 - strh r0, [r4] - mov r0, r10 - strh r0, [r4, 0x8] - strb r1, [r4, 0x2] - mov r1, r10 - str r1, [r4, 0x4] - movs r0, 0x1 - strb r0, [r4, 0x10] - mov r2, sp - adds r1, r2, r5 - ldrh r0, [r1] - strh r0, [r4, 0xC] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0xE] - movs r5, 0 - ldrsh r0, [r4, r5] - movs r1, 0x1 - bl sub_806AA0C - lsls r0, 24 - adds r6, 0x1 - mov r9, r6 - cmp r0, 0 - beq _0807AD9A - adds r0, r4, 0 - movs r1, 0 - bl sub_806B7F8 - adds r4, r0, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807AD9A - movs r0, 0xC8 - lsls r0, 8 - str r0, [r4, 0x1C] - movs r5, 0 - b _0807AD84 - .align 2, 0 -_0807AD74: .4byte gUnknown_80F4DA2 -_0807AD78: .4byte gUnknown_80F4DA4 -_0807AD7C: - movs r0, 0x57 - bl sub_803E46C - adds r5, 0x1 -_0807AD84: - cmp r5, 0x63 - bgt _0807AD96 - ldr r0, [r4, 0x1C] - movs r1, 0xAA - bl sub_8009DA4 - str r0, [r4, 0x1C] - cmp r0, 0xFF - bgt _0807AD7C -_0807AD96: - mov r0, r10 - str r0, [r4, 0x1C] -_0807AD9A: - mov r6, r9 - cmp r6, r7 - blt _0807ACD4 -_0807ADA0: - movs r0, 0x1 - bl sub_804178C -_0807ADA6: - add sp, 0x1A8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_807AB38 - .align 2, 0 diff --git a/asm/code_8077274_1.s b/asm/code_8077274_1.s new file mode 100644 index 000000000..322710401 --- /dev/null +++ b/asm/code_8077274_1.s @@ -0,0 +1,344 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_807AB38 +sub_807AB38: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1A8 + adds r2, r0, 0 + lsls r1, 24 + lsrs r4, r1, 24 + ldr r0, [r2, 0x70] + ldrb r0, [r0, 0x6] + cmp r0, 0 + beq _0807AB54 + b _0807ADA6 +_0807AB54: + adds r0, r2, 0 + str r2, [sp, 0x1A4] + bl GetMapTileForDungeonEntity_2 + ldrh r1, [r0] + movs r0, 0x40 + ands r0, r1 + ldr r2, [sp, 0x1A4] + cmp r0, 0 + bne _0807AB6A + b _0807ADA6 +_0807AB6A: + ldr r3, _0807AC10 + ldr r0, [r3] + ldr r5, _0807AC14 + adds r1, r0, r5 + ldrb r0, [r1] + cmp r0, 0 + beq _0807AB7A + b _0807ADA6 +_0807AB7A: + movs r0, 0x1 + strb r0, [r1] + ldr r3, [r3] + ldr r1, _0807AC18 + adds r0, r3, r1 + ldrb r1, [r0] + cmp r1, 0xFF + bne _0807AB8C + b _0807ADA6 +_0807AB8C: + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 2 + ldr r5, _0807AC1C + adds r0, r5 + adds r3, r0 + movs r0, 0 + mov r8, r0 + cmp r4, 0 + beq _0807AC20 + movs r1, 0x6 + ldrsh r0, [r2, r1] + subs r6, r0, 0x4 + adds r0, 0x4 + cmp r6, r0 + ble _0807ABAE + b _0807ACB4 +_0807ABAE: + movs r4, 0x4 + ldrsh r0, [r2, r4] + subs r4, r0, 0x4 + adds r0, 0x4 + adds r5, r6, 0x1 + mov r9, r5 + cmp r4, r0 + bgt _0807AC00 + mov r1, r8 + lsls r0, r1, 2 + mov r1, sp + adds r5, r0, r1 +_0807ABC6: + adds r0, r4, 0 + adds r1, r6, 0 + str r2, [sp, 0x1A4] + bl GetMapTile_2 + adds r1, r0, 0 + ldr r0, [r1, 0x10] + ldr r2, [sp, 0x1A4] + cmp r0, 0 + bne _0807ABF4 + ldrh r1, [r1] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _0807ABF4 + mov r0, r8 + cmp r0, 0x63 + bgt _0807ABF4 + strh r4, [r5] + strh r6, [r5, 0x2] + adds r5, 0x4 + movs r1, 0x1 + add r8, r1 +_0807ABF4: + adds r4, 0x1 + movs r1, 0x4 + ldrsh r0, [r2, r1] + adds r0, 0x4 + cmp r4, r0 + ble _0807ABC6 +_0807AC00: + mov r6, r9 + movs r4, 0x6 + ldrsh r0, [r2, r4] + adds r0, 0x4 + cmp r6, r0 + ble _0807ABAE + b _0807ACB4 + .align 2, 0 +_0807AC10: .4byte gDungeonGlobalData +_0807AC14: .4byte 0x00000671 +_0807AC18: .4byte 0x00003a0c +_0807AC1C: .4byte 0x000104c4 +_0807AC20: + movs r5, 0x4 + ldrsh r0, [r2, r5] + subs r1, r0, 0x4 + movs r5, 0x2 + ldrsh r4, [r3, r5] + mov r10, r4 + cmp r10, r1 + bge _0807AC32 + mov r10, r1 +_0807AC32: + adds r1, r0, 0x5 + movs r0, 0x6 + ldrsh r7, [r3, r0] + cmp r7, r1 + ble _0807AC3E + adds r7, r1, 0 +_0807AC3E: + movs r1, 0x6 + ldrsh r0, [r2, r1] + subs r2, r0, 0x4 + movs r4, 0x4 + ldrsh r1, [r3, r4] + cmp r1, r2 + bge _0807AC4E + adds r1, r2, 0 +_0807AC4E: + adds r0, 0x5 + movs r5, 0x8 + ldrsh r2, [r3, r5] + cmp r2, r0 + ble _0807AC5A + adds r2, r0, 0 +_0807AC5A: + adds r6, r1, 0 + cmp r6, r2 + bge _0807ACB4 +_0807AC60: + mov r4, r10 + adds r0, r6, 0x1 + mov r9, r0 + cmp r4, r7 + bge _0807ACAE + mov r1, r8 + lsls r0, r1, 2 + mov r1, sp + adds r5, r0, r1 +_0807AC72: + adds r0, r4, 0 + adds r1, r6, 0 + str r2, [sp, 0x1A4] + bl GetMapTile_2 + adds r1, r0, 0 + ldr r0, [r1, 0x10] + ldr r2, [sp, 0x1A4] + cmp r0, 0 + bne _0807ACA8 + ldrh r1, [r1] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _0807ACA8 + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _0807ACA8 + mov r0, r8 + cmp r0, 0x63 + bgt _0807ACA8 + strh r4, [r5] + strh r6, [r5, 0x2] + adds r5, 0x4 + movs r1, 0x1 + add r8, r1 +_0807ACA8: + adds r4, 0x1 + cmp r4, r7 + blt _0807AC72 +_0807ACAE: + mov r6, r9 + cmp r6, r2 + blt _0807AC60 +_0807ACB4: + ldr r0, _0807AD74 + movs r2, 0 + ldrsh r0, [r0, r2] + ldr r1, _0807AD78 + movs r4, 0 + ldrsh r1, [r1, r4] + bl DungeonRandomRange + adds r7, r0, 0 + cmp r7, r8 + blt _0807ACCC + mov r7, r8 +_0807ACCC: + movs r6, 0 + cmp r6, r7 + bge _0807ADA0 + mov r10, r6 +_0807ACD4: + mov r0, r8 + bl DungeonRandomCapped + adds r2, r0, 0 + movs r3, 0 + cmp r3, r8 + bge _0807AD0C + lsls r0, r2, 2 + mov r5, sp + adds r1, r5, r0 + movs r4, 0 + ldrsh r1, [r1, r4] + adds r5, r0, 0 + cmp r1, 0 + bne _0807AD1C +_0807ACF2: + adds r2, 0x1 + cmp r2, r8 + blt _0807ACFA + movs r2, 0 +_0807ACFA: + adds r3, 0x1 + cmp r3, r8 + bge _0807AD0C + lsls r0, r2, 2 + add r0, sp + movs r5, 0 + ldrsh r0, [r0, r5] + cmp r0, 0 + beq _0807ACF2 +_0807AD0C: + lsls r0, r2, 2 + mov r2, sp + adds r1, r2, r0 + movs r4, 0 + ldrsh r1, [r1, r4] + adds r5, r0, 0 + cmp r1, 0 + beq _0807ADA0 +_0807AD1C: + movs r0, 0x1 + bl sub_803D970 + add r4, sp, 0x190 + movs r1, 0 + strh r0, [r4] + mov r0, r10 + strh r0, [r4, 0x8] + strb r1, [r4, 0x2] + mov r1, r10 + str r1, [r4, 0x4] + movs r0, 0x1 + strb r0, [r4, 0x10] + mov r2, sp + adds r1, r2, r5 + ldrh r0, [r1] + strh r0, [r4, 0xC] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0xE] + movs r5, 0 + ldrsh r0, [r4, r5] + movs r1, 0x1 + bl sub_806AA0C + lsls r0, 24 + adds r6, 0x1 + mov r9, r6 + cmp r0, 0 + beq _0807AD9A + adds r0, r4, 0 + movs r1, 0 + bl sub_806B7F8 + adds r4, r0, 0 + bl EntityExists + lsls r0, 24 + cmp r0, 0 + beq _0807AD9A + movs r0, 0xC8 + lsls r0, 8 + str r0, [r4, 0x1C] + movs r5, 0 + b _0807AD84 + .align 2, 0 +_0807AD74: .4byte gUnknown_80F4DA2 +_0807AD78: .4byte gUnknown_80F4DA4 +_0807AD7C: + movs r0, 0x57 + bl sub_803E46C + adds r5, 0x1 +_0807AD84: + cmp r5, 0x63 + bgt _0807AD96 + ldr r0, [r4, 0x1C] + movs r1, 0xAA + bl sub_8009DA4 + str r0, [r4, 0x1C] + cmp r0, 0xFF + bgt _0807AD7C +_0807AD96: + mov r0, r10 + str r0, [r4, 0x1C] +_0807AD9A: + mov r6, r9 + cmp r6, r7 + blt _0807ACD4 +_0807ADA0: + movs r0, 0x1 + bl sub_804178C +_0807ADA6: + add sp, 0x1A8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_807AB38 + + .align 2,0 diff --git a/include/code_8077274_1.h b/include/code_8077274_1.h new file mode 100644 index 000000000..e7a81dfbb --- /dev/null +++ b/include/code_8077274_1.h @@ -0,0 +1,22 @@ +#ifndef GUARD_CODE_8077274_1_H +#define GUARD_CODE_8077274_1_H + +void sub_8079F20(struct DungeonEntity * pokemon, struct DungeonEntity * target, u8 param_3, u8 param_4); +void sub_807A0CC(struct DungeonEntity * pokemon, struct DungeonEntity * target); +void SendSleepEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * target, bool8 param_3, bool8 param_4); +void SendNonVolatileEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * target); +void SendImmobilizeEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity *target); +void SendVolatileEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity *target); +void SendProtectionEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity *target); +void SendWaitingEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * target, u8 waitingStatus); +void SendLinkedEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * target); +void SendMoveEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * target); +void SendTransformEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity *target); +void SendEyesightEndMessage(struct DungeonEntity * pokemon,struct DungeonEntity * target); +void SendMuzzledEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * target); +void sub_807A96C(struct DungeonEntity *pokemon, struct DungeonEntity *target); +void sub_807A9B0(struct DungeonEntity * pokemon); +void sub_807A9D8(struct DungeonEntity *pokemon, struct DungeonEntity *target); +void sub_807AA30(void); + +#endif // !GUARD_CODE_8077274_1_H diff --git a/include/dungeon_entity.h b/include/dungeon_entity.h index 750f4a96e..b99cf8a29 100644 --- a/include/dungeon_entity.h +++ b/include/dungeon_entity.h @@ -101,7 +101,9 @@ struct DungeonEntityData /* 0x8C */ u8 IQSkillsSelected[4]; // IQ skills selected in the IQ skills menu. /* 0x90 */ u8 IQSkillsEnabled[4]; /* 0x94 */ u8 tactic; - u8 fill95[0xA4 - 0x95]; + u8 fill95[0x9C - 0x95]; + /* 0x9C */ u32 unk9C; + u8 fillA0[0xA4 - 0xA0]; /* 0xA4 */ u8 clientType; u8 fillA5[0xA8 - 0xA5]; // Statuses are split into groups based on which ones can't overlap. @@ -135,7 +137,8 @@ struct DungeonEntityData /* 0xCC */ u8 cursedDamageTimer; u8 fillCD[0xD0 - 0xCD]; /* 0xD0 */ u8 linkedStatus; - u8 fillD1[0xD9 - 0xD1]; + u8 fillD1[0xD8 - 0xD1]; + /* 0xD8 */ u8 unkD8; /* 0xD9 */ u8 linkedStatusTurnsLeft; /* 0xDA */ u8 linkedStatusDamageTimer; u8 fillDB; @@ -270,7 +273,9 @@ struct DungeonEntity /* 0x50 */ u16 spriteBaseForDirection; u8 fill52[0x54 - 0x52]; /* 0x54 */ u16 spriteGlobalIndex; - u8 fill56[0x6A - 0x56]; + u8 fill56[0x64 - 0x56]; + u32 unk64; + u8 fill68[2]; /* 0x6A */ u8 unk6A; /* 0x6A */ u8 unk6B; /* 0x6C */ u8 facingDir; diff --git a/include/dungeon_global_data.h b/include/dungeon_global_data.h index bc40855d6..b0bebc9cc 100644 --- a/include/dungeon_global_data.h +++ b/include/dungeon_global_data.h @@ -110,7 +110,11 @@ struct DungeonGlobalData /* 0x1358C */ struct DungeonEntity *wildPokemon[DUNGEON_MAX_WILD_POKEMON]; /* 0x135CC */ struct DungeonEntity *allPokemon[DUNGEON_MAX_POKEMON]; // Contains both team and wild Pokémon /* 0x1361C */ struct DungeonEntity *clientPokemon[2]; // Not sure how large this array is. - u8 fill13624[0x181E8 - 0x13624]; + u8 fill13624[0x17B30 - 0x13624]; + /* 0x17B30 */ u32 unk17B30; + /* 0x17B34 */ u8 fillunk1734[0x17B3C - 0x17B34]; + /* 0x17B30 */ u32 unk17B3C; + u8 fill17B40[0x181E8 - 0x17B40]; /* 0x181E8 */ struct Position posScreenWorld; /* 0x181EC */ struct Position prevPosScreenWorld; /* 0x181F0 */ struct Position posScreenPixel; diff --git a/ld_script.txt b/ld_script.txt index 98c0abc29..a7638126c 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -243,6 +243,8 @@ SECTIONS { asm/code_8075BA4.o(.text); src/status.o(.text); asm/code_8077274.o(.text); + src/code_8077274_1.o(.text); + asm/code_8077274_1.o(.text); src/dungeon_ai_movement.o(.text); asm/code_807AEBC.o(.text); src/dungeon_ai_movement_1.o(.text); diff --git a/src/code_8048480.c b/src/code_8048480.c index 427d96267..0244461de 100644 --- a/src/code_8048480.c +++ b/src/code_8048480.c @@ -40,7 +40,7 @@ extern void sub_8076D10(struct DungeonEntity *pokemon, struct DungeonEntity *r1) extern void LevelDownTarget(struct DungeonEntity *pokemon, struct DungeonEntity *r1, u32 r2); extern void sub_8078B5C(struct DungeonEntity *, struct DungeonEntity *, u32, u32, u32); extern void SetMessageArgument(u8 *buffer, struct DungeonEntity *r1, u32); -extern void sub_807A290(struct DungeonEntity *pokemon, struct DungeonEntity *r1); +extern void SendNonVolatileEndMessage(struct DungeonEntity *pokemon, struct DungeonEntity *r1); extern void sub_80522F4(struct DungeonEntity *pokemon, struct DungeonEntity *r1, const char[]); extern void RestoreVisionTarget(struct DungeonEntity *pokemon, struct DungeonEntity *r1); extern void sub_8077910(struct DungeonEntity *pokemon, struct DungeonEntity *r1, u32, u32); @@ -110,7 +110,7 @@ void sub_804841C(struct DungeonEntity *pokemon, struct DungeonEntity *target) void sub_8048428(struct DungeonEntity *pokemon, struct DungeonEntity *target) { if(target->entityData->nonVolatileStatus == NON_VOLATILE_STATUS_PARALYZED) - sub_807A290(pokemon, target); + SendNonVolatileEndMessage(pokemon, target); else // Pointer to "But nothing happened!" sub_80522F4(pokemon, target, *gUnknown_80F89F4); @@ -119,7 +119,7 @@ void sub_8048428(struct DungeonEntity *pokemon, struct DungeonEntity *target) void sub_8048450(struct DungeonEntity *pokemon, struct DungeonEntity *target) { if((u8)(target->entityData->nonVolatileStatus - 2) <= 1) - sub_807A290(pokemon, target); + SendNonVolatileEndMessage(pokemon, target); else // Pointer to "But nothing happened!" sub_80522F4(pokemon, target, *gUnknown_80F89F4); @@ -164,7 +164,7 @@ void sub_80484DC(struct DungeonEntity *pokemon, struct DungeonEntity *target) void sub_80484E8(struct DungeonEntity *pokemon, struct DungeonEntity *target) { if(target->entityData->nonVolatileStatus == NON_VOLATILE_STATUS_BURNED) - sub_807A290(pokemon, target); + SendNonVolatileEndMessage(pokemon, target); else { SetMessageArgument(gAvailablePokemonNames, target, 0); diff --git a/src/code_8057824.c b/src/code_8057824.c index cc950883a..8d18c8dd3 100644 --- a/src/code_8057824.c +++ b/src/code_8057824.c @@ -2,6 +2,7 @@ #include "constants/status.h" #include "dungeon_global_data.h" #include "dungeon_entity.h" +#include "code_8077274_1.h" #include "moves.h" #include "status_checks_1.h" #include "weather.h" @@ -42,7 +43,6 @@ extern void sub_80768DC(struct DungeonEntity *, struct DungeonEntity *, u32, u32 extern void sub_80772C0(struct DungeonEntity *r0, struct DungeonEntity *r1, u32, u32, u32); extern u8 sub_807EAA0(u32, u32); extern void sub_80522F4(struct DungeonEntity *r1, struct DungeonEntity *r2, const char[]); -extern void sub_8079F20(struct DungeonEntity *r0, struct DungeonEntity *r1, u32, u32); extern void sub_8077434(struct DungeonEntity *r0, struct DungeonEntity *r1, u32 , u32, u32); extern s32 sub_80556BC(struct DungeonEntity *, struct DungeonEntity *, u8, u32, u32, u32); extern u8 sub_805727C(struct DungeonEntity *, struct DungeonEntity *, s16); diff --git a/src/code_8077274_1.c b/src/code_8077274_1.c new file mode 100644 index 000000000..a7f08e949 --- /dev/null +++ b/src/code_8077274_1.c @@ -0,0 +1,743 @@ +#include "global.h" +#include "constants/item.h" +#include "constants/status.h" +#include "dungeon_entity.h" +#include "dungeon_global_data.h" +#include "dungeon_items.h" +#include "dungeon_util.h" +#include "code_80521D0.h" +#include "code_8077274_1.h" +#include "code_808417C.h" +#include "status_checks_1.h" + +extern u8 gAvailablePokemonNames[0x58]; +extern u8 *gUnknown_80FA8BC[]; +extern u8 *gUnknown_80FA824[]; +extern u8 *gUnknown_80FA81C[]; +extern u8 *gUnknown_80FABF8[]; +extern u8 *gUnknown_80FA820[]; +extern u8 *gUnknown_80FA800[]; +extern u8 *gUnknown_80FAC38[]; +extern u8 *gUnknown_80FA97C[]; +extern u8 *gUnknown_80FA9DC[]; +extern u8 *gUnknown_80FAAAC[]; +extern u8 *gUnknown_80FAB90[]; +extern u8 *gUnknown_80FAC18[]; +extern u8 *gUnknown_80FA638[]; +extern u8 *gUnknown_80FA69C[]; +extern u8 *gUnknown_80FA658[]; +extern u8 *gUnknown_80FA67C[]; +extern u8 *gUnknown_80FA6BC[]; +extern u8 *gUnknown_80FA6D4[]; +extern u8 *gUnknown_80FA9C0[]; +extern u8 *gUnknown_80FAA68[]; +extern u8 *gUnknown_80FAAC8[]; +extern u8 *gUnknown_80FAAE8[]; +extern u8 *gUnknown_80FAB08[]; +extern u8 *gUnknown_80FAB28[]; +extern u8 *gUnknown_80FAB40[]; +extern u8 *gUnknown_80FA7BC[]; +extern u8 *gUnknown_80FA9A0[]; +extern u8 *gUnknown_80FA7DC[]; +extern u8 *gUnknown_80FA79C[]; +extern u8 *gUnknown_80FAA8C[]; +extern u8 *gUnknown_80FA8E0[]; +extern u8 *gUnknown_80FA90C[]; +extern u8 *gUnknown_80FA934[]; +extern u8 *gUnknown_80FA95C[]; +extern u8 *gUnknown_80FABBC[]; +extern u8 *gUnknown_80FAB6C[]; +extern u8 *gUnknown_80FA9F4[]; +extern u8 *gUnknown_80FAA0C[]; +extern u8 *gUnknown_80FAA2C[]; +extern u8 *gUnknown_80FAA48[]; +extern u8 *gUnknown_80FABC0[]; +extern u8 *gUnknown_80FA888[]; +extern u8 *gUnknown_80FA8A8[]; +extern u8 *gUnknown_80FA868[]; +extern s16 gUnknown_80F4F78; +extern s16 gUnknown_80F4F2C[]; +extern s32 gUnknown_80F4F7A; +extern u8 *gUnknown_80FA6E8[]; +extern u8 *gUnknown_80FA708[]; +extern u8 *gUnknown_80FA70C[]; +extern u8 *gUnknown_80FA734[]; +extern u8 *gUnknown_80FA710[]; +extern u8 *gUnknown_80FA124[]; +extern u8 *gPtrSealedMoveReleasedMessage[]; +extern u8 *gUnknown_81004E8[]; +extern u8 *gPtrExposedWoreOffMessage[]; +extern u8 *gUnknown_8100594[]; + +extern void sub_8049ED4(); +extern void sub_8040A84(); +extern void sub_803E46C(u32); +extern u8 sub_806CEBC(struct DungeonEntity *); +extern void sub_806CCB4(struct DungeonEntity *, u8); +extern void SetMessageArgument(u8 *buffer, struct DungeonEntity *r1, u32); +extern void sub_80522F4(struct DungeonEntity *pokemon, struct DungeonEntity *r1, const char[]); +extern void DungeonEntityUpdateStatusSprites(struct DungeonEntity *); +extern void sub_8042A74(struct DungeonEntity *r0); +extern void sub_8076CB4(u32); +extern s32 GetMovementSpeed(struct DungeonEntity *); +extern void sub_807EC28(u32); +extern s32 sub_8069F54(struct DungeonEntity *param_1, s16 param_2); +extern u32 sub_80687D0(s16); +extern void sub_806A898(struct DungeonEntity *, u32, u32); +extern void HealTargetHP(struct DungeonEntity *pokemon, struct DungeonEntity *r1, s16, s16, u32); +extern void sub_806CE68(struct DungeonEntity *, s32); +extern void sub_806F324(struct DungeonEntity *, s16, u32, u32); +extern void sub_8075C58(struct DungeonEntity *, struct DungeonEntity *, s32, s32); +extern void sub_806BFC0(struct DungeonEntityData *, u32); +extern void sub_80420C8(struct DungeonEntity *r0); + +void sub_8079F20(struct DungeonEntity * pokemon, struct DungeonEntity * target, u8 param_3, u8 param_4) +{ + bool8 bVar1; // r9 + s32 moveSpeed; + struct PokemonMove *move; + struct DungeonEntityData *entityData; // r7 + bool8 bVar8; // r8 + s32 index; + + bVar8 = FALSE; + bVar1 = FALSE; + if (EntityExists(target)) { + entityData = target->entityData; + if (HasNegativeStatus(target)) { + bVar8 = TRUE; + SendSleepEndMessage(pokemon,target,0,0); + if (!EntityExists(target)) { + return; + } + SendNonVolatileEndMessage(pokemon,target); + SendImmobilizeEndMessage(pokemon,target); + SendVolatileEndMessage(pokemon,target); + SendWaitingEndMessage(pokemon,target,0); + SendLinkedEndMessage(pokemon,target); + SendMoveEndMessage(pokemon,target); + SendEyesightEndMessage(pokemon,target); + SendMuzzledEndMessage(pokemon,target); + if (entityData->perishSongTimer != 0) { + entityData->perishSongTimer = 0; + sub_80522F4(pokemon,target,*gUnknown_8100594); + } + if (entityData->exposedStatus != 0) { + entityData->exposedStatus = 0; + sub_80522F4(pokemon,target,*gPtrExposedWoreOffMessage); + } + } + + moveSpeed = GetMovementSpeed(target); + for(index = 0; index < NUM_SPEED_TURN_COUNTERS; index++) + { + entityData->slowTurnsLeft[index] = 0; + } + + if (moveSpeed != GetMovementSpeed(target)) { + bVar8 = TRUE; + sub_80522F4(pokemon,target,gUnknown_80FA124[entityData->movementSpeed]); + } + + for(index = 0; index < MAX_MON_MOVES; index++) + { + move = &entityData->moves[index]; + if ((move->moveFlags & MOVE_FLAG_EXISTS) && (move->moveFlags2 & MOVE_FLAG_EXISTS)) { + bVar8 = TRUE; + bVar1 = TRUE; + move->moveFlags2 &= 0xfe; + } + } + + if (bVar8) { + if (param_3 != 0) { + sub_80420C8(target); + } + if (bVar1) { + sub_80522F4(pokemon,target,*gPtrSealedMoveReleasedMessage); + } + } + else if (param_4 == 0) { + sub_80522F4(pokemon,target,*gUnknown_81004E8); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void sub_807A0CC(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + struct PokemonMove *move; + struct DungeonEntityData *entityData; + s32 index; + + if (EntityExists(target)) { + entityData = target->entityData; + sub_806BFC0(entityData,0); + entityData->perishSongTimer = 0; + entityData->exposedStatus = 0; + + for(index = 0; index < MAX_MON_MOVES; index++) + { + move = &entityData->moves[index]; + if ((move->moveFlags & MOVE_FLAG_EXISTS) != 0) { + move->moveFlags2 = move->moveFlags2 & 0xfe; + } + } + DungeonEntityUpdateStatusSprites(target); + }; +} + +void SendSleepEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * target, bool8 param_3, bool8 param_4) +{ + struct DungeonEntityData *entityData; + bool8 bVar4; + + bVar4 = FALSE; + if (!EntityExists(target)) { + return; + } + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + switch(entityData->sleepStatus) { + case SLEEP_STATUS_NONE: + case 6: + break; + case SLEEP_STATUS_SLEEP: + bVar4 = TRUE; + sub_80522F4(pokemon,target,*gUnknown_80FA6E8); + break; + case SLEEP_STATUS_SLEEPLESS: + sub_80522F4(pokemon,target,*gUnknown_80FA708); + break; + case SLEEP_STATUS_NIGHTMARE: + bVar4 = TRUE; + sub_80522F4(pokemon,target,*gUnknown_80FA70C); + if (param_4) { + sub_806F324(target,gUnknown_80F4F78,8,0x20f); + } + break; + case SLEEP_STATUS_NAPPING: + bVar4 = TRUE; + sub_80522F4(pokemon,target,*gUnknown_80FA710); + HealTargetHP(pokemon,target,gUnknown_80F4F7A,0,0); + entityData->sleepStatus = 0; + sub_8079F20(pokemon,target,1,1); + break; + case SLEEP_STATUS_YAWNING: + if (param_3) { + entityData->sleepStatus = SLEEP_STATUS_NONE; + sub_8075C58(pokemon,target,CalculateStatusTurns(target,gUnknown_80F4F2C,1) + 1,1); + return; + } + sub_80522F4(pokemon,target,*gUnknown_80FA734); + break; + } + entityData->sleepStatus = SLEEP_STATUS_NONE; + DungeonEntityUpdateStatusSprites(target); + if (bVar4) { + sub_806CE68(target,8); + } +} + +void SendNonVolatileEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + struct DungeonEntityData *entityData; + + if (!EntityExists(target)) { + return; + } + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + switch(entityData->nonVolatileStatus) { + case NON_VOLATILE_STATUS_NONE: + case 5: + break; + case NON_VOLATILE_STATUS_POISONED: + case NON_VOLATILE_STATUS_BADLY_POISONED: + sub_80522F4(pokemon,target,*gUnknown_80FA8A8); + break; + case NON_VOLATILE_STATUS_PARALYZED: + sub_80522F4(pokemon,target,*gUnknown_80FA868); + break; + case NON_VOLATILE_STATUS_BURNED: + sub_80522F4(pokemon,target,*gUnknown_80FA888); + break; + + } + entityData->nonVolatileStatus = NON_VOLATILE_STATUS_NONE; + DungeonEntityUpdateStatusSprites(target); +} + +void SendImmobilizeEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity *target) +{ + bool8 bVar1; + struct DungeonEntityData *entityData; + + bVar1 = FALSE; + if (!EntityExists(target)) { + return; + } + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + switch(entityData->immobilizeStatus) { + case IMMOBILIZE_STATUS_NONE: + case 8: + break; + case IMMOBILIZE_STATUS_FROZEN: + sub_80522F4(pokemon,target,*gUnknown_80FA8BC); + bVar1 = TRUE; + break; + case IMMOBILIZE_STATUS_SQUEEZED: + sub_80522F4(pokemon,target,*gUnknown_80FA820); + break; + case IMMOBILIZE_STATUS_IMMOBILIZED: + case IMMOBILIZE_STATUS_INGRAIN: + sub_80522F4(pokemon,target,*gUnknown_80FA824); + break; + case IMMOBILIZE_STATUS_WRAPPED_AROUND_FOE: + case IMMOBILIZE_STATUS_WRAPPED_BY_FOE: + sub_80522F4(pokemon,target,*gUnknown_80FA81C); + sub_8076CB4(entityData->unk9C); + break; + case IMMOBILIZE_STATUS_PETRIFIED: + sub_80522F4(pokemon,target,*gUnknown_80FABF8); + break; + } + entityData->immobilizeStatus = IMMOBILIZE_STATUS_NONE; + DungeonEntityUpdateStatusSprites(target); + if (bVar1) { + sub_8042A74(target); + } +} + +void SendVolatileEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity *target) +{ + struct DungeonEntityData *entityData; + + if (!EntityExists(target)) { + return; + } + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + switch(entityData->volatileStatus) { + case VOLATILE_STATUS_NONE: + case 8: + break; + case VOLATILE_STATUS_CONFUSED: + sub_80522F4(pokemon,target,*gUnknown_80FA800); + break; + case VOLATILE_STATUS_COWERING: + sub_80522F4(pokemon,target,*gUnknown_80FA97C); + break; + case VOLATILE_STATUS_TAUNTED: + sub_80522F4(pokemon,target,*gUnknown_80FA9DC); + break; + case VOLATILE_STATUS_PAUSED: + sub_80522F4(pokemon,target,*gUnknown_80FAC38); + break; + case VOLATILE_STATUS_INFATUATED: + sub_80522F4(pokemon,target,*gUnknown_80FAB90); + break; + case VOLATILE_STATUS_ENCORE: + sub_80522F4(pokemon,target,*gUnknown_80FAAAC); + break; + case VOLATILE_STATUS_CRINGING: + sub_80522F4(pokemon,target,*gUnknown_80FAC18); + break; + } + entityData->volatileStatus = VOLATILE_STATUS_NONE; + DungeonEntityUpdateStatusSprites(target); + GetMovementSpeed(target); +} + +void SendProtectionEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity *target) +{ + struct DungeonEntityData *entityData; + + if (!EntityExists(target)) { + return; + } + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + switch(entityData->protectionStatus) { + case PROTECTION_STATUS_NONE: + case 0xF: + break; + case PROTECTION_STATUS_REFLECT: + SendMessage(target,*gUnknown_80FA638); + break; + case PROTECTION_STATUS_SAFEGUARD: + SendMessage(target,*gUnknown_80FA69C); + break; + case PROTECTION_STATUS_LIGHT_SCREEN: + SendMessage(target,*gUnknown_80FA658); + break; + case PROTECTION_STATUS_COUNTER: + case PROTECTION_STATUS_MINI_COUNTER: + SendMessage(target,*gUnknown_80FA67C); + break; + case PROTECTION_STATUS_MAGIC_COAT: + SendMessage(target,*gUnknown_80FA6BC); + break; + case PROTECTION_STATUS_WISH: + SendMessage(target,*gUnknown_80FA6D4); + break; + case PROTECTION_STATUS_PROTECT: + SendMessage(target,*gUnknown_80FA9C0); + break; + case PROTECTION_STATUS_MIRROR_COAT: + SendMessage(target,*gUnknown_80FAA68); + break; + case PROTECTION_STATUS_ENDURE: + SendMessage(target,*gUnknown_80FAAC8); + break; + case PROTECTION_STATUS_MIRROR_MOVE: + SendMessage(target,*gUnknown_80FAAE8); + break; + case PROTECTION_STATUS_CONVERSION_2: + SendMessage(target,*gUnknown_80FAB08); + break; + case PROTECTION_STATUS_VITAL_THROW: + SendMessage(target,*gUnknown_80FAB28); + break; + case PROTECTION_STATUS_MIST: + SendMessage(target,*gUnknown_80FAB40); + break; + } + entityData->protectionStatus = PROTECTION_STATUS_NONE; + DungeonEntityUpdateStatusSprites(target); +} + +void SendWaitingEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * target, u8 waitingStatus) +{ + u32 uVar3; + struct DungeonEntityData *entityData; + + if (EntityExists(target)) { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + switch(entityData->waitingStatus) { + case WAITING_STATUS_NONE: + case 4: + break; + case WAITING_STATUS_CURSED: + if (waitingStatus != WAITING_STATUS_CURSED) { + SendMessage(target,*gUnknown_80FA7BC); + } + break; + case WAITING_STATUS_SNATCH: + if (waitingStatus != WAITING_STATUS_SNATCH) { + SendMessage(target,*gUnknown_80FA7DC); + } + gDungeonGlobalData->unk17B30 = 0; + gDungeonGlobalData->unk17B3C = 0; + break; + case WAITING_STATUS_DECOY: + entityData->waitingStatus = WAITING_STATUS_NONE; + uVar3 = sub_806CEBC(target); + sub_806CCB4(target,uVar3); + gDungeonGlobalData->decoyActive = FALSE; + if (waitingStatus != WAITING_STATUS_DECOY) { + SetMessageArgument(gAvailablePokemonNames,target,0); + SendMessage(target,*gUnknown_80FA9A0); + } + break; + } + entityData->waitingStatus = WAITING_STATUS_NONE; + DungeonEntityUpdateStatusSprites(target); + } +} + +void SendLinkedEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + struct DungeonEntityData *iVar3; + + if (EntityExists(target)) { + iVar3 = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + switch(iVar3->linkedStatus) + { + case LINKED_STATUS_NONE: + break; + case LINKED_STATUS_LEECH_SEED: + SendMessage(target,*gUnknown_80FA79C); + break; + case LINKED_STATUS_DESTINY_BOND: + SendMessage(target,*gUnknown_80FAA8C); + break; + } + iVar3->linkedStatus = LINKED_STATUS_NONE; + iVar3->unkD8 = 0xff; + DungeonEntityUpdateStatusSprites(target); + } +} + +void SendMoveEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + struct DungeonEntityData * entityData; + + if (!EntityExists(target)) { + return; + } + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + switch(entityData->moveStatus) { + case MOVE_STATUS_NONE: + case 5: + break; + case MOVE_STATUS_SURE_SHOT: + SendMessage(target,*gUnknown_80FA8E0); + break; + case MOVE_STATUS_WHIFFER: + SendMessage(target,*gUnknown_80FA90C); + break; + case MOVE_STATUS_SET_DAMAGE: + SendMessage(target,*gUnknown_80FA934); + break; + case MOVE_STATUS_FOCUS_ENERGY: + SendMessage(target,*gUnknown_80FA95C); + break; + } + entityData->moveStatus = MOVE_STATUS_NONE; + DungeonEntityUpdateStatusSprites(target); +} + +void SendTransformEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity *target) +{ + bool8 bVar1; + struct DungeonEntityData *entityData; + u32 uVar3; + + bVar1 = FALSE; + if (!EntityExists(target)) { + return; + } + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + switch(entityData->transformStatus) { + case TRANSFORM_STATUS_NONE: + case 4: + break; + case TRANSFORM_STATUS_INVISIBLE: + bVar1 = TRUE; + SendMessage(target,*gUnknown_80FA9F4); + break; + case TRANSFORM_STATUS_MOBILE: + SendMessage(target,*gUnknown_80FABBC); + break; + case TRANSFORM_STATUS_TRANSFORMED: + entityData->transformSpecies = sub_8069F54(target, entityData->entityID); + target->unk64 = sub_80687D0(entityData->transformSpecies); + uVar3 = sub_806CEBC(target); + sub_806CCB4(target,uVar3); + SendMessage(target,*gUnknown_80FAB6C); + break; + } + entityData->transformStatus = TRANSFORM_STATUS_NONE; + DungeonEntityUpdateStatusSprites(target); + if (bVar1) { + sub_807EC28(1); + } +} + +void SendEyesightEndMessage(struct DungeonEntity * pokemon,struct DungeonEntity * target) +{ + struct DungeonEntityData *entityData; + + if (!EntityExists(target)) { + return; + } + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + switch(entityData->eyesightStatus) { + case EYESIGHT_STATUS_NONE: + case 4: + break; + case EYESIGHT_STATUS_BLINKER: + SendMessage(target,*gUnknown_80FAA0C); + break; + case EYESIGHT_STATUS_CROSS_EYED: + SendMessage(target,*gUnknown_80FAA2C); + break; + case EYESIGHT_STATUS_EYEDROPS: + SendMessage(target,*gUnknown_80FAA48); + break; + } + entityData->eyesightStatus = EYESIGHT_STATUS_NONE; + DungeonEntityUpdateStatusSprites(target); + if (entityData->isLeader) { + sub_803E46C(0x31); + sub_8049ED4(); + sub_8040A84(); + } +} + +void SendMuzzledEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + struct DungeonEntityData *entityData; + + if (!EntityExists(target)) { + return; + } + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + switch(entityData->muzzledStatus) { + case MUZZLED_STATUS_NONE: + case 2: + break; + case MUZZLED_STATUS_MUZZLED: + SendMessage(target,*gUnknown_80FABC0); + break; + } + entityData->muzzledStatus = MUZZLED_STATUS_NONE; + DungeonEntityUpdateStatusSprites(target); +} + +// TODO: this involves a union for sleepStatus/sleepStatusTurnsLeft that I don't want to deal with right now +/* + bool32 sub_807A96C(struct DungeonEntity * pokemon, struct DungeonEntity * target) + { + struct DungeonEntityData *entityData; + struct DungeonEntityData *entityData_1; + register bool32 bVar3 asm("r2"); + + entityData = target->entityData; + entityData_1 = entityData; + bVar3 = FALSE; + if (entityData->immobilizeStatus == 6) { + SendImmobilizeEndMessage(pokemon, target); + bVar3 = TRUE; + } + TODO: this is where the union is needed.. + if ((entityData_1 + 0xa8) == 0x7f01) { + SendSleepEndMessage(pokemon,target,0,1); + bVar3 = TRUE; + } + return bVar3; + } +*/ +NAKED +void sub_807A96C(struct DungeonEntity *pokemon, struct DungeonEntity *target) +{ + asm_unified( + "\tpush {r4-r6,lr}\n" + "\tadds r6, r0, 0\n" + "\tadds r4, r1, 0\n" + "\tldr r0, [r4, 0x70]\n" + "\tadds r5, r0, 0\n" + "\tmovs r2, 0\n" + "\tadds r0, 0xB0\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0x6\n" + "\tbne _0807A988\n" + "\tadds r0, r6, 0\n" + "\tbl SendImmobilizeEndMessage\n" + "\tmovs r2, 0x1\n" +"_0807A988:\n" + "\tadds r0, r5, 0\n" + "\tadds r0, 0xA8\n" + "\tldrh r1, [r0]\n" + "\tldr r0, _0807A9AC\n" + "\tcmp r1, r0\n" + "\tbne _0807A9A2\n" + "\tadds r0, r6, 0\n" + "\tadds r1, r4, 0\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0x1\n" + "\tbl SendSleepEndMessage\n" + "\tmovs r2, 0x1\n" +"_0807A9A2:\n" + "\tadds r0, r2, 0\n" + "\tpop {r4-r6}\n" + "\tpop {r1}\n" + "\tbx r1\n" + "\t.align 2, 0\n" +"_0807A9AC: .4byte 0x00007f01"); +} + +void sub_807A9B0(struct DungeonEntity * pokemon) +{ + struct DungeonEntityData *entityData; + + entityData = pokemon->entityData; + entityData->sleepStatus = SLEEP_STATUS_NONE; + entityData->sleepStatusTurnsLeft = 0; + sub_806A898(pokemon, 1, 1); + DungeonEntityUpdateStatusSprites(pokemon); +} + +void sub_807A9D8(struct DungeonEntity *pokemon, struct DungeonEntity *target) +{ + struct DungeonEntityData *iVar2; + + if (EntityExists(target)) { + iVar2 = target->entityData; + if (iVar2->immobilizeStatus == IMMOBILIZE_STATUS_FROZEN) { + iVar2->immobilizeStatus = IMMOBILIZE_STATUS_NONE; + iVar2->immobilizeStatusTurnsLeft = 0; + iVar2->immobilizeStatusDamageTimer = 0; + SetMessageArgument(gAvailablePokemonNames,target,0); + sub_80522F4(pokemon,target,*gUnknown_80FA8BC); + DungeonEntityUpdateStatusSprites(target); + } + } +} + +void sub_807AA30(void) +{ + bool32 adjacentCheck; + bool32 forceWakeup; + u8 roomIndex; + s32 xDiff; + s32 wildIndex; + s32 yDiff; + struct DungeonEntity *teamEntity; + struct DungeonEntity *wildEntity; + struct DungeonEntityData *entityData; + s32 teamIndex; + + for(wildIndex = 0; wildIndex < DUNGEON_MAX_WILD_POKEMON; wildIndex++) + { + wildEntity = gDungeonGlobalData->wildPokemon[wildIndex]; + if (EntityExists(wildEntity) && + (entityData = wildEntity->entityData, entityData->sleepStatus == SLEEP_STATUS_SLEEP) && + (entityData->sleepStatusTurnsLeft == 0x7F)) { + adjacentCheck = FALSE; + forceWakeup = FALSE; + roomIndex = GetEntityRoomIndex(wildEntity); + + for(teamIndex = 0; teamIndex < MAX_TEAM_MEMBERS; teamIndex++) + { + teamEntity = gDungeonGlobalData->teamPokemon[teamIndex]; + if (EntityExists(teamEntity) && !HasItem(teamEntity, ITEM_ID_SNEAK_SCARF)) { + xDiff = teamEntity->posWorld.x - wildEntity->posWorld.x; + if (xDiff < 0) { + xDiff = -xDiff; + } + if (xDiff < 2) { + yDiff = teamEntity->posWorld.y- wildEntity->posWorld.y; + if (yDiff < 0) { + yDiff = -yDiff; + } + if (yDiff < 2) { + adjacentCheck = TRUE; + break; + } + } + if (HasItem(teamEntity, ITEM_ID_RACKET_BAND) && (roomIndex == GetEntityRoomIndex(teamEntity))) + goto _WakeUp; + } + } + + if(forceWakeup) + goto _WakeUp; + else if(adjacentCheck) + forceWakeup = TRUE; + + if (forceWakeup) { +_WakeUp: + sub_807A9B0(wildEntity); + } + } + } +} From 7a26ec4d063d4748396c0bf5b78c2e469830c191 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 22 Aug 2022 11:54:53 -0700 Subject: [PATCH 6/9] more decomping and some cleanup --- asm/code_805744C.s | 2 +- asm/code_8057824.s | 26 +- asm/code_8077274.s | 2187 +-------------------------------- include/code_8077274_1.h | 31 + include/dungeon_entity.h | 10 +- include/dungeon_global_data.h | 3 +- src/code_8048480.c | 12 +- src/code_8057824.c | 7 +- src/code_8077274_1.c | 1015 ++++++++++++++- src/status_checker.c | 7 +- 10 files changed, 1061 insertions(+), 2239 deletions(-) diff --git a/asm/code_805744C.s b/asm/code_805744C.s index 4d95c0ee3..98f5cef32 100644 --- a/asm/code_805744C.s +++ b/asm/code_805744C.s @@ -464,7 +464,7 @@ _08057778: .4byte gUnknown_80F502A thumb_func_start sub_805777C sub_805777C: push {lr} - bl sub_8079DB8 + bl VitalThrowStatusTarget movs r0, 0x1 pop {r1} bx r1 diff --git a/asm/code_8057824.s b/asm/code_8057824.s index a46b59f84..f61f52a69 100644 --- a/asm/code_8057824.s +++ b/asm/code_8057824.s @@ -111,7 +111,7 @@ sub_8057E50: bl sub_807A9D8 adds r0, r4, 0 adds r1, r5, 0 - bl sub_8079CA0 + bl MirrorMoveStatusTarget movs r0, 0x1 pop {r4,r5} pop {r1} @@ -1925,7 +1925,7 @@ _08058BDC: .4byte gUnknown_8106A4C sub_8058BE0: push {lr} adds r1, r0, 0 - bl sub_8079C24 + bl EndureStatusTarget movs r0, 0x1 pop {r1} bx r1 @@ -2595,7 +2595,7 @@ _080590C4: .4byte gUnknown_80F4DE8 thumb_func_start sub_80590C8 sub_80590C8: push {lr} - bl sub_80798B0 + bl MistStatusTarget movs r0, 0x1 pop {r1} bx r1 @@ -2736,7 +2736,7 @@ _080591D4: .4byte gUnknown_80F4DEA thumb_func_start sub_80591D8 sub_80591D8: push {lr} - bl sub_8079834 + bl SafeguardStatusTarget movs r0, 0x1 pop {r1} bx r1 @@ -4145,7 +4145,7 @@ _08059C7C: .4byte gUnknown_80FE36C thumb_func_start sub_8059C80 sub_8059C80: push {lr} - bl sub_8079D1C + bl Conversion2StatusTarget movs r0, 0x1 pop {r1} bx r1 @@ -5146,7 +5146,7 @@ _0805A3F8: .4byte gUnknown_8106A4C thumb_func_start sub_805A3FC sub_805A3FC: push {lr} - bl sub_807992C + bl WishStatusTarget movs r0, 0x1 pop {r1} bx r1 @@ -6089,7 +6089,7 @@ _0805AB44: .4byte gUnknown_80FC5CC thumb_func_start sub_805AB48 sub_805AB48: push {lr} - bl sub_8079A24 + bl LightScreenStatusTarget movs r0, 0x1 pop {r1} bx r1 @@ -7106,7 +7106,7 @@ _0805B2E0: .4byte gUnknown_80F4F94 thumb_func_start sub_805B2E4 sub_805B2E4: push {lr} - bl sub_80799A8 + bl MagicCoatStatusTarget movs r0, 0x1 pop {r1} bx r1 @@ -7115,7 +7115,7 @@ sub_805B2E4: thumb_func_start sub_805B2F0 sub_805B2F0: push {lr} - bl sub_8079B1C + bl ProtectStatusTarget movs r0, 0x1 pop {r1} bx r1 @@ -7220,7 +7220,7 @@ _0805B39E: thumb_func_start sub_805B3A8 sub_805B3A8: push {lr} - bl sub_8079BA8 + bl MirrorCoatStatusTarget movs r0, 0x1 pop {r1} bx r1 @@ -7797,7 +7797,7 @@ _0805B7F8: .4byte gUnknown_80FDCA0 thumb_func_start sub_805B7FC sub_805B7FC: push {lr} - bl sub_8079AA0 + bl ReflectStatusTarget movs r0, 0x1 pop {r1} bx r1 @@ -8518,7 +8518,7 @@ _0805BD52: thumb_func_start sub_805BD64 sub_805BD64: push {lr} - bl sub_8078D8C + bl MuzzleTarget movs r0, 0x1 pop {r1} bx r1 @@ -9095,7 +9095,7 @@ _0805C1AC: .4byte 0x0000270f thumb_func_start sub_805C1B0 sub_805C1B0: push {lr} - bl sub_80790C8 + bl IdentityItemHolders movs r0, 0x1 pop {r1} bx r1 diff --git a/asm/code_8077274.s b/asm/code_8077274.s index fcc6d51be..00e6db990 100644 --- a/asm/code_8077274.s +++ b/asm/code_8077274.s @@ -2121,2189 +2121,4 @@ _08078D78: _08078D88: .4byte gUnknown_80FBE84 thumb_func_end sub_8078B5C - thumb_func_start sub_8078D8C -sub_8078D8C: - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08078E0E - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl HasSafeguardStatus - lsls r0, 24 - cmp r0, 0 - bne _08078E0E - ldr r6, [r4, 0x70] - ldr r0, _08078DF0 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r6, 0 - adds r1, 0xEC - ldrb r0, [r1] - cmp r0, 0x1 - beq _08078DFC - movs r0, 0x1 - strb r0, [r1] - ldr r1, _08078DF4 - adds r0, r4, 0 - movs r2, 0x1 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r6, 0 - adds r1, 0xED - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_86 - ldr r0, _08078DF8 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08078E08 - .align 2, 0 -_08078DF0: .4byte gAvailablePokemonNames -_08078DF4: .4byte gUnknown_80F4F1C -_08078DF8: .4byte gUnknown_80FBF68 -_08078DFC: - ldr r0, _08078E14 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08078E08: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08078E0E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08078E14: .4byte gUnknown_80FBF84 - thumb_func_end sub_8078D8C - - thumb_func_start sub_8078E18 -sub_8078E18: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, _08078E48 - add sp, r4 - mov r10, r0 - adds r5, r1, 0 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08078F2E - ldr r7, [r5, 0x70] - adds r0, r7, 0 - adds r0, 0xE4 - ldrb r0, [r0] - cmp r0, 0x2 - bne _08078E50 - ldr r0, _08078E4C - b _08078EC0 - .align 2, 0 -_08078E48: .4byte 0xfffffe00 -_08078E4C: .4byte gUnknown_80FBF04 -_08078E50: - ldr r0, _08078ECC - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - mov r0, sp - movs r1, 0 - bl sub_803D870 - mov r8, r0 - cmp r0, 0 - beq _08078EBE - movs r0, 0 - mov r9, r0 - movs r6, 0 -_08078E6E: - mov r0, r8 - bl DungeonRandomCapped - lsls r0, 3 - add r0, sp - bl ExtractSpeciesIndex - adds r1, r0, 0 - lsls r1, 16 - asrs r1, 16 - adds r0, r5, 0 - bl sub_8069F54 - lsls r0, 16 - asrs r4, r0, 16 - movs r1, 0x4 - ldrsh r0, [r7, r1] - cmp r4, r0 - beq _08078EAE - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806AA0C - lsls r0, 24 - cmp r0, 0 - beq _08078EAE - adds r0, r4, 0 - bl sub_80687D0 - mov r9, r0 - cmp r0, 0 - bne _08078EB4 -_08078EAE: - adds r6, 0x1 - cmp r6, 0x13 - ble _08078E6E -_08078EB4: - cmp r6, 0x14 - beq _08078EBE - mov r2, r9 - cmp r2, 0 - bne _08078ED4 -_08078EBE: - ldr r0, _08078ED0 -_08078EC0: - ldr r2, [r0] - mov r0, r10 - adds r1, r5, 0 - bl sub_80522F4 - b _08078F2E - .align 2, 0 -_08078ECC: .4byte gAvailablePokemonNames -_08078ED0: .4byte gUnknown_80FBEE4 -_08078ED4: - strh r4, [r7, 0x4] - mov r0, r9 - str r0, [r5, 0x64] - adds r1, r7, 0 - adds r1, 0xE4 - movs r0, 0x2 - strb r0, [r1] - ldr r1, _08078F44 - adds r0, r5, 0 - movs r2, 0x1 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r7, 0 - adds r1, 0xE5 - strb r0, [r1] - adds r0, r5, 0 - bl sub_806CF98 - adds r0, r5, 0 - bl nullsub_87 - adds r0, r5, 0 - bl sub_806CEBC - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl sub_806CCB4 - ldr r0, _08078F48 - movs r2, 0x4 - ldrsh r1, [r7, r2] - bl CopyCyanSpeciesNametoBuffer - ldr r0, _08078F4C - ldr r2, [r0] - mov r0, r10 - adds r1, r5, 0 - bl sub_80522F4 - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_08078F2E: - movs r3, 0x80 - lsls r3, 2 - add sp, r3 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08078F44: .4byte gUnknown_80F4EFC -_08078F48: .4byte gUnknown_202DFE8 -_08078F4C: .4byte gUnknown_80FBEC0 - thumb_func_end sub_8078E18 - - thumb_func_start sub_8078F50 -sub_8078F50: - push {r4-r7,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08078FD2 - ldr r0, [r4, 0x70] - adds r7, r0, 0 - adds r5, r7, 0 - adds r5, 0xE4 - ldrb r0, [r5] - cmp r0, 0x2 - bne _08078F78 - adds r0, r6, 0 - adds r1, r4, 0 - bl SendTransformEndMessage -_08078F78: - ldr r0, _08078FB4 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldrb r0, [r5] - cmp r0, 0x3 - beq _08078FC0 - movs r0, 0x3 - strb r0, [r5] - ldr r1, _08078FB8 - adds r0, r4, 0 - movs r2, 0 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r7, 0 - adds r1, 0xE5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_88 - ldr r0, _08078FBC - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08078FCC - .align 2, 0 -_08078FB4: .4byte gAvailablePokemonNames -_08078FB8: .4byte gUnknown_80F4F04 -_08078FBC: .4byte gUnknown_80FBF28 -_08078FC0: - ldr r0, _08078FD8 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08078FCC: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08078FD2: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08078FD8: .4byte gUnknown_80FBF50 - thumb_func_end sub_8078F50 - - thumb_func_start sub_8078FDC -sub_8078FDC: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r2, 16 - asrs r7, r2, 16 - mov r10, r7 - movs r0, 0 - mov r8, r0 - mov r9, r0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080790B6 - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl HasSafeguardStatus - lsls r0, 24 - cmp r0, 0 - bne _080790B6 - ldr r5, [r4, 0x70] - ldr r0, _08079064 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - movs r1, 0x26 - ldrsh r0, [r5, r1] - cmp r0, 0xA - ble _0807902E - movs r0, 0xA - strh r0, [r5, 0x26] - movs r0, 0x1 - mov r8, r0 -_0807902E: - mov r1, r8 - cmp r1, 0 - beq _0807904C - adds r0, r4, 0 - adds r1, r7, 0 - bl sub_8041DD8 - ldr r0, _08079068 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - movs r0, 0x1 - mov r9, r0 -_0807904C: - adds r5, 0xF5 - ldrb r0, [r5] - cmp r0, 0 - beq _08079070 - ldr r0, _0807906C - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _080790B6 - .align 2, 0 -_08079064: .4byte gAvailablePokemonNames -_08079068: .4byte gUnknown_80FC000 -_0807906C: .4byte gUnknown_80FBFB8 -_08079070: - mov r1, r9 - cmp r1, 0 - bne _0807907E - adds r0, r4, 0 - mov r1, r10 - bl sub_8041DD8 -_0807907E: - adds r0, r4, 0 - movs r1, 0xE - bl HasType - lsls r0, 24 - cmp r0, 0 - bne _080790A0 - ldr r0, _0807909C - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _080790B0 - .align 2, 0 -_0807909C: .4byte gUnknown_80FBFD8 -_080790A0: - movs r0, 0x1 - strb r0, [r5] - ldr r0, _080790C4 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_080790B0: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_080790B6: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080790C4: .4byte gUnknown_80FBF9C - thumb_func_end sub_8078FDC - - thumb_func_start sub_80790C8 -sub_80790C8: - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079134 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl HasSafeguardStatus - lsls r0, 24 - cmp r0, 0 - bne _08079134 - ldr r6, _0807911C - ldr r0, [r6] - ldr r1, _08079120 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08079128 - adds r0, r4, 0 - bl nullsub_89 - ldr r0, [r6] - ldr r1, _08079120 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites - ldr r0, _08079124 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079134 - .align 2, 0 -_0807911C: .4byte gDungeonGlobalData -_08079120: .4byte 0x00000676 -_08079124: .4byte gUnknown_80FC028 -_08079128: - ldr r0, _0807913C - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079134: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807913C: .4byte gUnknown_80FC054 - thumb_func_end sub_80790C8 - - thumb_func_start BlindTarget -BlindTarget: - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080791CE - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl HasSafeguardStatus - lsls r0, 24 - cmp r0, 0 - bne _080791CE - ldr r6, [r4, 0x70] - ldr r0, _080791B0 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r6, 0 - adds r1, 0xE8 - ldrb r0, [r1] - cmp r0, 0x1 - beq _080791BC - movs r0, 0x1 - strb r0, [r1] - ldr r1, _080791B4 - adds r0, r4, 0 - movs r2, 0x1 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r6, 0 - adds r1, 0xE9 - strb r0, [r1] - adds r0, r4, 0 - bl sub_8041E0C - ldr r0, _080791B8 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - movs r0, 0x31 - bl sub_803E46C - bl sub_8049ED4 - bl sub_8040A84 - b _080791C8 - .align 2, 0 -_080791B0: .4byte gAvailablePokemonNames -_080791B4: .4byte gUnknown_80F4F08 -_080791B8: .4byte gUnknown_80FB7F4 -_080791BC: - ldr r0, _080791D4 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_080791C8: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_080791CE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080791D4: .4byte gUnknown_80FB810 - thumb_func_end BlindTarget - - thumb_func_start sub_80791D8 -sub_80791D8: - push {r4-r7,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079266 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl HasSafeguardStatus - lsls r0, 24 - cmp r0, 0 - bne _08079266 - ldr r7, [r4, 0x70] - ldr r0, _08079248 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r6, r7, 0 - adds r6, 0xE8 - ldrb r0, [r6] - cmp r0, 0x2 - beq _08079254 - adds r0, r4, 0 - bl sub_8041E1C - ldr r0, _0807924C - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - movs r0, 0x2 - strb r0, [r6] - ldr r1, _08079250 - adds r0, r4, 0 - movs r2, 0x1 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r7, 0 - adds r1, 0xE9 - strb r0, [r1] - movs r0, 0x1 - bl sub_803F580 - bl sub_8049ED4 - bl sub_8040A84 - b _08079260 - .align 2, 0 -_08079248: .4byte gAvailablePokemonNames -_0807924C: .4byte gUnknown_80FB834 -_08079250: .4byte gUnknown_80F4F0C -_08079254: - ldr r0, _0807926C - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079260: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079266: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807926C: .4byte gUnknown_80FB85C - thumb_func_end sub_80791D8 - - thumb_func_start RestoreVisionTarget -RestoreVisionTarget: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080792EE - ldr r5, [r4, 0x70] - ldr r0, _080792D0 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xE8 - ldrb r0, [r1] - cmp r0, 0x3 - beq _080792DC - movs r0, 0x3 - strb r0, [r1] - ldr r1, _080792D4 - adds r0, r4, 0 - movs r2, 0 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xE9 - strb r0, [r1] - adds r0, r4, 0 - bl sub_8041E3C - ldr r0, _080792D8 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - movs r0, 0x31 - bl sub_803E46C - bl sub_8049ED4 - bl sub_8040A84 - b _080792E8 - .align 2, 0 -_080792D0: .4byte gAvailablePokemonNames -_080792D4: .4byte gUnknown_80F4F10 -_080792D8: .4byte gUnknown_80FB880 -_080792DC: - ldr r0, _080792F4 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_080792E8: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_080792EE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080792F4: .4byte gUnknown_80FB89C - thumb_func_end RestoreVisionTarget - - thumb_func_start sub_80792F8 -sub_80792F8: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - mov r10, r0 - adds r6, r1, 0 - mov r9, r2 - movs r0, 0 - mov r8, r0 - adds r0, r6, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807939A - ldr r0, [r6, 0x70] - movs r1, 0x8C - lsls r1, 1 - adds r4, r0, r1 - adds r5, r4, 0 - movs r7, 0x3 -_08079326: - ldrb r1, [r4] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0807935E - ldrb r0, [r4, 0x4] - str r0, [sp] - adds r0, r5, 0 - bl GetMoveMaxPP - str r0, [sp, 0x4] - ldr r1, [sp] - ldr r0, [sp, 0x4] - cmp r1, r0 - bge _0807935E - ldr r0, [sp] - add r0, r9 - str r0, [sp] - ldr r1, [sp] - ldr r0, [sp, 0x4] - cmp r1, r0 - ble _08079356 - ldr r0, [sp, 0x4] - str r0, [sp] -_08079356: - ldr r0, [sp] - strb r0, [r4, 0x4] - movs r0, 0x1 - mov r8, r0 -_0807935E: - adds r4, 0x8 - adds r5, 0x8 - subs r7, 0x1 - cmp r7, 0 - bge _08079326 - mov r1, r8 - cmp r1, 0 - beq _08079388 - adds r0, r6, 0 - bl sub_8041E4C - ldr r0, _08079384 - ldr r2, [r0] - mov r0, r10 - adds r1, r6, 0 - bl sub_80522F4 - b _08079394 - .align 2, 0 -_08079384: .4byte gUnknown_80FDBD0 -_08079388: - ldr r0, _080793AC - ldr r2, [r0] - mov r0, r10 - adds r1, r6, 0 - bl sub_80522F4 -_08079394: - adds r0, r6, 0 - bl DungeonEntityUpdateStatusSprites -_0807939A: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080793AC: .4byte gUnknown_80FDBF0 - thumb_func_end sub_80792F8 - - thumb_func_start sub_80793B0 -sub_80793B0: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079416 - ldr r0, _080793FC - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, [r4, 0x70] - adds r1, r0, 0 - ldrb r0, [r1, 0x14] - adds r2, r0, 0 - adds r0, r2, r5 - cmp r0, 0xFE - ble _080793DE - movs r0, 0xFF -_080793DE: - strb r0, [r1, 0x14] - lsls r0, 24 - lsrs r0, 24 - cmp r2, r0 - bcs _08079404 - adds r0, r4, 0 - bl sub_8041E60 - ldr r0, _08079400 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079410 - .align 2, 0 -_080793FC: .4byte gAvailablePokemonNames -_08079400: .4byte gUnknown_80FC33C -_08079404: - ldr r0, _0807941C - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079410: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079416: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807941C: .4byte gUnknown_80FC360 - thumb_func_end sub_80793B0 - - thumb_func_start sub_8079420 -sub_8079420: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079486 - ldr r0, _0807946C - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, [r4, 0x70] - adds r1, r0, 0 - ldrb r0, [r1, 0x15] - adds r2, r0, 0 - adds r0, r2, r5 - cmp r0, 0xFE - ble _0807944E - movs r0, 0xFF -_0807944E: - strb r0, [r1, 0x15] - lsls r0, 24 - lsrs r0, 24 - cmp r2, r0 - bcs _08079474 - adds r0, r4, 0 - bl sub_8041E74 - ldr r0, _08079470 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079480 - .align 2, 0 -_0807946C: .4byte gAvailablePokemonNames -_08079470: .4byte gUnknown_80FC388 -_08079474: - ldr r0, _0807948C - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079480: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079486: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807948C: .4byte gUnknown_80FC3B4 - thumb_func_end sub_8079420 - - thumb_func_start sub_8079490 -sub_8079490: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080794F6 - ldr r0, _080794DC - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, [r4, 0x70] - adds r1, r0, 0 - ldrb r0, [r1, 0x16] - adds r2, r0, 0 - adds r0, r2, r5 - cmp r0, 0xFE - ble _080794BE - movs r0, 0xFF -_080794BE: - strb r0, [r1, 0x16] - lsls r0, 24 - lsrs r0, 24 - cmp r2, r0 - bcs _080794E4 - adds r0, r4, 0 - bl sub_8041E84 - ldr r0, _080794E0 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _080794F0 - .align 2, 0 -_080794DC: .4byte gAvailablePokemonNames -_080794E0: .4byte gUnknown_80FC3D8 -_080794E4: - ldr r0, _080794FC - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_080794F0: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_080794F6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080794FC: .4byte gUnknown_80FC3FC - thumb_func_end sub_8079490 - - thumb_func_start sub_8079500 -sub_8079500: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079566 - ldr r0, _0807954C - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, [r4, 0x70] - adds r1, r0, 0 - ldrb r0, [r1, 0x17] - adds r2, r0, 0 - adds r0, r2, r5 - cmp r0, 0xFE - ble _0807952E - movs r0, 0xFF -_0807952E: - strb r0, [r1, 0x17] - lsls r0, 24 - lsrs r0, 24 - cmp r2, r0 - bcs _08079554 - adds r0, r4, 0 - bl sub_8041E94 - ldr r0, _08079550 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079560 - .align 2, 0 -_0807954C: .4byte gAvailablePokemonNames -_08079550: .4byte gUnknown_80FC428 -_08079554: - ldr r0, _0807956C - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079560: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079566: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0807956C: .4byte gUnknown_80FC454 - thumb_func_end sub_8079500 - - thumb_func_start sub_8079570 -sub_8079570: - push {r4-r6,lr} - adds r6, r0, 0 - adds r5, r1, 0 - ldr r4, [r5, 0x70] - ldr r0, _080795A0 - movs r2, 0 - bl SetMessageArgument - adds r4, 0xE0 - ldrb r0, [r4] - cmp r0, 0x1 - beq _080795A8 - movs r0, 0x1 - strb r0, [r4] - adds r0, r5, 0 - bl sub_8041EA4 - ldr r0, _080795A4 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80522F4 - b _080795B4 - .align 2, 0 -_080795A0: .4byte gUnknown_202DFE8 -_080795A4: .4byte gUnknown_80FD20C -_080795A8: - ldr r0, _080795C0 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80522F4 -_080795B4: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080795C0: .4byte gUnknown_80FD22C - thumb_func_end sub_8079570 - - thumb_func_start sub_80795C4 -sub_80795C4: - push {r4-r6,lr} - adds r6, r0, 0 - adds r5, r1, 0 - ldr r4, [r5, 0x70] - ldr r0, _080795F4 - movs r2, 0 - bl SetMessageArgument - adds r4, 0xE0 - ldrb r0, [r4] - cmp r0, 0x2 - beq _080795FC - movs r0, 0x2 - strb r0, [r4] - adds r0, r5, 0 - bl sub_8041EB4 - ldr r0, _080795F8 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80522F4 - b _08079608 - .align 2, 0 -_080795F4: .4byte gUnknown_202DFE8 -_080795F8: .4byte gUnknown_80FD254 -_080795FC: - ldr r0, _08079614 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_80522F4 -_08079608: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079614: .4byte gUnknown_80FD27C - thumb_func_end sub_80795C4 - - thumb_func_start sub_8079618 -sub_8079618: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r0 - adds r7, r1, 0 - mov r8, r3 - lsls r2, 24 - lsrs r6, r2, 24 - adds r0, r7, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _08079638 - b _08079752 -_08079638: - ldr r5, [r7, 0x70] - ldr r0, _08079660 - adds r1, r7, 0 - movs r2, 0 - bl SetMessageArgument - adds r0, r5, 0 - adds r0, 0xC0 - ldrb r0, [r0] - cmp r0, r6 - bne _08079668 - cmp r6, 0xC - bne _08079668 - ldr r0, _08079664 - ldr r2, [r0] - mov r0, r9 - adds r1, r7, 0 - bl sub_80522F4 - b _08079752 - .align 2, 0 -_08079660: .4byte gAvailablePokemonNames -_08079664: .4byte gUnknown_80FC074 -_08079668: - adds r0, r5, 0 - adds r0, 0xC0 - strb r6, [r0] - movs r4, 0 - movs r1, 0x8C - lsls r1, 1 - adds r0, r5, r1 - subs r2, r6, 0x7 - b _0807968A -_0807967A: - adds r4, 0x1 - cmp r4, 0x3 - bgt _08079694 - lsls r0, r4, 3 - movs r1, 0x8C - lsls r1, 1 - adds r0, r1 - adds r0, r5, r0 -_0807968A: - cmp r0, r8 - bne _0807967A - adds r0, r5, 0 - adds r0, 0xC2 - strb r4, [r0] -_08079694: - movs r1, 0xA5 - lsls r1, 1 - adds r0, r5, r1 - movs r1, 0x1 - strb r1, [r0] - movs r4, 0 - lsls r0, r2, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _080796B2 - adds r0, r5, 0 - adds r0, 0xFF - strb r1, [r0] - movs r4, 0x1 - b _080796C6 -_080796B2: - adds r0, r6, 0 - subs r0, 0x9 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _080796C6 - adds r1, r5, 0 - adds r1, 0xFF - movs r0, 0x2 - strb r0, [r1] -_080796C6: - cmp r6, 0x1 - bne _080796E4 - ldr r1, _08079718 - adds r0, r7, 0 - movs r2, 0 - bl CalculateStatusTurns - adds r0, 0x1 - adds r2, r5, 0 - adds r2, 0xC1 - movs r1, 0 - strb r0, [r2] - adds r0, r5, 0 - adds r0, 0xA0 - str r1, [r0] -_080796E4: - cmp r6, 0xC - bne _080796FA - ldr r1, _0807971C - adds r0, r7, 0 - movs r2, 0 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC1 - strb r0, [r1] -_080796FA: - adds r0, r7, 0 - adds r1, r4, 0 - bl sub_8041BD0 - mov r0, r9 - adds r1, r7, 0 - ldr r2, [sp, 0x1C] - bl sub_80522F4 - adds r0, r7, 0 - bl DungeonEntityUpdateStatusSprites - movs r4, 0 - ldr r6, _08079720 - b _0807972C - .align 2, 0 -_08079718: .4byte gUnknown_80F4E9C -_0807971C: .4byte gUnknown_80F4EA0 -_08079720: .4byte 0x0000c7ff -_08079724: - movs r0, 0x53 - bl sub_803E46C - adds r4, 0x1 -_0807972C: - ldr r0, _08079760 - cmp r4, r0 - bgt _08079752 - movs r1, 0x1 - adds r0, r5, 0 - adds r0, 0xFF - ldrb r0, [r0] - cmp r0, 0x1 - bne _0807974E - movs r1, 0xBA - lsls r1, 1 - adds r0, r5, r1 - ldr r0, [r0] - movs r1, 0 - cmp r0, r6 - ble _0807974E - movs r1, 0x1 -_0807974E: - cmp r1, 0 - beq _08079724 -_08079752: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08079760: .4byte 0x0000018f - thumb_func_end sub_8079618 - - thumb_func_start sub_8079764 -sub_8079764: - push {r4,lr} - adds r4, r0, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807979A - ldr r2, [r4, 0x70] - adds r3, r2, 0 - adds r3, 0xC0 - ldrb r0, [r3] - cmp r0, 0x1 - beq _08079794 - cmp r0, 0xC - beq _08079794 - movs r1, 0 - strb r1, [r3] - movs r3, 0xA5 - lsls r3, 1 - adds r0, r2, r3 - strb r1, [r0] - adds r0, r2, 0 - adds r0, 0xFF - strb r1, [r0] -_08079794: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_0807979A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8079764 - - thumb_func_start sub_80797A0 -sub_80797A0: - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r0 - adds r4, r1, 0 - lsls r2, 24 - lsrs r7, r2, 24 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079822 - ldr r6, [r4, 0x70] - ldr r0, _080797E0 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r5, r6, 0 - adds r5, 0xC4 - ldrb r0, [r5] - cmp r0, r7 - bne _080797E8 - ldr r0, _080797E4 - ldr r2, [r0] - mov r0, r8 - adds r1, r4, 0 - bl sub_80522F4 - b _08079822 - .align 2, 0 -_080797E0: .4byte gAvailablePokemonNames -_080797E4: .4byte gUnknown_80FB10C -_080797E8: - adds r0, r4, 0 - bl nullsub_57 - ldrb r0, [r5] - cmp r0, 0x4 - beq _0807980A - cmp r0, 0xA - beq _0807980A - ldr r1, _0807982C - adds r0, r4, 0 - movs r2, 0 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r6, 0 - adds r1, 0xC5 - strb r0, [r1] -_0807980A: - adds r0, r6, 0 - adds r0, 0xC4 - strb r7, [r0] - ldr r0, _08079830 - ldr r2, [r0] - mov r0, r8 - adds r1, r4, 0 - bl sub_80522F4 - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079822: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807982C: .4byte gUnknown_80F4E98 -_08079830: .4byte gUnknown_80FB0E0 - thumb_func_end sub_80797A0 - - thumb_func_start sub_8079834 -sub_8079834: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080798A6 - ldr r5, [r4, 0x70] - ldr r0, _08079888 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0x2 - beq _08079894 - movs r0, 0x2 - strb r0, [r1] - ldr r1, _0807988C - adds r0, r4, 0 - movs r2, 0 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_58 - ldr r0, _08079890 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _080798A0 - .align 2, 0 -_08079888: .4byte gAvailablePokemonNames -_0807988C: .4byte gUnknown_80F4E88 -_08079890: .4byte gUnknown_80FB048 -_08079894: - ldr r0, _080798AC - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_080798A0: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_080798A6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080798AC: .4byte gUnknown_80FB074 - thumb_func_end sub_8079834 - - thumb_func_start sub_80798B0 -sub_80798B0: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079922 - ldr r5, [r4, 0x70] - ldr r0, _08079904 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0xE - beq _08079910 - movs r0, 0xE - strb r0, [r1] - ldr r1, _08079908 - adds r0, r4, 0 - movs r2, 0 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_59 - ldr r0, _0807990C - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _0807991C - .align 2, 0 -_08079904: .4byte gAvailablePokemonNames -_08079908: .4byte gUnknown_80F4E8C -_0807990C: .4byte gUnknown_80FB09C -_08079910: - ldr r0, _08079928 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_0807991C: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079922: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079928: .4byte gUnknown_80FB0C4 - thumb_func_end sub_80798B0 - - thumb_func_start sub_807992C -sub_807992C: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _0807999E - ldr r5, [r4, 0x70] - ldr r0, _08079980 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0x6 - beq _0807998C - movs r0, 0x6 - strb r0, [r1] - ldr r1, _08079984 - adds r0, r4, 0 - movs r2, 0 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl sub_8041B34 - ldr r0, _08079988 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079998 - .align 2, 0 -_08079980: .4byte gAvailablePokemonNames -_08079984: .4byte gUnknown_80F4EB4 -_08079988: .4byte gUnknown_80FAE1C -_0807998C: - ldr r0, _080799A4 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079998: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_0807999E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080799A4: .4byte gUnknown_80FAE3C - thumb_func_end sub_807992C - - thumb_func_start sub_80799A8 -sub_80799A8: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079A1A - ldr r5, [r4, 0x70] - ldr r0, _080799FC - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0x5 - beq _08079A08 - movs r0, 0x5 - strb r0, [r1] - ldr r1, _08079A00 - adds r0, r4, 0 - movs r2, 0 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_60 - ldr r0, _08079A04 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079A14 - .align 2, 0 -_080799FC: .4byte gAvailablePokemonNames -_08079A00: .4byte gUnknown_80F4E90 -_08079A04: .4byte gUnknown_80FAF5C -_08079A08: - ldr r0, _08079A20 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079A14: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079A1A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079A20: .4byte gUnknown_80FAF8C - thumb_func_end sub_80799A8 - - thumb_func_start sub_8079A24 -sub_8079A24: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079A96 - ldr r5, [r4, 0x70] - ldr r0, _08079A78 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0x3 - beq _08079A84 - movs r0, 0x3 - strb r0, [r1] - ldr r1, _08079A7C - adds r0, r4, 0 - movs r2, 0 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_61 - ldr r0, _08079A80 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079A90 - .align 2, 0 -_08079A78: .4byte gAvailablePokemonNames -_08079A7C: .4byte gUnknown_80F4E84 -_08079A80: .4byte gUnknown_80FB130 -_08079A84: - ldr r0, _08079A9C - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079A90: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079A96: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079A9C: .4byte gUnknown_80FB160 - thumb_func_end sub_8079A24 - - thumb_func_start sub_8079AA0 -sub_8079AA0: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079B12 - ldr r5, [r4, 0x70] - ldr r0, _08079AF4 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0x1 - beq _08079B00 - movs r0, 0x1 - strb r0, [r1] - ldr r1, _08079AF8 - adds r0, r4, 0 - movs r2, 0 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_62 - ldr r0, _08079AFC - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079B0C - .align 2, 0 -_08079AF4: .4byte gAvailablePokemonNames -_08079AF8: .4byte gUnknown_80F4E80 -_08079AFC: .4byte gUnknown_80FB17C -_08079B00: - ldr r0, _08079B18 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079B0C: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079B12: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079B18: .4byte gUnknown_80FB1A8 - thumb_func_end sub_8079AA0 - - thumb_func_start sub_8079B1C -sub_8079B1C: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079B98 - adds r0, r4, 0 - bl nullsub_63 - ldr r5, [r4, 0x70] - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0x7 - beq _08079B7C - movs r0, 0x7 - strb r0, [r1] - ldr r1, _08079B70 - adds r0, r4, 0 - movs r2, 0 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - ldr r0, _08079B74 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08079B78 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079B92 - .align 2, 0 -_08079B70: .4byte gUnknown_80F4ED4 -_08079B74: .4byte gAvailablePokemonNames -_08079B78: .4byte gUnknown_80FB9B0 -_08079B7C: - ldr r0, _08079BA0 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldr r0, _08079BA4 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079B92: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079B98: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079BA0: .4byte gAvailablePokemonNames -_08079BA4: .4byte gUnknown_80FB9D8 - thumb_func_end sub_8079B1C - - thumb_func_start sub_8079BA8 -sub_8079BA8: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079C1A - ldr r5, [r4, 0x70] - ldr r0, _08079BFC - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0x8 - beq _08079C08 - movs r0, 0x8 - strb r0, [r1] - ldr r1, _08079C00 - adds r0, r4, 0 - movs r2, 0 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_64 - ldr r0, _08079C04 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079C14 - .align 2, 0 -_08079BFC: .4byte gAvailablePokemonNames -_08079C00: .4byte gUnknown_80F4EE8 -_08079C04: .4byte gUnknown_80FBAC0 -_08079C08: - ldr r0, _08079C20 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079C14: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079C1A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079C20: .4byte gUnknown_80FBAE4 - thumb_func_end sub_8079BA8 - - thumb_func_start sub_8079C24 -sub_8079C24: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079C96 - ldr r5, [r4, 0x70] - ldr r0, _08079C78 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0x9 - beq _08079C84 - movs r0, 0x9 - strb r0, [r1] - ldr r1, _08079C7C - adds r0, r4, 0 - movs r2, 0 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_65 - ldr r0, _08079C80 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079C90 - .align 2, 0 -_08079C78: .4byte gAvailablePokemonNames -_08079C7C: .4byte gUnknown_80F4EF8 -_08079C80: .4byte gUnknown_80FBBF0 -_08079C84: - ldr r0, _08079C9C - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079C90: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079C96: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079C9C: .4byte gUnknown_80FBC14 - thumb_func_end sub_8079C24 - - thumb_func_start sub_8079CA0 -sub_8079CA0: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079D12 - ldr r5, [r4, 0x70] - ldr r0, _08079CF4 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0xB - beq _08079D00 - movs r0, 0xB - strb r0, [r1] - ldr r1, _08079CF8 - adds r0, r4, 0 - movs r2, 0 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_66 - ldr r0, _08079CFC - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079D0C - .align 2, 0 -_08079CF4: .4byte gAvailablePokemonNames -_08079CF8: .4byte gUnknown_80F4F18 -_08079CFC: .4byte gUnknown_80FBC38 -_08079D00: - ldr r0, _08079D18 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079D0C: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079D12: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079D18: .4byte gUnknown_80FBC5C - thumb_func_end sub_8079CA0 - - thumb_func_start sub_8079D1C -sub_8079D1C: - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079DAE - ldr r6, [r4, 0x70] - adds r0, r4, 0 - movs r1, 0x25 - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _08079D50 - ldr r0, _08079D4C - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079DAE - .align 2, 0 -_08079D4C: .4byte gPtrForecastPreventsConversion2Message -_08079D50: - ldr r0, _08079D90 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r6, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0xC - beq _08079D9C - movs r0, 0xC - strb r0, [r1] - ldr r1, _08079D94 - adds r0, r4, 0 - movs r2, 0 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r6, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_67 - ldr r0, _08079D98 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079DA8 - .align 2, 0 -_08079D90: .4byte gAvailablePokemonNames -_08079D94: .4byte gUnknown_80F4F20 -_08079D98: .4byte gUnknown_80FBC7C -_08079D9C: - ldr r0, _08079DB4 - ldr r2, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079DA8: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079DAE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079DB4: .4byte gUnknown_80FBCA4 - thumb_func_end sub_8079D1C - - thumb_func_start sub_8079DB8 -sub_8079DB8: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079E2A - ldr r5, [r4, 0x70] - ldr r0, _08079E0C - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - adds r1, r5, 0 - adds r1, 0xC4 - ldrb r0, [r1] - cmp r0, 0xD - beq _08079E18 - movs r0, 0xD - strb r0, [r1] - ldr r1, _08079E10 - adds r0, r4, 0 - movs r2, 0 - bl CalculateStatusTurns - adds r0, 0x1 - adds r1, r5, 0 - adds r1, 0xC5 - strb r0, [r1] - adds r0, r4, 0 - bl nullsub_68 - ldr r0, _08079E14 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08079E24 - .align 2, 0 -_08079E0C: .4byte gAvailablePokemonNames -_08079E10: .4byte gUnknown_80F4F24 -_08079E14: .4byte gUnknown_80FBCC8 -_08079E18: - ldr r0, _08079E30 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08079E24: - adds r0, r4, 0 - bl DungeonEntityUpdateStatusSprites -_08079E2A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08079E30: .4byte gUnknown_80FBCF0 - thumb_func_end sub_8079DB8 - - thumb_func_start sub_8079E34 -sub_8079E34: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r8, r0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - movs r6, 0 - adds r0, r5, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _08079F0E - ldr r0, [r5, 0x70] - mov r12, r0 - movs r4, 0 - movs r7, 0xA -_08079E5C: - lsls r2, r4, 1 - mov r0, r12 - adds r0, 0x1C - adds r1, r0, r2 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0xA - beq _08079E70 - strh r7, [r1] - movs r6, 0x1 -_08079E70: - mov r0, r12 - adds r0, 0x20 - adds r1, r0, r2 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0xA - beq _08079E82 - strh r7, [r1] - movs r6, 0x1 -_08079E82: - mov r0, r12 - adds r0, 0x24 - adds r1, r0, r2 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0xA - beq _08079E94 - strh r7, [r1] - movs r6, 0x1 -_08079E94: - lsls r3, r4, 2 - mov r0, r12 - adds r0, 0x2C - adds r1, r0, r3 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 1 - cmp r0, r2 - beq _08079EAA - str r2, [r1] - movs r6, 0x1 -_08079EAA: - mov r0, r12 - adds r0, 0x34 - adds r1, r0, r3 - ldr r0, [r1] - cmp r0, r2 - beq _08079EBA - str r2, [r1] - movs r6, 0x1 -_08079EBA: - adds r4, 0x1 - cmp r4, 0x1 - ble _08079E5C - cmp r6, 0 - beq _08079ECC - adds r0, r5, 0 - bl sub_80420C8 - b _08079ED8 -_08079ECC: - mov r3, r9 - cmp r3, 0 - beq _08079ED8 - adds r0, r5, 0 - bl sub_80420C8 -_08079ED8: - ldr r0, _08079EF4 - adds r1, r5, 0 - movs r2, 0 - bl SetMessageArgument - cmp r6, 0 - beq _08079EFC - ldr r0, _08079EF8 - ldr r2, [r0] - mov r0, r8 - adds r1, r5, 0 - bl sub_80522F4 - b _08079F08 - .align 2, 0 -_08079EF4: .4byte gAvailablePokemonNames -_08079EF8: .4byte gUnknown_80FBD18 -_08079EFC: - ldr r0, _08079F1C - ldr r2, [r0] - mov r0, r8 - adds r1, r5, 0 - bl sub_80522F4 -_08079F08: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites -_08079F0E: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08079F1C: .4byte gUnknown_80FBD3C - thumb_func_end sub_8079E34 - - .align 2, 0 + .align 2,0 diff --git a/include/code_8077274_1.h b/include/code_8077274_1.h index e7a81dfbb..e51f592a2 100644 --- a/include/code_8077274_1.h +++ b/include/code_8077274_1.h @@ -1,6 +1,37 @@ #ifndef GUARD_CODE_8077274_1_H #define GUARD_CODE_8077274_1_H +void MuzzleTarget(struct DungeonEntity *pokemon, struct DungeonEntity *target); +void sub_8078E18(struct DungeonEntity * pokemon, struct DungeonEntity * target); +void sub_8078F50(struct DungeonEntity * pokemon, struct DungeonEntity * target); +void sub_8078FDC(struct DungeonEntity * pokemon, struct DungeonEntity * target, s16 param_3); +void IdentityItemHolders(struct DungeonEntity *pokemon, struct DungeonEntity *target); +void BlindTarget(struct DungeonEntity *pokemon, struct DungeonEntity *target); +void CrossEyeVisionTarget(struct DungeonEntity *pokemon, struct DungeonEntity *target); +void RestoreVisionTarget(struct DungeonEntity *pokemon, struct DungeonEntity *target); +void RestorePPTarget(struct DungeonEntity * pokemon,struct DungeonEntity * target, s32 param_3); +void sub_80793B0(struct DungeonEntity * pokemon,struct DungeonEntity * target, s32 param_3); +void sub_8079420(struct DungeonEntity * pokemon,struct DungeonEntity * target, s32 param_3); +void sub_8079490(struct DungeonEntity * pokemon,struct DungeonEntity * target, s32 param_3); +void sub_8079500(struct DungeonEntity * pokemon,struct DungeonEntity * target, s32 param_3); +void LongTossStatusTarget(struct DungeonEntity * pokemon,struct DungeonEntity * target); +void PierceStatusTarget(struct DungeonEntity * pokemon,struct DungeonEntity * target); +void sub_8079618(struct DungeonEntity *pokemon, struct DungeonEntity *target, u8 newStatus, struct PokemonMove *move, u8 *message); +void sub_8079764(struct DungeonEntity * pokemon); +void sub_80797A0(struct DungeonEntity * pokemon, struct DungeonEntity * target, u8 newStatus); +void SafeguardStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target); +void MistStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target); +void WishStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target); +void MagicCoatStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target); +void LightScreenStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target); +void ReflectStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target); +void ProtectStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target); +void MirrorCoatStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target); +void EndureStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target); +void MirrorMoveStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target); +void Conversion2StatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target); +void VitalThrowStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target); +void sub_8079618(struct DungeonEntity * pokemon, struct DungeonEntity *target, u8 newStatus, struct PokemonMove *move, u8 *message); void sub_8079F20(struct DungeonEntity * pokemon, struct DungeonEntity * target, u8 param_3, u8 param_4); void sub_807A0CC(struct DungeonEntity * pokemon, struct DungeonEntity * target); void SendSleepEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * target, bool8 param_3, bool8 param_4); diff --git a/include/dungeon_entity.h b/include/dungeon_entity.h index b99cf8a29..48d9db873 100644 --- a/include/dungeon_entity.h +++ b/include/dungeon_entity.h @@ -103,7 +103,7 @@ struct DungeonEntityData /* 0x94 */ u8 tactic; u8 fill95[0x9C - 0x95]; /* 0x9C */ u32 unk9C; - u8 fillA0[0xA4 - 0xA0]; + /* 0xA0 */ u32 unkA0; /* 0xA4 */ u8 clientType; u8 fillA5[0xA8 - 0xA5]; // Statuses are split into groups based on which ones can't overlap. @@ -151,8 +151,8 @@ struct DungeonEntityData /* 0xE5 */ u8 transformStatusTurnsLeft; u8 fillE6[0xE8 - 0xE6]; /* 0xE8 */ u8 eyesightStatus; - u8 fillE9; - /* 0xEA */ u8 eyesightStatusTurnsLeft; + /* 0xE9 */ u8 eyesightStatusTurnsLeft; + /* 0xEA */ u8 unkEA; u8 fillEB; /* 0xEC */ bool8 muzzledStatus; /* 0xED */ u8 muzzledTurnsLeft; @@ -195,7 +195,9 @@ struct DungeonEntityData u8 fill146; /* 0x147 */ bool8 waiting; // True if an AI Pokémon decided to do nothing this turn. /* 0x148 */ bool8 attacking; - u8 fill149[0x14E - 0x149]; + /* 0x149 */ u8 unk149; + /* 0x14A */ u8 unk14A; + u8 fill14B[0x14E - 0x14B]; /* 0x14E */ u16 visualFlags; /* 0x150 */ u16 previousVisualFlags; /* 0x152 */ u8 unk152; diff --git a/include/dungeon_global_data.h b/include/dungeon_global_data.h index b0bebc9cc..392ea8063 100644 --- a/include/dungeon_global_data.h +++ b/include/dungeon_global_data.h @@ -61,7 +61,8 @@ struct DungeonGlobalData u8 fill673[0x674 - 0x673]; u8 unk674; u8 unk675; - u8 unk676[0x68A - 0x676]; + /* 0x676 */ bool8 itemHoldersIdentified; + u8 unk677[0x68A - 0x677]; /* 0x68A */ u8 unk68A; u8 fill68B[0x363C - 0x68B]; /* 0x363C */ u8 expYieldRankings[NUM_SPECIES]; diff --git a/src/code_8048480.c b/src/code_8048480.c index 0244461de..331dc1037 100644 --- a/src/code_8048480.c +++ b/src/code_8048480.c @@ -7,6 +7,7 @@ #include "dungeon_random.h" #include "number_util.h" #include "moves.h" +#include "code_8077274_1.h" extern u8 *gUnknown_80F89F4[]; extern u8 gAvailablePokemonNames[0x58]; @@ -40,18 +41,11 @@ extern void sub_8076D10(struct DungeonEntity *pokemon, struct DungeonEntity *r1) extern void LevelDownTarget(struct DungeonEntity *pokemon, struct DungeonEntity *r1, u32 r2); extern void sub_8078B5C(struct DungeonEntity *, struct DungeonEntity *, u32, u32, u32); extern void SetMessageArgument(u8 *buffer, struct DungeonEntity *r1, u32); -extern void SendNonVolatileEndMessage(struct DungeonEntity *pokemon, struct DungeonEntity *r1); extern void sub_80522F4(struct DungeonEntity *pokemon, struct DungeonEntity *r1, const char[]); -extern void RestoreVisionTarget(struct DungeonEntity *pokemon, struct DungeonEntity *r1); extern void sub_8077910(struct DungeonEntity *pokemon, struct DungeonEntity *r1, u32, u32); -extern void sub_80791D8(struct DungeonEntity *pokemon, struct DungeonEntity *r1); -extern void BlindTarget(struct DungeonEntity *pokemon, struct DungeonEntity *r1); extern void HealTargetHP(struct DungeonEntity *pokemon, struct DungeonEntity *r1, s16, s16, u32); -extern void sub_80792F8(struct DungeonEntity *pokemon, struct DungeonEntity *r1, u32); -extern void sub_8079F20(struct DungeonEntity *pokemon, struct DungeonEntity *r1, u32, u8); extern void sub_806F370(struct DungeonEntity *pokemon, struct DungeonEntity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32); extern void sub_8078A58(struct DungeonEntity *, struct DungeonEntity *, s16, u32); -extern void SendImmobilizeEndMessage(struct DungeonEntity*, struct DungeonEntity*); extern s32 sub_8042520(struct DungeonEntity *); struct DungeonEntity *sub_80696FC(struct DungeonEntity *); extern void sub_80943A0(void*, s32); @@ -79,7 +73,7 @@ void sub_804839C(struct DungeonEntity *pokemon, struct DungeonEntity *target) void sub_80483C4(struct DungeonEntity *pokemon, struct DungeonEntity *target) { - sub_80792F8(pokemon, target, 999); + RestorePPTarget(pokemon, target, 999); } void sub_80483D4(struct DungeonEntity *pokemon, struct DungeonEntity *target) @@ -94,7 +88,7 @@ void sub_80483F4(struct DungeonEntity *pokemon, struct DungeonEntity *target) void sub_8048400(struct DungeonEntity *pokemon, struct DungeonEntity *target) { - sub_80791D8(pokemon, target); + CrossEyeVisionTarget(pokemon, target); } void sub_804840C(struct DungeonEntity *pokemon, struct DungeonEntity *target) diff --git a/src/code_8057824.c b/src/code_8057824.c index 8d18c8dd3..fb55134a2 100644 --- a/src/code_8057824.c +++ b/src/code_8057824.c @@ -12,7 +12,7 @@ extern u8 gAvailablePokemonNames[]; extern s16 gUnknown_80F4DB6; extern u16 gUnknown_80F4F42; -extern u32 gUnknown_80FAC88; +extern u8 *gUnknown_80FAC88; extern u8 *gUnknown_80FD018[]; extern u8 *gUnknown_80FCFBC[]; extern u8 *gUnknown_80FCFE4[]; @@ -49,7 +49,6 @@ extern u8 sub_805727C(struct DungeonEntity *, struct DungeonEntity *, s16); extern u32 sub_8055640(struct DungeonEntity *, struct DungeonEntity *, u32, u32, u32); extern void sub_80779F0(struct DungeonEntity *, struct DungeonEntity *, u32, u32); extern void sub_8078968(struct DungeonEntity *r0, struct DungeonEntity *r1); -extern void sub_8079618(struct DungeonEntity *r0, struct DungeonEntity *r1, u32, u32, u32); extern void sub_8077AE4(struct DungeonEntity *pokemon, struct DungeonEntity *target, u32); extern void sub_8077084(struct DungeonEntity *pokemon, struct DungeonEntity *target, u32, u32); @@ -122,10 +121,10 @@ bool32 sub_8057948(struct DungeonEntity *pokemon, struct DungeonEntity *target) return TRUE; } -bool32 sub_8057954(struct DungeonEntity *pokemon, struct DungeonEntity *target, u32 param_3) +bool32 sub_8057954(struct DungeonEntity *pokemon, struct DungeonEntity *target, struct PokemonMove *move) { // {ARG_POKEMON_0} is enraged - sub_8079618(pokemon,target,0xc,param_3,gUnknown_80FAC88); + sub_8079618(pokemon,target,0xc,move,gUnknown_80FAC88); return TRUE; } diff --git a/src/code_8077274_1.c b/src/code_8077274_1.c index a7f08e949..a29fea254 100644 --- a/src/code_8077274_1.c +++ b/src/code_8077274_1.c @@ -1,16 +1,23 @@ #include "global.h" +#include "constants/ability.h" #include "constants/item.h" #include "constants/status.h" +#include "constants/type.h" #include "dungeon_entity.h" #include "dungeon_global_data.h" +#include "dungeon_pokemon_attributes.h" +#include "dungeon_random.h" #include "dungeon_items.h" #include "dungeon_util.h" #include "code_80521D0.h" #include "code_8077274_1.h" #include "code_808417C.h" +#include "moves.h" +#include "pokemon.h" #include "status_checks_1.h" extern u8 gAvailablePokemonNames[0x58]; +extern u8 gUnknown_202DFE8[0x58]; extern u8 *gUnknown_80FA8BC[]; extern u8 *gUnknown_80FA824[]; extern u8 *gUnknown_80FA81C[]; @@ -68,6 +75,90 @@ extern u8 *gPtrSealedMoveReleasedMessage[]; extern u8 *gUnknown_81004E8[]; extern u8 *gPtrExposedWoreOffMessage[]; extern u8 *gUnknown_8100594[]; +extern u8 *gUnknown_80FBD18[]; +extern u8 *gUnknown_80FBD3C[]; +extern u8 *gUnknown_80FBCF0[]; +extern u8 *gUnknown_80FBCC8[]; +extern s16 gUnknown_80F4F24[]; +extern u8 *gUnknown_80FBCA4[]; +extern u8 *gUnknown_80FBC7C[]; +extern u8 *gPtrForecastPreventsConversion2Message[]; +extern s16 gUnknown_80F4F20[]; +extern u8 *gUnknown_80FBC5C[]; +extern u8 *gUnknown_80FBC38[]; +extern s16 gUnknown_80F4F18[]; +extern u8 *gUnknown_80FBC14[]; +extern u8 *gUnknown_80FBBF0[]; +extern s16 gUnknown_80F4EF8[]; +extern u8 *gUnknown_80FBAE4[]; +extern u8 *gUnknown_80FBAC0[]; +extern s16 gUnknown_80F4EE8[]; +extern u8 *gUnknown_80FB9B0[]; +extern u8 *gUnknown_80FB9D8[]; +extern s16 gUnknown_80F4ED4[]; +extern s16 gUnknown_80F4E80[]; +extern u8 *gUnknown_80FB17C[]; +extern u8 *gUnknown_80FB1A8[]; +extern s16 gUnknown_80F4E84[]; +extern u8 *gUnknown_80FB130[]; +extern u8 *gUnknown_80FB160[]; +extern s16 gUnknown_80F4E90[]; +extern u8 *gUnknown_80FAF5C[]; +extern u8 *gUnknown_80FAF8C[]; +extern s16 gUnknown_80F4EB4[]; +extern u8 *gUnknown_80FAE1C[]; +extern u8 *gUnknown_80FAE3C[]; +extern s16 gUnknown_80F4E8C[]; +extern u8 *gUnknown_80FB09C[]; +extern u8 *gUnknown_80FB0C4[]; +extern s16 gUnknown_80F4E88[]; +extern u8 *gUnknown_80FB048[]; +extern u8 *gUnknown_80FB074[]; +extern s16 gUnknown_80F4E98[]; +extern u8 *gUnknown_80FB10C[]; +extern u8 *gUnknown_80FB0E0[]; +extern u8 *gUnknown_80FC074[]; +extern s16 gUnknown_80F4E9C[]; +extern s16 gUnknown_80F4EA0[]; +extern u8 *gUnknown_80FD254[]; +extern u8 *gUnknown_80FD27C[]; +extern u8 *gUnknown_80FD22C[]; +extern u8 *gUnknown_80FD20C[]; +extern u8 *gUnknown_80FC428[]; +extern u8 *gUnknown_80FC454[]; +extern u8 *gUnknown_80FC3D8[]; +extern u8 *gUnknown_80FC3FC[]; +extern u8 *gUnknown_80FC388[]; +extern u8 *gUnknown_80FC3B4[]; +extern u8 *gUnknown_80FC33C[]; +extern u8 *gUnknown_80FC360[]; +extern u8 *gUnknown_80FDBD0[]; +extern u8 *gUnknown_80FDBF0[]; +extern u8 *gUnknown_80FB880[]; +extern u8 *gUnknown_80FB89C[]; +extern s16 gUnknown_80F4F10[]; +extern u8 *gUnknown_80FB834[]; +extern u8 *gUnknown_80FB85C[]; +extern s16 gUnknown_80F4F0C[]; +extern s16 gUnknown_80F4F08[]; +extern u8 *gUnknown_80FB810[]; +extern u8 *gUnknown_80FB7F4[]; +extern u8 *gUnknown_80FC028[]; +extern u8 *gUnknown_80FC054[]; +extern u8 *gUnknown_80FC000[]; +extern u8 *gUnknown_80FBFD8[]; +extern u8 *gUnknown_80FBF9C[]; +extern u8 *gUnknown_80FBFB8[]; +extern u8 *gUnknown_80FBF04[]; +extern u8 *gUnknown_80FBEC0[]; +extern s16 gUnknown_80F4EFC[]; +extern u8 *gUnknown_80FBEE4[]; +extern s16 gUnknown_80F4F04[]; +extern u8 *gUnknown_80FBF50[]; +extern u8 *gUnknown_80FBF28[]; +extern s16 gUnknown_80F4F1C[]; +extern u8 *gUnknown_80FBF68[]; +extern u8 *gUnknown_80FBF84[]; extern void sub_8049ED4(); extern void sub_8040A84(); @@ -90,10 +181,900 @@ extern void sub_806F324(struct DungeonEntity *, s16, u32, u32); extern void sub_8075C58(struct DungeonEntity *, struct DungeonEntity *, s32, s32); extern void sub_806BFC0(struct DungeonEntityData *, u32); extern void sub_80420C8(struct DungeonEntity *r0); +extern void nullsub_68(struct DungeonEntity *); +extern void nullsub_67(struct DungeonEntity *); +extern void nullsub_66(struct DungeonEntity *); +extern void nullsub_65(struct DungeonEntity *); +extern void nullsub_64(struct DungeonEntity *); +extern void nullsub_63(struct DungeonEntity *); +extern void nullsub_62(struct DungeonEntity *); +extern void nullsub_61(struct DungeonEntity *); +extern void nullsub_60(struct DungeonEntity *); +extern void nullsub_59(struct DungeonEntity *); +extern void nullsub_58(struct DungeonEntity *); +extern void nullsub_57(struct DungeonEntity *); +extern void sub_8041B34(struct DungeonEntity *); +void sub_8041BD0(struct DungeonEntity *r0, u8 r1); +void sub_8041EB4(struct DungeonEntity *); +void sub_8041EA4(struct DungeonEntity *); +extern void sub_8041E84(struct DungeonEntity *); +extern void sub_8041E94(struct DungeonEntity *); +extern void sub_8041E74(struct DungeonEntity *); +extern void sub_8041E60(struct DungeonEntity *); +extern void sub_8041E4C(struct DungeonEntity *); +extern void sub_8041E3C(struct DungeonEntity *); +extern void sub_803F580(u32); +extern void sub_8041E1C(struct DungeonEntity *); +extern void nullsub_89(struct DungeonEntity *); +extern void nullsub_88(struct DungeonEntity *); +extern void nullsub_87(struct DungeonEntity *); +extern void nullsub_86(struct DungeonEntity *); +extern void sub_8041E0C(struct DungeonEntity *); +extern void sub_8041DD8(struct DungeonEntity *r0, s32 r1); // NOTE: is s16 in another file +extern s32 sub_803D870(void *, u32); +extern void sub_806CF98(struct DungeonEntity *); +extern bool8 sub_806AA0C(s32, u32); +u32 ExtractSpeciesIndex(struct PokemonStruct **r0); // TODO: look more into this and fix it. + +void MuzzleTarget(struct DungeonEntity *pokemon, struct DungeonEntity *target) +{ + struct DungeonEntityData *entityData; + + if ((EntityExists(target)) && (!HasSafeguardStatus(pokemon, target, TRUE))) { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + if (entityData->muzzledStatus != MUZZLED_STATUS_MUZZLED) { + entityData->muzzledStatus = MUZZLED_STATUS_MUZZLED; + entityData->muzzledTurnsLeft = CalculateStatusTurns(target,gUnknown_80F4F1C, TRUE) + 1; + nullsub_86(target); + sub_80522F4(pokemon, target, *gUnknown_80FBF68); + } + else + { + sub_80522F4(pokemon,target,*gUnknown_80FBF84); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +// TODO: still gross but does match +void sub_8078E18(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + s16 species; + s32 iVar5; + s32 transformSpecies; + s16 transformSpecies_s16; + s32 index; + struct DungeonEntityData *entityData; + s32 iVar9; + struct PokemonStruct *auStack544[128]; + + + if (EntityExists(target)) { + entityData = target->entityData; + if (entityData->transformStatus == TRANSFORM_STATUS_TRANSFORMED) { + sub_80522F4(pokemon,target,*gUnknown_80FBF04); + } + else { + SetMessageArgument(gAvailablePokemonNames,target,0); + iVar5 = sub_803D870(auStack544,0); + if (iVar5 == 0) { + goto print; + } + else + { + iVar9 = 0; + + for(index = 0; index < DUNGEON_MAX_POKEMON; index++) + { + species = ExtractSpeciesIndex(&auStack544[DungeonRandomCapped(iVar5) << 1]); + transformSpecies_s16 = sub_8069F54(target, species); + transformSpecies = transformSpecies_s16; + if (((transformSpecies != entityData->transformSpecies) && (sub_806AA0C(transformSpecies, 1))) && + (iVar9 = sub_80687D0(transformSpecies), iVar9 != 0)) break; + } + if ((index == DUNGEON_MAX_POKEMON) || (iVar9 == 0)) { +print: + sub_80522F4(pokemon,target,*gUnknown_80FBEE4); + } + else + { + entityData->transformSpecies = transformSpecies; + target->unk64 = iVar9; + entityData->transformStatus = TRANSFORM_STATUS_TRANSFORMED; + entityData->transformStatusTurnsLeft = CalculateStatusTurns(target,gUnknown_80F4EFC,TRUE) + 1; + sub_806CF98(target); + nullsub_87(target); + sub_806CCB4(target, sub_806CEBC(target)); + CopyCyanSpeciesNametoBuffer(gUnknown_202DFE8, entityData->transformSpecies); + sub_80522F4(pokemon,target,*gUnknown_80FBEC0); + DungeonEntityUpdateStatusSprites(target); + } + } + } + } +} + +void sub_8078F50(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + struct DungeonEntityData *entityData_1; + struct DungeonEntityData *entityData; + + + if (EntityExists(target)) { + entityData_1 = target->entityData; + entityData = entityData_1; + + if (entityData->transformStatus == TRANSFORM_STATUS_TRANSFORMED) { + SendTransformEndMessage(pokemon,target); + } + SetMessageArgument(gAvailablePokemonNames,target,0); + if (entityData->transformStatus != TRANSFORM_STATUS_MOBILE) { + entityData->transformStatus = TRANSFORM_STATUS_MOBILE; + entityData->transformStatusTurnsLeft = CalculateStatusTurns(target,gUnknown_80F4F04, FALSE) + 1; + nullsub_88(target); + sub_80522F4(pokemon,target,*gUnknown_80FBF28); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FBF50); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void sub_8078FDC(struct DungeonEntity * pokemon, struct DungeonEntity * target, s16 param_3) +{ + struct DungeonEntityData *entityData; + s32 param_3_s16; + s32 param_3_s16_2; + bool32 flag; + bool32 flag2; + + param_3_s16 = param_3; + param_3_s16_2 = param_3_s16; + flag = FALSE; + flag2 = FALSE; + + if ((EntityExists(target)) && (!HasSafeguardStatus(pokemon,target,TRUE))) { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + if (entityData->accuracyStages[1] > 10) { + entityData->accuracyStages[1] = 10; + flag = TRUE; + } + if(flag) + { + sub_8041DD8(target,param_3_s16); + sub_80522F4(pokemon,target,*gUnknown_80FC000); + flag2 = TRUE; + } + if (entityData->exposedStatus) { + sub_80522F4(pokemon,target,*gUnknown_80FBFB8); + } + else + { + if (!flag2) { + sub_8041DD8(target,param_3_s16_2); + } + if (!HasType(target, TYPE_GHOST)) { + sub_80522F4(pokemon,target,*gUnknown_80FBFD8); + } + else { + entityData->exposedStatus = TRUE; + sub_80522F4(pokemon,target,*gUnknown_80FBF9C); + } + DungeonEntityUpdateStatusSprites(target); + } + } +} + +void IdentityItemHolders(struct DungeonEntity *pokemon, struct DungeonEntity *target) +{ + struct DungeonEntityData *entityData; + + if ((EntityExists(target)) && (!HasSafeguardStatus(pokemon, target, TRUE))) { + entityData = target->entityData; + if (!gDungeonGlobalData->itemHoldersIdentified) { + nullsub_89(target); + gDungeonGlobalData->itemHoldersIdentified = TRUE; + DungeonEntityUpdateStatusSprites(target); + sub_80522F4(pokemon,target,*gUnknown_80FC028); + } + else + { + sub_80522F4(pokemon,target,*gUnknown_80FC054); + } + } +} + +void BlindTarget(struct DungeonEntity *pokemon, struct DungeonEntity *target) +{ + struct DungeonEntityData *entityData; + + if ((EntityExists(target)) && (!HasSafeguardStatus(pokemon, target, TRUE))) { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + if (entityData->eyesightStatus != EYESIGHT_STATUS_BLINKER) { + entityData->eyesightStatus = EYESIGHT_STATUS_BLINKER; + entityData->eyesightStatusTurnsLeft = CalculateStatusTurns(target,gUnknown_80F4F08, TRUE) + 1; + sub_8041E0C(target); + sub_80522F4(pokemon,target,*gUnknown_80FB7F4); + sub_803E46C(0x31); + sub_8049ED4(); + sub_8040A84(); + } + else + { + sub_80522F4(pokemon,target,*gUnknown_80FB810); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void CrossEyeVisionTarget(struct DungeonEntity *pokemon, struct DungeonEntity *target) +{ + struct DungeonEntityData *entityData; + + + if (EntityExists(target)) { + if(!HasSafeguardStatus(pokemon, target, TRUE)) + { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + if (entityData->eyesightStatus != EYESIGHT_STATUS_CROSS_EYED) { + sub_8041E1C(target); + sub_80522F4(pokemon,target,*gUnknown_80FB834); + entityData->eyesightStatus = EYESIGHT_STATUS_CROSS_EYED; + entityData->eyesightStatusTurnsLeft = CalculateStatusTurns(target,gUnknown_80F4F0C, TRUE) + 1; + sub_803F580(0x1); + sub_8049ED4(); + sub_8040A84(); + } + else + { + sub_80522F4(pokemon,target,*gUnknown_80FB85C); + } + DungeonEntityUpdateStatusSprites(target); + } + } +} + +void RestoreVisionTarget(struct DungeonEntity *pokemon, struct DungeonEntity *target) +{ + struct DungeonEntityData *entityData; + + + if (EntityExists(target)) { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + if (entityData->eyesightStatus != EYESIGHT_STATUS_EYEDROPS) { + entityData->eyesightStatus = EYESIGHT_STATUS_EYEDROPS; + entityData->eyesightStatusTurnsLeft = CalculateStatusTurns(target,gUnknown_80F4F10, FALSE) + 1; + sub_8041E3C(target); + sub_80522F4(pokemon,target,*gUnknown_80FB880); + sub_803E46C(0x31); + sub_8049ED4(); + sub_8040A84(); + } + else + { + sub_80522F4(pokemon,target,*gUnknown_80FB89C); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void RestorePPTarget(struct DungeonEntity * pokemon,struct DungeonEntity * target, s32 param_3) +{ + volatile s32 PP; + volatile s32 maxPP; + struct PokemonMove *movePtr; + struct PokemonMove *movePtr1; + s32 index; + bool8 PPChanged; + struct DungeonEntityData *entityData; + + PPChanged = FALSE; + if (EntityExists(target)) { + entityData = target->entityData; + + for(index = 0; index < MAX_MON_MOVES; index++) + { + movePtr = &entityData->moves[index]; + movePtr1 = movePtr; + if ((movePtr->moveFlags & MOVE_FLAG_EXISTS) != 0) { + PP = movePtr->PP; + maxPP = GetMoveMaxPP(movePtr1); + if (PP < maxPP) { + PP += param_3; + if (PP > maxPP) { + PP = maxPP; + } + movePtr->PP = PP; + PPChanged = TRUE; + } + } + } + if (PPChanged) { + sub_8041E4C(target); + sub_80522F4(pokemon,target,*gUnknown_80FDBD0); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FDBF0); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void sub_80793B0(struct DungeonEntity * pokemon, struct DungeonEntity *target, s32 param_3) +{ + u32 oldStat; + u32 oldStat1; + s32 newStat; + struct DungeonEntityData *entityData; + struct DungeonEntityData *entityData1; + + if (EntityExists(target)) { + SetMessageArgument(gAvailablePokemonNames,target,0); + + // NOTE: had to have duplicates to match.. + entityData = target->entityData; + entityData1 = entityData; + oldStat = entityData->attack; + oldStat1 = oldStat; + + newStat = entityData->attack + param_3; + if (0xfe < newStat) { + newStat = 0xff; + } + entityData1->attack = newStat; + if (oldStat1 < (u8)newStat) { + sub_8041E60(target); + sub_80522F4(pokemon,target,*gUnknown_80FC33C); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FC360); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void sub_8079420(struct DungeonEntity * pokemon, struct DungeonEntity *target, s32 param_3) +{ + u32 oldStat; + u32 oldStat1; + s32 newStat; + struct DungeonEntityData *entityData; + struct DungeonEntityData *entityData1; + + if (EntityExists(target)) { + SetMessageArgument(gAvailablePokemonNames,target,0); + + // NOTE: had to have duplicates to match.. + entityData = target->entityData; + entityData1 = entityData; + oldStat = entityData->specialAttack; + oldStat1 = oldStat; + + newStat = entityData->specialAttack + param_3; + if (0xfe < newStat) { + newStat = 0xff; + } + entityData1->specialAttack = newStat; + if (oldStat1 < (u8)newStat) { + sub_8041E74(target); + sub_80522F4(pokemon,target,*gUnknown_80FC388); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FC3B4); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void sub_8079490(struct DungeonEntity * pokemon, struct DungeonEntity *target, s32 param_3) +{ + u32 oldStat; + u32 oldStat1; + s32 newStat; + struct DungeonEntityData *entityData; + struct DungeonEntityData *entityData1; + + if (EntityExists(target)) { + SetMessageArgument(gAvailablePokemonNames,target,0); + + // NOTE: had to have duplicates to match.. + entityData = target->entityData; + entityData1 = entityData; + oldStat = entityData->defense; + oldStat1 = oldStat; + + newStat = entityData->defense + param_3; + if (0xfe < newStat) { + newStat = 0xff; + } + entityData1->defense = newStat; + if (oldStat1 < (u8)newStat) { + sub_8041E84(target); + sub_80522F4(pokemon,target,*gUnknown_80FC3D8); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FC3FC); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void sub_8079500(struct DungeonEntity * pokemon, struct DungeonEntity *target, s32 param_3) +{ + u32 oldStat; + u32 oldStat1; + s32 newStat; + struct DungeonEntityData *entityData; + struct DungeonEntityData *entityData1; + + if (EntityExists(target)) { + SetMessageArgument(gAvailablePokemonNames,target,0); + + // NOTE: had to have duplicates to match.. + entityData = target->entityData; + entityData1 = entityData; + oldStat = entityData->specialDefense; + oldStat1 = oldStat; + + newStat = entityData->specialDefense + param_3; + if (0xfe < newStat) { + newStat = 0xff; + } + entityData1->specialDefense = newStat; + if (oldStat1 < (u8)newStat) { + sub_8041E94(target); + sub_80522F4(pokemon,target,*gUnknown_80FC428); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FC454); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void LongTossStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + struct DungeonEntityData *entityData; + + entityData = target->entityData; + SetMessageArgument(gUnknown_202DFE8,target,0); + if (entityData->itemStatus != ITEM_STATUS_LONG_TOSS) { + entityData->itemStatus = ITEM_STATUS_LONG_TOSS; + sub_8041EA4(target); + sub_80522F4(pokemon,target,*gUnknown_80FD20C); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FD22C); + } + DungeonEntityUpdateStatusSprites(target); +} + +void PierceStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + struct DungeonEntityData *entityData; + + entityData = target->entityData; + SetMessageArgument(gUnknown_202DFE8,target,0); + if (entityData->itemStatus != ITEM_STATUS_PIERCE) { + entityData->itemStatus = ITEM_STATUS_PIERCE; + sub_8041EB4(target); + sub_80522F4(pokemon,target,*gUnknown_80FD254); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FD27C); + } + DungeonEntityUpdateStatusSprites(target); +} + +void sub_8079618(struct DungeonEntity *pokemon, struct DungeonEntity *target, u8 newStatus, struct PokemonMove *move, u8 *message) +{ + bool8 bVar2; + struct PokemonMove *movePtr; + s32 index; + bool8 uVar5; + s32 iVar7; + s32 iVar8; + struct DungeonEntityData *entityData; + + if (EntityExists(target)) { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + if ((entityData->chargingStatus == newStatus) && (newStatus == CHARGING_STATUS_RAGE)) { + sub_80522F4(pokemon,target,*gUnknown_80FC074); + } + else { + entityData->chargingStatus = newStatus; + + for(index = 0; index < MAX_MON_MOVES; index++) + { + movePtr = &entityData->moves[index]; + if(movePtr == move) + { + entityData->chargingStatusMoveIndex = index; + break; + } + } + entityData->unk14A = 1; + + uVar5 = FALSE; + if ((u8)(newStatus - 7) < 2) { + entityData->unkFF = 1; + uVar5 = TRUE; + } + else if ((u8)(newStatus - 9) < 2) { + entityData->unkFF = 2; + } + if (newStatus == 1) { + entityData->chargingStatusTurnsLeft = CalculateStatusTurns(target,gUnknown_80F4E9C, FALSE) + 1; + entityData->unkA0 = 0; + } + if (newStatus == CHARGING_STATUS_RAGE) { + entityData->chargingStatusTurnsLeft = CalculateStatusTurns(target,gUnknown_80F4EA0, FALSE) + 1; + } + sub_8041BD0(target,uVar5); + sub_80522F4(pokemon,target,message); + DungeonEntityUpdateStatusSprites(target); + + // TODO: this could probably be cleaner.. + for (index = 0, iVar8 = 0xc7ff; index < 400; index++) { + bVar2 = TRUE; + if (entityData->unkFF == 1) + if(iVar7 = entityData->unk174, bVar2 = FALSE, iVar7 > iVar8) // unk174 -> u32 to s32 + { + bVar2 = TRUE; + } + if (bVar2) { + break; + } + sub_803E46C(0x53); + } + } + } +} + +void sub_8079764(struct DungeonEntity * pokemon) +{ + struct DungeonEntityData *entityData; + + if (EntityExists(pokemon)) { + entityData = pokemon->entityData; + if ((entityData->chargingStatus != CHARGING_STATUS_BIDE) && (entityData->chargingStatus != CHARGING_STATUS_RAGE)) { + entityData->chargingStatus = CHARGING_STATUS_NONE; + entityData->unk14A = 0; + entityData->unkFF = 0; + } + DungeonEntityUpdateStatusSprites(pokemon); + } +} + +void sub_80797A0(struct DungeonEntity * pokemon, struct DungeonEntity * target, u8 newStatus) +{ + struct DungeonEntityData *entityData; + + if (EntityExists(target)) { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + if (entityData->protectionStatus == newStatus) { + sub_80522F4(pokemon,target,*gUnknown_80FB10C); + } + else { + nullsub_57(target); + if ((entityData->protectionStatus != PROTECTION_STATUS_COUNTER) && (entityData->protectionStatus != PROTECTION_STATUS_MINI_COUNTER)) { + entityData->protectionStatusTurnsLeft = CalculateStatusTurns(target,gUnknown_80F4E98, FALSE) + 1; + } + entityData->protectionStatus = newStatus; + sub_80522F4(pokemon,target,*gUnknown_80FB0E0); + DungeonEntityUpdateStatusSprites(target); + } + } +} + +void SafeguardStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + struct DungeonEntityData *entityData; + + if (EntityExists(target)) { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + if (entityData->protectionStatus != PROTECTION_STATUS_SAFEGUARD) { + entityData->protectionStatus = PROTECTION_STATUS_SAFEGUARD; + entityData->protectionStatusTurnsLeft = CalculateStatusTurns(target, gUnknown_80F4E88, FALSE) + 1; + nullsub_58(target); + sub_80522F4(pokemon,target,*gUnknown_80FB048); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FB074); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void MistStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + struct DungeonEntityData *entityData; + + if (EntityExists(target)) { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + if (entityData->protectionStatus != PROTECTION_STATUS_MIST) { + entityData->protectionStatus = PROTECTION_STATUS_MIST; + entityData->protectionStatusTurnsLeft = CalculateStatusTurns(target, gUnknown_80F4E8C, FALSE) + 1; + nullsub_59(target); + sub_80522F4(pokemon,target,*gUnknown_80FB09C); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FB0C4); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void WishStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + struct DungeonEntityData *entityData; + + if (EntityExists(target)) { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + if (entityData->protectionStatus != PROTECTION_STATUS_WISH) { + entityData->protectionStatus = PROTECTION_STATUS_WISH; + entityData->protectionStatusTurnsLeft = CalculateStatusTurns(target, gUnknown_80F4EB4, FALSE) + 1; + sub_8041B34(target); + sub_80522F4(pokemon,target,*gUnknown_80FAE1C); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FAE3C); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void MagicCoatStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + struct DungeonEntityData *entityData; + + if (EntityExists(target)) { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + if (entityData->protectionStatus != PROTECTION_STATUS_MAGIC_COAT) { + entityData->protectionStatus = PROTECTION_STATUS_MAGIC_COAT; + entityData->protectionStatusTurnsLeft = CalculateStatusTurns(target, gUnknown_80F4E90, FALSE) + 1; + nullsub_60(target); + sub_80522F4(pokemon,target,*gUnknown_80FAF5C); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FAF8C); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void LightScreenStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + struct DungeonEntityData *entityData; + + if (EntityExists(target)) { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + if (entityData->protectionStatus != PROTECTION_STATUS_LIGHT_SCREEN) { + entityData->protectionStatus = PROTECTION_STATUS_LIGHT_SCREEN; + entityData->protectionStatusTurnsLeft = CalculateStatusTurns(target, gUnknown_80F4E84, FALSE) + 1; + nullsub_61(target); + sub_80522F4(pokemon,target,*gUnknown_80FB130); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FB160); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void ReflectStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + struct DungeonEntityData *entityData; + + if (EntityExists(target)) { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + if (entityData->protectionStatus != PROTECTION_STATUS_REFLECT) { + entityData->protectionStatus = PROTECTION_STATUS_REFLECT; + entityData->protectionStatusTurnsLeft = CalculateStatusTurns(target, gUnknown_80F4E80, FALSE) + 1; + nullsub_62(target); + sub_80522F4(pokemon,target,*gUnknown_80FB17C); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FB1A8); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void ProtectStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + struct DungeonEntityData *entityData; + + if (EntityExists(target)) { + nullsub_63(target); + entityData = target->entityData; + if (entityData->protectionStatus != PROTECTION_STATUS_PROTECT) { + entityData->protectionStatus = PROTECTION_STATUS_PROTECT; + entityData->protectionStatusTurnsLeft = CalculateStatusTurns(target, gUnknown_80F4ED4, FALSE) + 1; + SetMessageArgument(gAvailablePokemonNames,target,0); + sub_80522F4(pokemon,target,*gUnknown_80FB9B0); + } + else { + SetMessageArgument(gAvailablePokemonNames,target,0); + sub_80522F4(pokemon,target,*gUnknown_80FB9D8); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void MirrorCoatStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + struct DungeonEntityData *entityData; + + if (EntityExists(target)) { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + if (entityData->protectionStatus != PROTECTION_STATUS_MIRROR_COAT) { + entityData->protectionStatus = PROTECTION_STATUS_MIRROR_COAT; + entityData->protectionStatusTurnsLeft = CalculateStatusTurns(target, gUnknown_80F4EE8, FALSE) + 1; + nullsub_64(target); + sub_80522F4(pokemon,target,*gUnknown_80FBAC0); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FBAE4); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void EndureStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + struct DungeonEntityData *entityData; + + if (EntityExists(target)) { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + if (entityData->protectionStatus != PROTECTION_STATUS_ENDURE) { + entityData->protectionStatus = PROTECTION_STATUS_ENDURE; + entityData->protectionStatusTurnsLeft = CalculateStatusTurns(target, gUnknown_80F4EF8, FALSE) + 1; + nullsub_65(target); + sub_80522F4(pokemon,target,*gUnknown_80FBBF0); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FBC14); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void MirrorMoveStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + struct DungeonEntityData *entityData; + + if (EntityExists(target)) { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + if (entityData->protectionStatus != PROTECTION_STATUS_MIRROR_MOVE) { + entityData->protectionStatus = PROTECTION_STATUS_MIRROR_MOVE; + entityData->protectionStatusTurnsLeft = CalculateStatusTurns(target, gUnknown_80F4F18, FALSE) + 1; + nullsub_66(target); + sub_80522F4(pokemon,target,*gUnknown_80FBC38); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FBC5C); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void Conversion2StatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + struct DungeonEntityData *entityData; + + if (EntityExists(target)) { + entityData = target->entityData; + + if(HasAbility(target, ABILITY_FORECAST)) + sub_80522F4(pokemon,target,*gPtrForecastPreventsConversion2Message); + else + { + SetMessageArgument(gAvailablePokemonNames,target,0); + if (entityData->protectionStatus != PROTECTION_STATUS_CONVERSION_2) { + entityData->protectionStatus = PROTECTION_STATUS_CONVERSION_2; + entityData->protectionStatusTurnsLeft = CalculateStatusTurns(target, gUnknown_80F4F20, FALSE) + 1; + nullsub_67(target); + sub_80522F4(pokemon,target,*gUnknown_80FBC7C); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FBCA4); + } + DungeonEntityUpdateStatusSprites(target); + } + } +} + +void VitalThrowStatusTarget(struct DungeonEntity * pokemon, struct DungeonEntity * target) +{ + struct DungeonEntityData *entityData; + + if (EntityExists(target)) { + entityData = target->entityData; + SetMessageArgument(gAvailablePokemonNames,target,0); + if (entityData->protectionStatus != PROTECTION_STATUS_VITAL_THROW) { + entityData->protectionStatus = PROTECTION_STATUS_VITAL_THROW; + entityData->protectionStatusTurnsLeft = CalculateStatusTurns(target, gUnknown_80F4F24, FALSE) + 1; + nullsub_68(target); + sub_80522F4(pokemon,target,*gUnknown_80FBCC8); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FBCF0); + } + DungeonEntityUpdateStatusSprites(target); + } +} + +void sub_8079E34(struct DungeonEntity * pokemon, struct DungeonEntity * target, bool8 param_3) +{ + bool8 statChanged; + struct DungeonEntityData *iVar3; + s32 index; + + statChanged = FALSE; + if (EntityExists(target)) { + iVar3 = target->entityData; + + for(index = 0; index < 2; index++) + { + if (iVar3->attackStages[index] != DEFAULT_STAT_STAGE) { + iVar3->attackStages[index] = DEFAULT_STAT_STAGE; + statChanged = TRUE; + } + if (iVar3->defenseStages[index] != DEFAULT_STAT_STAGE) { + iVar3->defenseStages[index] = DEFAULT_STAT_STAGE; + statChanged = TRUE; + } + if (iVar3->accuracyStages[index] != DEFAULT_STAT_STAGE) { + iVar3->accuracyStages[index] = DEFAULT_STAT_STAGE; + statChanged = TRUE; + } + if (iVar3->attackMultipliers[index] != DEFAULT_STAT_MULTIPLIER) { + iVar3->attackMultipliers[index] = DEFAULT_STAT_MULTIPLIER; + statChanged = TRUE; + } + if (iVar3->defenseMultipliers[index] != DEFAULT_STAT_MULTIPLIER) { + iVar3->defenseMultipliers[index] = DEFAULT_STAT_MULTIPLIER; + statChanged = TRUE; + } + } + if (statChanged) { + sub_80420C8(target); + } + else if (param_3 != 0) { + sub_80420C8(target); + } + SetMessageArgument(gAvailablePokemonNames,target,0); + if (statChanged) { + sub_80522F4(pokemon,target,*gUnknown_80FBD18); + } + else { + sub_80522F4(pokemon,target,*gUnknown_80FBD3C); + } + DungeonEntityUpdateStatusSprites(target); + } +} void sub_8079F20(struct DungeonEntity * pokemon, struct DungeonEntity * target, u8 param_3, u8 param_4) { - bool8 bVar1; // r9 + bool8 moveUnsealed; // r9 s32 moveSpeed; struct PokemonMove *move; struct DungeonEntityData *entityData; // r7 @@ -101,7 +1082,7 @@ void sub_8079F20(struct DungeonEntity * pokemon, struct DungeonEntity * target, s32 index; bVar8 = FALSE; - bVar1 = FALSE; + moveUnsealed = FALSE; if (EntityExists(target)) { entityData = target->entityData; if (HasNegativeStatus(target)) { @@ -122,8 +1103,8 @@ void sub_8079F20(struct DungeonEntity * pokemon, struct DungeonEntity * target, entityData->perishSongTimer = 0; sub_80522F4(pokemon,target,*gUnknown_8100594); } - if (entityData->exposedStatus != 0) { - entityData->exposedStatus = 0; + if (entityData->exposedStatus) { + entityData->exposedStatus = FALSE; sub_80522F4(pokemon,target,*gPtrExposedWoreOffMessage); } } @@ -144,7 +1125,7 @@ void sub_8079F20(struct DungeonEntity * pokemon, struct DungeonEntity * target, move = &entityData->moves[index]; if ((move->moveFlags & MOVE_FLAG_EXISTS) && (move->moveFlags2 & MOVE_FLAG_EXISTS)) { bVar8 = TRUE; - bVar1 = TRUE; + moveUnsealed = TRUE; move->moveFlags2 &= 0xfe; } } @@ -153,7 +1134,7 @@ void sub_8079F20(struct DungeonEntity * pokemon, struct DungeonEntity * target, if (param_3 != 0) { sub_80420C8(target); } - if (bVar1) { + if (moveUnsealed) { sub_80522F4(pokemon,target,*gPtrSealedMoveReleasedMessage); } } @@ -174,7 +1155,7 @@ void sub_807A0CC(struct DungeonEntity * pokemon, struct DungeonEntity * target) entityData = target->entityData; sub_806BFC0(entityData,0); entityData->perishSongTimer = 0; - entityData->exposedStatus = 0; + entityData->exposedStatus = FALSE; for(index = 0; index < MAX_MON_MOVES; index++) { @@ -226,7 +1207,7 @@ void SendSleepEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * case SLEEP_STATUS_YAWNING: if (param_3) { entityData->sleepStatus = SLEEP_STATUS_NONE; - sub_8075C58(pokemon,target,CalculateStatusTurns(target,gUnknown_80F4F2C,1) + 1,1); + sub_8075C58(pokemon,target,CalculateStatusTurns(target, gUnknown_80F4F2C, TRUE) + 1, 1); return; } sub_80522F4(pokemon,target,*gUnknown_80FA734); @@ -450,12 +1431,12 @@ void SendWaitingEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity void SendLinkedEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * target) { - struct DungeonEntityData *iVar3; + struct DungeonEntityData *entityData; if (EntityExists(target)) { - iVar3 = target->entityData; + entityData = target->entityData; SetMessageArgument(gAvailablePokemonNames,target,0); - switch(iVar3->linkedStatus) + switch(entityData->linkedStatus) { case LINKED_STATUS_NONE: break; @@ -466,8 +1447,8 @@ void SendLinkedEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * SendMessage(target,*gUnknown_80FAA8C); break; } - iVar3->linkedStatus = LINKED_STATUS_NONE; - iVar3->unkD8 = 0xff; + entityData->linkedStatus = LINKED_STATUS_NONE; + entityData->unkD8 = 0xff; DungeonEntityUpdateStatusSprites(target); } } @@ -504,11 +1485,11 @@ void SendMoveEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity * t void SendTransformEndMessage(struct DungeonEntity * pokemon, struct DungeonEntity *target) { - bool8 bVar1; + bool8 isInvisible; struct DungeonEntityData *entityData; u32 uVar3; - bVar1 = FALSE; + isInvisible = FALSE; if (!EntityExists(target)) { return; } @@ -519,7 +1500,7 @@ void SendTransformEndMessage(struct DungeonEntity * pokemon, struct DungeonEntit case 4: break; case TRANSFORM_STATUS_INVISIBLE: - bVar1 = TRUE; + isInvisible = TRUE; SendMessage(target,*gUnknown_80FA9F4); break; case TRANSFORM_STATUS_MOBILE: @@ -535,7 +1516,7 @@ void SendTransformEndMessage(struct DungeonEntity * pokemon, struct DungeonEntit } entityData->transformStatus = TRANSFORM_STATUS_NONE; DungeonEntityUpdateStatusSprites(target); - if (bVar1) { + if (isInvisible) { sub_807EC28(1); } } diff --git a/src/status_checker.c b/src/status_checker.c index 040d73440..2d6f71dd8 100644 --- a/src/status_checker.c +++ b/src/status_checker.c @@ -2,6 +2,7 @@ #include "status_checker.h" #include "code_80521D0.h" +#include "code_8077274_1.h" #include "constants/move_id.h" #include "constants/status.h" #include "constants/type.h" @@ -24,8 +25,6 @@ extern void sub_807F43C(struct DungeonEntity *, struct DungeonEntity *); extern void sub_8078F50(struct DungeonEntity *, struct DungeonEntity *); extern void sub_8077E4C(struct DungeonEntity *, struct DungeonEntity *); -extern void sub_8079570(struct DungeonEntity *, struct DungeonEntity *); -extern void sub_80795C4(struct DungeonEntity *, struct DungeonEntity *); extern void sub_807DC68(struct DungeonEntity *, struct DungeonEntity *); extern void sub_8077BB4(struct DungeonEntity *, struct DungeonEntity *, u8); extern void sub_8078A58(struct DungeonEntity *, struct DungeonEntity *, s16, u32); @@ -281,13 +280,13 @@ bool8 sub_805C474(struct DungeonEntity *pokemon, struct DungeonEntity *target) bool8 sub_805C480(struct DungeonEntity *pokemon, struct DungeonEntity *target) { - sub_8079570(pokemon, target); + LongTossStatusTarget(pokemon, target); return TRUE; } bool8 sub_805C48C(struct DungeonEntity *pokemon, struct DungeonEntity *target) { - sub_80795C4(pokemon, target); + PierceStatusTarget(pokemon, target); return TRUE; } From 95aa33612f2731acb1c3f94e972e352882042930 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 26 Aug 2022 08:57:51 -0700 Subject: [PATCH 7/9] more decomping --- asm/code_8075BA4.s | 139 ------------------------------------------- include/dungeon_ai.h | 1 + src/dungeon_ai.c | 75 ++++++++++++++++++++++- 3 files changed, 75 insertions(+), 140 deletions(-) diff --git a/asm/code_8075BA4.s b/asm/code_8075BA4.s index d1620fb81..28f1714db 100644 --- a/asm/code_8075BA4.s +++ b/asm/code_8075BA4.s @@ -5,145 +5,6 @@ .text - thumb_func_start sub_8075BF4 -sub_8075BF4: - push {r4-r7,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r7, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - bne _08075C0A - movs r0, 0 - b _08075C52 -_08075C0A: - ldr r6, [r5, 0x70] - adds r1, r6, 0 - adds r1, 0xA8 - ldrb r0, [r1] - cmp r0, 0x3 - beq _08075C48 - cmp r0, 0x1 - beq _08075C44 - movs r0, 0x1 - strb r0, [r1] - cmp r4, 0x7F - beq _08075C3C - adds r0, r5, 0 - movs r1, 0x2F - bl HasAbility - lsls r0, 24 - cmp r0, 0 - beq _08075C3C - lsrs r0, r4, 31 - adds r0, r4, r0 - asrs r4, r0, 1 - cmp r4, 0 - bgt _08075C3C - movs r4, 0x1 -_08075C3C: - adds r0, r6, 0 - adds r0, 0xA9 - strb r4, [r0] - b _08075C4A -_08075C44: - movs r7, 0x1 - b _08075C4A -_08075C48: - movs r7, 0x2 -_08075C4A: - adds r0, r5, 0 - bl DungeonEntityUpdateStatusSprites - adds r0, r7, 0 -_08075C52: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8075BF4 - - thumb_func_start sub_8075C58 -sub_8075C58: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - adds r4, r1, 0 - mov r8, r2 - lsls r3, 24 - lsrs r5, r3, 24 - adds r7, r5, 0 - movs r2, 0x1 - adds r3, r5, 0 - bl sub_8075CFC - lsls r0, 24 - cmp r0, 0 - bne _08075CEC - ldr r0, [r4, 0x70] - adds r0, 0xA8 - ldrb r0, [r0] - cmp r0, 0x2 - bne _08075C90 - cmp r5, 0 - beq _08075CEC - ldr r0, _08075C8C - b _08075CCE - .align 2, 0 -_08075C8C: .4byte gUnknown_80FB380 -_08075C90: - cmp r0, 0x5 - bne _08075CA0 - cmp r7, 0 - beq _08075CEC - ldr r0, _08075C9C - b _08075CCE - .align 2, 0 -_08075C9C: .4byte gUnknown_80FB384 -_08075CA0: - adds r0, r4, 0 - bl sub_8041AF4 - adds r0, r4, 0 - mov r1, r8 - bl sub_8075BF4 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0 - movs r1, 0x8 - bl sub_806CE68 - cmp r5, 0x1 - bne _08075CC8 - ldr r0, _08075CC4 - b _08075CCE - .align 2, 0 -_08075CC4: .4byte gUnknown_80FB338 -_08075CC8: - cmp r5, 0x2 - bne _08075CE0 - ldr r0, _08075CDC -_08075CCE: - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _08075CEC - .align 2, 0 -_08075CDC: .4byte gUnknown_80FB35C -_08075CE0: - ldr r0, _08075CF8 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 -_08075CEC: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08075CF8: .4byte gUnknown_80FB318 - thumb_func_end sub_8075C58 - thumb_func_start sub_8075CFC sub_8075CFC: push {r4-r7,lr} diff --git a/include/dungeon_ai.h b/include/dungeon_ai.h index c4c0eff5d..8da0e791f 100644 --- a/include/dungeon_ai.h +++ b/include/dungeon_ai.h @@ -4,5 +4,6 @@ #include "dungeon_entity.h" void DecideAction(struct DungeonEntity *pokemon); +u8 sub_8075BF4(struct DungeonEntity * pokemon, s32 param_2); #endif diff --git a/src/dungeon_ai.c b/src/dungeon_ai.c index 3d9f7b154..aa3c73786 100644 --- a/src/dungeon_ai.c +++ b/src/dungeon_ai.c @@ -1,12 +1,14 @@ #include "global.h" #include "dungeon_ai.h" +#include "constants/ability.h" #include "constants/dungeon_action.h" #include "constants/direction.h" #include "constants/iq_skill.h" #include "constants/status.h" #include "constants/targeting.h" #include "code_80521D0.h" +#include "code_8077274_1.h" #include "dungeon_action.h" #include "dungeon_ai_attack.h" #include "dungeon_ai_items.h" @@ -26,8 +28,13 @@ extern char gAvailablePokemonNames[]; extern char *gPtrCouldntBeUsedMessage; extern char *gPtrItsaMonsterHouseMessage; +extern u8 *gUnknown_80FB380[]; +extern u8 *gUnknown_80FB384[]; +extern u8 *gUnknown_80FB338[]; +extern u8 *gUnknown_80FB318[]; +extern u8 *gUnknown_80FB35C[]; -extern void SendImmobilizeEndMessage(struct DungeonEntity*, struct DungeonEntity*); +extern void DungeonEntityUpdateStatusSprites(struct DungeonEntity *); extern void SetMessageArgument(char[], struct DungeonEntity*, u32); extern u8 sub_8044B28(void); extern void sub_807AB38(struct DungeonEntity *, u32); @@ -35,6 +42,10 @@ extern void sub_8041888(u32); extern u8 sub_803F428(s16 *); extern void sub_803E708(u32, u32); extern struct DungeonEntity *GetLeaderEntity(); +extern u8 sub_8075CFC(struct DungeonEntity *, struct DungeonEntity *, u32, u32); +extern void sub_8041AF4(struct DungeonEntity *); +extern void sub_80522F4(struct DungeonEntity *r1, struct DungeonEntity *r2, u8 *); +extern void sub_806CE68(struct DungeonEntity *, s32); u32 sub_8075818(struct DungeonEntity *entity) { @@ -284,3 +295,65 @@ void sub_8075BA4(struct DungeonEntity *param_1,char param_2) TargetTileInFront(param_1); } } + +u8 sub_8075BF4(struct DungeonEntity * pokemon, s32 sleepTurns) +{ + struct DungeonEntityData *entityData; + u32 uVar4; + + uVar4 = 0; + if (!EntityExists(pokemon)){ + return uVar4; + } + else + { + entityData = pokemon->entityData; + + if(entityData->sleepStatus != SLEEP_STATUS_NIGHTMARE && entityData->sleepStatus != SLEEP_STATUS_SLEEP) + { + entityData->sleepStatus = SLEEP_STATUS_SLEEP; + if ((sleepTurns != 0x7f) && HasAbility(pokemon, ABILITY_EARLY_BIRD) && + (sleepTurns = sleepTurns / 2, sleepTurns < 1)) { + sleepTurns = 1; + } + entityData->sleepStatusTurnsLeft = sleepTurns; + } + else if(entityData->sleepStatus == SLEEP_STATUS_SLEEP) + uVar4 = 1; + else if(entityData->sleepStatus == SLEEP_STATUS_NIGHTMARE) + uVar4 = 2; + DungeonEntityUpdateStatusSprites(pokemon); + } + return uVar4; +} + +void sub_8075C58(struct DungeonEntity * pokemon, struct DungeonEntity * target, s32 param_3, u8 param_4) +{ + u8 sleepStatus; + u8 cVar2; + + + if (sub_8075CFC(pokemon,target,1,param_4) == '\0') { + sleepStatus = target->entityData->sleepStatus; + if (sleepStatus == SLEEP_STATUS_SLEEPLESS) { + if (param_4) + sub_80522F4(pokemon,target,*gUnknown_80FB380); + } + else if (sleepStatus == SLEEP_STATUS_NAPPING) { + if (param_4) + sub_80522F4(pokemon,target,*gUnknown_80FB384); + } + else { + sub_8041AF4(target); + cVar2 = sub_8075BF4(target,param_3); + sub_806CE68(target,8); + + if (cVar2 == 1) + sub_80522F4(pokemon,target,*gUnknown_80FB338); + else if (cVar2 == 2) + sub_80522F4(pokemon,target,*gUnknown_80FB35C); + else + sub_80522F4(pokemon,target,*gUnknown_80FB318); + } + } +} From a8b88f9b64e93a18d2bcf10fc92a2bd671d23cec Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 26 Aug 2022 09:25:27 -0700 Subject: [PATCH 8/9] some code cleanup --- src/adventure_log.c | 22 +++++++++------------- src/code_801D760.c | 9 ++++----- src/kecleon_items_1.c | 19 +++++++------------ 3 files changed, 20 insertions(+), 30 deletions(-) diff --git a/src/adventure_log.c b/src/adventure_log.c index 9e919e068..7c32727a2 100644 --- a/src/adventure_log.c +++ b/src/adventure_log.c @@ -11,16 +11,12 @@ struct AdventureLog /* 0x1A */ s16 unk1A; /* 0x1C */ s16 unk1C; /* 0x1E */ s16 currPage; - u16 unk20; + s16 unk20; u8 fill22[0x34 - 0x22]; u32 unk34; struct UnkTextStruct2 *unk38; - struct UnkTextStruct2 unk3C[3]; - u8 fill84[0x9C - 0x84]; - u8 unk9C; - /* 0x9D */ u8 currPage_u8; - u8 unk9E; - u8 unk9F; + struct UnkTextStruct2 unk3C[4]; + u8 unk9C[4]; }; extern struct AdventureLog *gAdventureLog; @@ -79,7 +75,7 @@ u32 CreateAdventureLogScreen(u32 param_1) gAdventureLog->unk38 = &gAdventureLog->unk3C[param_1]; sub_8006518(gAdventureLog->unk3C); gAdventureLog->unk3C[gAdventureLog->unk34] = gUnknown_80E2008; - gAdventureLog->unk38->unk14 = &gAdventureLog->unk9C; + gAdventureLog->unk38->unk14 = gAdventureLog->unk9C; ResetUnusedInputStruct(); sub_800641C(gAdventureLog->unk3C,1,1); @@ -134,10 +130,10 @@ void sub_8032084(void) { u32 sVar2; - gAdventureLog->unk9C = gAdventureLog->unk20; - gAdventureLog->currPage_u8 = gAdventureLog->currPage; - gAdventureLog->unk9E = 0xb; - gAdventureLog->unk9F = 0; + gAdventureLog->unk9C[0] = gAdventureLog->unk20; + gAdventureLog->unk9C[1]= gAdventureLog->currPage; + gAdventureLog->unk9C[2]= 0xb; + gAdventureLog->unk9C[3]= 0; // So a sign extend.. sVar2 = sub_80095E4(gAdventureLog->unk1A,0xc) + 2 << 0x10; // TODO needs asr r3, r0, r16 @@ -225,7 +221,7 @@ void DisplayAdventureLog(void) // Draw Header xxx_call_draw_string(r6, 0, gAdventureLogHeaderText, gAdventureLog->unk34, 0); r4 += 4; - r6 = r4 + gAdventureLog->unk9E * 8; + r6 = r4 + gAdventureLog->unk9C[2] * 8; // Draw Page # sub_8012BC4(r6, 0, gAdventureLog->currPage + 1, 1, 7, gAdventureLog->unk34); diff --git a/src/code_801D760.c b/src/code_801D760.c index c2014eab0..9fec354e4 100644 --- a/src/code_801D760.c +++ b/src/code_801D760.c @@ -13,13 +13,12 @@ struct unkStruct_203B258 { // size: 0xA0 - u8 fill0[0x14]; - u32 unk14; + u8 fill0[0x18]; u16 unk18; u16 unk1A; - u16 unk1C; - u16 unk1E; - u16 unk20; + s16 unk1C; + s16 unk1E; + s16 unk20; u16 unk22; u8 unk24[0x34 - 0x24]; u32 unk34; diff --git a/src/kecleon_items_1.c b/src/kecleon_items_1.c index 7e6d0ed54..20b837194 100644 --- a/src/kecleon_items_1.c +++ b/src/kecleon_items_1.c @@ -67,12 +67,7 @@ struct unkStruct_203B214 {; // size: 0xA0 u8 fill0[0x18]; - // NOTE: has to be packed here so it doesn't take 4 bytes.. - union __attribute__ ((__packed__)) temp2 - { - u16 unk18; - u8 unk18_u8; - } temp; + u16 unk18; s16 unk1A; s16 unk1C; s16 unk1E; @@ -521,7 +516,7 @@ u32 sub_8019E40(u32 r0) ResetUnusedInputStruct(); sub_800641C(gUnknown_203B214->unk3C, 1, 1); sub_8013818(gUnknown_203B214, xxx_count_inv_unk230(), 0xA, r0); - gUnknown_203B214->temp.unk18 = gUnknown_203B218; + gUnknown_203B214->unk18 = gUnknown_203B218; sub_8013984((u8 *)gUnknown_203B214); sub_801A064(); sub_801A0D8(); @@ -586,7 +581,7 @@ u32 sub_8019EDC(u8 r0) u8 sub_8019FB0(void) { - return (gUnknown_203B214->unk1E * gUnknown_203B214->unk1C) + gUnknown_203B214->temp.unk18_u8; + return (gUnknown_203B214->unk1E * gUnknown_203B214->unk1C) + (u8)gUnknown_203B214->unk18; } void sub_8019FCC(u32 r0) @@ -609,7 +604,7 @@ void sub_801A010(void) { if(gUnknown_203B214 != NULL) { - gUnknown_203B218 = gUnknown_203B214->temp.unk18; + gUnknown_203B218 = gUnknown_203B214->unk18; gUnknown_203B214->unk3C[gUnknown_203B214->unk34] = gUnknown_80DB8B4; ResetUnusedInputStruct(); sub_800641C(gUnknown_203B214->unk3C, 1, 1); @@ -748,7 +743,7 @@ u32 sub_801A20C(u32 r0) ResetUnusedInputStruct(); sub_800641C(gUnknown_203B21C->unk3C, 1, 1); sub_8013818(gUnknown_203B21C, xxx_count_non_empty_inv_unk250_8091A48(), 0xA, r0); - gUnknown_203B21C->temp.unk18 = gUnknown_203B220; + gUnknown_203B21C->unk18 = gUnknown_203B220; sub_8013984((u8 *)gUnknown_203B21C); sub_801A430(); sub_801A4A4(); @@ -813,7 +808,7 @@ u32 sub_801A2A8(u8 r0) u8 sub_801A37C(void) { - return (gUnknown_203B21C->unk1E * gUnknown_203B21C->unk1C) + gUnknown_203B21C->temp.unk18_u8; + return (gUnknown_203B21C->unk1E * gUnknown_203B21C->unk1C) + gUnknown_203B21C->unk18; } void sub_801A398(u32 r0) @@ -836,7 +831,7 @@ void sub_801A3DC(void) { if(gUnknown_203B21C != NULL) { - gUnknown_203B220 = gUnknown_203B21C->temp.unk18; + gUnknown_203B220 = gUnknown_203B21C->unk18; gUnknown_203B21C->unk3C[gUnknown_203B21C->unk34] = gUnknown_80DB8FC; ResetUnusedInputStruct(); sub_800641C(gUnknown_203B21C->unk3C, 1, 1); From 56415343dbe7c37ae3b208bb2af2b570c5c8799f Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Thu, 6 Oct 2022 20:48:18 -0700 Subject: [PATCH 9/9] build dungeon trap data in JSON and make it shiftable --- Makefile | 4 +- data/dungeon/.gitignore | 1 + data/dungeon/trap_data.json | 3702 +++++++++++++++++++++++++++++ data/dungeon/traps_found.inc | 483 ++-- dungeon_trap.mk | 11 + tools/dungeonjson/dungeonjson.cpp | 213 +- 6 files changed, 4079 insertions(+), 335 deletions(-) create mode 100644 data/dungeon/trap_data.json create mode 100755 dungeon_trap.mk diff --git a/Makefile b/Makefile index ad6e232ed..4fd4d2d27 100755 --- a/Makefile +++ b/Makefile @@ -156,6 +156,7 @@ tools: $(TOOLDIRS) include dungeon_pokemon.mk include dungeon_floor.mk +include dungeon_trap.mk include data_pokemon.mk include data_item.mk include data_move.mk @@ -181,6 +182,7 @@ tidy: $(RM) -f $(POKEMON_SPECIES) $(RM) -f $(DUNGEON_FLOOR) $(RM) -f $(DUNGEON_POKEMON) + $(RM) -f $(DUNGEON_TRAP) find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} + @$(MAKE) clean -C libagbsyscall @@ -201,7 +203,7 @@ $(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.c $(C_BUILDDIR)/%.d: $(C_SUBDIR)/%.c @$(call scaninc,$(INCLUDE_PATHS)) -$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s dungeon_pokemon dungeon_floor data_pokemon data_item data_move +$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s dungeon_pokemon dungeon_floor dungeon_trap data_pokemon data_item data_move @$(CPP) -x assembler-with-cpp $(CPPFLAGS) $< -o $(DATA_ASM_BUILDDIR)/$*.i.s @$(PREPROC) $(DATA_ASM_BUILDDIR)/$*.i.s charmap.txt > $(DATA_ASM_BUILDDIR)/$*.s $(AS) $(ASFLAGS) -o $@ $(DATA_ASM_BUILDDIR)/$*.s diff --git a/data/dungeon/.gitignore b/data/dungeon/.gitignore index 9f03cde64..10086aa69 100644 --- a/data/dungeon/.gitignore +++ b/data/dungeon/.gitignore @@ -1,2 +1,3 @@ **/pokemon_found.inc **/floor_id.inc +trap_data.inc diff --git a/data/dungeon/trap_data.json b/data/dungeon/trap_data.json new file mode 100644 index 000000000..259f6c563 --- /dev/null +++ b/data/dungeon/trap_data.json @@ -0,0 +1,3702 @@ +[ + { + "name": "trap_found_out0", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 0, + "Grimy Trap": 0, + "Summon Trap": 0, + "Pitfall Trap": 0, + "Warp Trap": 0, + "Gust Trap": 0, + "Spin Trap": 0, + "Slumber Trap": 0, + "Slow Trap": 0, + "Seal Trap": 0, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 0, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 10000, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out1", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 0, + "Grimy Trap": 0, + "Summon Trap": 0, + "Pitfall Trap": 0, + "Warp Trap": 0, + "Gust Trap": 0, + "Spin Trap": 0, + "Slumber Trap": 0, + "Slow Trap": 0, + "Seal Trap": 0, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 0, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 10000, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out2", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 0, + "Grimy Trap": 0, + "Summon Trap": 0, + "Pitfall Trap": 0, + "Warp Trap": 0, + "Gust Trap": 0, + "Spin Trap": 0, + "Slumber Trap": 0, + "Slow Trap": 0, + "Seal Trap": 0, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 0, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 10000, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out3", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 0, + "Grimy Trap": 0, + "Summon Trap": 0, + "Pitfall Trap": 0, + "Warp Trap": 0, + "Gust Trap": 0, + "Spin Trap": 0, + "Slumber Trap": 0, + "Slow Trap": 0, + "Seal Trap": 0, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 0, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 10000, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out4", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 0, + "Grimy Trap": 0, + "Summon Trap": 0, + "Pitfall Trap": 0, + "Warp Trap": 0, + "Gust Trap": 0, + "Spin Trap": 0, + "Slumber Trap": 0, + "Slow Trap": 0, + "Seal Trap": 0, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 0, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 10000, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out5", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 0, + "Grimy Trap": 0, + "Summon Trap": 0, + "Pitfall Trap": 0, + "Warp Trap": 0, + "Gust Trap": 0, + "Spin Trap": 0, + "Slumber Trap": 0, + "Slow Trap": 0, + "Seal Trap": 0, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 0, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 10000, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out6", + "traps": { + "Trip Trap": 0, + "Mud Trap": 1667, + "Sticky Trap": 1666, + "Grimy Trap": 1667, + "Summon Trap": 556, + "Pitfall Trap": 0, + "Warp Trap": 0, + "Gust Trap": 0, + "Spin Trap": 0, + "Slumber Trap": 0, + "Slow Trap": 0, + "Seal Trap": 2222, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 0, + "PP-Zero Trap": 2222, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out7", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2419, + "Sticky Trap": 807, + "Grimy Trap": 806, + "Summon Trap": 0, + "Pitfall Trap": 0, + "Warp Trap": 807, + "Gust Trap": 403, + "Spin Trap": 726, + "Slumber Trap": 403, + "Slow Trap": 403, + "Seal Trap": 807, + "Poison Trap": 0, + "Selfdestruct Trap": 242, + "Explosion Trap": 564, + "PP-Zero Trap": 807, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 806, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out8", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2158, + "Sticky Trap": 1439, + "Grimy Trap": 720, + "Summon Trap": 0, + "Pitfall Trap": 359, + "Warp Trap": 720, + "Gust Trap": 359, + "Spin Trap": 648, + "Slumber Trap": 360, + "Slow Trap": 359, + "Seal Trap": 720, + "Poison Trap": 0, + "Selfdestruct Trap": 216, + "Explosion Trap": 503, + "PP-Zero Trap": 720, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 719, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out9", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2239, + "Sticky Trap": 1492, + "Grimy Trap": 747, + "Summon Trap": 0, + "Pitfall Trap": 0, + "Warp Trap": 746, + "Gust Trap": 373, + "Spin Trap": 672, + "Slumber Trap": 373, + "Slow Trap": 373, + "Seal Trap": 746, + "Poison Trap": 0, + "Selfdestruct Trap": 224, + "Explosion Trap": 522, + "PP-Zero Trap": 747, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 746, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out10", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 0, + "Grimy Trap": 0, + "Summon Trap": 0, + "Pitfall Trap": 0, + "Warp Trap": 0, + "Gust Trap": 0, + "Spin Trap": 0, + "Slumber Trap": 0, + "Slow Trap": 0, + "Seal Trap": 0, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 0, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 10000, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out11", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2721, + "Sticky Trap": 1361, + "Grimy Trap": 408, + "Summon Trap": 544, + "Pitfall Trap": 0, + "Warp Trap": 680, + "Gust Trap": 0, + "Spin Trap": 340, + "Slumber Trap": 545, + "Slow Trap": 0, + "Seal Trap": 1020, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 1020, + "PP-Zero Trap": 1361, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out12", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 0, + "Grimy Trap": 926, + "Summon Trap": 0, + "Pitfall Trap": 0, + "Warp Trap": 926, + "Gust Trap": 463, + "Spin Trap": 833, + "Slumber Trap": 1111, + "Slow Trap": 926, + "Seal Trap": 463, + "Poison Trap": 926, + "Selfdestruct Trap": 278, + "Explosion Trap": 370, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 2778, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out13", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 0, + "Grimy Trap": 862, + "Summon Trap": 0, + "Pitfall Trap": 345, + "Warp Trap": 862, + "Gust Trap": 862, + "Spin Trap": 603, + "Slumber Trap": 949, + "Slow Trap": 517, + "Seal Trap": 862, + "Poison Trap": 862, + "Selfdestruct Trap": 345, + "Explosion Trap": 345, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 2586, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out14", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 256, + "Grimy Trap": 855, + "Summon Trap": 0, + "Pitfall Trap": 342, + "Warp Trap": 855, + "Gust Trap": 854, + "Spin Trap": 599, + "Slumber Trap": 683, + "Slow Trap": 513, + "Seal Trap": 855, + "Poison Trap": 855, + "Selfdestruct Trap": 427, + "Explosion Trap": 342, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 2564, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out15", + "traps": { + "Trip Trap": 0, + "Mud Trap": 240, + "Sticky Trap": 320, + "Grimy Trap": 800, + "Summon Trap": 240, + "Pitfall Trap": 320, + "Warp Trap": 800, + "Gust Trap": 800, + "Spin Trap": 560, + "Slumber Trap": 640, + "Slow Trap": 480, + "Seal Trap": 800, + "Poison Trap": 800, + "Selfdestruct Trap": 480, + "Explosion Trap": 320, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 2400, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out16", + "traps": { + "Trip Trap": 0, + "Mud Trap": 606, + "Sticky Trap": 379, + "Grimy Trap": 757, + "Summon Trap": 228, + "Pitfall Trap": 303, + "Warp Trap": 757, + "Gust Trap": 758, + "Spin Trap": 530, + "Slumber Trap": 606, + "Slow Trap": 455, + "Seal Trap": 757, + "Poison Trap": 758, + "Selfdestruct Trap": 530, + "Explosion Trap": 303, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 2273, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out17", + "traps": { + "Trip Trap": 0, + "Mud Trap": 602, + "Sticky Trap": 375, + "Grimy Trap": 752, + "Summon Trap": 226, + "Pitfall Trap": 301, + "Warp Trap": 752, + "Gust Trap": 751, + "Spin Trap": 527, + "Slumber Trap": 601, + "Slow Trap": 451, + "Seal Trap": 752, + "Poison Trap": 752, + "Selfdestruct Trap": 602, + "Explosion Trap": 300, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 2256, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out18", + "traps": { + "Trip Trap": 0, + "Mud Trap": 597, + "Sticky Trap": 373, + "Grimy Trap": 746, + "Summon Trap": 224, + "Pitfall Trap": 299, + "Warp Trap": 746, + "Gust Trap": 746, + "Spin Trap": 523, + "Slumber Trap": 597, + "Slow Trap": 448, + "Seal Trap": 746, + "Poison Trap": 746, + "Selfdestruct Trap": 672, + "Explosion Trap": 298, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 2239, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out19", + "traps": { + "Trip Trap": 0, + "Mud Trap": 580, + "Sticky Trap": 362, + "Grimy Trap": 725, + "Summon Trap": 217, + "Pitfall Trap": 290, + "Warp Trap": 725, + "Gust Trap": 724, + "Spin Trap": 507, + "Slumber Trap": 580, + "Slow Trap": 435, + "Seal Trap": 725, + "Poison Trap": 724, + "Selfdestruct Trap": 580, + "Explosion Trap": 290, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 2174, + "Pokemon Trap": 0, + "Spiked Tile": 362 + } + }, + { + "name": "trap_found_out20", + "traps": { + "Trip Trap": 0, + "Mud Trap": 226, + "Sticky Trap": 376, + "Grimy Trap": 751, + "Summon Trap": 226, + "Pitfall Trap": 301, + "Warp Trap": 752, + "Gust Trap": 751, + "Spin Trap": 527, + "Slumber Trap": 601, + "Slow Trap": 451, + "Seal Trap": 752, + "Poison Trap": 752, + "Selfdestruct Trap": 602, + "Explosion Trap": 300, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 2256, + "Pokemon Trap": 0, + "Spiked Tile": 376 + } + }, + { + "name": "trap_found_out21", + "traps": { + "Trip Trap": 0, + "Mud Trap": 244, + "Sticky Trap": 406, + "Grimy Trap": 0, + "Summon Trap": 244, + "Pitfall Trap": 326, + "Warp Trap": 813, + "Gust Trap": 813, + "Spin Trap": 569, + "Slumber Trap": 650, + "Slow Trap": 488, + "Seal Trap": 813, + "Poison Trap": 813, + "Selfdestruct Trap": 650, + "Explosion Trap": 325, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 2439, + "Pokemon Trap": 0, + "Spiked Tile": 407 + } + }, + { + "name": "trap_found_out22", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 0, + "Grimy Trap": 971, + "Summon Trap": 0, + "Pitfall Trap": 0, + "Warp Trap": 971, + "Gust Trap": 485, + "Spin Trap": 874, + "Slumber Trap": 1165, + "Slow Trap": 971, + "Seal Trap": 485, + "Poison Trap": 971, + "Selfdestruct Trap": 291, + "Explosion Trap": 389, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 2427, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out23", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 0, + "Grimy Trap": 901, + "Summon Trap": 0, + "Pitfall Trap": 360, + "Warp Trap": 901, + "Gust Trap": 901, + "Spin Trap": 631, + "Slumber Trap": 991, + "Slow Trap": 540, + "Seal Trap": 901, + "Poison Trap": 901, + "Selfdestruct Trap": 360, + "Explosion Trap": 361, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 2252, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out24", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 268, + "Grimy Trap": 893, + "Summon Trap": 0, + "Pitfall Trap": 357, + "Warp Trap": 893, + "Gust Trap": 893, + "Spin Trap": 625, + "Slumber Trap": 714, + "Slow Trap": 536, + "Seal Trap": 892, + "Poison Trap": 893, + "Selfdestruct Trap": 447, + "Explosion Trap": 357, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 2232, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out25", + "traps": { + "Trip Trap": 0, + "Mud Trap": 250, + "Sticky Trap": 333, + "Grimy Trap": 834, + "Summon Trap": 250, + "Pitfall Trap": 333, + "Warp Trap": 833, + "Gust Trap": 834, + "Spin Trap": 583, + "Slumber Trap": 667, + "Slow Trap": 500, + "Seal Trap": 833, + "Poison Trap": 833, + "Selfdestruct Trap": 500, + "Explosion Trap": 334, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 2083, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out26", + "traps": { + "Trip Trap": 0, + "Mud Trap": 630, + "Sticky Trap": 394, + "Grimy Trap": 787, + "Summon Trap": 236, + "Pitfall Trap": 315, + "Warp Trap": 788, + "Gust Trap": 787, + "Spin Trap": 551, + "Slumber Trap": 630, + "Slow Trap": 473, + "Seal Trap": 787, + "Poison Trap": 787, + "Selfdestruct Trap": 552, + "Explosion Trap": 314, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 1969, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out27", + "traps": { + "Trip Trap": 0, + "Mud Trap": 625, + "Sticky Trap": 391, + "Grimy Trap": 781, + "Summon Trap": 234, + "Pitfall Trap": 313, + "Warp Trap": 781, + "Gust Trap": 781, + "Spin Trap": 547, + "Slumber Trap": 625, + "Slow Trap": 469, + "Seal Trap": 781, + "Poison Trap": 781, + "Selfdestruct Trap": 625, + "Explosion Trap": 313, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 1953, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out28", + "traps": { + "Trip Trap": 0, + "Mud Trap": 620, + "Sticky Trap": 388, + "Grimy Trap": 775, + "Summon Trap": 233, + "Pitfall Trap": 310, + "Warp Trap": 775, + "Gust Trap": 775, + "Spin Trap": 543, + "Slumber Trap": 620, + "Slow Trap": 465, + "Seal Trap": 775, + "Poison Trap": 775, + "Selfdestruct Trap": 698, + "Explosion Trap": 310, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 1938, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out29", + "traps": { + "Trip Trap": 0, + "Mud Trap": 602, + "Sticky Trap": 375, + "Grimy Trap": 752, + "Summon Trap": 226, + "Pitfall Trap": 301, + "Warp Trap": 752, + "Gust Trap": 751, + "Spin Trap": 527, + "Slumber Trap": 601, + "Slow Trap": 451, + "Seal Trap": 752, + "Poison Trap": 752, + "Selfdestruct Trap": 602, + "Explosion Trap": 300, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 1880, + "Pokemon Trap": 0, + "Spiked Tile": 376 + } + }, + { + "name": "trap_found_out30", + "traps": { + "Trip Trap": 0, + "Mud Trap": 287, + "Sticky Trap": 288, + "Grimy Trap": 574, + "Summon Trap": 575, + "Pitfall Trap": 0, + "Warp Trap": 575, + "Gust Trap": 287, + "Spin Trap": 517, + "Slumber Trap": 288, + "Slow Trap": 460, + "Seal Trap": 287, + "Poison Trap": 575, + "Selfdestruct Trap": 172, + "Explosion Trap": 230, + "PP-Zero Trap": 575, + "Chestnut Trap": 574, + "Wonder Tile": 3161, + "Pokemon Trap": 575, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out31", + "traps": { + "Trip Trap": 0, + "Mud Trap": 279, + "Sticky Trap": 280, + "Grimy Trap": 558, + "Summon Trap": 559, + "Pitfall Trap": 279, + "Warp Trap": 559, + "Gust Trap": 279, + "Spin Trap": 503, + "Slumber Trap": 279, + "Slow Trap": 447, + "Seal Trap": 280, + "Poison Trap": 558, + "Selfdestruct Trap": 168, + "Explosion Trap": 223, + "PP-Zero Trap": 559, + "Chestnut Trap": 559, + "Wonder Tile": 3072, + "Pokemon Trap": 559, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out32", + "traps": { + "Trip Trap": 0, + "Mud Trap": 301, + "Sticky Trap": 301, + "Grimy Trap": 603, + "Summon Trap": 602, + "Pitfall Trap": 301, + "Warp Trap": 603, + "Gust Trap": 301, + "Spin Trap": 542, + "Slumber Trap": 301, + "Slow Trap": 603, + "Seal Trap": 301, + "Poison Trap": 602, + "Selfdestruct Trap": 181, + "Explosion Trap": 241, + "PP-Zero Trap": 603, + "Chestnut Trap": 602, + "Wonder Tile": 2410, + "Pokemon Trap": 602, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out33", + "traps": { + "Trip Trap": 0, + "Mud Trap": 311, + "Sticky Trap": 310, + "Grimy Trap": 621, + "Summon Trap": 621, + "Pitfall Trap": 311, + "Warp Trap": 310, + "Gust Trap": 311, + "Spin Trap": 559, + "Slumber Trap": 311, + "Slow Trap": 621, + "Seal Trap": 310, + "Poison Trap": 621, + "Selfdestruct Trap": 187, + "Explosion Trap": 248, + "PP-Zero Trap": 621, + "Chestnut Trap": 621, + "Wonder Tile": 2485, + "Pokemon Trap": 621, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out34", + "traps": { + "Trip Trap": 0, + "Mud Trap": 585, + "Sticky Trap": 292, + "Grimy Trap": 585, + "Summon Trap": 585, + "Pitfall Trap": 292, + "Warp Trap": 585, + "Gust Trap": 292, + "Spin Trap": 527, + "Slumber Trap": 292, + "Slow Trap": 585, + "Seal Trap": 292, + "Poison Trap": 585, + "Selfdestruct Trap": 176, + "Explosion Trap": 233, + "PP-Zero Trap": 585, + "Chestnut Trap": 585, + "Wonder Tile": 2339, + "Pokemon Trap": 585, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out35", + "traps": { + "Trip Trap": 0, + "Mud Trap": 621, + "Sticky Trap": 311, + "Grimy Trap": 621, + "Summon Trap": 621, + "Pitfall Trap": 310, + "Warp Trap": 622, + "Gust Trap": 310, + "Spin Trap": 559, + "Slumber Trap": 311, + "Slow Trap": 621, + "Seal Trap": 310, + "Poison Trap": 622, + "Selfdestruct Trap": 186, + "Explosion Trap": 248, + "PP-Zero Trap": 621, + "Chestnut Trap": 622, + "Wonder Tile": 1863, + "Pokemon Trap": 621, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out36", + "traps": { + "Trip Trap": 0, + "Mud Trap": 1754, + "Sticky Trap": 293, + "Grimy Trap": 585, + "Summon Trap": 584, + "Pitfall Trap": 293, + "Warp Trap": 292, + "Gust Trap": 293, + "Spin Trap": 526, + "Slumber Trap": 292, + "Slow Trap": 585, + "Seal Trap": 877, + "Poison Trap": 585, + "Selfdestruct Trap": 176, + "Explosion Trap": 233, + "PP-Zero Trap": 585, + "Chestnut Trap": 585, + "Wonder Tile": 877, + "Pokemon Trap": 585, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out37", + "traps": { + "Trip Trap": 0, + "Mud Trap": 1796, + "Sticky Trap": 300, + "Grimy Trap": 359, + "Summon Trap": 599, + "Pitfall Trap": 299, + "Warp Trap": 300, + "Gust Trap": 299, + "Spin Trap": 539, + "Slumber Trap": 299, + "Slow Trap": 599, + "Seal Trap": 898, + "Poison Trap": 599, + "Selfdestruct Trap": 180, + "Explosion Trap": 239, + "PP-Zero Trap": 599, + "Chestnut Trap": 599, + "Wonder Tile": 898, + "Pokemon Trap": 599, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out38", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2139, + "Sticky Trap": 1070, + "Grimy Trap": 320, + "Summon Trap": 535, + "Pitfall Trap": 268, + "Warp Trap": 267, + "Gust Trap": 0, + "Spin Trap": 481, + "Slumber Trap": 268, + "Slow Trap": 534, + "Seal Trap": 802, + "Poison Trap": 535, + "Selfdestruct Trap": 161, + "Explosion Trap": 214, + "PP-Zero Trap": 534, + "Chestnut Trap": 535, + "Wonder Tile": 802, + "Pokemon Trap": 535, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out39", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2162, + "Sticky Trap": 1081, + "Grimy Trap": 325, + "Summon Trap": 540, + "Pitfall Trap": 270, + "Warp Trap": 271, + "Gust Trap": 0, + "Spin Trap": 486, + "Slumber Trap": 270, + "Slow Trap": 433, + "Seal Trap": 811, + "Poison Trap": 540, + "Selfdestruct Trap": 162, + "Explosion Trap": 217, + "PP-Zero Trap": 540, + "Chestnut Trap": 541, + "Wonder Tile": 810, + "Pokemon Trap": 541, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out40", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2222, + "Sticky Trap": 1111, + "Grimy Trap": 334, + "Summon Trap": 444, + "Pitfall Trap": 278, + "Warp Trap": 278, + "Gust Trap": 0, + "Spin Trap": 389, + "Slumber Trap": 444, + "Slow Trap": 333, + "Seal Trap": 834, + "Poison Trap": 555, + "Selfdestruct Trap": 0, + "Explosion Trap": 556, + "PP-Zero Trap": 1111, + "Chestnut Trap": 0, + "Wonder Tile": 833, + "Pokemon Trap": 278, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out41", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2837, + "Sticky Trap": 709, + "Grimy Trap": 426, + "Summon Trap": 496, + "Pitfall Trap": 0, + "Warp Trap": 355, + "Gust Trap": 0, + "Spin Trap": 496, + "Slumber Trap": 568, + "Slow Trap": 425, + "Seal Trap": 1418, + "Poison Trap": 710, + "Selfdestruct Trap": 0, + "Explosion Trap": 709, + "PP-Zero Trap": 851, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out42", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3448, + "Sticky Trap": 690, + "Grimy Trap": 0, + "Summon Trap": 483, + "Pitfall Trap": 0, + "Warp Trap": 345, + "Gust Trap": 0, + "Spin Trap": 482, + "Slumber Trap": 552, + "Slow Trap": 414, + "Seal Trap": 1379, + "Poison Trap": 690, + "Selfdestruct Trap": 0, + "Explosion Trap": 689, + "PP-Zero Trap": 828, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out43", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3425, + "Sticky Trap": 685, + "Grimy Trap": 0, + "Summon Trap": 479, + "Pitfall Trap": 0, + "Warp Trap": 343, + "Gust Trap": 0, + "Spin Trap": 479, + "Slumber Trap": 548, + "Slow Trap": 411, + "Seal Trap": 1370, + "Poison Trap": 685, + "Selfdestruct Trap": 0, + "Explosion Trap": 685, + "PP-Zero Trap": 890, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out44", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3378, + "Sticky Trap": 676, + "Grimy Trap": 0, + "Summon Trap": 473, + "Pitfall Trap": 0, + "Warp Trap": 338, + "Gust Trap": 0, + "Spin Trap": 473, + "Slumber Trap": 540, + "Slow Trap": 406, + "Seal Trap": 1351, + "Poison Trap": 676, + "Selfdestruct Trap": 0, + "Explosion Trap": 675, + "PP-Zero Trap": 1014, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out45", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3497, + "Sticky Trap": 699, + "Grimy Trap": 0, + "Summon Trap": 489, + "Pitfall Trap": 0, + "Warp Trap": 350, + "Gust Trap": 0, + "Spin Trap": 489, + "Slumber Trap": 560, + "Slow Trap": 419, + "Seal Trap": 1399, + "Poison Trap": 699, + "Selfdestruct Trap": 0, + "Explosion Trap": 700, + "PP-Zero Trap": 699, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out46", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3401, + "Sticky Trap": 681, + "Grimy Trap": 0, + "Summon Trap": 476, + "Pitfall Trap": 0, + "Warp Trap": 340, + "Gust Trap": 0, + "Spin Trap": 476, + "Slumber Trap": 544, + "Slow Trap": 681, + "Seal Trap": 1360, + "Poison Trap": 680, + "Selfdestruct Trap": 0, + "Explosion Trap": 681, + "PP-Zero Trap": 680, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out47", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3521, + "Sticky Trap": 704, + "Grimy Trap": 0, + "Summon Trap": 493, + "Pitfall Trap": 0, + "Warp Trap": 0, + "Gust Trap": 0, + "Spin Trap": 493, + "Slumber Trap": 564, + "Slow Trap": 704, + "Seal Trap": 1408, + "Poison Trap": 705, + "Selfdestruct Trap": 0, + "Explosion Trap": 704, + "PP-Zero Trap": 704, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out48", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2083, + "Sticky Trap": 1389, + "Grimy Trap": 695, + "Summon Trap": 0, + "Pitfall Trap": 347, + "Warp Trap": 694, + "Gust Trap": 348, + "Spin Trap": 625, + "Slumber Trap": 347, + "Slow Trap": 347, + "Seal Trap": 1042, + "Poison Trap": 0, + "Selfdestruct Trap": 208, + "Explosion Trap": 486, + "PP-Zero Trap": 695, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 694, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out49", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2326, + "Sticky Trap": 387, + "Grimy Trap": 775, + "Summon Trap": 0, + "Pitfall Trap": 388, + "Warp Trap": 775, + "Gust Trap": 388, + "Spin Trap": 697, + "Slumber Trap": 388, + "Slow Trap": 388, + "Seal Trap": 1162, + "Poison Trap": 0, + "Selfdestruct Trap": 233, + "Explosion Trap": 543, + "PP-Zero Trap": 775, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 775, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out50", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2256, + "Sticky Trap": 376, + "Grimy Trap": 451, + "Summon Trap": 0, + "Pitfall Trap": 376, + "Warp Trap": 752, + "Gust Trap": 375, + "Spin Trap": 677, + "Slumber Trap": 602, + "Slow Trap": 376, + "Seal Trap": 1503, + "Poison Trap": 0, + "Selfdestruct Trap": 226, + "Explosion Trap": 526, + "PP-Zero Trap": 752, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 752, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out51", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2532, + "Sticky Trap": 1265, + "Grimy Trap": 380, + "Summon Trap": 633, + "Pitfall Trap": 317, + "Warp Trap": 632, + "Gust Trap": 0, + "Spin Trap": 570, + "Slumber Trap": 506, + "Slow Trap": 0, + "Seal Trap": 1266, + "Poison Trap": 0, + "Selfdestruct Trap": 190, + "Explosion Trap": 443, + "PP-Zero Trap": 633, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 633, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out52", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2632, + "Sticky Trap": 1315, + "Grimy Trap": 395, + "Summon Trap": 526, + "Pitfall Trap": 329, + "Warp Trap": 658, + "Gust Trap": 0, + "Spin Trap": 329, + "Slumber Trap": 527, + "Slow Trap": 0, + "Seal Trap": 986, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 658, + "PP-Zero Trap": 1316, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 329, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out53", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3008, + "Sticky Trap": 751, + "Grimy Trap": 452, + "Summon Trap": 526, + "Pitfall Trap": 376, + "Warp Trap": 752, + "Gust Trap": 0, + "Spin Trap": 376, + "Slumber Trap": 601, + "Slow Trap": 0, + "Seal Trap": 1504, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 752, + "PP-Zero Trap": 902, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out54", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3150, + "Sticky Trap": 787, + "Grimy Trap": 0, + "Summon Trap": 551, + "Pitfall Trap": 394, + "Warp Trap": 787, + "Gust Trap": 0, + "Spin Trap": 394, + "Slumber Trap": 630, + "Slow Trap": 0, + "Seal Trap": 1575, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 787, + "PP-Zero Trap": 945, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out55", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3125, + "Sticky Trap": 781, + "Grimy Trap": 0, + "Summon Trap": 547, + "Pitfall Trap": 391, + "Warp Trap": 781, + "Gust Trap": 0, + "Spin Trap": 391, + "Slumber Trap": 625, + "Slow Trap": 0, + "Seal Trap": 1562, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 781, + "PP-Zero Trap": 1016, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out56", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3077, + "Sticky Trap": 769, + "Grimy Trap": 0, + "Summon Trap": 539, + "Pitfall Trap": 384, + "Warp Trap": 769, + "Gust Trap": 0, + "Spin Trap": 385, + "Slumber Trap": 615, + "Slow Trap": 0, + "Seal Trap": 1539, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 769, + "PP-Zero Trap": 1154, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out57", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3200, + "Sticky Trap": 800, + "Grimy Trap": 0, + "Summon Trap": 560, + "Pitfall Trap": 400, + "Warp Trap": 800, + "Gust Trap": 0, + "Spin Trap": 400, + "Slumber Trap": 640, + "Slow Trap": 0, + "Seal Trap": 1600, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 800, + "PP-Zero Trap": 800, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out58", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3333, + "Sticky Trap": 834, + "Grimy Trap": 0, + "Summon Trap": 583, + "Pitfall Trap": 0, + "Warp Trap": 833, + "Gust Trap": 0, + "Spin Trap": 417, + "Slumber Trap": 667, + "Slow Trap": 0, + "Seal Trap": 1666, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 834, + "PP-Zero Trap": 833, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out59", + "traps": { + "Trip Trap": 0, + "Mud Trap": 281, + "Sticky Trap": 281, + "Grimy Trap": 562, + "Summon Trap": 561, + "Pitfall Trap": 562, + "Warp Trap": 562, + "Gust Trap": 281, + "Spin Trap": 506, + "Slumber Trap": 674, + "Slow Trap": 561, + "Seal Trap": 281, + "Poison Trap": 562, + "Selfdestruct Trap": 169, + "Explosion Trap": 224, + "PP-Zero Trap": 562, + "Chestnut Trap": 562, + "Wonder Tile": 2247, + "Pokemon Trap": 562, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out60", + "traps": { + "Trip Trap": 0, + "Mud Trap": 266, + "Sticky Trap": 266, + "Grimy Trap": 532, + "Summon Trap": 532, + "Pitfall Trap": 532, + "Warp Trap": 532, + "Gust Trap": 266, + "Spin Trap": 478, + "Slumber Trap": 639, + "Slow Trap": 531, + "Seal Trap": 266, + "Poison Trap": 532, + "Selfdestruct Trap": 160, + "Explosion Trap": 213, + "PP-Zero Trap": 532, + "Chestnut Trap": 532, + "Wonder Tile": 2127, + "Pokemon Trap": 532, + "Spiked Tile": 532 + } + }, + { + "name": "trap_found_out61", + "traps": { + "Trip Trap": 0, + "Mud Trap": 281, + "Sticky Trap": 281, + "Grimy Trap": 562, + "Summon Trap": 561, + "Pitfall Trap": 0, + "Warp Trap": 562, + "Gust Trap": 281, + "Spin Trap": 506, + "Slumber Trap": 674, + "Slow Trap": 562, + "Seal Trap": 281, + "Poison Trap": 561, + "Selfdestruct Trap": 169, + "Explosion Trap": 225, + "PP-Zero Trap": 561, + "Chestnut Trap": 562, + "Wonder Tile": 2247, + "Pokemon Trap": 562, + "Spiked Tile": 562 + } + }, + { + "name": "trap_found_out62", + "traps": { + "Trip Trap": 0, + "Mud Trap": 298, + "Sticky Trap": 297, + "Grimy Trap": 595, + "Summon Trap": 596, + "Pitfall Trap": 0, + "Warp Trap": 595, + "Gust Trap": 298, + "Spin Trap": 535, + "Slumber Trap": 715, + "Slow Trap": 595, + "Seal Trap": 297, + "Poison Trap": 596, + "Selfdestruct Trap": 178, + "Explosion Trap": 238, + "PP-Zero Trap": 596, + "Chestnut Trap": 595, + "Wonder Tile": 2381, + "Pokemon Trap": 595, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out63", + "traps": { + "Trip Trap": 0, + "Mud Trap": 273, + "Sticky Trap": 273, + "Grimy Trap": 547, + "Summon Trap": 546, + "Pitfall Trap": 547, + "Warp Trap": 546, + "Gust Trap": 273, + "Spin Trap": 492, + "Slumber Trap": 656, + "Slow Trap": 546, + "Seal Trap": 274, + "Poison Trap": 546, + "Selfdestruct Trap": 164, + "Explosion Trap": 219, + "PP-Zero Trap": 546, + "Chestnut Trap": 547, + "Wonder Tile": 2459, + "Pokemon Trap": 546, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out64", + "traps": { + "Trip Trap": 0, + "Mud Trap": 909, + "Sticky Trap": 909, + "Grimy Trap": 909, + "Summon Trap": 0, + "Pitfall Trap": 0, + "Warp Trap": 909, + "Gust Trap": 0, + "Spin Trap": 0, + "Slumber Trap": 0, + "Slow Trap": 909, + "Seal Trap": 910, + "Poison Trap": 0, + "Selfdestruct Trap": 1818, + "Explosion Trap": 1818, + "PP-Zero Trap": 909, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out65", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2632, + "Sticky Trap": 877, + "Grimy Trap": 877, + "Summon Trap": 0, + "Pitfall Trap": 0, + "Warp Trap": 877, + "Gust Trap": 0, + "Spin Trap": 790, + "Slumber Trap": 438, + "Slow Trap": 439, + "Seal Trap": 877, + "Poison Trap": 0, + "Selfdestruct Trap": 263, + "Explosion Trap": 614, + "PP-Zero Trap": 877, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 439, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out66", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2326, + "Sticky Trap": 1550, + "Grimy Trap": 775, + "Summon Trap": 0, + "Pitfall Trap": 388, + "Warp Trap": 775, + "Gust Trap": 0, + "Spin Trap": 698, + "Slumber Trap": 387, + "Slow Trap": 388, + "Seal Trap": 775, + "Poison Trap": 0, + "Selfdestruct Trap": 233, + "Explosion Trap": 542, + "PP-Zero Trap": 775, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 388, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out67", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2239, + "Sticky Trap": 1492, + "Grimy Trap": 747, + "Summon Trap": 0, + "Pitfall Trap": 373, + "Warp Trap": 746, + "Gust Trap": 0, + "Spin Trap": 672, + "Slumber Trap": 373, + "Slow Trap": 373, + "Seal Trap": 1119, + "Poison Trap": 0, + "Selfdestruct Trap": 224, + "Explosion Trap": 523, + "PP-Zero Trap": 746, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 373, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out68", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2521, + "Sticky Trap": 420, + "Grimy Trap": 841, + "Summon Trap": 0, + "Pitfall Trap": 420, + "Warp Trap": 840, + "Gust Trap": 0, + "Spin Trap": 756, + "Slumber Trap": 420, + "Slow Trap": 421, + "Seal Trap": 1260, + "Poison Trap": 0, + "Selfdestruct Trap": 252, + "Explosion Trap": 588, + "PP-Zero Trap": 841, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 420, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out69", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2439, + "Sticky Trap": 407, + "Grimy Trap": 487, + "Summon Trap": 0, + "Pitfall Trap": 407, + "Warp Trap": 813, + "Gust Trap": 0, + "Spin Trap": 732, + "Slumber Trap": 650, + "Slow Trap": 406, + "Seal Trap": 1626, + "Poison Trap": 0, + "Selfdestruct Trap": 244, + "Explosion Trap": 569, + "PP-Zero Trap": 813, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 407, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out70", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2703, + "Sticky Trap": 1351, + "Grimy Trap": 405, + "Summon Trap": 676, + "Pitfall Trap": 0, + "Warp Trap": 676, + "Gust Trap": 0, + "Spin Trap": 608, + "Slumber Trap": 540, + "Slow Trap": 0, + "Seal Trap": 1352, + "Poison Trap": 0, + "Selfdestruct Trap": 203, + "Explosion Trap": 472, + "PP-Zero Trap": 676, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 338, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out71", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2158, + "Sticky Trap": 1439, + "Grimy Trap": 720, + "Summon Trap": 0, + "Pitfall Trap": 0, + "Warp Trap": 719, + "Gust Trap": 360, + "Spin Trap": 647, + "Slumber Trap": 360, + "Slow Trap": 360, + "Seal Trap": 1079, + "Poison Trap": 0, + "Selfdestruct Trap": 216, + "Explosion Trap": 503, + "PP-Zero Trap": 720, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 719, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out72", + "traps": { + "Trip Trap": 0, + "Mud Trap": 1835, + "Sticky Trap": 917, + "Grimy Trap": 918, + "Summon Trap": 0, + "Pitfall Trap": 0, + "Warp Trap": 917, + "Gust Trap": 0, + "Spin Trap": 826, + "Slumber Trap": 459, + "Slow Trap": 458, + "Seal Trap": 918, + "Poison Trap": 0, + "Selfdestruct Trap": 458, + "Explosion Trap": 1377, + "PP-Zero Trap": 917, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out73", + "traps": { + "Trip Trap": 0, + "Mud Trap": 1613, + "Sticky Trap": 1613, + "Grimy Trap": 806, + "Summon Trap": 0, + "Pitfall Trap": 0, + "Warp Trap": 807, + "Gust Trap": 0, + "Spin Trap": 726, + "Slumber Trap": 403, + "Slow Trap": 403, + "Seal Trap": 1210, + "Poison Trap": 0, + "Selfdestruct Trap": 403, + "Explosion Trap": 1210, + "PP-Zero Trap": 806, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out74", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2239, + "Sticky Trap": 1492, + "Grimy Trap": 747, + "Summon Trap": 0, + "Pitfall Trap": 0, + "Warp Trap": 746, + "Gust Trap": 0, + "Spin Trap": 672, + "Slumber Trap": 373, + "Slow Trap": 373, + "Seal Trap": 1119, + "Poison Trap": 0, + "Selfdestruct Trap": 373, + "Explosion Trap": 1120, + "PP-Zero Trap": 746, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out75", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 0, + "Grimy Trap": 1020, + "Summon Trap": 0, + "Pitfall Trap": 0, + "Warp Trap": 1021, + "Gust Trap": 510, + "Spin Trap": 918, + "Slumber Trap": 1225, + "Slow Trap": 1020, + "Seal Trap": 510, + "Poison Trap": 1021, + "Selfdestruct Trap": 306, + "Explosion Trap": 408, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 2041, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out76", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 0, + "Grimy Trap": 943, + "Summon Trap": 0, + "Pitfall Trap": 378, + "Warp Trap": 943, + "Gust Trap": 944, + "Spin Trap": 660, + "Slumber Trap": 1038, + "Slow Trap": 566, + "Seal Trap": 943, + "Poison Trap": 943, + "Selfdestruct Trap": 378, + "Explosion Trap": 377, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 1887, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out77", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 280, + "Grimy Trap": 935, + "Summon Trap": 0, + "Pitfall Trap": 374, + "Warp Trap": 934, + "Gust Trap": 935, + "Spin Trap": 654, + "Slumber Trap": 748, + "Slow Trap": 561, + "Seal Trap": 934, + "Poison Trap": 935, + "Selfdestruct Trap": 467, + "Explosion Trap": 374, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 1869, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out78", + "traps": { + "Trip Trap": 0, + "Mud Trap": 261, + "Sticky Trap": 348, + "Grimy Trap": 869, + "Summon Trap": 261, + "Pitfall Trap": 348, + "Warp Trap": 870, + "Gust Trap": 869, + "Spin Trap": 609, + "Slumber Trap": 695, + "Slow Trap": 522, + "Seal Trap": 870, + "Poison Trap": 869, + "Selfdestruct Trap": 522, + "Explosion Trap": 348, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 1739, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out79", + "traps": { + "Trip Trap": 0, + "Mud Trap": 656, + "Sticky Trap": 410, + "Grimy Trap": 819, + "Summon Trap": 246, + "Pitfall Trap": 328, + "Warp Trap": 820, + "Gust Trap": 819, + "Spin Trap": 574, + "Slumber Trap": 656, + "Slow Trap": 492, + "Seal Trap": 819, + "Poison Trap": 820, + "Selfdestruct Trap": 574, + "Explosion Trap": 328, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 1639, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out80", + "traps": { + "Trip Trap": 0, + "Mud Trap": 650, + "Sticky Trap": 407, + "Grimy Trap": 813, + "Summon Trap": 244, + "Pitfall Trap": 325, + "Warp Trap": 813, + "Gust Trap": 813, + "Spin Trap": 569, + "Slumber Trap": 651, + "Slow Trap": 487, + "Seal Trap": 813, + "Poison Trap": 813, + "Selfdestruct Trap": 651, + "Explosion Trap": 325, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 1626, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out81", + "traps": { + "Trip Trap": 0, + "Mud Trap": 645, + "Sticky Trap": 403, + "Grimy Trap": 807, + "Summon Trap": 242, + "Pitfall Trap": 322, + "Warp Trap": 807, + "Gust Trap": 806, + "Spin Trap": 565, + "Slumber Trap": 645, + "Slow Trap": 484, + "Seal Trap": 806, + "Poison Trap": 807, + "Selfdestruct Trap": 726, + "Explosion Trap": 322, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 1613, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out82", + "traps": { + "Trip Trap": 0, + "Mud Trap": 625, + "Sticky Trap": 391, + "Grimy Trap": 781, + "Summon Trap": 234, + "Pitfall Trap": 313, + "Warp Trap": 781, + "Gust Trap": 781, + "Spin Trap": 547, + "Slumber Trap": 625, + "Slow Trap": 469, + "Seal Trap": 781, + "Poison Trap": 781, + "Selfdestruct Trap": 625, + "Explosion Trap": 313, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 1562, + "Pokemon Trap": 0, + "Spiked Tile": 391 + } + }, + { + "name": "trap_found_out83", + "traps": { + "Trip Trap": 0, + "Mud Trap": 244, + "Sticky Trap": 406, + "Grimy Trap": 813, + "Summon Trap": 244, + "Pitfall Trap": 326, + "Warp Trap": 813, + "Gust Trap": 813, + "Spin Trap": 569, + "Slumber Trap": 650, + "Slow Trap": 488, + "Seal Trap": 813, + "Poison Trap": 813, + "Selfdestruct Trap": 650, + "Explosion Trap": 325, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 1626, + "Pokemon Trap": 0, + "Spiked Tile": 407 + } + }, + { + "name": "trap_found_out84", + "traps": { + "Trip Trap": 0, + "Mud Trap": 275, + "Sticky Trap": 459, + "Grimy Trap": 0, + "Summon Trap": 275, + "Pitfall Trap": 0, + "Warp Trap": 918, + "Gust Trap": 917, + "Spin Trap": 642, + "Slumber Trap": 734, + "Slow Trap": 551, + "Seal Trap": 917, + "Poison Trap": 918, + "Selfdestruct Trap": 733, + "Explosion Trap": 367, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 1835, + "Pokemon Trap": 0, + "Spiked Tile": 459 + } + }, + { + "name": "trap_found_out85", + "traps": { + "Trip Trap": 0, + "Mud Trap": 289, + "Sticky Trap": 289, + "Grimy Trap": 578, + "Summon Trap": 578, + "Pitfall Trap": 0, + "Warp Trap": 578, + "Gust Trap": 289, + "Spin Trap": 520, + "Slumber Trap": 694, + "Slow Trap": 578, + "Seal Trap": 289, + "Poison Trap": 578, + "Selfdestruct Trap": 174, + "Explosion Trap": 231, + "PP-Zero Trap": 578, + "Chestnut Trap": 578, + "Wonder Tile": 2601, + "Pokemon Trap": 578, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out86", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 0, + "Grimy Trap": 0, + "Summon Trap": 667, + "Pitfall Trap": 0, + "Warp Trap": 666, + "Gust Trap": 0, + "Spin Trap": 667, + "Slumber Trap": 667, + "Slow Trap": 666, + "Seal Trap": 0, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 0, + "PP-Zero Trap": 0, + "Chestnut Trap": 0, + "Wonder Tile": 6667, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out87", + "traps": { + "Trip Trap": 0, + "Mud Trap": 266, + "Sticky Trap": 266, + "Grimy Trap": 532, + "Summon Trap": 532, + "Pitfall Trap": 532, + "Warp Trap": 532, + "Gust Trap": 266, + "Spin Trap": 478, + "Slumber Trap": 639, + "Slow Trap": 531, + "Seal Trap": 266, + "Poison Trap": 532, + "Selfdestruct Trap": 160, + "Explosion Trap": 213, + "PP-Zero Trap": 532, + "Chestnut Trap": 532, + "Wonder Tile": 2659, + "Pokemon Trap": 532, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out88", + "traps": { + "Trip Trap": 0, + "Mud Trap": 253, + "Sticky Trap": 252, + "Grimy Trap": 505, + "Summon Trap": 505, + "Pitfall Trap": 505, + "Warp Trap": 505, + "Gust Trap": 253, + "Spin Trap": 454, + "Slumber Trap": 606, + "Slow Trap": 505, + "Seal Trap": 253, + "Poison Trap": 505, + "Selfdestruct Trap": 152, + "Explosion Trap": 202, + "PP-Zero Trap": 505, + "Chestnut Trap": 505, + "Wonder Tile": 2525, + "Pokemon Trap": 505, + "Spiked Tile": 505 + } + }, + { + "name": "trap_found_out89", + "traps": { + "Trip Trap": 0, + "Mud Trap": 188, + "Sticky Trap": 312, + "Grimy Trap": 625, + "Summon Trap": 188, + "Pitfall Trap": 250, + "Warp Trap": 625, + "Gust Trap": 625, + "Spin Trap": 437, + "Slumber Trap": 500, + "Slow Trap": 375, + "Seal Trap": 625, + "Poison Trap": 0, + "Selfdestruct Trap": 500, + "Explosion Trap": 250, + "PP-Zero Trap": 625, + "Chestnut Trap": 0, + "Wonder Tile": 3125, + "Pokemon Trap": 313, + "Spiked Tile": 437 + } + }, + { + "name": "trap_found_out90", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 327, + "Grimy Trap": 653, + "Summon Trap": 458, + "Pitfall Trap": 261, + "Warp Trap": 654, + "Gust Trap": 0, + "Spin Trap": 457, + "Slumber Trap": 523, + "Slow Trap": 392, + "Seal Trap": 654, + "Poison Trap": 0, + "Selfdestruct Trap": 654, + "Explosion Trap": 261, + "PP-Zero Trap": 654, + "Chestnut Trap": 0, + "Wonder Tile": 3268, + "Pokemon Trap": 326, + "Spiked Tile": 458 + } + }, + { + "name": "trap_found_out91", + "traps": { + "Trip Trap": 0, + "Mud Trap": 1176, + "Sticky Trap": 1177, + "Grimy Trap": 1176, + "Summon Trap": 0, + "Pitfall Trap": 0, + "Warp Trap": 0, + "Gust Trap": 0, + "Spin Trap": 1177, + "Slumber Trap": 588, + "Slow Trap": 1177, + "Seal Trap": 1176, + "Poison Trap": 1177, + "Selfdestruct Trap": 0, + "Explosion Trap": 0, + "PP-Zero Trap": 1176, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out92", + "traps": { + "Trip Trap": 0, + "Mud Trap": 281, + "Sticky Trap": 281, + "Grimy Trap": 562, + "Summon Trap": 561, + "Pitfall Trap": 0, + "Warp Trap": 562, + "Gust Trap": 281, + "Spin Trap": 506, + "Slumber Trap": 674, + "Slow Trap": 562, + "Seal Trap": 281, + "Poison Trap": 561, + "Selfdestruct Trap": 169, + "Explosion Trap": 225, + "PP-Zero Trap": 561, + "Chestnut Trap": 562, + "Wonder Tile": 2809, + "Pokemon Trap": 562, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out93", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2143, + "Sticky Trap": 1428, + "Grimy Trap": 2143, + "Summon Trap": 0, + "Pitfall Trap": 0, + "Warp Trap": 1429, + "Gust Trap": 0, + "Spin Trap": 0, + "Slumber Trap": 0, + "Slow Trap": 0, + "Seal Trap": 1428, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 0, + "PP-Zero Trap": 1429, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out94", + "traps": { + "Trip Trap": 0, + "Mud Trap": 296, + "Sticky Trap": 296, + "Grimy Trap": 591, + "Summon Trap": 592, + "Pitfall Trap": 0, + "Warp Trap": 592, + "Gust Trap": 296, + "Spin Trap": 532, + "Slumber Trap": 296, + "Slow Trap": 473, + "Seal Trap": 296, + "Poison Trap": 296, + "Selfdestruct Trap": 178, + "Explosion Trap": 236, + "PP-Zero Trap": 592, + "Chestnut Trap": 592, + "Wonder Tile": 3254, + "Pokemon Trap": 592, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out95", + "traps": { + "Trip Trap": 0, + "Mud Trap": 284, + "Sticky Trap": 1136, + "Grimy Trap": 569, + "Summon Trap": 568, + "Pitfall Trap": 0, + "Warp Trap": 568, + "Gust Trap": 284, + "Spin Trap": 511, + "Slumber Trap": 285, + "Slow Trap": 568, + "Seal Trap": 284, + "Poison Trap": 568, + "Selfdestruct Trap": 170, + "Explosion Trap": 228, + "PP-Zero Trap": 568, + "Chestnut Trap": 568, + "Wonder Tile": 2273, + "Pokemon Trap": 568, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out96", + "traps": { + "Trip Trap": 0, + "Mud Trap": 292, + "Sticky Trap": 1170, + "Grimy Trap": 585, + "Summon Trap": 585, + "Pitfall Trap": 0, + "Warp Trap": 292, + "Gust Trap": 292, + "Spin Trap": 527, + "Slumber Trap": 292, + "Slow Trap": 585, + "Seal Trap": 292, + "Poison Trap": 585, + "Selfdestruct Trap": 176, + "Explosion Trap": 233, + "PP-Zero Trap": 585, + "Chestnut Trap": 585, + "Wonder Tile": 2339, + "Pokemon Trap": 585, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out97", + "traps": { + "Trip Trap": 0, + "Mud Trap": 552, + "Sticky Trap": 1105, + "Grimy Trap": 553, + "Summon Trap": 552, + "Pitfall Trap": 0, + "Warp Trap": 553, + "Gust Trap": 276, + "Spin Trap": 497, + "Slumber Trap": 277, + "Slow Trap": 552, + "Seal Trap": 276, + "Poison Trap": 553, + "Selfdestruct Trap": 166, + "Explosion Trap": 221, + "PP-Zero Trap": 552, + "Chestnut Trap": 553, + "Wonder Tile": 2210, + "Pokemon Trap": 552, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out98", + "traps": { + "Trip Trap": 0, + "Mud Trap": 585, + "Sticky Trap": 1169, + "Grimy Trap": 585, + "Summon Trap": 585, + "Pitfall Trap": 0, + "Warp Trap": 585, + "Gust Trap": 292, + "Spin Trap": 526, + "Slumber Trap": 293, + "Slow Trap": 585, + "Seal Trap": 292, + "Poison Trap": 585, + "Selfdestruct Trap": 175, + "Explosion Trap": 234, + "PP-Zero Trap": 585, + "Chestnut Trap": 585, + "Wonder Tile": 1754, + "Pokemon Trap": 585, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out99", + "traps": { + "Trip Trap": 0, + "Mud Trap": 1657, + "Sticky Trap": 1105, + "Grimy Trap": 553, + "Summon Trap": 552, + "Pitfall Trap": 0, + "Warp Trap": 277, + "Gust Trap": 276, + "Spin Trap": 497, + "Slumber Trap": 276, + "Slow Trap": 553, + "Seal Trap": 829, + "Poison Trap": 552, + "Selfdestruct Trap": 166, + "Explosion Trap": 221, + "PP-Zero Trap": 552, + "Chestnut Trap": 553, + "Wonder Tile": 829, + "Pokemon Trap": 552, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out100", + "traps": { + "Trip Trap": 0, + "Mud Trap": 1807, + "Sticky Trap": 301, + "Grimy Trap": 603, + "Summon Trap": 602, + "Pitfall Trap": 0, + "Warp Trap": 301, + "Gust Trap": 302, + "Spin Trap": 542, + "Slumber Trap": 301, + "Slow Trap": 602, + "Seal Trap": 904, + "Poison Trap": 602, + "Selfdestruct Trap": 181, + "Explosion Trap": 241, + "PP-Zero Trap": 603, + "Chestnut Trap": 602, + "Wonder Tile": 904, + "Pokemon Trap": 602, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out101", + "traps": { + "Trip Trap": 0, + "Mud Trap": 1875, + "Sticky Trap": 313, + "Grimy Trap": 375, + "Summon Trap": 625, + "Pitfall Trap": 0, + "Warp Trap": 312, + "Gust Trap": 313, + "Spin Trap": 562, + "Slumber Trap": 500, + "Slow Trap": 625, + "Seal Trap": 1250, + "Poison Trap": 625, + "Selfdestruct Trap": 188, + "Explosion Trap": 250, + "PP-Zero Trap": 625, + "Chestnut Trap": 0, + "Wonder Tile": 937, + "Pokemon Trap": 625, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out102", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2286, + "Sticky Trap": 1143, + "Grimy Trap": 342, + "Summon Trap": 572, + "Pitfall Trap": 0, + "Warp Trap": 286, + "Gust Trap": 0, + "Spin Trap": 514, + "Slumber Trap": 457, + "Slow Trap": 571, + "Seal Trap": 1143, + "Poison Trap": 286, + "Selfdestruct Trap": 171, + "Explosion Trap": 229, + "PP-Zero Trap": 571, + "Chestnut Trap": 0, + "Wonder Tile": 858, + "Pokemon Trap": 571, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out103", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2312, + "Sticky Trap": 1156, + "Grimy Trap": 347, + "Summon Trap": 578, + "Pitfall Trap": 0, + "Warp Trap": 289, + "Gust Trap": 0, + "Spin Trap": 520, + "Slumber Trap": 463, + "Slow Trap": 462, + "Seal Trap": 1156, + "Poison Trap": 289, + "Selfdestruct Trap": 174, + "Explosion Trap": 231, + "PP-Zero Trap": 578, + "Chestnut Trap": 0, + "Wonder Tile": 867, + "Pokemon Trap": 578, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out104", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2381, + "Sticky Trap": 1190, + "Grimy Trap": 358, + "Summon Trap": 476, + "Pitfall Trap": 0, + "Warp Trap": 297, + "Gust Trap": 0, + "Spin Trap": 298, + "Slumber Trap": 476, + "Slow Trap": 357, + "Seal Trap": 893, + "Poison Trap": 298, + "Selfdestruct Trap": 0, + "Explosion Trap": 595, + "PP-Zero Trap": 1191, + "Chestnut Trap": 0, + "Wonder Tile": 892, + "Pokemon Trap": 298, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out105", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2985, + "Sticky Trap": 746, + "Grimy Trap": 448, + "Summon Trap": 522, + "Pitfall Trap": 0, + "Warp Trap": 374, + "Gust Trap": 0, + "Spin Trap": 373, + "Slumber Trap": 597, + "Slow Trap": 448, + "Seal Trap": 1492, + "Poison Trap": 373, + "Selfdestruct Trap": 0, + "Explosion Trap": 746, + "PP-Zero Trap": 896, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out106", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3125, + "Sticky Trap": 781, + "Grimy Trap": 0, + "Summon Trap": 547, + "Pitfall Trap": 0, + "Warp Trap": 391, + "Gust Trap": 0, + "Spin Trap": 390, + "Slumber Trap": 625, + "Slow Trap": 469, + "Seal Trap": 1563, + "Poison Trap": 390, + "Selfdestruct Trap": 0, + "Explosion Trap": 782, + "PP-Zero Trap": 937, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out107", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3101, + "Sticky Trap": 775, + "Grimy Trap": 0, + "Summon Trap": 543, + "Pitfall Trap": 0, + "Warp Trap": 387, + "Gust Trap": 0, + "Spin Trap": 388, + "Slumber Trap": 620, + "Slow Trap": 465, + "Seal Trap": 1550, + "Poison Trap": 388, + "Selfdestruct Trap": 0, + "Explosion Trap": 775, + "PP-Zero Trap": 1008, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out108", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3053, + "Sticky Trap": 764, + "Grimy Trap": 0, + "Summon Trap": 534, + "Pitfall Trap": 0, + "Warp Trap": 382, + "Gust Trap": 0, + "Spin Trap": 382, + "Slumber Trap": 610, + "Slow Trap": 458, + "Seal Trap": 1527, + "Poison Trap": 382, + "Selfdestruct Trap": 0, + "Explosion Trap": 763, + "PP-Zero Trap": 1145, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out109", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3175, + "Sticky Trap": 793, + "Grimy Trap": 0, + "Summon Trap": 556, + "Pitfall Trap": 0, + "Warp Trap": 397, + "Gust Trap": 0, + "Spin Trap": 396, + "Slumber Trap": 635, + "Slow Trap": 477, + "Seal Trap": 1587, + "Poison Trap": 397, + "Selfdestruct Trap": 0, + "Explosion Trap": 793, + "PP-Zero Trap": 794, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out110", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3077, + "Sticky Trap": 769, + "Grimy Trap": 0, + "Summon Trap": 539, + "Pitfall Trap": 0, + "Warp Trap": 384, + "Gust Trap": 0, + "Spin Trap": 385, + "Slumber Trap": 615, + "Slow Trap": 769, + "Seal Trap": 1539, + "Poison Trap": 385, + "Selfdestruct Trap": 0, + "Explosion Trap": 769, + "PP-Zero Trap": 769, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out111", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3200, + "Sticky Trap": 800, + "Grimy Trap": 0, + "Summon Trap": 560, + "Pitfall Trap": 0, + "Warp Trap": 0, + "Gust Trap": 0, + "Spin Trap": 400, + "Slumber Trap": 640, + "Slow Trap": 800, + "Seal Trap": 1600, + "Poison Trap": 400, + "Selfdestruct Trap": 0, + "Explosion Trap": 800, + "PP-Zero Trap": 800, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out112", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2128, + "Sticky Trap": 1418, + "Grimy Trap": 709, + "Summon Trap": 497, + "Pitfall Trap": 0, + "Warp Trap": 709, + "Gust Trap": 0, + "Spin Trap": 638, + "Slumber Trap": 355, + "Slow Trap": 355, + "Seal Trap": 1063, + "Poison Trap": 0, + "Selfdestruct Trap": 355, + "Explosion Trap": 1064, + "PP-Zero Trap": 709, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out113", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2381, + "Sticky Trap": 397, + "Grimy Trap": 793, + "Summon Trap": 556, + "Pitfall Trap": 0, + "Warp Trap": 794, + "Gust Trap": 0, + "Spin Trap": 714, + "Slumber Trap": 397, + "Slow Trap": 397, + "Seal Trap": 1190, + "Poison Trap": 0, + "Selfdestruct Trap": 397, + "Explosion Trap": 1190, + "PP-Zero Trap": 794, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out114", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2308, + "Sticky Trap": 384, + "Grimy Trap": 462, + "Summon Trap": 538, + "Pitfall Trap": 0, + "Warp Trap": 770, + "Gust Trap": 0, + "Spin Trap": 692, + "Slumber Trap": 615, + "Slow Trap": 385, + "Seal Trap": 1538, + "Poison Trap": 0, + "Selfdestruct Trap": 385, + "Explosion Trap": 1154, + "PP-Zero Trap": 769, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out115", + "traps": { + "Trip Trap": 0, + "Mud Trap": 259, + "Sticky Trap": 259, + "Grimy Trap": 518, + "Summon Trap": 518, + "Pitfall Trap": 519, + "Warp Trap": 518, + "Gust Trap": 259, + "Spin Trap": 466, + "Slumber Trap": 622, + "Slow Trap": 518, + "Seal Trap": 259, + "Poison Trap": 518, + "Selfdestruct Trap": 156, + "Explosion Trap": 207, + "PP-Zero Trap": 518, + "Chestnut Trap": 518, + "Wonder Tile": 2850, + "Pokemon Trap": 518, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out116", + "traps": { + "Trip Trap": 0, + "Mud Trap": 246, + "Sticky Trap": 247, + "Grimy Trap": 492, + "Summon Trap": 493, + "Pitfall Trap": 492, + "Warp Trap": 493, + "Gust Trap": 246, + "Spin Trap": 444, + "Slumber Trap": 591, + "Slow Trap": 492, + "Seal Trap": 247, + "Poison Trap": 492, + "Selfdestruct Trap": 148, + "Explosion Trap": 197, + "PP-Zero Trap": 493, + "Chestnut Trap": 492, + "Wonder Tile": 2710, + "Pokemon Trap": 492, + "Spiked Tile": 493 + } + }, + { + "name": "trap_found_out117", + "traps": { + "Trip Trap": 0, + "Mud Trap": 182, + "Sticky Trap": 303, + "Grimy Trap": 606, + "Summon Trap": 182, + "Pitfall Trap": 242, + "Warp Trap": 606, + "Gust Trap": 606, + "Spin Trap": 425, + "Slumber Trap": 484, + "Slow Trap": 364, + "Seal Trap": 606, + "Poison Trap": 0, + "Selfdestruct Trap": 485, + "Explosion Trap": 242, + "PP-Zero Trap": 606, + "Chestnut Trap": 0, + "Wonder Tile": 3334, + "Pokemon Trap": 303, + "Spiked Tile": 424 + } + }, + { + "name": "trap_found_out118", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 316, + "Grimy Trap": 633, + "Summon Trap": 443, + "Pitfall Trap": 254, + "Warp Trap": 632, + "Gust Trap": 0, + "Spin Trap": 444, + "Slumber Trap": 506, + "Slow Trap": 380, + "Seal Trap": 633, + "Poison Trap": 0, + "Selfdestruct Trap": 632, + "Explosion Trap": 254, + "PP-Zero Trap": 632, + "Chestnut Trap": 0, + "Wonder Tile": 3482, + "Pokemon Trap": 316, + "Spiked Tile": 443 + } + }, + { + "name": "trap_found_out119", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 314, + "Grimy Trap": 629, + "Summon Trap": 441, + "Pitfall Trap": 314, + "Warp Trap": 629, + "Gust Trap": 0, + "Spin Trap": 440, + "Slumber Trap": 503, + "Slow Trap": 378, + "Seal Trap": 629, + "Poison Trap": 0, + "Selfdestruct Trap": 629, + "Explosion Trap": 251, + "PP-Zero Trap": 629, + "Chestnut Trap": 0, + "Wonder Tile": 3459, + "Pokemon Trap": 315, + "Spiked Tile": 440 + } + }, + { + "name": "trap_found_out120", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 305, + "Grimy Trap": 610, + "Summon Trap": 426, + "Pitfall Trap": 305, + "Warp Trap": 610, + "Gust Trap": 0, + "Spin Trap": 427, + "Slumber Trap": 488, + "Slow Trap": 366, + "Seal Trap": 609, + "Poison Trap": 0, + "Selfdestruct Trap": 915, + "Explosion Trap": 244, + "PP-Zero Trap": 610, + "Chestnut Trap": 0, + "Wonder Tile": 3353, + "Pokemon Trap": 305, + "Spiked Tile": 427 + } + }, + { + "name": "trap_found_out121", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 318, + "Grimy Trap": 637, + "Summon Trap": 446, + "Pitfall Trap": 319, + "Warp Trap": 637, + "Gust Trap": 0, + "Spin Trap": 446, + "Slumber Trap": 509, + "Slow Trap": 382, + "Seal Trap": 637, + "Poison Trap": 0, + "Selfdestruct Trap": 510, + "Explosion Trap": 255, + "PP-Zero Trap": 636, + "Chestnut Trap": 0, + "Wonder Tile": 3504, + "Pokemon Trap": 318, + "Spiked Tile": 446 + } + }, + { + "name": "trap_found_out122", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 284, + "Grimy Trap": 568, + "Summon Trap": 455, + "Pitfall Trap": 284, + "Warp Trap": 568, + "Gust Trap": 0, + "Spin Trap": 398, + "Slumber Trap": 454, + "Slow Trap": 341, + "Seal Trap": 1137, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 568, + "PP-Zero Trap": 1136, + "Chestnut Trap": 0, + "Wonder Tile": 3125, + "Pokemon Trap": 284, + "Spiked Tile": 398 + } + }, + { + "name": "trap_found_out123", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 316, + "Grimy Trap": 633, + "Summon Trap": 443, + "Pitfall Trap": 317, + "Warp Trap": 506, + "Gust Trap": 0, + "Spin Trap": 443, + "Slumber Trap": 507, + "Slow Trap": 379, + "Seal Trap": 633, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 633, + "PP-Zero Trap": 760, + "Chestnut Trap": 506, + "Wonder Tile": 3481, + "Pokemon Trap": 0, + "Spiked Tile": 443 + } + }, + { + "name": "trap_found_out124", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 403, + "Grimy Trap": 0, + "Summon Trap": 469, + "Pitfall Trap": 336, + "Warp Trap": 537, + "Gust Trap": 0, + "Spin Trap": 470, + "Slumber Trap": 537, + "Slow Trap": 402, + "Seal Trap": 672, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 671, + "PP-Zero Trap": 805, + "Chestnut Trap": 537, + "Wonder Tile": 3691, + "Pokemon Trap": 0, + "Spiked Tile": 470 + } + }, + { + "name": "trap_found_out125", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 400, + "Grimy Trap": 0, + "Summon Trap": 467, + "Pitfall Trap": 333, + "Warp Trap": 533, + "Gust Trap": 0, + "Spin Trap": 467, + "Slumber Trap": 533, + "Slow Trap": 400, + "Seal Trap": 667, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 667, + "PP-Zero Trap": 866, + "Chestnut Trap": 534, + "Wonder Tile": 3666, + "Pokemon Trap": 0, + "Spiked Tile": 467 + } + }, + { + "name": "trap_found_out126", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 395, + "Grimy Trap": 0, + "Summon Trap": 460, + "Pitfall Trap": 329, + "Warp Trap": 527, + "Gust Trap": 0, + "Spin Trap": 460, + "Slumber Trap": 526, + "Slow Trap": 395, + "Seal Trap": 658, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 658, + "PP-Zero Trap": 987, + "Chestnut Trap": 526, + "Wonder Tile": 3618, + "Pokemon Trap": 0, + "Spiked Tile": 461 + } + }, + { + "name": "trap_found_out127", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 408, + "Grimy Trap": 0, + "Summon Trap": 476, + "Pitfall Trap": 340, + "Warp Trap": 545, + "Gust Trap": 0, + "Spin Trap": 476, + "Slumber Trap": 544, + "Slow Trap": 408, + "Seal Trap": 681, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 680, + "PP-Zero Trap": 816, + "Chestnut Trap": 408, + "Wonder Tile": 3742, + "Pokemon Trap": 0, + "Spiked Tile": 476 + } + }, + { + "name": "trap_found_out128", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 414, + "Grimy Trap": 0, + "Summon Trap": 483, + "Pitfall Trap": 344, + "Warp Trap": 552, + "Gust Trap": 0, + "Spin Trap": 483, + "Slumber Trap": 552, + "Slow Trap": 413, + "Seal Trap": 690, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 690, + "PP-Zero Trap": 689, + "Chestnut Trap": 414, + "Wonder Tile": 3793, + "Pokemon Trap": 0, + "Spiked Tile": 483 + } + }, + { + "name": "trap_found_out129", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 467, + "Grimy Trap": 0, + "Summon Trap": 466, + "Pitfall Trap": 334, + "Warp Trap": 533, + "Gust Trap": 0, + "Spin Trap": 467, + "Slumber Trap": 533, + "Slow Trap": 667, + "Seal Trap": 666, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 667, + "PP-Zero Trap": 667, + "Chestnut Trap": 400, + "Wonder Tile": 3666, + "Pokemon Trap": 0, + "Spiked Tile": 467 + } + }, + { + "name": "trap_found_out130", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 464, + "Grimy Trap": 0, + "Summon Trap": 463, + "Pitfall Trap": 331, + "Warp Trap": 530, + "Gust Trap": 0, + "Spin Trap": 464, + "Slumber Trap": 529, + "Slow Trap": 663, + "Seal Trap": 662, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 662, + "PP-Zero Trap": 662, + "Chestnut Trap": 398, + "Wonder Tile": 3642, + "Pokemon Trap": 0, + "Spiked Tile": 530 + } + }, + { + "name": "trap_found_out131", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 470, + "Grimy Trap": 0, + "Summon Trap": 470, + "Pitfall Trap": 335, + "Warp Trap": 403, + "Gust Trap": 0, + "Spin Trap": 470, + "Slumber Trap": 537, + "Slow Trap": 671, + "Seal Trap": 671, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 671, + "PP-Zero Trap": 671, + "Chestnut Trap": 403, + "Wonder Tile": 3691, + "Pokemon Trap": 0, + "Spiked Tile": 537 + } + }, + { + "name": "trap_found_out132", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 596, + "Grimy Trap": 0, + "Summon Trap": 464, + "Pitfall Trap": 331, + "Warp Trap": 397, + "Gust Trap": 0, + "Spin Trap": 464, + "Slumber Trap": 529, + "Slow Trap": 663, + "Seal Trap": 662, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 662, + "PP-Zero Trap": 662, + "Chestnut Trap": 398, + "Wonder Tile": 3642, + "Pokemon Trap": 0, + "Spiked Tile": 530 + } + }, + { + "name": "trap_found_out133", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 616, + "Grimy Trap": 0, + "Summon Trap": 480, + "Pitfall Trap": 0, + "Warp Trap": 411, + "Gust Trap": 0, + "Spin Trap": 479, + "Slumber Trap": 548, + "Slow Trap": 685, + "Seal Trap": 685, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 685, + "PP-Zero Trap": 685, + "Chestnut Trap": 411, + "Wonder Tile": 3767, + "Pokemon Trap": 0, + "Spiked Tile": 548 + } + }, + { + "name": "trap_found_out134", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 690, + "Grimy Trap": 0, + "Summon Trap": 482, + "Pitfall Trap": 0, + "Warp Trap": 276, + "Gust Trap": 0, + "Spin Trap": 483, + "Slumber Trap": 552, + "Slow Trap": 689, + "Seal Trap": 690, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 690, + "PP-Zero Trap": 689, + "Chestnut Trap": 414, + "Wonder Tile": 3793, + "Pokemon Trap": 0, + "Spiked Tile": 552 + } + }, + { + "name": "trap_found_out135", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 719, + "Grimy Trap": 0, + "Summon Trap": 504, + "Pitfall Trap": 0, + "Warp Trap": 288, + "Gust Trap": 0, + "Spin Trap": 503, + "Slumber Trap": 576, + "Slow Trap": 719, + "Seal Trap": 720, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 719, + "PP-Zero Trap": 720, + "Chestnut Trap": 0, + "Wonder Tile": 3956, + "Pokemon Trap": 0, + "Spiked Tile": 576 + } + }, + { + "name": "trap_found_out136", + "traps": { + "Trip Trap": 0, + "Mud Trap": 0, + "Sticky Trap": 373, + "Grimy Trap": 0, + "Summon Trap": 523, + "Pitfall Trap": 0, + "Warp Trap": 298, + "Gust Trap": 0, + "Spin Trap": 522, + "Slumber Trap": 597, + "Slow Trap": 747, + "Seal Trap": 746, + "Poison Trap": 0, + "Selfdestruct Trap": 0, + "Explosion Trap": 746, + "PP-Zero Trap": 747, + "Chestnut Trap": 0, + "Wonder Tile": 4104, + "Pokemon Trap": 0, + "Spiked Tile": 597 + } + }, + { + "name": "trap_found_out137", + "traps": { + "Trip Trap": 0, + "Mud Trap": 305, + "Sticky Trap": 305, + "Grimy Trap": 610, + "Summon Trap": 609, + "Pitfall Trap": 0, + "Warp Trap": 610, + "Gust Trap": 305, + "Spin Trap": 549, + "Slumber Trap": 305, + "Slow Trap": 487, + "Seal Trap": 305, + "Poison Trap": 0, + "Selfdestruct Trap": 183, + "Explosion Trap": 244, + "PP-Zero Trap": 610, + "Chestnut Trap": 610, + "Wonder Tile": 3353, + "Pokemon Trap": 610, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out138", + "traps": { + "Trip Trap": 0, + "Mud Trap": 568, + "Sticky Trap": 1137, + "Grimy Trap": 568, + "Summon Trap": 568, + "Pitfall Trap": 0, + "Warp Trap": 284, + "Gust Trap": 284, + "Spin Trap": 511, + "Slumber Trap": 285, + "Slow Trap": 568, + "Seal Trap": 284, + "Poison Trap": 568, + "Selfdestruct Trap": 170, + "Explosion Trap": 228, + "PP-Zero Trap": 568, + "Chestnut Trap": 568, + "Wonder Tile": 2273, + "Pokemon Trap": 568, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out139", + "traps": { + "Trip Trap": 0, + "Mud Trap": 602, + "Sticky Trap": 1205, + "Grimy Trap": 603, + "Summon Trap": 602, + "Pitfall Trap": 0, + "Warp Trap": 301, + "Gust Trap": 301, + "Spin Trap": 543, + "Slumber Trap": 301, + "Slow Trap": 602, + "Seal Trap": 301, + "Poison Trap": 603, + "Selfdestruct Trap": 181, + "Explosion Trap": 241, + "PP-Zero Trap": 602, + "Chestnut Trap": 602, + "Wonder Tile": 1808, + "Pokemon Trap": 602, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out140", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2222, + "Sticky Trap": 1111, + "Grimy Trap": 334, + "Summon Trap": 555, + "Pitfall Trap": 0, + "Warp Trap": 278, + "Gust Trap": 0, + "Spin Trap": 500, + "Slumber Trap": 444, + "Slow Trap": 556, + "Seal Trap": 1111, + "Poison Trap": 556, + "Selfdestruct Trap": 166, + "Explosion Trap": 223, + "PP-Zero Trap": 555, + "Chestnut Trap": 0, + "Wonder Tile": 833, + "Pokemon Trap": 556, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out141", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2247, + "Sticky Trap": 1124, + "Grimy Trap": 337, + "Summon Trap": 562, + "Pitfall Trap": 0, + "Warp Trap": 281, + "Gust Trap": 0, + "Spin Trap": 505, + "Slumber Trap": 450, + "Slow Trap": 449, + "Seal Trap": 1124, + "Poison Trap": 561, + "Selfdestruct Trap": 169, + "Explosion Trap": 225, + "PP-Zero Trap": 562, + "Chestnut Trap": 0, + "Wonder Tile": 842, + "Pokemon Trap": 562, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out142", + "traps": { + "Trip Trap": 0, + "Mud Trap": 2454, + "Sticky Trap": 1227, + "Grimy Trap": 368, + "Summon Trap": 491, + "Pitfall Trap": 0, + "Warp Trap": 0, + "Gust Trap": 0, + "Spin Trap": 307, + "Slumber Trap": 490, + "Slow Trap": 369, + "Seal Trap": 920, + "Poison Trap": 307, + "Selfdestruct Trap": 0, + "Explosion Trap": 613, + "PP-Zero Trap": 1227, + "Chestnut Trap": 0, + "Wonder Tile": 920, + "Pokemon Trap": 307, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out143", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3101, + "Sticky Trap": 775, + "Grimy Trap": 465, + "Summon Trap": 543, + "Pitfall Trap": 0, + "Warp Trap": 0, + "Gust Trap": 0, + "Spin Trap": 387, + "Slumber Trap": 620, + "Slow Trap": 466, + "Seal Trap": 1550, + "Poison Trap": 388, + "Selfdestruct Trap": 0, + "Explosion Trap": 775, + "PP-Zero Trap": 930, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out144", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3252, + "Sticky Trap": 813, + "Grimy Trap": 0, + "Summon Trap": 569, + "Pitfall Trap": 0, + "Warp Trap": 0, + "Gust Trap": 0, + "Spin Trap": 407, + "Slumber Trap": 650, + "Slow Trap": 488, + "Seal Trap": 1626, + "Poison Trap": 406, + "Selfdestruct Trap": 0, + "Explosion Trap": 813, + "PP-Zero Trap": 976, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out145", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3226, + "Sticky Trap": 806, + "Grimy Trap": 0, + "Summon Trap": 565, + "Pitfall Trap": 0, + "Warp Trap": 0, + "Gust Trap": 0, + "Spin Trap": 403, + "Slumber Trap": 645, + "Slow Trap": 484, + "Seal Trap": 1613, + "Poison Trap": 403, + "Selfdestruct Trap": 0, + "Explosion Trap": 807, + "PP-Zero Trap": 1048, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out146", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3175, + "Sticky Trap": 793, + "Grimy Trap": 0, + "Summon Trap": 556, + "Pitfall Trap": 0, + "Warp Trap": 0, + "Gust Trap": 0, + "Spin Trap": 397, + "Slumber Trap": 635, + "Slow Trap": 476, + "Seal Trap": 1587, + "Poison Trap": 397, + "Selfdestruct Trap": 0, + "Explosion Trap": 794, + "PP-Zero Trap": 1190, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + }, + { + "name": "trap_found_out147", + "traps": { + "Trip Trap": 0, + "Mud Trap": 3306, + "Sticky Trap": 826, + "Grimy Trap": 0, + "Summon Trap": 579, + "Pitfall Trap": 0, + "Warp Trap": 0, + "Gust Trap": 0, + "Spin Trap": 413, + "Slumber Trap": 661, + "Slow Trap": 496, + "Seal Trap": 1653, + "Poison Trap": 413, + "Selfdestruct Trap": 0, + "Explosion Trap": 827, + "PP-Zero Trap": 826, + "Chestnut Trap": 0, + "Wonder Tile": 0, + "Pokemon Trap": 0, + "Spiked Tile": 0 + } + } +] \ No newline at end of file diff --git a/data/dungeon/traps_found.inc b/data/dungeon/traps_found.inc index 5e1c7c563..f0f0b9169 100644 --- a/data/dungeon/traps_found.inc +++ b/data/dungeon/traps_found.inc @@ -1,337 +1,154 @@ @ Start of Traps Found (0x84c37b8) -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x06, 0x05, 0x0d, 0x88, 0x13, 0xb4, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x1e -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x09, 0x9a, 0x0c, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x12, 0x7a, 0x14 -.byte 0x50, 0x17, 0xe3, 0x18, 0x76, 0x1a, 0x9d, 0x1d, 0x00, 0x00, 0x8f, 0x1e, 0xc3, 0x20, 0xea, 0x23, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x08, 0x0d, 0x0e, 0xdd, 0x10 -.byte 0x00, 0x00, 0x44, 0x12, 0x14, 0x15, 0x7b, 0x16, 0x03, 0x19, 0x6b, 0x1a, 0xd2, 0x1b, 0xa2, 0x1e, 0x00, 0x00, 0x7a, 0x1f, 0x71, 0x21, 0x41, 0x24, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00 -.byte 0x00, 0x00, 0xbf, 0x08, 0x93, 0x0e, 0x7e, 0x11, 0x00, 0x00, 0x00, 0x00, 0x68, 0x14, 0xdd, 0x15, 0x7d, 0x18, 0xf2, 0x19, 0x67, 0x1b, 0x51, 0x1e, 0x00, 0x00, 0x31, 0x1f, 0x3b, 0x21, 0x26, 0x24 -.byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x0a, 0xf2, 0x0f, 0x8a, 0x11, 0xaa, 0x13, 0x00, 0x00, 0x52, 0x16, 0x00, 0x00 -.byte 0xa6, 0x17, 0xc7, 0x19, 0x00, 0x00, 0xc3, 0x1d, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x21, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x03 -.byte 0x00, 0x00, 0x00, 0x00, 0x3c, 0x07, 0x0b, 0x09, 0x4c, 0x0c, 0xa3, 0x10, 0x41, 0x14, 0x10, 0x16, 0xae, 0x19, 0xc4, 0x1a, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x03, 0x00, 0x00, 0xb7, 0x04, 0x15, 0x08, 0x73, 0x0b, 0xce, 0x0d, 0x83, 0x11, 0x88, 0x13, 0xe6, 0x16, 0x44, 0x1a, 0x9d, 0x1b, 0xf6, 0x1c, 0x00, 0x00 -.byte 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x57, 0x04, 0x00, 0x00, 0xad, 0x05, 0x04, 0x09, 0x5a, 0x0c, 0xb1, 0x0e, 0x5c, 0x11, 0x5d, 0x13, 0xb4, 0x16 -.byte 0x0b, 0x1a, 0xb6, 0x1b, 0x0c, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x30, 0x02, 0x50, 0x05, 0x40, 0x06, 0x80, 0x07, 0xa0, 0x0a, 0xc0, 0x0d -.byte 0xf0, 0x0f, 0x70, 0x12, 0x50, 0x14, 0x70, 0x17, 0x90, 0x1a, 0x70, 0x1c, 0xb0, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x02, 0xd9, 0x03, 0xce, 0x06 -.byte 0xb2, 0x07, 0xe1, 0x08, 0xd6, 0x0b, 0xcc, 0x0e, 0xde, 0x10, 0x3c, 0x13, 0x03, 0x15, 0xf8, 0x17, 0xee, 0x1a, 0x00, 0x1d, 0x2f, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x5a, 0x02, 0xd1, 0x03, 0xc1, 0x06, 0xa3, 0x07, 0xd0, 0x08, 0xc0, 0x0b, 0xaf, 0x0e, 0xbe, 0x10, 0x17, 0x13, 0xda, 0x14, 0xca, 0x17, 0xba, 0x1a, 0x14, 0x1d, 0x40, 0x1e, 0x00, 0x00 -.byte 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x02, 0xca, 0x03, 0xb4, 0x06, 0x94, 0x07, 0xbf, 0x08, 0xa9, 0x0b, 0x93, 0x0e, 0x9e, 0x10, 0xf3, 0x12, 0xb3, 0x14, 0x9d, 0x17 -.byte 0x87, 0x1a, 0x27, 0x1d, 0x51, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x02, 0xae, 0x03, 0x83, 0x06, 0x5c, 0x07, 0x7e, 0x08, 0x53, 0x0b, 0x27, 0x0e -.byte 0x22, 0x10, 0x66, 0x12, 0x19, 0x14, 0xee, 0x16, 0xc2, 0x19, 0x06, 0x1c, 0x28, 0x1d, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x25, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0xe2, 0x00, 0x5a, 0x02, 0x49, 0x05 -.byte 0x2b, 0x06, 0x58, 0x07, 0x48, 0x0a, 0x37, 0x0d, 0x46, 0x0f, 0x9f, 0x11, 0x62, 0x13, 0x52, 0x16, 0x42, 0x19, 0x9c, 0x1b, 0xc8, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x98, 0x25, 0x00, 0x00, 0x10, 0x27 -.byte 0x00, 0x00, 0xf4, 0x00, 0x8a, 0x02, 0x00, 0x00, 0x7e, 0x03, 0xc4, 0x04, 0xf1, 0x07, 0x1e, 0x0b, 0x57, 0x0d, 0xe1, 0x0f, 0xc9, 0x11, 0xf6, 0x14, 0x23, 0x18, 0xad, 0x1a, 0xf2, 0x1b, 0x00, 0x00 -.byte 0x00, 0x00, 0x79, 0x25, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb, 0x03, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x7b, 0x09, 0xe5, 0x0c, 0x72, 0x11, 0x3d, 0x15, 0x22, 0x17 -.byte 0xed, 0x1a, 0x10, 0x1c, 0x95, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x03, 0x00, 0x00, 0xed, 0x04, 0x72, 0x08, 0xf7, 0x0b -.byte 0x6e, 0x0e, 0x4d, 0x12, 0x69, 0x14, 0xee, 0x17, 0x73, 0x1b, 0xdb, 0x1c, 0x44, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x89, 0x04 -.byte 0x00, 0x00, 0xee, 0x05, 0x6b, 0x09, 0xe8, 0x0c, 0x59, 0x0f, 0x23, 0x12, 0x3b, 0x14, 0xb7, 0x17, 0x34, 0x1b, 0xf3, 0x1c, 0x58, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0xfa, 0x00, 0x47, 0x02, 0x89, 0x05, 0x83, 0x06, 0xd0, 0x07, 0x11, 0x0b, 0x53, 0x0e, 0x9a, 0x10, 0x35, 0x13, 0x29, 0x15, 0x6a, 0x18, 0xab, 0x1b, 0x9f, 0x1d, 0xed, 0x1e, 0x00, 0x00 -.byte 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x02, 0x00, 0x04, 0x13, 0x07, 0xff, 0x07, 0x3a, 0x09, 0x4e, 0x0c, 0x61, 0x0f, 0x88, 0x11, 0xfe, 0x13, 0xd7, 0x15, 0xea, 0x18 -.byte 0xfd, 0x1b, 0x25, 0x1e, 0x5f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x02, 0xf8, 0x03, 0x05, 0x07, 0xef, 0x07, 0x28, 0x09, 0x35, 0x0c, 0x42, 0x0f -.byte 0x65, 0x11, 0xd6, 0x13, 0xab, 0x15, 0xb8, 0x18, 0xc5, 0x1b, 0x36, 0x1e, 0x6f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x02, 0xf0, 0x03, 0xf7, 0x06 -.byte 0xe0, 0x07, 0x16, 0x09, 0x1d, 0x0c, 0x24, 0x0f, 0x43, 0x11, 0xaf, 0x13, 0x80, 0x15, 0x87, 0x18, 0x8e, 0x1b, 0x48, 0x1e, 0x7e, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x5a, 0x02, 0xd1, 0x03, 0xc1, 0x06, 0xa3, 0x07, 0xd0, 0x08, 0xc0, 0x0b, 0xaf, 0x0e, 0xbe, 0x10, 0x17, 0x13, 0xda, 0x14, 0xca, 0x17, 0xba, 0x1a, 0x14, 0x1d, 0x40, 0x1e, 0x00, 0x00 -.byte 0x00, 0x00, 0x98, 0x25, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x1f, 0x01, 0x3f, 0x02, 0x7d, 0x04, 0xbc, 0x06, 0x00, 0x00, 0xfb, 0x08, 0x1a, 0x0a, 0x1f, 0x0c, 0x3f, 0x0d, 0x0b, 0x0f, 0x2a, 0x10 -.byte 0x69, 0x12, 0x15, 0x13, 0xfb, 0x13, 0x3a, 0x16, 0x78, 0x18, 0xd1, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x17, 0x01, 0x2f, 0x02, 0x5d, 0x04, 0x8c, 0x06, 0xa3, 0x07, 0xd2, 0x09, 0xe9, 0x0a -.byte 0xe0, 0x0c, 0xf7, 0x0d, 0xb6, 0x0f, 0xce, 0x10, 0xfc, 0x12, 0xa4, 0x13, 0x83, 0x14, 0xb2, 0x16, 0xe1, 0x18, 0xe1, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x01, 0x5a, 0x02, 0xb5, 0x04 -.byte 0x0f, 0x07, 0x3c, 0x08, 0x97, 0x0a, 0xc4, 0x0b, 0xe2, 0x0d, 0x0f, 0x0f, 0x6a, 0x11, 0x97, 0x12, 0xf1, 0x14, 0xa6, 0x15, 0x97, 0x16, 0xf2, 0x18, 0x4c, 0x1b, 0xb6, 0x24, 0x10, 0x27, 0x00, 0x00 -.byte 0x00, 0x00, 0x37, 0x01, 0x6d, 0x02, 0xda, 0x04, 0x47, 0x07, 0x7e, 0x08, 0xb4, 0x09, 0xeb, 0x0a, 0x1a, 0x0d, 0x51, 0x0e, 0xbe, 0x10, 0xf4, 0x11, 0x61, 0x14, 0x1c, 0x15, 0x14, 0x16, 0x81, 0x18 -.byte 0xee, 0x1a, 0xa3, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x49, 0x02, 0x6d, 0x03, 0xb6, 0x05, 0xff, 0x07, 0x23, 0x09, 0x6c, 0x0b, 0x90, 0x0c, 0x9f, 0x0e, 0xc3, 0x0f, 0x0c, 0x12, 0x30, 0x13 -.byte 0x79, 0x15, 0x29, 0x16, 0x12, 0x17, 0x5b, 0x19, 0xa4, 0x1b, 0xc7, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x02, 0xa4, 0x03, 0x11, 0x06, 0x7e, 0x08, 0xb4, 0x09, 0x22, 0x0c, 0x58, 0x0d -.byte 0x87, 0x0f, 0xbe, 0x10, 0x2b, 0x13, 0x61, 0x14, 0xcf, 0x16, 0x89, 0x17, 0x81, 0x18, 0xee, 0x1a, 0x5c, 0x1d, 0xa3, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xda, 0x06, 0xff, 0x07, 0x48, 0x0a -.byte 0x90, 0x0c, 0xb5, 0x0d, 0xd9, 0x0e, 0xfe, 0x0f, 0x0c, 0x12, 0x30, 0x13, 0x79, 0x15, 0xe6, 0x18, 0x2f, 0x1b, 0xdf, 0x1b, 0xc8, 0x1c, 0x11, 0x1f, 0x5a, 0x21, 0xc7, 0x24, 0x10, 0x27, 0x00, 0x00 -.byte 0x00, 0x00, 0x04, 0x07, 0x30, 0x08, 0x97, 0x09, 0xee, 0x0b, 0x19, 0x0d, 0x45, 0x0e, 0x70, 0x0f, 0x8b, 0x11, 0xb6, 0x12, 0x0d, 0x15, 0x8f, 0x18, 0xe6, 0x1a, 0x9a, 0x1b, 0x89, 0x1c, 0xe0, 0x1e -.byte 0x37, 0x21, 0xb9, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x08, 0x89, 0x0c, 0xc9, 0x0d, 0xe0, 0x0f, 0xec, 0x10, 0xf7, 0x11, 0x00, 0x00, 0xd8, 0x13, 0xe4, 0x14, 0xfa, 0x16, 0x1c, 0x1a -.byte 0x33, 0x1c, 0xd4, 0x1c, 0xaa, 0x1d, 0xc0, 0x1f, 0xd7, 0x21, 0xf9, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x72, 0x08, 0xab, 0x0c, 0xf0, 0x0d, 0x0c, 0x10, 0x1a, 0x11, 0x29, 0x12, 0x00, 0x00 -.byte 0x0f, 0x14, 0x1d, 0x15, 0xce, 0x16, 0xf9, 0x19, 0x15, 0x1c, 0xb7, 0x1c, 0x90, 0x1d, 0xac, 0x1f, 0xc9, 0x21, 0xf3, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xae, 0x08, 0x05, 0x0d, 0x53, 0x0e -.byte 0x0f, 0x10, 0x25, 0x11, 0x3b, 0x12, 0x00, 0x00, 0xc0, 0x13, 0x7c, 0x15, 0xc9, 0x16, 0x0b, 0x1a, 0x36, 0x1c, 0x00, 0x00, 0x62, 0x1e, 0xb9, 0x22, 0x00, 0x00, 0xfa, 0x25, 0x10, 0x27, 0x00, 0x00 -.byte 0x00, 0x00, 0x15, 0x0b, 0xda, 0x0d, 0x84, 0x0f, 0x74, 0x11, 0x00, 0x00, 0xd7, 0x12, 0x00, 0x00, 0xc7, 0x14, 0xff, 0x16, 0xa8, 0x18, 0x32, 0x1e, 0xf8, 0x20, 0x00, 0x00, 0xbd, 0x23, 0x10, 0x27 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0d, 0x2a, 0x10, 0x00, 0x00, 0x0d, 0x12, 0x00, 0x00, 0x66, 0x13, 0x00, 0x00, 0x48, 0x15, 0x70, 0x17, 0x0e, 0x19, 0x71, 0x1e -.byte 0x23, 0x21, 0x00, 0x00, 0xd4, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x0d, 0x0e, 0x10, 0x00, 0x00, 0xed, 0x11, 0x00, 0x00, 0x44, 0x13, 0x00, 0x00 -.byte 0x23, 0x15, 0x47, 0x17, 0xe2, 0x18, 0x3c, 0x1e, 0xe9, 0x20, 0x00, 0x00, 0x96, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x0d, 0xd6, 0x0f, 0x00, 0x00 -.byte 0xaf, 0x11, 0x00, 0x00, 0x01, 0x13, 0x00, 0x00, 0xda, 0x14, 0xf6, 0x16, 0x8c, 0x18, 0xd3, 0x1d, 0x77, 0x20, 0x00, 0x00, 0x1a, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0xa9, 0x0d, 0x64, 0x10, 0x00, 0x00, 0x4d, 0x12, 0x00, 0x00, 0xab, 0x13, 0x00, 0x00, 0x94, 0x15, 0xc4, 0x17, 0x67, 0x19, 0xde, 0x1e, 0x99, 0x21, 0x00, 0x00, 0x55, 0x24, 0x10, 0x27 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0d, 0xf2, 0x0f, 0x00, 0x00, 0xce, 0x11, 0x00, 0x00, 0x22, 0x13, 0x00, 0x00, 0xfe, 0x14, 0x1e, 0x17, 0xc7, 0x19, 0x17, 0x1f -.byte 0xbf, 0x21, 0x00, 0x00, 0x68, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x0d, 0x81, 0x10, 0x00, 0x00, 0x6e, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x5b, 0x14, 0x8f, 0x16, 0x4f, 0x19, 0xcf, 0x1e, 0x90, 0x21, 0x00, 0x00, 0x50, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x08, 0x90, 0x0d, 0x47, 0x10 -.byte 0x00, 0x00, 0xa2, 0x11, 0x58, 0x14, 0xb4, 0x15, 0x25, 0x18, 0x80, 0x19, 0xdb, 0x1a, 0xed, 0x1e, 0x00, 0x00, 0xbd, 0x1f, 0xa3, 0x21, 0x5a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00 -.byte 0x00, 0x00, 0x16, 0x09, 0x99, 0x0a, 0xa0, 0x0d, 0x00, 0x00, 0x24, 0x0f, 0x2b, 0x12, 0xaf, 0x13, 0x68, 0x16, 0xec, 0x17, 0x70, 0x19, 0xfa, 0x1d, 0x00, 0x00, 0xe3, 0x1e, 0x02, 0x21, 0x09, 0x24 -.byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x08, 0x48, 0x0a, 0x0b, 0x0c, 0x00, 0x00, 0x83, 0x0d, 0x73, 0x10, 0xea, 0x11, 0x8f, 0x14, 0xe9, 0x16, 0x61, 0x18, 0x40, 0x1e -.byte 0x00, 0x00, 0x22, 0x1f, 0x30, 0x21, 0x20, 0x24, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x09, 0xd5, 0x0e, 0x51, 0x10, 0xca, 0x12, 0x07, 0x14, 0x7f, 0x16, 0x00, 0x00 -.byte 0xb9, 0x18, 0xb3, 0x1a, 0x00, 0x00, 0xa5, 0x1f, 0x00, 0x00, 0x63, 0x20, 0x1e, 0x22, 0x97, 0x24, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x48, 0x0a, 0x6b, 0x0f, 0xf6, 0x10 -.byte 0x04, 0x13, 0x4d, 0x14, 0xdf, 0x16, 0x00, 0x00, 0x28, 0x18, 0x37, 0x1a, 0x00, 0x00, 0x11, 0x1e, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x20, 0xc7, 0x25, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00 -.byte 0x00, 0x00, 0xc0, 0x0b, 0xaf, 0x0e, 0x73, 0x10, 0x81, 0x12, 0xf9, 0x13, 0xe9, 0x16, 0x00, 0x00, 0x61, 0x18, 0xba, 0x1a, 0x00, 0x00, 0x9a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x23, 0x10, 0x27 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x0c, 0x61, 0x0f, 0x00, 0x00, 0x88, 0x11, 0x12, 0x13, 0x25, 0x16, 0x00, 0x00, 0xaf, 0x17, 0x25, 0x1a, 0x00, 0x00, 0x4c, 0x20 -.byte 0x00, 0x00, 0x00, 0x00, 0x5f, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x0c, 0x42, 0x0f, 0x00, 0x00, 0x65, 0x11, 0xec, 0x12, 0xf9, 0x15, 0x00, 0x00 -.byte 0x80, 0x17, 0xf1, 0x19, 0x00, 0x00, 0x0b, 0x20, 0x00, 0x00, 0x00, 0x00, 0x18, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0c, 0x06, 0x0f, 0x00, 0x00 -.byte 0x21, 0x11, 0xa1, 0x12, 0xa2, 0x15, 0x00, 0x00, 0x23, 0x17, 0x8a, 0x19, 0x00, 0x00, 0x8d, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x22, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x80, 0x0c, 0xa0, 0x0f, 0x00, 0x00, 0xd0, 0x11, 0x60, 0x13, 0x80, 0x16, 0x00, 0x00, 0x10, 0x18, 0x90, 0x1a, 0x00, 0x00, 0xd0, 0x20, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x23, 0x10, 0x27 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0d, 0x47, 0x10, 0x00, 0x00, 0x8e, 0x12, 0x00, 0x00, 0xcf, 0x15, 0x00, 0x00, 0x70, 0x17, 0x0b, 0x1a, 0x00, 0x00, 0x8d, 0x20 -.byte 0x00, 0x00, 0x00, 0x00, 0xcf, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x01, 0x32, 0x02, 0x64, 0x04, 0x95, 0x06, 0xc7, 0x08, 0xf9, 0x0a, 0x12, 0x0c -.byte 0x0c, 0x0e, 0xae, 0x10, 0xdf, 0x12, 0xf8, 0x13, 0x2a, 0x16, 0xd3, 0x16, 0xb3, 0x17, 0xe5, 0x19, 0x17, 0x1c, 0xde, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x14, 0x02, 0x28, 0x04 -.byte 0x3c, 0x06, 0x50, 0x08, 0x64, 0x0a, 0x6e, 0x0b, 0x4c, 0x0d, 0xcb, 0x0f, 0xde, 0x11, 0xe8, 0x12, 0xfc, 0x14, 0x9c, 0x15, 0x71, 0x16, 0x85, 0x18, 0x99, 0x1a, 0xe8, 0x22, 0xfc, 0x24, 0x10, 0x27 -.byte 0x00, 0x00, 0x19, 0x01, 0x32, 0x02, 0x64, 0x04, 0x95, 0x06, 0x00, 0x00, 0xc7, 0x08, 0xe0, 0x09, 0xda, 0x0b, 0x7c, 0x0e, 0xae, 0x10, 0xc7, 0x11, 0xf8, 0x13, 0xa1, 0x14, 0x82, 0x15, 0xb3, 0x17 -.byte 0xe5, 0x19, 0xac, 0x22, 0xde, 0x24, 0x10, 0x27, 0x00, 0x00, 0x2a, 0x01, 0x53, 0x02, 0xa6, 0x04, 0xfa, 0x06, 0x00, 0x00, 0x4d, 0x09, 0x77, 0x0a, 0x8e, 0x0c, 0x59, 0x0f, 0xac, 0x11, 0xd5, 0x12 -.byte 0x29, 0x15, 0xdb, 0x15, 0xc9, 0x16, 0x1d, 0x19, 0x70, 0x1b, 0xbd, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x11, 0x01, 0x22, 0x02, 0x45, 0x04, 0x67, 0x06, 0x8a, 0x08, 0xac, 0x0a, 0xbd, 0x0b -.byte 0xa9, 0x0d, 0x39, 0x10, 0x5b, 0x12, 0x6d, 0x13, 0x8f, 0x15, 0x33, 0x16, 0x0e, 0x17, 0x30, 0x19, 0x53, 0x1b, 0xee, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x03, 0x1a, 0x07, 0xa7, 0x0a -.byte 0x00, 0x00, 0x00, 0x00, 0x34, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x11, 0x4f, 0x15, 0x00, 0x00, 0x69, 0x1c, 0x83, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x48, 0x0a, 0xb5, 0x0d, 0x22, 0x11, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x14, 0x00, 0x00, 0xa5, 0x17, 0x5b, 0x19, 0x12, 0x1b, 0x7f, 0x1e, 0x00, 0x00, 0x86, 0x1f, 0xec, 0x21, 0x59, 0x25 -.byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x16, 0x09, 0x24, 0x0f, 0x2b, 0x12, 0x00, 0x00, 0xaf, 0x13, 0xb6, 0x16, 0x00, 0x00, 0x70, 0x19, 0xf3, 0x1a, 0x77, 0x1c, 0x7e, 0x1f -.byte 0x00, 0x00, 0x67, 0x20, 0x85, 0x22, 0x8c, 0x25, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x08, 0x93, 0x0e, 0x7e, 0x11, 0x00, 0x00, 0xf3, 0x12, 0xdd, 0x15, 0x00, 0x00 -.byte 0x7d, 0x18, 0xf2, 0x19, 0x67, 0x1b, 0xc6, 0x1f, 0x00, 0x00, 0xa6, 0x20, 0xb1, 0x22, 0x9b, 0x25, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x09, 0x7d, 0x0b, 0xc6, 0x0e -.byte 0x00, 0x00, 0x6a, 0x10, 0xb2, 0x13, 0x00, 0x00, 0xa6, 0x16, 0x4a, 0x18, 0xef, 0x19, 0xdb, 0x1e, 0x00, 0x00, 0xd7, 0x1f, 0x23, 0x22, 0x6c, 0x25, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00 -.byte 0x00, 0x00, 0x87, 0x09, 0x1e, 0x0b, 0x05, 0x0d, 0x00, 0x00, 0x9c, 0x0e, 0xc9, 0x11, 0x00, 0x00, 0xa5, 0x14, 0x2f, 0x17, 0xc5, 0x18, 0x1f, 0x1f, 0x00, 0x00, 0x13, 0x20, 0x4c, 0x22, 0x79, 0x25 -.byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x0a, 0xd6, 0x0f, 0x6b, 0x11, 0x0f, 0x14, 0x00, 0x00, 0xb3, 0x16, 0x00, 0x00, 0x13, 0x19, 0x2f, 0x1b, 0x00, 0x00, 0x77, 0x20 -.byte 0x00, 0x00, 0x42, 0x21, 0x1a, 0x23, 0xbe, 0x25, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x08, 0x0d, 0x0e, 0xdd, 0x10, 0x00, 0x00, 0x00, 0x00, 0xac, 0x13, 0x14, 0x15 -.byte 0x9b, 0x17, 0x03, 0x19, 0x6b, 0x1a, 0xa2, 0x1e, 0x00, 0x00, 0x7a, 0x1f, 0x71, 0x21, 0x41, 0x24, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x07, 0xc0, 0x0a, 0x56, 0x0e -.byte 0x00, 0x00, 0x00, 0x00, 0xeb, 0x11, 0x00, 0x00, 0x25, 0x15, 0xf0, 0x16, 0xba, 0x18, 0x50, 0x1c, 0x00, 0x00, 0x1a, 0x1e, 0x7b, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x4d, 0x06, 0x9a, 0x0c, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x12, 0x00, 0x00, 0xbd, 0x15, 0x50, 0x17, 0xe3, 0x18, 0x9d, 0x1d, 0x00, 0x00, 0x30, 0x1f, 0xea, 0x23, 0x10, 0x27 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x08, 0x93, 0x0e, 0x7e, 0x11, 0x00, 0x00, 0x00, 0x00, 0x68, 0x14, 0x00, 0x00, 0x08, 0x17, 0x7d, 0x18, 0xf2, 0x19, 0x51, 0x1e -.byte 0x00, 0x00, 0xc6, 0x1f, 0x26, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x07, 0xf7, 0x09 -.byte 0x8d, 0x0d, 0x56, 0x12, 0x52, 0x16, 0x50, 0x18, 0x4d, 0x1c, 0x7f, 0x1d, 0x17, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x03 -.byte 0x00, 0x00, 0x29, 0x05, 0xd8, 0x08, 0x88, 0x0c, 0x1c, 0x0f, 0x2a, 0x13, 0x60, 0x15, 0x0f, 0x19, 0xbe, 0x1c, 0x38, 0x1e, 0xb1, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x18, 0x01, 0xbf, 0x04, 0x00, 0x00, 0x35, 0x06, 0xdb, 0x09, 0x82, 0x0d, 0x10, 0x10, 0xfc, 0x12, 0x2d, 0x15, 0xd3, 0x18, 0x7a, 0x1c, 0x4d, 0x1e, 0xc3, 0x1f, 0x00, 0x00 -.byte 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01, 0x61, 0x02, 0xc6, 0x05, 0xcb, 0x06, 0x27, 0x08, 0x8d, 0x0b, 0xf2, 0x0e, 0x53, 0x11, 0x0a, 0x14, 0x14, 0x16, 0x7a, 0x19 -.byte 0xdf, 0x1c, 0xe9, 0x1e, 0x45, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x02, 0x2a, 0x04, 0x5d, 0x07, 0x53, 0x08, 0x9b, 0x09, 0xcf, 0x0c, 0x02, 0x10 -.byte 0x40, 0x12, 0xd0, 0x14, 0xbc, 0x16, 0xef, 0x19, 0x23, 0x1d, 0x61, 0x1f, 0xa9, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x02, 0x21, 0x04, 0x4e, 0x07 -.byte 0x42, 0x08, 0x87, 0x09, 0xb4, 0x0c, 0xe1, 0x0f, 0x1a, 0x12, 0xa5, 0x14, 0x8c, 0x16, 0xb9, 0x19, 0xe6, 0x1c, 0x71, 0x1f, 0xb6, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x85, 0x02, 0x18, 0x04, 0x3f, 0x07, 0x31, 0x08, 0x73, 0x09, 0x9a, 0x0c, 0xc0, 0x0f, 0xf5, 0x11, 0x7a, 0x14, 0x5e, 0x16, 0x84, 0x19, 0xab, 0x1c, 0x81, 0x1f, 0xc3, 0x20, 0x00, 0x00 -.byte 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x02, 0xf8, 0x03, 0x05, 0x07, 0xef, 0x07, 0x28, 0x09, 0x35, 0x0c, 0x42, 0x0f, 0x65, 0x11, 0xd6, 0x13, 0xab, 0x15, 0xb8, 0x18 -.byte 0xc5, 0x1b, 0x36, 0x1e, 0x6f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x89, 0x25, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0xf4, 0x00, 0x8a, 0x02, 0xb7, 0x05, 0xab, 0x06, 0xf1, 0x07, 0x1e, 0x0b, 0x4b, 0x0e -.byte 0x84, 0x10, 0x0e, 0x13, 0xf6, 0x14, 0x23, 0x18, 0x50, 0x1b, 0xda, 0x1d, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x79, 0x25, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x13, 0x01, 0xde, 0x02, 0x00, 0x00 -.byte 0xf1, 0x03, 0x00, 0x00, 0x87, 0x07, 0x1c, 0x0b, 0x9e, 0x0d, 0x7c, 0x10, 0xa3, 0x12, 0x38, 0x16, 0xce, 0x19, 0xab, 0x1c, 0x1a, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x45, 0x25, 0x00, 0x00, 0x10, 0x27 -.byte 0x00, 0x00, 0x21, 0x01, 0x42, 0x02, 0x84, 0x04, 0xc6, 0x06, 0x00, 0x00, 0x08, 0x09, 0x29, 0x0a, 0x31, 0x0c, 0xe7, 0x0e, 0x29, 0x11, 0x4a, 0x12, 0x8c, 0x14, 0x3a, 0x15, 0x21, 0x16, 0x63, 0x18 -.byte 0xa5, 0x1a, 0xce, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x02, 0x00, 0x00, 0x35, 0x05, 0x00, 0x00, 0xd0, 0x07, 0x6b, 0x0a, 0x05, 0x0d, 0x00, 0x00 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x14, 0x02, 0x28, 0x04, 0x3c, 0x06, 0x50, 0x08, 0x64, 0x0a, 0x6e, 0x0b -.byte 0x4c, 0x0d, 0xcb, 0x0f, 0xde, 0x11, 0xe8, 0x12, 0xfc, 0x14, 0x9c, 0x15, 0x71, 0x16, 0x85, 0x18, 0x99, 0x1a, 0xfc, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x00, 0xf9, 0x01, 0xf2, 0x03 -.byte 0xeb, 0x05, 0xe4, 0x07, 0xdd, 0x09, 0xda, 0x0a, 0xa0, 0x0c, 0xfe, 0x0e, 0xf7, 0x10, 0xf4, 0x11, 0xed, 0x13, 0x85, 0x14, 0x4f, 0x15, 0x48, 0x17, 0x41, 0x19, 0x1e, 0x23, 0x17, 0x25, 0x10, 0x27 -.byte 0x00, 0x00, 0xbc, 0x00, 0xf4, 0x01, 0x65, 0x04, 0x21, 0x05, 0x1b, 0x06, 0x8c, 0x08, 0xfd, 0x0a, 0xb2, 0x0c, 0xa6, 0x0e, 0x1d, 0x10, 0x8e, 0x12, 0x00, 0x00, 0x82, 0x14, 0x7c, 0x15, 0xed, 0x17 -.byte 0x00, 0x00, 0x22, 0x24, 0x5b, 0x25, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x47, 0x01, 0xd4, 0x03, 0x9e, 0x05, 0xa3, 0x06, 0x31, 0x09, 0x00, 0x00, 0xfa, 0x0a, 0x05, 0x0d, 0x8d, 0x0e, 0x1b, 0x11 -.byte 0x00, 0x00, 0xa9, 0x13, 0xae, 0x14, 0x3c, 0x17, 0x00, 0x00, 0x00, 0x24, 0x46, 0x25, 0x10, 0x27, 0x00, 0x00, 0x98, 0x04, 0x31, 0x09, 0xc9, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x62, 0x12, 0xae, 0x14, 0x47, 0x19, 0xdf, 0x1d, 0x78, 0x22, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x01, 0x32, 0x02, 0x64, 0x04 -.byte 0x95, 0x06, 0x00, 0x00, 0xc7, 0x08, 0xe0, 0x09, 0xda, 0x0b, 0x7c, 0x0e, 0xae, 0x10, 0xc7, 0x11, 0xf8, 0x13, 0xa1, 0x14, 0x82, 0x15, 0xb3, 0x17, 0xe5, 0x19, 0xde, 0x24, 0x10, 0x27, 0x00, 0x00 -.byte 0x00, 0x00, 0x5f, 0x08, 0xf3, 0x0d, 0x52, 0x16, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x01, 0x50, 0x02, 0x9f, 0x04, 0xef, 0x06, 0x00, 0x00, 0x3f, 0x09, 0x67, 0x0a, 0x7b, 0x0c, 0xa3, 0x0d, 0x7c, 0x0f, 0xa4, 0x10 -.byte 0xcc, 0x11, 0x7e, 0x12, 0x6a, 0x13, 0xba, 0x15, 0x0a, 0x18, 0xc0, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x8c, 0x05, 0xc5, 0x07, 0xfd, 0x09, 0x00, 0x00, 0x35, 0x0c, 0x51, 0x0d -.byte 0x50, 0x0f, 0x6d, 0x10, 0xa5, 0x12, 0xc1, 0x13, 0xf9, 0x15, 0xa3, 0x16, 0x87, 0x17, 0xbf, 0x19, 0xf7, 0x1b, 0xd8, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x24, 0x01, 0xb6, 0x05, 0xff, 0x07 -.byte 0x48, 0x0a, 0x00, 0x00, 0x6c, 0x0b, 0x90, 0x0c, 0x9f, 0x0e, 0xc3, 0x0f, 0x0c, 0x12, 0x30, 0x13, 0x79, 0x15, 0x29, 0x16, 0x12, 0x17, 0x5b, 0x19, 0xa4, 0x1b, 0xc7, 0x24, 0x10, 0x27, 0x00, 0x00 -.byte 0x00, 0x00, 0x28, 0x02, 0x79, 0x06, 0xa2, 0x08, 0xca, 0x0a, 0x00, 0x00, 0xf3, 0x0c, 0x07, 0x0e, 0xf8, 0x0f, 0x0d, 0x11, 0x35, 0x13, 0x49, 0x14, 0x72, 0x16, 0x18, 0x17, 0xf5, 0x17, 0x1d, 0x1a -.byte 0x46, 0x1c, 0xe8, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x49, 0x02, 0xda, 0x06, 0x23, 0x09, 0x6c, 0x0b, 0x00, 0x00, 0xb5, 0x0d, 0xd9, 0x0e, 0xe7, 0x10, 0x0c, 0x12, 0x55, 0x14, 0x79, 0x15 -.byte 0xc2, 0x17, 0x71, 0x18, 0x5b, 0x19, 0xa4, 0x1b, 0xed, 0x1d, 0xc7, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x79, 0x06, 0xca, 0x0a, 0xf3, 0x0c, 0x1b, 0x0f, 0x00, 0x00, 0x30, 0x10, 0x44, 0x11 -.byte 0x35, 0x13, 0x49, 0x14, 0x72, 0x16, 0xaf, 0x19, 0xd7, 0x1b, 0x7d, 0x1c, 0x5a, 0x1d, 0x82, 0x1f, 0xab, 0x21, 0xe8, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x07, 0x3c, 0x08, 0x97, 0x0a -.byte 0xf1, 0x0c, 0x00, 0x00, 0x1e, 0x0e, 0x4c, 0x0f, 0x6a, 0x11, 0x97, 0x12, 0xf1, 0x14, 0x79, 0x18, 0xd3, 0x1a, 0x88, 0x1b, 0x79, 0x1c, 0xd4, 0x1e, 0x2e, 0x21, 0xb6, 0x24, 0x10, 0x27, 0x00, 0x00 -.byte 0x00, 0x00, 0x53, 0x07, 0x8c, 0x08, 0x03, 0x0a, 0x74, 0x0c, 0x00, 0x00, 0xac, 0x0d, 0xe5, 0x0e, 0x17, 0x11, 0x0b, 0x13, 0x7c, 0x15, 0x5e, 0x1a, 0xcf, 0x1c, 0x8b, 0x1d, 0x85, 0x1e, 0xf6, 0x20 -.byte 0x00, 0x00, 0x9f, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xee, 0x08, 0x65, 0x0d, 0xbb, 0x0e, 0xf7, 0x10, 0x00, 0x00, 0x15, 0x12, 0x00, 0x00, 0x17, 0x14, 0xe0, 0x15, 0x1b, 0x18, 0x92, 0x1c -.byte 0xb0, 0x1d, 0x5b, 0x1e, 0x40, 0x1f, 0x7b, 0x21, 0x00, 0x00, 0xd5, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x8c, 0x0d, 0xe7, 0x0e, 0x29, 0x11, 0x00, 0x00, 0x4a, 0x12, 0x00, 0x00 -.byte 0x52, 0x14, 0x21, 0x16, 0xef, 0x17, 0x73, 0x1c, 0x94, 0x1d, 0x42, 0x1e, 0x29, 0x1f, 0x6b, 0x21, 0x00, 0x00, 0xce, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x09, 0xf3, 0x0d, 0x59, 0x0f -.byte 0x35, 0x11, 0x00, 0x00, 0x5e, 0x12, 0x00, 0x00, 0x88, 0x13, 0x64, 0x15, 0xc9, 0x16, 0x46, 0x1a, 0x70, 0x1b, 0x00, 0x00, 0xc3, 0x1d, 0x6a, 0x22, 0x00, 0x00, 0xe6, 0x25, 0x10, 0x27, 0x00, 0x00 -.byte 0x00, 0x00, 0xa9, 0x0b, 0x93, 0x0e, 0x53, 0x10, 0x5d, 0x12, 0x00, 0x00, 0xd3, 0x13, 0x00, 0x00, 0x48, 0x15, 0x9d, 0x17, 0x5d, 0x19, 0x31, 0x1f, 0xa6, 0x20, 0x00, 0x00, 0x90, 0x23, 0x10, 0x27 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x0c, 0x42, 0x0f, 0x00, 0x00, 0x65, 0x11, 0x00, 0x00, 0xec, 0x12, 0x00, 0x00, 0x72, 0x14, 0xe3, 0x16, 0xb8, 0x18, 0xd3, 0x1e -.byte 0x59, 0x20, 0x00, 0x00, 0x67, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0c, 0x24, 0x0f, 0x00, 0x00, 0x43, 0x11, 0x00, 0x00, 0xc6, 0x12, 0x00, 0x00 -.byte 0x4a, 0x14, 0xb6, 0x16, 0x87, 0x18, 0x95, 0x1e, 0x19, 0x20, 0x00, 0x00, 0x20, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, 0x0b, 0xe9, 0x0e, 0x00, 0x00 -.byte 0xff, 0x10, 0x00, 0x00, 0x7d, 0x12, 0x00, 0x00, 0xfb, 0x13, 0x5d, 0x16, 0x27, 0x18, 0x1e, 0x1e, 0x9c, 0x1f, 0x00, 0x00, 0x97, 0x22, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x67, 0x0c, 0x80, 0x0f, 0x00, 0x00, 0xac, 0x11, 0x00, 0x00, 0x39, 0x13, 0x00, 0x00, 0xc5, 0x14, 0x40, 0x17, 0x1d, 0x19, 0x50, 0x1f, 0xdd, 0x20, 0x00, 0x00, 0xf6, 0x23, 0x10, 0x27 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0c, 0x06, 0x0f, 0x00, 0x00, 0x21, 0x11, 0x00, 0x00, 0xa1, 0x12, 0x00, 0x00, 0x22, 0x14, 0x89, 0x16, 0x8a, 0x19, 0x8d, 0x1f -.byte 0x0e, 0x21, 0x00, 0x00, 0x0f, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0c, 0xa0, 0x0f, 0x00, 0x00, 0xd0, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x60, 0x13, 0xe0, 0x15, 0x00, 0x19, 0x40, 0x1f, 0xd0, 0x20, 0x00, 0x00, 0xf0, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x08, 0xda, 0x0d, 0x9f, 0x10 -.byte 0x90, 0x12, 0x00, 0x00, 0x55, 0x15, 0x00, 0x00, 0xd3, 0x17, 0x36, 0x19, 0x99, 0x1a, 0xc0, 0x1e, 0x00, 0x00, 0x23, 0x20, 0x4b, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x4d, 0x09, 0xda, 0x0a, 0xf3, 0x0d, 0x1f, 0x10, 0x00, 0x00, 0x39, 0x13, 0x00, 0x00, 0x03, 0x16, 0x90, 0x17, 0x1d, 0x19, 0xc3, 0x1d, 0x00, 0x00, 0x50, 0x1f, 0xf6, 0x23, 0x10, 0x27 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0x84, 0x0a, 0x52, 0x0c, 0x6c, 0x0e, 0x00, 0x00, 0x6e, 0x11, 0x00, 0x00, 0x22, 0x14, 0x89, 0x16, 0x0a, 0x18, 0x0c, 0x1e -.byte 0x00, 0x00, 0x8d, 0x1f, 0x0f, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x06, 0x02, 0x0c, 0x04, 0x12, 0x06, 0x19, 0x08, 0x1f, 0x0a, 0x22, 0x0b -.byte 0xf4, 0x0c, 0x62, 0x0f, 0x68, 0x11, 0x6b, 0x12, 0x71, 0x14, 0x0d, 0x15, 0xdc, 0x15, 0xe2, 0x17, 0xe8, 0x19, 0x0a, 0x25, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x00, 0xed, 0x01, 0xd9, 0x03 -.byte 0xc6, 0x05, 0xb2, 0x07, 0x9f, 0x09, 0x95, 0x0a, 0x51, 0x0c, 0xa0, 0x0e, 0x8c, 0x10, 0x83, 0x11, 0x6f, 0x13, 0x03, 0x14, 0xc8, 0x14, 0xb5, 0x16, 0xa1, 0x18, 0x37, 0x23, 0x23, 0x25, 0x10, 0x27 -.byte 0x00, 0x00, 0xb6, 0x00, 0xe5, 0x01, 0x43, 0x04, 0xf9, 0x04, 0xeb, 0x05, 0x49, 0x08, 0xa7, 0x0a, 0x50, 0x0c, 0x34, 0x0e, 0xa0, 0x0f, 0xfe, 0x11, 0x00, 0x00, 0xe3, 0x13, 0xd5, 0x14, 0x33, 0x17 -.byte 0x00, 0x00, 0x39, 0x24, 0x68, 0x25, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x01, 0xb5, 0x03, 0x70, 0x05, 0x6e, 0x06, 0xe6, 0x08, 0x00, 0x00, 0xa2, 0x0a, 0x9c, 0x0c, 0x18, 0x0e, 0x91, 0x10 -.byte 0x00, 0x00, 0x09, 0x13, 0x07, 0x14, 0x7f, 0x16, 0x00, 0x00, 0x19, 0x24, 0x55, 0x25, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x01, 0xaf, 0x03, 0x68, 0x05, 0xa2, 0x06, 0x17, 0x09, 0x00, 0x00 -.byte 0xcf, 0x0a, 0xc6, 0x0c, 0x40, 0x0e, 0xb5, 0x10, 0x00, 0x00, 0x2a, 0x13, 0x25, 0x14, 0x9a, 0x16, 0x00, 0x00, 0x1d, 0x24, 0x58, 0x25, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x31, 0x01, 0x93, 0x03 -.byte 0x3d, 0x05, 0x6e, 0x06, 0xd0, 0x08, 0x00, 0x00, 0x7b, 0x0a, 0x63, 0x0c, 0xd1, 0x0d, 0x32, 0x10, 0x00, 0x00, 0xc5, 0x13, 0xb9, 0x14, 0x1b, 0x17, 0x00, 0x00, 0x34, 0x24, 0x65, 0x25, 0x10, 0x27 -.byte 0x00, 0x00, 0x00, 0x00, 0x3e, 0x01, 0xbb, 0x03, 0x79, 0x05, 0xb8, 0x06, 0x35, 0x09, 0x00, 0x00, 0xf3, 0x0a, 0xf0, 0x0c, 0x6e, 0x0e, 0xeb, 0x10, 0x00, 0x00, 0xe9, 0x12, 0xe8, 0x13, 0x64, 0x16 -.byte 0x00, 0x00, 0x14, 0x24, 0x52, 0x25, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x54, 0x03, 0x1b, 0x05, 0x37, 0x06, 0x6f, 0x08, 0x00, 0x00, 0xfd, 0x09, 0xc3, 0x0b, 0x18, 0x0d, 0x89, 0x11 -.byte 0x00, 0x00, 0x00, 0x00, 0xc1, 0x13, 0x31, 0x18, 0x00, 0x00, 0x66, 0x24, 0x82, 0x25, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x01, 0xb5, 0x03, 0x70, 0x05, 0xad, 0x06, 0xa7, 0x08, 0x00, 0x00 -.byte 0x62, 0x0a, 0x5d, 0x0c, 0xd8, 0x0d, 0x51, 0x10, 0x00, 0x00, 0x00, 0x00, 0xca, 0x12, 0xc2, 0x15, 0xbc, 0x17, 0x55, 0x25, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x93, 0x01, 0x00, 0x00 -.byte 0x68, 0x03, 0xb8, 0x04, 0xd1, 0x06, 0x00, 0x00, 0xa7, 0x08, 0xc0, 0x0a, 0x52, 0x0c, 0xf2, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x91, 0x11, 0xb6, 0x14, 0xcf, 0x16, 0x3a, 0x25, 0x00, 0x00, 0x10, 0x27 -.byte 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x63, 0x03, 0xb0, 0x04, 0xc5, 0x06, 0x00, 0x00, 0x98, 0x08, 0xad, 0x0a, 0x3d, 0x0c, 0xd8, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x73, 0x11, 0xd5, 0x14 -.byte 0xeb, 0x16, 0x3d, 0x25, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x01, 0x00, 0x00, 0x57, 0x03, 0xa0, 0x04, 0xaf, 0x06, 0x00, 0x00, 0x7b, 0x08, 0x89, 0x0a, 0x14, 0x0c, 0xa6, 0x0e -.byte 0x00, 0x00, 0x00, 0x00, 0x38, 0x11, 0x13, 0x15, 0x21, 0x17, 0x43, 0x25, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, 0x74, 0x03, 0xc8, 0x04, 0xe9, 0x06, 0x00, 0x00 -.byte 0xc5, 0x08, 0xe5, 0x0a, 0x7d, 0x0c, 0x26, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xce, 0x11, 0xfe, 0x14, 0x96, 0x16, 0x34, 0x25, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x01, 0x00, 0x00 -.byte 0x81, 0x03, 0xd9, 0x04, 0x01, 0x07, 0x00, 0x00, 0xe4, 0x08, 0x0c, 0x0b, 0xa9, 0x0c, 0x5b, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x12, 0xbe, 0x14, 0x5c, 0x16, 0x2d, 0x25, 0x00, 0x00, 0x10, 0x27 -.byte 0x00, 0x00, 0x00, 0x00, 0xd3, 0x01, 0x00, 0x00, 0xa5, 0x03, 0xf3, 0x04, 0x08, 0x07, 0x00, 0x00, 0xdb, 0x08, 0xf0, 0x0a, 0x8b, 0x0d, 0x25, 0x10, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x12, 0x5b, 0x15 -.byte 0xeb, 0x16, 0x3d, 0x25, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x00, 0x9f, 0x03, 0xea, 0x04, 0xfc, 0x06, 0x00, 0x00, 0xcc, 0x08, 0xdd, 0x0a, 0x74, 0x0d, 0x0a, 0x10 -.byte 0x00, 0x00, 0x00, 0x00, 0xa0, 0x12, 0x36, 0x15, 0xc4, 0x16, 0xfe, 0x24, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x01, 0x00, 0x00, 0xac, 0x03, 0xfb, 0x04, 0x8e, 0x06, 0x00, 0x00 -.byte 0x64, 0x08, 0x7d, 0x0a, 0x1c, 0x0d, 0xbb, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x12, 0xf9, 0x14, 0x8c, 0x16, 0xf7, 0x24, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x54, 0x02, 0x00, 0x00 -.byte 0x24, 0x04, 0x6f, 0x05, 0xfc, 0x06, 0x00, 0x00, 0xcc, 0x08, 0xdd, 0x0a, 0x74, 0x0d, 0x0a, 0x10, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x12, 0x36, 0x15, 0xc4, 0x16, 0xfe, 0x24, 0x00, 0x00, 0x10, 0x27 -.byte 0x00, 0x00, 0x00, 0x00, 0x68, 0x02, 0x00, 0x00, 0x48, 0x04, 0x00, 0x00, 0xe3, 0x05, 0x00, 0x00, 0xc2, 0x07, 0xe6, 0x09, 0x93, 0x0c, 0x40, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xed, 0x11, 0x9a, 0x14 -.byte 0x35, 0x16, 0xec, 0x24, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xb2, 0x02, 0x00, 0x00, 0x94, 0x04, 0x00, 0x00, 0xa8, 0x05, 0x00, 0x00, 0x8b, 0x07, 0xb3, 0x09, 0x64, 0x0c, 0x16, 0x0f -.byte 0x00, 0x00, 0x00, 0x00, 0xc8, 0x11, 0x79, 0x14, 0x17, 0x16, 0xe8, 0x24, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x02, 0x00, 0x00, 0xc7, 0x04, 0x00, 0x00, 0xe7, 0x05, 0x00, 0x00 -.byte 0xde, 0x07, 0x1e, 0x0a, 0xed, 0x0c, 0xbd, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x12, 0x5c, 0x15, 0x00, 0x00, 0xd0, 0x24, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x75, 0x01, 0x00, 0x00 -.byte 0x80, 0x03, 0x00, 0x00, 0xaa, 0x04, 0x00, 0x00, 0xb4, 0x06, 0x09, 0x09, 0xf4, 0x0b, 0xde, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x11, 0xb3, 0x14, 0x00, 0x00, 0xbb, 0x24, 0x00, 0x00, 0x10, 0x27 -.byte 0x00, 0x00, 0x31, 0x01, 0x62, 0x02, 0xc4, 0x04, 0x25, 0x07, 0x00, 0x00, 0x87, 0x09, 0xb8, 0x0a, 0xdd, 0x0c, 0x0e, 0x0e, 0xf5, 0x0f, 0x26, 0x11, 0x00, 0x00, 0xdd, 0x11, 0xd1, 0x12, 0x33, 0x15 -.byte 0x95, 0x17, 0xae, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x38, 0x02, 0xa9, 0x06, 0xe1, 0x08, 0x19, 0x0b, 0x00, 0x00, 0x35, 0x0c, 0x51, 0x0d, 0x50, 0x0f, 0x6d, 0x10, 0xa5, 0x12, 0xc1, 0x13 -.byte 0xf9, 0x15, 0xa3, 0x16, 0x87, 0x17, 0xbf, 0x19, 0xf7, 0x1b, 0xd8, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x02, 0x0f, 0x07, 0x6a, 0x09, 0xc4, 0x0b, 0x00, 0x00, 0xf1, 0x0c, 0x1e, 0x0e -.byte 0x3d, 0x10, 0x6a, 0x11, 0xc4, 0x13, 0xf1, 0x14, 0x4c, 0x17, 0x01, 0x18, 0xf2, 0x18, 0x4c, 0x1b, 0xa6, 0x1d, 0xb6, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0xae, 0x08, 0x05, 0x0d, 0x53, 0x0e -.byte 0x7e, 0x10, 0x00, 0x00, 0x94, 0x11, 0x00, 0x00, 0x88, 0x13, 0x44, 0x15, 0x70, 0x17, 0xc7, 0x1b, 0xf3, 0x1d, 0x99, 0x1e, 0x78, 0x1f, 0xa3, 0x21, 0x00, 0x00, 0xe4, 0x24, 0x10, 0x27, 0x00, 0x00 -.byte 0x00, 0x00, 0xc7, 0x08, 0x2b, 0x0d, 0x7c, 0x0e, 0xae, 0x10, 0x00, 0x00, 0xc7, 0x11, 0x00, 0x00, 0xc0, 0x13, 0x82, 0x15, 0x43, 0x17, 0xa7, 0x1b, 0xd8, 0x1d, 0x81, 0x1e, 0x62, 0x1f, 0x94, 0x21 -.byte 0x00, 0x00, 0xde, 0x24, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x96, 0x09, 0x61, 0x0e, 0xd1, 0x0f, 0xbc, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0x12, 0xd9, 0x14, 0x4a, 0x16, 0xe2, 0x19 -.byte 0x15, 0x1b, 0x00, 0x00, 0x7a, 0x1d, 0x45, 0x22, 0x00, 0x00, 0xdd, 0x25, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0c, 0x24, 0x0f, 0xf5, 0x10, 0x14, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x97, 0x14, 0x03, 0x17, 0xd5, 0x18, 0xe3, 0x1e, 0x67, 0x20, 0x00, 0x00, 0x6e, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x0c, 0xe1, 0x0f, 0x00, 0x00 -.byte 0x1a, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb1, 0x13, 0x3b, 0x16, 0x23, 0x18, 0x7d, 0x1e, 0x13, 0x20, 0x00, 0x00, 0x40, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x00, 0x00, 0x9a, 0x0c, 0xc0, 0x0f, 0x00, 0x00, 0xf5, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x13, 0x0d, 0x16, 0xf1, 0x17, 0x3e, 0x1e, 0xd1, 0x1f, 0x00, 0x00, 0xf8, 0x22, 0x10, 0x27 -.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x0c, 0x80, 0x0f, 0x00, 0x00, 0xac, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x13, 0xb4, 0x15, 0x90, 0x17, 0xc3, 0x1d -.byte 0x50, 0x1f, 0x00, 0x00, 0x6a, 0x22, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0x0c, 0x24, 0x10, 0x00, 0x00, 0x67, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -.byte 0x04, 0x14, 0x99, 0x16, 0x89, 0x18, 0xfe, 0x1e, 0x9b, 0x20, 0x00, 0x00, 0xd6, 0x23, 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +#include "trap_data.inc" .global DungeonTrapsFoundTable DungeonTrapsFoundTable: -.byte 0xb8, 0x37, 0x4c, 0x08 -.byte 0xe0, 0x37, 0x4c, 0x08 -.byte 0x08, 0x38, 0x4c, 0x08 -.byte 0x30, 0x38, 0x4c, 0x08 -.byte 0x58, 0x38, 0x4c, 0x08 -.byte 0x80, 0x38, 0x4c, 0x08 -.byte 0xa8, 0x38, 0x4c, 0x08 -.byte 0xd0, 0x38, 0x4c, 0x08 -.byte 0xf8, 0x38, 0x4c, 0x08 -.byte 0x20, 0x39, 0x4c, 0x08 -.byte 0x48, 0x39, 0x4c, 0x08 -.byte 0x70, 0x39, 0x4c, 0x08 -.byte 0x98, 0x39, 0x4c, 0x08 -.byte 0xc0, 0x39, 0x4c, 0x08 -.byte 0xe8, 0x39, 0x4c, 0x08 -.byte 0x10, 0x3a, 0x4c, 0x08 -.byte 0x38, 0x3a, 0x4c, 0x08 -.byte 0x60, 0x3a, 0x4c, 0x08 -.byte 0x88, 0x3a, 0x4c, 0x08 -.byte 0xb0, 0x3a, 0x4c, 0x08 -.byte 0xd8, 0x3a, 0x4c, 0x08 -.byte 0x00, 0x3b, 0x4c, 0x08 -.byte 0x28, 0x3b, 0x4c, 0x08 -.byte 0x50, 0x3b, 0x4c, 0x08 -.byte 0x78, 0x3b, 0x4c, 0x08 -.byte 0xa0, 0x3b, 0x4c, 0x08 -.byte 0xc8, 0x3b, 0x4c, 0x08 -.byte 0xf0, 0x3b, 0x4c, 0x08 -.byte 0x18, 0x3c, 0x4c, 0x08 -.byte 0x40, 0x3c, 0x4c, 0x08 -.byte 0x68, 0x3c, 0x4c, 0x08 -.byte 0x90, 0x3c, 0x4c, 0x08 -.byte 0xb8, 0x3c, 0x4c, 0x08 -.byte 0xe0, 0x3c, 0x4c, 0x08 -.byte 0x08, 0x3d, 0x4c, 0x08 -.byte 0x30, 0x3d, 0x4c, 0x08 -.byte 0x58, 0x3d, 0x4c, 0x08 -.byte 0x80, 0x3d, 0x4c, 0x08 -.byte 0xa8, 0x3d, 0x4c, 0x08 -.byte 0xd0, 0x3d, 0x4c, 0x08 -.byte 0xf8, 0x3d, 0x4c, 0x08 -.byte 0x20, 0x3e, 0x4c, 0x08 -.byte 0x48, 0x3e, 0x4c, 0x08 -.byte 0x70, 0x3e, 0x4c, 0x08 -.byte 0x98, 0x3e, 0x4c, 0x08 -.byte 0xc0, 0x3e, 0x4c, 0x08 -.byte 0xe8, 0x3e, 0x4c, 0x08 -.byte 0x10, 0x3f, 0x4c, 0x08 -.byte 0x38, 0x3f, 0x4c, 0x08 -.byte 0x60, 0x3f, 0x4c, 0x08 -.byte 0x88, 0x3f, 0x4c, 0x08 -.byte 0xb0, 0x3f, 0x4c, 0x08 -.byte 0xd8, 0x3f, 0x4c, 0x08 -.byte 0x00, 0x40, 0x4c, 0x08 -.byte 0x28, 0x40, 0x4c, 0x08 -.byte 0x50, 0x40, 0x4c, 0x08 -.byte 0x78, 0x40, 0x4c, 0x08 -.byte 0xa0, 0x40, 0x4c, 0x08 -.byte 0xc8, 0x40, 0x4c, 0x08 -.byte 0xf0, 0x40, 0x4c, 0x08 -.byte 0x18, 0x41, 0x4c, 0x08 -.byte 0x40, 0x41, 0x4c, 0x08 -.byte 0x68, 0x41, 0x4c, 0x08 -.byte 0x90, 0x41, 0x4c, 0x08 -.byte 0xb8, 0x41, 0x4c, 0x08 -.byte 0xe0, 0x41, 0x4c, 0x08 -.byte 0x08, 0x42, 0x4c, 0x08 -.byte 0x30, 0x42, 0x4c, 0x08 -.byte 0x58, 0x42, 0x4c, 0x08 -.byte 0x80, 0x42, 0x4c, 0x08 -.byte 0xa8, 0x42, 0x4c, 0x08 -.byte 0xd0, 0x42, 0x4c, 0x08 -.byte 0xf8, 0x42, 0x4c, 0x08 -.byte 0x20, 0x43, 0x4c, 0x08 -.byte 0x48, 0x43, 0x4c, 0x08 -.byte 0x70, 0x43, 0x4c, 0x08 -.byte 0x98, 0x43, 0x4c, 0x08 -.byte 0xc0, 0x43, 0x4c, 0x08 -.byte 0xe8, 0x43, 0x4c, 0x08 -.byte 0x10, 0x44, 0x4c, 0x08 -.byte 0x38, 0x44, 0x4c, 0x08 -.byte 0x60, 0x44, 0x4c, 0x08 -.byte 0x88, 0x44, 0x4c, 0x08 -.byte 0xb0, 0x44, 0x4c, 0x08 -.byte 0xd8, 0x44, 0x4c, 0x08 -.byte 0x00, 0x45, 0x4c, 0x08 -.byte 0x28, 0x45, 0x4c, 0x08 -.byte 0x50, 0x45, 0x4c, 0x08 -.byte 0x78, 0x45, 0x4c, 0x08 -.byte 0xa0, 0x45, 0x4c, 0x08 -.byte 0xc8, 0x45, 0x4c, 0x08 -.byte 0xf0, 0x45, 0x4c, 0x08 -.byte 0x18, 0x46, 0x4c, 0x08 -.byte 0x40, 0x46, 0x4c, 0x08 -.byte 0x68, 0x46, 0x4c, 0x08 -.byte 0x90, 0x46, 0x4c, 0x08 -.byte 0xb8, 0x46, 0x4c, 0x08 -.byte 0xe0, 0x46, 0x4c, 0x08 -.byte 0x08, 0x47, 0x4c, 0x08 -.byte 0x30, 0x47, 0x4c, 0x08 -.byte 0x58, 0x47, 0x4c, 0x08 -.byte 0x80, 0x47, 0x4c, 0x08 -.byte 0xa8, 0x47, 0x4c, 0x08 -.byte 0xd0, 0x47, 0x4c, 0x08 -.byte 0xf8, 0x47, 0x4c, 0x08 -.byte 0x20, 0x48, 0x4c, 0x08 -.byte 0x48, 0x48, 0x4c, 0x08 -.byte 0x70, 0x48, 0x4c, 0x08 -.byte 0x98, 0x48, 0x4c, 0x08 -.byte 0xc0, 0x48, 0x4c, 0x08 -.byte 0xe8, 0x48, 0x4c, 0x08 -.byte 0x10, 0x49, 0x4c, 0x08 -.byte 0x38, 0x49, 0x4c, 0x08 -.byte 0x60, 0x49, 0x4c, 0x08 -.byte 0x88, 0x49, 0x4c, 0x08 -.byte 0xb0, 0x49, 0x4c, 0x08 -.byte 0xd8, 0x49, 0x4c, 0x08 -.byte 0x00, 0x4a, 0x4c, 0x08 -.byte 0x28, 0x4a, 0x4c, 0x08 -.byte 0x50, 0x4a, 0x4c, 0x08 -.byte 0x78, 0x4a, 0x4c, 0x08 -.byte 0xa0, 0x4a, 0x4c, 0x08 -.byte 0xc8, 0x4a, 0x4c, 0x08 -.byte 0xf0, 0x4a, 0x4c, 0x08 -.byte 0x18, 0x4b, 0x4c, 0x08 -.byte 0x40, 0x4b, 0x4c, 0x08 -.byte 0x68, 0x4b, 0x4c, 0x08 -.byte 0x90, 0x4b, 0x4c, 0x08 -.byte 0xb8, 0x4b, 0x4c, 0x08 -.byte 0xe0, 0x4b, 0x4c, 0x08 -.byte 0x08, 0x4c, 0x4c, 0x08 -.byte 0x30, 0x4c, 0x4c, 0x08 -.byte 0x58, 0x4c, 0x4c, 0x08 -.byte 0x80, 0x4c, 0x4c, 0x08 -.byte 0xa8, 0x4c, 0x4c, 0x08 -.byte 0xd0, 0x4c, 0x4c, 0x08 -.byte 0xf8, 0x4c, 0x4c, 0x08 -.byte 0x20, 0x4d, 0x4c, 0x08 -.byte 0x48, 0x4d, 0x4c, 0x08 -.byte 0x70, 0x4d, 0x4c, 0x08 -.byte 0x98, 0x4d, 0x4c, 0x08 -.byte 0xc0, 0x4d, 0x4c, 0x08 -.byte 0xe8, 0x4d, 0x4c, 0x08 -.byte 0x10, 0x4e, 0x4c, 0x08 -.byte 0x38, 0x4e, 0x4c, 0x08 -.byte 0x60, 0x4e, 0x4c, 0x08 -.byte 0x88, 0x4e, 0x4c, 0x08 -.byte 0xb0, 0x4e, 0x4c, 0x08 +.4byte trap_found_out0 +.4byte trap_found_out1 +.4byte trap_found_out2 +.4byte trap_found_out3 +.4byte trap_found_out4 +.4byte trap_found_out5 +.4byte trap_found_out6 +.4byte trap_found_out7 +.4byte trap_found_out8 +.4byte trap_found_out9 +.4byte trap_found_out10 +.4byte trap_found_out11 +.4byte trap_found_out12 +.4byte trap_found_out13 +.4byte trap_found_out14 +.4byte trap_found_out15 +.4byte trap_found_out16 +.4byte trap_found_out17 +.4byte trap_found_out18 +.4byte trap_found_out19 +.4byte trap_found_out20 +.4byte trap_found_out21 +.4byte trap_found_out22 +.4byte trap_found_out23 +.4byte trap_found_out24 +.4byte trap_found_out25 +.4byte trap_found_out26 +.4byte trap_found_out27 +.4byte trap_found_out28 +.4byte trap_found_out29 +.4byte trap_found_out30 +.4byte trap_found_out31 +.4byte trap_found_out32 +.4byte trap_found_out33 +.4byte trap_found_out34 +.4byte trap_found_out35 +.4byte trap_found_out36 +.4byte trap_found_out37 +.4byte trap_found_out38 +.4byte trap_found_out39 +.4byte trap_found_out40 +.4byte trap_found_out41 +.4byte trap_found_out42 +.4byte trap_found_out43 +.4byte trap_found_out44 +.4byte trap_found_out45 +.4byte trap_found_out46 +.4byte trap_found_out47 +.4byte trap_found_out48 +.4byte trap_found_out49 +.4byte trap_found_out50 +.4byte trap_found_out51 +.4byte trap_found_out52 +.4byte trap_found_out53 +.4byte trap_found_out54 +.4byte trap_found_out55 +.4byte trap_found_out56 +.4byte trap_found_out57 +.4byte trap_found_out58 +.4byte trap_found_out59 +.4byte trap_found_out60 +.4byte trap_found_out61 +.4byte trap_found_out62 +.4byte trap_found_out63 +.4byte trap_found_out64 +.4byte trap_found_out65 +.4byte trap_found_out66 +.4byte trap_found_out67 +.4byte trap_found_out68 +.4byte trap_found_out69 +.4byte trap_found_out70 +.4byte trap_found_out71 +.4byte trap_found_out72 +.4byte trap_found_out73 +.4byte trap_found_out74 +.4byte trap_found_out75 +.4byte trap_found_out76 +.4byte trap_found_out77 +.4byte trap_found_out78 +.4byte trap_found_out79 +.4byte trap_found_out80 +.4byte trap_found_out81 +.4byte trap_found_out82 +.4byte trap_found_out83 +.4byte trap_found_out84 +.4byte trap_found_out85 +.4byte trap_found_out86 +.4byte trap_found_out87 +.4byte trap_found_out88 +.4byte trap_found_out89 +.4byte trap_found_out90 +.4byte trap_found_out91 +.4byte trap_found_out92 +.4byte trap_found_out93 +.4byte trap_found_out94 +.4byte trap_found_out95 +.4byte trap_found_out96 +.4byte trap_found_out97 +.4byte trap_found_out98 +.4byte trap_found_out99 +.4byte trap_found_out100 +.4byte trap_found_out101 +.4byte trap_found_out102 +.4byte trap_found_out103 +.4byte trap_found_out104 +.4byte trap_found_out105 +.4byte trap_found_out106 +.4byte trap_found_out107 +.4byte trap_found_out108 +.4byte trap_found_out109 +.4byte trap_found_out110 +.4byte trap_found_out111 +.4byte trap_found_out112 +.4byte trap_found_out113 +.4byte trap_found_out114 +.4byte trap_found_out115 +.4byte trap_found_out116 +.4byte trap_found_out117 +.4byte trap_found_out118 +.4byte trap_found_out119 +.4byte trap_found_out120 +.4byte trap_found_out121 +.4byte trap_found_out122 +.4byte trap_found_out123 +.4byte trap_found_out124 +.4byte trap_found_out125 +.4byte trap_found_out126 +.4byte trap_found_out127 +.4byte trap_found_out128 +.4byte trap_found_out129 +.4byte trap_found_out130 +.4byte trap_found_out131 +.4byte trap_found_out132 +.4byte trap_found_out133 +.4byte trap_found_out134 +.4byte trap_found_out135 +.4byte trap_found_out136 +.4byte trap_found_out137 +.4byte trap_found_out138 +.4byte trap_found_out139 +.4byte trap_found_out140 +.4byte trap_found_out141 +.4byte trap_found_out142 +.4byte trap_found_out143 +.4byte trap_found_out144 +.4byte trap_found_out145 +.4byte trap_found_out146 +.4byte trap_found_out147 + diff --git a/dungeon_trap.mk b/dungeon_trap.mk new file mode 100755 index 000000000..60cee9b2d --- /dev/null +++ b/dungeon_trap.mk @@ -0,0 +1,11 @@ +# Dungeon trap data + +DUNGEONS_DIR = $(DATA_ASM_SUBDIR)/dungeon + +DUNGEON_TRAP = $(DUNGEONS_DIR)/trap_data.inc + +dungeon_trap: $(DUNGEON_TRAP); + +$(DUNGEON_TRAP): $(DUNGEONS_DIR)/trap_data.json + $(DUNGEONJSON) trap pmd-red $< + diff --git a/tools/dungeonjson/dungeonjson.cpp b/tools/dungeonjson/dungeonjson.cpp index d11c39c8a..ee13581be 100644 --- a/tools/dungeonjson/dungeonjson.cpp +++ b/tools/dungeonjson/dungeonjson.cpp @@ -292,6 +292,215 @@ string generate_pokemon_table_text(Json map_data) { return text.str(); } +string generate_trap_table_text(Json map_data) { + + ostringstream text; + int probability_total; + + text << "@ This is auto-generated by trap_found.json.\n"; + + + for (Json data_entry : map_data.array_items()) { + probability_total = 0; + + text << ".global " << data_entry["name"].string_value() << "\n"; + text << data_entry["name"].string_value() << ":\n"; + + text << ".2byte "; + + + probability_total += data_entry["traps"]["Trip Trap"].int_value(); + if(data_entry["traps"]["Trip Trap"].int_value() == 0) + { + text << "0x00"; + } + else + { + text << probability_total; + } + probability_total += data_entry["traps"]["Mud Trap"].int_value(); + if(data_entry["traps"]["Mud Trap"].int_value() == 0) + { + text << ", " << "0x00"; + } + else + { + text << ", " << probability_total; + } + probability_total += data_entry["traps"]["Sticky Trap"].int_value(); + if(data_entry["traps"]["Sticky Trap"].int_value() == 0) + { + text << ", " << "0x00"; + } + else + { + text << ", " << probability_total; + } + probability_total += data_entry["traps"]["Grimy Trap"].int_value(); + if(data_entry["traps"]["Grimy Trap"].int_value() == 0) + { + text << ", " << "0x00"; + } + else + { + text << ", " << probability_total; + } + probability_total += data_entry["traps"]["Summon Trap"].int_value(); + if(data_entry["traps"]["Summon Trap"].int_value() == 0) + { + text << ", " << "0x00"; + } + else + { + text << ", " << probability_total; + } + probability_total += data_entry["traps"]["Pitfall Trap"].int_value(); + if(data_entry["traps"]["Pitfall Trap"].int_value() == 0) + { + text << ", " << "0x00"; + } + else + { + text << ", " << probability_total; + } + probability_total += data_entry["traps"]["Warp Trap"].int_value(); + if(data_entry["traps"]["Warp Trap"].int_value() == 0) + { + text << ", " << "0x00"; + } + else + { + text << ", " << probability_total; + } + probability_total += data_entry["traps"]["Gust Trap"].int_value(); + if(data_entry["traps"]["Gust Trap"].int_value() == 0) + { + text << ", " << "0x00"; + } + else + { + text << ", " << probability_total; + } + probability_total += data_entry["traps"]["Spin Trap"].int_value(); + if(data_entry["traps"]["Spin Trap"].int_value() == 0) + { + text << ", " << "0x00"; + } + else + { + text << ", " << probability_total; + } + + probability_total += data_entry["traps"]["Slumber Trap"].int_value(); + if(data_entry["traps"]["Slumber Trap"].int_value() == 0) + { + text << ", " << "0x00"; + } + else + { + text << ", " << probability_total; + } + probability_total += data_entry["traps"]["Slow Trap"].int_value(); + if(data_entry["traps"]["Slow Trap"].int_value() == 0) + { + text << ", " << "0x00"; + } + else + { + text << ", " << probability_total; + } + probability_total += data_entry["traps"]["Seal Trap"].int_value(); + if(data_entry["traps"]["Seal Trap"].int_value() == 0) + { + text << ", " << "0x00"; + } + else + { + text << ", " << probability_total; + } + probability_total += data_entry["traps"]["Poison Trap"].int_value(); + if(data_entry["traps"]["Poison Trap"].int_value() == 0) + { + text << ", " << "0x00"; + } + else + { + text << ", " << probability_total; + } + probability_total += data_entry["traps"]["Selfdestruct Trap"].int_value(); + if(data_entry["traps"]["Selfdestruct Trap"].int_value() == 0) + { + text << ", " << "0x00"; + } + else + { + text << ", " << probability_total; + } + probability_total += data_entry["traps"]["Explosion Trap"].int_value(); + if(data_entry["traps"]["Explosion Trap"].int_value() == 0) + { + text << ", " << "0x00"; + } + else + { + text << ", " << probability_total; + } + probability_total += data_entry["traps"]["PP-Zero Trap"].int_value(); + if(data_entry["traps"]["PP-Zero Trap"].int_value() == 0) + { + text << ", " << "0x00"; + } + else + { + text << ", " << probability_total; + } + probability_total += data_entry["traps"]["Chestnut Trap"].int_value(); + if(data_entry["traps"]["Chestnut Trap"].int_value() == 0) + { + text << ", " << "0x00"; + } + else + { + text << ", " << probability_total; + } + probability_total += data_entry["traps"]["Wonder Tile"].int_value(); + if(data_entry["traps"]["Wonder Tile"].int_value() == 0) + { + text << ", " << "0x00"; + } + else + { + text << ", " << probability_total; + } + probability_total += data_entry["traps"]["Pokemon Trap"].int_value(); + if(data_entry["traps"]["Pokemon Trap"].int_value() == 0) + { + text << ", " << "0x00"; + } + else + { + text << ", " << probability_total; + } + probability_total += data_entry["traps"]["Spiked Tile"].int_value(); + if(data_entry["traps"]["Spiked Tile"].int_value() == 0) + { + text << ", " << "0x00"; + } + else + { + text << ", " << probability_total; + } + + + // Append null entry to end + text << "\n"; + } + text << TABLE_END; + + return text.str(); +} + + string generate_floorID_table_text(Json map_data) { ostringstream text; @@ -804,8 +1013,10 @@ int main(int argc, char *argv[]) { process_json(filepath, "item_data.inc", generate_item_data_text); } else if (mode == "move") { process_json(filepath, "move_data.inc", generate_move_data_text); + } else if (mode == "trap") { + process_json(filepath, "trap_data.inc", generate_trap_table_text); } else { - FATAL_ERROR("ERROR: must be 'layouts', 'map', 'groups', 'dungeon', 'floor', 'species', 'item', or 'move'.\n"); + FATAL_ERROR("ERROR: must be 'layouts', 'map', 'groups', 'dungeon', 'floor', 'species', 'item', 'move', or 'trap'.\n"); } }