diff options
author | PikalaxALT <PikalaxALT@users.noreply.github.com> | 2019-10-31 09:31:33 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-31 09:31:33 -0400 |
commit | c6cd74fed25cbb6e2fa0296960fbcda795311b06 (patch) | |
tree | 05ae3de2bc0130040d48e800fe4e962f2a818aef | |
parent | 922411abebd56d0f5d6072bad4924c909c8e2c27 (diff) | |
parent | 2b0bcdcad9336defc82f50a329b12e631b1f33ce (diff) |
Merge pull request #120 from PikalaxALT/trade
Trade
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | asm/battle_tower.s | 4 | ||||
-rw-r--r-- | asm/cable_club.s | 12 | ||||
-rw-r--r-- | asm/evolution_scene.s | 34 | ||||
-rw-r--r-- | asm/link_rfu_3.s | 14 | ||||
-rw-r--r-- | asm/party_menu.s | 32 | ||||
-rw-r--r-- | asm/pokeball.s | 6 | ||||
-rw-r--r-- | asm/pokemon_storage_system.s | 12 | ||||
-rw-r--r-- | asm/pokemon_summary_screen.s | 10 | ||||
-rw-r--r-- | asm/trade.s | 15329 | ||||
-rw-r--r-- | asm/union_room_chat.s | 4 | ||||
-rw-r--r-- | baserom.ips | bin | 553618 -> 537206 bytes | |||
-rw-r--r-- | constants/constants.inc | 2 | ||||
-rw-r--r-- | constants/trainer_constants.inc | 243 | ||||
-rw-r--r-- | data/data_83FECCC.s | 10 | ||||
-rw-r--r-- | data/graphics.s | 26 | ||||
-rw-r--r-- | data/ingame_trades.inc | 174 | ||||
-rw-r--r-- | data/strings.s | 41 | ||||
-rw-r--r-- | data/trade.s | 997 | ||||
-rw-r--r-- | data/trade/unk_8264C1C.png | bin | 203 -> 0 bytes | |||
-rw-r--r-- | data/trade/unk_8264E1C.png | bin | 205 -> 0 bytes | |||
-rw-r--r-- | data/trade/unk_826501C.png | bin | 183 -> 0 bytes | |||
-rw-r--r-- | data/trade/unk_826701C.png | bin | 1833 -> 0 bytes | |||
-rw-r--r-- | data/trade/unk_826C60C.bin | bin | 2048 -> 0 bytes | |||
-rw-r--r-- | graphics/trade/ball.png (renamed from data/trade/unk_826207C.png) | bin | 477 -> 464 bytes | |||
-rw-r--r-- | graphics/trade/black.pal (renamed from data/trade/unk_826BF5C.pal) | 0 | ||||
-rw-r--r-- | graphics/trade/buttons.png | bin | 0 -> 227 bytes | |||
-rw-r--r-- | graphics/trade/cable_closeup_map.bin (renamed from data/trade/unk_826407C.bin) | bin | 2048 -> 2048 bytes | |||
-rw-r--r-- | graphics/trade/cable_end.png | bin | 0 -> 194 bytes | |||
-rw-r--r-- | graphics/trade/gba.pal (renamed from data/trade/unk_826499C.pal) | 0 | ||||
-rw-r--r-- | graphics/trade/gba_affine.png | bin | 0 -> 1897 bytes | |||
-rw-r--r-- | graphics/trade/gba_affine_map_cable.bin (renamed from data/trade/unk_826985C.bin) | bin | 256 -> 256 bytes | |||
-rw-r--r-- | graphics/trade/gba_affine_map_wireless.bin (renamed from data/trade/unk_826995C.bin) | bin | 256 -> 256 bytes | |||
-rw-r--r-- | graphics/trade/gba_map_cable.bin (renamed from data/trade/unk_826AA5C.bin) | bin | 4096 -> 4096 bytes | |||
-rw-r--r-- | graphics/trade/gba_map_wireless.bin (renamed from data/trade/unk_8269A5C.bin) | bin | 4096 -> 4096 bytes | |||
-rw-r--r-- | graphics/trade/gba_screen.png | bin | 0 -> 170 bytes | |||
-rw-r--r-- | graphics/trade/glow1.png (renamed from data/trade/unk_8264A1C.png) | bin | 208 -> 195 bytes | |||
-rw-r--r-- | graphics/trade/glow2.png | bin | 0 -> 190 bytes | |||
-rw-r--r-- | graphics/trade/menu.pal | 51 | ||||
-rw-r--r-- | graphics/trade/menu.png | bin | 0 -> 609 bytes | |||
-rw-r--r-- | graphics/trade/menu_mon_box.bin | bin | 0 -> 36 bytes | |||
-rw-r--r-- | graphics/trade/misc.pal | 19 | ||||
-rw-r--r-- | graphics/trade/moves_box_map.bin (renamed from data/trade/unk_8260834.bin) | bin | 510 -> 510 bytes | |||
-rw-r--r-- | graphics/trade/party_box_map.bin (renamed from data/trade/unk_8260A32.bin) | bin | 510 -> 510 bytes | |||
-rw-r--r-- | graphics/trade/pokeball.png | bin | 0 -> 464 bytes | |||
-rw-r--r-- | graphics/trade/pokeball_symbol.png | bin | 0 -> 1569 bytes | |||
-rw-r--r-- | graphics/trade/pokeball_symbol_map.bin | bin | 0 -> 256 bytes | |||
-rw-r--r-- | graphics/trade/shadow.pal | 19 | ||||
-rw-r--r-- | graphics/trade/shadow_map.bin (renamed from data/trade/unk_826601C.bin) | bin | 4096 -> 4096 bytes | |||
-rw-r--r-- | graphics/trade/stripes_bg2_map.bin (renamed from data/trade/unk_8260C30.bin) | 0 | ||||
-rw-r--r-- | graphics/trade/stripes_bg3_map.bin (renamed from data/trade/unk_8261430.bin) | 0 | ||||
-rw-r--r-- | graphics/trade/text.pal (renamed from data/trade/unk_8261CE0.pal) | 0 | ||||
-rw-r--r-- | graphics/trade/unknown_3308C0.pal | 19 | ||||
-rw-r--r-- | graphics/trade/unknown_338EA4.pal | 15 | ||||
-rw-r--r-- | graphics/trade/unknown_DDB444.pal | 19 | ||||
-rw-r--r-- | graphics/trade/unknown_DDCF04.bin | bin | 0 -> 2048 bytes | |||
-rw-r--r-- | graphics/trade/wireless_signal_receive.pal (renamed from data/trade/unk_826BD5C.pal) | 0 | ||||
-rw-r--r-- | graphics/trade/wireless_signal_send.pal (renamed from data/trade/unk_826BB5C.pal) | 0 | ||||
-rw-r--r-- | graphics/unused/unused_DDCEE4.bin | bin | 0 -> 32 bytes | |||
-rw-r--r-- | include/berry_powder.h | 1 | ||||
-rw-r--r-- | include/constants/flags.h | 8 | ||||
-rw-r--r-- | include/constants/region_map.h | 2 | ||||
-rw-r--r-- | include/decompress.h | 2 | ||||
-rw-r--r-- | include/gba/defines.h | 1 | ||||
-rw-r--r-- | include/graphics.h | 8 | ||||
-rw-r--r-- | include/international_string_util.h | 25 | ||||
-rw-r--r-- | include/item.h | 2 | ||||
-rw-r--r-- | include/link.h | 8 | ||||
-rw-r--r-- | include/link_rfu.h | 2 | ||||
-rw-r--r-- | include/load_save.h | 4 | ||||
-rw-r--r-- | include/mevent.h | 1 | ||||
-rw-r--r-- | include/overworld.h | 3 | ||||
-rw-r--r-- | include/party_menu.h | 2 | ||||
-rw-r--r-- | include/pokeball.h | 2 | ||||
-rw-r--r-- | include/pokemon_icon.h | 11 | ||||
-rw-r--r-- | include/pokemon_storage_system.h | 1 | ||||
-rw-r--r-- | include/pokemon_summary_screen.h | 4 | ||||
-rw-r--r-- | include/quest_log.h | 1 | ||||
-rw-r--r-- | include/save_failed_screen.h | 6 | ||||
-rw-r--r-- | include/strings.h | 26 | ||||
-rw-r--r-- | include/trade.h | 5 | ||||
-rw-r--r-- | include/trade_scene.h | 17 | ||||
-rw-r--r-- | include/util.h | 3 | ||||
-rw-r--r-- | ld_script.txt | 6 | ||||
-rw-r--r-- | src/battle_main.c | 1 | ||||
-rw-r--r-- | src/data/ingame_trades.h | 144 | ||||
-rw-r--r-- | src/daycare.c | 8 | ||||
-rw-r--r-- | src/load_save.c | 15 | ||||
-rw-r--r-- | src/oak_speech.c | 2 | ||||
-rw-r--r-- | src/pokemon.c | 8 | ||||
-rw-r--r-- | src/random.c | 6 | ||||
-rw-r--r-- | src/save.c | 13 | ||||
-rw-r--r-- | src/start_menu.c | 4 | ||||
-rw-r--r-- | src/trade.c | 4502 | ||||
-rw-r--r-- | src/trade_scene.c | 2874 | ||||
-rw-r--r-- | sym_bss.txt | 7 | ||||
-rw-r--r-- | sym_ewram.txt | 69 |
97 files changed, 7909 insertions, 16988 deletions
diff --git a/.gitignore b/.gitignore index 359d15abf..176611d4a 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,4 @@ tools/br_ips/ips_patch types_*.taghl !.travis/calcrom/calcrom.pl !sound/programmable_wave_samples/*.pcm +_Deparsed_XSubs.pm diff --git a/asm/battle_tower.s b/asm/battle_tower.s index eddc03f83..fe6aac664 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -2832,7 +2832,7 @@ _080E6F68: ldrb r1, [r0] movs r0, 0x64 muls r0, r1 - ldr r1, _080E6FB4 @ =gUnknown_2024220 + ldr r1, _080E6FB4 @ =gEnemyParty + 500 @ &gEnemyParty[5] adds r0, r1 movs r1, 0x2C muls r1, r4 @@ -2855,7 +2855,7 @@ _080E6FA4: .4byte gSaveBlock2Ptr _080E6FA8: .4byte gSaveBlock1Ptr _080E6FAC: .4byte 0x00002cac _080E6FB0: .4byte 0x0000056d -_080E6FB4: .4byte gUnknown_2024220 +_080E6FB4: .4byte gEnemyParty + 500 @ &gEnemyParty[5] thumb_func_end sub_80E6EE0 thumb_func_start SaveBattleTowerProgress diff --git a/asm/cable_club.s b/asm/cable_club.s index 01aa8d217..d19bb3a35 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -2193,7 +2193,7 @@ _08081894: .align 2, 0 _080818A4: .4byte gPaletteFade _080818A8: - ldr r1, _080818C0 @ =gUnknown_2031DA4 + ldr r1, _080818C0 @ =gSelectedTradeMonPositions movs r0, 0 strb r0, [r1] strb r0, [r1, 0x1] @@ -2205,13 +2205,13 @@ _080818B8: strh r0, [r4, 0x8] b _080818D8 .align 2, 0 -_080818C0: .4byte gUnknown_2031DA4 +_080818C0: .4byte gSelectedTradeMonPositions _080818C4: ldr r0, _080818E0 @ =gReceivedRemoteLinkPlayers ldrb r0, [r0] cmp r0, 0 bne _080818D8 - ldr r0, _080818E4 @ =sub_804C718 + ldr r0, _080818E4 @ =CB2_ReturnFromLinkTrade bl SetMainCallback2 adds r0, r5, 0 bl DestroyTask @@ -2221,7 +2221,7 @@ _080818D8: bx r0 .align 2, 0 _080818E0: .4byte gReceivedRemoteLinkPlayers -_080818E4: .4byte sub_804C718 +_080818E4: .4byte CB2_ReturnFromLinkTrade thumb_func_end sub_8081850 thumb_func_start sub_80818E8 @@ -2269,7 +2269,7 @@ _0808192C: .align 2, 0 _0808193C: .4byte gPaletteFade _08081940: - ldr r1, _08081958 @ =gUnknown_2031DA4 + ldr r1, _08081958 @ =gSelectedTradeMonPositions movs r0, 0 strb r0, [r1] strb r0, [r1, 0x1] @@ -2281,7 +2281,7 @@ _08081950: strh r0, [r4] b _08081970 .align 2, 0 -_08081958: .4byte gUnknown_2031DA4 +_08081958: .4byte gSelectedTradeMonPositions _0808195C: bl IsLinkTaskFinished lsls r0, 24 diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index b718deee6..dac85320e 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -738,7 +738,7 @@ _080CE3D8: .4byte nullsub_76 _080CE3DC: .4byte sub_80D00D8 _080CE3E0: .4byte gMain _080CE3E4: - bl sub_80544FC + bl LoadTradeAnimGfx b _080CE4EC _080CE3EA: movs r0, 0x20 @@ -2817,7 +2817,7 @@ _080CF620: movs r0, 0 adds r1, r4, 0 movs r2, 0x1 - bl sub_8054508 + bl DrawTextOnTradeWindow ldr r0, _080CF648 @ =gTasks adds r1, r7, r6 lsls r1, 3 @@ -3110,7 +3110,7 @@ _080CF8A8: movs r0, 0 adds r1, r4, 0 movs r2, 0x1 - bl sub_8054508 + bl DrawTextOnTradeWindow ldr r0, _080CF91C @ =0x00000103 bl PlayFanfare ldr r2, _080CF920 @ =gTasks @@ -3222,7 +3222,7 @@ _080CF9AC: ldr r1, _080CF9C8 @ =gUnknown_841E325 movs r0, 0 movs r2, 0x1 - bl sub_8054508 + bl DrawTextOnTradeWindow ldr r0, _080CF9CC @ =gTasks adds r1, r7, r6 lsls r1, 3 @@ -3341,7 +3341,7 @@ _080CFAA8: movs r0, 0 adds r1, r4, 0 movs r2, 0x1 - bl sub_8054508 + bl DrawTextOnTradeWindow ldr r1, _080CFAD4 @ =gTasks adds r0, r7, r6 lsls r0, 3 @@ -3376,7 +3376,7 @@ _080CFAF2: ldr r1, _080CFB2C @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 - bl sub_8054508 + bl DrawTextOnTradeWindow ldr r0, _080CFB30 @ =gTasks adds r1, r7, r6 lsls r1, 3 @@ -3477,7 +3477,7 @@ _080CFBDA: ldr r1, _080CFC04 @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 - bl sub_8054508 + bl DrawTextOnTradeWindow ldr r0, _080CFC08 @ =gTasks adds r1, r7, r6 lsls r1, 3 @@ -3509,7 +3509,7 @@ _080CFC26: ldr r1, _080CFC4C @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 - bl sub_8054508 + bl DrawTextOnTradeWindow ldr r0, _080CFC50 @ =gTasks adds r1, r7, r6 lsls r1, 3 @@ -3537,7 +3537,7 @@ _080CFC54: ldr r1, _080CFCEC @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 - bl sub_8054508 + bl DrawTextOnTradeWindow ldr r0, _080CFCF0 @ =gTasks adds r1, r7, r6 lsls r1, 3 @@ -3625,7 +3625,7 @@ _080CFD1C: ldr r1, _080CFD68 @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 - bl sub_8054508 + bl DrawTextOnTradeWindow ldr r1, _080CFD6C @ =gTasks adds r0, r7, r6 lsls r0, 3 @@ -3665,7 +3665,7 @@ _080CFD70: ldr r1, _080CFDA4 @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 - bl sub_8054508 + bl DrawTextOnTradeWindow ldr r1, _080CFDA8 @ =gTasks adds r0, r7, r6 lsls r0, 3 @@ -3782,7 +3782,7 @@ _080CFE74: ldr r1, _080CFEB8 @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 - bl sub_8054508 + bl DrawTextOnTradeWindow ldr r1, _080CFEBC @ =gTasks adds r0, r7, r6 lsls r0, 3 @@ -3825,7 +3825,7 @@ _080CFEC0: ldr r1, _080CFF20 @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 - bl sub_8054508 + bl DrawTextOnTradeWindow ldr r0, _080CFF24 @ =gTasks adds r1, r7, r6 lsls r1, 3 @@ -3859,7 +3859,7 @@ _080CFF42: ldr r1, _080CFF68 @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 - bl sub_8054508 + bl DrawTextOnTradeWindow ldr r0, _080CFF6C @ =gTasks adds r1, r7, r6 lsls r1, 3 @@ -3890,7 +3890,7 @@ _080CFF70: ldr r1, _080CFFB0 @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 - bl sub_8054508 + bl DrawTextOnTradeWindow ldr r1, _080CFFB4 @ =gTasks adds r0, r7, r6 lsls r0, 3 @@ -3909,7 +3909,7 @@ _080CFFB8: ldr r1, _080CFFE4 @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 - bl sub_8054508 + bl DrawTextOnTradeWindow ldr r1, _080CFFE8 @ =gTasks adds r0, r7, r6 lsls r0, 3 @@ -3932,7 +3932,7 @@ _080CFFEC: ldr r1, _080D0010 @ =gDisplayedStringBattle movs r0, 0 movs r2, 0x1 - bl sub_8054508 + bl DrawTextOnTradeWindow ldr r1, _080D0014 @ =gTasks adds r0, r7, r6 lsls r0, 3 diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index 9fc1f72cc..63a894247 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -2939,7 +2939,7 @@ sub_8117100: @ 8117100 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl sub_804C718 + bl CB2_ReturnFromLinkTrade adds r0, r4, 0 bl DestroyTask pop {r4} @@ -3070,7 +3070,7 @@ _08117210: lsrs r0, 24 cmp r0, 0x3 bne _0811725C - ldr r4, _08117268 @ =gUnknown_2031CCC + ldr r4, _08117268 @ =gLinkPartnerMail bl GetMultiplayerId adds r1, r0, 0 movs r0, 0x1 @@ -3083,14 +3083,14 @@ _08117210: movs r2, 0xD8 bl memcpy bl ResetBlockReceivedFlags - ldr r1, _08117270 @ =gUnknown_2031DA4 + ldr r1, _08117270 @ =gSelectedTradeMonPositions strb r7, [r1] movs r0, 0x6 strb r0, [r1, 0x1] ldr r1, _08117274 @ =gMain ldr r0, _08117278 @ =CB2_ReturnToField str r0, [r1, 0x8] - ldr r0, _0811727C @ =sub_8050138 + ldr r0, _0811727C @ =CB2_InitTradeAnim_LinkTrade bl SetMainCallback2 mov r0, r8 bl sub_811B148 @@ -3103,12 +3103,12 @@ _0811725C: pop {r0} bx r0 .align 2, 0 -_08117268: .4byte gUnknown_2031CCC +_08117268: .4byte gLinkPartnerMail _0811726C: .4byte gBlockRecvBuffer -_08117270: .4byte gUnknown_2031DA4 +_08117270: .4byte gSelectedTradeMonPositions _08117274: .4byte gMain _08117278: .4byte CB2_ReturnToField -_0811727C: .4byte sub_8050138 +_0811727C: .4byte CB2_InitTradeAnim_LinkTrade thumb_func_end sub_8117130 thumb_func_start sub_8117280 diff --git a/asm/party_menu.s b/asm/party_menu.s index 25befd61d..43a7a6e31 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -364,7 +364,7 @@ _0811ED14: _0811ED30: .4byte gUnknown_203B0A0 _0811ED34: .4byte gUnknown_203B09C _0811ED38: - bl sub_8122550 + bl LoadHeldItemIcons b _0811EDFC _0811ED3E: bl sub_8122860 @@ -3033,7 +3033,7 @@ _081201C0: lsrs r6, r0, 29 cmp r6, 0x3 bne _081201F0 - ldr r0, _081201EC @ =gUnknown_20243B0 + ldr r0, _081201EC @ =gPlayerParty + 300 @ &gPlayerParty[3] movs r1, 0xB bl GetMonData cmp r0, 0 @@ -3042,12 +3042,12 @@ _081201C0: b _08120290 .align 2, 0 _081201E8: .4byte gUnknown_203B09C -_081201EC: .4byte gUnknown_20243B0 +_081201EC: .4byte gPlayerParty + 300 @ &gPlayerParty[3] _081201F0: - ldr r0, _081201F4 @ =gUnknown_202434C + ldr r0, _081201F4 @ =gPlayerParty + 200 @ &gPlayerParty[2] b _0812020C .align 2, 0 -_081201F4: .4byte gUnknown_202434C +_081201F4: .4byte gPlayerParty + 200 @ &gPlayerParty[2] _081201F8: cmp r0, 0x1 bne _08120290 @@ -3058,7 +3058,7 @@ _081201F8: lsrs r5, r0, 29 cmp r5, 0x5 bne _08120224 - ldr r0, _08120220 @ =gUnknown_2024478 + ldr r0, _08120220 @ =gPlayerParty + 500 @ &gPlayerParty[5] _0812020C: movs r1, 0xB bl GetMonData @@ -3068,9 +3068,9 @@ _0812020C: b _08120290 .align 2, 0 _0812021C: .4byte gUnknown_203B09C -_08120220: .4byte gUnknown_2024478 +_08120220: .4byte gPlayerParty + 500 @ &gPlayerParty[5] _08120224: - ldr r0, _08120234 @ =gUnknown_2024414 + ldr r0, _08120234 @ =gPlayerParty + 400 @ &gPlayerParty[4] movs r1, 0xB bl GetMonData cmp r0, 0 @@ -3078,7 +3078,7 @@ _08120224: movs r0, 0x4 b _0812028E .align 2, 0 -_08120234: .4byte gUnknown_2024414 +_08120234: .4byte gPlayerParty + 400 @ &gPlayerParty[4] _08120238: ldrb r1, [r4] subs r0, r1, 0x2 @@ -7598,8 +7598,8 @@ _08122544: _0812254C: .4byte gSprites thumb_func_end sub_81224D0 - thumb_func_start sub_8122550 -sub_8122550: @ 8122550 + thumb_func_start LoadHeldItemIcons +LoadHeldItemIcons: @ 8122550 push {lr} ldr r0, _08122564 @ =gUnknown_845A42C bl LoadSpriteSheet @@ -7610,7 +7610,7 @@ sub_8122550: @ 8122550 .align 2, 0 _08122564: .4byte gUnknown_845A42C _08122568: .4byte gUnknown_845A434 - thumb_func_end sub_8122550 + thumb_func_end LoadHeldItemIcons thumb_func_start sub_812256C sub_812256C: @ 812256C @@ -8681,7 +8681,7 @@ _08122D8C: ldr r3, _08122DB8 @ =sub_8122DBC movs r4, 0 str r4, [sp] - bl sub_81344F8 + bl ShowPokemonSummaryScreen add sp, 0x4 pop {r4} pop {r0} @@ -11407,7 +11407,7 @@ sub_8124384: @ 8124384 adds r1, r6, 0 adds r2, r5, 0 adds r3, r4, 0 - bl sub_804FCE0 + bl Trade_CanTradeSelectedMon cmp r0, 0x1 beq _08124418 cmp r0, 0x2 @@ -18129,7 +18129,7 @@ _08127A80: .4byte sub_811FB28 sub_8127A84: @ 8127A84 push {r4,lr} adds r4, r0, 0 - ldr r0, _08127AA4 @ =gUnknown_20242E8 + ldr r0, _08127AA4 @ =gPlayerParty + 100 @ &gPlayerParty[1] movs r1, 0xB bl GetMonData cmp r0, 0 @@ -18143,7 +18143,7 @@ _08127AA0: movs r0, 0x7 b _08127ABA .align 2, 0 -_08127AA4: .4byte gUnknown_20242E8 +_08127AA4: .4byte gPlayerParty + 100 @ &gPlayerParty[1] _08127AA8: ldr r0, _08127AB4 @ =gUnknown_203B0A0 ldrb r0, [r0, 0xB] diff --git a/asm/pokeball.s b/asm/pokeball.s index fa1f4eee0..ed9eea832 100644 --- a/asm/pokeball.s +++ b/asm/pokeball.s @@ -2327,8 +2327,8 @@ _0804BB90: bx r0 thumb_func_end sub_804BAA4 - thumb_func_start sub_804BB98 -sub_804BB98: @ 804BB98 + thumb_func_start CreateTradePokeballSprite +CreateTradePokeballSprite: @ 804BB98 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -2414,7 +2414,7 @@ _0804BC40: .4byte gUnknown_82605CC _0804BC44: .4byte gUnknown_82606F4 _0804BC48: .4byte gSprites _0804BC4C: .4byte sub_804BC50 - thumb_func_end sub_804BB98 + thumb_func_end CreateTradePokeballSprite thumb_func_start sub_804BC50 sub_804BC50: @ 804BC50 diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index ec0e9e53c..df7c4fbce 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -719,8 +719,8 @@ _0808BEA8: bx r1 thumb_func_end sub_808BDE8 - thumb_func_start sub_808BEB4 -sub_808BEB4: @ 808BEB4 + thumb_func_start PSS_RenderTextToVramViaBuffer +PSS_RenderTextToVramViaBuffer: @ 808BEB4 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -868,7 +868,7 @@ _0808BFC4: bx r0 .align 2, 0 _0808BFDC: .4byte 0x001fffff - thumb_func_end sub_808BEB4 + thumb_func_end PSS_RenderTextToVramViaBuffer thumb_func_start sub_808BFE0 sub_808BFE0: @ 808BFE0 @@ -6561,7 +6561,7 @@ _0808EE78: mov r0, r8 adds r1, r6, 0 adds r2, r5, 0 - bl sub_81344F8 + bl ShowPokemonSummaryScreen b _0808EEF6 .align 2, 0 _0808EEAC: .4byte gUnknown_20397B0 @@ -12353,7 +12353,7 @@ sub_8091A94: @ 8091A94 adds r0, r5, 0 movs r2, 0 movs r3, 0 - bl sub_808BEB4 + bl PSS_RenderTextToVramViaBuffer ldr r0, [sp, 0x30] bl LoadSpriteSheet mov r0, r8 @@ -12539,7 +12539,7 @@ _08091CFC: adds r0, r5, 0 movs r2, 0 movs r3, 0 - bl sub_808BEB4 + bl PSS_RenderTextToVramViaBuffer adds r0, r6, 0 bl LoadSpriteSheet ldr r0, [sp, 0x2C] diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 4c090a2d9..ceca3ed12 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_81344F8 -sub_81344F8: @ 81344F8 + thumb_func_start ShowPokemonSummaryScreen +ShowPokemonSummaryScreen: @ 81344F8 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -268,7 +268,7 @@ _08134728: .4byte 0x0000322c _0813472C: .4byte 0x00003290 _08134730: .4byte 0x00003204 _08134734: .4byte sub_8135C34 - thumb_func_end sub_81344F8 + thumb_func_end ShowPokemonSummaryScreen thumb_func_start ShowSelectMovePokemonSummaryScreen ShowSelectMovePokemonSummaryScreen: @ 8134738 @@ -283,7 +283,7 @@ ShowSelectMovePokemonSummaryScreen: @ 8134738 lsrs r5, 16 movs r4, 0x2 str r4, [sp] - bl sub_81344F8 + bl ShowPokemonSummaryScreen ldr r0, _08134764 @ =gUnknown_203B140 ldr r0, [r0] ldr r1, _08134768 @ =0x00003260 @@ -14091,7 +14091,7 @@ sub_813B854: @ 813B854 str r0, [sp] movs r1, 0 movs r2, 0 - bl sub_81344F8 + bl ShowPokemonSummaryScreen add sp, 0x4 pop {r0} bx r0 diff --git a/asm/trade.s b/asm/trade.s deleted file mode 100644 index 6e5f333ae..000000000 --- a/asm/trade.s +++ /dev/null @@ -1,15329 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_804C600 -sub_804C600: @ 804C600 - push {r4,r5,lr} - sub sp, 0xC - bl ResetSpriteData - bl FreeAllSpritePalettes - bl ResetTasks - bl ResetPaletteFade - ldr r2, _0804C6F8 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - ldr r0, _0804C6FC @ =sub_804D4F8 - bl SetVBlankCallback - ldr r4, _0804C700 @ =gTMCaseMainWindowPalette - adds r0, r4, 0 - movs r1, 0xF0 - movs r2, 0x14 - bl LoadPalette - adds r0, r4, 0 - movs r1, 0xD0 - movs r2, 0x14 - bl LoadPalette - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _0804C704 @ =gUnknown_8261F1C - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - ldr r0, _0804C708 @ =gUnknown_2031DA8 - ldr r1, [r0] - movs r0, 0x8F - lsls r0, 4 - adds r1, r0 - movs r0, 0x1 - bl SetBgTilemapBuffer - ldr r0, _0804C70C @ =gUnknown_8261F2C - bl InitWindows - lsls r0, 16 - cmp r0, 0 - beq _0804C6F0 - bl DeactivateAllTextPrinters - ldr r1, _0804C710 @ =gUnknown_3000E78 - ldr r2, _0804C714 @ =0x0000024e - adds r0, r2, 0 - strh r0, [r1] - movs r5, 0 -_0804C674: - lsls r4, r5, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl ClearWindowTilemap - adds r0, r4, 0 - movs r1, 0 - bl FillWindowPixelBuffer - adds r5, 0x1 - cmp r5, 0x11 - bls _0804C674 - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0xF - str r0, [sp, 0x8] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect - movs r0, 0 - movs r1, 0x14 - movs r2, 0xC0 - bl TextWindow_SetStdFrame0_WithPal - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0xE0 - bl TextWindow_SetUserSelectedFrame - bl LoadMonIconPalettes - ldr r2, _0804C708 @ =gUnknown_2031DA8 - ldr r0, [r2] - adds r0, 0x69 - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x6F - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x70 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x74 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x75 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x7A - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x7B - strb r1, [r0] - ldr r0, [r2] - adds r0, 0xA8 - strb r1, [r0] -_0804C6F0: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804C6F8: .4byte gPaletteFade -_0804C6FC: .4byte sub_804D4F8 -_0804C700: .4byte gTMCaseMainWindowPalette -_0804C704: .4byte gUnknown_8261F1C -_0804C708: .4byte gUnknown_2031DA8 -_0804C70C: .4byte gUnknown_8261F2C -_0804C710: .4byte gUnknown_3000E78 -_0804C714: .4byte 0x0000024e - thumb_func_end sub_804C600 - - thumb_func_start sub_804C718 -sub_804C718: @ 804C718 - push {lr} - ldr r0, _0804C724 @ =sub_804C728 - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0804C724: .4byte sub_804C728 - thumb_func_end sub_804C718 - - thumb_func_start sub_804C728 -sub_804C728: @ 804C728 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x28 - ldr r1, _0804C74C @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r0, r1, r2 - ldrb r0, [r0] - adds r3, r1, 0 - cmp r0, 0x16 - bls _0804C742 - b _0804CEE6 -_0804C742: - lsls r0, 2 - ldr r1, _0804C750 @ =_0804C754 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804C74C: .4byte gMain -_0804C750: .4byte _0804C754 - .align 2, 0 -_0804C754: - .4byte _0804C7B0 - .4byte _0804C7FC - .4byte _0804C8C8 - .4byte _0804C8F4 - .4byte _0804C950 - .4byte _0804C9B0 - .4byte _0804C9F0 - .4byte _0804CA10 - .4byte _0804CB50 - .4byte _0804CB78 - .4byte _0804CB9C - .4byte _0804CC30 - .4byte _0804CC3E - .4byte _0804CD10 - .4byte _0804CDE0 - .4byte _0804CE20 - .4byte _0804CE3A - .4byte _0804CE48 - .4byte _0804CE5C - .4byte _0804CE7C - .4byte _0804CE9C - .4byte _0804CEB0 - .4byte _0804CED0 -_0804C7B0: - ldr r4, _0804C7E8 @ =gUnknown_2031DA8 - ldr r0, _0804C7EC @ =0x000010f0 - bl AllocZeroed - str r0, [r4] - bl sub_804C600 - ldr r4, _0804C7F0 @ =gUnknown_2031C90 - movs r0, 0xE0 - lsls r0, 4 - bl AllocZeroed - str r0, [r4] - movs r6, 0 - ldr r2, _0804C7F4 @ =gUnknown_2031C94 -_0804C7CE: - lsls r1, r6, 8 - ldr r0, [r4] - adds r0, r1 - stm r2!, {r0} - adds r6, 0x1 - cmp r6, 0xD - ble _0804C7CE - ldr r1, _0804C7F8 @ =gMain - movs r3, 0x87 - lsls r3, 3 - adds r1, r3 - b _0804CEC2 - .align 2, 0 -_0804C7E8: .4byte gUnknown_2031DA8 -_0804C7EC: .4byte 0x000010f0 -_0804C7F0: .4byte gUnknown_2031C90 -_0804C7F4: .4byte gUnknown_2031C94 -_0804C7F8: .4byte gMain -_0804C7FC: - ldr r2, _0804C864 @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - movs r6, 0 - movs r4, 0 -_0804C80A: - movs r0, 0x64 - muls r0, r6 - ldr r1, _0804C868 @ =gEnemyParty - adds r0, r1 - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - str r4, [sp, 0xC] - movs r1, 0 - movs r2, 0 - movs r3, 0x20 - bl CreateMon - adds r6, 0x1 - cmp r6, 0x5 - ble _0804C80A - movs r0, 0 - bl sub_804F5BC - movs r0, 0 - bl ShowBg - ldr r0, _0804C86C @ =gReceivedRemoteLinkPlayers - ldrb r2, [r0] - cmp r2, 0 - bne _0804C8B4 - ldr r1, _0804C870 @ =gLinkType - ldr r5, _0804C874 @ =0x00001122 - adds r0, r5, 0 - strh r0, [r1] - ldr r0, _0804C878 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0xA8 - strb r2, [r0] - ldr r0, _0804C87C @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _0804C880 - bl sub_800B1F4 - bl OpenLink - bl sub_80FBB20 - b _0804C892 - .align 2, 0 -_0804C864: .4byte gPaletteFade -_0804C868: .4byte gEnemyParty -_0804C86C: .4byte gReceivedRemoteLinkPlayers -_0804C870: .4byte gLinkType -_0804C874: .4byte 0x00001122 -_0804C878: .4byte gUnknown_2031DA8 -_0804C87C: .4byte gWirelessCommType -_0804C880: - bl OpenLink - ldr r1, _0804C8A8 @ =gMain - movs r7, 0x87 - lsls r7, 3 - adds r1, r7 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804C892: - ldr r0, _0804C8AC @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _0804C89C - b _0804CEE6 -_0804C89C: - ldr r0, _0804C8B0 @ =sub_8081A90 - movs r1, 0x1 - bl CreateTask - b _0804CEE6 - .align 2, 0 -_0804C8A8: .4byte gMain -_0804C8AC: .4byte gWirelessCommType -_0804C8B0: .4byte sub_8081A90 -_0804C8B4: - ldr r0, _0804C8C4 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - movs r1, 0x4 - strb r1, [r0] - b _0804CEE6 - .align 2, 0 -_0804C8C4: .4byte gMain -_0804C8C8: - ldr r2, _0804C8F0 @ =gUnknown_2031DA8 - ldr r1, [r2] - adds r1, 0xA8 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0xA8 - ldrb r0, [r1] - cmp r0, 0xB - bhi _0804C8E2 - b _0804CEE6 -_0804C8E2: - movs r0, 0 - strb r0, [r1] - movs r2, 0x87 - lsls r2, 3 - adds r1, r3, r2 - b _0804CEC2 - .align 2, 0 -_0804C8F0: .4byte gUnknown_2031DA8 -_0804C8F4: - bl GetLinkPlayerCount_2 - adds r4, r0, 0 - bl GetSavedPlayerCount - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bcs _0804C908 - b _0804CEE6 -_0804C908: - bl IsLinkMaster - lsls r0, 24 - cmp r0, 0 - beq _0804C940 - ldr r0, _0804C938 @ =gUnknown_2031DA8 - ldr r1, [r0] - adds r1, 0xA8 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1E - bhi _0804C928 - b _0804CEE6 -_0804C928: - bl CheckShouldAdvanceLinkState - ldr r1, _0804C93C @ =gMain - movs r3, 0x87 - lsls r3, 3 - adds r1, r3 - b _0804CEC2 - .align 2, 0 -_0804C938: .4byte gUnknown_2031DA8 -_0804C93C: .4byte gMain -_0804C940: - ldr r1, _0804C94C @ =gMain - movs r5, 0x87 - lsls r5, 3 - adds r1, r5 - b _0804CEC2 - .align 2, 0 -_0804C94C: .4byte gMain -_0804C950: - ldr r0, _0804C9A0 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0x1 - beq _0804C95A - b _0804CEE6 -_0804C95A: - bl IsLinkPlayerDataExchangeComplete - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0804C968 - b _0804CEE6 -_0804C968: - bl sub_80FBB4C - bl CalculatePlayerPartyCount - ldr r1, _0804C9A4 @ =gMain - movs r7, 0x87 - lsls r7, 3 - adds r1, r7 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, _0804C9A8 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0xA8 - strb r2, [r0] - ldr r0, _0804C9AC @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - bne _0804C992 - b _0804CEE6 -_0804C992: - movs r0, 0x1 - bl sub_80FA484 - bl sub_800AB9C - b _0804CEE6 - .align 2, 0 -_0804C9A0: .4byte gReceivedRemoteLinkPlayers -_0804C9A4: .4byte gMain -_0804C9A8: .4byte gUnknown_2031DA8 -_0804C9AC: .4byte gWirelessCommType -_0804C9B0: - ldr r0, _0804C9E0 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _0804C9E8 - bl IsLinkRfuTaskFinished - lsls r0, 24 - cmp r0, 0 - bne _0804C9C4 - b _0804CEE6 -_0804C9C4: - ldr r1, _0804C9E4 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl LoadWirelessStatusIndicatorSpriteGfx - movs r0, 0 - movs r1, 0 - bl CreateWirelessStatusIndicatorSprite - b _0804CEE6 - .align 2, 0 -_0804C9E0: .4byte gWirelessCommType -_0804C9E4: .4byte gMain -_0804C9E8: - movs r2, 0x87 - lsls r2, 3 - adds r1, r3, r2 - b _0804CEC2 -_0804C9F0: - bl shedinja_maker_maybe - lsls r0, 24 - cmp r0, 0 - bne _0804C9FC - b _0804CEE6 -_0804C9FC: - bl sub_804F9D8 - ldr r1, _0804CA0C @ =gMain - movs r3, 0x87 - lsls r3, 3 - adds r1, r3 - b _0804CEC2 - .align 2, 0 -_0804CA0C: .4byte gMain -_0804CA10: - bl CalculateEnemyPartyCount - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - ldr r2, _0804CB2C @ =gUnknown_2031DA8 - ldr r0, [r2] - ldr r1, _0804CB30 @ =gPlayerPartyCount - ldrb r1, [r1] - adds r0, 0x36 - strb r1, [r0] - ldr r0, [r2] - ldr r1, _0804CB34 @ =gEnemyPartyCount - ldrb r1, [r1] - adds r0, 0x37 - strb r1, [r0] - movs r6, 0 - ldr r0, [r2] - adds r0, 0x36 - ldrb r0, [r0] - cmp r6, r0 - bge _0804CAA8 - mov r8, r2 - ldr r7, _0804CB38 @ =gTradeMonSpriteCoords -_0804CA4A: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _0804CB3C @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - ldrb r2, [r7] - lsls r2, 19 - movs r1, 0xE0 - lsls r1, 12 - adds r2, r1 - asrs r2, 16 - ldrb r3, [r7, 0x1] - lsls r3, 19 - ldr r1, _0804CB40 @ =0xfff40000 - adds r3, r1 - asrs r3, 16 - movs r1, 0x1 - str r1, [sp] - str r0, [sp, 0x4] - str r1, [sp, 0x8] - adds r0, r5, 0 - ldr r1, _0804CB44 @ =SpriteCB_MonIcon - bl CreateMonIcon - mov r2, r8 - ldr r1, [r2] - adds r1, 0x28 - adds r1, r6 - strb r0, [r1] - adds r7, 0x2 - adds r6, 0x1 - ldr r0, [r2] - adds r0, 0x36 - ldrb r0, [r0] - cmp r6, r0 - blt _0804CA4A -_0804CAA8: - movs r6, 0 - ldr r1, _0804CB2C @ =gUnknown_2031DA8 - ldr r0, [r1] - adds r0, 0x37 - ldrb r0, [r0] - cmp r6, r0 - bge _0804CB20 - ldr r0, _0804CB38 @ =gTradeMonSpriteCoords - mov r8, r1 - adds r7, r0, 0 - adds r7, 0xC -_0804CABE: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _0804CB48 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - movs r2, 0 - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - ldrb r2, [r7] - lsls r2, 19 - movs r3, 0xE0 - lsls r3, 12 - adds r2, r3 - asrs r2, 16 - ldrb r3, [r7, 0x1] - lsls r3, 19 - ldr r1, _0804CB40 @ =0xfff40000 - adds r3, r1 - asrs r3, 16 - movs r1, 0x1 - str r1, [sp] - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - adds r0, r5, 0 - ldr r1, _0804CB44 @ =SpriteCB_MonIcon - bl CreateMonIcon - mov r2, r8 - ldr r1, [r2] - adds r1, 0x2E - adds r1, r6 - strb r0, [r1] - adds r7, 0x2 - adds r6, 0x1 - ldr r0, [r2] - adds r0, 0x37 - ldrb r0, [r0] - cmp r6, r0 - blt _0804CABE -_0804CB20: - ldr r1, _0804CB4C @ =gMain - movs r3, 0x87 - lsls r3, 3 - adds r1, r3 - b _0804CEC2 - .align 2, 0 -_0804CB2C: .4byte gUnknown_2031DA8 -_0804CB30: .4byte gPlayerPartyCount -_0804CB34: .4byte gEnemyPartyCount -_0804CB38: .4byte gTradeMonSpriteCoords -_0804CB3C: .4byte gPlayerParty -_0804CB40: .4byte 0xfff40000 -_0804CB44: .4byte SpriteCB_MonIcon -_0804CB48: .4byte gEnemyParty -_0804CB4C: .4byte gMain -_0804CB50: - bl sub_8122550 - ldr r0, _0804CB70 @ =gUnknown_2031DA8 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x36 - adds r1, 0x28 - movs r2, 0 - bl sub_812256C - ldr r1, _0804CB74 @ =gMain - movs r5, 0x87 - lsls r5, 3 - adds r1, r5 - b _0804CEC2 - .align 2, 0 -_0804CB70: .4byte gUnknown_2031DA8 -_0804CB74: .4byte gMain -_0804CB78: - ldr r0, _0804CB94 @ =gUnknown_2031DA8 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x36 - adds r1, 0x28 - movs r2, 0x1 - bl sub_812256C - ldr r1, _0804CB98 @ =gMain - movs r7, 0x87 - lsls r7, 3 - adds r1, r7 - b _0804CEC2 - .align 2, 0 -_0804CB94: .4byte gUnknown_2031DA8 -_0804CB98: .4byte gMain -_0804CB9C: - ldr r0, _0804CC14 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldr r6, _0804CC18 @ =gUnknown_2031C94 - ldr r1, [r6] - ldr r5, _0804CC1C @ =gDecompressionBuffer - str r5, [sp] - movs r4, 0x3 - str r4, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_808BEB4 - bl GetMultiplayerId - lsls r0, 24 - movs r1, 0x80 - lsls r1, 17 - eors r1, r0 - lsrs r1, 24 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r1, _0804CC20 @ =gLinkPlayers + 8 - adds r0, r1 - ldr r1, [r6, 0xC] - str r5, [sp] - str r4, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_808BEB4 - ldr r4, _0804CC24 @ =gUnknown_8261ECC - ldr r0, [r4] - ldr r1, [r6, 0x18] - str r5, [sp] - movs r2, 0x2 - str r2, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_808BEB4 - ldr r0, [r4, 0x4] - ldr r1, [r6, 0x20] - movs r2, 0x18 - bl sub_804F728 - ldr r1, _0804CC28 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, _0804CC2C @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0xA8 - strb r2, [r0] - b _0804CEE6 - .align 2, 0 -_0804CC14: .4byte gSaveBlock2Ptr -_0804CC18: .4byte gUnknown_2031C94 -_0804CC1C: .4byte gDecompressionBuffer -_0804CC20: .4byte gLinkPlayers + 8 -_0804CC24: .4byte gUnknown_8261ECC -_0804CC28: .4byte gMain -_0804CC2C: .4byte gUnknown_2031DA8 -_0804CC30: - bl sub_804F610 - lsls r0, 24 - cmp r0, 0 - bne _0804CC3C - b _0804CEE6 -_0804CC3C: - b _0804CEBA -_0804CC3E: - ldr r0, _0804CCFC @ =gSaveBlock2Ptr - ldr r1, [r0] - movs r0, 0x1 - movs r2, 0 - bl GetStringWidth - adds r1, r0, 0 - movs r0, 0x38 - subs r0, r1 - lsrs r1, r0, 31 - adds r0, r1 - movs r6, 0 - add r5, sp, 0x10 - ldr r3, _0804CD00 @ =gTradeUnknownSpriteCoords - mov r8, r3 - asrs r0, 1 - ldrb r7, [r3, 0x4] - adds r4, r0, r7 -_0804CC62: - add r1, sp, 0x10 - ldr r0, _0804CD04 @ =gUnknown_8261CC8 - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldrh r0, [r5] - adds r0, r6 - strh r0, [r5] - lsls r1, r4, 16 - asrs r1, 16 - add r0, sp, 0x10 - mov r3, r8 - ldrb r2, [r3, 0x5] - movs r3, 0x1 - bl CreateSprite - adds r4, 0x20 - adds r6, 0x1 - cmp r6, 0x2 - ble _0804CC62 - bl GetMultiplayerId - lsls r0, 24 - movs r1, 0x80 - lsls r1, 17 - eors r1, r0 - lsrs r1, 24 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r1, _0804CD08 @ =gLinkPlayers + 8 - adds r1, r0, r1 - movs r0, 0x1 - movs r2, 0 - bl GetStringWidth - adds r1, r0, 0 - movs r0, 0x38 - subs r0, r1 - lsrs r1, r0, 31 - adds r0, r1 - movs r6, 0 - add r5, sp, 0x10 - ldr r7, _0804CD00 @ =gTradeUnknownSpriteCoords - mov r8, r7 - asrs r0, 1 - mov r1, r8 - ldrb r1, [r1, 0x6] - adds r4, r0, r1 -_0804CCC6: - add r1, sp, 0x10 - ldr r0, _0804CD04 @ =gUnknown_8261CC8 - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - adds r0, r6, 0x3 - ldrh r1, [r5] - adds r0, r1 - strh r0, [r5] - lsls r1, r4, 16 - asrs r1, 16 - add r0, sp, 0x10 - mov r3, r8 - ldrb r2, [r3, 0x7] - movs r3, 0x1 - bl CreateSprite - adds r4, 0x20 - adds r6, 0x1 - cmp r6, 0x2 - ble _0804CCC6 - ldr r1, _0804CD0C @ =gMain - movs r5, 0x87 - lsls r5, 3 - adds r1, r5 - b _0804CEC2 - .align 2, 0 -_0804CCFC: .4byte gSaveBlock2Ptr -_0804CD00: .4byte gTradeUnknownSpriteCoords -_0804CD04: .4byte gUnknown_8261CC8 -_0804CD08: .4byte gLinkPlayers + 8 -_0804CD0C: .4byte gMain -_0804CD10: - ldr r4, _0804CDCC @ =gUnknown_8261CC8 - add r1, sp, 0x10 - adds r0, r4, 0 - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r5,r7} - stm r1!, {r2,r5,r7} - add r1, sp, 0x10 - adds r0, r1, 0 - ldrh r0, [r0] - adds r0, 0x6 - strh r0, [r1] - adds r0, r1, 0 - movs r1, 0xD7 - movs r2, 0x97 - movs r3, 0x1 - bl CreateSprite - add r0, sp, 0x10 - ldm r4!, {r3,r5,r7} - stm r0!, {r3,r5,r7} - ldm r4!, {r1-r3} - stm r0!, {r1-r3} - add r1, sp, 0x10 - adds r0, r1, 0 - ldrh r0, [r0] - adds r0, 0x7 - strh r0, [r1] - adds r0, r1, 0 - movs r1, 0xF7 - movs r2, 0x97 - movs r3, 0x1 - bl CreateSprite - movs r6, 0 - add r4, sp, 0x10 - movs r5, 0xC0 - lsls r5, 13 -_0804CD5C: - add r1, sp, 0x10 - ldr r0, _0804CDCC @ =gUnknown_8261CC8 - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - adds r0, r6, 0 - adds r0, 0x8 - ldrh r7, [r4] - adds r0, r7 - strh r0, [r4] - asrs r1, r5, 16 - add r0, sp, 0x10 - movs r2, 0x96 - movs r3, 0x1 - bl CreateSprite - movs r0, 0x80 - lsls r0, 14 - adds r5, r0 - adds r6, 0x1 - cmp r6, 0x5 - ble _0804CD5C - ldr r0, _0804CDD0 @ =gUnknown_8261CB0 - ldr r2, _0804CDD4 @ =gTradeMonSpriteCoords - ldrb r1, [r2] - lsls r1, 19 - movs r3, 0x80 - lsls r3, 14 - adds r1, r3 - asrs r1, 16 - ldrb r2, [r2, 0x1] - lsls r2, 3 - movs r3, 0x2 - bl CreateSprite - ldr r2, _0804CDD8 @ =gUnknown_2031DA8 - ldr r1, [r2] - adds r1, 0x34 - movs r3, 0 - strb r0, [r1] - ldr r0, [r2] - adds r0, 0x35 - strb r3, [r0] - ldr r1, _0804CDDC @ =gMain - movs r5, 0x87 - lsls r5, 3 - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 - bl rbox_fill_rectangle - b _0804CEE6 - .align 2, 0 -_0804CDCC: .4byte gUnknown_8261CC8 -_0804CDD0: .4byte gUnknown_8261CB0 -_0804CDD4: .4byte gTradeMonSpriteCoords -_0804CDD8: .4byte gUnknown_2031DA8 -_0804CDDC: .4byte gMain -_0804CDE0: - movs r0, 0 - bl sub_804F748 - movs r0, 0 - bl sub_804F020 - ldr r2, _0804CE14 @ =gUnknown_2031DA8 - ldr r0, [r2] - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x1] - bl sub_804D764 - ldr r1, _0804CE18 @ =gMain - movs r7, 0x87 - lsls r7, 3 - adds r1, r7 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, _0804CE1C @ =0x00000111 - bl PlayBGM - b _0804CEE6 - .align 2, 0 -_0804CE14: .4byte gUnknown_2031DA8 -_0804CE18: .4byte gMain -_0804CE1C: .4byte 0x00000111 -_0804CE20: - movs r0, 0x1 - bl sub_804F748 - movs r0, 0x1 - bl sub_804F020 - ldr r1, _0804CE44 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804CE3A: - movs r0, 0 - bl sub_804D694 - b _0804CEBA - .align 2, 0 -_0804CE44: .4byte gMain -_0804CE48: - movs r0, 0x1 - bl sub_804D694 - ldr r1, _0804CE58 @ =gMain - movs r3, 0x87 - lsls r3, 3 - adds r1, r3 - b _0804CEC2 - .align 2, 0 -_0804CE58: .4byte gMain -_0804CE5C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, _0804CE78 @ =gMain - movs r5, 0x87 - lsls r5, 3 - adds r1, r5 - b _0804CEC2 - .align 2, 0 -_0804CE78: .4byte gMain -_0804CE7C: - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r0, 0x2 - bl sub_804D694 - ldr r1, _0804CE98 @ =gMain - movs r7, 0x87 - lsls r7, 3 - adds r1, r7 - b _0804CEC2 - .align 2, 0 -_0804CE98: .4byte gMain -_0804CE9C: - movs r0, 0 - bl sub_804F890 - ldr r1, _0804CEAC @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _0804CEC2 - .align 2, 0 -_0804CEAC: .4byte gMain -_0804CEB0: - movs r0, 0x1 - bl sub_804F890 - bl sub_804F964 -_0804CEBA: - ldr r1, _0804CECC @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 -_0804CEC2: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804CEE6 - .align 2, 0 -_0804CECC: .4byte gMain -_0804CED0: - ldr r0, _0804CF08 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804CEE6 - ldr r0, _0804CF0C @ =sub_804DFF0 - str r0, [r3] - ldr r0, _0804CF10 @ =sub_804D638 - bl SetMainCallback2 -_0804CEE6: - bl RunTextPrinters - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x28 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804CF08: .4byte gPaletteFade -_0804CF0C: .4byte sub_804DFF0 -_0804CF10: .4byte sub_804D638 - thumb_func_end sub_804C728 - - thumb_func_start sub_804CF14 -sub_804CF14: @ 804CF14 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x24 - ldr r1, _0804CF38 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x16 - bls _0804CF2E - b _0804D4D2 -_0804CF2E: - lsls r0, 2 - ldr r1, _0804CF3C @ =_0804CF40 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804CF38: .4byte gMain -_0804CF3C: .4byte _0804CF40 - .align 2, 0 -_0804CF40: - .4byte _0804CF9C - .4byte _0804CFB0 - .4byte _0804CFB8 - .4byte _0804CFC0 - .4byte _0804CFC8 - .4byte _0804CFDC - .4byte _0804D004 - .4byte _0804D00C - .4byte _0804D150 - .4byte _0804D178 - .4byte _0804D19C - .4byte _0804D230 - .4byte _0804D24C - .4byte _0804D320 - .4byte _0804D4D2 - .4byte _0804D4D2 - .4byte _0804D414 - .4byte _0804D41C - .4byte _0804D444 - .4byte _0804D480 - .4byte _0804D4A0 - .4byte _0804D4A8 - .4byte _0804D4C0 -_0804CF9C: - bl sub_804C600 - ldr r1, _0804CFAC @ =gMain - movs r3, 0x87 - lsls r3, 3 - adds r1, r3 - b _0804D4B4 - .align 2, 0 -_0804CFAC: .4byte gMain -_0804CFB0: - movs r5, 0x87 - lsls r5, 3 - adds r1, r2, r5 - b _0804D200 -_0804CFB8: - movs r7, 0x87 - lsls r7, 3 - adds r1, r2, r7 - b _0804D4B4 -_0804CFC0: - movs r0, 0x87 - lsls r0, 3 - adds r1, r2, r0 - b _0804D4B4 -_0804CFC8: - bl CalculatePlayerPartyCount - ldr r1, _0804CFD8 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _0804D4B4 - .align 2, 0 -_0804CFD8: .4byte gMain -_0804CFDC: - ldr r0, _0804CFFC @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _0804CFF0 - bl LoadWirelessStatusIndicatorSpriteGfx - movs r0, 0 - movs r1, 0 - bl CreateWirelessStatusIndicatorSprite -_0804CFF0: - ldr r1, _0804D000 @ =gMain - movs r3, 0x87 - lsls r3, 3 - adds r1, r3 - b _0804D4B4 - .align 2, 0 -_0804CFFC: .4byte gWirelessCommType -_0804D000: .4byte gMain -_0804D004: - movs r5, 0x87 - lsls r5, 3 - adds r1, r2, r5 - b _0804D4B4 -_0804D00C: - bl CalculateEnemyPartyCount - ldr r4, _0804D12C @ =gUnknown_2031DA8 - ldr r0, [r4] - ldr r1, _0804D130 @ =gPlayerPartyCount - ldrb r1, [r1] - adds r0, 0x36 - strb r1, [r0] - ldr r0, [r4] - ldr r1, _0804D134 @ =gEnemyPartyCount - ldrb r1, [r1] - adds r0, 0x37 - strb r1, [r0] - movs r0, 0 - bl ClearWindowTilemap - movs r0, 0 - bl sub_804F020 - movs r0, 0x1 - bl sub_804F020 - movs r6, 0 - ldr r0, [r4] - adds r0, 0x36 - ldrb r0, [r0] - cmp r6, r0 - bge _0804D0A8 - mov r8, r4 - ldr r7, _0804D138 @ =gTradeMonSpriteCoords -_0804D048: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _0804D13C @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - movs r2, 0 - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - ldrb r2, [r7] - lsls r2, 19 - movs r1, 0xE0 - lsls r1, 12 - adds r2, r1 - asrs r2, 16 - ldrb r3, [r7, 0x1] - lsls r3, 19 - ldr r1, _0804D140 @ =0xfff40000 - adds r3, r1 - asrs r3, 16 - movs r1, 0x1 - str r1, [sp] - str r0, [sp, 0x4] - str r1, [sp, 0x8] - adds r0, r5, 0 - ldr r1, _0804D144 @ =SpriteCB_MonIcon - bl CreateMonIcon - mov r2, r8 - ldr r1, [r2] - adds r1, 0x28 - adds r1, r6 - strb r0, [r1] - adds r7, 0x2 - adds r6, 0x1 - ldr r0, [r2] - adds r0, 0x36 - ldrb r0, [r0] - cmp r6, r0 - blt _0804D048 -_0804D0A8: - movs r6, 0 - ldr r1, _0804D12C @ =gUnknown_2031DA8 - ldr r0, [r1] - adds r0, 0x37 - ldrb r0, [r0] - cmp r6, r0 - bge _0804D120 - ldr r0, _0804D138 @ =gTradeMonSpriteCoords - mov r8, r1 - adds r7, r0, 0 - adds r7, 0xC -_0804D0BE: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _0804D148 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - movs r2, 0 - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - ldrb r2, [r7] - lsls r2, 19 - movs r3, 0xE0 - lsls r3, 12 - adds r2, r3 - asrs r2, 16 - ldrb r3, [r7, 0x1] - lsls r3, 19 - ldr r1, _0804D140 @ =0xfff40000 - adds r3, r1 - asrs r3, 16 - movs r1, 0x1 - str r1, [sp] - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - adds r0, r5, 0 - ldr r1, _0804D144 @ =SpriteCB_MonIcon - bl CreateMonIcon - mov r2, r8 - ldr r1, [r2] - adds r1, 0x2E - adds r1, r6 - strb r0, [r1] - adds r7, 0x2 - adds r6, 0x1 - ldr r0, [r2] - adds r0, 0x37 - ldrb r0, [r0] - cmp r6, r0 - blt _0804D0BE -_0804D120: - ldr r1, _0804D14C @ =gMain - movs r3, 0x87 - lsls r3, 3 - adds r1, r3 - b _0804D4B4 - .align 2, 0 -_0804D12C: .4byte gUnknown_2031DA8 -_0804D130: .4byte gPlayerPartyCount -_0804D134: .4byte gEnemyPartyCount -_0804D138: .4byte gTradeMonSpriteCoords -_0804D13C: .4byte gPlayerParty -_0804D140: .4byte 0xfff40000 -_0804D144: .4byte SpriteCB_MonIcon -_0804D148: .4byte gEnemyParty -_0804D14C: .4byte gMain -_0804D150: - bl sub_8122550 - ldr r0, _0804D170 @ =gUnknown_2031DA8 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x36 - adds r1, 0x28 - movs r2, 0 - bl sub_812256C - ldr r1, _0804D174 @ =gMain - movs r5, 0x87 - lsls r5, 3 - adds r1, r5 - b _0804D4B4 - .align 2, 0 -_0804D170: .4byte gUnknown_2031DA8 -_0804D174: .4byte gMain -_0804D178: - ldr r0, _0804D194 @ =gUnknown_2031DA8 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x36 - adds r1, 0x28 - movs r2, 0x1 - bl sub_812256C - ldr r1, _0804D198 @ =gMain - movs r7, 0x87 - lsls r7, 3 - adds r1, r7 - b _0804D4B4 - .align 2, 0 -_0804D194: .4byte gUnknown_2031DA8 -_0804D198: .4byte gMain -_0804D19C: - ldr r0, _0804D214 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldr r6, _0804D218 @ =gUnknown_2031C94 - ldr r1, [r6] - ldr r5, _0804D21C @ =gDecompressionBuffer - str r5, [sp] - movs r4, 0x3 - str r4, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_808BEB4 - bl GetMultiplayerId - lsls r0, 24 - movs r1, 0x80 - lsls r1, 17 - eors r1, r0 - lsrs r1, 24 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r1, _0804D220 @ =gLinkPlayers + 8 - adds r0, r1 - ldr r1, [r6, 0xC] - str r5, [sp] - str r4, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_808BEB4 - ldr r4, _0804D224 @ =gUnknown_8261ECC - ldr r0, [r4] - ldr r1, [r6, 0x18] - str r5, [sp] - movs r2, 0x2 - str r2, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_808BEB4 - ldr r0, [r4, 0x4] - ldr r1, [r6, 0x20] - movs r2, 0x18 - bl sub_804F728 - ldr r1, _0804D228 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 -_0804D200: - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, _0804D22C @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0xA8 - strb r2, [r0] - b _0804D4D2 - .align 2, 0 -_0804D214: .4byte gSaveBlock2Ptr -_0804D218: .4byte gUnknown_2031C94 -_0804D21C: .4byte gDecompressionBuffer -_0804D220: .4byte gLinkPlayers + 8 -_0804D224: .4byte gUnknown_8261ECC -_0804D228: .4byte gMain -_0804D22C: .4byte gUnknown_2031DA8 -_0804D230: - bl sub_804F610 - lsls r0, 24 - cmp r0, 0 - bne _0804D23C - b _0804D4D2 -_0804D23C: - ldr r1, _0804D248 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _0804D4B4 - .align 2, 0 -_0804D248: .4byte gMain -_0804D24C: - ldr r0, _0804D30C @ =gSaveBlock2Ptr - ldr r1, [r0] - movs r0, 0x1 - movs r2, 0 - bl GetStringWidth - adds r1, r0, 0 - movs r0, 0x38 - subs r0, r1 - lsrs r1, r0, 31 - adds r0, r1 - movs r6, 0 - add r5, sp, 0xC - ldr r3, _0804D310 @ =gTradeUnknownSpriteCoords - mov r8, r3 - asrs r0, 1 - ldrb r7, [r3, 0x4] - adds r4, r0, r7 -_0804D270: - add r1, sp, 0xC - ldr r0, _0804D314 @ =gUnknown_8261CC8 - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldrh r0, [r5] - adds r0, r6 - strh r0, [r5] - lsls r1, r4, 16 - asrs r1, 16 - add r0, sp, 0xC - mov r3, r8 - ldrb r2, [r3, 0x5] - movs r3, 0x1 - bl CreateSprite - adds r4, 0x20 - adds r6, 0x1 - cmp r6, 0x2 - ble _0804D270 - bl GetMultiplayerId - lsls r0, 24 - movs r1, 0x80 - lsls r1, 17 - eors r1, r0 - lsrs r1, 24 - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r1, _0804D318 @ =gLinkPlayers + 8 - adds r1, r0, r1 - movs r0, 0x1 - movs r2, 0 - bl GetStringWidth - adds r1, r0, 0 - movs r0, 0x38 - subs r0, r1 - lsrs r1, r0, 31 - adds r0, r1 - movs r6, 0 - add r5, sp, 0xC - ldr r7, _0804D310 @ =gTradeUnknownSpriteCoords - mov r8, r7 - asrs r0, 1 - mov r1, r8 - ldrb r1, [r1, 0x6] - adds r4, r0, r1 -_0804D2D4: - add r1, sp, 0xC - ldr r0, _0804D314 @ =gUnknown_8261CC8 - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - adds r0, r6, 0x3 - ldrh r1, [r5] - adds r0, r1 - strh r0, [r5] - lsls r1, r4, 16 - asrs r1, 16 - add r0, sp, 0xC - mov r3, r8 - ldrb r2, [r3, 0x7] - movs r3, 0x1 - bl CreateSprite - adds r4, 0x20 - adds r6, 0x1 - cmp r6, 0x2 - ble _0804D2D4 - ldr r1, _0804D31C @ =gMain - movs r5, 0x87 - lsls r5, 3 - adds r1, r5 - b _0804D4B4 - .align 2, 0 -_0804D30C: .4byte gSaveBlock2Ptr -_0804D310: .4byte gTradeUnknownSpriteCoords -_0804D314: .4byte gUnknown_8261CC8 -_0804D318: .4byte gLinkPlayers + 8 -_0804D31C: .4byte gMain -_0804D320: - ldr r4, _0804D3B0 @ =gUnknown_8261CC8 - add r1, sp, 0xC - adds r0, r4, 0 - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r5,r7} - stm r1!, {r2,r5,r7} - add r1, sp, 0xC - adds r0, r1, 0 - ldrh r0, [r0] - adds r0, 0x6 - strh r0, [r1] - adds r0, r1, 0 - movs r1, 0xD7 - movs r2, 0x97 - movs r3, 0x1 - bl CreateSprite - add r0, sp, 0xC - ldm r4!, {r3,r5,r7} - stm r0!, {r3,r5,r7} - ldm r4!, {r1-r3} - stm r0!, {r1-r3} - add r1, sp, 0xC - adds r0, r1, 0 - ldrh r0, [r0] - adds r0, 0x7 - strh r0, [r1] - adds r0, r1, 0 - movs r1, 0xF7 - movs r2, 0x97 - movs r3, 0x1 - bl CreateSprite - movs r6, 0 - add r4, sp, 0xC - movs r5, 0xC0 - lsls r5, 13 -_0804D36C: - add r1, sp, 0xC - ldr r0, _0804D3B0 @ =gUnknown_8261CC8 - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - adds r0, r6, 0 - adds r0, 0x8 - ldrh r7, [r4] - adds r0, r7 - strh r0, [r4] - asrs r1, r5, 16 - add r0, sp, 0xC - movs r2, 0x96 - movs r3, 0x1 - bl CreateSprite - movs r0, 0x80 - lsls r0, 14 - adds r5, r0 - adds r6, 0x1 - cmp r6, 0x5 - ble _0804D36C - ldr r4, _0804D3B4 @ =gUnknown_2031DA8 - ldr r0, [r4] - adds r0, 0x35 - ldrb r0, [r0] - cmp r0, 0x5 - bhi _0804D3B8 - bl sub_8138B20 - ldr r1, [r4] - b _0804D3C0 - .align 2, 0 -_0804D3B0: .4byte gUnknown_8261CC8 -_0804D3B4: .4byte gUnknown_2031DA8 -_0804D3B8: - bl sub_8138B20 - ldr r1, [r4] - adds r0, 0x6 -_0804D3C0: - adds r1, 0x35 - strb r0, [r1] - ldr r0, _0804D404 @ =gUnknown_8261CB0 - ldr r3, _0804D408 @ =gTradeMonSpriteCoords - ldr r4, _0804D40C @ =gUnknown_2031DA8 - ldr r1, [r4] - adds r1, 0x35 - ldrb r2, [r1] - lsls r2, 1 - adds r1, r2, r3 - ldrb r1, [r1] - lsls r1, 19 - movs r5, 0x80 - lsls r5, 14 - adds r1, r5 - asrs r1, 16 - adds r3, 0x1 - adds r2, r3 - ldrb r2, [r2] - lsls r2, 3 - movs r3, 0x2 - bl CreateSprite - ldr r1, [r4] - adds r1, 0x34 - strb r0, [r1] - ldr r0, _0804D410 @ =gMain - movs r7, 0x87 - lsls r7, 3 - adds r0, r7 - movs r1, 0x10 - strb r1, [r0] - b _0804D4D2 - .align 2, 0 -_0804D404: .4byte gUnknown_8261CB0 -_0804D408: .4byte gTradeMonSpriteCoords -_0804D40C: .4byte gUnknown_2031DA8 -_0804D410: .4byte gMain -_0804D414: - movs r0, 0 - bl sub_804D694 - b _0804D4AC -_0804D41C: - movs r0, 0x1 - bl sub_804D694 - ldr r2, _0804D43C @ =gUnknown_2031DA8 - ldr r0, [r2] - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - strb r1, [r0, 0x1] - bl sub_804D764 - ldr r1, _0804D440 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _0804D4B4 - .align 2, 0 -_0804D43C: .4byte gUnknown_2031DA8 -_0804D440: .4byte gMain -_0804D444: - ldr r2, _0804D478 @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - movs r4, 0x1 - negs r4, r4 - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, _0804D47C @ =gMain - movs r3, 0x87 - lsls r3, 3 - adds r1, r3 - b _0804D4B4 - .align 2, 0 -_0804D478: .4byte gPaletteFade -_0804D47C: .4byte gMain -_0804D480: - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r0, 0x2 - bl sub_804D694 - ldr r1, _0804D49C @ =gMain - movs r5, 0x87 - lsls r5, 3 - adds r1, r5 - b _0804D4B4 - .align 2, 0 -_0804D49C: .4byte gMain -_0804D4A0: - movs r7, 0x87 - lsls r7, 3 - adds r1, r2, r7 - b _0804D4B4 -_0804D4A8: - bl sub_804F964 -_0804D4AC: - ldr r1, _0804D4BC @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 -_0804D4B4: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804D4D2 - .align 2, 0 -_0804D4BC: .4byte gMain -_0804D4C0: - ldr r0, _0804D4F0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804D4D2 - ldr r0, _0804D4F4 @ =sub_804D638 - bl SetMainCallback2 -_0804D4D2: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x24 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804D4F0: .4byte gPaletteFade -_0804D4F4: .4byte sub_804D638 - thumb_func_end sub_804CF14 - - thumb_func_start sub_804D4F8 -sub_804D4F8: @ 804D4F8 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_804D4F8 - - thumb_func_start sub_804D50C -sub_804D50C: @ 804D50C - push {r4,lr} - sub sp, 0x4 - ldr r4, _0804D544 @ =gUnknown_2031DA8 - ldr r1, [r4] - adds r1, 0xA8 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xF - bls _0804D53C - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, [r4] - adds r0, 0x6F - movs r1, 0xA - strb r1, [r0] -_0804D53C: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804D544: .4byte gUnknown_2031DA8 - thumb_func_end sub_804D50C - - thumb_func_start sub_804D548 -sub_804D548: @ 804D548 - push {r4,lr} - ldr r0, _0804D580 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804D59E - ldr r1, _0804D584 @ =gUnknown_2031DA4 - ldr r4, _0804D588 @ =gUnknown_2031DA8 - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x35 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r2, 0 - adds r0, 0x7E - ldrb r0, [r0] - strb r0, [r1, 0x1] - ldr r0, _0804D58C @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _0804D590 - adds r1, r2, 0 - adds r1, 0x6F - movs r0, 0x10 - strb r0, [r1] - b _0804D59E - .align 2, 0 -_0804D580: .4byte gPaletteFade -_0804D584: .4byte gUnknown_2031DA4 -_0804D588: .4byte gUnknown_2031DA8 -_0804D58C: .4byte gWirelessCommType -_0804D590: - movs r0, 0x20 - bl sub_800AA80 - ldr r0, [r4] - adds r0, 0x6F - movs r1, 0xD - strb r1, [r0] -_0804D59E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804D548 - - thumb_func_start sub_804D5A4 -sub_804D5A4: @ 804D5A4 - push {r4,r5,lr} - ldr r5, _0804D5E4 @ =gMain - ldr r0, _0804D5E8 @ =sub_804C718 - str r0, [r5, 0x8] - ldr r0, _0804D5EC @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _0804D5FC - bl IsLinkRfuTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _0804D620 - ldr r0, _0804D5F0 @ =gUnknown_2031C90 - ldr r0, [r0] - bl Free - bl FreeAllWindowBuffers - ldr r0, _0804D5F4 @ =gUnknown_2031DA8 - ldr r0, [r0] - bl Free - movs r0, 0 - str r0, [r5] - bl DestroyWirelessStatusIndicatorSprite - ldr r0, _0804D5F8 @ =sub_8050138 - bl SetMainCallback2 - b _0804D620 - .align 2, 0 -_0804D5E4: .4byte gMain -_0804D5E8: .4byte sub_804C718 -_0804D5EC: .4byte gWirelessCommType -_0804D5F0: .4byte gUnknown_2031C90 -_0804D5F4: .4byte gUnknown_2031DA8 -_0804D5F8: .4byte sub_8050138 -_0804D5FC: - ldr r0, _0804D628 @ =gReceivedRemoteLinkPlayers - ldrb r4, [r0] - cmp r4, 0 - bne _0804D620 - ldr r0, _0804D62C @ =gUnknown_2031C90 - ldr r0, [r0] - bl Free - bl FreeAllWindowBuffers - ldr r0, _0804D630 @ =gUnknown_2031DA8 - ldr r0, [r0] - bl Free - str r4, [r5] - ldr r0, _0804D634 @ =sub_8050138 - bl SetMainCallback2 -_0804D620: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804D628: .4byte gReceivedRemoteLinkPlayers -_0804D62C: .4byte gUnknown_2031C90 -_0804D630: .4byte gUnknown_2031DA8 -_0804D634: .4byte sub_8050138 - thumb_func_end sub_804D5A4 - - thumb_func_start sub_804D638 -sub_804D638: @ 804D638 - push {r4,lr} - bl sub_804E9E4 - bl sub_804F4DC - movs r0, 0 - bl sub_804EAE4 - movs r0, 0x1 - bl sub_804EAE4 - ldr r4, _0804D690 @ =gUnknown_2031DA8 - ldr r2, [r4] - ldrb r1, [r2] - adds r0, r1, 0x1 - strb r0, [r2] - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x18 - bl SetGpuReg - ldr r2, [r4] - ldrb r1, [r2, 0x1] - adds r0, r1, 0 - adds r0, 0xFF - strb r0, [r2, 0x1] - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x1C - bl SetGpuReg - bl RunTextPrinters_CheckPrinter0Active - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804D690: .4byte gUnknown_2031DA8 - thumb_func_end sub_804D638 - - thumb_func_start sub_804D694 -sub_804D694: @ 804D694 - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - beq _0804D700 - cmp r4, 0x1 - bgt _0804D6AA - cmp r4, 0 - beq _0804D6B0 - b _0804D75A -_0804D6AA: - cmp r4, 0x2 - beq _0804D728 - b _0804D75A -_0804D6B0: - ldr r0, _0804D6F0 @ =gUnknown_8E9CEDC - movs r1, 0 - movs r2, 0x60 - bl LoadPalette - ldr r1, _0804D6F4 @ =gUnknown_8E9CF5C - movs r2, 0x94 - lsls r2, 5 - movs r0, 0x1 - movs r3, 0 - bl LoadBgTiles - ldr r1, _0804D6F8 @ =gUnknown_8E9E9FC - movs r0, 0x20 - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBufferRect_ChangePalette - ldr r1, _0804D6FC @ =gUnknown_8260C30 - movs r2, 0x80 - lsls r2, 4 - movs r0, 0x2 - movs r3, 0 - bl LoadBgTilemap - b _0804D75A - .align 2, 0 -_0804D6F0: .4byte gUnknown_8E9CEDC -_0804D6F4: .4byte gUnknown_8E9CF5C -_0804D6F8: .4byte gUnknown_8E9E9FC -_0804D6FC: .4byte gUnknown_8260C30 -_0804D700: - ldr r1, _0804D724 @ =gUnknown_8261430 - movs r2, 0x80 - lsls r2, 4 - movs r0, 0x3 - movs r3, 0 - bl LoadBgTilemap - movs r0, 0 - bl sub_804F284 - movs r0, 0x1 - bl sub_804F284 - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - b _0804D75A - .align 2, 0 -_0804D724: .4byte gUnknown_8261430 -_0804D728: - movs r5, 0x80 - lsls r5, 21 - movs r4, 0x3 -_0804D72E: - lsrs r0, r5, 24 - movs r1, 0 - bl SetGpuReg - movs r0, 0x80 - lsls r0, 18 - adds r5, r0 - subs r4, 0x1 - cmp r4, 0 - bge _0804D72E - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg -_0804D75A: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_804D694 - - thumb_func_start sub_804D764 -sub_804D764: @ 804D764 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r3, 0 - ldr r5, _0804D7B4 @ =gUnknown_2031DA8 - mov r8, r5 - ldr r0, _0804D7B8 @ =gSprites - mov r12, r0 - movs r1, 0x5 - negs r1, r1 - mov r9, r1 - movs r4, 0x6 - movs r7, 0x1 - movs r6, 0 -_0804D782: - mov r1, r8 - ldr r0, [r1] - adds r1, r0, 0 - adds r1, 0x36 - ldrb r1, [r1] - cmp r3, r1 - bge _0804D7BC - adds r0, 0x28 - adds r0, r3 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r12 - adds r1, 0x3E - ldrb r2, [r1] - mov r0, r9 - ands r0, r2 - strb r0, [r1] - ldr r0, [r5] - adds r0, 0x38 - adds r0, r3 - strb r7, [r0] - b _0804D7C2 - .align 2, 0 -_0804D7B4: .4byte gUnknown_2031DA8 -_0804D7B8: .4byte gSprites -_0804D7BC: - adds r0, 0x38 - adds r0, r3 - strb r6, [r0] -_0804D7C2: - mov r1, r8 - ldr r0, [r1] - adds r1, r0, 0 - adds r1, 0x37 - ldrb r1, [r1] - cmp r3, r1 - bge _0804D7F2 - adds r0, 0x2E - adds r0, r3 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r12 - adds r1, 0x3E - ldrb r2, [r1] - mov r0, r9 - ands r0, r2 - strb r0, [r1] - ldr r0, [r5] - adds r0, 0x38 - adds r0, r4 - strb r7, [r0] - b _0804D7F8 -_0804D7F2: - adds r0, 0x38 - adds r0, r4 - strb r6, [r0] -_0804D7F8: - adds r4, 0x1 - adds r3, 0x1 - cmp r3, 0x5 - ble _0804D782 - ldr r0, [r5] - adds r0, 0x44 - movs r1, 0x1 - strb r1, [r0] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_804D764 - - thumb_func_start sub_804D814 -sub_804D814: @ 804D814 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r3, 0 - cmp r3, r2 - bcs _0804D82E -_0804D820: - adds r0, r5, r3 - adds r1, r4, r3 - ldrb r1, [r1] - strb r1, [r0] - adds r3, 0x1 - cmp r3, r2 - bcc _0804D820 -_0804D82E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_804D814 - - thumb_func_start shedinja_maker_maybe -shedinja_maker_maybe: @ 804D834 - push {r4-r6,lr} - sub sp, 0xC - bl GetMultiplayerId - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0804D858 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x69 - ldrb r0, [r0] - cmp r0, 0x15 - bls _0804D84E - b _0804DB9E -_0804D84E: - lsls r0, 2 - ldr r1, _0804D85C @ =_0804D860 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804D858: .4byte gUnknown_2031DA8 -_0804D85C: .4byte _0804D860 - .align 2, 0 -_0804D860: - .4byte _0804D8B8 - .4byte _0804D8E4 - .4byte _0804DB78 - .4byte _0804D914 - .4byte _0804D928 - .4byte _0804D960 - .4byte _0804DB78 - .4byte _0804D97C - .4byte _0804D990 - .4byte _0804D9C8 - .4byte _0804DB78 - .4byte _0804D9E4 - .4byte _0804D9F8 - .4byte _0804DA30 - .4byte _0804DB78 - .4byte _0804DA58 - .4byte _0804DA6C - .4byte _0804DAA4 - .4byte _0804DB78 - .4byte _0804DACC - .4byte _0804DAE0 - .4byte _0804DB14 -_0804D8B8: - ldr r0, _0804D8D8 @ =gBlockSendBuffer - ldr r1, _0804D8DC @ =gPlayerParty - movs r2, 0xC8 - bl sub_804D814 - ldr r3, _0804D8E0 @ =gUnknown_2031DA8 - ldr r1, [r3] - adds r1, 0x69 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r0, [r3] - adds r0, 0xA8 - strb r2, [r0] - b _0804DB9E - .align 2, 0 -_0804D8D8: .4byte gBlockSendBuffer -_0804D8DC: .4byte gPlayerParty -_0804D8E0: .4byte gUnknown_2031DA8 -_0804D8E4: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - bne _0804D8F0 - b _0804DB9E -_0804D8F0: - bl GetBlockReceivedStatus - lsls r0, 24 - cmp r0, 0 - bne _0804D904 - ldr r0, _0804D900 @ =gUnknown_2031DA8 - ldr r1, [r0] - b _0804DB96 - .align 2, 0 -_0804D900: .4byte gUnknown_2031DA8 -_0804D904: - bl ResetBlockReceivedFlags - ldr r0, _0804D910 @ =gUnknown_2031DA8 - ldr r1, [r0] - b _0804DB96 - .align 2, 0 -_0804D910: .4byte gUnknown_2031DA8 -_0804D914: - cmp r5, 0 - bne _0804D91E - movs r0, 0x1 - bl sub_800A474 -_0804D91E: - ldr r0, _0804D924 @ =gUnknown_2031DA8 - ldr r1, [r0] - b _0804DB96 - .align 2, 0 -_0804D924: .4byte gUnknown_2031DA8 -_0804D928: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _0804D936 - b _0804DB9E -_0804D936: - ldr r0, _0804D954 @ =gEnemyParty - movs r2, 0x1 - adds r1, r5, 0 - eors r1, r2 - lsls r1, 8 - ldr r2, _0804D958 @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0xC8 - bl sub_804D814 - bl ResetBlockReceivedFlags - ldr r0, _0804D95C @ =gUnknown_2031DA8 - ldr r1, [r0] - b _0804DB96 - .align 2, 0 -_0804D954: .4byte gEnemyParty -_0804D958: .4byte gBlockRecvBuffer -_0804D95C: .4byte gUnknown_2031DA8 -_0804D960: - ldr r0, _0804D970 @ =gBlockSendBuffer - ldr r1, _0804D974 @ =gUnknown_202434C - movs r2, 0xC8 - bl sub_804D814 - ldr r0, _0804D978 @ =gUnknown_2031DA8 - ldr r1, [r0] - b _0804DB96 - .align 2, 0 -_0804D970: .4byte gBlockSendBuffer -_0804D974: .4byte gUnknown_202434C -_0804D978: .4byte gUnknown_2031DA8 -_0804D97C: - cmp r5, 0 - bne _0804D986 - movs r0, 0x1 - bl sub_800A474 -_0804D986: - ldr r0, _0804D98C @ =gUnknown_2031DA8 - ldr r1, [r0] - b _0804DB96 - .align 2, 0 -_0804D98C: .4byte gUnknown_2031DA8 -_0804D990: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _0804D99E - b _0804DB9E -_0804D99E: - ldr r0, _0804D9BC @ =gUnknown_20240F4 - movs r2, 0x1 - adds r1, r5, 0 - eors r1, r2 - lsls r1, 8 - ldr r2, _0804D9C0 @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0xC8 - bl sub_804D814 - bl ResetBlockReceivedFlags - ldr r0, _0804D9C4 @ =gUnknown_2031DA8 - ldr r1, [r0] - b _0804DB96 - .align 2, 0 -_0804D9BC: .4byte gUnknown_20240F4 -_0804D9C0: .4byte gBlockRecvBuffer -_0804D9C4: .4byte gUnknown_2031DA8 -_0804D9C8: - ldr r0, _0804D9D8 @ =gBlockSendBuffer - ldr r1, _0804D9DC @ =gUnknown_2024414 - movs r2, 0xC8 - bl sub_804D814 - ldr r0, _0804D9E0 @ =gUnknown_2031DA8 - ldr r1, [r0] - b _0804DB96 - .align 2, 0 -_0804D9D8: .4byte gBlockSendBuffer -_0804D9DC: .4byte gUnknown_2024414 -_0804D9E0: .4byte gUnknown_2031DA8 -_0804D9E4: - cmp r5, 0 - bne _0804D9EE - movs r0, 0x1 - bl sub_800A474 -_0804D9EE: - ldr r0, _0804D9F4 @ =gUnknown_2031DA8 - ldr r1, [r0] - b _0804DB96 - .align 2, 0 -_0804D9F4: .4byte gUnknown_2031DA8 -_0804D9F8: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _0804DA06 - b _0804DB9E -_0804DA06: - ldr r0, _0804DA24 @ =gUnknown_20241BC - movs r2, 0x1 - adds r1, r5, 0 - eors r1, r2 - lsls r1, 8 - ldr r2, _0804DA28 @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0xC8 - bl sub_804D814 - bl ResetBlockReceivedFlags - ldr r0, _0804DA2C @ =gUnknown_2031DA8 - ldr r1, [r0] - b _0804DB96 - .align 2, 0 -_0804DA24: .4byte gUnknown_20241BC -_0804DA28: .4byte gBlockRecvBuffer -_0804DA2C: .4byte gUnknown_2031DA8 -_0804DA30: - ldr r0, _0804DA48 @ =gBlockSendBuffer - ldr r1, _0804DA4C @ =gSaveBlock1Ptr - ldr r1, [r1] - ldr r2, _0804DA50 @ =0x00002cd0 - adds r1, r2 - movs r2, 0xDC - bl sub_804D814 - ldr r0, _0804DA54 @ =gUnknown_2031DA8 - ldr r1, [r0] - b _0804DB96 - .align 2, 0 -_0804DA48: .4byte gBlockSendBuffer -_0804DA4C: .4byte gSaveBlock1Ptr -_0804DA50: .4byte 0x00002cd0 -_0804DA54: .4byte gUnknown_2031DA8 -_0804DA58: - cmp r5, 0 - bne _0804DA62 - movs r0, 0x3 - bl sub_800A474 -_0804DA62: - ldr r0, _0804DA68 @ =gUnknown_2031DA8 - ldr r1, [r0] - b _0804DB96 - .align 2, 0 -_0804DA68: .4byte gUnknown_2031DA8 -_0804DA6C: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _0804DA7A - b _0804DB9E -_0804DA7A: - ldr r0, _0804DA98 @ =gUnknown_2031CCC - movs r2, 0x1 - adds r1, r5, 0 - eors r1, r2 - lsls r1, 8 - ldr r2, _0804DA9C @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0xD8 - bl sub_804D814 - bl ResetBlockReceivedFlags - ldr r0, _0804DAA0 @ =gUnknown_2031DA8 - ldr r1, [r0] - b _0804DB96 - .align 2, 0 -_0804DA98: .4byte gUnknown_2031CCC -_0804DA9C: .4byte gBlockRecvBuffer -_0804DAA0: .4byte gUnknown_2031DA8 -_0804DAA4: - ldr r0, _0804DABC @ =gBlockSendBuffer - ldr r1, _0804DAC0 @ =gSaveBlock1Ptr - ldr r1, [r1] - ldr r2, _0804DAC4 @ =0x0000309c - adds r1, r2 - movs r2, 0xB - bl sub_804D814 - ldr r0, _0804DAC8 @ =gUnknown_2031DA8 - ldr r1, [r0] - b _0804DB96 - .align 2, 0 -_0804DABC: .4byte gBlockSendBuffer -_0804DAC0: .4byte gSaveBlock1Ptr -_0804DAC4: .4byte 0x0000309c -_0804DAC8: .4byte gUnknown_2031DA8 -_0804DACC: - cmp r5, 0 - bne _0804DAD6 - movs r0, 0x4 - bl sub_800A474 -_0804DAD6: - ldr r0, _0804DADC @ =gUnknown_2031DA8 - ldr r1, [r0] - b _0804DB96 - .align 2, 0 -_0804DADC: .4byte gUnknown_2031DA8 -_0804DAE0: - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0804DB9E - ldr r4, _0804DB0C @ =gUnknown_2031DA8 - ldr r0, [r4] - adds r0, 0xA9 - movs r2, 0x1 - adds r1, r5, 0 - eors r1, r2 - lsls r1, 8 - ldr r2, _0804DB10 @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0xB - bl sub_804D814 - bl ResetBlockReceivedFlags - ldr r1, [r4] - b _0804DB96 - .align 2, 0 -_0804DB0C: .4byte gUnknown_2031DA8 -_0804DB10: .4byte gBlockRecvBuffer -_0804DB14: - ldr r4, _0804DB68 @ =gEnemyParty - ldr r6, _0804DB6C @ =0x0000012f - movs r5, 0x5 -_0804DB1A: - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - beq _0804DB5A - cmp r0, r6 - bne _0804DB5A - adds r0, r4, 0 - movs r1, 0x3 - bl GetMonData - cmp r0, 0x1 - beq _0804DB5A - adds r0, r4, 0 - movs r1, 0x2 - mov r2, sp - bl GetMonData - mov r0, sp - ldr r1, _0804DB70 @ =gUnknown_8262034 - bl StringCompareWithoutExtCtrlCodes - cmp r0, 0 - bne _0804DB5A - adds r0, r4, 0 - movs r1, 0x2 - ldr r2, _0804DB74 @ = gSpeciesNames + 0xD05 - bl SetMonData -_0804DB5A: - adds r4, 0x64 - subs r5, 0x1 - cmp r5, 0 - bge _0804DB1A - movs r0, 0x1 - b _0804DBA0 - .align 2, 0 -_0804DB68: .4byte gEnemyParty -_0804DB6C: .4byte 0x0000012f -_0804DB70: .4byte gUnknown_8262034 -_0804DB74: .4byte gSpeciesNames+0xD05 -_0804DB78: - ldr r2, _0804DBA8 @ =gUnknown_2031DA8 - ldr r1, [r2] - adds r1, 0xA8 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0xA8 - ldrb r0, [r1] - cmp r0, 0xA - bls _0804DB9E - movs r0, 0 - strb r0, [r1] - ldr r1, [r2] -_0804DB96: - adds r1, 0x69 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804DB9E: - movs r0, 0 -_0804DBA0: - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0804DBA8: .4byte gUnknown_2031DA8 - thumb_func_end shedinja_maker_maybe - - thumb_func_start sub_804DBAC -sub_804DBAC: @ 804DBAC - push {lr} - ldr r0, _0804DBC8 @ =gUnknown_841E0A5 - ldr r1, _0804DBCC @ =gUnknown_2031DA8 - ldr r1, [r1] - adds r1, 0x72 - ldrh r1, [r1] - lsls r1, 5 - ldr r2, _0804DBD0 @ =0x06010000 - adds r1, r2 - movs r2, 0x18 - bl sub_804F728 - pop {r0} - bx r0 - .align 2, 0 -_0804DBC8: .4byte gUnknown_841E0A5 -_0804DBCC: .4byte gUnknown_2031DA8 -_0804DBD0: .4byte 0x06010000 - thumb_func_end sub_804DBAC - - thumb_func_start sub_804DBD4 -sub_804DBD4: @ 804DBD4 - push {r4,lr} - lsls r1, 24 - lsrs r4, r1, 24 - movs r2, 0x1 - adds r0, r4, 0 - ands r0, r2 - cmp r0, 0 - beq _0804DC58 - ldr r0, _0804DBFC @ =gBlockRecvBuffer - ldrh r1, [r0] - ldr r0, _0804DC00 @ =0x0000bbbb - cmp r1, r0 - beq _0804DC38 - cmp r1, r0 - bgt _0804DC08 - ldr r0, _0804DC04 @ =0x0000aabb - cmp r1, r0 - beq _0804DC28 - b _0804DC52 - .align 2, 0 -_0804DBFC: .4byte gBlockRecvBuffer -_0804DC00: .4byte 0x0000bbbb -_0804DC04: .4byte 0x0000aabb -_0804DC08: - ldr r0, _0804DC1C @ =0x0000bbcc - cmp r1, r0 - beq _0804DC48 - ldr r0, _0804DC20 @ =0x0000eeaa - cmp r1, r0 - bne _0804DC52 - ldr r0, _0804DC24 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x78 - b _0804DC4E - .align 2, 0 -_0804DC1C: .4byte 0x0000bbcc -_0804DC20: .4byte 0x0000eeaa -_0804DC24: .4byte gUnknown_2031DA8 -_0804DC28: - ldr r0, _0804DC34 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x78 - strb r2, [r0] - b _0804DC52 - .align 2, 0 -_0804DC34: .4byte gUnknown_2031DA8 -_0804DC38: - ldr r0, _0804DC44 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x7A - strb r2, [r0] - b _0804DC52 - .align 2, 0 -_0804DC44: .4byte gUnknown_2031DA8 -_0804DC48: - ldr r0, _0804DC80 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x7A -_0804DC4E: - movs r1, 0x2 - strb r1, [r0] -_0804DC52: - movs r0, 0 - bl ResetBlockReceivedFlag -_0804DC58: - movs r2, 0x2 - adds r0, r4, 0 - ands r0, r2 - cmp r0, 0 - beq _0804DCEA - ldr r3, _0804DC84 @ =gBlockRecvBuffer - movs r1, 0x80 - lsls r1, 1 - adds r0, r3, r1 - ldrh r1, [r0] - ldr r0, _0804DC88 @ =0x0000bbbb - cmp r1, r0 - beq _0804DCCC - cmp r1, r0 - bgt _0804DC90 - ldr r0, _0804DC8C @ =0x0000aabb - cmp r1, r0 - beq _0804DCB0 - b _0804DCE4 - .align 2, 0 -_0804DC80: .4byte gUnknown_2031DA8 -_0804DC84: .4byte gBlockRecvBuffer -_0804DC88: .4byte 0x0000bbbb -_0804DC8C: .4byte 0x0000aabb -_0804DC90: - ldr r0, _0804DCA4 @ =0x0000bbcc - cmp r1, r0 - beq _0804DCDC - ldr r0, _0804DCA8 @ =0x0000eeaa - cmp r1, r0 - bne _0804DCE4 - ldr r0, _0804DCAC @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x79 - b _0804DCE2 - .align 2, 0 -_0804DCA4: .4byte 0x0000bbcc -_0804DCA8: .4byte 0x0000eeaa -_0804DCAC: .4byte gUnknown_2031DA8 -_0804DCB0: - ldr r2, _0804DCC8 @ =gUnknown_2031DA8 - ldr r1, [r2] - movs r4, 0x81 - lsls r4, 1 - adds r0, r3, r4 - ldrb r0, [r0] - adds r0, 0x6 - adds r1, 0x7E - strb r0, [r1] - ldr r0, [r2] - adds r0, 0x79 - b _0804DCD2 - .align 2, 0 -_0804DCC8: .4byte gUnknown_2031DA8 -_0804DCCC: - ldr r0, _0804DCD8 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x7B -_0804DCD2: - movs r1, 0x1 - strb r1, [r0] - b _0804DCE4 - .align 2, 0 -_0804DCD8: .4byte gUnknown_2031DA8 -_0804DCDC: - ldr r0, _0804DCF0 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x7B -_0804DCE2: - strb r2, [r0] -_0804DCE4: - movs r0, 0x1 - bl ResetBlockReceivedFlag -_0804DCEA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804DCF0: .4byte gUnknown_2031DA8 - thumb_func_end sub_804DBD4 - - thumb_func_start sub_804DCF4 -sub_804DCF4: @ 804DCF4 - push {r4,r5,lr} - sub sp, 0x4 - lsls r1, 24 - lsrs r5, r1, 24 - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _0804DDD6 - ldr r2, _0804DD20 @ =gBlockRecvBuffer - ldrh r1, [r2] - ldr r0, _0804DD24 @ =0x0000ddee - cmp r1, r0 - beq _0804DDC0 - cmp r1, r0 - bgt _0804DD30 - ldr r0, _0804DD28 @ =0x0000ccdd - cmp r1, r0 - beq _0804DDA0 - ldr r0, _0804DD2C @ =0x0000dddd - cmp r1, r0 - beq _0804DD6C - b _0804DDD0 - .align 2, 0 -_0804DD20: .4byte gBlockRecvBuffer -_0804DD24: .4byte 0x0000ddee -_0804DD28: .4byte 0x0000ccdd -_0804DD2C: .4byte 0x0000dddd -_0804DD30: - ldr r0, _0804DD40 @ =0x0000eebb - cmp r1, r0 - beq _0804DD44 - adds r0, 0x11 - cmp r1, r0 - beq _0804DD68 - b _0804DDD0 - .align 2, 0 -_0804DD40: .4byte 0x0000eebb -_0804DD44: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - movs r0, 0x4 - bl sub_804F5BC - ldr r0, _0804DD64 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x6F - movs r1, 0xB - b _0804DDCE - .align 2, 0 -_0804DD64: .4byte gUnknown_2031DA8 -_0804DD68: - movs r0, 0x5 - b _0804DDC2 -_0804DD6C: - ldr r4, _0804DD9C @ =gUnknown_2031DA8 - ldr r1, [r4] - ldrb r0, [r2, 0x2] - adds r0, 0x6 - adds r1, 0x7E - strb r0, [r1] - movs r0, 0 - bl rbox_fill_rectangle - ldr r0, [r4] - adds r0, 0x35 - ldrb r0, [r0] - bl sub_804EAAC - ldr r0, [r4] - adds r0, 0x7E - ldrb r0, [r0] - bl sub_804EAAC - ldr r0, [r4] - adds r0, 0x6F - movs r1, 0x7 - b _0804DDCE - .align 2, 0 -_0804DD9C: .4byte gUnknown_2031DA8 -_0804DDA0: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0804DDBC @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x6F - movs r1, 0xA - b _0804DDCE - .align 2, 0 -_0804DDBC: .4byte gUnknown_2031DA8 -_0804DDC0: - movs r0, 0x1 -_0804DDC2: - bl sub_804F5BC - ldr r0, _0804DDEC @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x6F - movs r1, 0x8 -_0804DDCE: - strb r1, [r0] -_0804DDD0: - movs r0, 0 - bl ResetBlockReceivedFlag -_0804DDD6: - movs r0, 0x2 - ands r0, r5 - cmp r0, 0 - beq _0804DDE4 - movs r0, 0x1 - bl ResetBlockReceivedFlag -_0804DDE4: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804DDEC: .4byte gUnknown_2031DA8 - thumb_func_end sub_804DCF4 - - thumb_func_start sub_804DDF0 -sub_804DDF0: @ 804DDF0 - push {r4-r6,lr} - sub sp, 0x4 - ldr r6, _0804DE4C @ =gUnknown_2031DA8 - ldr r2, [r6] - adds r1, r2, 0 - adds r1, 0x78 - ldrb r0, [r1] - cmp r0, 0 - bne _0804DE04 - b _0804DF38 -_0804DE04: - adds r0, r2, 0 - adds r0, 0x79 - ldrb r0, [r0] - cmp r0, 0 - bne _0804DE10 - b _0804DF38 -_0804DE10: - ldrh r1, [r1] - ldr r0, _0804DE50 @ =0x00000101 - cmp r1, r0 - bne _0804DE58 - adds r1, r2, 0 - adds r1, 0x6F - movs r0, 0x6 - strb r0, [r1] - ldr r2, [r6] - adds r1, r2, 0 - adds r1, 0x80 - movs r4, 0 - ldr r0, _0804DE54 @ =0x0000dddd - strh r0, [r1] - adds r0, r2, 0 - adds r0, 0x35 - ldrb r1, [r0] - adds r0, 0x4D - strh r1, [r0] - movs r0, 0x5 - movs r1, 0 - bl sub_804F488 - ldr r0, [r6] - adds r2, r0, 0 - adds r2, 0x79 - strb r4, [r2] - adds r0, 0x78 - strb r4, [r0] - b _0804DF38 - .align 2, 0 -_0804DE4C: .4byte gUnknown_2031DA8 -_0804DE50: .4byte 0x00000101 -_0804DE54: .4byte 0x0000dddd -_0804DE58: - ldr r0, _0804DEA0 @ =0x00000201 - cmp r1, r0 - bne _0804DEA8 - movs r0, 0x1 - bl sub_804F5BC - ldr r1, [r6] - adds r2, r1, 0 - adds r2, 0x80 - movs r4, 0 - movs r3, 0 - ldr r0, _0804DEA4 @ =0x0000eecc - strh r0, [r2] - adds r1, 0x82 - strh r3, [r1] - movs r0, 0x5 - movs r1, 0 - bl sub_804F488 - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x7B - strb r4, [r1] - adds r0, 0x7A - strb r4, [r0] - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x79 - strb r4, [r1] - adds r0, 0x78 - strb r4, [r0] - ldr r0, [r6] - adds r0, 0x6F - movs r1, 0x8 - b _0804DF36 - .align 2, 0 -_0804DEA0: .4byte 0x00000201 -_0804DEA4: .4byte 0x0000eecc -_0804DEA8: - movs r0, 0x81 - lsls r0, 1 - cmp r1, r0 - bne _0804DEF4 - movs r0, 0x5 - bl sub_804F5BC - ldr r1, [r6] - adds r2, r1, 0 - adds r2, 0x80 - movs r4, 0 - movs r3, 0 - ldr r0, _0804DEF0 @ =0x0000ddee - strh r0, [r2] - adds r1, 0x82 - strh r3, [r1] - movs r0, 0x5 - movs r1, 0 - bl sub_804F488 - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x7B - strb r4, [r1] - adds r0, 0x7A - strb r4, [r0] - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x79 - strb r4, [r1] - adds r0, 0x78 - strb r4, [r0] - ldr r0, [r6] - adds r0, 0x6F - movs r1, 0x8 - b _0804DF36 - .align 2, 0 -_0804DEF0: .4byte 0x0000ddee -_0804DEF4: - ldr r0, _0804DFD8 @ =0x00000202 - cmp r1, r0 - bne _0804DF38 - adds r1, r2, 0 - adds r1, 0x80 - movs r5, 0 - movs r4, 0 - ldr r0, _0804DFDC @ =0x0000eebb - strh r0, [r1] - adds r0, r2, 0 - adds r0, 0x82 - strh r4, [r0] - movs r0, 0x5 - movs r1, 0 - bl sub_804F488 - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x79 - strb r5, [r1] - adds r0, 0x78 - strb r5, [r0] - ldr r0, [r6] - adds r0, 0x6F - movs r1, 0xB -_0804DF36: - strb r1, [r0] -_0804DF38: - ldr r5, _0804DFE0 @ =gUnknown_2031DA8 - ldr r3, [r5] - adds r1, r3, 0 - adds r1, 0x7A - ldrb r0, [r1] - cmp r0, 0 - beq _0804DFD0 - adds r0, r3, 0 - adds r0, 0x7B - ldrb r0, [r0] - cmp r0, 0 - beq _0804DFD0 - ldrh r1, [r1] - ldr r0, _0804DFE4 @ =0x00000101 - cmp r1, r0 - bne _0804DF86 - adds r1, r3, 0 - adds r1, 0x80 - movs r4, 0 - movs r2, 0 - ldr r0, _0804DFE8 @ =0x0000ccdd - strh r0, [r1] - adds r0, r3, 0 - adds r0, 0x82 - strh r2, [r0] - movs r0, 0x5 - movs r1, 0 - bl sub_804F488 - ldr r0, [r5] - adds r0, 0x7A - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x7B - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x6F - movs r1, 0x9 - strb r1, [r0] -_0804DF86: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x7A - ldrb r0, [r0] - cmp r0, 0x2 - beq _0804DF9C - adds r0, r1, 0 - adds r0, 0x7B - ldrb r0, [r0] - cmp r0, 0x2 - bne _0804DFD0 -_0804DF9C: - movs r0, 0x1 - bl sub_804F5BC - ldr r1, [r5] - adds r2, r1, 0 - adds r2, 0x80 - movs r4, 0 - movs r3, 0 - ldr r0, _0804DFEC @ =0x0000ddee - strh r0, [r2] - adds r1, 0x82 - strh r3, [r1] - movs r0, 0x5 - movs r1, 0 - bl sub_804F488 - ldr r0, [r5] - adds r0, 0x7A - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x7B - strb r4, [r0] - ldr r0, [r5] - adds r0, 0x6F - movs r1, 0x8 - strb r1, [r0] -_0804DFD0: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804DFD8: .4byte 0x00000202 -_0804DFDC: .4byte 0x0000eebb -_0804DFE0: .4byte gUnknown_2031DA8 -_0804DFE4: .4byte 0x00000101 -_0804DFE8: .4byte 0x0000ccdd -_0804DFEC: .4byte 0x0000ddee - thumb_func_end sub_804DDF0 - - thumb_func_start sub_804DFF0 -sub_804DFF0: @ 804DFF0 - push {r4,lr} - bl GetMultiplayerId - lsls r0, 24 - lsrs r4, r0, 24 - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _0804E018 - cmp r4, 0 - bne _0804E012 - movs r0, 0 - bl sub_804DBD4 - b _0804E018 -_0804E012: - adds r0, r4, 0 - bl sub_804DCF4 -_0804E018: - cmp r4, 0 - bne _0804E020 - bl sub_804DDF0 -_0804E020: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804DFF0 - - thumb_func_start sub_804E028 -sub_804E028: @ 804E028 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - movs r6, 0 - movs r5, 0 - ldr r2, _0804E05C @ =gUnknown_2031DA8 - ldr r3, [r2] - ldr r4, _0804E060 @ =gUnknown_8261D08 - lsls r2, r1, 1 - adds r2, r1 - lsls r2, 1 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r3, 0x38 - adds r2, r1 - adds r2, r4 -_0804E04E: - ldrb r1, [r2] - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0804E064 - adds r6, r1, 0 - b _0804E06C - .align 2, 0 -_0804E05C: .4byte gUnknown_2031DA8 -_0804E060: .4byte gUnknown_8261D08 -_0804E064: - adds r2, 0x1 - adds r5, 0x1 - cmp r5, 0x5 - ble _0804E04E -_0804E06C: - adds r0, r6, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_804E028 - - thumb_func_start TradeMenuMoveCursor -TradeMenuMoveCursor: @ 804E074 - push {r4-r7,lr} - adds r7, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldrb r0, [r7] - bl sub_804E028 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xC - bne _0804E0CC - ldr r5, _0804E0C4 @ =gUnknown_2031DA8 - ldr r0, [r5] - adds r0, 0x34 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0804E0C8 @ =gSprites - adds r0, r4 - movs r1, 0x1 - bl StartSpriteAnim - ldr r2, [r5] - adds r2, 0x34 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xE0 - strh r1, [r0, 0x20] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xA0 - strh r1, [r0, 0x22] - b _0804E114 - .align 2, 0 -_0804E0C4: .4byte gUnknown_2031DA8 -_0804E0C8: .4byte gSprites -_0804E0CC: - ldr r4, _0804E128 @ =gUnknown_2031DA8 - ldr r0, [r4] - adds r0, 0x34 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _0804E12C @ =gSprites - adds r0, r5 - movs r1, 0 - bl StartSpriteAnim - ldr r4, [r4] - adds r4, 0x34 - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldr r2, _0804E130 @ =gTradeMonSpriteCoords - lsls r3, r6, 1 - adds r0, r3, r2 - ldrb r0, [r0] - lsls r0, 3 - adds r0, 0x20 - strh r0, [r1, 0x20] - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - adds r2, 0x1 - adds r3, r2 - ldrb r0, [r3] - lsls r0, 3 - strh r0, [r1, 0x22] -_0804E114: - ldrb r0, [r7] - cmp r0, r6 - beq _0804E120 - movs r0, 0x5 - bl PlaySE -_0804E120: - strb r6, [r7] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804E128: .4byte gUnknown_2031DA8 -_0804E12C: .4byte gSprites -_0804E130: .4byte gTradeMonSpriteCoords - thumb_func_end TradeMenuMoveCursor - - thumb_func_start sub_804E134 -sub_804E134: @ 804E134 - push {r4,lr} - movs r0, 0 - bl sub_804F5BC - ldr r4, _0804E17C @ =gUnknown_2031DA8 - ldr r0, [r4] - adds r0, 0x6F - movs r1, 0x5 - strb r1, [r0] - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0804E184 - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0x80 - ldr r0, _0804E180 @ =0x0000aabb - strh r0, [r1] - adds r0, r2, 0 - adds r0, 0x35 - ldrb r1, [r0] - adds r0, 0x4D - strh r1, [r0] - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, 0x80 - movs r2, 0x14 - bl SendBlock - b _0804E18C - .align 2, 0 -_0804E17C: .4byte gUnknown_2031DA8 -_0804E180: .4byte 0x0000aabb -_0804E184: - ldr r0, [r4] - adds r0, 0x78 - movs r1, 0x1 - strb r1, [r0] -_0804E18C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804E134 - - thumb_func_start sub_804E194 -sub_804E194: @ 804E194 - push {r4,r5,lr} - sub sp, 0xC - ldr r0, _0804E1B4 @ =gMain - ldrh r1, [r0, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0804E1BC - ldr r0, _0804E1B8 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x35 - movs r1, 0 - bl TradeMenuMoveCursor - b _0804E208 - .align 2, 0 -_0804E1B4: .4byte gMain -_0804E1B8: .4byte gUnknown_2031DA8 -_0804E1BC: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0804E1D8 - ldr r0, _0804E1D4 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x35 - movs r1, 0x1 - bl TradeMenuMoveCursor - b _0804E208 - .align 2, 0 -_0804E1D4: .4byte gUnknown_2031DA8 -_0804E1D8: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0804E1F4 - ldr r0, _0804E1F0 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x35 - movs r1, 0x2 - bl TradeMenuMoveCursor - b _0804E208 - .align 2, 0 -_0804E1F0: .4byte gUnknown_2031DA8 -_0804E1F4: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0804E208 - ldr r0, _0804E27C @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x35 - movs r1, 0x3 - bl TradeMenuMoveCursor -_0804E208: - ldr r0, _0804E280 @ =gMain - ldrh r1, [r0, 0x2E] - movs r5, 0x1 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _0804E2DE - movs r0, 0x5 - bl PlaySE - ldr r4, _0804E27C @ =gUnknown_2031DA8 - ldr r0, [r4] - adds r0, 0x35 - ldrb r0, [r0] - cmp r0, 0x5 - bhi _0804E288 - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0xE - bl DrawTextBorderOuter - movs r0, 0x1 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, _0804E284 @ =gUnknown_8261EE4 - str r0, [sp] - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0x10 - movs r3, 0x2 - bl UnionRoomAndTradeMenuPrintOptions - movs r0, 0x10 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - movs r3, 0 - bl Menu_InitCursor - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x1 - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, [r4] - adds r0, 0x6F - movs r1, 0x1 - strb r1, [r0] - b _0804E2DE - .align 2, 0 -_0804E27C: .4byte gUnknown_2031DA8 -_0804E280: .4byte gMain -_0804E284: .4byte gUnknown_8261EE4 -_0804E288: - cmp r0, 0xB - bhi _0804E2A6 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, [r4] - adds r0, 0x6F - movs r1, 0x2 - strb r1, [r0] - b _0804E2DE -_0804E2A6: - cmp r0, 0xC - bne _0804E2DE - ldr r0, _0804E31C @ =gUnknown_8261FC4 - str r5, [sp] - movs r1, 0xE - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x3 - movs r2, 0 - movs r3, 0x2 - bl CreateYesNoMenu - ldr r0, [r4] - adds r0, 0x6F - movs r1, 0x4 - strb r1, [r0] - ldr r0, _0804E320 @ =gUnknown_8261ECC - ldr r0, [r0, 0x10] - ldr r1, [r4] - adds r1, 0x72 - ldrh r1, [r1] - lsls r1, 5 - ldr r2, _0804E324 @ =0x06010000 - adds r1, r2 - movs r2, 0x18 - bl sub_804F728 -_0804E2DE: - ldr r0, _0804E328 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _0804E314 - movs r2, 0 - ldr r3, _0804E32C @ =gUnknown_2031DA8 -_0804E2F0: - ldr r0, [r3] - lsls r1, r2, 1 - adds r0, 0x80 - adds r0, r1 - strh r2, [r0] - adds r2, 0x1 - cmp r2, 0x9 - ble _0804E2F0 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0804E32C @ =gUnknown_2031DA8 - ldr r1, [r1] - adds r1, 0x80 - movs r2, 0x14 - bl SendBlock -_0804E314: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804E31C: .4byte gUnknown_8261FC4 -_0804E320: .4byte gUnknown_8261ECC -_0804E324: .4byte 0x06010000 -_0804E328: .4byte gMain -_0804E32C: .4byte gUnknown_2031DA8 - thumb_func_end sub_804E194 - - thumb_func_start sub_804E330 -sub_804E330: @ 804E330 - push {lr} - bl sub_804F3B4 - ldr r3, _0804E378 @ =gUnknown_2031DA8 - ldr r0, [r3] - adds r0, 0x6F - movs r1, 0 - strb r1, [r0] - ldr r2, _0804E37C @ =gSprites - ldr r0, [r3] - adds r0, 0x34 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldr r0, _0804E380 @ =gUnknown_8261ECC - ldr r0, [r0, 0x4] - ldr r1, [r3] - adds r1, 0x72 - ldrh r1, [r1] - lsls r1, 5 - ldr r2, _0804E384 @ =0x06010000 - adds r1, r2 - movs r2, 0x18 - bl sub_804F728 - pop {r0} - bx r0 - .align 2, 0 -_0804E378: .4byte gUnknown_2031DA8 -_0804E37C: .4byte gSprites -_0804E380: .4byte gUnknown_8261ECC -_0804E384: .4byte 0x06010000 - thumb_func_end sub_804E330 - - thumb_func_start sub_804E388 -sub_804E388: @ 804E388 - push {lr} - sub sp, 0x4 - bl Menu_ProcessInputNoWrapAround - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _0804E3AA - cmp r0, r1 - ble _0804E462 - cmp r0, 0 - beq _0804E3B6 - cmp r0, 0x1 - beq _0804E3D4 - b _0804E462 -_0804E3AA: - movs r0, 0x5 - bl PlaySE - bl sub_804E330 - b _0804E462 -_0804E3B6: - str r0, [sp] - adds r0, r1, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0804E3D0 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x6F - movs r1, 0x2 - b _0804E460 - .align 2, 0 -_0804E3D0: .4byte gUnknown_2031DA8 -_0804E3D4: - ldr r0, _0804E3F4 @ =gPlayerParty - ldr r1, _0804E3F8 @ =gPlayerPartyCount - ldrb r1, [r1] - ldr r2, _0804E3FC @ =gUnknown_2031DA8 - ldr r2, [r2] - adds r2, 0x35 - ldrb r2, [r2] - bl sub_804FA14 - cmp r0, 0x5 - bhi _0804E462 - lsls r0, 2 - ldr r1, _0804E400 @ =_0804E404 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804E3F4: .4byte gPlayerParty -_0804E3F8: .4byte gPlayerPartyCount -_0804E3FC: .4byte gUnknown_2031DA8 -_0804E400: .4byte _0804E404 - .align 2, 0 -_0804E404: - .4byte _0804E41C - .4byte _0804E444 - .4byte _0804E44A - .4byte _0804E450 - .4byte _0804E44A - .4byte _0804E450 -_0804E41C: - bl sub_804E134 - ldr r2, _0804E43C @ =gSprites - ldr r0, _0804E440 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x34 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - b _0804E460 - .align 2, 0 -_0804E43C: .4byte gSprites -_0804E440: .4byte gUnknown_2031DA8 -_0804E444: - movs r0, 0x3 - movs r1, 0x3 - b _0804E454 -_0804E44A: - movs r0, 0x3 - movs r1, 0x6 - b _0804E454 -_0804E450: - movs r0, 0x3 - movs r1, 0x7 -_0804E454: - bl sub_804F488 - ldr r0, _0804E468 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x6F - movs r1, 0x8 -_0804E460: - strb r1, [r0] -_0804E462: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0804E468: .4byte gUnknown_2031DA8 - thumb_func_end sub_804E388 - - thumb_func_start sub_804E46C -sub_804E46C: @ 804E46C - push {lr} - ldr r0, _0804E490 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0804E482 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0804E48C -_0804E482: - movs r0, 0x5 - bl PlaySE - bl sub_804E330 -_0804E48C: - pop {r0} - bx r0 - .align 2, 0 -_0804E490: .4byte gMain - thumb_func_end sub_804E46C - - thumb_func_start sub_804E494 -sub_804E494: @ 804E494 - push {r4,lr} - sub sp, 0x4 - ldr r0, _0804E4CC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804E4FC - ldr r0, _0804E4D0 @ =gUnknown_2031DA8 - ldr r2, [r0] - adds r3, r2, 0 - adds r3, 0x35 - ldrb r1, [r3] - cmp r1, 0x5 - bhi _0804E4DC - ldr r0, _0804E4D4 @ =gPlayerParty - ldrb r1, [r3] - adds r2, 0x36 - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _0804E4D8 @ =sub_804CF14 - movs r4, 0x4 - str r4, [sp] - bl sub_81344F8 - b _0804E4F8 - .align 2, 0 -_0804E4CC: .4byte gPaletteFade -_0804E4D0: .4byte gUnknown_2031DA8 -_0804E4D4: .4byte gPlayerParty -_0804E4D8: .4byte sub_804CF14 -_0804E4DC: - ldr r0, _0804E504 @ =gEnemyParty - subs r1, 0x6 - lsls r1, 24 - lsrs r1, 24 - adds r2, 0x37 - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _0804E508 @ =sub_804CF14 - movs r4, 0x4 - str r4, [sp] - bl sub_81344F8 -_0804E4F8: - bl FreeAllWindowBuffers -_0804E4FC: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804E504: .4byte gEnemyParty -_0804E508: .4byte sub_804CF14 - thumb_func_end sub_804E494 - - thumb_func_start sub_804E50C -sub_804E50C: @ 804E50C - push {r4-r7,lr} - adds r5, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - movs r4, 0 - movs r3, 0 - ldr r6, _0804E588 @ =gUnknown_2031DA8 - ldr r7, _0804E58C @ =gEnemyParty - cmp r4, r1 - bge _0804E538 -_0804E524: - cmp r2, r3 - beq _0804E532 - adds r0, r5, r3 - ldrb r0, [r0] - adds r0, r4, r0 - lsls r0, 24 - lsrs r4, r0, 24 -_0804E532: - adds r3, 0x1 - cmp r3, r1 - blt _0804E524 -_0804E538: - ldr r0, [r6] - adds r0, 0x7E - ldrb r0, [r0] - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - movs r5, 0x64 - muls r0, r5 - adds r0, r7 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r1, r0, 16 - movs r0, 0xCD - lsls r0, 1 - cmp r1, r0 - beq _0804E564 - cmp r1, 0x97 - bne _0804E590 -_0804E564: - ldr r0, [r6] - adds r0, 0x7E - ldrb r0, [r0] - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - muls r0, r5 - adds r0, r7 - movs r1, 0x50 - bl GetMonData - cmp r0, 0 - bne _0804E590 - movs r0, 0x2 - b _0804E598 - .align 2, 0 -_0804E588: .4byte gUnknown_2031DA8 -_0804E58C: .4byte gEnemyParty -_0804E590: - cmp r4, 0 - beq _0804E596 - movs r4, 0x1 -_0804E596: - adds r0, r4, 0 -_0804E598: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_804E50C - - thumb_func_start sub_804E5A0 -sub_804E5A0: @ 804E5A0 - push {r4,r5,lr} - sub sp, 0xC - movs r2, 0 - ldr r0, _0804E5F4 @ =gUnknown_2031DA8 - ldr r1, [r0] - adds r3, r1, 0 - adds r3, 0x36 - adds r5, r0, 0 - ldrb r0, [r3] - cmp r2, r0 - bge _0804E5CC - adds r4, r1, 0 - adds r4, 0x45 -_0804E5BA: - mov r1, sp - adds r0, r1, r2 - adds r1, r4, r2 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - ldrb r0, [r3] - cmp r2, r0 - blt _0804E5BA -_0804E5CC: - adds r4, r5, 0 - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x36 - ldrb r1, [r1] - adds r0, 0x35 - ldrb r2, [r0] - mov r0, sp - bl sub_804E50C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0804E61C - cmp r0, 0x1 - bgt _0804E5F8 - cmp r0, 0 - beq _0804E5FE - b _0804E668 - .align 2, 0 -_0804E5F4: .4byte gUnknown_2031DA8 -_0804E5F8: - cmp r0, 0x2 - beq _0804E650 - b _0804E668 -_0804E5FE: - movs r0, 0x3 - movs r1, 0x3 - bl sub_804F488 - ldr r0, [r4] - adds r0, 0x80 - ldr r1, _0804E618 @ =0x0000bbcc - strh r1, [r0] - movs r0, 0xB4 - movs r1, 0 - bl sub_804F488 - b _0804E668 - .align 2, 0 -_0804E618: .4byte 0x0000bbcc -_0804E61C: - movs r0, 0x3 - movs r1, 0x1 - bl sub_804F488 - ldr r0, [r4] - adds r0, 0x80 - ldr r1, _0804E64C @ =0x0000bbbb - strh r1, [r0] - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _0804E668 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, 0x80 - movs r2, 0x14 - bl SendBlock - b _0804E668 - .align 2, 0 -_0804E64C: .4byte 0x0000bbbb -_0804E650: - movs r0, 0x3 - movs r1, 0x8 - bl sub_804F488 - ldr r0, [r5] - adds r0, 0x80 - ldr r1, _0804E670 @ =0x0000bbcc - strh r1, [r0] - movs r0, 0xB4 - movs r1, 0 - bl sub_804F488 -_0804E668: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804E670: .4byte 0x0000bbcc - thumb_func_end sub_804E5A0 - - thumb_func_start sub_804E674 -sub_804E674: @ 804E674 - push {r4,lr} - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _0804E696 - cmp r1, 0 - bgt _0804E690 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0804E6B0 - b _0804E6EE -_0804E690: - cmp r1, 0x1 - beq _0804E6B0 - b _0804E6EE -_0804E696: - bl sub_804E5A0 - ldr r0, _0804E6AC @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x6F - movs r1, 0x64 - strb r1, [r0] - movs r0, 0x11 - bl PutWindowTilemap - b _0804E6EE - .align 2, 0 -_0804E6AC: .4byte gUnknown_2031DA8 -_0804E6B0: - movs r0, 0x3 - movs r1, 0x1 - bl sub_804F488 - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _0804E6DE - ldr r4, _0804E6F4 @ =gUnknown_2031DA8 - ldr r0, [r4] - adds r0, 0x80 - ldr r1, _0804E6F8 @ =0x0000bbcc - strh r1, [r0] - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, 0x80 - movs r2, 0x14 - bl SendBlock -_0804E6DE: - ldr r0, _0804E6F4 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x6F - movs r1, 0x64 - strb r1, [r0] - movs r0, 0x11 - bl PutWindowTilemap -_0804E6EE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804E6F4: .4byte gUnknown_2031DA8 -_0804E6F8: .4byte 0x0000bbcc - thumb_func_end sub_804E674 - - thumb_func_start sub_804E6FC -sub_804E6FC: @ 804E6FC - push {r4-r6,lr} - movs r5, 0 - ldr r0, _0804E740 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x37 - ldrb r0, [r0] - subs r0, 0x4 - cmp r5, r0 - bge _0804E738 - movs r6, 0xC0 - lsls r6, 20 -_0804E712: - lsrs r4, r6, 24 - adds r0, r4, 0 - bl PutWindowTilemap - adds r0, r4, 0 - movs r1, 0x1 - bl CopyWindowToVram - movs r0, 0x80 - lsls r0, 17 - adds r6, r0 - adds r5, 0x1 - ldr r0, _0804E740 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x37 - ldrb r0, [r0] - subs r0, 0x4 - cmp r5, r0 - blt _0804E712 -_0804E738: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E740: .4byte gUnknown_2031DA8 - thumb_func_end sub_804E6FC - - thumb_func_start sub_804E744 -sub_804E744: @ 804E744 - push {r4,r5,lr} - bl Menu_ProcessInputNoWrapClearOnChoose - lsls r0, 24 - asrs r5, r0, 24 - cmp r5, 0 - beq _0804E766 - cmp r5, 0 - bgt _0804E760 - movs r0, 0x1 - negs r0, r0 - cmp r5, r0 - beq _0804E7B8 - b _0804E7C2 -_0804E760: - cmp r5, 0x1 - beq _0804E7B8 - b _0804E7C2 -_0804E766: - movs r0, 0x4 - bl sub_804F5BC - ldr r4, _0804E7AC @ =gUnknown_2031DA8 - ldr r0, [r4] - adds r2, r0, 0 - adds r2, 0x80 - ldr r1, _0804E7B0 @ =0x0000eeaa - strh r1, [r2] - adds r0, 0x82 - strh r5, [r0] - movs r0, 0x5 - movs r1, 0 - bl sub_804F488 - ldr r2, _0804E7B4 @ =gSprites - ldr r0, [r4] - adds r0, 0x34 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0x6F - movs r1, 0x64 - strb r1, [r0] - bl sub_804E6FC - b _0804E7C2 - .align 2, 0 -_0804E7AC: .4byte gUnknown_2031DA8 -_0804E7B0: .4byte 0x0000eeaa -_0804E7B4: .4byte gSprites -_0804E7B8: - movs r0, 0x5 - bl PlaySE - bl sub_804E330 -_0804E7C2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_804E744 - - thumb_func_start sub_804E7C8 -sub_804E7C8: @ 804E7C8 - push {r4,lr} - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - bne _0804E7F0 - movs r0, 0 - bl rbox_fill_rectangle - ldr r4, _0804E800 @ =gUnknown_2031DA8 - ldr r0, [r4] - adds r0, 0x35 - ldrb r0, [r0] - bl sub_804EAAC - ldr r0, [r4] - adds r0, 0x7E - ldrb r0, [r0] - bl sub_804EAAC -_0804E7F0: - ldr r0, _0804E800 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x6F - movs r1, 0x7 - strb r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804E800: .4byte gUnknown_2031DA8 - thumb_func_end sub_804E7C8 - - thumb_func_start sub_804E804 -sub_804E804: @ 804E804 - push {r4,lr} - ldr r4, _0804E828 @ =gUnknown_2031DA8 - ldr r0, [r4] - adds r0, 0x74 - ldrh r1, [r0] - ldr r0, _0804E82C @ =0x00000505 - cmp r1, r0 - bne _0804E820 - bl sub_804DBAC - ldr r0, [r4] - adds r0, 0x6F - movs r1, 0xE - strb r1, [r0] -_0804E820: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804E828: .4byte gUnknown_2031DA8 -_0804E82C: .4byte 0x00000505 - thumb_func_end sub_804E804 - - thumb_func_start sub_804E830 -sub_804E830: @ 804E830 - push {r4,r5,lr} - sub sp, 0xC - ldr r4, _0804E878 @ =gUnknown_2031DA8 - ldr r1, [r4] - adds r1, 0xA8 - ldrb r0, [r1] - adds r0, 0x1 - movs r5, 0 - strb r0, [r1] - ldr r0, [r4] - adds r0, 0xA8 - ldrb r0, [r0] - cmp r0, 0x78 - bls _0804E870 - ldr r0, _0804E87C @ =gUnknown_8261FC4 - movs r1, 0x1 - str r1, [sp] - movs r1, 0xE - str r1, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x3 - movs r2, 0 - movs r3, 0x2 - bl CreateYesNoMenu - ldr r0, [r4] - adds r0, 0xA8 - strb r5, [r0] - ldr r0, [r4] - adds r0, 0x6F - movs r1, 0x3 - strb r1, [r0] -_0804E870: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804E878: .4byte gUnknown_2031DA8 -_0804E87C: .4byte gUnknown_8261FC4 - thumb_func_end sub_804E830 - - thumb_func_start sub_804E880 -sub_804E880: @ 804E880 - push {r4-r6,lr} - ldr r0, _0804E8FC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0804E8F4 - movs r0, 0x5 - bl PlaySE - movs r0, 0 - bl rbox_fill_rectangle - movs r0, 0x1 - bl rbox_fill_rectangle - movs r6, 0 - movs r5, 0xE0 - lsls r5, 20 -_0804E8A6: - lsrs r4, r5, 24 - adds r0, r4, 0 - movs r1, 0 - bl FillWindowPixelBuffer - adds r0, r4, 0 - bl rbox_fill_rectangle - movs r0, 0x80 - lsls r0, 17 - adds r5, r0 - adds r6, 0x1 - cmp r6, 0x3 - ble _0804E8A6 - movs r0, 0 - bl sub_804F3C8 - movs r0, 0x1 - bl sub_804F3C8 - ldr r2, _0804E900 @ =gUnknown_2031DA8 - ldr r0, [r2] - adds r0, 0x6F - movs r1, 0 - strb r1, [r0] - ldr r3, _0804E904 @ =gSprites - ldr r0, [r2] - adds r0, 0x34 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] -_0804E8F4: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804E8FC: .4byte gMain -_0804E900: .4byte gUnknown_2031DA8 -_0804E904: .4byte gSprites - thumb_func_end sub_804E880 - - thumb_func_start sub_804E908 -sub_804E908: @ 804E908 - push {lr} - ldr r0, _0804E924 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0804E93C - ldr r0, _0804E928 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _0804E92C - bl sub_800AB9C - b _0804E932 - .align 2, 0 -_0804E924: .4byte gPaletteFade -_0804E928: .4byte gWirelessCommType -_0804E92C: - movs r0, 0xC - bl sub_800AA80 -_0804E932: - ldr r0, _0804E940 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x6F - movs r1, 0xC - strb r1, [r0] -_0804E93C: - pop {r0} - bx r0 - .align 2, 0 -_0804E940: .4byte gUnknown_2031DA8 - thumb_func_end sub_804E908 - - thumb_func_start sub_804E944 -sub_804E944: @ 804E944 - push {lr} - ldr r0, _0804E978 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _0804E988 - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _0804E9AA - ldr r0, _0804E97C @ =gUnknown_2031C90 - ldr r0, [r0] - bl Free - ldr r0, _0804E980 @ =gUnknown_2031DA8 - ldr r0, [r0] - bl Free - bl FreeAllWindowBuffers - bl DestroyWirelessStatusIndicatorSprite - ldr r0, _0804E984 @ =c2_8056854 - bl SetMainCallback2 - b _0804E9AA - .align 2, 0 -_0804E978: .4byte gWirelessCommType -_0804E97C: .4byte gUnknown_2031C90 -_0804E980: .4byte gUnknown_2031DA8 -_0804E984: .4byte c2_8056854 -_0804E988: - ldr r0, _0804E9B0 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0804E9AA - ldr r0, _0804E9B4 @ =gUnknown_2031C90 - ldr r0, [r0] - bl Free - ldr r0, _0804E9B8 @ =gUnknown_2031DA8 - ldr r0, [r0] - bl Free - bl FreeAllWindowBuffers - ldr r0, _0804E9BC @ =c2_8056854 - bl SetMainCallback2 -_0804E9AA: - pop {r0} - bx r0 - .align 2, 0 -_0804E9B0: .4byte gReceivedRemoteLinkPlayers -_0804E9B4: .4byte gUnknown_2031C90 -_0804E9B8: .4byte gUnknown_2031DA8 -_0804E9BC: .4byte c2_8056854 - thumb_func_end sub_804E944 - - thumb_func_start sub_804E9C0 -sub_804E9C0: @ 804E9C0 - push {lr} - movs r0, 0 - bl sub_80FA484 - lsls r0, 24 - cmp r0, 0 - bne _0804E9DC - bl sub_800AB9C - ldr r0, _0804E9E0 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x6F - movs r1, 0xD - strb r1, [r0] -_0804E9DC: - pop {r0} - bx r0 - .align 2, 0 -_0804E9E0: .4byte gUnknown_2031DA8 - thumb_func_end sub_804E9C0 - - thumb_func_start sub_804E9E4 -sub_804E9E4: @ 804E9E4 - push {lr} - ldr r0, _0804E9FC @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x6F - ldrb r0, [r0] - cmp r0, 0x10 - bhi _0804EAA6 - lsls r0, 2 - ldr r1, _0804EA00 @ =_0804EA04 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804E9FC: .4byte gUnknown_2031DA8 -_0804EA00: .4byte _0804EA04 - .align 2, 0 -_0804EA04: - .4byte _0804EA48 - .4byte _0804EA4E - .4byte _0804EA54 - .4byte _0804EA5A - .4byte _0804EA60 - .4byte _0804EAA6 - .4byte _0804EA66 - .4byte _0804EA6C - .4byte _0804EA72 - .4byte _0804EA78 - .4byte _0804EA7E - .4byte _0804EA84 - .4byte _0804EA8A - .4byte _0804EA90 - .4byte _0804EA96 - .4byte _0804EA9C - .4byte _0804EAA2 -_0804EA48: - bl sub_804E194 - b _0804EAA6 -_0804EA4E: - bl sub_804E388 - b _0804EAA6 -_0804EA54: - bl sub_804E494 - b _0804EAA6 -_0804EA5A: - bl sub_804E674 - b _0804EAA6 -_0804EA60: - bl sub_804E744 - b _0804EAA6 -_0804EA66: - bl sub_804E7C8 - b _0804EAA6 -_0804EA6C: - bl sub_804E804 - b _0804EAA6 -_0804EA72: - bl sub_804E880 - b _0804EAA6 -_0804EA78: - bl sub_804D50C - b _0804EAA6 -_0804EA7E: - bl sub_804D548 - b _0804EAA6 -_0804EA84: - bl sub_804E908 - b _0804EAA6 -_0804EA8A: - bl sub_804E944 - b _0804EAA6 -_0804EA90: - bl sub_804D5A4 - b _0804EAA6 -_0804EA96: - bl sub_804E830 - b _0804EAA6 -_0804EA9C: - bl sub_804E46C - b _0804EAA6 -_0804EAA2: - bl sub_804E9C0 -_0804EAA6: - pop {r0} - bx r0 - thumb_func_end sub_804E9E4 - - thumb_func_start sub_804EAAC -sub_804EAAC: @ 804EAAC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - movs r1, 0x6 - bl __udivsi3 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r3, _0804EAE0 @ =gUnknown_2031DA8 - ldr r0, [r3] - adds r0, 0x74 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - bne _0804EAD8 - movs r0, 0x1 - strb r0, [r1] - ldr r0, [r3] - adds r0, 0x76 - adds r0, r2 - strb r4, [r0] -_0804EAD8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804EAE0: .4byte gUnknown_2031DA8 - thumb_func_end sub_804EAAC - - thumb_func_start sub_804EAE4 -sub_804EAE4: @ 804EAE4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x68 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0804EB34 @ =gUnknown_2031DA8 - ldr r4, [r0] - adds r0, r4, 0 - adds r0, 0x76 - adds r0, r7 - ldrb r0, [r0] - movs r1, 0x1 - str r1, [sp, 0x60] - cmp r0, 0x5 - bhi _0804EB0C - movs r2, 0 - str r2, [sp, 0x60] -_0804EB0C: - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - movs r0, 0 - mov r8, r0 - adds r0, r4, 0 - adds r0, 0x74 - adds r3, r0, r7 - ldrb r0, [r3] - cmp r0, 0x2 - bne _0804EB2A - b _0804ECB4 -_0804EB2A: - cmp r0, 0x2 - bgt _0804EB38 - cmp r0, 0x1 - beq _0804EB46 - b _0804EE54 - .align 2, 0 -_0804EB34: .4byte gUnknown_2031DA8 -_0804EB38: - cmp r0, 0x3 - bne _0804EB3E - b _0804ECEC -_0804EB3E: - cmp r0, 0x4 - bne _0804EB44 - b _0804EE1C -_0804EB44: - b _0804EE54 -_0804EB46: - movs r5, 0 - adds r0, r4, 0 - adds r0, 0x36 - adds r0, r7 - ldr r1, [sp, 0x60] - lsls r1, 1 - mov r9, r1 - lsls r6, r7, 1 - lsls r2, r7, 4 - str r2, [sp, 0x64] - ldrb r0, [r0] - cmp r8, r0 - bcs _0804EB9A - ldr r0, _0804ECA0 @ =gSprites - mov r8, r0 - ldr r4, _0804ECA4 @ =gUnknown_2031DA8 - ldr r0, [sp, 0x60] - add r0, r9 - lsls r2, r0, 1 - movs r3, 0x4 -_0804EB6E: - ldr r0, [r4] - adds r1, r5, r2 - adds r0, 0x28 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r3 - strb r1, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r4] - adds r0, 0x36 - adds r0, r7 - ldrb r0, [r0] - cmp r5, r0 - bcc _0804EB6E -_0804EB9A: - movs r5, 0 - adds r0, r6, r7 - lsls r0, 1 - adds r4, r0, 0x2 -_0804EBA2: - lsls r0, r5, 24 - asrs r0, 24 - adds r0, r4 - lsls r0, 24 - lsrs r0, 24 - bl ClearWindowTilemap - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _0804EBA2 - ldr r1, _0804ECA0 @ =gSprites - mov r8, r1 - ldr r2, _0804ECA4 @ =gUnknown_2031DA8 - ldr r0, [r2] - ldr r6, [sp, 0x60] - add r6, r9 - lsls r3, r6, 1 - add r10, r3 - adds r0, 0x28 - add r0, r10 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldr r0, _0804ECA4 @ =gUnknown_2031DA8 - ldr r4, [r0] - adds r4, 0x28 - add r4, r10 - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - movs r1, 0x14 - strh r1, [r0, 0x2E] - ldrb r0, [r4] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - add r2, r8 - ldr r5, _0804ECA8 @ =gTradeMonSpriteCoords - lsls r6, 2 - adds r0, r6, r5 - ldrb r0, [r0] - adds r3, 0x1 - lsls r3, 1 - adds r3, r5 - ldrb r1, [r3] - adds r0, r1 - asrs r0, 1 - lsls r0, 3 - adds r0, 0xE - strh r0, [r2, 0x32] - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - add r1, r8 - adds r5, 0x1 - adds r6, r5 - ldrb r0, [r6] - lsls r0, 3 - subs r0, 0xC - strh r0, [r1, 0x36] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - ldr r1, _0804ECAC @ =SpriteCB_MonIcon - bl StoreSpriteCallbackInData6 - ldr r2, _0804ECA4 @ =gUnknown_2031DA8 - ldr r1, [r2] - adds r1, 0x74 - adds r1, r7 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - adds r0, 0x28 - add r0, r10 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - bl sub_8075490 - ldr r1, _0804ECB0 @ =gUnknown_8260A32 - ldr r0, [sp, 0x64] - subs r2, r0, r7 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0xF - str r0, [sp] - movs r0, 0x11 - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - movs r0, 0x1 - movs r3, 0 - bl CopyToBgTilemapBufferRect_ChangePalette - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r1, [sp, 0x60] - cmp r1, 0 - beq _0804EC98 - b _0804EE54 -_0804EC98: - bl sub_804F3B4 - b _0804EE54 - .align 2, 0 -_0804ECA0: .4byte gSprites -_0804ECA4: .4byte gUnknown_2031DA8 -_0804ECA8: .4byte gTradeMonSpriteCoords -_0804ECAC: .4byte SpriteCB_MonIcon -_0804ECB0: .4byte gUnknown_8260A32 -_0804ECB4: - ldr r2, _0804ECE4 @ =gSprites - ldr r1, [sp, 0x60] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 1 - add r0, r10 - adds r1, r4, 0 - adds r1, 0x28 - adds r1, r0 - ldrb r1, [r1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0804ECE8 @ =SpriteCB_MonIcon - cmp r1, r0 - beq _0804ECDC - b _0804EE54 -_0804ECDC: - movs r0, 0x3 - strb r0, [r3] - b _0804EE54 - .align 2, 0 -_0804ECE4: .4byte gSprites -_0804ECE8: .4byte SpriteCB_MonIcon -_0804ECEC: - ldr r1, _0804EE08 @ =gUnknown_8260834 - ldr r0, [sp, 0x60] - lsls r2, r0, 4 - subs r2, r0 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0xF - str r0, [sp] - movs r0, 0x11 - str r0, [sp, 0x4] - mov r0, r8 - str r0, [sp, 0x8] - movs r0, 0x1 - movs r3, 0 - bl CopyToBgTilemapBufferRect_ChangePalette - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - ldr r6, _0804EE0C @ =gSprites - ldr r1, _0804EE10 @ =gUnknown_2031DA8 - ldr r4, [r1] - ldr r2, [sp, 0x60] - lsls r3, r2, 1 - adds r3, r2 - lsls r1, r3, 1 - mov r2, r10 - adds r0, r2, r1 - adds r4, 0x28 - adds r4, r0 - ldrb r0, [r4] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r6 - ldr r5, _0804EE14 @ =gTradeMonSpriteCoords - lsls r3, 2 - adds r0, r3, r5 - ldrb r0, [r0] - adds r1, 0x1 - lsls r1, 1 - adds r1, r5 - ldrb r1, [r1] - adds r0, r1 - asrs r0, 1 - lsls r0, 3 - adds r0, 0xE - strh r0, [r2, 0x20] - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - adds r5, 0x1 - adds r3, r5 - ldrb r0, [r3] - lsls r0, 3 - subs r0, 0xC - strh r0, [r1, 0x22] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - mov r1, r8 - strh r1, [r0, 0x24] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - mov r2, r8 - strh r2, [r0, 0x26] - add r0, sp, 0x14 - ldr r1, [sp, 0x60] - mov r2, r10 - bl sub_804EE6C - lsls r4, r7, 1 - adds r5, r4, 0 - adds r5, 0xE - lsls r5, 24 - lsrs r5, 24 - lsls r0, 24 - asrs r0, 24 - movs r2, 0x50 - subs r2, r0 - lsrs r0, r2, 31 - adds r2, r0 - asrs r2, 1 - lsls r2, 24 - lsrs r2, 24 - ldr r0, _0804EE18 @ =gUnknown_8261F18 - mov r8, r0 - str r0, [sp] - movs r1, 0 - str r1, [sp, 0x4] - add r0, sp, 0x14 - str r0, [sp, 0x8] - adds r0, r5, 0 - movs r3, 0x4 - bl AddTextPrinterParameterized3 - add r6, sp, 0x28 - adds r0, r6, 0 - ldr r1, [sp, 0x60] - mov r2, r10 - bl sub_804EED4 - adds r4, 0xF - lsls r4, 24 - lsrs r4, 24 - movs r1, 0 - str r1, [sp] - str r1, [sp, 0x4] - mov r2, r8 - str r2, [sp, 0x8] - str r1, [sp, 0xC] - str r6, [sp, 0x10] - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0 - movs r3, 0 - bl AddTextPrinterParameterized4 - adds r0, r5, 0 - bl PutWindowTilemap - adds r0, r5, 0 - movs r1, 0x3 - bl CopyWindowToVram - adds r0, r4, 0 - bl PutWindowTilemap - adds r0, r4, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, _0804EE10 @ =gUnknown_2031DA8 - ldr r1, [r0] - b _0804EE4A - .align 2, 0 -_0804EE08: .4byte gUnknown_8260834 -_0804EE0C: .4byte gSprites -_0804EE10: .4byte gUnknown_2031DA8 -_0804EE14: .4byte gTradeMonSpriteCoords -_0804EE18: .4byte gUnknown_8261F18 -_0804EE1C: - ldr r0, _0804EE64 @ =gUnknown_8262055 - lsls r1, r7, 1 - adds r4, r1, r0 - ldrb r2, [r4] - adds r2, 0x4 - lsls r2, 24 - lsrs r2, 24 - adds r0, 0x1 - adds r1, r0 - ldrb r3, [r1] - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - ldrb r0, [r4] - str r0, [sp] - ldrb r0, [r1] - str r0, [sp, 0x4] - adds r0, r7, 0 - mov r1, r10 - bl sub_804F08C - ldr r2, _0804EE68 @ =gUnknown_2031DA8 - ldr r1, [r2] -_0804EE4A: - adds r1, 0x74 - adds r1, r7 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0804EE54: - add sp, 0x68 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804EE64: .4byte gUnknown_8262055 -_0804EE68: .4byte gUnknown_2031DA8 - thumb_func_end sub_804EAE4 - - thumb_func_start sub_804EE6C -sub_804EE6C: @ 804EE6C - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - lsls r1, 24 - lsls r2, 24 - lsrs r2, 24 - cmp r1, 0 - bne _0804EE94 - movs r0, 0x64 - muls r0, r2 - ldr r1, _0804EE90 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - b _0804EEA4 - .align 2, 0 -_0804EE90: .4byte gPlayerParty -_0804EE94: - movs r0, 0x64 - muls r0, r2 - ldr r1, _0804EED0 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData -_0804EEA4: - adds r0, r4, 0 - mov r1, sp - bl StringCopy10 - movs r0, 0 - movs r1, 0x2 - bl GetFontAttribute - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0 - adds r1, r4, 0 - bl GetStringWidth - lsls r0, 24 - lsrs r0, 24 - add sp, 0xC - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0804EED0: .4byte gEnemyParty - thumb_func_end sub_804EE6C - - thumb_func_start sub_804EED4 -sub_804EED4: @ 804EED4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - adds r6, r0, 0 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r2, 24 - ldr r0, _0804EF1C @ =gUnknown_2031DA8 - ldr r1, [r0] - lsls r0, r7, 1 - adds r0, r7 - lsls r0, 1 - adds r0, r2, r0 - adds r1, 0x51 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - bne _0804EF8C - movs r4, 0 - movs r0, 0x64 - adds r5, r2, 0 - muls r5, r0 - ldr r0, _0804EF20 @ =gPlayerParty - mov r9, r0 - ldr r2, _0804EF24 @ =gEnemyParty - mov r8, r2 -_0804EF0E: - cmp r7, 0 - bne _0804EF28 - adds r1, r4, 0 - adds r1, 0xD - mov r2, r9 - b _0804EF2E - .align 2, 0 -_0804EF1C: .4byte gUnknown_2031DA8 -_0804EF20: .4byte gPlayerParty -_0804EF24: .4byte gEnemyParty -_0804EF28: - adds r1, r4, 0 - adds r1, 0xD - mov r2, r8 -_0804EF2E: - adds r0, r5, r2 - movs r2, 0 - bl GetMonData - lsls r1, r4, 1 - add r1, sp - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _0804EF0E - ldr r1, _0804EF80 @ =gUnknown_8261EB6 - adds r0, r6, 0 - bl StringCopy - movs r4, 0 -_0804EF50: - lsls r0, r4, 1 - mov r2, sp - adds r1, r2, r0 - ldrh r0, [r1] - cmp r0, 0 - beq _0804EF6C - adds r1, r0, 0 - movs r0, 0xD - muls r1, r0 - ldr r0, _0804EF84 @ =gMoveNames - adds r1, r0 - adds r0, r6, 0 - bl StringAppend -_0804EF6C: - adds r0, r6, 0 - ldr r1, _0804EF88 @ =gUnknown_8261EC7 - bl StringAppend - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _0804EF50 - b _0804EF9C - .align 2, 0 -_0804EF80: .4byte gUnknown_8261EB6 -_0804EF84: .4byte gMoveNames -_0804EF88: .4byte gUnknown_8261EC7 -_0804EF8C: - ldr r1, _0804EFAC @ =gUnknown_8261EB6 - adds r0, r6, 0 - bl StringCopy - ldr r1, _0804EFB0 @ =gUnknown_841E09F - adds r0, r6, 0 - bl StringAppend -_0804EF9C: - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804EFAC: .4byte gUnknown_8261EB6 -_0804EFB0: .4byte gUnknown_841E09F - thumb_func_end sub_804EED4 - - thumb_func_start sub_804EFB4 -sub_804EFB4: @ 804EFB4 - push {r4-r6,lr} - sub sp, 0xC - adds r4, r1, 0 - adds r6, r2, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 1 - adds r1, 0x2 - lsls r4, 24 - asrs r4, 24 - adds r4, r1 - lsls r4, 24 - lsrs r4, 24 - movs r5, 0 - movs r0, 0 - movs r1, 0x2 - bl GetFontAttribute - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0 - adds r1, r6, 0 - bl GetStringWidth - movs r2, 0x40 - subs r2, r0 - lsrs r2, 1 - lsls r2, 24 - lsrs r2, 24 - ldr r0, _0804F01C @ =gUnknown_8261F18 - str r0, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - adds r0, r4, 0 - movs r1, 0 - movs r3, 0x4 - bl AddTextPrinterParameterized3 - adds r0, r4, 0 - bl PutWindowTilemap - adds r0, r4, 0 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804F01C: .4byte gUnknown_8261F18 - thumb_func_end sub_804EFB4 - - thumb_func_start sub_804F020 -sub_804F020: @ 804F020 - push {r4-r7,lr} - sub sp, 0x34 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r7, _0804F080 @ =gEnemyParty - cmp r6, 0 - bne _0804F030 - ldr r7, _0804F084 @ =gPlayerParty -_0804F030: - movs r4, 0 - ldr r0, _0804F088 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x36 - adds r0, r6 - ldrb r0, [r0] - cmp r4, r0 - bcs _0804F076 - add r5, sp, 0x14 -_0804F042: - movs r0, 0x64 - muls r0, r4 - adds r0, r7, r0 - movs r1, 0x2 - mov r2, sp - bl GetMonData - adds r0, r5, 0 - mov r1, sp - bl StringCopy10 - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_804EFB4 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0804F088 @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x36 - adds r0, r6 - ldrb r0, [r0] - cmp r4, r0 - bcc _0804F042 -_0804F076: - add sp, 0x34 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F080: .4byte gEnemyParty -_0804F084: .4byte gPlayerParty -_0804F088: .4byte gUnknown_2031DA8 - thumb_func_end sub_804F020 - - thumb_func_start sub_804F08C -sub_804F08C: @ 804F08C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - ldr r4, [sp, 0x3C] - ldr r5, [sp, 0x40] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - lsls r3, 24 - lsrs r3, 24 - mov r10, r3 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r1, _0804F0E8 @ =gUnknown_8E9F1FC - movs r0, 0x6 - str r0, [sp] - movs r0, 0x3 - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - movs r0, 0x1 - adds r2, r4, 0 - adds r3, r5, 0 - bl CopyToBgTilemapBufferRect_ChangePalette - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - mov r0, r8 - cmp r0, 0 - bne _0804F0F0 - movs r0, 0x64 - muls r0, r7 - ldr r1, _0804F0EC @ =gPlayerParty - b _0804F0F6 - .align 2, 0 -_0804F0E8: .4byte gUnknown_8E9F1FC -_0804F0EC: .4byte gPlayerParty -_0804F0F0: - movs r0, 0x64 - muls r0, r7 - ldr r1, _0804F16C @ =gEnemyParty -_0804F0F6: - adds r0, r1 - movs r1, 0x38 - movs r2, 0 - bl GetMonData - lsls r0, 24 - lsrs r6, r0, 24 - ldr r4, _0804F170 @ =gUnknown_2031DA8 - ldr r5, [r4] - mov r1, r8 - lsls r2, r1, 1 - adds r1, r2, r1 - lsls r1, 1 - adds r1, r7, r1 - adds r0, r5, 0 - adds r0, 0x51 - adds r0, r1 - ldrb r0, [r0] - str r2, [sp, 0x18] - cmp r0, 0 - bne _0804F174 - adds r0, r6, 0 - movs r1, 0xA - bl __udivsi3 - lsls r0, 24 - lsrs r2, r0, 24 - mov r0, r10 - lsls r3, r0, 5 - cmp r2, 0 - beq _0804F148 - mov r1, r9 - adds r0, r1, r3 - lsls r0, 1 - movs r1, 0x8F - lsls r1, 4 - adds r5, r1 - adds r1, r5, r0 - adds r0, r2, 0 - adds r0, 0x60 - strh r0, [r1] -_0804F148: - ldr r4, [r4] - mov r1, r9 - adds r0, r1, r3 - adds r0, 0x1 - lsls r0, 1 - movs r3, 0x8F - lsls r3, 4 - adds r4, r3 - adds r4, r0 - adds r0, r6, 0 - movs r1, 0xA - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - adds r0, 0x70 - strh r0, [r4] - b _0804F1B2 - .align 2, 0 -_0804F16C: .4byte gEnemyParty -_0804F170: .4byte gUnknown_2031DA8 -_0804F174: - mov r1, r10 - lsls r0, r1, 5 - mov r1, r9 - adds r3, r1, r0 - adds r1, r3, 0 - subs r1, 0x20 - lsls r1, 1 - movs r0, 0x8F - lsls r0, 4 - adds r2, r5, r0 - adds r1, r2, r1 - adds r0, r3, 0 - subs r0, 0x21 - lsls r0, 1 - adds r0, r2, r0 - ldrh r0, [r0] - strh r0, [r1] - adds r1, r3, 0 - subs r1, 0x1F - lsls r1, 1 - adds r1, r2, r1 - adds r0, r3, 0 - subs r0, 0x24 - lsls r0, 1 - adds r2, r0 - ldrh r2, [r2] - movs r3, 0x80 - lsls r3, 3 - adds r0, r3, 0 - orrs r0, r2 - strh r0, [r1] -_0804F1B2: - ldr r0, _0804F1D0 @ =gUnknown_2031DA8 - ldr r1, [r0] - ldr r0, [sp, 0x18] - add r0, r8 - lsls r0, 1 - adds r0, r7, r0 - adds r1, 0x51 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _0804F1D4 - movs r2, 0x90 - lsls r2, 3 - b _0804F256 - .align 2, 0 -_0804F1D0: .4byte gUnknown_2031DA8 -_0804F1D4: - mov r0, r8 - cmp r0, 0 - bne _0804F200 - movs r0, 0x64 - adds r4, r7, 0 - muls r4, r0 - ldr r0, _0804F1FC @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - bl GetMonGender - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0 - movs r1, 0x2 - add r2, sp, 0xC - bl GetMonData - b _0804F21E - .align 2, 0 -_0804F1FC: .4byte gPlayerParty -_0804F200: - movs r0, 0x64 - adds r4, r7, 0 - muls r4, r0 - ldr r0, _0804F22C @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - bl GetMonGender - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0 - movs r1, 0x2 - add r2, sp, 0xC - bl GetMonData -_0804F21E: - cmp r5, 0 - beq _0804F230 - cmp r5, 0xFE - beq _0804F244 - movs r2, 0x83 - b _0804F256 - .align 2, 0 -_0804F22C: .4byte gEnemyParty -_0804F230: - add r0, sp, 0xC - movs r1, 0 - bl NameHasGenderSymbol - lsls r0, 24 - movs r2, 0x83 - cmp r0, 0 - bne _0804F256 - movs r2, 0x84 - b _0804F256 -_0804F244: - add r0, sp, 0xC - movs r1, 0xFE - bl NameHasGenderSymbol - lsls r0, 24 - movs r2, 0x83 - cmp r0, 0 - bne _0804F256 - movs r2, 0x85 -_0804F256: - ldr r0, _0804F280 @ =gUnknown_2031DA8 - ldr r1, [r0] - mov r0, r10 - subs r0, 0x1 - lsls r0, 5 - add r0, r9 - adds r0, 0x1 - lsls r0, 1 - movs r3, 0x8F - lsls r3, 4 - adds r1, r3 - adds r1, r0 - strh r2, [r1] - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F280: .4byte gUnknown_2031DA8 - thumb_func_end sub_804F08C - - thumb_func_start sub_804F284 -sub_804F284: @ 804F284 - push {r4-r7,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - movs r7, 0 - ldr r0, _0804F2DC @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x36 - adds r0, r6 - ldrb r0, [r0] - cmp r7, r0 - bge _0804F2D4 - lsls r0, r6, 1 - adds r0, r6 - ldr r1, _0804F2E0 @ =gUnknown_8261E5A - lsls r0, 2 - adds r5, r0, r1 - ldr r1, _0804F2E4 @ =gUnknown_8261E72 - adds r4, r0, r1 -_0804F2AA: - lsls r1, r7, 24 - lsrs r1, 24 - ldrb r2, [r5] - ldrb r3, [r5, 0x1] - ldrb r0, [r4] - str r0, [sp] - ldrb r0, [r4, 0x1] - str r0, [sp, 0x4] - adds r0, r6, 0 - bl sub_804F08C - adds r5, 0x2 - adds r4, 0x2 - adds r7, 0x1 - ldr r0, _0804F2DC @ =gUnknown_2031DA8 - ldr r0, [r0] - adds r0, 0x36 - adds r0, r6 - ldrb r0, [r0] - cmp r7, r0 - blt _0804F2AA -_0804F2D4: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F2DC: .4byte gUnknown_2031DA8 -_0804F2E0: .4byte gUnknown_8261E5A -_0804F2E4: .4byte gUnknown_8261E72 - thumb_func_end sub_804F284 - - thumb_func_start sub_804F2E8 -sub_804F2E8: @ 804F2E8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r12, r0 - movs r7, 0 - ldr r3, _0804F3A8 @ =gUnknown_2031DA8 - ldr r0, [r3] - adds r0, 0x36 - add r0, r12 - ldrb r0, [r0] - cmp r7, r0 - bge _0804F39A - ldr r6, _0804F3AC @ =gSprites - mov r9, r3 - mov r1, r12 - lsls r0, r1, 1 - add r0, r12 - lsls r2, r0, 1 - mov r10, r2 - ldr r1, _0804F3B0 @ =gTradeMonSpriteCoords - movs r2, 0 - mov r8, r2 - lsls r0, 2 - adds r5, r0, r1 -_0804F320: - mov r1, r9 - ldr r0, [r1] - mov r2, r10 - adds r4, r7, r2 - adds r0, 0x28 - adds r0, r4 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - adds r1, 0x3E - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - mov r0, r9 - ldr r3, [r0] - adds r2, r3, 0 - adds r2, 0x28 - adds r2, r4 - ldrb r0, [r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r5] - lsls r0, 3 - adds r0, 0xE - strh r0, [r1, 0x20] - ldrb r0, [r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r5, 0x1] - lsls r0, 3 - subs r0, 0xC - strh r0, [r1, 0x22] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - mov r1, r8 - strh r1, [r0, 0x24] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - mov r2, r8 - strh r2, [r0, 0x26] - adds r5, 0x2 - adds r7, 0x1 - adds r3, 0x36 - add r3, r12 - ldrb r3, [r3] - cmp r7, r3 - blt _0804F320 -_0804F39A: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F3A8: .4byte gUnknown_2031DA8 -_0804F3AC: .4byte gSprites -_0804F3B0: .4byte gTradeMonSpriteCoords - thumb_func_end sub_804F2E8 - - thumb_func_start sub_804F3B4 -sub_804F3B4: @ 804F3B4 - push {lr} - movs r0, 0x1 - bl rbox_fill_rectangle - movs r0, 0x1 - bl sub_804F020 - pop {r0} - bx r0 - thumb_func_end sub_804F3B4 - - thumb_func_start sub_804F3C8 -sub_804F3C8: @ 804F3C8 - push {r4-r6,lr} - sub sp, 0xC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _0804F430 @ =gUnknown_8260A32 - lsls r2, r4, 4 - subs r2, r4 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0xF - str r0, [sp] - movs r0, 0x11 - str r0, [sp, 0x4] - movs r6, 0 - str r6, [sp, 0x8] - movs r0, 0x1 - movs r3, 0 - bl CopyToBgTilemapBufferRect_ChangePalette - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - adds r0, r4, 0 - bl sub_804F284 - adds r0, r4, 0 - bl sub_804F020 - adds r0, r4, 0 - bl sub_804F2E8 - ldr r0, _0804F434 @ =gUnknown_8261ECC - ldr r0, [r0, 0x4] - ldr r5, _0804F438 @ =gUnknown_2031DA8 - ldr r1, [r5] - adds r1, 0x72 - ldrh r1, [r1] - lsls r1, 5 - ldr r2, _0804F43C @ =0x06010000 - adds r1, r2 - movs r2, 0x18 - bl sub_804F728 - ldr r0, [r5] - adds r0, 0x74 - adds r0, r4 - strb r6, [r0] - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0804F430: .4byte gUnknown_8260A32 -_0804F434: .4byte gUnknown_8261ECC -_0804F438: .4byte gUnknown_2031DA8 -_0804F43C: .4byte 0x06010000 - thumb_func_end sub_804F3C8 - - thumb_func_start sub_804F440 -sub_804F440: @ 804F440 - push {lr} - sub sp, 0x8 - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_804F440 - - thumb_func_start sub_804F464 -sub_804F464: @ 804F464 - push {lr} - sub sp, 0x8 - movs r0, 0x1E - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_804F464 - - thumb_func_start sub_804F488 -sub_804F488: @ 804F488 - push {r4-r7,lr} - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, 24 - lsrs r6, r1, 24 - movs r3, 0 - ldr r4, _0804F4C8 @ =gUnknown_2031DA8 - mov r12, r4 - movs r7, 0x8D - lsls r7, 4 -_0804F49C: - mov r1, r12 - ldr r0, [r1] - lsls r1, r3, 3 - adds r2, r0, r1 - adds r0, r2, r7 - ldrb r0, [r0] - cmp r0, 0 - bne _0804F4D0 - ldr r3, _0804F4CC @ =0x000008d2 - adds r0, r2, r3 - strh r5, [r0] - adds r3, 0x2 - adds r0, r2, r3 - strb r6, [r0] - ldr r0, [r4] - adds r0, r1 - movs r1, 0x8D - lsls r1, 4 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - b _0804F4D6 - .align 2, 0 -_0804F4C8: .4byte gUnknown_2031DA8 -_0804F4CC: .4byte 0x000008d2 -_0804F4D0: - adds r3, 0x1 - cmp r3, 0x3 - ble _0804F49C -_0804F4D6: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_804F488 - - thumb_func_start sub_804F4DC -sub_804F4DC: @ 804F4DC - push {r4,r5,lr} - movs r4, 0 - ldr r3, _0804F508 @ =gUnknown_2031DA8 -_0804F4E2: - ldr r0, [r3] - lsls r1, r4, 3 - adds r2, r0, r1 - movs r5, 0x8D - lsls r5, 4 - adds r0, r2, r5 - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0 - beq _0804F5AC - ldr r0, _0804F50C @ =0x000008d2 - adds r1, r2, r0 - ldrh r0, [r1] - cmp r0, 0 - beq _0804F510 - subs r0, 0x1 - strh r0, [r1] - b _0804F5AC - .align 2, 0 -_0804F508: .4byte gUnknown_2031DA8 -_0804F50C: .4byte 0x000008d2 -_0804F510: - ldr r1, _0804F524 @ =0x000008d4 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0x8 - bhi _0804F59A - lsls r0, 2 - ldr r1, _0804F528 @ =_0804F52C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804F524: .4byte 0x000008d4 -_0804F528: .4byte _0804F52C - .align 2, 0 -_0804F52C: - .4byte _0804F550 - .4byte _0804F56C - .4byte _0804F574 - .4byte _0804F57C - .4byte _0804F57C - .4byte _0804F57C - .4byte _0804F584 - .4byte _0804F58C - .4byte _0804F594 -_0804F550: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0804F568 @ =gUnknown_2031DA8 - ldr r1, [r1] - adds r1, 0x80 - movs r2, 0x14 - bl SendBlock - b _0804F59A - .align 2, 0 -_0804F568: .4byte gUnknown_2031DA8 -_0804F56C: - movs r0, 0 - bl sub_804F5BC - b _0804F59A -_0804F574: - movs r0, 0x2 - bl sub_804F5BC - b _0804F59A -_0804F57C: - movs r0, 0x3 - bl sub_804F5BC - b _0804F59A -_0804F584: - movs r0, 0x6 - bl sub_804F5BC - b _0804F59A -_0804F58C: - movs r0, 0x7 - bl sub_804F5BC - b _0804F59A -_0804F594: - movs r0, 0x8 - bl sub_804F5BC -_0804F59A: - ldr r0, _0804F5B8 @ =gUnknown_2031DA8 - ldr r1, [r0] - adds r1, r5 - movs r2, 0x8D - lsls r2, 4 - adds r1, r2 - movs r2, 0 - strb r2, [r1] - adds r3, r0, 0 -_0804F5AC: - adds r4, 0x1 - cmp r4, 0x3 - ble _0804F4E2 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804F5B8: .4byte gUnknown_2031DA8 - thumb_func_end sub_804F4DC - - thumb_func_start sub_804F5BC -sub_804F5BC: @ 804F5BC - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r0, _0804F60C @ =gUnknown_8261EF4 - lsls r4, 2 - adds r4, r0 - ldr r2, [r4] - movs r0, 0x2 - str r0, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - movs r1, 0x3 - movs r3, 0 - bl AddTextPrinterParameterized - movs r0, 0 - movs r1, 0x14 - movs r2, 0xC - bl DrawTextBorderOuter - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804F60C: .4byte gUnknown_8261EF4 - thumb_func_end sub_804F5BC - - thumb_func_start sub_804F610 -sub_804F610: @ 804F610 - push {r4,lr} - sub sp, 0x8 - ldr r0, _0804F660 @ =gUnknown_2031DA8 - ldr r1, [r0] - adds r3, r1, 0 - adds r3, 0xA8 - ldrb r1, [r3] - adds r4, r0, 0 - cmp r1, 0xD - bhi _0804F64C - ldr r1, _0804F664 @ =gUnknown_2031C94 - ldrb r0, [r3] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [sp] - ldr r0, _0804F668 @ =0xffff0000 - ldr r2, [sp, 0x4] - ands r2, r0 - movs r0, 0x80 - lsls r0, 1 - orrs r2, r0 - str r2, [sp, 0x4] - ldrb r1, [r3] - adds r1, 0xC8 - lsls r1, 16 - ldr r0, _0804F66C @ =0x0000ffff - ands r0, r2 - orrs r0, r1 - str r0, [sp, 0x4] -_0804F64C: - ldr r0, [r4] - adds r0, 0xA8 - ldrb r0, [r0] - cmp r0, 0x11 - bhi _0804F71C - lsls r0, 2 - ldr r1, _0804F670 @ =_0804F674 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0804F660: .4byte gUnknown_2031DA8 -_0804F664: .4byte gUnknown_2031C94 -_0804F668: .4byte 0xffff0000 -_0804F66C: .4byte 0x0000ffff -_0804F670: .4byte _0804F674 - .align 2, 0 -_0804F674: - .4byte _0804F6BC - .4byte _0804F6BC - .4byte _0804F6BC - .4byte _0804F6BC - .4byte _0804F6BC - .4byte _0804F6BC - .4byte _0804F6BC - .4byte _0804F6BC - .4byte _0804F6C0 - .4byte _0804F6D8 - .4byte _0804F6D8 - .4byte _0804F6D8 - .4byte _0804F6D8 - .4byte _0804F6D8 - .4byte _0804F6DC - .4byte _0804F6E8 - .4byte _0804F6F4 - .4byte _0804F710 -_0804F6BC: - mov r0, sp - b _0804F6F6 -_0804F6C0: - mov r0, sp - bl LoadSpriteSheet - ldr r1, _0804F6D4 @ =gUnknown_2031DA8 - ldr r1, [r1] - adds r2, r1, 0 - adds r2, 0x72 - strh r0, [r2] - b _0804F6FE - .align 2, 0 -_0804F6D4: .4byte gUnknown_2031DA8 -_0804F6D8: - mov r0, sp - b _0804F6F6 -_0804F6DC: - ldr r0, _0804F6E4 @ =gUnknown_8261D00 - bl LoadSpritePalette - b _0804F6FA - .align 2, 0 -_0804F6E4: .4byte gUnknown_8261D00 -_0804F6E8: - ldr r0, _0804F6F0 @ =gUnknown_8261C60 - bl LoadSpritePalette - b _0804F6FA - .align 2, 0 -_0804F6F0: .4byte gUnknown_8261C60 -_0804F6F4: - ldr r0, _0804F708 @ =gUnknown_8261C58 -_0804F6F6: - bl LoadSpriteSheet -_0804F6FA: - ldr r0, _0804F70C @ =gUnknown_2031DA8 - ldr r1, [r0] -_0804F6FE: - adds r1, 0xA8 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0804F71C - .align 2, 0 -_0804F708: .4byte gUnknown_8261C58 -_0804F70C: .4byte gUnknown_2031DA8 -_0804F710: - ldr r0, [r4] - adds r0, 0xA8 - movs r1, 0 - strb r1, [r0] - movs r0, 0x1 - b _0804F71E -_0804F71C: - movs r0, 0 -_0804F71E: - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_804F610 - - thumb_func_start sub_804F728 -sub_804F728: @ 804F728 - push {lr} - sub sp, 0x8 - ldr r2, _0804F744 @ =gDecompressionBuffer - str r2, [sp] - movs r2, 0x6 - str r2, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_808BEB4 - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_0804F744: .4byte gDecompressionBuffer - thumb_func_end sub_804F728 - - thumb_func_start sub_804F748 -sub_804F748: @ 804F748 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - cmp r0, 0 - beq _0804F760 - cmp r0, 0x1 - beq _0804F7F4 - b _0804F880 -_0804F760: - movs r7, 0 - ldr r1, _0804F7A0 @ =gUnknown_2031DA8 - ldr r0, [r1] - adds r0, 0x36 - ldrb r0, [r0] - cmp r7, r0 - blt _0804F770 - b _0804F880 -_0804F770: - adds r6, r1, 0 - movs r5, 0 - mov r9, r5 -_0804F776: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _0804F7A4 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - adds r1, r0, 0 - cmp r1, 0x1 - bne _0804F7A8 - ldr r0, [r6] - adds r0, 0x45 - adds r0, r5 - mov r2, r9 - strb r2, [r0] - ldr r0, [r6] - adds r0, 0x51 - adds r0, r5 - b _0804F7D8 - .align 2, 0 -_0804F7A0: .4byte gUnknown_2031DA8 -_0804F7A4: .4byte gPlayerParty -_0804F7A8: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - adds r1, r0, 0 - cmp r1, 0 - bne _0804F7C6 - ldr r0, [r6] - adds r0, 0x45 - adds r0, r5 - strb r1, [r0] - ldr r0, [r6] - adds r0, 0x51 - adds r0, r5 - b _0804F7D8 -_0804F7C6: - ldr r0, [r6] - adds r0, 0x45 - adds r0, r5 - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r6] - adds r0, 0x51 - adds r0, r5 - mov r1, r9 -_0804F7D8: - strb r1, [r0] - ldr r0, _0804F7F0 @ =gUnknown_2031DA8 - adds r5, 0x1 - adds r7, 0x1 - ldr r0, [r0] - adds r0, 0x36 - add r0, r8 - ldrb r0, [r0] - cmp r7, r0 - blt _0804F776 - b _0804F880 - .align 2, 0 -_0804F7F0: .4byte gUnknown_2031DA8 -_0804F7F4: - movs r7, 0 - ldr r1, _0804F834 @ =gUnknown_2031DA8 - ldr r0, [r1] - adds r0, 0x37 - ldrb r0, [r0] - cmp r7, r0 - bge _0804F880 - adds r6, r1, 0 - movs r5, 0x6 - movs r2, 0 - mov r9, r2 -_0804F80A: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _0804F838 @ =gEnemyParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - adds r1, r0, 0 - cmp r1, 0x1 - bne _0804F83C - ldr r0, [r6] - adds r0, 0x45 - adds r0, r5 - mov r2, r9 - strb r2, [r0] - ldr r0, [r6] - adds r0, 0x51 - adds r0, r5 - b _0804F86C - .align 2, 0 -_0804F834: .4byte gUnknown_2031DA8 -_0804F838: .4byte gEnemyParty -_0804F83C: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - adds r1, r0, 0 - cmp r1, 0 - bne _0804F85A - ldr r0, [r6] - adds r0, 0x45 - adds r0, r5 - strb r1, [r0] - ldr r0, [r6] - adds r0, 0x51 - adds r0, r5 - b _0804F86C -_0804F85A: - ldr r0, [r6] - adds r0, 0x45 - adds r0, r5 - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r6] - adds r0, 0x51 - adds r0, r5 - mov r1, r9 -_0804F86C: - strb r1, [r0] - ldr r0, _0804F88C @ =gUnknown_2031DA8 - adds r5, 0x1 - adds r7, 0x1 - ldr r0, [r0] - adds r0, 0x36 - add r0, r8 - ldrb r0, [r0] - cmp r7, r0 - blt _0804F80A -_0804F880: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F88C: .4byte gUnknown_2031DA8 - thumb_func_end sub_804F748 - - thumb_func_start sub_804F890 -sub_804F890: @ 804F890 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0804F8A0 - cmp r0, 0x1 - beq _0804F900 - b _0804F954 -_0804F8A0: - movs r6, 0 - ldr r1, _0804F8F8 @ =gUnknown_2031DA8 - ldr r0, [r1] - adds r0, 0x36 - ldrb r0, [r0] - cmp r6, r0 - bcs _0804F954 - adds r7, r1, 0 -_0804F8B0: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _0804F8FC @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x3A - bl GetMonData - adds r1, r0, 0 - lsls r0, r5, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - bl GetHPBarLevel - ldr r1, [r7] - adds r1, 0x5D - adds r1, r6 - strb r0, [r1] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, [r7] - adds r0, 0x36 - ldrb r0, [r0] - cmp r6, r0 - bcc _0804F8B0 - b _0804F954 - .align 2, 0 -_0804F8F8: .4byte gUnknown_2031DA8 -_0804F8FC: .4byte gPlayerParty -_0804F900: - movs r6, 0 - ldr r1, _0804F95C @ =gUnknown_2031DA8 - ldr r0, [r1] - adds r0, 0x37 - ldrb r0, [r0] - cmp r6, r0 - bcs _0804F954 - adds r7, r1, 0 -_0804F910: - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _0804F960 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x3A - bl GetMonData - adds r1, r0, 0 - lsls r0, r5, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - bl GetHPBarLevel - ldr r1, [r7] - adds r1, 0x63 - adds r1, r6 - strb r0, [r1] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, [r7] - adds r0, 0x37 - ldrb r0, [r0] - cmp r6, r0 - bcc _0804F910 -_0804F954: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F95C: .4byte gUnknown_2031DA8 -_0804F960: .4byte gEnemyParty - thumb_func_end sub_804F890 - - thumb_func_start sub_804F964 -sub_804F964: @ 804F964 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r5, 0 -_0804F96C: - movs r4, 0 - ldr r2, _0804F9D0 @ =gUnknown_2031DA8 - ldr r0, [r2] - adds r0, 0x36 - adds r0, r5 - adds r1, r5, 0x1 - mov r8, r1 - ldrb r0, [r0] - cmp r4, r0 - bge _0804F9BE - adds r6, r2, 0 - lsls r0, r5, 1 - adds r0, r5 - lsls r7, r0, 1 -_0804F988: - ldr r2, [r6] - adds r3, r4, r7 - adds r0, r2, 0 - adds r0, 0x28 - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0804F9D4 @ =gSprites - adds r0, r1 - adds r2, 0x5D - adds r2, r3 - ldrb r2, [r2] - movs r1, 0x4 - subs r1, r2 - lsls r1, 24 - lsrs r1, 24 - bl MonIcon_SetAnim - adds r4, 0x1 - ldr r0, [r6] - adds r0, 0x36 - adds r0, r5 - ldrb r0, [r0] - cmp r4, r0 - blt _0804F988 -_0804F9BE: - mov r5, r8 - cmp r5, 0x1 - ble _0804F96C - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804F9D0: .4byte gUnknown_2031DA8 -_0804F9D4: .4byte gSprites - thumb_func_end sub_804F964 - - thumb_func_start sub_804F9D8 -sub_804F9D8: @ 804F9D8 - push {r4,r5,lr} - movs r2, 0 - ldr r5, _0804FA08 @ =gSaveBlock1Ptr - ldr r4, _0804FA0C @ =0x0000309c - ldr r3, _0804FA10 @ =gUnknown_2031DA8 -_0804F9E2: - ldr r0, [r5] - adds r0, r4 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - bne _0804F9FC - ldr r0, [r3] - adds r0, 0xA9 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0804F9FC - strb r0, [r1] -_0804F9FC: - adds r2, 0x1 - cmp r2, 0xA - ble _0804F9E2 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804FA08: .4byte gSaveBlock1Ptr -_0804FA0C: .4byte 0x0000309c -_0804FA10: .4byte gUnknown_2031DA8 - thumb_func_end sub_804F9D8 - - thumb_func_start sub_804FA14 -sub_804FA14: @ 804FA14 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x30 - mov r8, r0 - adds r7, r1, 0 - mov r9, r2 - movs r5, 0 - cmp r5, r7 - bge _0804FA4E - mov r6, sp -_0804FA2C: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - add r4, r8 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - str r0, [r6, 0x18] - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - stm r6!, {r0} - adds r5, 0x1 - cmp r5, r7 - blt _0804FA2C -_0804FA4E: - bl IsNationalPokedexEnabled - mov r1, r9 - lsls r4, r1, 2 - cmp r0, 0 - bne _0804FA70 - add r0, sp, 0x18 - adds r0, r4 - ldr r0, [r0] - cmp r0, 0x97 - ble _0804FA68 - movs r0, 0x2 - b _0804FB24 -_0804FA68: - cmp r0, 0 - bne _0804FA70 - movs r0, 0x3 - b _0804FB24 -_0804FA70: - bl GetMultiplayerId - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _0804FAB0 @ =gLinkPlayers - adds r1, r0 - ldrb r0, [r1] - subs r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _0804FAB8 - ldrb r1, [r1, 0x12] - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - bne _0804FAB8 - add r0, sp, 0x18 - adds r0, r4 - ldr r1, [r0] - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - bne _0804FAB4 - movs r0, 0x5 - b _0804FB24 - .align 2, 0 -_0804FAB0: .4byte gLinkPlayers -_0804FAB4: - cmp r1, 0x97 - bgt _0804FADE -_0804FAB8: - mov r1, sp - adds r0, r1, r4 - ldr r1, [r0] - movs r0, 0xCD - lsls r0, 1 - cmp r1, r0 - beq _0804FACA - cmp r1, 0x97 - bne _0804FAE2 -_0804FACA: - movs r0, 0x64 - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - add r0, r8 - movs r1, 0x50 - bl GetMonData - cmp r0, 0 - bne _0804FAE2 -_0804FADE: - movs r0, 0x4 - b _0804FB24 -_0804FAE2: - cmp r7, 0 - ble _0804FB00 - movs r3, 0xCE - lsls r3, 1 - movs r2, 0 - add r1, sp, 0x18 - adds r5, r7, 0 -_0804FAF0: - ldr r0, [r1] - cmp r0, r3 - bne _0804FAF8 - str r2, [r1] -_0804FAF8: - adds r1, 0x4 - subs r5, 0x1 - cmp r5, 0 - bne _0804FAF0 -_0804FB00: - movs r2, 0 - movs r5, 0 - cmp r2, r7 - bge _0804FB1A - add r1, sp, 0x18 -_0804FB0A: - cmp r5, r9 - beq _0804FB12 - ldr r0, [r1] - adds r2, r0 -_0804FB12: - adds r1, 0x4 - adds r5, 0x1 - cmp r5, r7 - blt _0804FB0A -_0804FB1A: - cmp r2, 0 - bne _0804FB22 - movs r0, 0x1 - b _0804FB24 -_0804FB22: - movs r0, 0 -_0804FB24: - add sp, 0x30 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_804FA14 - - thumb_func_start sub_804FB34 -sub_804FB34: @ 804FB34 - push {r4-r7,lr} - ldr r0, _0804FBB4 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _0804FBC0 - bl GetMultiplayerId - ldr r6, _0804FBB8 @ =gLinkPlayers - movs r7, 0x1 - eors r0, r7 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r1, [r1] - subs r0, r1, 0x4 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _0804FBC0 - subs r0, r1, 0x1 - lsls r0, 16 - lsrs r0, 16 - movs r4, 0x2 - cmp r0, 0x1 - bhi _0804FB6E - movs r4, 0x1 -_0804FB6E: - cmp r4, 0 - ble _0804FBC0 - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r1, [r1, 0x12] - movs r5, 0xF0 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _0804FBBC - cmp r4, 0x2 - bne _0804FBC0 - bl GetMultiplayerId - eors r0, r7 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r1, [r1, 0x12] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _0804FBC0 - movs r0, 0x2 - b _0804FBC2 - .align 2, 0 -_0804FBB4: .4byte gReceivedRemoteLinkPlayers -_0804FBB8: .4byte gLinkPlayers -_0804FBBC: - movs r0, 0x1 - b _0804FBC2 -_0804FBC0: - movs r0, 0 -_0804FBC2: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_804FB34 - - thumb_func_start sub_804FBC8 -sub_804FBC8: @ 804FBC8 - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0xCD - lsls r0, 1 - cmp r2, r0 - beq _0804FBDE - cmp r2, 0x97 - bne _0804FBE6 -_0804FBDE: - cmp r1, 0 - bne _0804FBE6 - movs r0, 0x1 - b _0804FBE8 -_0804FBE6: - movs r0, 0 -_0804FBE8: - pop {r1} - bx r1 - thumb_func_end sub_804FBC8 - - thumb_func_start sub_804FBEC -sub_804FBEC: @ 804FBEC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r4, [sp, 0x24] - ldr r5, [sp, 0x28] - ldr r6, [sp, 0x2C] - lsls r2, 16 - lsrs r7, r2, 16 - lsls r3, 16 - lsrs r3, 16 - lsls r4, 24 - lsrs r4, 24 - mov r8, r4 - lsls r5, 16 - lsrs r5, 16 - lsls r6, 24 - lsrs r6, 24 - lsls r2, r0, 23 - lsrs r2, 31 - mov r9, r2 - lsls r0, 24 - lsrs r4, r0, 31 - lsls r0, r1, 23 - lsrs r0, 31 - mov r10, r0 - lsls r0, r1, 24 - lsrs r0, 31 - lsls r1, 18 - lsrs r1, 28 - subs r1, 0x4 - lsls r1, 24 - lsrs r1, 24 - movs r2, 0x1 - cmp r1, 0x1 - bhi _0804FC3A - movs r2, 0 -_0804FC3A: - cmp r2, 0 - beq _0804FC4E - cmp r4, 0 - bne _0804FC46 - movs r0, 0x8 - b _0804FCCE -_0804FC46: - cmp r0, 0 - bne _0804FC4E - movs r0, 0x9 - b _0804FCCE -_0804FC4E: - adds r0, r5, 0 - adds r1, r6, 0 - str r3, [sp] - bl sub_804FBC8 - ldr r3, [sp] - cmp r0, 0 - bne _0804FCB2 - movs r0, 0xCE - lsls r0, 1 - cmp r3, r0 - bne _0804FC6E - cmp r7, r3 - beq _0804FC8C - movs r0, 0x2 - b _0804FCCE -_0804FC6E: - ldr r0, _0804FC88 @ =gBaseStats - lsls r1, r7, 3 - subs r1, r7 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x6] - cmp r0, r8 - beq _0804FC8C - ldrb r0, [r1, 0x7] - cmp r0, r8 - beq _0804FC8C - movs r0, 0x1 - b _0804FCCE - .align 2, 0 -_0804FC88: .4byte gBaseStats -_0804FC8C: - movs r0, 0xCE - lsls r0, 1 - cmp r7, r0 - bne _0804FC9C - cmp r7, r3 - beq _0804FC9C - movs r0, 0x3 - b _0804FCCE -_0804FC9C: - mov r0, r9 - cmp r0, 0 - bne _0804FCBE - movs r0, 0xCE - lsls r0, 1 - cmp r7, r0 - bne _0804FCAE - movs r0, 0x6 - b _0804FCCE -_0804FCAE: - cmp r7, 0x97 - bls _0804FCB6 -_0804FCB2: - movs r0, 0x4 - b _0804FCCE -_0804FCB6: - cmp r3, 0x97 - bls _0804FCBE - movs r0, 0x5 - b _0804FCCE -_0804FCBE: - mov r0, r10 - cmp r0, 0 - bne _0804FCCC - cmp r7, 0x97 - bls _0804FCCC - movs r0, 0x7 - b _0804FCCE -_0804FCCC: - movs r0, 0 -_0804FCCE: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_804FBEC - - thumb_func_start sub_804FCE0 -sub_804FCE0: @ 804FCE0 - push {r4-r6,lr} - lsls r1, 16 - lsrs r5, r1, 16 - adds r6, r5, 0 - lsls r2, 16 - lsrs r2, 16 - lsls r3, 24 - lsrs r3, 24 - lsls r0, 23 - lsrs r4, r0, 31 - adds r0, r2, 0 - adds r1, r3, 0 - bl sub_804FBC8 - cmp r0, 0 - bne _0804FD18 - cmp r4, 0 - bne _0804FD1C - movs r0, 0xCE - lsls r0, 1 - cmp r5, r0 - bne _0804FD10 - movs r0, 0x2 - b _0804FD1E -_0804FD10: - cmp r6, 0x97 - bls _0804FD1C - cmp r6, r0 - beq _0804FD1C -_0804FD18: - movs r0, 0x1 - b _0804FD1E -_0804FD1C: - movs r0, 0 -_0804FD1E: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_804FCE0 - - thumb_func_start sub_804FD24 -sub_804FD24: @ 804FD24 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _0804FD40 - movs r0, 0x17 - bl PlaySE - movs r0, 0 - strh r0, [r4, 0x2E] -_0804FD40: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804FD24 - - thumb_func_start sub_804FD48 -sub_804FD48: @ 804FD48 - push {r4,r5,lr} - adds r4, r0, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _0804FD72 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _0804FD72 - movs r0, 0xBB - bl PlaySE - strh r5, [r4, 0x2E] -_0804FD72: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_804FD48 - - thumb_func_start sub_804FD78 -sub_804FD78: @ 804FD78 - push {lr} - adds r2, r0, 0 - movs r0, 0x30 - ldrsh r1, [r2, r0] - cmp r1, 0 - bne _0804FDAE - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - bne _0804FD94 - strh r1, [r2, 0x2E] -_0804FD94: - movs r1, 0x2E - ldrsh r0, [r2, r1] - lsls r0, 1 - ldr r1, _0804FDB4 @ =gUnknown_826CF60 - adds r0, r1 - ldrb r1, [r2, 0x5] - lsrs r1, 4 - adds r1, 0x10 - lsls r1, 4 - adds r1, 0x4 - movs r2, 0x2 - bl LoadPalette -_0804FDAE: - pop {r0} - bx r0 - .align 2, 0 -_0804FDB4: .4byte gUnknown_826CF60 - thumb_func_end sub_804FD78 - - thumb_func_start sub_804FDB8 -sub_804FDB8: @ 804FDB8 - push {lr} - adds r2, r0, 0 - ldrh r1, [r2, 0x2E] - adds r1, 0x1 - strh r1, [r2, 0x2E] - ldrh r0, [r2, 0x26] - adds r0, 0x1 - strh r0, [r2, 0x26] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0xA - bne _0804FDD6 - adds r0, r2, 0 - bl DestroySprite -_0804FDD6: - pop {r0} - bx r0 - thumb_func_end sub_804FDB8 - - thumb_func_start sub_804FDDC -sub_804FDDC: @ 804FDDC - push {lr} - adds r2, r0, 0 - ldrh r1, [r2, 0x2E] - adds r1, 0x1 - strh r1, [r2, 0x2E] - ldrh r0, [r2, 0x26] - subs r0, 0x1 - strh r0, [r2, 0x26] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0xA - bne _0804FDFA - adds r0, r2, 0 - bl DestroySprite -_0804FDFA: - pop {r0} - bx r0 - thumb_func_end sub_804FDDC - - thumb_func_start sub_804FE00 -sub_804FE00: @ 804FE00 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - bne _0804FE1C - movs r0, 0xC5 - bl PlaySE - movs r0, 0 - strh r0, [r4, 0x2E] -_0804FE1C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804FE00 - - thumb_func_start sub_804FE24 -sub_804FE24: @ 804FE24 - push {r4,r5,lr} - sub sp, 0x20 - ldr r0, _0804FEB0 @ =gUnknown_2031DAC - ldr r0, [r0] - mov r12, r0 - adds r0, 0xD4 - ldrh r1, [r0] - lsls r1, 8 - adds r0, 0x2 - ldrh r2, [r0] - lsls r2, 8 - adds r0, 0x6 - movs r4, 0 - ldrsh r3, [r0, r4] - adds r0, 0x2 - movs r5, 0 - ldrsh r0, [r0, r5] - str r0, [sp] - mov r4, r12 - adds r4, 0xE8 - movs r5, 0 - ldrsh r0, [r4, r5] - str r0, [sp, 0x4] - movs r5, 0 - ldrsh r0, [r4, r5] - str r0, [sp, 0x8] - mov r0, r12 - adds r0, 0xEC - ldrh r0, [r0] - str r0, [sp, 0xC] - add r0, sp, 0x10 - bl DoBgAffineSet - add r0, sp, 0x10 - ldrh r1, [r0] - movs r0, 0x20 - bl SetGpuReg - add r0, sp, 0x10 - ldrh r1, [r0, 0x2] - movs r0, 0x22 - bl SetGpuReg - add r0, sp, 0x10 - ldrh r1, [r0, 0x4] - movs r0, 0x24 - bl SetGpuReg - add r0, sp, 0x10 - ldrh r1, [r0, 0x6] - movs r0, 0x26 - bl SetGpuReg - ldr r1, [sp, 0x18] - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x28 - bl SetGpuReg - ldr r1, [sp, 0x1C] - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x2C - bl SetGpuReg - add sp, 0x20 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804FEB0: .4byte gUnknown_2031DAC - thumb_func_end sub_804FE24 - - thumb_func_start sub_804FEB4 -sub_804FEB4: @ 804FEB4 - push {r4,lr} - ldr r4, _0804FEFC @ =gUnknown_2031DAC - ldr r0, [r4] - adds r0, 0xE0 - ldrh r1, [r0] - movs r0, 0x16 - bl SetGpuReg - ldr r0, [r4] - adds r0, 0xE2 - ldrh r1, [r0] - movs r0, 0x14 - bl SetGpuReg - movs r0, 0 - bl GetGpuReg - lsls r0, 16 - movs r1, 0xE0 - lsls r1, 11 - ands r1, r0 - cmp r1, 0 - bne _0804FF00 - ldr r0, [r4] - adds r0, 0xE4 - ldrh r1, [r0] - movs r0, 0x1A - bl SetGpuReg - ldr r0, [r4] - adds r0, 0xE6 - ldrh r1, [r0] - movs r0, 0x18 - bl SetGpuReg - b _0804FF04 - .align 2, 0 -_0804FEFC: .4byte gUnknown_2031DAC -_0804FF00: - bl sub_804FE24 -_0804FF04: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_804FEB4 - - thumb_func_start sub_804FF0C -sub_804FF0C: @ 804FF0C - push {lr} - bl sub_804FEB4 - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_804FF0C - - thumb_func_start sub_804FF24 -sub_804FF24: @ 804FF24 - push {r4,lr} - ldr r3, _0804FF48 @ =gUnknown_2031DAC - ldr r1, [r3] - movs r0, 0x8A - adds r0, r1 - mov r12, r0 - movs r2, 0 - movs r0, 0 - mov r4, r12 - strh r0, [r4] - adds r1, 0x88 - strb r2, [r1] - ldr r0, [r3] - adds r0, 0x89 - strb r2, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804FF48: .4byte gUnknown_2031DAC - thumb_func_end sub_804FF24 - - thumb_func_start sub_804FF4C -sub_804FF4C: @ 804FF4C - push {r4,r5,lr} - ldr r0, _0804FF70 @ =gUnknown_2031DAC - ldr r2, [r0] - adds r1, r2, 0 - adds r1, 0x88 - adds r3, r2, 0 - adds r3, 0x89 - ldrb r1, [r1] - adds r5, r0, 0 - ldrb r3, [r3] - cmp r1, r3 - bne _0804FF74 - adds r1, r2, 0 - adds r1, 0x8A - ldrh r0, [r1] - adds r0, 0x1 - b _0804FF7A - .align 2, 0 -_0804FF70: .4byte gUnknown_2031DAC -_0804FF74: - adds r1, r2, 0 - adds r1, 0x8A - movs r0, 0 -_0804FF7A: - strh r0, [r1] - adds r4, r5, 0 - ldr r0, [r4] - adds r0, 0x8A - ldrh r1, [r0] - movs r0, 0x96 - lsls r0, 1 - cmp r1, r0 - bls _0804FFAC - bl CloseLink - ldr r0, _0804FFC0 @ =CB2_LinkError - bl SetMainCallback2 - ldr r1, [r4] - adds r3, r1, 0 - adds r3, 0x8A - movs r2, 0 - movs r0, 0 - strh r0, [r3] - adds r1, 0x89 - strb r2, [r1] - ldr r0, [r4] - adds r0, 0x88 - strb r2, [r0] -_0804FFAC: - ldr r0, [r5] - adds r1, r0, 0 - adds r1, 0x88 - ldrb r1, [r1] - adds r0, 0x89 - strb r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0804FFC0: .4byte CB2_LinkError - thumb_func_end sub_804FF4C - - thumb_func_start sub_804FFC4 -sub_804FFC4: @ 804FFC4 - push {lr} - ldr r0, _0804FFD4 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0804FFD8 - movs r0, 0 - b _0804FFE0 - .align 2, 0 -_0804FFD4: .4byte gReceivedRemoteLinkPlayers -_0804FFD8: - bl GetMultiplayerId - lsls r0, 24 - lsrs r0, 24 -_0804FFE0: - pop {r1} - bx r1 - thumb_func_end sub_804FFC4 - - thumb_func_start sub_804FFE4 -sub_804FFE4: @ 804FFE4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - movs r4, 0 - mov r8, r4 - cmp r6, 0 - bne _0805000A - ldr r0, _08050034 @ =gUnknown_2031DA4 - ldrb r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08050038 @ =gPlayerParty - adds r1, r0 - mov r8, r1 - movs r4, 0x1 -_0805000A: - cmp r6, 0x1 - bne _08050028 - ldr r0, _08050034 @ =gUnknown_2031DA4 - ldrb r0, [r0, 0x1] - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r1, r0 - ldr r0, _0805003C @ =gEnemyParty - adds r1, r0 - mov r8, r1 - movs r4, 0x3 -_08050028: - cmp r5, 0 - beq _08050040 - cmp r5, 0x1 - beq _080500C8 - b _0805011E - .align 2, 0 -_08050034: .4byte gUnknown_2031DA4 -_08050038: .4byte gPlayerParty -_0805003C: .4byte gEnemyParty -_08050040: - mov r0, r8 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - mov r0, r8 - movs r1, 0 - bl GetMonData - adds r7, r0, 0 - cmp r6, 0 - bne _0805007C - lsls r0, r5, 3 - ldr r1, _08050074 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _08050078 @ =gMonSpritesGfxPtr - ldr r1, [r1] - ldr r1, [r1, 0x8] - adds r2, r5, 0 - adds r3, r7, 0 - bl HandleLoadSpecialPokePic - movs r4, 0 - b _0805009A - .align 2, 0 -_08050074: .4byte gMonFrontPicTable -_08050078: .4byte gMonSpritesGfxPtr -_0805007C: - lsls r0, r5, 3 - ldr r1, _080500BC @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _080500C0 @ =gMonSpritesGfxPtr - ldr r2, [r1] - lsls r4, r6, 1 - adds r1, r4, 0x1 - lsls r1, 2 - adds r2, 0x4 - adds r2, r1 - ldr r1, [r2] - adds r2, r5, 0 - adds r3, r7, 0 - bl HandleLoadSpecialPokePic_DontHandleDeoxys -_0805009A: - mov r0, r8 - bl GetMonSpritePalStruct - bl LoadCompressedSpritePalette - ldr r0, _080500C4 @ =gUnknown_2031DAC - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0xF0 - adds r0, r4 - strh r5, [r0] - lsls r0, r6, 2 - adds r1, 0x68 - adds r1, r0 - str r7, [r1] - b _0805011E - .align 2, 0 -_080500BC: .4byte gMonFrontPicTable -_080500C0: .4byte gMonSpritesGfxPtr -_080500C4: .4byte gUnknown_2031DAC -_080500C8: - mov r0, r8 - bl GetMonSpritePalStruct - ldrh r0, [r0, 0x4] - adds r1, r4, 0 - bl SetMultiuseSpriteTemplateToPokemon - ldr r0, _08050128 @ =gMultiuseSpriteTemplate - movs r1, 0x78 - movs r2, 0x3C - movs r3, 0x6 - bl CreateSprite - ldr r4, _0805012C @ =gUnknown_2031DAC - ldr r1, [r4] - adds r1, 0x8E - adds r1, r6 - strb r0, [r1] - ldr r3, _08050130 @ =gSprites - ldr r0, [r4] - adds r0, 0x8E - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0x8E - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r3, 0x1C - adds r0, r3 - ldr r1, _08050134 @ =SpriteCallbackDummy - str r1, [r0] -_0805011E: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08050128: .4byte gMultiuseSpriteTemplate -_0805012C: .4byte gUnknown_2031DAC -_08050130: .4byte gSprites -_08050134: .4byte SpriteCallbackDummy - thumb_func_end sub_804FFE4 - - thumb_func_start sub_8050138 -sub_8050138: @ 8050138 - push {r4-r6,lr} - sub sp, 0x4 - ldr r1, _08050158 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0xC - bls _0805014E - b _08050472 -_0805014E: - lsls r0, 2 - ldr r1, _0805015C @ =_08050160 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050158: .4byte gMain -_0805015C: .4byte _08050160 - .align 2, 0 -_08050160: - .4byte _08050194 - .4byte _08050240 - .4byte _08050288 - .4byte _080502A8 - .4byte _080502F2 - .4byte _08050320 - .4byte _08050344 - .4byte _0805035C - .4byte _08050366 - .4byte _08050380 - .4byte _0805039C - .4byte _08050430 - .4byte _0805044C -_08050194: - ldr r0, _08050228 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _080501A8 - ldr r1, _0805022C @ =gLinkType - ldr r2, _08050230 @ =0x00001144 - adds r0, r2, 0 - strh r0, [r1] - bl CloseLink -_080501A8: - ldr r4, _08050234 @ =gUnknown_2031DAC - movs r0, 0x88 - lsls r0, 1 - bl AllocZeroed - str r0, [r4] - bl AllocateMonSpritesGfx - bl ResetTasks - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r0, _08050238 @ =sub_804FF0C - bl SetVBlankCallback - bl sub_80504CC - bl sub_804FF24 - ldr r1, _0805023C @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x8C - strh r2, [r0] - adds r0, 0x8 - strh r2, [r0] - adds r1, 0xEE - movs r0, 0x1 - strb r0, [r1] - ldr r3, [r4] - adds r0, r3, 0 - adds r0, 0xD4 - movs r1, 0x40 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r2, [r0] - adds r0, 0x2 - strh r2, [r0] - adds r1, r3, 0 - adds r1, 0xDC - movs r0, 0x78 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x50 - strh r0, [r1] - adds r1, 0xA - adds r0, 0xB0 - strh r0, [r1] - adds r0, r3, 0 - adds r0, 0xEC - strh r2, [r0] - b _08050472 - .align 2, 0 -_08050228: .4byte gReceivedRemoteLinkPlayers -_0805022C: .4byte gLinkType -_08050230: .4byte 0x00001144 -_08050234: .4byte gUnknown_2031DAC -_08050238: .4byte sub_804FF0C -_0805023C: .4byte gMain -_08050240: - ldr r0, _08050270 @ =gReceivedRemoteLinkPlayers - ldrb r5, [r0] - cmp r5, 0 - bne _0805027C - ldr r4, _08050274 @ =gUnknown_2031DAC - ldr r0, [r4] - movs r1, 0x84 - lsls r1, 1 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - bl OpenLink - ldr r1, _08050278 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r4] - str r5, [r0, 0x64] - b _08050472 - .align 2, 0 -_08050270: .4byte gReceivedRemoteLinkPlayers -_08050274: .4byte gUnknown_2031DAC -_08050278: .4byte gMain -_0805027C: - movs r0, 0x87 - lsls r0, 3 - adds r1, r2, r0 - movs r0, 0x4 - strb r0, [r1] - b _08050472 -_08050288: - ldr r0, _080502A4 @ =gUnknown_2031DAC - ldr r1, [r0] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0x3C - bhi _08050298 - b _08050472 -_08050298: - movs r0, 0 - str r0, [r1, 0x64] - movs r0, 0x87 - lsls r0, 3 - adds r1, r2, r0 - b _08050440 - .align 2, 0 -_080502A4: .4byte gUnknown_2031DAC -_080502A8: - bl IsLinkMaster - lsls r0, 24 - cmp r0, 0 - bne _080502B4 - b _08050438 -_080502B4: - bl GetLinkPlayerCount_2 - adds r4, r0, 0 - bl GetSavedPlayerCount - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bcc _080502EC - ldr r0, _080502E4 @ =gUnknown_2031DAC - ldr r1, [r0] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0x1E - bhi _080502D6 - b _08050472 -_080502D6: - bl CheckShouldAdvanceLinkState - ldr r1, _080502E8 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _08050440 - .align 2, 0 -_080502E4: .4byte gUnknown_2031DAC -_080502E8: .4byte gMain -_080502EC: - bl sub_804FF4C - b _08050472 -_080502F2: - bl sub_804FF4C - ldr r0, _08050318 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0x1 - beq _08050300 - b _08050472 -_08050300: - bl IsLinkPlayerDataExchangeComplete - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0805030E - b _08050472 -_0805030E: - ldr r1, _0805031C @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _08050440 - .align 2, 0 -_08050318: .4byte gReceivedRemoteLinkPlayers -_0805031C: .4byte gMain -_08050320: - ldr r2, _08050340 @ =gUnknown_2031DAC - ldr r0, [r2] - adds r0, 0x72 - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x73 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x93 - strb r1, [r0] - movs r0, 0 - bl sub_804FFE4 - b _08050438 - .align 2, 0 -_08050340: .4byte gUnknown_2031DAC -_08050344: - movs r0, 0 - movs r1, 0x1 - bl sub_804FFE4 - ldr r1, _08050358 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _08050440 - .align 2, 0 -_08050358: .4byte gMain -_0805035C: - movs r0, 0x1 - movs r1, 0 - bl sub_804FFE4 - b _08050438 -_08050366: - movs r0, 0x1 - movs r1, 0x1 - bl sub_804FFE4 - bl sub_80504B0 - ldr r1, _0805037C @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _08050440 - .align 2, 0 -_0805037C: .4byte gMain -_08050380: - bl sub_8050DE0 - ldr r0, _08050394 @ =gUnknown_826CDD4 - bl LoadSpriteSheet - ldr r0, _08050398 @ =gUnknown_826CDDC - bl LoadSpritePalette - b _08050438 - .align 2, 0 -_08050394: .4byte gUnknown_826CDD4 -_08050398: .4byte gUnknown_826CDDC -_0805039C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r0, 0 - bl ShowBg - ldr r4, _08050418 @ =gUnknown_2031DA4 - ldrb r0, [r4] - movs r6, 0x64 - muls r0, r6 - ldr r1, _0805041C @ =gPlayerParty - adds r0, r1 - movs r1, 0x41 - bl GetMonData - ldr r5, _08050420 @ =gUnknown_2031DAC - ldr r1, [r5] - adds r1, 0xF8 - strh r0, [r1] - ldrb r0, [r4, 0x1] - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - muls r0, r6 - ldr r1, _08050424 @ =gEnemyParty - adds r0, r1 - movs r1, 0x41 - bl GetMonData - ldr r4, [r5] - adds r1, r4, 0 - adds r1, 0xFA - strh r0, [r1] - adds r4, 0xFC - bl GetMultiplayerId - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _08050428 @ =gLinkPlayers + 8 - adds r1, r0 - adds r0, r4, 0 - movs r2, 0x7 - bl memcpy - ldr r1, _0805042C @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _08050440 - .align 2, 0 -_08050418: .4byte gUnknown_2031DA4 -_0805041C: .4byte gPlayerParty -_08050420: .4byte gUnknown_2031DAC -_08050424: .4byte gEnemyParty -_08050428: .4byte gLinkPlayers + 8 -_0805042C: .4byte gMain -_08050430: - bl sub_805049C - bl sub_8050E24 -_08050438: - ldr r1, _08050448 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 -_08050440: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08050472 - .align 2, 0 -_08050448: .4byte gMain -_0805044C: - ldr r0, _08050490 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08050472 - ldr r0, _08050494 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _0805046C - bl LoadWirelessStatusIndicatorSpriteGfx - movs r0, 0 - movs r1, 0 - bl CreateWirelessStatusIndicatorSprite -_0805046C: - ldr r0, _08050498 @ =sub_8053D84 - bl SetMainCallback2 -_08050472: - bl RunTasks - bl RunTextPrinters - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08050490: .4byte gPaletteFade -_08050494: .4byte gWirelessCommType -_08050498: .4byte sub_8053D84 - thumb_func_end sub_8050138 - - thumb_func_start sub_805049C -sub_805049C: @ 805049C - push {lr} - movs r0, 0x5 - bl sub_8050968 - movs r0, 0 - bl sub_8050968 - pop {r0} - bx r0 - thumb_func_end sub_805049C - - thumb_func_start sub_80504B0 -sub_80504B0: @ 80504B0 - push {lr} - movs r0, 0 - movs r1, 0xFF - bl FillWindowPixelBuffer - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - pop {r0} - bx r0 - thumb_func_end sub_80504B0 - - thumb_func_start sub_80504CC -sub_80504CC: @ 80504CC - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x4 - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _080505B4 @ =gUnknown_826D1D4 - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r5, 0x80 - lsls r5, 4 - adds r0, r5, 0 - bl Alloc - adds r1, r0, 0 - movs r0, 0 - bl SetBgTilemapBuffer - adds r0, r5, 0 - bl Alloc - adds r1, r0, 0 - movs r0, 0x1 - bl SetBgTilemapBuffer - adds r0, r5, 0 - bl Alloc - adds r1, r0, 0 - movs r0, 0x3 - bl SetBgTilemapBuffer - bl DeactivateAllTextPrinters - ldr r0, _080505B8 @ =gBattleTextboxTiles - mov r10, r0 - movs r0, 0 - mov r9, r0 - str r0, [sp] - mov r1, r10 - movs r2, 0 - movs r3, 0 - bl DecompressAndLoadBgGfxUsingHeap - ldr r0, _080505BC @ =gFile_graphics_interface_menu_map_tilemap - mov r8, r0 - ldr r4, _080505C0 @ =gDecompressionBuffer - adds r1, r4, 0 - bl LZDecompressWram - movs r0, 0 - adds r1, r4, 0 - adds r2, r5, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - ldr r6, _080505C4 @ =gBattleTextboxPalette - adds r0, r6, 0 - movs r1, 0 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r0, _080505C8 @ =gUnknown_826D1BC - bl InitWindows - mov r0, r9 - str r0, [sp] - movs r0, 0 - mov r1, r10 - movs r2, 0 - movs r3, 0 - bl DecompressAndLoadBgGfxUsingHeap - mov r0, r8 - adds r1, r4, 0 - bl LZDecompressWram - movs r0, 0 - adds r1, r4, 0 - adds r2, r5, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - adds r0, r6, 0 - movs r1, 0 - movs r2, 0x20 - bl LoadCompressedPalette - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080505B4: .4byte gUnknown_826D1D4 -_080505B8: .4byte gBattleTextboxTiles -_080505BC: .4byte gFile_graphics_interface_menu_map_tilemap -_080505C0: .4byte gDecompressionBuffer -_080505C4: .4byte gBattleTextboxPalette -_080505C8: .4byte gUnknown_826D1BC - thumb_func_end sub_80504CC - - thumb_func_start sub_80505CC -sub_80505CC: @ 80505CC - push {r4,r5,lr} - sub sp, 0xC - ldr r0, _080505EC @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0xC - bls _080505E0 - b _0805077E -_080505E0: - lsls r0, 2 - ldr r1, _080505F0 @ =_080505F4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080505EC: .4byte gMain -_080505F0: .4byte _080505F4 - .align 2, 0 -_080505F4: - .4byte _08050628 - .4byte _0805077E - .4byte _0805077E - .4byte _0805077E - .4byte _0805077E - .4byte _080506EC - .4byte _080506F6 - .4byte _08050700 - .4byte _08050710 - .4byte _08050730 - .4byte _0805074C - .4byte _08050754 - .4byte _08050778 -_08050628: - ldr r1, _080506CC @ =gUnknown_2031DA4 - ldr r0, _080506D0 @ =gSpecialVar_0x8005 - ldrh r0, [r0] - movs r5, 0 - strb r0, [r1] - movs r0, 0x6 - strb r0, [r1, 0x1] - ldr r4, _080506D4 @ =gLinkPlayers + 8 - ldr r0, _080506D8 @ =gSaveBlock2Ptr - ldr r1, [r0] - adds r0, r4, 0 - bl StringCopy - ldr r0, _080506DC @ =gEnemyParty - movs r1, 0x7 - mov r2, sp - bl GetMonData - adds r4, 0x1C - adds r0, r4, 0 - mov r1, sp - bl StringCopy - ldr r4, _080506E0 @ =gUnknown_2031DAC - movs r0, 0x88 - lsls r0, 1 - bl AllocZeroed - str r0, [r4] - bl AllocateMonSpritesGfx - bl ResetTasks - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r0, _080506E4 @ =sub_804FF0C - bl SetVBlankCallback - bl sub_80504CC - ldr r0, [r4] - adds r0, 0xEE - strb r5, [r0] - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x8C - strh r5, [r0] - adds r0, 0x8 - strh r5, [r0] - adds r0, 0x40 - movs r1, 0x40 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - adds r1, r2, 0 - adds r1, 0xDC - movs r0, 0x78 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x50 - strh r0, [r1] - adds r1, 0xA - adds r0, 0xB0 - strh r0, [r1] - adds r0, r2, 0 - adds r0, 0xEC - strh r5, [r0] - str r5, [r2, 0x64] - ldr r0, _080506E8 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - movs r1, 0x5 - strb r1, [r0] - b _0805077E - .align 2, 0 -_080506CC: .4byte gUnknown_2031DA4 -_080506D0: .4byte gSpecialVar_0x8005 -_080506D4: .4byte gLinkPlayers + 8 -_080506D8: .4byte gSaveBlock2Ptr -_080506DC: .4byte gEnemyParty -_080506E0: .4byte gUnknown_2031DAC -_080506E4: .4byte sub_804FF0C -_080506E8: .4byte gMain -_080506EC: - movs r0, 0 - movs r1, 0 - bl sub_804FFE4 - b _08050764 -_080506F6: - movs r0, 0 - movs r1, 0x1 - bl sub_804FFE4 - b _08050764 -_08050700: - movs r0, 0x1 - movs r1, 0 - bl sub_804FFE4 - movs r0, 0 - bl ShowBg - b _08050764 -_08050710: - movs r0, 0x1 - movs r1, 0x1 - bl sub_804FFE4 - movs r0, 0 - movs r1, 0xFF - bl FillWindowPixelBuffer - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - b _08050764 -_08050730: - bl sub_8050DE0 - ldr r0, _08050744 @ =gUnknown_826CDD4 - bl LoadSpriteSheet - ldr r0, _08050748 @ =gUnknown_826CDDC - bl LoadSpritePalette - b _08050764 - .align 2, 0 -_08050744: .4byte gUnknown_826CDD4 -_08050748: .4byte gUnknown_826CDDC -_0805074C: - movs r0, 0 - bl ShowBg - b _08050764 -_08050754: - movs r0, 0x5 - bl sub_8050968 - movs r0, 0 - bl sub_8050968 - bl sub_8050E24 -_08050764: - ldr r1, _08050774 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0805077E - .align 2, 0 -_08050774: .4byte gMain -_08050778: - ldr r0, _0805079C @ =sub_8050948 - bl SetMainCallback2 -_0805077E: - bl RunTasks - bl RunTextPrinters - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805079C: .4byte sub_8050948 - thumb_func_end sub_80505CC - - thumb_func_start sub_80507A0 -sub_80507A0: @ 80507A0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r1, r0 - ldr r0, _080507FC @ =gPlayerParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _080507F4 - adds r0, r5, 0 - movs r1, 0xB - movs r2, 0 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0 - movs r2, 0 - bl GetMonData - adds r5, r0, 0 - adds r0, r4, 0 - bl SpeciesToNationalPokedexNum - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - movs r1, 0x2 - bl GetSetPokedexFlag - adds r0, r4, 0 - movs r1, 0x3 - adds r2, r5, 0 - bl HandleSetPokedexFlag -_080507F4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080507FC: .4byte gPlayerParty - thumb_func_end sub_80507A0 - - thumb_func_start sub_8050800 -sub_8050800: @ 8050800 - push {lr} - bl GetMultiplayerId - pop {r0} - bx r0 - thumb_func_end sub_8050800 - - thumb_func_start sub_805080C -sub_805080C: @ 805080C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r4, 24 - lsrs r4, 24 - movs r5, 0x64 - mov r1, r9 - muls r1, r5 - ldr r0, _080508D8 @ =gPlayerParty - adds r7, r1, r0 - adds r0, r7, 0 - movs r1, 0x40 - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - adds r1, r4, 0 - muls r1, r5 - ldr r0, _080508DC @ =gEnemyParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0x40 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - cmp r6, 0xFF - beq _08050866 - ldr r0, _080508E0 @ =gSaveBlock1Ptr - lsls r1, r6, 3 - adds r1, r6 - lsls r1, 2 - ldr r2, _080508E4 @ =0x00002cd0 - adds r1, r2 - ldr r0, [r0] - adds r0, r1 - bl ClearMailStruct -_08050866: - ldr r4, _080508E8 @ =gUnknown_2031DAC - ldr r0, [r4] - adds r1, r7, 0 - movs r2, 0x64 - bl memcpy - adds r0, r7, 0 - adds r1, r5, 0 - movs r2, 0x64 - bl memcpy - ldr r1, [r4] - adds r0, r5, 0 - movs r2, 0x64 - bl memcpy - movs r1, 0x46 - mov r0, sp - strb r1, [r0] - adds r0, r7, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _080508A2 - adds r0, r7, 0 - movs r1, 0x20 - mov r2, sp - bl SetMonData -_080508A2: - mov r0, r8 - cmp r0, 0xFF - beq _080508B8 - lsls r1, r0, 3 - add r1, r8 - lsls r1, 2 - ldr r0, _080508EC @ =gUnknown_2031CCC - adds r1, r0 - adds r0, r7, 0 - bl GiveMailToMon2 -_080508B8: - mov r0, r9 - bl sub_80507A0 - ldr r0, _080508F0 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _080508CA - bl sub_8050800 -_080508CA: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080508D8: .4byte gPlayerParty -_080508DC: .4byte gEnemyParty -_080508E0: .4byte gSaveBlock1Ptr -_080508E4: .4byte 0x00002cd0 -_080508E8: .4byte gUnknown_2031DAC -_080508EC: .4byte gUnknown_2031CCC -_080508F0: .4byte gReceivedRemoteLinkPlayers - thumb_func_end sub_805080C - - thumb_func_start sub_80508F4 -sub_80508F4: @ 80508F4 - push {r4,lr} - ldr r4, _08050908 @ =gUnknown_2031DAC - ldr r0, [r4] - adds r0, 0x93 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0805090C - cmp r0, 0x2 - beq _08050932 - b _0805093C - .align 2, 0 -_08050908: .4byte gUnknown_2031DAC -_0805090C: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08050932 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, 0x74 - movs r2, 0x14 - bl SendBlock - ldr r1, [r4] - adds r1, 0x93 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08050932: - ldr r0, _08050944 @ =gUnknown_2031DAC - ldr r0, [r0] - adds r0, 0x93 - movs r1, 0 - strb r1, [r0] -_0805093C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08050944: .4byte gUnknown_2031DAC - thumb_func_end sub_80508F4 - - thumb_func_start sub_8050948 -sub_8050948: @ 8050948 - push {lr} - bl sub_8050F14 - bl RunTasks - bl RunTextPrinters - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_8050948 - - thumb_func_start sub_8050968 -sub_8050968: @ 8050968 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x7 - bls _08050974 - b _08050DB4 -_08050974: - lsls r0, 2 - ldr r1, _08050980 @ =_08050984 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050980: .4byte _08050984 - .align 2, 0 -_08050984: - .4byte _080509A4 - .4byte _08050A18 - .4byte _08050AC4 - .4byte _08050B3C - .4byte _08050B84 - .4byte _08050C54 - .4byte _08050C6C - .4byte _08050D48 -_080509A4: - ldr r0, _080509FC @ =gUnknown_2031DAC - ldr r1, [r0] - adds r2, r1, 0 - adds r2, 0xE4 - movs r0, 0 - strh r0, [r2] - adds r1, 0xE6 - movs r0, 0xB4 - strh r0, [r1] - movs r1, 0xAA - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - ldr r1, _08050A00 @ =0x00005206 - movs r0, 0xC - bl SetGpuReg - ldr r0, _08050A04 @ =gTradeGba2_Pal - movs r1, 0x10 - movs r2, 0x60 - bl LoadPalette - ldr r3, _08050A08 @ =gTradeGba_Gfx - ldr r4, _08050A0C @ =0x06004000 - movs r5, 0xA1 - lsls r5, 5 - ldr r1, _08050A10 @ =0x040000d4 - ldr r6, _08050A14 @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_080509E6: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _080509E6 - b _08050D98 - .align 2, 0 -_080509FC: .4byte gUnknown_2031DAC -_08050A00: .4byte 0x00005206 -_08050A04: .4byte gTradeGba2_Pal -_08050A08: .4byte gTradeGba_Gfx -_08050A0C: .4byte 0x06004000 -_08050A10: .4byte 0x040000d4 -_08050A14: .4byte 0x80000800 -_08050A18: - ldr r4, _08050A54 @ =gUnknown_2031DAC - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0xE2 - movs r0, 0 - strh r0, [r1] - adds r2, 0xE0 - movs r1, 0xAE - lsls r1, 1 - strh r1, [r2] - movs r0, 0x16 - bl SetGpuReg - ldr r1, _08050A58 @ =0x00008502 - movs r0, 0xA - bl SetGpuReg - ldr r1, _08050A5C @ =0x00009206 - movs r0, 0xC - bl SetGpuReg - ldr r0, [r4] - movs r1, 0x84 - lsls r1, 1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08050A64 - ldr r1, _08050A60 @ =gUnknown_826AA5C - b _08050A66 - .align 2, 0 -_08050A54: .4byte gUnknown_2031DAC -_08050A58: .4byte 0x00008502 -_08050A5C: .4byte 0x00009206 -_08050A60: .4byte gUnknown_826AA5C -_08050A64: - ldr r1, _08050AB0 @ =gUnknown_8269A5C -_08050A66: - ldr r2, _08050AB4 @ =0x06002800 - ldr r0, _08050AB8 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _08050ABC @ =0x80000800 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r3, _08050AC0 @ =gTradeGba_Gfx - movs r4, 0xC0 - lsls r4, 19 - movs r5, 0xA1 - lsls r5, 5 - ldr r1, _08050AB8 @ =0x040000d4 - ldr r6, _08050ABC @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_08050A8A: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _08050A8A - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r1, 0x92 - lsls r1, 5 - b _08050B64 - .align 2, 0 -_08050AB0: .4byte gUnknown_8269A5C -_08050AB4: .4byte 0x06002800 -_08050AB8: .4byte 0x040000d4 -_08050ABC: .4byte 0x80000800 -_08050AC0: .4byte gTradeGba_Gfx -_08050AC4: - ldr r0, _08050AF4 @ =gUnknown_2031DAC - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0xE0 - movs r1, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - movs r1, 0x84 - lsls r1, 1 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08050B04 - ldr r1, _08050AF8 @ =0x00001241 - movs r0, 0 - bl SetGpuReg - ldr r0, _08050AFC @ =gUnknown_3379A0Bin - ldr r1, _08050B00 @ =0x06002800 - bl LZ77UnCompVram - movs r0, 0x8 - b _08050B1E - .align 2, 0 -_08050AF4: .4byte gUnknown_2031DAC -_08050AF8: .4byte 0x00001241 -_08050AFC: .4byte gUnknown_3379A0Bin -_08050B00: .4byte 0x06002800 -_08050B04: - ldr r1, _08050B28 @ =0x00001241 - movs r0, 0 - bl SetGpuReg - ldr r1, _08050B2C @ =gUnknown_826407C - ldr r2, _08050B30 @ =0x06002800 - ldr r0, _08050B34 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _08050B38 @ =0x80000400 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - movs r0, 0x1 -_08050B1E: - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - b _08050DB4 - .align 2, 0 -_08050B28: .4byte 0x00001241 -_08050B2C: .4byte gUnknown_826407C -_08050B30: .4byte 0x06002800 -_08050B34: .4byte 0x040000d4 -_08050B38: .4byte 0x80000400 -_08050B3C: - ldr r0, _08050B6C @ =gUnknown_826BF5C - movs r1, 0x30 - movs r2, 0x20 - bl LoadPalette - ldr r0, _08050B70 @ =gWirelessSignal4bpp - ldr r1, _08050B74 @ =0x06004000 - bl LZ77UnCompVram - ldr r0, _08050B78 @ =gUnknown_826C60C - ldr r1, _08050B7C @ =0x06009000 - bl LZ77UnCompVram - ldr r0, _08050B80 @ =gUnknown_2031DAC - ldr r0, [r0] - adds r0, 0xE4 - movs r1, 0x50 - strh r1, [r0] - movs r1, 0xB2 - lsls r1, 5 -_08050B64: - movs r0, 0 - bl SetGpuReg - b _08050DB4 - .align 2, 0 -_08050B6C: .4byte gUnknown_826BF5C -_08050B70: .4byte gWirelessSignal4bpp -_08050B74: .4byte 0x06004000 -_08050B78: .4byte gUnknown_826C60C -_08050B7C: .4byte 0x06009000 -_08050B80: .4byte gUnknown_2031DAC -_08050B84: - ldr r1, _08050C0C @ =0x00001441 - movs r0, 0 - bl SetGpuReg - ldr r1, _08050C10 @ =0x00001287 - movs r0, 0xC - bl SetGpuReg - ldr r0, _08050C14 @ =gUnknown_2031DAC - ldr r3, [r0] - adds r1, r3, 0 - adds r1, 0xD4 - movs r2, 0 - movs r0, 0x40 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x5C - strh r0, [r1] - adds r1, 0x12 - movs r0, 0x20 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x80 - lsls r0, 3 - strh r0, [r1] - adds r0, r3, 0 - adds r0, 0xEC - strh r2, [r0] - ldr r3, _08050C18 @ =gUnknown_826701C - ldr r4, _08050C1C @ =0x06004000 - movs r5, 0xA1 - lsls r5, 6 - ldr r1, _08050C20 @ =0x040000d4 - ldr r6, _08050C24 @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_08050BD0: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _08050BD0 - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r0, _08050C14 @ =gUnknown_2031DAC - ldr r0, [r0] - movs r1, 0x84 - lsls r1, 1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08050C34 - ldr r1, _08050C28 @ =gUnknown_826985C - ldr r2, _08050C2C @ =0x06009000 - ldr r0, _08050C20 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _08050C30 @ =0x80000080 - b _08050DB0 - .align 2, 0 -_08050C0C: .4byte 0x00001441 -_08050C10: .4byte 0x00001287 -_08050C14: .4byte gUnknown_2031DAC -_08050C18: .4byte gUnknown_826701C -_08050C1C: .4byte 0x06004000 -_08050C20: .4byte 0x040000d4 -_08050C24: .4byte 0x80000800 -_08050C28: .4byte gUnknown_826985C -_08050C2C: .4byte 0x06009000 -_08050C30: .4byte 0x80000080 -_08050C34: - ldr r1, _08050C44 @ =gUnknown_826995C - ldr r2, _08050C48 @ =0x06009000 - ldr r0, _08050C4C @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _08050C50 @ =0x80000080 - b _08050DB0 - .align 2, 0 -_08050C44: .4byte gUnknown_826995C -_08050C48: .4byte 0x06009000 -_08050C4C: .4byte 0x040000d4 -_08050C50: .4byte 0x80000080 -_08050C54: - ldr r0, _08050C68 @ =gUnknown_2031DAC - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0xE0 - movs r2, 0 - strh r2, [r1] - adds r0, 0xE2 - strh r2, [r0] - b _08050DB4 - .align 2, 0 -_08050C68: .4byte gUnknown_2031DAC -_08050C6C: - ldr r1, _08050D00 @ =0x00001441 - movs r0, 0 - bl SetGpuReg - ldr r1, _08050D04 @ =0x00001287 - movs r0, 0xC - bl SetGpuReg - ldr r0, _08050D08 @ =gUnknown_2031DAC - ldr r3, [r0] - adds r1, r3, 0 - adds r1, 0xD4 - movs r2, 0 - movs r0, 0x40 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x5C - strh r0, [r1] - adds r1, 0x12 - adds r0, 0xA4 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x80 - strh r0, [r1] - subs r1, 0xE - movs r0, 0x78 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x50 - strh r0, [r1] - adds r0, r3, 0 - adds r0, 0xEC - strh r2, [r0] - ldr r3, _08050D0C @ =gUnknown_826701C - ldr r4, _08050D10 @ =0x06004000 - movs r5, 0xA1 - lsls r5, 6 - ldr r1, _08050D14 @ =0x040000d4 - ldr r6, _08050D18 @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_08050CC2: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _08050CC2 - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r0, _08050D08 @ =gUnknown_2031DAC - ldr r0, [r0] - movs r1, 0x84 - lsls r1, 1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08050D28 - ldr r1, _08050D1C @ =gUnknown_826985C - ldr r2, _08050D20 @ =0x06009000 - ldr r0, _08050D14 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _08050D24 @ =0x80000080 - b _08050DB0 - .align 2, 0 -_08050D00: .4byte 0x00001441 -_08050D04: .4byte 0x00001287 -_08050D08: .4byte gUnknown_2031DAC -_08050D0C: .4byte gUnknown_826701C -_08050D10: .4byte 0x06004000 -_08050D14: .4byte 0x040000d4 -_08050D18: .4byte 0x80000800 -_08050D1C: .4byte gUnknown_826985C -_08050D20: .4byte 0x06009000 -_08050D24: .4byte 0x80000080 -_08050D28: - ldr r1, _08050D38 @ =gUnknown_826995C - ldr r2, _08050D3C @ =0x06009000 - ldr r0, _08050D40 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _08050D44 @ =0x80000080 - b _08050DB0 - .align 2, 0 -_08050D38: .4byte gUnknown_826995C -_08050D3C: .4byte 0x06009000 -_08050D40: .4byte 0x040000d4 -_08050D44: .4byte 0x80000080 -_08050D48: - ldr r0, _08050DBC @ =gUnknown_2031DAC - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0xE4 - movs r2, 0 - strh r2, [r1] - adds r0, 0xE6 - strh r2, [r0] - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - ldr r1, _08050DC0 @ =0x00005206 - movs r0, 0xC - bl SetGpuReg - ldr r0, _08050DC4 @ =gTradeGba2_Pal - movs r1, 0x10 - movs r2, 0x60 - bl LoadPalette - ldr r3, _08050DC8 @ =gTradeGba_Gfx - ldr r4, _08050DCC @ =0x06004000 - movs r5, 0xA1 - lsls r5, 5 - ldr r1, _08050DD0 @ =0x040000d4 - ldr r6, _08050DD4 @ =0x80000800 - movs r2, 0x80 - lsls r2, 5 - movs r7, 0x80 - lsls r7, 24 -_08050D86: - str r3, [r1] - str r4, [r1, 0x4] - str r6, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r2 - adds r4, r2 - subs r5, r2 - cmp r5, r2 - bhi _08050D86 -_08050D98: - str r3, [r1] - str r4, [r1, 0x4] - lsrs r0, r5, 1 - orrs r0, r7 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, _08050DD8 @ =gUnknown_826601C - ldr r2, _08050DDC @ =0x06009000 - ldr r0, _08050DD0 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _08050DD4 @ =0x80000800 -_08050DB0: - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] -_08050DB4: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08050DBC: .4byte gUnknown_2031DAC -_08050DC0: .4byte 0x00005206 -_08050DC4: .4byte gTradeGba2_Pal -_08050DC8: .4byte gTradeGba_Gfx -_08050DCC: .4byte 0x06004000 -_08050DD0: .4byte 0x040000d4 -_08050DD4: .4byte 0x80000800 -_08050DD8: .4byte gUnknown_826601C -_08050DDC: .4byte 0x06009000 - thumb_func_end sub_8050968 - - thumb_func_start sub_8050DE0 -sub_8050DE0: @ 8050DE0 - push {lr} - ldr r0, _08050E0C @ =gUnknown_826CE2C - bl LoadSpriteSheet - ldr r0, _08050E10 @ =gUnknown_826CE7C - bl LoadSpriteSheet - ldr r0, _08050E14 @ =gUnknown_826CEB0 - bl LoadSpriteSheet - ldr r0, _08050E18 @ =gUnknown_826CF28 - bl LoadSpriteSheet - ldr r0, _08050E1C @ =gUnknown_826CE34 - bl LoadSpritePalette - ldr r0, _08050E20 @ =gUnknown_826CE3C - bl LoadSpritePalette - pop {r0} - bx r0 - .align 2, 0 -_08050E0C: .4byte gUnknown_826CE2C -_08050E10: .4byte gUnknown_826CE7C -_08050E14: .4byte gUnknown_826CEB0 -_08050E18: .4byte gUnknown_826CF28 -_08050E1C: .4byte gUnknown_826CE34 -_08050E20: .4byte gUnknown_826CE3C - thumb_func_end sub_8050DE0 - - thumb_func_start sub_8050E24 -sub_8050E24: @ 8050E24 - push {r4,r5,lr} - sub sp, 0x14 - ldr r0, _08050E94 @ =gUnknown_2031DAC - ldr r0, [r0] - adds r0, 0xEE - ldrb r0, [r0] - cmp r0, 0 - beq _08050EB4 - bl GetMultiplayerId - lsls r0, 24 - ldr r3, _08050E98 @ =gStringVar1 - movs r2, 0x80 - lsls r2, 17 - eors r2, r0 - lsrs r2, 24 - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - ldr r0, _08050E9C @ =gLinkPlayers + 8 - adds r1, r0 - adds r0, r3, 0 - bl StringCopy - ldr r5, _08050EA0 @ =gUnknown_2031DA4 - ldrb r0, [r5, 0x1] - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - movs r4, 0x64 - muls r0, r4 - ldr r1, _08050EA4 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r0, _08050EA8 @ =gStringVar3 - mov r1, sp - bl StringCopy10 - ldrb r0, [r5] - muls r0, r4 - ldr r1, _08050EAC @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r0, _08050EB0 @ =gStringVar2 - mov r1, sp - bl StringCopy10 - b _08050EF0 - .align 2, 0 -_08050E94: .4byte gUnknown_2031DAC -_08050E98: .4byte gStringVar1 -_08050E9C: .4byte gLinkPlayers + 8 -_08050EA0: .4byte gUnknown_2031DA4 -_08050EA4: .4byte gEnemyParty -_08050EA8: .4byte gStringVar3 -_08050EAC: .4byte gPlayerParty -_08050EB0: .4byte gStringVar2 -_08050EB4: - ldr r0, _08050EF8 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - lsls r4, r0, 4 - subs r4, r0 - lsls r4, 2 - ldr r0, _08050EFC @ =gIngameTrades - adds r4, r0 - ldr r0, _08050F00 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x2B - bl StringCopy - ldr r0, _08050F04 @ =gStringVar3 - adds r1, r4, 0 - bl StringCopy10 - ldr r0, _08050F08 @ =gSpecialVar_0x8005 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08050F0C @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r0, _08050F10 @ =gStringVar2 - mov r1, sp - bl StringCopy10 -_08050EF0: - add sp, 0x14 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08050EF8: .4byte gSpecialVar_0x8004 -_08050EFC: .4byte gIngameTrades -_08050F00: .4byte gStringVar1 -_08050F04: .4byte gStringVar3 -_08050F08: .4byte gSpecialVar_0x8005 -_08050F0C: .4byte gPlayerParty -_08050F10: .4byte gStringVar2 - thumb_func_end sub_8050E24 - - thumb_func_start sub_8050F14 -sub_8050F14: @ 8050F14 - push {lr} - ldr r0, _08050F2C @ =gUnknown_2031DAC - ldr r0, [r0] - movs r1, 0x84 - lsls r1, 1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08050F30 - bl sub_805232C - b _08050F34 - .align 2, 0 -_08050F2C: .4byte gUnknown_2031DAC -_08050F30: - bl sub_8050F3C -_08050F34: - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_8050F14 - - thumb_func_start sub_8050F3C -sub_8050F3C: @ 8050F3C - push {r4-r7,lr} - sub sp, 0x10 - ldr r0, _08050F60 @ =gUnknown_2031DAC - ldr r1, [r0] - adds r1, 0x94 - ldrh r5, [r1] - ldr r1, _08050F64 @ =0x0000010b - adds r7, r0, 0 - cmp r5, r1 - bls _08050F54 - bl _08052318 -_08050F54: - lsls r0, r5, 2 - ldr r1, _08050F68 @ =_08050F6C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050F60: .4byte gUnknown_2031DAC -_08050F64: .4byte 0x0000010b -_08050F68: .4byte _08050F6C - .align 2, 0 -_08050F6C: - .4byte _0805139C - .4byte _08051414 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08051470 - .4byte _080514B8 - .4byte _0805152C - .4byte _08052318 - .4byte _08051598 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _080515BC - .4byte _080515EC - .4byte _080515FE - .4byte _08051620 - .4byte _08051668 - .4byte _08051698 - .4byte _080516E0 - .4byte _08051730 - .4byte _08051784 - .4byte _08051808 - .4byte _0805182C - .4byte _08051878 - .4byte _080518C4 - .4byte _08051920 - .4byte _08051980 - .4byte _08051994 - .4byte _080519A8 - .4byte _080519BC - .4byte _08051AE4 - .4byte _08051BB4 - .4byte _08051C3C - .4byte _08051CB4 - .4byte _08051CC4 - .4byte _08051CE4 - .4byte _08051D34 - .4byte _08051D52 - .4byte _08051D90 - .4byte _08051DA0 - .4byte _08051E1C - .4byte _08052318 - .4byte _08051E44 - .4byte _08051E84 - .4byte _08051EC4 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08051EE4 - .4byte _08051F0C - .4byte _08051F28 - .4byte _08051F48 - .4byte _08051FF0 - .4byte _08052024 - .4byte _08052070 - .4byte _08052128 - .4byte _080521B4 - .4byte _08052200 - .4byte _08052210 - .4byte _08052216 - .4byte _0805223C - .4byte _08052298 - .4byte _080522BC - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052160 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _080517B0 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052318 - .4byte _08052198 -_0805139C: - ldr r3, _08051408 @ =gSprites - ldr r0, [r7] - adds r0, 0x8E - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldr r4, [r7] - adds r2, r4, 0 - adds r2, 0x8E - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldr r1, _0805140C @ =0x0000ff4c - strh r1, [r0, 0x24] - ldrb r0, [r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldr r2, _08051410 @ =gMonFrontPicCoords - adds r0, r4, 0 - adds r0, 0xF0 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - strh r0, [r1, 0x26] - adds r1, r4, 0 - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - bl GetCurrentMapMusic - ldr r1, [r7] - adds r1, 0xF4 - strh r0, [r1] - movs r0, 0x84 - lsls r0, 1 - bl PlayNewMapMusic - bl _08052318 - .align 2, 0 -_08051408: .4byte gSprites -_0805140C: .4byte 0x0000ff4c -_08051410: .4byte gMonFrontPicCoords -_08051414: - ldr r5, [r7] - adds r6, r5, 0 - adds r6, 0xE6 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - ble _08051448 - ldr r2, _08051444 @ =gSprites - adds r0, r5, 0 - adds r0, 0x8E - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - adds r1, 0x3 - strh r1, [r0, 0x24] - ldrh r0, [r6] - subs r0, 0x3 - strh r0, [r6] - bl _08052318 - .align 2, 0 -_08051444: .4byte gSprites -_08051448: - ldr r2, _0805146C @ =gSprites - adds r0, r5, 0 - adds r0, 0x8E - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x24] - strh r1, [r6] - adds r1, r5, 0 - adds r1, 0x94 - movs r0, 0xA - strh r0, [r1] - bl _08052318 - .align 2, 0 -_0805146C: .4byte gSprites -_08051470: - ldr r4, _080514AC @ =gStringVar4 - ldr r1, _080514B0 @ =gUnknown_841E1E9 - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl sub_8054508 - ldr r4, _080514B4 @ =gUnknown_2031DAC - ldr r0, [r4] - adds r2, r0, 0 - adds r2, 0xF0 - ldrh r1, [r2] - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - beq _0805149E - adds r0, r1, 0 - movs r1, 0 - bl PlayCry1 -_0805149E: - ldr r3, [r4] - adds r1, r3, 0 - adds r1, 0x94 - movs r2, 0 - movs r0, 0xB - bl _0805218E - .align 2, 0 -_080514AC: .4byte gStringVar4 -_080514B0: .4byte gUnknown_841E1E9 -_080514B4: .4byte gUnknown_2031DAC -_080514B8: - ldr r1, [r7] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0x50 - beq _080514C8 - bl _08052318 -_080514C8: - adds r0, r1, 0 - adds r0, 0x8E - ldrb r0, [r0] - ldr r2, _0805151C @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x5] - lsrs r1, 4 - movs r2, 0x2 - str r2, [sp] - movs r2, 0x1 - str r2, [sp, 0x4] - movs r2, 0x14 - str r2, [sp, 0x8] - ldr r2, _08051520 @ =0x000fffff - str r2, [sp, 0xC] - movs r2, 0x78 - movs r3, 0x20 - bl sub_804BB98 - ldr r1, [r7] - adds r1, 0xD2 - strb r0, [r1] - ldr r1, [r7] - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - ldr r4, _08051524 @ =gStringVar4 - ldr r1, _08051528 @ =gUnknown_841E200 - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl sub_8054508 - bl _08052318 - .align 2, 0 -_0805151C: .4byte gSprites -_08051520: .4byte 0x000fffff -_08051524: .4byte gStringVar4 -_08051528: .4byte gUnknown_841E200 -_0805152C: - ldr r5, _08051588 @ =gSprites - ldr r0, [r7] - adds r0, 0xD2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r5, 0 - adds r4, 0x1C - adds r0, r4 - ldr r1, [r0] - ldr r0, _0805158C @ =SpriteCallbackDummy - cmp r1, r0 - beq _0805154C - bl _08052318 -_0805154C: - ldr r0, _08051590 @ =gUnknown_826CDE4 - movs r1, 0x78 - movs r2, 0x20 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0xD3 - strb r0, [r1] - ldr r2, [r7] - adds r0, r2, 0 - adds r0, 0xD3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _08051594 @ =sub_8053938 - str r1, [r0] - adds r2, 0xD2 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite - ldr r1, [r7] - bl _080522AC - .align 2, 0 -_08051588: .4byte gSprites -_0805158C: .4byte SpriteCallbackDummy -_08051590: .4byte gUnknown_826CDE4 -_08051594: .4byte sub_8053938 -_08051598: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _080515B8 @ =gUnknown_2031DAC - ldr r0, [r0] - adds r0, 0x94 - movs r1, 0x14 - strh r1, [r0] - bl _08052318 - .align 2, 0 -_080515B8: .4byte gUnknown_2031DAC -_080515BC: - ldr r0, _080515E8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080515CC - bl _08052318 -_080515CC: - movs r0, 0x4 - bl sub_8050968 - movs r0, 0 - movs r1, 0xFF - bl FillWindowPixelBuffer - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - bl _080522A8 - .align 2, 0 -_080515E8: .4byte gPaletteFade -_080515EC: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - bl _080522A4 -_080515FE: - ldr r0, _0805161C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0805160E - bl _08052318 -_0805160E: - ldr r0, [r7] - adds r0, 0x94 - movs r1, 0x17 - strh r1, [r0] - bl _08052318 - .align 2, 0 -_0805161C: .4byte gPaletteFade -_08051620: - ldr r4, _0805163C @ =gUnknown_2031DAC - ldr r0, [r4] - adds r2, r0, 0 - adds r2, 0xEA - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 1 - cmp r1, r0 - bls _08051640 - adds r0, r1, 0 - subs r0, 0x34 - strh r0, [r2] - b _0805165C - .align 2, 0 -_0805163C: .4byte gUnknown_2031DAC -_08051640: - movs r0, 0x1 - bl sub_8050968 - ldr r3, [r4] - adds r1, r3, 0 - adds r1, 0xEA - movs r2, 0 - movs r0, 0x80 - strh r0, [r1] - subs r1, 0x56 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - str r2, [r3, 0x64] -_0805165C: - ldr r0, _08051664 @ =gUnknown_2031DAC - ldr r4, [r0] - bl _08051EB0 - .align 2, 0 -_08051664: .4byte gUnknown_2031DAC -_08051668: - ldr r1, [r7] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0x14 - bhi _08051678 - bl _08052318 -_08051678: - bl sub_804FE24 - ldr r0, _08051694 @ =gUnknown_826CF30 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x91 - strb r0, [r1] - ldr r1, [r7] - bl _080522AC - .align 2, 0 -_08051694: .4byte gUnknown_826CF30 -_08051698: - ldr r2, _080516D8 @ =gSprites - ldr r0, [r7] - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - cmp r0, 0 - blt _080516B8 - bl _08052318 -_080516B8: - adds r0, r1, 0 - bl DestroySprite - movs r1, 0xC8 - lsls r1, 3 - movs r0, 0x50 - bl SetGpuReg - ldr r1, _080516DC @ =0x0000040c - movs r0, 0x52 - bl SetGpuReg - ldr r1, [r7] - bl _080522AC - .align 2, 0 -_080516D8: .4byte gSprites -_080516DC: .4byte 0x0000040c -_080516E0: - ldr r2, [r7] - adds r0, r2, 0 - adds r0, 0xE0 - ldrh r1, [r0] - subs r1, 0x1 - strh r1, [r0] - lsls r1, 16 - movs r0, 0x9E - lsls r0, 17 - cmp r1, r0 - bne _08051700 - adds r1, r2, 0 - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_08051700: - ldr r0, [r7] - adds r0, 0xE0 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0xA4 - lsls r0, 1 - cmp r1, r0 - beq _08051714 - bl _08052318 -_08051714: - ldr r0, _0805172C @ =gUnknown_826CEB8 - movs r1, 0x80 - movs r2, 0x41 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x92 - strb r0, [r1] - bl _08052318 - .align 2, 0 -_0805172C: .4byte gUnknown_826CEB8 -_08051730: - ldr r0, _08051774 @ =gUnknown_826CE44 - movs r1, 0x80 - movs r2, 0x50 - movs r3, 0x3 - bl CreateSprite - ldr r4, _08051778 @ =gUnknown_2031DAC - ldr r1, [r4] - adds r1, 0x90 - strb r0, [r1] - ldr r0, _0805177C @ =gUnknown_826CE84 - movs r1, 0x80 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - adds r1, 0x91 - strb r0, [r1] - ldr r0, [r4] - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08051780 @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl StartSpriteAnim - ldr r1, [r4] - bl _080522AC - .align 2, 0 -_08051774: .4byte gUnknown_826CE44 -_08051778: .4byte gUnknown_2031DAC -_0805177C: .4byte gUnknown_826CE84 -_08051780: .4byte gSprites -_08051784: - ldr r2, [r7] - adds r1, r2, 0 - adds r1, 0xE0 - ldrh r0, [r1] - subs r0, 0x2 - strh r0, [r1] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA6 - bne _0805179E - subs r1, 0x4C - movs r0, 0xC8 - strh r0, [r1] -_0805179E: - ldr r1, _080517AC @ =0x00001241 - movs r0, 0 - bl SetGpuReg - bl _08052318 - .align 2, 0 -_080517AC: .4byte 0x00001241 -_080517B0: - ldr r2, _08051804 @ =gSprites - ldr r4, [r7] - adds r3, r4, 0 - adds r3, 0x90 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - subs r1, 0x2 - strh r1, [r0, 0x22] - adds r0, r4, 0 - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - subs r1, 0x2 - strh r1, [r0, 0x22] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r3, 0x22 - ldrsh r1, [r0, r3] - movs r0, 0x8 - negs r0, r0 - cmp r1, r0 - blt _080517F6 - bl _08052318 -_080517F6: - adds r1, r4, 0 - adds r1, 0x94 - movs r0, 0x1D - strh r0, [r1] - bl _08052318 - .align 2, 0 -_08051804: .4byte gSprites -_08051808: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08051828 @ =gUnknown_2031DAC - ldr r0, [r0] - adds r0, 0x94 - movs r1, 0x1E - strh r1, [r0] - bl _08052318 - .align 2, 0 -_08051828: .4byte gUnknown_2031DAC -_0805182C: - ldr r0, _08051870 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0805183C - bl _08052318 -_0805183C: - ldr r0, [r7] - adds r0, 0x90 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08051874 @ =gSprites - adds r0, r4 - bl DestroySprite - ldr r0, [r7] - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - movs r0, 0x2 - bl sub_8050968 - ldr r1, [r7] - bl _080522AC - .align 2, 0 -_08051870: .4byte gPaletteFade -_08051874: .4byte gSprites -_08051878: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r5, _080518BC @ =gUnknown_826CE84 - adds r0, r5, 0 - movs r1, 0x6F - movs r2, 0xAA - movs r3, 0 - bl CreateSprite - ldr r4, _080518C0 @ =gUnknown_2031DAC - ldr r1, [r4] - adds r1, 0x90 - strb r0, [r1] - movs r2, 0xA - negs r2, r2 - adds r0, r5, 0 - movs r1, 0x81 - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - adds r1, 0x91 - strb r0, [r1] - ldr r1, [r4] - bl _080522AC - .align 2, 0 -_080518BC: .4byte gUnknown_826CE84 -_080518C0: .4byte gUnknown_2031DAC -_080518C4: - ldr r0, _08051914 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080518E2 - movs r0, 0x28 - bl PlaySE - ldr r0, _08051918 @ =gUnknown_2031DAC - ldr r1, [r0] - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080518E2: - ldr r3, _0805191C @ =gSprites - ldr r0, _08051918 @ =gUnknown_2031DAC - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x90 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x26] - subs r1, 0x3 - strh r1, [r0, 0x26] - adds r2, 0x91 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - bl _08052318 - .align 2, 0 -_08051914: .4byte gPaletteFade -_08051918: .4byte gUnknown_2031DAC -_0805191C: .4byte gSprites -_08051920: - ldr r5, _0805197C @ =gSprites - ldr r4, [r7] - adds r2, r4, 0 - adds r2, 0x90 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r1, [r0, 0x26] - subs r1, 0x3 - strh r1, [r0, 0x26] - adds r6, r4, 0 - adds r6, 0x91 - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r3, r0, r5 - movs r0, 0x26 - ldrsh r1, [r3, r0] - movs r0, 0x5A - negs r0, r0 - cmp r1, r0 - ble _08051966 - bl _08052318 -_08051966: - movs r2, 0x1 - strh r2, [r3, 0x30] - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r2, [r0, 0x30] - adds r1, r4, 0 - bl _080522AC - .align 2, 0 -_0805197C: .4byte gSprites -_08051980: - ldr r2, _08051990 @ =0x0000ffff - movs r0, 0x1 - movs r1, 0x10 - bl BlendPalettes - bl _080522A8 - .align 2, 0 -_08051990: .4byte 0x0000ffff -_08051994: - ldr r2, _080519A4 @ =0x0000ffff - movs r0, 0x1 - movs r1, 0 - bl BlendPalettes - bl _080522A8 - .align 2, 0 -_080519A4: .4byte 0x0000ffff -_080519A8: - ldr r2, _080519B8 @ =0x0000ffff - movs r0, 0x1 - movs r1, 0x10 - bl BlendPalettes - bl _080522A8 - .align 2, 0 -_080519B8: .4byte 0x0000ffff -_080519BC: - ldr r5, _08051A28 @ =gUnknown_2031DAC - ldr r0, [r5] - adds r0, 0xF0 - ldrh r0, [r0] - bl IsPokeSpriteNotFlipped - lsls r0, 24 - cmp r0, 0 - bne _08051A34 - ldr r4, _08051A2C @ =gSprites - ldr r2, [r5] - adds r2, 0x8E - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x10 - adds r0, r1 - ldr r1, _08051A30 @ =gUnknown_826CF88 - str r1, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x1] - movs r2, 0x3 - orrs r1, r2 - strb r1, [r0, 0x1] - ldr r0, [r5] - adds r0, 0x8E - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0 - movs r2, 0x3 - movs r3, 0x3 - bl CalcCenterToCornerVec - ldr r0, [r5] - adds r0, 0x8E - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0 - bl StartSpriteAffineAnim - b _08051A4A - .align 2, 0 -_08051A28: .4byte gUnknown_2031DAC -_08051A2C: .4byte gSprites -_08051A30: .4byte gUnknown_826CF88 -_08051A34: - ldr r0, [r5] - adds r0, 0x8E - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08051AD8 @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAffineAnim -_08051A4A: - ldr r5, _08051ADC @ =gUnknown_2031DAC - ldr r0, [r5] - adds r0, 0x8F - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08051AD8 @ =gSprites - adds r0, r4 - movs r1, 0 - bl StartSpriteAffineAnim - ldr r2, [r5] - adds r3, r2, 0 - adds r3, 0x8E - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x3C - strh r1, [r0, 0x20] - adds r2, 0x8F - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xB4 - strh r1, [r0, 0x20] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xC0 - strh r1, [r0, 0x22] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _08051AE0 @ =0x0000ffe0 - strh r1, [r0, 0x22] - ldrb r0, [r3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - adds r1, 0x3E - ldrb r3, [r1] - movs r2, 0x5 - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - strb r0, [r1] - ldr r0, [r5] - adds r0, 0x8F - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - ands r2, r1 - strb r2, [r0] - ldr r1, [r5] - bl _080522AC - .align 2, 0 -_08051AD8: .4byte gSprites -_08051ADC: .4byte gUnknown_2031DAC -_08051AE0: .4byte 0x0000ffe0 -_08051AE4: - ldr r4, _08051BAC @ =gSprites - ldr r2, [r7] - adds r3, r2, 0 - adds r3, 0x8E - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x26] - subs r1, 0x3 - movs r5, 0 - strh r1, [r0, 0x26] - adds r2, 0x8F - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x26] - adds r0, 0xA3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bhi _08051B2C - movs r0, 0x27 - bl PlaySE -_08051B2C: - ldr r2, [r7] - adds r3, r2, 0 - adds r3, 0x8E - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r6, 0x26 - ldrsh r1, [r0, r6] - movs r0, 0xDE - negs r0, r0 - cmp r1, r0 - blt _08051B4C - bl _08052318 -_08051B4C: - adds r0, r2, 0 - adds r0, 0x90 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r5, [r0, 0x30] - adds r0, r2, 0 - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r5, [r0, 0x30] - adds r1, r2, 0 - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldr r0, [r7] - adds r0, 0x8F - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r2 - strb r1, [r0] - ldr r2, _08051BB0 @ =0x0000ffff - movs r0, 0x1 - movs r1, 0 - bl BlendPalettes - b _08052318 - .align 2, 0 -_08051BAC: .4byte gSprites -_08051BB0: .4byte 0x0000ffff -_08051BB4: - ldr r4, _08051C38 @ =gSprites - ldr r2, [r7] - adds r3, r2, 0 - adds r3, 0x90 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x26] - subs r1, 0x3 - strh r1, [r0, 0x26] - adds r2, 0x91 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r2, 0x26 - ldrsh r1, [r0, r2] - movs r0, 0xDE - negs r0, r0 - cmp r1, r0 - ble _08051BF6 - b _08052318 -_08051BF6: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, [r7] - adds r2, r1, 0 - adds r2, 0x94 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - adds r1, 0x90 - ldrb r1, [r1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r0, [r7] - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - b _08052318 - .align 2, 0 -_08051C38: .4byte gSprites -_08051C3C: - ldr r0, _08051CA4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08051C4A - b _08052318 -_08051C4A: - ldr r1, [r7] - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x1 - bl sub_8050968 - ldr r0, [r7] - adds r0, 0xE0 - movs r1, 0xA6 - strh r1, [r0] - ldr r0, _08051CA8 @ =gUnknown_826CE44 - movs r4, 0x14 - negs r4, r4 - movs r1, 0x80 - adds r2, r4, 0 - movs r3, 0x3 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x90 - strb r0, [r1] - ldr r0, _08051CAC @ =gUnknown_826CE84 - movs r1, 0x80 - adds r2, r4, 0 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x91 - strb r0, [r1] - ldr r0, [r7] - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08051CB0 @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl StartSpriteAnim - b _08052318 - .align 2, 0 -_08051CA4: .4byte gPaletteFade -_08051CA8: .4byte gUnknown_826CE44 -_08051CAC: .4byte gUnknown_826CE84 -_08051CB0: .4byte gSprites -_08051CB4: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - b _080522A4 -_08051CC4: - movs r1, 0x92 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - ldr r0, _08051CE0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08051CDC - b _08052318 -_08051CDC: - b _080522A8 - .align 2, 0 -_08051CE0: .4byte gPaletteFade -_08051CE4: - ldr r2, _08051D30 @ =gSprites - ldr r4, [r7] - adds r3, r4, 0 - adds r3, 0x90 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - adds r0, r4, 0 - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r3, 0x26 - ldrsh r1, [r0, r3] - movs r6, 0x22 - ldrsh r0, [r0, r6] - adds r1, r0 - cmp r1, 0x40 - beq _08051D2A - b _08052318 -_08051D2A: - adds r1, r4, 0 - b _080522AC - .align 2, 0 -_08051D30: .4byte gSprites -_08051D34: - ldr r1, [r7] - adds r5, r1, 0 - adds r5, 0xE0 - ldrh r0, [r5] - adds r0, 0x2 - strh r0, [r5] - lsls r0, 16 - asrs r0, 16 - movs r6, 0x9E - lsls r6, 1 - cmp r0, r6 - bgt _08051D4E - b _08052318 -_08051D4E: - strh r6, [r5] - b _080522AC -_08051D52: - ldr r0, [r7] - adds r0, 0x90 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08051D8C @ =gSprites - adds r0, r4 - bl DestroySprite - ldr r0, [r7] - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r3, [r7] - adds r2, r3, 0 - adds r2, 0x94 - ldrh r0, [r2] - adds r0, 0x1 - movs r1, 0 - strh r0, [r2] - str r1, [r3, 0x64] - b _08052318 - .align 2, 0 -_08051D8C: .4byte gSprites -_08051D90: - ldr r1, [r7] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0xA - beq _08051D9E - b _08052318 -_08051D9E: - b _080522AC -_08051DA0: - ldr r1, [r7] - adds r2, r1, 0 - adds r2, 0xE0 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - lsls r0, 16 - asrs r0, 16 - movs r3, 0xAE - lsls r3, 1 - cmp r0, r3 - ble _08051DC2 - strh r3, [r2] - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_08051DC2: - ldr r2, [r7] - adds r0, r2, 0 - adds r0, 0xE0 - movs r3, 0 - ldrsh r1, [r0, r3] - movs r0, 0xA4 - lsls r0, 1 - cmp r1, r0 - beq _08051DD6 - b _08052318 -_08051DD6: - movs r6, 0x84 - lsls r6, 1 - adds r0, r2, r6 - ldrb r0, [r0] - cmp r0, 0 - bne _08051DE4 - b _08052318 -_08051DE4: - ldr r0, _08051E10 @ =gUnknown_826CEB8 - movs r1, 0x80 - movs r2, 0x41 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x92 - strb r0, [r1] - ldr r2, _08051E14 @ =gSprites - ldr r0, [r7] - adds r0, 0x92 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _08051E18 @ =sub_804FDDC - str r1, [r0] - b _08052318 - .align 2, 0 -_08051E10: .4byte gUnknown_826CEB8 -_08051E14: .4byte gSprites -_08051E18: .4byte sub_804FDDC -_08051E1C: - ldr r0, _08051E3C @ =gUnknown_826CF30 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - ldr r2, _08051E40 @ =gUnknown_2031DAC - ldr r1, [r2] - adds r1, 0x91 - strb r0, [r1] - ldr r0, [r2] - adds r0, 0x94 - movs r1, 0x32 - strh r1, [r0] - b _08052318 - .align 2, 0 -_08051E3C: .4byte gUnknown_826CF30 -_08051E40: .4byte gUnknown_2031DAC -_08051E44: - ldr r2, _08051E80 @ =gSprites - ldr r0, [r7] - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - cmp r0, 0 - blt _08051E62 - b _08052318 -_08051E62: - adds r0, r1, 0 - bl DestroySprite - movs r0, 0x6 - bl sub_8050968 - ldr r1, [r7] - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x98 - bl PlaySE - b _08052318 - .align 2, 0 -_08051E80: .4byte gSprites -_08051E84: - ldr r1, [r7] - adds r2, r1, 0 - adds r2, 0xEA - ldrh r3, [r2] - ldr r0, _08051E9C @ =0x000003ff - cmp r3, r0 - bhi _08051EA0 - adds r0, r3, 0 - adds r0, 0x34 - strh r0, [r2] - b _08051EAE - .align 2, 0 -_08051E9C: .4byte 0x000003ff -_08051EA0: - movs r0, 0x80 - lsls r0, 3 - strh r0, [r2] - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_08051EAE: - ldr r4, [r7] -_08051EB0: - adds r0, r4, 0 - adds r0, 0xEA - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 8 - bl __divsi3 - adds r4, 0xE8 - strh r0, [r4] - b _08052318 -_08051EC4: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08051EE0 @ =gUnknown_2031DAC - ldr r0, [r0] - adds r0, 0x94 - movs r1, 0x3C - strh r1, [r0] - b _08052318 - .align 2, 0 -_08051EE0: .4byte gUnknown_2031DAC -_08051EE4: - ldr r4, _08051F08 @ =gPaletteFade - ldrb r1, [r4, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08051EF2 - b _08052318 -_08051EF2: - movs r0, 0x5 - bl sub_8050968 - movs r0, 0x7 - bl sub_8050968 - ldrb r0, [r4, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r4, 0x8] - b _080522A8 - .align 2, 0 -_08051F08: .4byte gPaletteFade -_08051F0C: - ldr r2, _08051F24 @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - b _080522A4 - .align 2, 0 -_08051F24: .4byte gPaletteFade -_08051F28: - movs r1, 0xA2 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - ldr r0, _08051F44 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08051F40 - b _08052318 -_08051F40: - b _080522A8 - .align 2, 0 -_08051F44: .4byte gPaletteFade -_08051F48: - ldr r0, _08051FDC @ =gUnknown_826CDE4 - movs r2, 0x8 - negs r2, r2 - movs r1, 0x78 - movs r3, 0 - bl CreateSprite - ldr r5, _08051FE0 @ =gUnknown_2031DAC - ldr r1, [r5] - adds r1, 0xD3 - movs r6, 0 - strb r0, [r1] - ldr r4, _08051FE4 @ =gSprites - ldr r2, [r5] - adds r2, 0xD3 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x4A - strh r1, [r0, 0x34] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _08051FE8 @ =sub_8053A0C - str r1, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x1 - bl StartSpriteAnim - ldr r0, [r5] - adds r0, 0xD3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x2 - bl StartSpriteAffineAnim - ldr r0, [r5] - adds r0, 0xD3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x5] - lsrs r1, 4 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - ldr r2, _08051FEC @ =0x0000ffff - movs r1, 0x10 - bl BlendPalettes - ldr r2, [r5] - adds r1, r2, 0 - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - str r6, [r2, 0x64] - b _08052318 - .align 2, 0 -_08051FDC: .4byte gUnknown_826CDE4 -_08051FE0: .4byte gUnknown_2031DAC -_08051FE4: .4byte gSprites -_08051FE8: .4byte sub_8053A0C -_08051FEC: .4byte 0x0000ffff -_08051FF0: - ldr r2, _0805201C @ =gSprites - ldr r0, [r7] - adds r0, 0xD3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x5] - lsrs r1, 4 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - ldr r1, _08052020 @ =0x0000ffff - str r1, [sp] - movs r1, 0x1 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, [r7] - b _080522AC - .align 2, 0 -_0805201C: .4byte gSprites -_08052020: .4byte 0x0000ffff -_08052024: - ldr r2, _08052060 @ =gSprites - ldr r3, [r7] - adds r0, r3, 0 - adds r0, 0xD3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _08052064 @ =SpriteCallbackDummy - cmp r1, r0 - beq _08052042 - b _08052318 -_08052042: - adds r0, r3, 0 - adds r0, 0xF2 - ldrh r2, [r0] - lsls r0, r2, 3 - ldr r1, _08052068 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _0805206C @ =gMonSpritesGfxPtr - ldr r1, [r1] - ldr r1, [r1, 0x10] - ldr r3, [r3, 0x6C] - bl HandleLoadSpecialPokePic - ldr r1, [r7] - b _080522AC - .align 2, 0 -_08052060: .4byte gSprites -_08052064: .4byte SpriteCallbackDummy -_08052068: .4byte gMonFrontPicTable -_0805206C: .4byte gMonSpritesGfxPtr -_08052070: - ldr r4, _0805211C @ =gSprites - ldr r2, [r7] - adds r6, r2, 0 - adds r6, 0x8F - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r5, 0 - movs r1, 0x78 - strh r1, [r0, 0x20] - ldrb r0, [r6] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldr r3, _08052120 @ =gMonFrontPicCoords - adds r2, 0xF2 - ldrh r0, [r2] - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x1] - adds r0, 0x3C - strh r0, [r1, 0x22] - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r5, [r0, 0x24] - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r5, [r0, 0x26] - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0 - bl StartSpriteAnim - ldr r0, [r7] - adds r0, 0x8F - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r1, [r1, 0x5] - lsrs r1, 4 - movs r2, 0x2 - str r2, [sp] - movs r2, 0x1 - str r2, [sp, 0x4] - movs r2, 0x14 - str r2, [sp, 0x8] - ldr r2, _08052124 @ =0x000fffff - str r2, [sp, 0xC] - movs r2, 0x78 - movs r3, 0x54 - bl CreatePokeballSpriteToReleaseMon - ldr r0, [r7] - adds r0, 0xD3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl FreeSpriteOamMatrix - ldr r0, [r7] - adds r0, 0xD3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r1, [r7] - b _080522AC - .align 2, 0 -_0805211C: .4byte gSprites -_08052120: .4byte gMonFrontPicCoords -_08052124: .4byte 0x000fffff -_08052128: - movs r1, 0xAA - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - ldr r4, _08052154 @ =gStringVar4 - ldr r1, _08052158 @ =gUnknown_841E20D - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl sub_8054508 - ldr r0, _0805215C @ =gUnknown_2031DAC - ldr r3, [r0] - adds r1, r3, 0 - adds r1, 0x94 - movs r2, 0 - movs r0, 0xA7 - b _0805218E - .align 2, 0 -_08052154: .4byte gStringVar4 -_08052158: .4byte gUnknown_841E20D -_0805215C: .4byte gUnknown_2031DAC -_08052160: - ldr r1, [r7] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0x3C - bhi _0805216E - b _08052318 -_0805216E: - adds r2, r1, 0 - adds r2, 0xF2 - ldrh r1, [r2] - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - beq _08052184 - adds r0, r1, 0 - movs r1, 0 - bl PlayCry1 -_08052184: - ldr r3, [r7] - adds r1, r3, 0 - adds r1, 0x94 - movs r2, 0 - ldr r0, _08052194 @ =0x0000010b -_0805218E: - strh r0, [r1] - str r2, [r3, 0x64] - b _08052318 - .align 2, 0 -_08052194: .4byte 0x0000010b -_08052198: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _080521A4 - b _08052318 -_080521A4: - ldr r0, _080521B0 @ =gUnknown_2031DAC - ldr r0, [r0] - adds r0, 0x94 - movs r1, 0x44 - strh r1, [r0] - b _08052318 - .align 2, 0 -_080521B0: .4byte gUnknown_2031DAC -_080521B4: - ldr r1, [r7] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0xA - bne _080521C6 - ldr r0, _080521F4 @ =0x00000103 - bl PlayFanfare -_080521C6: - ldr r1, [r7] - ldr r0, [r1, 0x64] - cmp r0, 0xFA - beq _080521D0 - b _08052318 -_080521D0: - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - movs r5, 0 - strh r0, [r1] - ldr r4, _080521F8 @ =gStringVar4 - ldr r1, _080521FC @ =gUnknown_841E21E - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl sub_8054508 - ldr r0, [r7] - str r5, [r0, 0x64] - b _08052318 - .align 2, 0 -_080521F4: .4byte 0x00000103 -_080521F8: .4byte gStringVar4 -_080521FC: .4byte gUnknown_841E21E -_08052200: - ldr r1, [r7] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0x3C - beq _0805220E - b _08052318 -_0805220E: - b _080522AC -_08052210: - bl sub_80544AC - b _080522A8 -_08052216: - ldr r2, [r7] - adds r0, r2, 0 - adds r0, 0xEE - ldrb r0, [r0] - cmp r0, 0 - beq _08052226 - movs r0, 0x1 - b _0805231A -_08052226: - ldr r0, _08052238 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08052318 - adds r1, r2, 0 - b _080522AC - .align 2, 0 -_08052238: .4byte gMain -_0805223C: - ldr r0, _08052280 @ =gSpecialVar_0x8005 - ldrb r0, [r0] - movs r1, 0 - bl sub_805080C - ldr r1, _08052284 @ =gCB2_AfterEvolution - ldr r0, _08052288 @ =sub_8050948 - str r0, [r1] - ldr r7, _0805228C @ =gUnknown_2031DA4 - ldrb r0, [r7] - movs r6, 0x64 - muls r0, r6 - ldr r5, _08052290 @ =gPlayerParty - adds r0, r5 - movs r1, 0x1 - movs r2, 0 - bl GetEvolutionTargetSpecies - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _080522A8 - ldrb r3, [r7] - adds r0, r3, 0 - muls r0, r6 - adds r0, r5 - ldr r1, _08052294 @ =gUnknown_2031DAC - ldr r1, [r1] - adds r1, 0x8F - ldrb r2, [r1] - adds r1, r4, 0 - bl TradeEvolutionScene - b _080522A8 - .align 2, 0 -_08052280: .4byte gSpecialVar_0x8005 -_08052284: .4byte gCB2_AfterEvolution -_08052288: .4byte sub_8050948 -_0805228C: .4byte gUnknown_2031DA4 -_08052290: .4byte gPlayerParty -_08052294: .4byte gUnknown_2031DAC -_08052298: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 -_080522A4: - bl BeginNormalPaletteFade -_080522A8: - ldr r0, _080522B8 @ =gUnknown_2031DAC - ldr r1, [r0] -_080522AC: - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _08052318 - .align 2, 0 -_080522B8: .4byte gUnknown_2031DAC -_080522BC: - ldr r0, _08052324 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08052318 - ldr r0, [r7] - adds r0, 0xF4 - ldrh r0, [r0] - bl PlayNewMapMusic - ldr r0, [r7] - cmp r0, 0 - beq _0805230A - bl FreeAllWindowBuffers - movs r0, 0x3 - bl GetBgTilemapBuffer - bl Free - movs r0, 0x1 - bl GetBgTilemapBuffer - bl Free - movs r0, 0 - bl GetBgTilemapBuffer - bl Free - bl FreeMonSpritesGfx - ldr r0, [r7] - bl Free - str r4, [r7] -_0805230A: - ldr r0, _08052328 @ =CB2_ReturnToField - bl SetMainCallback2 - bl sub_8053AE4 - bl HelpSystem_Enable -_08052318: - movs r0, 0 -_0805231A: - add sp, 0x10 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08052324: .4byte gPaletteFade -_08052328: .4byte CB2_ReturnToField - thumb_func_end sub_8050F3C - - thumb_func_start sub_805232C -sub_805232C: @ 805232C - push {r4-r7,lr} - sub sp, 0x10 - ldr r0, _08052350 @ =gUnknown_2031DAC - ldr r1, [r0] - adds r1, 0x94 - ldrh r5, [r1] - ldr r1, _08052354 @ =0x0000010b - adds r7, r0, 0 - cmp r5, r1 - bls _08052344 - bl _08053774 -_08052344: - lsls r0, r5, 2 - ldr r1, _08052358 @ =_0805235C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08052350: .4byte gUnknown_2031DAC -_08052354: .4byte 0x0000010b -_08052358: .4byte _0805235C - .align 2, 0 -_0805235C: - .4byte _0805278C - .4byte _08052804 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08052860 - .4byte _080528A8 - .4byte _0805291C - .4byte _08053774 - .4byte _08052988 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _080529AC - .4byte _080529DC - .4byte _080529EE - .4byte _08052A10 - .4byte _08053774 - .4byte _08053774 - .4byte _08052B08 - .4byte _08052B28 - .4byte _08052B94 - .4byte _08052C18 - .4byte _08052C3C - .4byte _08052C88 - .4byte _08052CD4 - .4byte _08052D30 - .4byte _08052D9C - .4byte _08052DB0 - .4byte _08052DC4 - .4byte _08052DD8 - .4byte _08052F00 - .4byte _08052FD0 - .4byte _08053058 - .4byte _080530F8 - .4byte _08053108 - .4byte _08053128 - .4byte _08053774 - .4byte _08053774 - .4byte _0805324C - .4byte _0805325C - .4byte _0805327A - .4byte _08053774 - .4byte _080532A0 - .4byte _080532E0 - .4byte _08053320 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053340 - .4byte _08053368 - .4byte _08053384 - .4byte _080533A4 - .4byte _0805344C - .4byte _08053480 - .4byte _080534CC - .4byte _08053584 - .4byte _08053610 - .4byte _0805365C - .4byte _0805366C - .4byte _08053672 - .4byte _08053698 - .4byte _080536F4 - .4byte _08053718 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08052A58 - .4byte _08052A8C - .4byte _08052AE0 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053180 - .4byte _080531E8 - .4byte _08053224 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _080535BC - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08052BC0 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _08053774 - .4byte _080535F4 -_0805278C: - ldr r3, _080527F8 @ =gSprites - ldr r0, [r7] - adds r0, 0x8E - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldr r4, [r7] - adds r2, r4, 0 - adds r2, 0x8E - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldr r1, _080527FC @ =0x0000ff4c - strh r1, [r0, 0x24] - ldrb r0, [r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldr r2, _08052800 @ =gMonFrontPicCoords - adds r0, r4, 0 - adds r0, 0xF0 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1] - strh r0, [r1, 0x26] - adds r1, r4, 0 - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - bl GetCurrentMapMusic - ldr r1, [r7] - adds r1, 0xF4 - strh r0, [r1] - movs r0, 0x84 - lsls r0, 1 - bl PlayNewMapMusic - bl _08053774 - .align 2, 0 -_080527F8: .4byte gSprites -_080527FC: .4byte 0x0000ff4c -_08052800: .4byte gMonFrontPicCoords -_08052804: - ldr r5, [r7] - adds r6, r5, 0 - adds r6, 0xE6 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - ble _08052838 - ldr r2, _08052834 @ =gSprites - adds r0, r5, 0 - adds r0, 0x8E - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x24] - adds r1, 0x3 - strh r1, [r0, 0x24] - ldrh r0, [r6] - subs r0, 0x3 - strh r0, [r6] - bl _08053774 - .align 2, 0 -_08052834: .4byte gSprites -_08052838: - ldr r2, _0805285C @ =gSprites - adds r0, r5, 0 - adds r0, 0x8E - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x24] - strh r1, [r6] - adds r1, r5, 0 - adds r1, 0x94 - movs r0, 0xA - strh r0, [r1] - bl _08053774 - .align 2, 0 -_0805285C: .4byte gSprites -_08052860: - ldr r4, _0805289C @ =gStringVar4 - ldr r1, _080528A0 @ =gUnknown_841E1E9 - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl sub_8054508 - ldr r4, _080528A4 @ =gUnknown_2031DAC - ldr r0, [r4] - adds r2, r0, 0 - adds r2, 0xF0 - ldrh r1, [r2] - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - beq _0805288E - adds r0, r1, 0 - movs r1, 0 - bl PlayCry1 -_0805288E: - ldr r3, [r4] - adds r1, r3, 0 - adds r1, 0x94 - movs r2, 0 - movs r0, 0xB - bl _080535EA - .align 2, 0 -_0805289C: .4byte gStringVar4 -_080528A0: .4byte gUnknown_841E1E9 -_080528A4: .4byte gUnknown_2031DAC -_080528A8: - ldr r1, [r7] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0x50 - beq _080528B8 - bl _08053774 -_080528B8: - adds r0, r1, 0 - adds r0, 0x8E - ldrb r0, [r0] - ldr r2, _0805290C @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x5] - lsrs r1, 4 - movs r2, 0x2 - str r2, [sp] - movs r2, 0x1 - str r2, [sp, 0x4] - movs r2, 0x14 - str r2, [sp, 0x8] - ldr r2, _08052910 @ =0x000fffff - str r2, [sp, 0xC] - movs r2, 0x78 - movs r3, 0x20 - bl sub_804BB98 - ldr r1, [r7] - adds r1, 0xD2 - strb r0, [r1] - ldr r1, [r7] - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - ldr r4, _08052914 @ =gStringVar4 - ldr r1, _08052918 @ =gUnknown_841E200 - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl sub_8054508 - bl _08053774 - .align 2, 0 -_0805290C: .4byte gSprites -_08052910: .4byte 0x000fffff -_08052914: .4byte gStringVar4 -_08052918: .4byte gUnknown_841E200 -_0805291C: - ldr r5, _08052978 @ =gSprites - ldr r0, [r7] - adds r0, 0xD2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r5, 0 - adds r4, 0x1C - adds r0, r4 - ldr r1, [r0] - ldr r0, _0805297C @ =SpriteCallbackDummy - cmp r1, r0 - beq _0805293C - bl _08053774 -_0805293C: - ldr r0, _08052980 @ =gUnknown_826CDE4 - movs r1, 0x78 - movs r2, 0x20 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0xD3 - strb r0, [r1] - ldr r2, [r7] - adds r0, r2, 0 - adds r0, 0xD3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _08052984 @ =sub_8053938 - str r1, [r0] - adds r2, 0xD2 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite - ldr r1, [r7] - bl _08053708 - .align 2, 0 -_08052978: .4byte gSprites -_0805297C: .4byte SpriteCallbackDummy -_08052980: .4byte gUnknown_826CDE4 -_08052984: .4byte sub_8053938 -_08052988: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _080529A8 @ =gUnknown_2031DAC - ldr r0, [r0] - adds r0, 0x94 - movs r1, 0x14 - strh r1, [r0] - bl _08053774 - .align 2, 0 -_080529A8: .4byte gUnknown_2031DAC -_080529AC: - ldr r0, _080529D8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080529BC - bl _08053774 -_080529BC: - movs r0, 0x4 - bl sub_8050968 - movs r0, 0 - movs r1, 0xFF - bl FillWindowPixelBuffer - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - bl _08053704 - .align 2, 0 -_080529D8: .4byte gPaletteFade -_080529DC: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - bl _08053700 -_080529EE: - ldr r0, _08052A0C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080529FE - bl _08053774 -_080529FE: - ldr r0, [r7] - adds r0, 0x94 - movs r1, 0x17 - strh r1, [r0] - bl _08053774 - .align 2, 0 -_08052A0C: .4byte gPaletteFade -_08052A10: - ldr r4, _08052A2C @ =gUnknown_2031DAC - ldr r0, [r4] - adds r2, r0, 0 - adds r2, 0xEA - ldrh r1, [r2] - movs r0, 0x80 - lsls r0, 1 - cmp r1, r0 - bls _08052A30 - adds r0, r1, 0 - subs r0, 0x34 - strh r0, [r2] - b _08052A4A - .align 2, 0 -_08052A2C: .4byte gUnknown_2031DAC -_08052A30: - movs r0, 0x1 - bl sub_8050968 - ldr r3, [r4] - adds r1, r3, 0 - adds r1, 0xEA - movs r2, 0 - movs r0, 0x80 - strh r0, [r1] - subs r1, 0x56 - movs r0, 0x7C - strh r0, [r1] - str r2, [r3, 0x64] -_08052A4A: - ldr r0, _08052A54 @ =gUnknown_2031DAC - ldr r4, [r0] - bl _0805330C - .align 2, 0 -_08052A54: .4byte gUnknown_2031DAC -_08052A58: - ldr r1, [r7] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0x14 - bhi _08052A68 - bl _08053774 -_08052A68: - movs r0, 0x3 - bl sub_8050968 - ldr r0, _08052A88 @ =gUnknown_826CF48 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x91 - strb r0, [r1] - ldr r1, [r7] - bl _08053708 - .align 2, 0 -_08052A88: .4byte gUnknown_826CF48 -_08052A8C: - ldr r2, _08052AD4 @ =gSprites - ldr r0, [r7] - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - cmp r0, 0 - blt _08052AAC - bl _08053774 -_08052AAC: - adds r0, r1, 0 - bl DestroySprite - ldr r1, _08052AD8 @ =0x00000452 - movs r0, 0x50 - bl SetGpuReg - movs r1, 0x82 - lsls r1, 3 - movs r0, 0x52 - bl SetGpuReg - ldr r0, _08052ADC @ =c3_08054588 - movs r1, 0x5 - bl CreateTask - ldr r1, [r7] - bl _08053708 - .align 2, 0 -_08052AD4: .4byte gSprites -_08052AD8: .4byte 0x00000452 -_08052ADC: .4byte c3_08054588 -_08052AE0: - ldr r0, _08052B00 @ =c3_08054588 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - beq _08052AF0 - bl _08053774 -_08052AF0: - ldr r0, _08052B04 @ =gUnknown_2031DAC - ldr r0, [r0] - adds r0, 0x94 - movs r1, 0x1A - strh r1, [r0] - bl _08053774 - .align 2, 0 -_08052B00: .4byte c3_08054588 -_08052B04: .4byte gUnknown_2031DAC -_08052B08: - ldr r2, [r7] - adds r0, r2, 0 - adds r0, 0xE0 - ldrh r1, [r0] - subs r1, 0x1 - strh r1, [r0] - lsls r1, 16 - movs r0, 0x9E - lsls r0, 17 - cmp r1, r0 - beq _08052B22 - bl _08053774 -_08052B22: - adds r1, r2, 0 - bl _08053708 -_08052B28: - ldr r0, _08052B80 @ =gUnknown_826CE44 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0x3 - bl CreateSprite - ldr r4, _08052B84 @ =gUnknown_2031DAC - ldr r1, [r4] - adds r1, 0x90 - strb r0, [r1] - ldr r5, _08052B88 @ =gSprites - ldr r0, [r4] - adds r0, 0x90 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _08052B8C @ =sub_804FD48 - str r1, [r0] - ldr r0, _08052B90 @ =gUnknown_826CE84 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - adds r1, 0x91 - strb r0, [r1] - ldr r0, [r4] - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x1 - bl StartSpriteAnim - ldr r1, [r4] - bl _08053708 - .align 2, 0 -_08052B80: .4byte gUnknown_826CE44 -_08052B84: .4byte gUnknown_2031DAC -_08052B88: .4byte gSprites -_08052B8C: .4byte sub_804FD48 -_08052B90: .4byte gUnknown_826CE84 -_08052B94: - ldr r2, [r7] - adds r1, r2, 0 - adds r1, 0xE0 - ldrh r0, [r1] - subs r0, 0x3 - strh r0, [r1] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA6 - bne _08052BAE - subs r1, 0x4C - movs r0, 0xC8 - strh r0, [r1] -_08052BAE: - ldr r1, _08052BBC @ =0x00001241 - movs r0, 0 - bl SetGpuReg - bl _08053774 - .align 2, 0 -_08052BBC: .4byte 0x00001241 -_08052BC0: - ldr r2, _08052C14 @ =gSprites - ldr r4, [r7] - adds r3, r4, 0 - adds r3, 0x90 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - subs r1, 0x2 - strh r1, [r0, 0x22] - adds r0, r4, 0 - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - subs r1, 0x2 - strh r1, [r0, 0x22] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r2, 0x22 - ldrsh r1, [r0, r2] - movs r0, 0x8 - negs r0, r0 - cmp r1, r0 - blt _08052C06 - bl _08053774 -_08052C06: - adds r1, r4, 0 - adds r1, 0x94 - movs r0, 0x1D - strh r0, [r1] - bl _08053774 - .align 2, 0 -_08052C14: .4byte gSprites -_08052C18: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08052C38 @ =gUnknown_2031DAC - ldr r0, [r0] - adds r0, 0x94 - movs r1, 0x1E - strh r1, [r0] - bl _08053774 - .align 2, 0 -_08052C38: .4byte gUnknown_2031DAC -_08052C3C: - ldr r0, _08052C80 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08052C4C - bl _08053774 -_08052C4C: - ldr r0, [r7] - adds r0, 0x90 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08052C84 @ =gSprites - adds r0, r4 - bl DestroySprite - ldr r0, [r7] - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - movs r0, 0x2 - bl sub_8050968 - ldr r1, [r7] - bl _08053708 - .align 2, 0 -_08052C80: .4byte gPaletteFade -_08052C84: .4byte gSprites -_08052C88: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r5, _08052CCC @ =gUnknown_826CE84 - adds r0, r5, 0 - movs r1, 0x6F - movs r2, 0xAA - movs r3, 0 - bl CreateSprite - ldr r4, _08052CD0 @ =gUnknown_2031DAC - ldr r1, [r4] - adds r1, 0x90 - strb r0, [r1] - movs r2, 0xA - negs r2, r2 - adds r0, r5, 0 - movs r1, 0x81 - movs r3, 0 - bl CreateSprite - ldr r1, [r4] - adds r1, 0x91 - strb r0, [r1] - ldr r1, [r4] - bl _08053708 - .align 2, 0 -_08052CCC: .4byte gUnknown_826CE84 -_08052CD0: .4byte gUnknown_2031DAC -_08052CD4: - ldr r0, _08052D24 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08052CF2 - movs r0, 0x28 - bl PlaySE - ldr r0, _08052D28 @ =gUnknown_2031DAC - ldr r1, [r0] - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_08052CF2: - ldr r3, _08052D2C @ =gSprites - ldr r0, _08052D28 @ =gUnknown_2031DAC - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x90 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x26] - subs r1, 0x3 - strh r1, [r0, 0x26] - adds r2, 0x91 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - bl _08053774 - .align 2, 0 -_08052D24: .4byte gPaletteFade -_08052D28: .4byte gUnknown_2031DAC -_08052D2C: .4byte gSprites -_08052D30: - ldr r5, _08052D94 @ =gSprites - ldr r4, [r7] - adds r2, r4, 0 - adds r2, 0x90 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r1, [r0, 0x26] - subs r1, 0x3 - strh r1, [r0, 0x26] - adds r6, r4, 0 - adds r6, 0x91 - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r3, r0, r5 - movs r0, 0x26 - ldrsh r1, [r3, r0] - movs r0, 0x5A - negs r0, r0 - cmp r1, r0 - ble _08052D76 - bl _08053774 -_08052D76: - movs r2, 0x1 - strh r2, [r3, 0x30] - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r2, [r0, 0x30] - adds r1, r4, 0 - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - ldr r0, _08052D98 @ =c3_0805465C - b _08052FBE - .align 2, 0 -_08052D94: .4byte gSprites -_08052D98: .4byte c3_0805465C -_08052D9C: - ldr r2, _08052DAC @ =0x0000ffff - movs r0, 0x8 - movs r1, 0x10 - bl BlendPalettes - bl _08053704 - .align 2, 0 -_08052DAC: .4byte 0x0000ffff -_08052DB0: - ldr r2, _08052DC0 @ =0x0000ffff - movs r0, 0x8 - movs r1, 0x10 - bl BlendPalettes - bl _08053704 - .align 2, 0 -_08052DC0: .4byte 0x0000ffff -_08052DC4: - ldr r2, _08052DD4 @ =0x0000ffff - movs r0, 0x8 - movs r1, 0x10 - bl BlendPalettes - bl _08053704 - .align 2, 0 -_08052DD4: .4byte 0x0000ffff -_08052DD8: - ldr r5, _08052E44 @ =gUnknown_2031DAC - ldr r0, [r5] - adds r0, 0xF0 - ldrh r0, [r0] - bl IsPokeSpriteNotFlipped - lsls r0, 24 - cmp r0, 0 - bne _08052E50 - ldr r4, _08052E48 @ =gSprites - ldr r2, [r5] - adds r2, 0x8E - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x10 - adds r0, r1 - ldr r1, _08052E4C @ =gUnknown_826CF88 - str r1, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x1] - movs r2, 0x3 - orrs r1, r2 - strb r1, [r0, 0x1] - ldr r0, [r5] - adds r0, 0x8E - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0 - movs r2, 0x3 - movs r3, 0x3 - bl CalcCenterToCornerVec - ldr r0, [r5] - adds r0, 0x8E - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0 - bl StartSpriteAffineAnim - b _08052E66 - .align 2, 0 -_08052E44: .4byte gUnknown_2031DAC -_08052E48: .4byte gSprites -_08052E4C: .4byte gUnknown_826CF88 -_08052E50: - ldr r0, [r5] - adds r0, 0x8E - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08052EF4 @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAffineAnim -_08052E66: - ldr r5, _08052EF8 @ =gUnknown_2031DAC - ldr r0, [r5] - adds r0, 0x8F - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08052EF4 @ =gSprites - adds r0, r4 - movs r1, 0 - bl StartSpriteAffineAnim - ldr r2, [r5] - adds r3, r2, 0 - adds r3, 0x8E - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x28 - strh r1, [r0, 0x20] - adds r2, 0x8F - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xC8 - strh r1, [r0, 0x20] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xC0 - strh r1, [r0, 0x22] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _08052EFC @ =0x0000ffe0 - strh r1, [r0, 0x22] - ldrb r0, [r3] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - adds r1, 0x3E - ldrb r3, [r1] - movs r2, 0x5 - negs r2, r2 - adds r0, r2, 0 - ands r0, r3 - strb r0, [r1] - ldr r0, [r5] - adds r0, 0x8F - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - ands r2, r1 - strb r2, [r0] - ldr r1, [r5] - bl _08053708 - .align 2, 0 -_08052EF4: .4byte gSprites -_08052EF8: .4byte gUnknown_2031DAC -_08052EFC: .4byte 0x0000ffe0 -_08052F00: - ldr r4, _08052FC8 @ =gSprites - ldr r2, [r7] - adds r3, r2, 0 - adds r3, 0x8E - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x26] - subs r1, 0x3 - movs r5, 0 - strh r1, [r0, 0x26] - adds r2, 0x8F - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r0, [r0, 0x26] - adds r0, 0xA3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bhi _08052F48 - movs r0, 0x27 - bl PlaySE -_08052F48: - ldr r2, [r7] - adds r3, r2, 0 - adds r3, 0x8E - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r6, 0x26 - ldrsh r1, [r0, r6] - movs r0, 0xDE - negs r0, r0 - cmp r1, r0 - blt _08052F68 - bl _08053774 -_08052F68: - adds r0, r2, 0 - adds r0, 0x90 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r5, [r0, 0x30] - adds r0, r2, 0 - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r5, [r0, 0x30] - adds r1, r2, 0 - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldr r0, [r7] - adds r0, 0x8F - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r1, [r0] - orrs r1, r2 - strb r1, [r0] - ldr r0, _08052FCC @ =sub_8054734 -_08052FBE: - movs r1, 0x5 - bl CreateTask - bl _08053774 - .align 2, 0 -_08052FC8: .4byte gSprites -_08052FCC: .4byte sub_8054734 -_08052FD0: - ldr r4, _08053054 @ =gSprites - ldr r2, [r7] - adds r3, r2, 0 - adds r3, 0x90 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x26] - subs r1, 0x3 - strh r1, [r0, 0x26] - adds r2, 0x91 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x26] - adds r1, 0x3 - strh r1, [r0, 0x26] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r2, 0x26 - ldrsh r1, [r0, r2] - movs r0, 0xDE - negs r0, r0 - cmp r1, r0 - ble _08053012 - b _08053774 -_08053012: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, [r7] - adds r2, r1, 0 - adds r2, 0x94 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - adds r1, 0x90 - ldrb r1, [r1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r0, [r7] - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - b _08053774 - .align 2, 0 -_08053054: .4byte gSprites -_08053058: - ldr r0, _080530E4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08053066 - b _08053774 -_08053066: - ldr r1, [r7] - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x1 - bl sub_8050968 - ldr r0, [r7] - adds r0, 0xE0 - movs r1, 0xA6 - strh r1, [r0] - movs r0, 0x3 - bl sub_8050968 - ldr r0, [r7] - adds r0, 0xE4 - movs r1, 0xCE - lsls r1, 1 - strh r1, [r0] - ldr r0, _080530E8 @ =gUnknown_826CE44 - movs r4, 0x14 - negs r4, r4 - movs r1, 0x78 - adds r2, r4, 0 - movs r3, 0x3 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x90 - strb r0, [r1] - ldr r5, _080530EC @ =gSprites - ldr r0, [r7] - adds r0, 0x90 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080530F0 @ =sub_804FD48 - str r1, [r0] - ldr r0, _080530F4 @ =gUnknown_826CE84 - movs r1, 0x78 - adds r2, r4, 0 - movs r3, 0 - bl CreateSprite - ldr r1, [r7] - adds r1, 0x91 - strb r0, [r1] - ldr r0, [r7] - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x1 - bl StartSpriteAnim - b _08053774 - .align 2, 0 -_080530E4: .4byte gPaletteFade -_080530E8: .4byte gUnknown_826CE44 -_080530EC: .4byte gSprites -_080530F0: .4byte sub_804FD48 -_080530F4: .4byte gUnknown_826CE84 -_080530F8: - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - b _08053700 -_08053108: - movs r1, 0x92 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - ldr r0, _08053124 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08053120 - b _08053774 -_08053120: - b _08053704 - .align 2, 0 -_08053124: .4byte gPaletteFade -_08053128: - ldr r2, _0805317C @ =gSprites - ldr r4, [r7] - adds r3, r4, 0 - adds r3, 0x90 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - adds r1, 0x4 - strh r1, [r0, 0x26] - adds r0, r4, 0 - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x26] - adds r1, 0x4 - strh r1, [r0, 0x26] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r6, 0x26 - ldrsh r1, [r0, r6] - movs r2, 0x22 - ldrsh r0, [r0, r2] - adds r1, r0 - cmp r1, 0x40 - beq _0805316E - b _08053774 -_0805316E: - adds r0, r4, 0 - adds r0, 0x94 - movs r1, 0x90 - strh r1, [r0] - movs r0, 0 - str r0, [r4, 0x64] - b _08053774 - .align 2, 0 -_0805317C: .4byte gSprites -_08053180: - movs r1, 0xB2 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - ldr r4, _080531DC @ =gUnknown_2031DAC - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0xE0 - ldrh r0, [r1] - adds r0, 0x3 - strh r0, [r1] - adds r1, 0x4 - ldrh r0, [r1] - adds r0, 0x3 - strh r0, [r1] - ldr r0, [r2, 0x64] - adds r0, 0x1 - str r0, [r2, 0x64] - cmp r0, 0xA - bne _080531C4 - ldr r0, _080531E0 @ =c3_08054588 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080531E4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0x1 - strh r0, [r1, 0xC] -_080531C4: - ldr r1, [r4] - adds r3, r1, 0 - adds r3, 0xE0 - movs r6, 0 - ldrsh r0, [r3, r6] - movs r2, 0x9E - lsls r2, 1 - cmp r0, r2 - bgt _080531D8 - b _08053774 -_080531D8: - strh r2, [r3] - b _08053708 - .align 2, 0 -_080531DC: .4byte gUnknown_2031DAC -_080531E0: .4byte c3_08054588 -_080531E4: .4byte gTasks -_080531E8: - ldr r0, [r7] - adds r0, 0x90 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08053220 @ =gSprites - adds r0, r4 - bl DestroySprite - ldr r0, [r7] - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r3, [r7] - adds r2, r3, 0 - adds r2, 0x94 - ldrh r0, [r2] - adds r0, 0x1 - movs r1, 0 - strh r0, [r2] - str r1, [r3, 0x64] - b _08053774 - .align 2, 0 -_08053220: .4byte gSprites -_08053224: - ldr r0, _08053244 @ =c3_08054588 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _08053234 - b _08053774 -_08053234: - ldr r0, _08053248 @ =gUnknown_2031DAC - ldr r2, [r0] - adds r1, r2, 0 - adds r1, 0x94 - movs r0, 0x2E - strh r0, [r1] - str r3, [r2, 0x64] - b _08053774 - .align 2, 0 -_08053244: .4byte c3_08054588 -_08053248: .4byte gUnknown_2031DAC -_0805324C: - ldr r1, [r7] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0xA - beq _0805325A - b _08053774 -_0805325A: - b _08053708 -_0805325C: - ldr r1, [r7] - adds r5, r1, 0 - adds r5, 0xE0 - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] - lsls r0, 16 - asrs r0, 16 - movs r6, 0xAE - lsls r6, 1 - cmp r0, r6 - bgt _08053276 - b _08053774 -_08053276: - strh r6, [r5] - b _08053708 -_0805327A: - ldr r0, _08053298 @ =gUnknown_826CF30 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - ldr r2, _0805329C @ =gUnknown_2031DAC - ldr r1, [r2] - adds r1, 0x91 - strb r0, [r1] - ldr r0, [r2] - adds r0, 0x94 - movs r1, 0x32 - strh r1, [r0] - b _08053774 - .align 2, 0 -_08053298: .4byte gUnknown_826CF30 -_0805329C: .4byte gUnknown_2031DAC -_080532A0: - ldr r2, _080532DC @ =gSprites - ldr r0, [r7] - adds r0, 0x91 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - cmp r0, 0 - blt _080532BE - b _08053774 -_080532BE: - adds r0, r1, 0 - bl DestroySprite - movs r0, 0x6 - bl sub_8050968 - ldr r1, [r7] - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x98 - bl PlaySE - b _08053774 - .align 2, 0 -_080532DC: .4byte gSprites -_080532E0: - ldr r1, [r7] - adds r2, r1, 0 - adds r2, 0xEA - ldrh r3, [r2] - ldr r0, _080532F8 @ =0x000003ff - cmp r3, r0 - bhi _080532FC - adds r0, r3, 0 - adds r0, 0x34 - strh r0, [r2] - b _0805330A - .align 2, 0 -_080532F8: .4byte 0x000003ff -_080532FC: - movs r0, 0x80 - lsls r0, 3 - strh r0, [r2] - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_0805330A: - ldr r4, [r7] -_0805330C: - adds r0, r4, 0 - adds r0, 0xEA - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 8 - bl __divsi3 - adds r4, 0xE8 - strh r0, [r4] - b _08053774 -_08053320: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0805333C @ =gUnknown_2031DAC - ldr r0, [r0] - adds r0, 0x94 - movs r1, 0x3C - strh r1, [r0] - b _08053774 - .align 2, 0 -_0805333C: .4byte gUnknown_2031DAC -_08053340: - ldr r4, _08053364 @ =gPaletteFade - ldrb r1, [r4, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0805334E - b _08053774 -_0805334E: - movs r0, 0x5 - bl sub_8050968 - movs r0, 0x7 - bl sub_8050968 - ldrb r0, [r4, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r4, 0x8] - b _08053704 - .align 2, 0 -_08053364: .4byte gPaletteFade -_08053368: - ldr r2, _08053380 @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - b _08053700 - .align 2, 0 -_08053380: .4byte gPaletteFade -_08053384: - movs r1, 0xA2 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - ldr r0, _080533A0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0805339C - b _08053774 -_0805339C: - b _08053704 - .align 2, 0 -_080533A0: .4byte gPaletteFade -_080533A4: - ldr r0, _08053438 @ =gUnknown_826CDE4 - movs r2, 0x8 - negs r2, r2 - movs r1, 0x78 - movs r3, 0 - bl CreateSprite - ldr r5, _0805343C @ =gUnknown_2031DAC - ldr r1, [r5] - adds r1, 0xD3 - movs r6, 0 - strb r0, [r1] - ldr r4, _08053440 @ =gSprites - ldr r2, [r5] - adds r2, 0xD3 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x4A - strh r1, [r0, 0x34] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _08053444 @ =sub_8053A0C - str r1, [r0] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x1 - bl StartSpriteAnim - ldr r0, [r5] - adds r0, 0xD3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x2 - bl StartSpriteAffineAnim - ldr r0, [r5] - adds r0, 0xD3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x5] - lsrs r1, 4 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - ldr r2, _08053448 @ =0x0000ffff - movs r1, 0x10 - bl BlendPalettes - ldr r2, [r5] - adds r1, r2, 0 - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - str r6, [r2, 0x64] - b _08053774 - .align 2, 0 -_08053438: .4byte gUnknown_826CDE4 -_0805343C: .4byte gUnknown_2031DAC -_08053440: .4byte gSprites -_08053444: .4byte sub_8053A0C -_08053448: .4byte 0x0000ffff -_0805344C: - ldr r2, _08053478 @ =gSprites - ldr r0, [r7] - adds r0, 0xD3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x5] - lsrs r1, 4 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - ldr r1, _0805347C @ =0x0000ffff - str r1, [sp] - movs r1, 0x1 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, [r7] - b _08053708 - .align 2, 0 -_08053478: .4byte gSprites -_0805347C: .4byte 0x0000ffff -_08053480: - ldr r2, _080534BC @ =gSprites - ldr r3, [r7] - adds r0, r3, 0 - adds r0, 0xD3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _080534C0 @ =SpriteCallbackDummy - cmp r1, r0 - beq _0805349E - b _08053774 -_0805349E: - adds r0, r3, 0 - adds r0, 0xF2 - ldrh r2, [r0] - lsls r0, r2, 3 - ldr r1, _080534C4 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _080534C8 @ =gMonSpritesGfxPtr - ldr r1, [r1] - ldr r1, [r1, 0x10] - ldr r3, [r3, 0x6C] - bl HandleLoadSpecialPokePic - ldr r1, [r7] - b _08053708 - .align 2, 0 -_080534BC: .4byte gSprites -_080534C0: .4byte SpriteCallbackDummy -_080534C4: .4byte gMonFrontPicTable -_080534C8: .4byte gMonSpritesGfxPtr -_080534CC: - ldr r4, _08053578 @ =gSprites - ldr r2, [r7] - adds r6, r2, 0 - adds r6, 0x8F - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r5, 0 - movs r1, 0x78 - strh r1, [r0, 0x20] - ldrb r0, [r6] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldr r3, _0805357C @ =gMonFrontPicCoords - adds r2, 0xF2 - ldrh r0, [r2] - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x1] - adds r0, 0x3C - strh r0, [r1, 0x22] - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r5, [r0, 0x24] - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r5, [r0, 0x26] - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0 - bl StartSpriteAnim - ldr r0, [r7] - adds r0, 0x8F - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r1, [r1, 0x5] - lsrs r1, 4 - movs r2, 0x2 - str r2, [sp] - movs r2, 0x1 - str r2, [sp, 0x4] - movs r2, 0x14 - str r2, [sp, 0x8] - ldr r2, _08053580 @ =0x000fffff - str r2, [sp, 0xC] - movs r2, 0x78 - movs r3, 0x54 - bl CreatePokeballSpriteToReleaseMon - ldr r0, [r7] - adds r0, 0xD3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl FreeSpriteOamMatrix - ldr r0, [r7] - adds r0, 0xD3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r1, [r7] - b _08053708 - .align 2, 0 -_08053578: .4byte gSprites -_0805357C: .4byte gMonFrontPicCoords -_08053580: .4byte 0x000fffff -_08053584: - movs r1, 0xAA - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - ldr r4, _080535B0 @ =gStringVar4 - ldr r1, _080535B4 @ =gUnknown_841E20D - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl sub_8054508 - ldr r0, _080535B8 @ =gUnknown_2031DAC - ldr r3, [r0] - adds r1, r3, 0 - adds r1, 0x94 - movs r2, 0 - movs r0, 0xA7 - b _080535EA - .align 2, 0 -_080535B0: .4byte gStringVar4 -_080535B4: .4byte gUnknown_841E20D -_080535B8: .4byte gUnknown_2031DAC -_080535BC: - ldr r1, [r7] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0x3C - bhi _080535CA - b _08053774 -_080535CA: - adds r2, r1, 0 - adds r2, 0xF2 - ldrh r1, [r2] - movs r0, 0xCE - lsls r0, 1 - cmp r1, r0 - beq _080535E0 - adds r0, r1, 0 - movs r1, 0 - bl PlayCry1 -_080535E0: - ldr r3, [r7] - adds r1, r3, 0 - adds r1, 0x94 - movs r2, 0 - ldr r0, _080535F0 @ =0x0000010b -_080535EA: - strh r0, [r1] - str r2, [r3, 0x64] - b _08053774 - .align 2, 0 -_080535F0: .4byte 0x0000010b -_080535F4: - bl IsCryFinished - lsls r0, 24 - cmp r0, 0 - bne _08053600 - b _08053774 -_08053600: - ldr r0, _0805360C @ =gUnknown_2031DAC - ldr r0, [r0] - adds r0, 0x94 - movs r1, 0x44 - strh r1, [r0] - b _08053774 - .align 2, 0 -_0805360C: .4byte gUnknown_2031DAC -_08053610: - ldr r1, [r7] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0xA - bne _08053622 - ldr r0, _08053650 @ =0x00000103 - bl PlayFanfare -_08053622: - ldr r1, [r7] - ldr r0, [r1, 0x64] - cmp r0, 0xFA - beq _0805362C - b _08053774 -_0805362C: - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - movs r5, 0 - strh r0, [r1] - ldr r4, _08053654 @ =gStringVar4 - ldr r1, _08053658 @ =gUnknown_841E21E - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl sub_8054508 - ldr r0, [r7] - str r5, [r0, 0x64] - b _08053774 - .align 2, 0 -_08053650: .4byte 0x00000103 -_08053654: .4byte gStringVar4 -_08053658: .4byte gUnknown_841E21E -_0805365C: - ldr r1, [r7] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0x3C - beq _0805366A - b _08053774 -_0805366A: - b _08053708 -_0805366C: - bl sub_80544AC - b _08053704 -_08053672: - ldr r2, [r7] - adds r0, r2, 0 - adds r0, 0xEE - ldrb r0, [r0] - cmp r0, 0 - beq _08053682 - movs r0, 0x1 - b _08053776 -_08053682: - ldr r0, _08053694 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08053774 - adds r1, r2, 0 - b _08053708 - .align 2, 0 -_08053694: .4byte gMain -_08053698: - ldr r0, _080536DC @ =gSpecialVar_0x8005 - ldrb r0, [r0] - movs r1, 0 - bl sub_805080C - ldr r1, _080536E0 @ =gCB2_AfterEvolution - ldr r0, _080536E4 @ =sub_8050948 - str r0, [r1] - ldr r7, _080536E8 @ =gUnknown_2031DA4 - ldrb r0, [r7] - movs r6, 0x64 - muls r0, r6 - ldr r5, _080536EC @ =gPlayerParty - adds r0, r5 - movs r1, 0x1 - movs r2, 0 - bl GetEvolutionTargetSpecies - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _08053704 - ldrb r3, [r7] - adds r0, r3, 0 - muls r0, r6 - adds r0, r5 - ldr r1, _080536F0 @ =gUnknown_2031DAC - ldr r1, [r1] - adds r1, 0x8F - ldrb r2, [r1] - adds r1, r4, 0 - bl TradeEvolutionScene - b _08053704 - .align 2, 0 -_080536DC: .4byte gSpecialVar_0x8005 -_080536E0: .4byte gCB2_AfterEvolution -_080536E4: .4byte sub_8050948 -_080536E8: .4byte gUnknown_2031DA4 -_080536EC: .4byte gPlayerParty -_080536F0: .4byte gUnknown_2031DAC -_080536F4: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 -_08053700: - bl BeginNormalPaletteFade -_08053704: - ldr r0, _08053714 @ =gUnknown_2031DAC - ldr r1, [r0] -_08053708: - adds r1, 0x94 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _08053774 - .align 2, 0 -_08053714: .4byte gUnknown_2031DAC -_08053718: - ldr r0, _08053780 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08053774 - ldr r0, [r7] - adds r0, 0xF4 - ldrh r0, [r0] - bl PlayNewMapMusic - ldr r0, [r7] - cmp r0, 0 - beq _08053766 - bl FreeAllWindowBuffers - movs r0, 0x3 - bl GetBgTilemapBuffer - bl Free - movs r0, 0x1 - bl GetBgTilemapBuffer - bl Free - movs r0, 0 - bl GetBgTilemapBuffer - bl Free - bl FreeMonSpritesGfx - ldr r0, [r7] - bl Free - str r4, [r7] -_08053766: - ldr r0, _08053784 @ =CB2_ReturnToField - bl SetMainCallback2 - bl sub_8053AE4 - bl HelpSystem_Enable -_08053774: - movs r0, 0 -_08053776: - add sp, 0x10 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08053780: .4byte gPaletteFade -_08053784: .4byte CB2_ReturnToField - thumb_func_end sub_805232C - - thumb_func_start sub_8053788 -sub_8053788: @ 8053788 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _080537A4 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - beq _080537A8 - cmp r0, 0x4 - beq _080537B8 - b _08053814 - .align 2, 0 -_080537A4: .4byte gMain -_080537A8: - movs r0, 0x4 - strb r0, [r1] - ldr r1, _080537B4 @ =gSoftResetDisabled - movs r0, 0x1 - b _08053812 - .align 2, 0 -_080537B4: .4byte gSoftResetDisabled -_080537B8: - ldr r0, _080537F4 @ =gCB2_AfterEvolution - ldr r1, _080537F8 @ =sub_8053E8C - mov r8, r1 - str r1, [r0] - ldr r7, _080537FC @ =gUnknown_2031DA4 - ldrb r0, [r7] - movs r6, 0x64 - muls r0, r6 - ldr r5, _08053800 @ =gPlayerParty - adds r0, r5 - movs r1, 0x1 - movs r2, 0 - bl GetEvolutionTargetSpecies - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - beq _08053808 - ldrb r3, [r7] - adds r0, r3, 0 - muls r0, r6 - adds r0, r5 - ldr r1, _08053804 @ =gUnknown_2031DAC - ldr r1, [r1] - adds r1, 0x8F - ldrb r2, [r1] - adds r1, r4, 0 - bl TradeEvolutionScene - b _0805380E - .align 2, 0 -_080537F4: .4byte gCB2_AfterEvolution -_080537F8: .4byte sub_8053E8C -_080537FC: .4byte gUnknown_2031DA4 -_08053800: .4byte gPlayerParty -_08053804: .4byte gUnknown_2031DAC -_08053808: - mov r0, r8 - bl SetMainCallback2 -_0805380E: - ldr r1, _08053838 @ =gUnknown_2031DA4 - movs r0, 0xFF -_08053812: - strb r0, [r1] -_08053814: - bl HasLinkErrorOccurred - lsls r0, 24 - cmp r0, 0 - bne _08053822 - bl RunTasks -_08053822: - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08053838: .4byte gUnknown_2031DA4 - thumb_func_end sub_8053788 - - thumb_func_start sub_805383C -sub_805383C: @ 805383C - push {r4-r6,lr} - bl sub_804FFC4 - bl GetBlockReceivedStatus - lsls r0, 24 - lsrs r5, r0, 24 - movs r6, 0x1 - adds r0, r5, 0 - ands r0, r6 - cmp r0, 0 - beq _0805387A - ldr r4, _080538A8 @ =gBlockRecvBuffer - ldrh r1, [r4] - ldr r0, _080538AC @ =0x0000dcba - cmp r1, r0 - bne _08053864 - ldr r0, _080538B0 @ =sub_8053788 - bl SetMainCallback2 -_08053864: - ldrh r1, [r4] - ldr r0, _080538B4 @ =0x0000abcd - cmp r1, r0 - bne _08053874 - ldr r0, _080538B8 @ =gUnknown_2031DAC - ldr r0, [r0] - adds r0, 0x72 - strb r6, [r0] -_08053874: - movs r0, 0 - bl ResetBlockReceivedFlag -_0805387A: - movs r0, 0x2 - ands r0, r5 - cmp r0, 0 - beq _080538A2 - ldr r0, _080538A8 @ =gBlockRecvBuffer - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _080538B4 @ =0x0000abcd - cmp r1, r0 - bne _0805389C - ldr r0, _080538B8 @ =gUnknown_2031DAC - ldr r0, [r0] - adds r0, 0x73 - movs r1, 0x1 - strb r1, [r0] -_0805389C: - movs r0, 0x1 - bl ResetBlockReceivedFlag -_080538A2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080538A8: .4byte gBlockRecvBuffer -_080538AC: .4byte 0x0000dcba -_080538B0: .4byte sub_8053788 -_080538B4: .4byte 0x0000abcd -_080538B8: .4byte gUnknown_2031DAC - thumb_func_end sub_805383C - - thumb_func_start sub_80538BC -sub_80538BC: @ 80538BC - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - movs r1, 0xA - bl __divsi3 - ldrh r4, [r5, 0x22] - adds r4, r0 - strh r4, [r5, 0x22] - ldrh r0, [r5, 0x30] - ldrh r2, [r5, 0x38] - adds r0, r2 - strh r0, [r5, 0x38] - movs r1, 0x38 - ldrsh r0, [r5, r1] - movs r1, 0xA - bl __divsi3 - strh r0, [r5, 0x20] - lsls r4, 16 - asrs r4, 16 - cmp r4, 0x4C - ble _0805390A - movs r0, 0x4C - strh r0, [r5, 0x22] - movs r2, 0x2E - ldrsh r1, [r5, r2] - movs r2, 0x32 - ldrsh r0, [r5, r2] - muls r0, r1 - negs r0, r0 - movs r1, 0x64 - bl __divsi3 - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x34] - adds r0, 0x1 - strh r0, [r5, 0x34] -_0805390A: - movs r1, 0x20 - ldrsh r0, [r5, r1] - cmp r0, 0x78 - bne _08053916 - movs r0, 0 - strh r0, [r5, 0x30] -_08053916: - ldrh r0, [r5, 0x36] - ldrh r2, [r5, 0x2E] - adds r0, r2 - strh r0, [r5, 0x2E] - movs r1, 0x34 - ldrsh r0, [r5, r1] - cmp r0, 0x4 - bne _0805392E - movs r0, 0x1 - strh r0, [r5, 0x3C] - ldr r0, _08053934 @ =SpriteCallbackDummy - str r0, [r5, 0x1C] -_0805392E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08053934: .4byte SpriteCallbackDummy - thumb_func_end sub_80538BC - - thumb_func_start sub_8053938 -sub_8053938: @ 8053938 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldr r1, _080539A0 @ =gUnknown_826D1E4 - movs r2, 0x2E - ldrsh r0, [r4, r2] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r1, [r4, 0x26] - adds r0, r1 - strh r0, [r4, 0x26] - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0x16 - bne _08053960 - movs r0, 0x31 - bl PlaySE -_08053960: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2C - bne _08053996 - movs r0, 0x85 - bl PlaySE - ldr r0, _080539A4 @ =sub_80539AC - str r0, [r4, 0x1C] - movs r0, 0 - strh r0, [r4, 0x2E] - ldrb r1, [r4, 0x5] - lsrs r1, 4 - adds r1, 0x10 - movs r0, 0x1 - lsls r0, r1 - movs r1, 0x1 - negs r1, r1 - ldr r2, _080539A8 @ =0x0000ffff - str r2, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_08053996: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080539A0: .4byte gUnknown_826D1E4 -_080539A4: .4byte sub_80539AC -_080539A8: .4byte 0x0000ffff - thumb_func_end sub_8053938 - - thumb_func_start sub_80539AC -sub_80539AC: @ 80539AC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x14 - bne _080539C0 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_080539C0: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - ble _080539FE - ldr r1, _08053A04 @ =gUnknown_826D1E4 - movs r2, 0x2E - ldrsh r0, [r4, r2] - adds r0, r1 - movs r1, 0 - ldrsb r1, [r0, r1] - ldrh r0, [r4, 0x26] - subs r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x17 - bne _080539FE - adds r0, r4, 0 - bl DestroySprite - ldr r0, _08053A08 @ =gUnknown_2031DAC - ldr r0, [r0] - adds r0, 0x94 - movs r1, 0xE - strh r1, [r0] -_080539FE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08053A04: .4byte gUnknown_826D1E4 -_08053A08: .4byte gUnknown_2031DAC - thumb_func_end sub_80539AC - - thumb_func_start sub_8053A0C -sub_8053A0C: @ 8053A0C - push {r4,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x32] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08053A3C - ldrh r0, [r4, 0x22] - adds r0, 0x4 - strh r0, [r4, 0x22] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x34 - ldrsh r1, [r4, r3] - cmp r0, r1 - ble _08053A8C - adds r0, r2, 0x1 - strh r0, [r4, 0x32] - movs r0, 0x16 - strh r0, [r4, 0x2E] - movs r0, 0x31 - bl PlaySE - b _08053A8C -_08053A3C: - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x42 - bne _08053A4A - movs r0, 0x32 - bl PlaySE -_08053A4A: - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0x5C - bne _08053A58 - movs r0, 0x33 - bl PlaySE -_08053A58: - movs r3, 0x2E - ldrsh r0, [r4, r3] - cmp r0, 0x6B - bne _08053A66 - movs r0, 0x34 - bl PlaySE -_08053A66: - ldr r1, _08053A94 @ =gUnknown_826D1E4 - movs r2, 0x2E - ldrsh r0, [r4, r2] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r3, [r4, 0x26] - adds r0, r3 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6C - bne _08053A8C - ldr r0, _08053A98 @ =SpriteCallbackDummy - str r0, [r4, 0x1C] -_08053A8C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08053A94: .4byte gUnknown_826D1E4 -_08053A98: .4byte SpriteCallbackDummy - thumb_func_end sub_8053A0C - - thumb_func_start GetInGameTradeSpeciesInfo -GetInGameTradeSpeciesInfo: @ 8053A9C - push {r4-r6,lr} - ldr r0, _08053AD0 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - lsls r4, r0, 4 - subs r4, r0 - lsls r4, 2 - ldr r0, _08053AD4 @ =gIngameTrades - adds r4, r0 - ldr r0, _08053AD8 @ =gStringVar1 - ldrh r1, [r4, 0x38] - movs r6, 0xB - muls r1, r6 - ldr r5, _08053ADC @ =gSpeciesNames - adds r1, r5 - bl StringCopy - ldr r0, _08053AE0 @ =gStringVar2 - ldrh r1, [r4, 0xC] - muls r1, r6 - adds r1, r5 - bl StringCopy - ldrh r0, [r4, 0x38] - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08053AD0: .4byte gSpecialVar_0x8004 -_08053AD4: .4byte gIngameTrades -_08053AD8: .4byte gStringVar1 -_08053ADC: .4byte gSpeciesNames -_08053AE0: .4byte gStringVar2 - thumb_func_end GetInGameTradeSpeciesInfo - - thumb_func_start sub_8053AE4 -sub_8053AE4: @ 8053AE4 - push {r4,lr} - sub sp, 0x20 - ldr r0, _08053B2C @ =gSpecialVar_0x8004 - ldrh r0, [r0] - lsls r4, r0, 4 - subs r4, r0 - lsls r4, 2 - ldr r0, _08053B30 @ =gIngameTrades - adds r4, r0 - ldr r0, _08053B34 @ =gSpecialVar_0x8005 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08053B38 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r0, _08053B3C @ =gStringVar1 - mov r1, sp - bl StringCopy10 - ldr r0, _08053B40 @ =gStringVar2 - ldrh r2, [r4, 0xC] - movs r1, 0xB - muls r1, r2 - ldr r2, _08053B44 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - add sp, 0x20 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08053B2C: .4byte gSpecialVar_0x8004 -_08053B30: .4byte gIngameTrades -_08053B34: .4byte gSpecialVar_0x8005 -_08053B38: .4byte gPlayerParty -_08053B3C: .4byte gStringVar1 -_08053B40: .4byte gStringVar2 -_08053B44: .4byte gSpeciesNames - thumb_func_end sub_8053AE4 - - thumb_func_start sub_8053B48 -sub_8053B48: @ 8053B48 - push {r4-r7,lr} - sub sp, 0x38 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, r1, 4 - subs r2, r1 - lsls r2, 2 - ldr r1, _08053CA4 @ =gIngameTrades - adds r5, r2, r1 - movs r1, 0x64 - muls r0, r1 - ldr r1, _08053CA8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x38 - bl GetMonData - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - add r4, sp, 0x34 - movs r0, 0xFE - strb r0, [r4] - ldr r6, _08053CAC @ =gEnemyParty - ldrh r1, [r5, 0xC] - movs r3, 0x1 - str r3, [sp] - ldr r0, [r5, 0x24] - str r0, [sp, 0x4] - str r3, [sp, 0x8] - ldr r0, [r5, 0x18] - str r0, [sp, 0xC] - adds r0, r6, 0 - movs r3, 0x20 - bl CreateMon - adds r2, r5, 0 - adds r2, 0xE - adds r0, r6, 0 - movs r1, 0x27 - bl SetMonData - adds r2, r5, 0 - adds r2, 0xF - adds r0, r6, 0 - movs r1, 0x28 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x10 - adds r0, r6, 0 - movs r1, 0x29 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x11 - adds r0, r6, 0 - movs r1, 0x2A - bl SetMonData - adds r2, r5, 0 - adds r2, 0x12 - adds r0, r6, 0 - movs r1, 0x2B - bl SetMonData - adds r2, r5, 0 - adds r2, 0x13 - adds r0, r6, 0 - movs r1, 0x2C - bl SetMonData - adds r0, r6, 0 - movs r1, 0x2 - adds r2, r5, 0 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x2B - adds r0, r6, 0 - movs r1, 0x7 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x36 - adds r0, r6, 0 - movs r1, 0x31 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x14 - adds r0, r6, 0 - movs r1, 0x2E - bl SetMonData - adds r2, r5, 0 - adds r2, 0x1D - adds r0, r6, 0 - movs r1, 0x17 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x1E - adds r0, r6, 0 - movs r1, 0x18 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x1C - adds r0, r6, 0 - movs r1, 0x16 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x1F - adds r0, r6, 0 - movs r1, 0x21 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x20 - adds r0, r6, 0 - movs r1, 0x2F - bl SetMonData - adds r2, r5, 0 - adds r2, 0x37 - adds r0, r6, 0 - movs r1, 0x30 - bl SetMonData - adds r0, r6, 0 - movs r1, 0x23 - adds r2, r4, 0 - bl SetMonData - mov r4, sp - adds r4, 0x35 - movs r0, 0 - strb r0, [r4] - ldrh r0, [r5, 0x28] - cmp r0, 0 - beq _08053CC0 - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _08053CB4 - add r0, sp, 0x10 - adds r1, r5, 0 - bl sub_8053CD4 - ldr r0, _08053CB0 @ =gUnknown_2031CCC - add r1, sp, 0x10 - ldm r1!, {r2,r3,r7} - stm r0!, {r2,r3,r7} - ldm r1!, {r2,r3,r7} - stm r0!, {r2,r3,r7} - ldm r1!, {r2,r3,r7} - stm r0!, {r2,r3,r7} - adds r0, r6, 0 - movs r1, 0x40 - adds r2, r4, 0 - bl SetMonData - adds r2, r5, 0 - adds r2, 0x28 - adds r0, r6, 0 - movs r1, 0xC - bl SetMonData - b _08053CC0 - .align 2, 0 -_08053CA4: .4byte gIngameTrades -_08053CA8: .4byte gPlayerParty -_08053CAC: .4byte gEnemyParty -_08053CB0: .4byte gUnknown_2031CCC -_08053CB4: - adds r2, r5, 0 - adds r2, 0x28 - adds r0, r6, 0 - movs r1, 0xC - bl SetMonData -_08053CC0: - ldr r0, _08053CD0 @ =gEnemyParty - bl CalculateMonStats - add sp, 0x38 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08053CD0: .4byte gEnemyParty - thumb_func_end sub_8053B48 - - thumb_func_start sub_8053CD4 -sub_8053CD4: @ 8053CD4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r2, _08053D28 @ =gUnknown_826D1A8 - adds r0, r5, 0 - adds r0, 0x2A - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r2 - adds r1, r4, 0 - movs r3, 0x8 -_08053CEE: - ldrh r0, [r2] - strh r0, [r1] - adds r2, 0x2 - adds r1, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _08053CEE - adds r0, r4, 0 - adds r0, 0x12 - adds r1, r5, 0 - adds r1, 0x2B - bl StringCopy - ldr r1, [r5, 0x18] - lsrs r0, r1, 24 - strb r0, [r4, 0x1A] - lsrs r0, r1, 16 - strb r0, [r4, 0x1B] - lsrs r0, r1, 8 - strb r0, [r4, 0x1C] - strb r1, [r4, 0x1D] - ldrh r0, [r5, 0xC] - strh r0, [r4, 0x1E] - ldrh r0, [r5, 0x28] - strh r0, [r4, 0x20] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08053D28: .4byte gUnknown_826D1A8 - thumb_func_end sub_8053CD4 - - thumb_func_start GetTradeSpecies -GetTradeSpecies: @ 8053D2C - push {r4-r6,lr} - ldr r6, _08053D58 @ =gSpecialVar_0x8005 - ldrh r0, [r6] - movs r5, 0x64 - muls r0, r5 - ldr r4, _08053D5C @ =gPlayerParty - adds r0, r4 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _08053D60 - ldrh r0, [r6] - muls r0, r5 - adds r0, r4 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - b _08053D62 - .align 2, 0 -_08053D58: .4byte gSpecialVar_0x8005 -_08053D5C: .4byte gPlayerParty -_08053D60: - movs r0, 0 -_08053D62: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end GetTradeSpecies - - thumb_func_start CreateInGameTradePokemon -CreateInGameTradePokemon: @ 8053D68 - push {lr} - ldr r0, _08053D7C @ =gSpecialVar_0x8005 - ldrb r0, [r0] - ldr r1, _08053D80 @ =gSpecialVar_0x8004 - ldrb r1, [r1] - bl sub_8053B48 - pop {r0} - bx r0 - .align 2, 0 -_08053D7C: .4byte gSpecialVar_0x8005 -_08053D80: .4byte gSpecialVar_0x8004 - thumb_func_end CreateInGameTradePokemon - - thumb_func_start sub_8053D84 -sub_8053D84: @ 8053D84 - push {r4-r6,lr} - bl sub_8050F14 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x1 - bne _08053DE6 - ldr r5, _08053E08 @ =gUnknown_2031DAC - ldr r0, [r5] - adds r0, 0x8E - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08053E0C @ =gSprites - adds r0, r4 - bl DestroySprite - ldr r0, [r5] - adds r0, 0x8F - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl FreeSpriteOamMatrix - ldr r0, _08053E10 @ =gUnknown_2031DA4 - ldrb r4, [r0] - ldrb r0, [r0, 0x1] - movs r1, 0x6 - bl __umodsi3 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_805080C - ldr r0, [r5] - adds r2, r0, 0 - adds r2, 0x74 - ldr r1, _08053E14 @ =0x0000abcd - strh r1, [r2] - adds r0, 0x93 - strb r6, [r0] - ldr r0, _08053E18 @ =sub_8053E1C - bl SetMainCallback2 -_08053DE6: - bl sub_80508F4 - bl sub_805383C - bl RunTasks - bl RunTextPrinters - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08053E08: .4byte gUnknown_2031DAC -_08053E0C: .4byte gSprites -_08053E10: .4byte gUnknown_2031DA4 -_08053E14: .4byte 0x0000abcd -_08053E18: .4byte sub_8053E1C - thumb_func_end sub_8053D84 - - thumb_func_start sub_8053E1C -sub_8053E1C: @ 8053E1C - push {r4,lr} - bl sub_804FFC4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_805383C - cmp r4, 0 - bne _08053E68 - ldr r4, _08053E80 @ =gUnknown_2031DAC - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x72 - ldrh r1, [r0] - ldr r0, _08053E84 @ =0x00000101 - cmp r1, r0 - bne _08053E68 - adds r1, r2, 0 - adds r1, 0x74 - ldr r0, _08053E88 @ =0x0000dcba - strh r0, [r1] - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, 0x74 - movs r2, 0x14 - bl SendBlock - ldr r0, [r4] - adds r0, 0x72 - movs r1, 0x2 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0x73 - strb r1, [r0] -_08053E68: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08053E80: .4byte gUnknown_2031DAC -_08053E84: .4byte 0x00000101 -_08053E88: .4byte 0x0000dcba - thumb_func_end sub_8053E1C - - thumb_func_start sub_8053E8C -sub_8053E8C: @ 8053E8C - push {r4,lr} - sub sp, 0x4 - ldr r1, _08053EAC @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0x65 - bls _08053EA2 - b _08054396 -_08053EA2: - lsls r0, 2 - ldr r1, _08053EB0 @ =_08053EB4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08053EAC: .4byte gMain -_08053EB0: .4byte _08053EB4 - .align 2, 0 -_08053EB4: - .4byte _0805404C - .4byte _08054068 - .4byte _080540DC - .4byte _08054396 - .4byte _080541E0 - .4byte _080542A0 - .4byte _080542C4 - .4byte _080542E0 - .4byte _08054304 - .4byte _0805434C - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054204 - .4byte _08054254 - .4byte _0805427E - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054104 - .4byte _08054184 - .4byte _080541A0 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054396 - .4byte _08054080 - .4byte _080540BC -_0805404C: - movs r0, 0x87 - lsls r0, 3 - adds r1, r2, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r4, _08054060 @ =gStringVar4 - ldr r1, _08054064 @ =gUnknown_841E325 - b _080540EA - .align 2, 0 -_08054060: .4byte gStringVar4 -_08054064: .4byte gUnknown_841E325 -_08054068: - bl sub_800AB9C - ldr r0, _0805407C @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - movs r2, 0 - movs r1, 0x64 - b _080541F0 - .align 2, 0 -_0805407C: .4byte gMain -_08054080: - ldr r0, _080540B4 @ =gUnknown_2031DAC - ldr r3, [r0] - ldr r0, [r3, 0x64] - adds r0, 0x1 - str r0, [r3, 0x64] - cmp r0, 0xB4 - bls _0805409C - movs r1, 0x87 - lsls r1, 3 - adds r0, r2, r1 - movs r2, 0 - movs r1, 0x65 - strb r1, [r0] - str r2, [r3, 0x64] -_0805409C: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - bne _080540A8 - b _08054396 -_080540A8: - ldr r0, _080540B8 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r0, r2 - b _080540D0 - .align 2, 0 -_080540B4: .4byte gUnknown_2031DAC -_080540B8: .4byte gMain -_080540BC: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - bne _080540C8 - b _08054396 -_080540C8: - ldr r0, _080540D8 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 -_080540D0: - movs r1, 0x2 - strb r1, [r0] - b _08054396 - .align 2, 0 -_080540D8: .4byte gMain -_080540DC: - movs r0, 0x87 - lsls r0, 3 - adds r1, r2, r0 - movs r0, 0x32 - strb r0, [r1] - ldr r4, _080540FC @ =gStringVar4 - ldr r1, _08054100 @ =gText_SavingDontTurnOffThePower2 -_080540EA: - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl sub_8054508 - b _08054396 - .align 2, 0 -_080540FC: .4byte gStringVar4 -_08054100: .4byte gText_SavingDontTurnOffThePower2 -_08054104: - bl InUnionRoom - cmp r0, 0 - beq _08054120 - ldr r0, _0805411C @ =gUnknown_2031DAC - ldr r1, [r0] - adds r1, 0xF8 - movs r0, 0x12 - bl sub_8113550 - b _08054132 - .align 2, 0 -_0805411C: .4byte gUnknown_2031DAC -_08054120: - ldr r0, _08054174 @ =gUnknown_2031DAC - ldr r1, [r0] - adds r1, 0xF8 - movs r0, 0xC - bl sub_8113550 - movs r0, 0x15 - bl IncrementGameStat -_08054132: - ldr r0, _08054178 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _0805415A - ldr r4, _0805417C @ =gLinkPlayers - bl GetMultiplayerId - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r4, 0x4 - adds r1, r4 - ldr r1, [r1] - movs r0, 0x2 - bl sub_8144714 -_0805415A: - bl sub_804C1C0 - bl sub_80DA3AC - ldr r1, _08054180 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - b _080541F2 - .align 2, 0 -_08054174: .4byte gUnknown_2031DAC -_08054178: .4byte gWirelessCommType -_0805417C: .4byte gLinkPlayers -_08054180: .4byte gMain -_08054184: - ldr r0, _0805419C @ =gUnknown_2031DAC - ldr r1, [r0] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0x5 - beq _08054194 - b _08054396 -_08054194: - movs r0, 0x87 - lsls r0, 3 - adds r1, r2, r0 - b _08054340 - .align 2, 0 -_0805419C: .4byte gUnknown_2031DAC -_080541A0: - bl sub_80DA3D8 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _080541C4 - bl sav2_gender2_inplace_and_xFE - ldr r0, _080541C0 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - movs r1, 0x4 - strb r1, [r0] - b _08054396 - .align 2, 0 -_080541C0: .4byte gMain -_080541C4: - ldr r0, _080541D8 @ =gUnknown_2031DAC - ldr r0, [r0] - str r1, [r0, 0x64] - ldr r0, _080541DC @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r0, r2 - movs r1, 0x33 - strb r1, [r0] - b _08054396 - .align 2, 0 -_080541D8: .4byte gUnknown_2031DAC -_080541DC: .4byte gMain -_080541E0: - bl sub_80DA40C - ldr r0, _080541FC @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - movs r2, 0 - movs r1, 0x28 -_080541F0: - strb r1, [r0] -_080541F2: - ldr r0, _08054200 @ =gUnknown_2031DAC - ldr r0, [r0] - str r2, [r0, 0x64] - b _08054396 - .align 2, 0 -_080541FC: .4byte gMain -_08054200: .4byte gUnknown_2031DAC -_08054204: - ldr r4, _08054238 @ =gUnknown_2031DAC - ldr r1, [r4] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0x32 - bhi _08054214 - b _08054396 -_08054214: - bl GetMultiplayerId - lsls r0, 24 - cmp r0, 0 - bne _0805423C - bl Random - ldr r4, [r4] - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1E - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - str r0, [r4, 0x64] - b _08054242 - .align 2, 0 -_08054238: .4byte gUnknown_2031DAC -_0805423C: - ldr r1, [r4] - movs r0, 0 - str r0, [r1, 0x64] -_08054242: - ldr r0, _08054250 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r0, r2 - movs r1, 0x29 - strb r1, [r0] - b _08054396 - .align 2, 0 -_08054250: .4byte gMain -_08054254: - ldr r0, _08054270 @ =gUnknown_2031DAC - ldr r1, [r0] - ldr r0, [r1, 0x64] - cmp r0, 0 - bne _08054278 - bl sub_800AB9C - ldr r0, _08054274 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - movs r1, 0x2A - strb r1, [r0] - b _08054396 - .align 2, 0 -_08054270: .4byte gUnknown_2031DAC -_08054274: .4byte gMain -_08054278: - subs r0, 0x1 - str r0, [r1, 0x64] - b _08054396 -_0805427E: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - bne _0805428A - b _08054396 -_0805428A: - bl sub_80DA434 - ldr r0, _0805429C @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r0, r2 - movs r1, 0x5 - strb r1, [r0] - b _08054396 - .align 2, 0 -_0805429C: .4byte gMain -_080542A0: - ldr r0, _080542C0 @ =gUnknown_2031DAC - ldr r1, [r0] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0x3C - bls _08054396 - movs r0, 0x87 - lsls r0, 3 - adds r1, r2, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - bl sub_800AB9C - b _08054396 - .align 2, 0 -_080542C0: .4byte gUnknown_2031DAC -_080542C4: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08054396 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _08054338 -_080542E0: - ldr r0, _080542FC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08054396 - movs r0, 0x3 - bl FadeOutBGM - ldr r1, _08054300 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _08054340 - .align 2, 0 -_080542FC: .4byte gPaletteFade -_08054300: .4byte gMain -_08054304: - bl IsBGMStopped - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08054396 - ldr r0, _08054328 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _08054334 - ldr r0, _0805432C @ =gMain - ldr r1, [r0, 0x8] - ldr r0, _08054330 @ =sub_804C718 - cmp r1, r0 - bne _08054334 - bl sub_800AB9C - b _08054338 - .align 2, 0 -_08054328: .4byte gWirelessCommType -_0805432C: .4byte gMain -_08054330: .4byte sub_804C718 -_08054334: - bl sub_800AAC0 -_08054338: - ldr r1, _08054348 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 -_08054340: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08054396 - .align 2, 0 -_08054348: .4byte gMain -_0805434C: - ldr r0, _08054374 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _08054384 - ldr r1, [r2, 0x8] - ldr r0, _08054378 @ =sub_804C718 - cmp r1, r0 - bne _08054384 - bl IsLinkRfuTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08054396 - ldr r0, _0805437C @ =gSoftResetDisabled - movs r1, 0 - strb r1, [r0] - ldr r0, _08054380 @ =sub_80543C4 - bl SetMainCallback2 - b _08054396 - .align 2, 0 -_08054374: .4byte gWirelessCommType -_08054378: .4byte sub_804C718 -_0805437C: .4byte gSoftResetDisabled -_08054380: .4byte sub_80543C4 -_08054384: - ldr r0, _080543B8 @ =gReceivedRemoteLinkPlayers - ldrb r1, [r0] - cmp r1, 0 - bne _08054396 - ldr r0, _080543BC @ =gSoftResetDisabled - strb r1, [r0] - ldr r0, _080543C0 @ =sub_80543C4 - bl SetMainCallback2 -_08054396: - bl HasLinkErrorOccurred - lsls r0, 24 - cmp r0, 0 - bne _080543A4 - bl RunTasks -_080543A4: - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080543B8: .4byte gReceivedRemoteLinkPlayers -_080543BC: .4byte gSoftResetDisabled -_080543C0: .4byte sub_80543C4 - thumb_func_end sub_8053E8C - - thumb_func_start sub_80543C4 -sub_80543C4: @ 80543C4 - push {r4,r5,lr} - ldr r0, _08054430 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _0805441A - bl FreeAllWindowBuffers - movs r0, 0x3 - bl GetBgTilemapBuffer - bl Free - movs r0, 0x1 - bl GetBgTilemapBuffer - bl Free - movs r0, 0 - bl GetBgTilemapBuffer - bl Free - bl FreeMonSpritesGfx - ldr r4, _08054434 @ =gUnknown_2031DAC - ldr r0, [r4] - bl Free - str r5, [r4] - ldr r0, _08054438 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _08054412 - bl DestroyWirelessStatusIndicatorSprite -_08054412: - ldr r0, _0805443C @ =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 -_0805441A: - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08054430: .4byte gPaletteFade -_08054434: .4byte gUnknown_2031DAC -_08054438: .4byte gWirelessCommType -_0805443C: .4byte gMain - thumb_func_end sub_80543C4 - - thumb_func_start DoInGameTradeScene -DoInGameTradeScene: @ 8054440 - push {lr} - sub sp, 0x4 - bl ScriptContext2_Enable - ldr r0, _0805446C @ =sub_8054470 - movs r1, 0xA - bl CreateTask - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - bl HelpSystem_Disable - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0805446C: .4byte sub_8054470 - thumb_func_end DoInGameTradeScene - - thumb_func_start sub_8054470 -sub_8054470: @ 8054470 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0805449C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08054494 - ldr r0, _080544A0 @ =sub_80505CC - bl SetMainCallback2 - ldr r1, _080544A4 @ =gFieldCallback - ldr r0, _080544A8 @ =FieldCallback_ReturnToEventScript2 - str r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_08054494: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805449C: .4byte gPaletteFade -_080544A0: .4byte sub_80505CC -_080544A4: .4byte gFieldCallback -_080544A8: .4byte FieldCallback_ReturnToEventScript2 - thumb_func_end sub_8054470 - - thumb_func_start sub_80544AC -sub_80544AC: @ 80544AC - push {r4,r5,lr} - movs r5, 0 - movs r4, 0 -_080544B2: - ldr r0, _080544F0 @ =gUnknown_2031DA4 - ldrb r0, [r0, 0x1] - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _080544F4 @ =gEnemyParty - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x43 - bl GetMonData - adds r0, r5, r0 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xB - bls _080544B2 - cmp r5, 0 - beq _080544EA - ldr r0, _080544F8 @ =0x0000083b - bl FlagSet -_080544EA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080544F0: .4byte gUnknown_2031DA4 -_080544F4: .4byte gEnemyParty -_080544F8: .4byte 0x0000083b - thumb_func_end sub_80544AC - - thumb_func_start sub_80544FC -sub_80544FC: @ 80544FC - push {lr} - bl sub_80504CC - pop {r0} - bx r0 - thumb_func_end sub_80544FC - - thumb_func_start sub_8054508 -sub_8054508: @ 8054508 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - adds r5, r0, 0 - mov r8, r1 - adds r4, r2, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0xFF - bl FillWindowPixelBuffer - ldr r2, _08054580 @ =gUnknown_2031DAC - ldr r1, [r2] - movs r6, 0x82 - lsls r6, 1 - adds r1, r6 - movs r3, 0 - movs r0, 0xF - strb r0, [r1] - ldr r0, [r2] - ldr r7, _08054584 @ =0x00000105 - adds r1, r0, r7 - movs r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - adds r7, 0x1 - adds r1, r0, r7 - movs r0, 0x6 - strb r0, [r1] - str r3, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - ldr r0, [r2] - adds r0, r6 - str r0, [sp, 0x8] - lsls r4, 24 - asrs r4, 24 - str r4, [sp, 0xC] - mov r0, r8 - str r0, [sp, 0x10] - adds r0, r5, 0 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl AddTextPrinterParameterized4 - adds r0, r5, 0 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08054580: .4byte gUnknown_2031DAC -_08054584: .4byte 0x00000105 - thumb_func_end sub_8054508 - - thumb_func_start c3_08054588 -c3_08054588: @ 8054588 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080545C0 @ =gTasks+0x8 - adds r4, r0, r1 - ldr r1, _080545C4 @ =gUnknown_826D250 - movs r2, 0 - ldrsh r0, [r4, r2] - lsls r0, 1 - adds r0, r1 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r2, r1, 0 - movs r3, 0x4 - ldrsh r0, [r4, r3] - cmp r0, 0 - bne _080545CC - movs r0, 0x80 - lsls r0, 1 - cmp r1, r0 - beq _080545D4 - lsls r0, r1, 1 - ldr r1, _080545C8 @ =gUnknown_826BB5C - adds r0, r1 - b _080545D6 - .align 2, 0 -_080545C0: .4byte gTasks+0x8 -_080545C4: .4byte gUnknown_826D250 -_080545C8: .4byte gUnknown_826BB5C -_080545CC: - movs r0, 0x80 - lsls r0, 1 - cmp r1, r0 - bne _080545E4 -_080545D4: - ldr r0, _080545E0 @ =gUnknown_826BF5C -_080545D6: - movs r1, 0x30 - movs r2, 0x20 - bl LoadPalette - b _080545F2 - .align 2, 0 -_080545E0: .4byte gUnknown_826BF5C -_080545E4: - lsls r0, r2, 1 - ldr r1, _08054648 @ =gUnknown_826BD5C - adds r0, r1 - movs r1, 0x30 - movs r2, 0x20 - bl LoadPalette -_080545F2: - ldr r0, _0805464C @ =gUnknown_826D250 - movs r2, 0 - ldrsh r1, [r4, r2] - lsls r1, 1 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - bne _08054610 - movs r3, 0x2 - ldrsh r0, [r4, r3] - cmp r0, 0 - bne _08054610 - movs r0, 0xBC - bl PlaySE -_08054610: - movs r0, 0x2 - ldrsh r2, [r4, r0] - ldr r1, _0805464C @ =gUnknown_826D250 - movs r3, 0 - ldrsh r0, [r4, r3] - lsls r0, 1 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r2, r0 - bne _08054650 - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - movs r0, 0 - strh r0, [r4, 0x2] - movs r2, 0 - ldrsh r0, [r4, r2] - lsls r0, 1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0xFF - bne _08054656 - adds r0, r5, 0 - bl DestroyTask - b _08054656 - .align 2, 0 -_08054648: .4byte gUnknown_826BD5C -_0805464C: .4byte gUnknown_826D250 -_08054650: - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] -_08054656: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end c3_08054588 - - thumb_func_start c3_0805465C -c3_0805465C: @ 805465C - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _08054728 @ =gTasks+0x8 - adds r7, r0, r1 - movs r0, 0 - ldrsh r4, [r7, r0] - cmp r4, 0 - bne _080546BC - ldr r1, _0805472C @ =gUnknown_2031DAC - ldr r3, [r1] - ldr r5, _08054730 @ =0x0000010b - adds r2, r3, r5 - movs r0, 0x78 - strb r0, [r2] - subs r5, 0x2 - adds r2, r3, r5 - strb r0, [r2] - ldr r0, [r1] - movs r2, 0x85 - lsls r2, 1 - adds r0, r2 - strb r4, [r0] - ldr r0, [r1] - movs r3, 0x86 - lsls r3, 1 - adds r0, r3 - movs r1, 0xA0 - strb r1, [r0] - movs r1, 0x80 - lsls r1, 6 - movs r0, 0 - bl SetGpuRegBits - movs r0, 0x4A - movs r1, 0x10 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0x13 - bl SetGpuReg -_080546BC: - ldr r4, _0805472C @ =gUnknown_2031DAC - ldr r2, [r4] - ldr r5, _08054730 @ =0x0000010b - mov r8, r5 - adds r0, r2, r5 - ldrb r1, [r0] - subs r5, 0x2 - adds r2, r5 - ldrb r0, [r2] - lsls r0, 8 - orrs r1, r0 - movs r0, 0x40 - bl SetGpuReg - ldr r2, [r4] - movs r1, 0x86 - lsls r1, 1 - adds r0, r2, r1 - ldrb r1, [r0] - movs r3, 0x85 - lsls r3, 1 - adds r0, r2, r3 - ldrb r0, [r0] - lsls r0, 8 - orrs r1, r0 - movs r0, 0x44 - bl SetGpuReg - ldrh r0, [r7] - adds r0, 0x1 - strh r0, [r7] - ldr r1, [r4] - adds r1, r5 - ldrb r0, [r1] - subs r0, 0x5 - strb r0, [r1] - ldr r1, [r4] - add r1, r8 - ldrb r0, [r1] - adds r0, 0x5 - strb r0, [r1] - ldr r0, [r4] - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0x4F - bhi _0805471E - adds r0, r6, 0 - bl DestroyTask -_0805471E: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08054728: .4byte gTasks+0x8 -_0805472C: .4byte gUnknown_2031DAC -_08054730: .4byte 0x0000010b - thumb_func_end c3_0805465C - - thumb_func_start sub_8054734 -sub_8054734: @ 8054734 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - adds r7, r0, 0 - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - ldr r1, _080547E8 @ =gTasks+0x8 - adds r6, r0, r1 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _08054774 - ldr r1, _080547EC @ =gUnknown_2031DAC - ldr r0, [r1] - ldr r3, _080547F0 @ =0x00000109 - adds r2, r0, r3 - movs r0, 0x50 - strb r0, [r2] - ldr r0, [r1] - ldr r2, _080547F4 @ =0x0000010b - adds r1, r0, r2 - movs r0, 0xA0 - strb r0, [r1] - movs r0, 0x4A - movs r1, 0x10 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0x13 - bl SetGpuReg -_08054774: - ldr r5, _080547EC @ =gUnknown_2031DAC - ldr r0, [r5] - ldr r3, _080547F4 @ =0x0000010b - adds r1, r0, r3 - ldrb r1, [r1] - ldr r4, _080547F0 @ =0x00000109 - adds r0, r4 - ldrb r0, [r0] - lsls r0, 8 - orrs r1, r0 - movs r0, 0x40 - bl SetGpuReg - ldr r2, [r5] - movs r1, 0x86 - lsls r1, 1 - adds r0, r2, r1 - ldrb r1, [r0] - movs r3, 0x85 - lsls r3, 1 - adds r0, r2, r3 - ldrb r0, [r0] - lsls r0, 8 - orrs r1, r0 - movs r0, 0x44 - bl SetGpuReg - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x78 - beq _080547FC - ldrh r0, [r6] - adds r0, 0x1 - strh r0, [r6] - ldr r0, [r5] - adds r1, r0, r4 - ldrb r0, [r1] - adds r0, 0x5 - strb r0, [r1] - ldr r0, [r5] - ldr r2, _080547F4 @ =0x0000010b - adds r1, r0, r2 - ldrb r0, [r1] - subs r0, 0x5 - strb r0, [r1] - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x73 - bls _0805480C - ldr r2, _080547F8 @ =0x0000ffff - movs r0, 0x8 - movs r1, 0 - bl BlendPalettes - b _0805480C - .align 2, 0 -_080547E8: .4byte gTasks+0x8 -_080547EC: .4byte gUnknown_2031DAC -_080547F0: .4byte 0x00000109 -_080547F4: .4byte 0x0000010b -_080547F8: .4byte 0x0000ffff -_080547FC: - movs r1, 0x80 - lsls r1, 6 - movs r0, 0 - bl ClearGpuRegBits - adds r0, r7, 0 - bl DestroyTask -_0805480C: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8054734 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s index 0d1640699..ae5381dda 100644 --- a/asm/union_room_chat.s +++ b/asm/union_room_chat.s @@ -1636,7 +1636,7 @@ _08129144: lsls r0, 24 cmp r0, 0 bne _08129206 - bl sub_804C1C0 + bl SetContinueGameWarpStatusToDynamicWarp movs r0, 0 bl TrySavingData ldr r0, _08129164 @ =gUnknown_203B0E0 @@ -1665,7 +1665,7 @@ _08129180: bne _08129206 movs r0, 0x30 bl PlaySE - bl sav2_gender2_inplace_and_xFE + bl ClearContinueGameWarpStatus2 ldr r0, _081291A0 @ =gUnknown_203B0E0 ldr r1, [r0] movs r0, 0xA diff --git a/baserom.ips b/baserom.ips Binary files differindex 02b5aab21..5fc13b159 100644 --- a/baserom.ips +++ b/baserom.ips diff --git a/constants/constants.inc b/constants/constants.inc index 4365e90e1..4a513c355 100644 --- a/constants/constants.inc +++ b/constants/constants.inc @@ -4,7 +4,7 @@ .include "constants/contest_constants.inc" @ .include "constants/item_data_constants.inc" .include "constants/battle_move_constants.inc" - .include "constants/trainer_constants.inc" +@ .include "constants/trainer_constants.inc" .include "constants/berry_constants.inc" .include "constants/version.inc" .include "constants/battle.inc" diff --git a/constants/trainer_constants.inc b/constants/trainer_constants.inc deleted file mode 100644 index 48ed3036e..000000000 --- a/constants/trainer_constants.inc +++ /dev/null @@ -1,243 +0,0 @@ - .set TRAINER_CLASS_AQUA_LEADER, 0 - .set TRAINER_CLASS_TEAM_AQUA_M, 1 - .set TRAINER_CLASS_TEAM_AQUA_F, 2 - .set TRAINER_CLASS_AROMA_LADY, 3 - .set TRAINER_CLASS_RUIN_MANIAC, 4 - .set TRAINER_CLASS_INTERVIEWER, 5 - .set TRAINER_CLASS_TUBER_F, 6 - .set TRAINER_CLASS_TUBER_M, 7 - .set TRAINER_CLASS_COOL_TRAINER_M, 8 - .set TRAINER_CLASS_COOL_TRAINER_F, 9 - .set TRAINER_CLASS_HEX_MANIAC, 10 - .set TRAINER_CLASS_LADY, 11 - .set TRAINER_CLASS_BEAUTY, 12 - .set TRAINER_CLASS_RICH_BOY, 13 - .set TRAINER_CLASS_POKEMANIAC, 14 - .set TRAINER_CLASS_SWIMMER_M, 15 - .set TRAINER_CLASS_BLACK_BELT, 16 - .set TRAINER_CLASS_GUITARIST, 17 - .set TRAINER_CLASS_KINDLER, 18 - .set TRAINER_CLASS_CAMPER, 19 - .set TRAINER_CLASS_BUG_MANIAC, 20 - .set TRAINER_CLASS_PSYCHIC_M, 21 - .set TRAINER_CLASS_PSYCHIC_F, 22 - .set TRAINER_CLASS_GENTLEMAN, 23 - .set TRAINER_CLASS_ELITE_FOUR_M, 24 - .set TRAINER_CLASS_ELITE_FOUR_F, 25 - .set TRAINER_CLASS_LEADER_F, 26 - .set TRAINER_CLASS_LEADER_M, 27 - .set TRAINER_CLASS_LEADER_MF, 28 - .set TRAINER_CLASS_SCHOOL_KID_M, 29 - .set TRAINER_CLASS_SCHOOL_KID_F, 30 - .set TRAINER_CLASS_SR_AND_JR, 31 - .set TRAINER_CLASS_POKEFAN_M, 32 - .set TRAINER_CLASS_POKEFAN_F, 33 - .set TRAINER_CLASS_EXPERT_M, 34 - .set TRAINER_CLASS_EXPERT_F, 35 - .set TRAINER_CLASS_YOUNGSTER, 36 - .set TRAINER_CLASS_CHAMPION, 37 - .set TRAINER_CLASS_FISHERMAN, 38 - .set TRAINER_CLASS_CYCLING_TRIATHLETE_M, 39 - .set TRAINER_CLASS_CYCLING_TRIATHLETE_F, 40 - .set TRAINER_CLASS_RUNNING_TRIATHLETE_M, 41 - .set TRAINER_CLASS_RUNNING_TRIATHLETE_F, 42 - .set TRAINER_CLASS_SWIMMING_TRIATHLETE_M, 43 - .set TRAINER_CLASS_SWIMMING_TRIATHLETE_F, 44 - .set TRAINER_CLASS_DRAGON_TAMER, 45 - .set TRAINER_CLASS_BIRD_KEEPER, 46 - .set TRAINER_CLASS_NINJA_BOY, 47 - .set TRAINER_CLASS_BATTLE_GIRL, 48 - .set TRAINER_CLASS_PARASOL_LADY, 49 - .set TRAINER_CLASS_SWIMMER_F, 50 - .set TRAINER_CLASS_PICNICKER, 51 - .set TRAINER_CLASS_TWINS, 52 - .set TRAINER_CLASS_SAILOR, 53 - .set TRAINER_CLASS_BOARDER_1, 54 - .set TRAINER_CLASS_BOARDER_2, 55 - .set TRAINER_CLASS_COLLECTOR, 56 - .set TRAINER_CLASS_WALLY, 57 - .set TRAINER_CLASS_BRENDAN_1, 58 - .set TRAINER_CLASS_BRENDAN_2, 59 - .set TRAINER_CLASS_BRENDAN_3, 60 - .set TRAINER_CLASS_MAY_1, 61 - .set TRAINER_CLASS_MAY_2, 62 - .set TRAINER_CLASS_MAY_3, 63 - .set TRAINER_CLASS_POKEMON_BREEDER_M, 64 - .set TRAINER_CLASS_POKEMON_BREEDER_F, 65 - .set TRAINER_CLASS_POKEMON_RANGER_M, 66 - .set TRAINER_CLASS_POKEMON_RANGER_F, 67 - .set TRAINER_CLASS_MAGMA_LEADER, 68 - .set TRAINER_CLASS_TEAM_MAGMA_M, 69 - .set TRAINER_CLASS_TEAM_MAGMA_F, 70 - .set TRAINER_CLASS_LASS, 71 - .set TRAINER_CLASS_BUG_CATCHER, 72 - .set TRAINER_CLASS_HIKER, 73 - .set TRAINER_CLASS_YOUNG_COUPLE, 74 - .set TRAINER_CLASS_OLD_COUPLE, 75 - .set TRAINER_CLASS_SIS_AND_BRO, 76 - - .set TRAINER_PIC_BRENDAN, 0 - .set TRAINER_PIC_MAY, 1 - .set TRAINER_PIC_LASS, 2 - .set TRAINER_PIC_YOUNGSTER, 3 - .set TRAINER_PIC_HIKER, 4 - .set TRAINER_PIC_BEAUTY, 5 - .set TRAINER_PIC_FISHERMAN, 6 - .set TRAINER_PIC_LADY, 7 - .set TRAINER_PIC_CYCLING_TRIATHLETE_M, 8 - .set TRAINER_PIC_AQUA_GRUNT_M, 9 - .set TRAINER_PIC_TWINS, 10 - .set TRAINER_PIC_SWIMMER_F, 11 - .set TRAINER_PIC_BUG_CATCHER, 12 - .set TRAINER_PIC_SCHOOL_KID_M, 13 - .set TRAINER_PIC_RICH_BOY, 14 - .set TRAINER_PIC_SR_AND_JR, 15 - .set TRAINER_PIC_BLACK_BELT, 16 - .set TRAINER_PIC_WALLY, 17 - .set TRAINER_PIC_AQUA_GRUNT_F, 18 - .set TRAINER_PIC_TUBER_F, 19 - .set TRAINER_PIC_HEX_MANIAC, 20 - .set TRAINER_PIC_POKEMON_BREEDER_F, 21 - .set TRAINER_PIC_MAGMA_GRUNT_M, 22 - .set TRAINER_PIC_MAGMA_GRUNT_F, 23 - .set TRAINER_PIC_INTERVIEWER, 24 - .set TRAINER_PIC_TUBER_M, 25 - .set TRAINER_PIC_YOUNG_COUPLE, 26 - .set TRAINER_PIC_GUITARIST, 27 - .set TRAINER_PIC_GENTLEMAN, 28 - .set TRAINER_PIC_STEVEN, 29 - .set TRAINER_PIC_MAXIE, 30 - .set TRAINER_PIC_RUNNING_TRIATHLETE_F, 31 - .set TRAINER_PIC_RUNNING_TRIATHLETE_M, 32 - .set TRAINER_PIC_BATTLE_GIRL, 33 - .set TRAINER_PIC_CYCLING_TRIATHLETE_F, 34 - .set TRAINER_PIC_SWIMMER_M, 35 - .set TRAINER_PIC_POKEFAN_F, 36 - .set TRAINER_PIC_EXPERT_M, 37 - .set TRAINER_PIC_EXPERT_F, 38 - .set TRAINER_PIC_SWIMMING_TRIATHLETE_M, 39 - .set TRAINER_PIC_SWIMMING_TRIATHLETE_F, 40 - .set TRAINER_PIC_DRAGON_TAMER, 41 - .set TRAINER_PIC_BIRD_KEEPER, 42 - .set TRAINER_PIC_NINJA_BOY, 43 - .set TRAINER_PIC_PARASOL_LADY, 44 - .set TRAINER_PIC_BUG_MANIAC, 45 - .set TRAINER_PIC_SAILOR, 46 - .set TRAINER_PIC_COLLECTOR, 47 - .set TRAINER_PIC_POKEMON_BREEDER_M, 48 - .set TRAINER_PIC_POKEMON_RANGER_M, 49 - .set TRAINER_PIC_POKEMON_RANGER_F, 50 - .set TRAINER_PIC_MAGMA_ADMIN_M, 51 - .set TRAINER_PIC_MAGMA_ADMIN_F, 52 - .set TRAINER_PIC_AROMA_LADY, 53 - .set TRAINER_PIC_RUIN_MANIAC, 54 - .set TRAINER_PIC_COOL_TRAINER_M, 55 - .set TRAINER_PIC_COOL_TRAINER_F, 56 - .set TRAINER_PIC_POKEMANIAC, 57 - .set TRAINER_PIC_KINDLER, 58 - .set TRAINER_PIC_CAMPER, 59 - .set TRAINER_PIC_PICNICKER, 60 - .set TRAINER_PIC_PSYCHIC_M, 61 - .set TRAINER_PIC_PSYCHIC_F, 62 - .set TRAINER_PIC_SCHOOL_KID_F, 63 - .set TRAINER_PIC_POKEFAN_M, 64 - .set TRAINER_PIC_SIS_AND_BRO, 65 - .set TRAINER_PIC_OLD_COUPLE, 66 - .set TRAINER_PIC_AQUA_ADMIN_M, 67 - .set TRAINER_PIC_AQUA_ADMIN_F, 68 - .set TRAINER_PIC_UNUSED_AQUA, 69 - .set TRAINER_PIC_ARCHIE, 70 - .set TRAINER_PIC_ROXANNE, 71 - .set TRAINER_PIC_BRAWLY, 72 - .set TRAINER_PIC_WATTSON, 73 - .set TRAINER_PIC_FLANNERY, 74 - .set TRAINER_PIC_NORMAN, 75 - .set TRAINER_PIC_WINONA, 76 - .set TRAINER_PIC_TATE_AND_LIZA, 77 - .set TRAINER_PIC_WALLACE, 78 - .set TRAINER_PIC_SIDNEY, 79 - .set TRAINER_PIC_PHOEBE, 80 - .set TRAINER_PIC_GLACIA, 81 - .set TRAINER_PIC_DRAKE, 82 - - .set TRAINER_CLASS_NAME_POKEMON_TRAINER_1, 0 - .set TRAINER_CLASS_NAME_POKEMON_TRAINER_2, 1 - .set TRAINER_CLASS_NAME_AQUA_LEADER, 2 - .set TRAINER_CLASS_NAME_TEAM_AQUA, 3 - .set TRAINER_CLASS_NAME_AQUA_ADMIN, 4 - .set TRAINER_CLASS_NAME_AROMA_LADY, 5 - .set TRAINER_CLASS_NAME_RUIN_MANIAC, 6 - .set TRAINER_CLASS_NAME_INTERVIEWER, 7 - .set TRAINER_CLASS_NAME_TUBER_F, 8 - .set TRAINER_CLASS_NAME_TUBER_M, 9 - .set TRAINER_CLASS_NAME_COOL_TRAINER, 10 - .set TRAINER_CLASS_NAME_HEX_MANIAC, 11 - .set TRAINER_CLASS_NAME_LADY, 12 - .set TRAINER_CLASS_NAME_BEAUTY, 13 - .set TRAINER_CLASS_NAME_RICH_BOY, 14 - .set TRAINER_CLASS_NAME_POKEMANIAC, 15 - .set TRAINER_CLASS_NAME_SWIMMER_M, 16 - .set TRAINER_CLASS_NAME_BLACK_BELT, 17 - .set TRAINER_CLASS_NAME_GUITARIST, 18 - .set TRAINER_CLASS_NAME_KINDLER, 19 - .set TRAINER_CLASS_NAME_CAMPER, 20 - .set TRAINER_CLASS_NAME_BUG_MANIAC, 21 - .set TRAINER_CLASS_NAME_PSYCHIC, 22 - .set TRAINER_CLASS_NAME_GENTLEMAN, 23 - .set TRAINER_CLASS_NAME_ELITE_FOUR, 24 - .set TRAINER_CLASS_NAME_LEADER, 25 - .set TRAINER_CLASS_NAME_SCHOOL_KID, 26 - .set TRAINER_CLASS_NAME_SR_AND_JR, 27 - .set TRAINER_CLASS_NAME_WINSTRATE, 28 - .set TRAINER_CLASS_NAME_POKEFAN, 29 - .set TRAINER_CLASS_NAME_EXPERT, 30 - .set TRAINER_CLASS_NAME_YOUNGSTER, 31 - .set TRAINER_CLASS_NAME_CHAMPION, 32 - .set TRAINER_CLASS_NAME_FISHERMAN, 33 - .set TRAINER_CLASS_NAME_TRIATHLETE, 34 - .set TRAINER_CLASS_NAME_DRAGON_TAMER, 35 - .set TRAINER_CLASS_NAME_BIRD_KEEPER, 36 - .set TRAINER_CLASS_NAME_NINJA_BOY, 37 - .set TRAINER_CLASS_NAME_BATTLE_GIRL, 38 - .set TRAINER_CLASS_NAME_PARASOL_LADY, 39 - .set TRAINER_CLASS_NAME_SWIMMER_F, 40 - .set TRAINER_CLASS_NAME_PICNICKER, 41 - .set TRAINER_CLASS_NAME_TWINS, 42 - .set TRAINER_CLASS_NAME_SAILOR, 43 - .set TRAINER_CLASS_NAME_BOARDER, 44 - .set TRAINER_CLASS_NAME_COLLECTOR, 45 - .set TRAINER_CLASS_NAME_POKEMON_TRAINER_3, 46 - .set TRAINER_CLASS_NAME_POKEMON_BREEDER, 47 - .set TRAINER_CLASS_NAME_POKEMON_RANGER, 48 - .set TRAINER_CLASS_NAME_MAGMA_LEADER, 49 - .set TRAINER_CLASS_NAME_TEAM_MAGMA, 50 - .set TRAINER_CLASS_NAME_MAGMA_ADMIN, 51 - .set TRAINER_CLASS_NAME_LASS, 52 - .set TRAINER_CLASS_NAME_BUG_CATCHER, 53 - .set TRAINER_CLASS_NAME_HIKER, 54 - .set TRAINER_CLASS_NAME_YOUNG_COUPLE, 55 - .set TRAINER_CLASS_NAME_OLD_COUPLE, 56 - .set TRAINER_CLASS_NAME_SIS_AND_BRO, 57 - - .set TRAINER_ENCOUNTER_MUSIC_MALE, 0 @ standard male encounter music - .set TRAINER_ENCOUNTER_MUSIC_FEMALE, 1 @ standard female encounter music - .set TRAINER_ENCOUNTER_MUSIC_GIRL, 2 @ used for male Tubers and Young Couples too - .set TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, 3 - .set TRAINER_ENCOUNTER_MUSIC_INTENSE, 4 - .set TRAINER_ENCOUNTER_MUSIC_COOL, 5 - .set TRAINER_ENCOUNTER_MUSIC_AQUA, 6 - .set TRAINER_ENCOUNTER_MUSIC_MAGMA, 7 - .set TRAINER_ENCOUNTER_MUSIC_SWIMMER, 8 - .set TRAINER_ENCOUNTER_MUSIC_TWINS, 9 @ used for other trainer classes too - .set TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR, 10 - .set TRAINER_ENCOUNTER_MUSIC_HIKER, 11 @ used for other trainer classes too - .set TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, 12 - .set TRAINER_ENCOUNTER_MUSIC_RICH, 13 @ Rich Boys and Gentlemen - - .set F_TRAINER_FEMALE, 1 << 7 - -@ All trainer parties specify the IV, level, and species for each Pokémon in the -@ party. Some trainer parties also specify held items and custom moves for each -@ Pokémon. - .set F_TRAINER_PARTY_CUSTOM_MOVESET, 1 << 0 - .set F_TRAINER_PARTY_HELD_ITEM, 1 << 1 diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index 67964b9b9..5f4d1686a 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -1739,7 +1739,15 @@ gUnknown_845A788:: @ 845A788 .incbin "baserom.gba", 0x45A788, 0x60 gUnknown_845A7E8:: @ 845A7E8 - .incbin "baserom.gba", 0x45A7E8, 0x24 + .4byte gUnknown_841718C @ Not what other player wants + .4byte gUnknown_84171CC @ Not an egg + .4byte gUnknown_84170BC @ Mon can't be traded + .4byte gUnknown_84170BC @ Mon can't be traded + .4byte gUnknown_84170FC @ Other trainer's mon can't be traded + .4byte gUnknown_84170E0 @ Egg can't be traded + .4byte gUnknown_8417130 @ Other trainer can't accept + .4byte gUnknown_8417164 @ Can't trade with trainer now + .4byte gUnknown_8417164 @ Can't trade with trainer now gUnknown_845A80C:: @ 845A80C .incbin "baserom.gba", 0x45A80C, 0x74 diff --git a/data/graphics.s b/data/graphics.s index 93c5b6614..67e88a6cd 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -16214,26 +16214,26 @@ gUnknown_8E9CB9C:: @ 8E9CB9C gUnknown_8E9CBBC:: @ 8E9CBBC .incbin "baserom.gba", 0xE9CBBC, 0x320 @UNKNOWN -gUnknown_8E9CEDC:: @ 8E9CEDC - .incbin "baserom.gba", 0xE9CEDC, 0x60 @UNKNOWN +gTradeMenu_Pal:: @ 8E9CEDC + .incbin "graphics/trade/menu.gbapal" -gUnknown_8E9CF3C:: - .incbin "baserom.gba", 0xE9CF3C, 0x20 @UNKNOWN +gTradeButtons_Pal:: @ E9CF3C + .incbin "graphics/trade/unknown_DDB444.gbapal" -gUnknown_8E9CF5C:: @ 8E9CF5C - .incbin "baserom.gba", 0xE9CF5C, 0x1280 @UNKNOWN +gTradeMenu_Gfx:: @ 8E9CF5C + .incbin "graphics/trade/menu.4bpp" -gUnknown_8E9E1DC:: - .incbin "baserom.gba", 0xE9E1DC, 0x800 @UNKNOWN +gTradeButtons_Gfx:: @ E9E1DC + .incbin "graphics/trade/buttons.4bpp" -gUnknown_8E9E9DC:: - .incbin "baserom.gba", 0xE9E9DC, 0x20 @UNKNOWN +gUnknown_8E9E9DC:: @ E9E9DC + .incbin "graphics/unused/unused_DDCEE4.bin" gUnknown_8E9E9FC:: @ 8E9E9FC - .incbin "baserom.gba", 0xE9E9FC, 0x800 @UNKNOWN + .incbin "graphics/trade/unknown_DDCF04.bin" -gUnknown_8E9F1FC:: @ 8E9F1FC - .incbin "baserom.gba", 0xE9F1FC, 0x24 @UNKNOWN +gTradeMenuMonBox_Tilemap:: @ 8E9F1FC + .incbin "graphics/trade/menu_mon_box.bin" gFameCheckerBgPals:: @ 8E9F220 .incbin "data/graphics/fame_checker_bg.gbapal" diff --git a/data/ingame_trades.inc b/data/ingame_trades.inc deleted file mode 100644 index c3447d79b..000000000 --- a/data/ingame_trades.inc +++ /dev/null @@ -1,174 +0,0 @@ -gIngameTrades:: @ 826CF8C - .string "MIMIEN$", 11 - .align 1 - .2byte SPECIES_MR_MIME @ species - .byte 20, 15, 17, 24, 23, 22 @ IVs - .byte FALSE @ has second ability - .align 2 - .4byte 1985 @ OT ID - .byte 5, 5, 5, 30, 5 @ contest stats - .align 2 - .4byte 0x00009cae @ personality - .2byte ITEM_NONE @ held item - .byte 255 @ mail index - .string "REYLEY$", 11 - .byte MALE @ OT gender - .byte 10 @ sheen - .2byte SPECIES_ABRA @ species requested - .align 2 - - .string "ZYNX$", 11 - .align 1 - .2byte SPECIES_JYNX @ species - .byte 18, 17, 18, 22, 25, 21 @ IVs - .byte FALSE @ has second ability - .align 2 - .4byte 36728 @ OT ID - .byte 5, 30, 5, 5, 5 @ contest stats - .align 2 - .4byte 0x498a2e1d @ personality - .2byte ITEM_FAB_MAIL @ held item - .byte 0 @ mail index - .string "DONTAE$", 11 - .byte MALE @ OT gender - .byte 10 @ sheen - .2byte SPECIES_POLIWHIRL @ species requested - .align 2 - - .string "MS. NIDO$", 11 - .align 1 - .2byte SPECIES_NIDORAN_F @ species - .byte 22, 18, 25, 19, 15, 22 @ IVs - .byte FALSE @ has second ability - .align 2 - .4byte 63184 @ OT ID - .byte 5, 5, 5, 5, 30 @ contest stats - .align 2 - .4byte 0x4c970b89 @ personality - .2byte ITEM_TINY_MUSHROOM @ held item - .byte 255 @ mail index - .string "SAIGE$", 11 - .byte FEMALE @ OT gender - .byte 10 @ sheen - .2byte SPECIES_NIDORAN_M @ species requested - .align 2 - - .string "CH'DING$", 11 - .align 1 - .2byte SPECIES_FARFETCHD @ species - .byte 20, 25, 21, 24, 15, 20 @ IVs - .byte FALSE @ has second ability - .align 2 - .4byte 8810 @ OT ID - .byte 30, 5, 5, 5, 5 @ contest stats - .align 2 - .4byte 0x151943d7 @ personality - .2byte ITEM_STICK @ held item - .byte 255 @ mail index - .string "ELYSSA$", 11 - .byte MALE @ OT gender - .byte 10 @ sheen - .2byte SPECIES_SPEAROW @ species requested - .align 2 - - .string "NINA$", 11 - .align 1 - .2byte SPECIES_NIDORINA @ species - .byte 22, 25, 18, 19, 22, 15 @ IVs - .byte FALSE @ has second ability - .align 2 - .4byte 13637 @ OT ID - .byte 5, 5, 30, 5, 5 @ contest stats - .align 2 - .4byte 0x00eeca15 @ personality - .2byte ITEM_NONE @ held item - .byte 255 @ mail index - .string "TURNER$", 11 - .byte MALE @ OT gender - .byte 10 @ sheen - .2byte SPECIES_NIDORINO @ species requested - .align 2 - - .string "MARC$", 11 - .align 1 - .2byte SPECIES_LICKITUNG @ species - .byte 24, 19, 21, 15, 23, 21 @ IVs - .byte FALSE @ has second ability - .align 2 - .4byte 1239 @ OT ID - .byte 5, 5, 5, 5, 30 @ contest stats - .align 2 - .4byte 0x451308ab @ personality - .2byte ITEM_NONE @ held item - .byte 255 @ mail index - .string "HADEN$", 11 - .byte MALE @ OT gender - .byte 10 @ sheen - .2byte SPECIES_GOLDUCK @ species requested - .align 2 - - .string "ESPHERE$", 11 - .align 1 - .2byte SPECIES_ELECTRODE @ species - .byte 19, 16, 18, 25, 25, 19 @ IVs - .byte TRUE @ has second ability - .align 2 - .4byte 50298 @ OT ID - .byte 30, 5, 5, 5, 5 @ contest stats - .align 2 - .4byte 0x06341016 @ personality - .2byte ITEM_NONE @ held item - .byte 255 @ mail index - .string "CLIFTON$", 11 - .byte MALE @ OT gender - .byte 10 @ sheen - .2byte SPECIES_RAICHU @ species requested - .align 2 - - .string "TANGENY$", 11 - .align 1 - .2byte SPECIES_TANGELA @ species - .byte 22, 17, 25, 16, 23, 20 @ IVs - .byte FALSE @ has second ability - .align 2 - .4byte 60042 @ OT ID - .byte 5, 5, 30, 5, 5 @ contest stats - .align 2 - .4byte 0x5c77ecfa @ personality - .2byte ITEM_STARDUST @ held item - .byte 255 @ mail index - .string "NORMA$", 11 - .byte FEMALE @ OT gender - .byte 10 @ sheen - .2byte SPECIES_VENONAT @ species requested - .align 2 - - .string "SEELOR$", 11 - .align 1 - .2byte SPECIES_SEEL @ species - .byte 24, 15, 22, 16, 23, 22 @ IVs - .byte FALSE @ has second ability - .align 2 - .4byte 9853 @ OT ID - .byte 5, 5, 5, 5, 30 @ contest stats - .align 2 - .4byte 0x482cac89 @ personality - .2byte ITEM_NONE @ held item - .byte 255 @ mail index - .string "GARETT$", 11 - .byte MALE @ OT gender - .byte 10 @ sheen - .2byte SPECIES_PONYTA @ species requested - .align 2 - -gUnknown_826D1A8:: @ 826D1A8 - .2byte EC_WORD_THAT_S - .2byte EC_WORD_A - .2byte EC_WORD_HEALTHY - .2byte EC_POKEMON2(JYNX) - .2byte EC_WORD_EXCL - .2byte EC_WORD_BE - .2byte EC_WORD_KIND - .2byte EC_WORD_TO - .2byte EC_WORD_IT - .2byte 0 diff --git a/data/strings.s b/data/strings.s index 5305352b7..d81f72bac 100644 --- a/data/strings.s +++ b/data/strings.s @@ -1052,24 +1052,29 @@ gUnknown_84170BC:: @ 84170BC gUnknown_84170E0:: @ 84170E0 .string "An EGG can't be traded now.$" + .align 2 gUnknown_84170FC:: @ 0x84170FC .string "The other TRAINER's POKéMON\n" .string "can't be traded now.$" -gUnknown_841712D:: @ 0x841712D - .string " The other TRAINER can't accept\n" + .align 2 +gUnknown_8417130:: @ 0x8417130 + .string "The other TRAINER can't accept\n" .string "that POKéMON now.$" -gUnknown_8417161:: @ 0x8417161 - .string " You can't trade with that\n" + .align 2 +gUnknown_8417164:: @ 0x8417164 + .string "You can't trade with that\n" .string "TRAINER now.$" -gUnknown_841718B:: @ 0x841718B - .string " That isn't the type of POKéMON\n" + .align 2 +gUnknown_841718C:: @ 0x841718C + .string "That isn't the type of POKéMON\n" .string "that the other TRAINER wants.$" -gUnknown_84171C9:: @ 0x84171C9 - .string " That isn't an EGG.$" + .align 2 +gUnknown_84171CC:: @ 0x84171CC + .string "That isn't an EGG.$" gUnknown_84171DF:: @ 0x84171DF .string "Choose a POKéMON.$" @@ -4359,22 +4364,22 @@ gUnknown_841E09F:: @ 841E09F gUnknown_841E0A5:: @ 841E0A5 .string "Is this trade okay?$" -gUnknown_841E0B9:: +gTradeText_Cancel:: .string "CANCEL$" -gUnknown_841E0C0:: +gTradeText_ChooseAPokemon:: .string "Choose a POKéMON.$" -gUnknown_841E0D2:: +gTradeText_Summary:: .string "SUMMARY$" -gUnknown_841E0DA:: +gTradeText_Trade:: .string "TRADE$" -gUnknown_841E0E0:: +gTradeText_CancelTrade:: .string "Cancel trade?$" -gUnknown_841E0EE:: +gTradeText_PressBButtonToExit:: .string "Press the B Button to exit.$" gUnknown_841E10A:: @@ -4402,17 +4407,17 @@ gUnknown_841E1C5:: .string "Your friend wants\n" .string "to trade POKéMON.$" -gUnknown_841E1E9:: @ 841E1E9 +gText_XWillBeSentToY:: @ 841E1E9 .string "{STR_VAR_2} will be\n" .string "sent to {STR_VAR_1}.$" -gUnknown_841E200:: @ 841E200 +gText_ByeByeVar1:: @ 841E200 .string "Bye-bye, {STR_VAR_2}!$" -gUnknown_841E20D:: @ 841E20D +gText_XSentOverY:: @ 841E20D .string "{STR_VAR_1} sent over {STR_VAR_3}.$" -gUnknown_841E21E:: @ 841E21E +gText_TakeGoodCareOfX:: @ 841E21E .string "Take good care of {STR_VAR_3}!$" gText_From:: @ 841E234 diff --git a/data/trade.s b/data/trade.s deleted file mode 100644 index 50cbeb488..000000000 --- a/data/trade.s +++ /dev/null @@ -1,997 +0,0 @@ -#include "constants/items.h" -#include "constants/species.h" -#include "constants/easy_chat.h" -#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2, 0 - - @ unknown -gUnknown_8260814:: @ 8260814 - .4byte 0x00000f24 @ sizeof(struct SaveBlock2) - .4byte 0x00003d68 @ sizeof(struct SaveBlock1) - .4byte 0x0000001c @ sizeof(struct MapData) - .4byte 0x00000530 @ unk - .4byte 0x00000034 @ unk - .4byte 0x00000024 @ sizeof(struct MailStruct) - .4byte 0x00000064 @ sizeof(struct Pokemon) - .4byte 0x00000528 - -gUnknown_8260834:: @ 8260834 - .incbin "data/trade/unk_8260834.bin" - -gUnknown_8260A32:: @ 8260A32 - .incbin "data/trade/unk_8260A32.bin" - -gUnknown_8260C30:: @ 8260C30 - .incbin "data/trade/unk_8260C30.bin" - -gUnknown_8261430:: @ 8261430 - .incbin "data/trade/unk_8261430.bin" - -gOamdata_8261C30:: - .4byte 0x80004000, 0x00000400 - -gOamData_8261C38:: - .4byte 0xc0004000, 0x00000400 - -gSpriteAnim_8261C40:: - obj_image_anim_frame 0x00, 5 - obj_image_anim_end - -gSpriteAnim_8261C48:: - obj_image_anim_frame 0x20, 5 - obj_image_anim_end - -gSpriteAnimTable_8261C50:: - .4byte gSpriteAnim_8261C40 - .4byte gSpriteAnim_8261C48 - -gUnknown_8261C58:: @ 8261C58 - obj_tiles gUnknown_8E9E1DC, 0x0800, 300 - -gUnknown_8261C60:: @ 8261C60 - obj_pal gUnknown_8E9CF3C, 2345 - -gSpriteAnim_8261C68:: - obj_image_anim_frame 0x00, 5 - obj_image_anim_end - -gSpriteAnim_8261C70:: - obj_image_anim_frame 0x08, 5 - obj_image_anim_end - -gSpriteAnim_8261C78:: - obj_image_anim_frame 0x10, 5 - obj_image_anim_end - -gSpriteAnim_8261C80:: - obj_image_anim_frame 0x18, 5 - obj_image_anim_end - -gSpriteAnim_8261C88:: - obj_image_anim_frame 0x20, 5 - obj_image_anim_end - -gSpriteAnim_8261C90:: - obj_image_anim_frame 0x28, 5 - obj_image_anim_end - -gSpriteAnimTable_8261C98:: - .4byte gSpriteAnim_8261C68 - .4byte gSpriteAnim_8261C70 - .4byte gSpriteAnim_8261C78 - .4byte gSpriteAnim_8261C80 - .4byte gSpriteAnim_8261C88 - .4byte gSpriteAnim_8261C90 - -gUnknown_8261CB0:: @ 8261CB0 - spr_template 300, 2345, gOamData_8261C38, gSpriteAnimTable_8261C50, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_8261CC8:: @ 8261CC8 - spr_template 200, 4925, gOamdata_8261C30, gSpriteAnimTable_8261C98, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_8261CE0:: - .incbin "data/trade/unk_8261CE0.gbapal" - -gUnknown_8261D00:: @ 8261D00 - obj_pal gUnknown_8261CE0, 4925 - -gUnknown_8261D08:: @ 8261D08 - .byte 0x04, 0x02, 0x0c, 0x0c, 0x00, 0x00 - .byte 0x02, 0x04, 0x0c, 0x0c, 0x00, 0x00 - .byte 0x07, 0x06, 0x01, 0x00, 0x00, 0x00 - .byte 0x01, 0x06, 0x07, 0x00, 0x00, 0x00 - - .byte 0x05, 0x03, 0x0c, 0x0c, 0x00, 0x00 - .byte 0x03, 0x05, 0x0c, 0x0c, 0x00, 0x00 - .byte 0x00, 0x07, 0x06, 0x01, 0x00, 0x00 - .byte 0x06, 0x07, 0x00, 0x01, 0x00, 0x00 - - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x09, 0x08, 0x07, 0x06, 0x00, 0x00 - .byte 0x03, 0x01, 0x00, 0x00, 0x00, 0x00 - - .byte 0x01, 0x01, 0x01, 0x01, 0x00, 0x00 - .byte 0x05, 0x01, 0x01, 0x01, 0x00, 0x00 - .byte 0x02, 0x09, 0x08, 0x07, 0x00, 0x00 - .byte 0x08, 0x09, 0x06, 0x06, 0x00, 0x00 - - .byte 0x02, 0x02, 0x02, 0x02, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x0b, 0x0a, 0x09, 0x08, 0x07, 0x06 - .byte 0x05, 0x03, 0x01, 0x00, 0x00, 0x00 - - .byte 0x03, 0x03, 0x03, 0x03, 0x00, 0x00 - .byte 0x01, 0x01, 0x01, 0x01, 0x00, 0x00 - .byte 0x04, 0x04, 0x04, 0x04, 0x00, 0x00 - .byte 0x0a, 0x08, 0x06, 0x00, 0x00, 0x00 - - .byte 0x0a, 0x08, 0x0c, 0x00, 0x00, 0x00 - .byte 0x08, 0x0a, 0x0c, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x07, 0x00, 0x01, 0x00, 0x00, 0x00 - - .byte 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x09, 0x0c, 0x00, 0x00, 0x00, 0x00 - .byte 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .byte 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x02, 0x01, 0x00, 0x00, 0x00 - .byte 0x09, 0x07, 0x00, 0x00, 0x00, 0x00 - - .byte 0x07, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x02, 0x01, 0x00, 0x00, 0x00, 0x00 - - .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 - .byte 0x0b, 0x09, 0x07, 0x00, 0x00, 0x00 - - .byte 0x09, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x04, 0x02, 0x00, 0x00, 0x00, 0x00 - - .byte 0x0b, 0x09, 0x07, 0x06, 0x00, 0x00 - .byte 0x07, 0x06, 0x00, 0x00, 0x00, 0x00 - .byte 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00 - -gTradeMonSpriteCoords:: @ 8261E40 - .byte 0x01, 0x05 - .byte 0x08, 0x05 - .byte 0x01, 0x0a - .byte 0x08, 0x0a - .byte 0x01, 0x0f - .byte 0x08, 0x0f - .byte 0x10, 0x05 - .byte 0x17, 0x05 - .byte 0x10, 0x0a - .byte 0x17, 0x0a - .byte 0x10, 0x0f - .byte 0x17, 0x0f - .byte 0x17, 0x12 - -gUnknown_8261E5A:: @ 8261E5A - .byte 0x05, 0x04 - .byte 0x0c, 0x04 - .byte 0x05, 0x09 - .byte 0x0c, 0x09 - .byte 0x05, 0x0e - .byte 0x0c, 0x0e - .byte 0x14, 0x04 - .byte 0x1b, 0x04 - .byte 0x14, 0x09 - .byte 0x1b, 0x09 - .byte 0x14, 0x0e - .byte 0x1b, 0x0e - -gUnknown_8261E72:: @ 8261E72 - .byte 0x01, 0x03 - .byte 0x08, 0x03 - .byte 0x01, 0x08 - .byte 0x08, 0x08 - .byte 0x01, 0x0d - .byte 0x08, 0x0d - - .byte 0x10, 0x03 - .byte 0x17, 0x03 - .byte 0x10, 0x08 - .byte 0x17, 0x08 - .byte 0x10, 0x0d - .byte 0x17, 0x0d - -gTradeUnknownSpriteCoords:: @ 8261E8A - .byte 0x3c, 0x09, 0xb4, 0x09 - .byte 0x30, 0x09, 0xa8, 0x09 - -gUnknown_8261E92:: - .byte 0x00, 0x0e, 0x0f, 0x1d - .byte 0x03, 0x05, 0x03, 0x07 - .byte 0x12, 0x05, 0x12, 0x07 - .byte 0x08, 0x07, 0x16, 0x0c - .byte 0x08, 0x07, 0x16, 0x0c - .byte 0x06, 0x07, 0x18, 0x0c - .byte 0x06, 0x07, 0x18, 0x0c - .byte 0x08, 0x07, 0x16, 0x0c - .byte 0x07, 0x07, 0x17, 0x0c - -gUnknown_8261EB6:: @ 8261EB6 - .string "$" - -gUnknown_8261EB7:: - .string "{COLOR DARK_GREY}{HIGHLIGHT TRANSPARENT}{SHADOW RED}$" - -gText_MaleSymbol4:: @ 8261EC1 - .string "♂$" - -gText_FemaleSymbol4:: @ 8261EC3 - .string "♀$" - -gText_GenderlessSymbol:: @ 8261EC5 - .string "$" - -gUnknown_8261EC6:: - .string "$" - -gUnknown_8261EC7:: @ 8261EC7 - .string "\n$" - -gUnknown_8261EC9:: - .string "/$" - - .align 2 -gUnknown_8261ECC:: @ 8261ECC - .4byte gUnknown_841E0B9 - .4byte gUnknown_841E0C0 - .4byte gUnknown_841E0D2 - .4byte gUnknown_841E0DA - .4byte gUnknown_841E0E0 - .4byte gUnknown_841E0EE - -gUnknown_8261EE4:: @ 8261EE4 - .4byte gUnknown_841E10A, sub_804F440 - .4byte gUnknown_841E112, sub_804F464 - -gUnknown_8261EF4:: @ 8261EF4 - .4byte gUnknown_841E118 - .4byte gUnknown_841E145 - .4byte gUnknown_841E16B - .4byte gUnknown_8417094 - .4byte gUnknown_841E199 - .4byte gUnknown_841E1C5 - .4byte gUnknown_84170BC - .4byte gUnknown_84170E0 - .4byte gUnknown_84170FC - -gUnknown_8261F18:: @ 8261F18 - .byte 0, 1, 2 - - .align 2 -gUnknown_8261F1C:: @ 8261F1C - .4byte 0x000001f8 - @ { - @ .bg = 0, - @ .charBaseIndex = 2, - @ .mapBaseIndex = 31, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 0, - @ .baseTile = 0x0000 - @ } - .4byte 0x00001051 - @ { - @ .bg = 1, - @ .charBaseIndex = 0, - @ .mapBaseIndex = 5, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 1, - @ .baseTile = 0x0000 - @ } - .4byte 0x00002062 - @ { - @ .bg = 2, - @ .charBaseIndex = 0, - @ .mapBaseIndex = 6, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 2, - @ .baseTile = 0x0000 - @ } - .4byte 0x00003073 - @ { - @ .bg = 3, - @ .charBaseIndex = 0, - @ .mapBaseIndex = 7, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 3, - @ .baseTile = 0x0000 - @ } - -gUnknown_8261F2C:: @ 8261F2C - .byte 0, 4, 7, 22, 4, 15 - .2byte 0x001e - @ { - @ .bg = 0, - @ .tilemapLeft = 4, - @ .tilemapTop = 7, - @ .width = 22, - @ .height = 4, - @ .paletteNum = 15, - @ .baseBlock = 0x001e - @ } - .byte 0, 17, 15, 12, 4, 15 - .2byte 0x0076 - @ { - @ .bg = 0, - @ .tilemapLeft = 17, - @ .tilemapTop = 15, - @ .width = 12, - @ .height = 4, - @ .paletteNum = 15, - @ .baseBlock = 0x0076 - @ } - .byte 0, 0, 5, 8, 2, 13 - .2byte 0x00a6 - @ { - @ .bg = 0, - @ .tilemapLeft = 0, - @ .tilemapTop = 5, - @ .width = 8, - @ .height = 2, - @ .paletteNum = 13, - @ .baseBlock = 0x00a6 - @ } - .byte 0, 7, 5, 8, 2, 13 - .2byte 0x00b6 - @ { - @ .bg = 0, - @ .tilemapLeft = 7, - @ .tilemapTop = 5, - @ .width = 8, - @ .height = 2, - @ .paletteNum = 13, - @ .baseBlock = 0x00b6 - @ } - .byte 0, 0, 10, 8, 2, 13 - .2byte 0x00c6 - @ { - @ .bg = 0, - @ .tilemapLeft = 0, - @ .tilemapTop = 10, - @ .width = 8, - @ .height = 2, - @ .paletteNum = 13, - @ .baseBlock = 0x00c6 - @ } - .byte 0, 7, 10, 8, 2, 13 - .2byte 0x00d6 - @ { - @ .bg = 0, - @ .tilemapLeft = 7, - @ .tilemapTop = 10, - @ .width = 8, - @ .height = 2, - @ .paletteNum = 13, - @ .baseBlock = 0x00d6 - @ } - .byte 0, 0, 15, 8, 2, 13 - .2byte 0x00e6 - @ { - @ .bg = 0, - @ .tilemapLeft = 0, - @ .tilemapTop = 15, - @ .width = 8, - @ .height = 2, - @ .paletteNum = 13, - @ .baseBlock = 0x00e6 - @ } - .byte 0, 7, 15, 8, 2, 13 - .2byte 0x00f6 - @ { - @ .bg = 0, - @ .tilemapLeft = 7, - @ .tilemapTop = 15, - @ .width = 8, - @ .height = 2, - @ .paletteNum = 13, - @ .baseBlock = 0x00f6 - @ } - .byte 0, 15, 5, 8, 2, 13 - .2byte 0x0106 - @ { - @ .bg = 0, - @ .tilemapLeft = 15, - @ .tilemapTop = 5, - @ .width = 8, - @ .height = 2, - @ .paletteNum = 13, - @ .baseBlock = 0x0106 - @ } - .byte 0, 22, 5, 8, 2, 13 - .2byte 0x0116 - @ { - @ .bg = 0, - @ .tilemapLeft = 22, - @ .tilemapTop = 5, - @ .width = 8, - @ .height = 2, - @ .paletteNum = 13, - @ .baseBlock = 0x0116 - @ } - .byte 0, 15, 10, 8, 2, 13 - .2byte 0x0126 - @ { - @ .bg = 0, - @ .tilemapLeft = 15, - @ .tilemapTop = 10, - @ .width = 8, - @ .height = 2, - @ .paletteNum = 13, - @ .baseBlock = 0x0126 - @ } - .byte 0, 22, 10, 8, 2, 13 - .2byte 0x0136 - @ { - @ .bg = 0, - @ .tilemapLeft = 22, - @ .tilemapTop = 10, - @ .width = 8, - @ .height = 2, - @ .paletteNum = 13, - @ .baseBlock = 0x0136 - @ } - .byte 0, 15, 15, 8, 2, 13 - .2byte 0x0146 - @ { - @ .bg = 0, - @ .tilemapLeft = 15, - @ .tilemapTop = 15, - @ .width = 8, - @ .height = 2, - @ .paletteNum = 13, - @ .baseBlock = 0x0146 - @ } - .byte 0, 22, 15, 8, 2, 13 - .2byte 0x0156 - @ { - @ .bg = 0, - @ .tilemapLeft = 22, - @ .tilemapTop = 15, - @ .width = 8, - @ .height = 2, - @ .paletteNum = 13, - @ .baseBlock = 0x0156 - @ } - .byte 0, 2, 5, 14, 2, 13 - .2byte 0x0166 - @ { - @ .bg = 0, - @ .tilemapLeft = 2, - @ .tilemapTop = 5, - @ .width = 14, - @ .height = 2, - @ .paletteNum = 13, - @ .baseBlock = 0x0166 - @ } - .byte 0, 3, 8, 11, 8, 15 - .2byte 0x0182 - @ { - @ .bg = 0, - @ .tilemapLeft = 3, - @ .tilemapTop = 8, - @ .width = 11, - @ .height = 8, - @ .paletteNum = 15, - @ .baseBlock = 0x0182 - @ } - .byte 0, 17, 5, 14, 2, 15 - .2byte 0x01da - @ { - @ .bg = 0, - @ .tilemapLeft = 17, - @ .tilemapTop = 5, - @ .width = 14, - @ .height = 2, - @ .paletteNum = 15, - @ .baseBlock = 0x01da - @ } - .byte 0, 18, 8, 11, 8, 15 - .2byte 0x01f6 - @ { - @ .bg = 0, - @ .tilemapLeft = 18, - @ .tilemapTop = 8, - @ .width = 11, - @ .height = 8, - @ .paletteNum = 15, - @ .baseBlock = 0x01f6 - @ } - .byte 255, 0, 0, 0, 0, 0 - .2byte 0x0000 - @ { - @ .bg = 255, - @ .tilemapLeft = 0, - @ .tilemapTop = 0, - @ .width = 0, - @ .height = 0, - @ .paletteNum = 0, - @ .baseBlock = 0x0000 - @ } - -gUnknown_8261FC4:: @ 8261FC4 - .byte 0, 21, 13, 6, 4, 15 - .2byte 0x024e - @ { - @ .bg = 0, - @ .tilemapLeft = 21, - @ .tilemapTop = 13, - @ .width = 6, - @ .height = 4, - @ .paletteNum = 15, - @ .baseBlock = 0x024e - @ } - - .string "かいめの そうしん$", 13 - .string "かいめの じゅしん$", 13 - .string "ポケモンアイコンセット$", 13 - .string "OBJテキストセット$", 13 - .string "セルセット$", 13 - .string "OBJテキストADD$", 13 - .string "システムメッセージADD$", 13 - .string "はいけいセット$", 13 - -gUnknown_8262034:: @ 8262034 - .string "ヌケニン$" - .string "こうかんせいりつ $" - .string "だめだたらしいよ $" - -gUnknown_8262055:: @ 8262055 - .byte 0x04, 0x03 - .byte 0x13, 0x03 - - .align 2 -gUnknown_826205C:: - .incbin "data/trade/unk_826207C.gbapal" - -gUnknown_826207C:: - .incbin "data/trade/unk_826207C.4bpp" - - .incbin "baserom.gba", 0x26267C, 0x1A00 - -gUnknown_826407C:: @ 826407C - .incbin "data/trade/unk_826407C.bin" - - .incbin "baserom.gba", 0x26487C, 0x120 - -gUnknown_826499C:: - .incbin "data/trade/unk_8264E1C.gbapal" - - .incbin "baserom.gba", 0x2649BC, 0x40 - -gUnknown_82649FC:: - .incbin "data/trade/unk_8264A1C.gbapal" - -gUnknown_8264A1C:: - .incbin "data/trade/unk_8264A1C.4bpp" - -gUnknown_8264C1C:: - .incbin "data/trade/unk_8264C1C.4bpp" - -gUnknown_8264E1C:: - .incbin "data/trade/unk_8264E1C.4bpp" - - .incbin "baserom.gba", 0x264F1C, 0x100 - -gUnknown_826501C:: - .incbin "data/trade/unk_826501C.4bpp" - -gUnknown_826601C:: @ 826601C - .incbin "data/trade/unk_826601C.bin" - -gUnknown_826701C:: @ 826701C - .incbin "data/trade/unk_826701C.8bpp" - -gUnknown_826985C:: @ 826985C - .incbin "data/trade/unk_826985C.bin" - -gUnknown_826995C:: @ 826995C - .incbin "data/trade/unk_826995C.bin" - -gUnknown_8269A5C:: @ 8269A5C - .incbin "data/trade/unk_8269A5C.bin" - -gUnknown_826AA5C:: @ 826AA5C - .incbin "data/trade/unk_826AA5C.bin" - - .align 2 -gUnknown_3379A0Bin:: @ 826BA5C - .incbin "graphics/trade/unknown_3379A0.bin.lz" - -gUnknown_826BB5C:: @ 826BB5C - .incbin "data/trade/unk_826BB5C.gbapal" - -gUnknown_826BD5C:: @ 826BD5C - .incbin "data/trade/unk_826BD5C.gbapal" - -gUnknown_826BF5C:: @ 826BF5C - .incbin "data/trade/unk_826BF5C.gbapal" - -gWirelessSignal4bpp:: @ 826BF7C - .incbin "graphics/trade/wireless_signal.4bpp.lz" - -gUnknown_826C60C:: @ 826C60C - .incbin "data/trade/unk_826C60C.bin.lz" - -gOamData_826CD00:: - .4byte 0x40000100, 0x00000000 - -gAnimCmd_826CD08:: - obj_image_anim_frame 0x00, 3 - obj_image_anim_frame 0x04, 3 - obj_image_anim_frame 0x08, 3 - obj_image_anim_frame 0x0c, 3 - obj_image_anim_frame 0x10, 3 - obj_image_anim_frame 0x14, 3 - obj_image_anim_frame 0x18, 3 - obj_image_anim_frame 0x1c, 3 - obj_image_anim_frame 0x20, 3 - obj_image_anim_frame 0x24, 3 - obj_image_anim_frame 0x28, 3 - obj_image_anim_frame 0x2c, 3 - obj_image_anim_loop 1 - obj_image_anim_frame 0x00, 3 - obj_image_anim_end - -gAnimCmd_826CD44:: - obj_image_anim_frame 0x00, 3 - obj_image_anim_frame 0x04, 3 - obj_image_anim_frame 0x08, 3 - obj_image_anim_frame 0x0c, 3 - obj_image_anim_frame 0x10, 3 - obj_image_anim_frame 0x14, 3 - obj_image_anim_frame 0x18, 3 - obj_image_anim_frame 0x1c, 3 - obj_image_anim_frame 0x20, 3 - obj_image_anim_frame 0x24, 3 - obj_image_anim_frame 0x28, 3 - obj_image_anim_frame 0x2c, 3 - obj_image_anim_loop 2 - obj_image_anim_frame 0x00, 3 - obj_image_anim_end - -gSpriteAnimTable_826CD80:: - .4byte gAnimCmd_826CD08 - .4byte gAnimCmd_826CD44 - -gAffineAnimCmd_826CD88:: - obj_rot_scal_anim_frame 0x0000, 0x0000, 0x00, 0x01 - obj_rot_scal_anim_end - -gAffineAnimCmd_826CD98:: - obj_rot_scal_anim_frame 0xfff8, 0x0000, 0x00, 0x14 - obj_rot_scal_anim_end - -gAffineAnimCmd_826CDA8:: - obj_rot_scal_anim_frame 0x0060, 0x0100, 0x00, 0x00 - obj_rot_scal_anim_frame 0x0000, 0x0000, 0x00, 0x05 - obj_rot_scal_anim_frame 0x0008, 0x0000, 0x00, 0x14 - obj_rot_scal_anim_end - -gSpriteAffineAnimTable_826CDC8:: - .4byte gAffineAnimCmd_826CD88 - .4byte gAffineAnimCmd_826CD98 - .4byte gAffineAnimCmd_826CDA8 - -gUnknown_826CDD4:: @ 826CDD4 - obj_tiles gUnknown_826207C, 0x0600, 5557 - -gUnknown_826CDDC:: @ 826CDDC - obj_pal gUnknown_826205C, 5558 - -gUnknown_826CDE4:: @ 826CDE4 - spr_template 5557, 5558, gOamData_826CD00, gSpriteAnimTable_826CD80, NULL, gSpriteAffineAnimTable_826CDC8, sub_80538BC - -gOamData_826CDFC:: - .4byte 0x80000500, 0x00000400 - -gAnimCmd_826CE04:: - obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - -gSpriteAnimTable_826CE0C:: - .4byte gAnimCmd_826CE04 - -gAffineAnimCmd_826CE10:: - obj_rot_scal_anim_frame -10, -10, 0, 5 - obj_rot_scal_anim_frame 10, 10, 0, 5 - obj_rot_scal_anim_jump 0 - -gSpriteAffineAnimTable_826CE28:: - .4byte gAffineAnimCmd_826CE10 - -gUnknown_826CE2C:: @ 826CE2C - obj_tiles gUnknown_8264A1C, 0x0200, 5550 - -gUnknown_826CE34:: @ 826CE34 - obj_pal gUnknown_82649FC, 5551 - -gUnknown_826CE3C:: @ 826CE3C - obj_pal gUnknown_826499C, 5555 - -gUnknown_826CE44:: @ 826CE44 - spr_template 5550, 5551, gOamData_826CDFC, gSpriteAnimTable_826CE0C, NULL, gSpriteAffineAnimTable_826CE28, sub_804FD24 - -gOamData_826CE5C:: - .4byte 0x80008000, 0x00000400 - -gAnimCmd_826CE64:: - obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - -gAnimCmd_826CE6C:: - obj_image_anim_frame 8, 5, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - -gSpriteAnimTable_826CE74:: - .4byte gAnimCmd_826CE64 - .4byte gAnimCmd_826CE6C - -gUnknown_826CE7C:: @ 826CE7C - obj_tiles gUnknown_8264C1C, 0x0300, 5552 - -gUnknown_826CE84:: @ 826CE84 - spr_template 5552, 5551, gOamData_826CE5C, gSpriteAnimTable_826CE74, NULL, gDummySpriteAffineAnimTable, sub_804FD78 - -gOamData_826CE9C:: - .4byte 0x80008000, 0x00000400 - -gAnimCmd_826CEA4:: - obj_image_anim_frame 0, 10 - obj_image_anim_end - -gSpriteAnimTable_826CEAC:: - .4byte gAnimCmd_826CEA4 - -gUnknown_826CEB0:: @ 826CEB0 - obj_tiles gUnknown_8264E1C, 0x0100, 5554 - -gUnknown_826CEB8:: @ 826CEB8 - spr_template 5554, 5555, gOamData_826CE9C, gSpriteAnimTable_826CEAC, NULL, gDummySpriteAffineAnimTable, sub_804FDB8 - -gOamData_826CED0:: - .4byte 0xc0004000, 0x00000400 - -gAnimCmd_826CED8:: - obj_image_anim_frame 0x00, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 0x20, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 0x40, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 0x60, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 0x40, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 0x20, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 0x00, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_loop 8 - obj_image_anim_end - -gAnimCmd_826CEFC:: - obj_image_anim_frame 0x00, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 0x20, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 0x40, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 0x60, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 0x40, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 0x20, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 0x00, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_loop 2 - obj_image_anim_end - -gSpriteAnimTable_826CF20:: - .4byte gAnimCmd_826CED8 - -gSpriteAnimTable_826CF24:: - .4byte gAnimCmd_826CEFC - -gUnknown_826CF28:: @ 826CF28 - obj_tiles gUnknown_826501C, 0x1000, 5556 - -gUnknown_826CF30:: @ 826CF30 - spr_template 5556, 5555, gOamData_826CED0, gSpriteAnimTable_826CF20, NULL, gDummySpriteAffineAnimTable, sub_804FE00 - -gUnknown_826CF48:: @ 826CF48 - spr_template 5556, 5555, gOamData_826CED0, gSpriteAnimTable_826CF24, NULL, gDummySpriteAffineAnimTable, sub_804FE00 - -gUnknown_826CF60:: @ 826CF60 - .2byte RGB(18, 24, 31) - .2byte RGB(18, 24, 31) - .2byte RGB(18, 24, 31) - .2byte RGB(31, 31, 31) - .2byte RGB(31, 31, 31) - .2byte RGB(31, 31, 31) - .2byte RGB(18, 24, 31) - .2byte RGB(18, 24, 31) - .2byte RGB(18, 24, 31) - .2byte RGB(31, 31, 31) - .2byte RGB(31, 31, 31) - .2byte RGB(31, 31, 31) - -gAffineAnimCmd_826CF78:: - obj_rot_scal_anim_frame 0xFF00, 0x0100, 0x00, 0x00 - obj_rot_scal_anim_jump 0 - -gUnknown_826CF88:: @ 826CF88 - .4byte gAffineAnimCmd_826CF78 - - .include "data/ingame_trades.inc" - -gUnknown_826D1BC:: @ 826D1BC - .byte 0, 2, 15, 26, 4, 0 - .2byte 0x0040 - @ { - @ .bg = 0, - @ .tilemapLeft = 2, - @ .tilemapTop = 15, - @ .width = 26, - @ .height = 4, - @ .paletteNum = 0, - @ .baseBlock = 0x0040 - @ } - .byte 255, 0, 0, 0, 0, 0 - .2byte 0x0000 - @ { - @ .bg = 255, - @ .tilemapLeft = 0, - @ .tilemapTop = 0, - @ .width = 0, - @ .height = 0, - @ .paletteNum = 0, - @ .baseBlock = 0x0000 - @ } - -gUnknown_826D1CC:: @ 826D1CC - .byte 0, 21, 9, 6, 4, 15 - .2byte 0x00bc - @ { - @ .bg = 0, - @ .tilemapLeft = 21, - @ .tilemapTop = 9, - @ .width = 6, - @ .height = 4, - @ .paletteNum = 15, - @ .baseBlock = 0x00bc - @ } - -gUnknown_826D1D4:: @ 826D1D4 - .4byte 0x000001fc - @ { - @ .bg = 0, - @ .charBaseIndex = 3, - @ .mapBaseIndex = 31, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 0, - @ .baseTile = 0x0000 - @ } - .4byte 0x00002051 - @ { - @ .bg = 1, - @ .charBaseIndex = 0, - @ .mapBaseIndex = 5, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 2, - @ .baseTile = 0x0000 - @ } - .4byte 0x00002326 - @ { - @ .bg = 2, - @ .charBaseIndex = 1, - @ .mapBaseIndex = 18, - @ .screenSize = 1, - @ .paletteMode = 0, - @ .priority = 2, - @ .baseTile = 0x0000 - @ } - .4byte 0x00003063 - @ { - @ .bg = 3, - @ .charBaseIndex = 0, - @ .mapBaseIndex = 6, - @ .screenSize = 0, - @ .paletteMode = 0, - @ .priority = 3, - @ .baseTile = 0x0000 - @ } - -gUnknown_826D1E4:: @ 826D1E4 - .byte 0x00 - .byte 0x00 - .byte 0x01 - .byte 0x00 - .byte 0x01 - .byte 0x00 - .byte 0x01 - .byte 0x01 - .byte 0x01 - .byte 0x01 - .byte 0x02 - .byte 0x02 - .byte 0x02 - .byte 0x02 - .byte 0x03 - .byte 0x03 - .byte 0x03 - .byte 0x03 - .byte 0x04 - .byte 0x04 - .byte 0x04 - .byte 0x04 - .byte 0xfc - .byte 0xfc - .byte 0xfc - .byte 0xfd - .byte 0xfd - .byte 0xfd - .byte 0xfd - .byte 0xfe - .byte 0xfe - .byte 0xfe - .byte 0xfe - .byte 0xff - .byte 0xff - .byte 0xff - .byte 0xff - .byte 0x00 - .byte 0xff - .byte 0x00 - .byte 0xff - .byte 0x00 - .byte 0x00 - .byte 0x00 - - .incbin "baserom.gba", 0x26D210, 0x40 - -gUnknown_826D250:: @ 826D250 - .byte 0x00, 0x01 - .byte 0x01, 0x01 - .byte 0x02, 0x01 - .byte 0x03, 0x01 - .byte 0x04, 0x01 - .byte 0x05, 0x02 - .byte 0x06, 0x02 - .byte 0x07, 0x02 - .byte 0x08, 0x02 - .byte 0x09, 0x02 - .byte 0x0a, 0x03 - .byte 0x0b, 0x03 - .byte 0x0c, 0x03 - .byte 0x0d, 0x04 - .byte 0x0e, 0x05 - .byte 0x0f, 0x02 - .byte 0x00, 0x01 - .byte 0x01, 0x01 - .byte 0x02, 0x01 - .byte 0x03, 0x01 - .byte 0x04, 0x01 - .byte 0x05, 0x02 - .byte 0x06, 0x02 - .byte 0x07, 0x02 - .byte 0x08, 0x02 - .byte 0x09, 0x02 - .byte 0x0a, 0x03 - .byte 0x0b, 0x03 - .byte 0x0c, 0x03 - .byte 0x0d, 0x04 - .byte 0x0e, 0x05 - .byte 0x10, 0x01 - .byte 0x10, 0xff - - .align 2, 0 diff --git a/data/trade/unk_8264C1C.png b/data/trade/unk_8264C1C.png Binary files differdeleted file mode 100644 index 3dbbf845c..000000000 --- a/data/trade/unk_8264C1C.png +++ /dev/null diff --git a/data/trade/unk_8264E1C.png b/data/trade/unk_8264E1C.png Binary files differdeleted file mode 100644 index 48b16f034..000000000 --- a/data/trade/unk_8264E1C.png +++ /dev/null diff --git a/data/trade/unk_826501C.png b/data/trade/unk_826501C.png Binary files differdeleted file mode 100644 index a900dea3b..000000000 --- a/data/trade/unk_826501C.png +++ /dev/null diff --git a/data/trade/unk_826701C.png b/data/trade/unk_826701C.png Binary files differdeleted file mode 100644 index 91123d014..000000000 --- a/data/trade/unk_826701C.png +++ /dev/null diff --git a/data/trade/unk_826C60C.bin b/data/trade/unk_826C60C.bin Binary files differdeleted file mode 100644 index 4ce5d18b8..000000000 --- a/data/trade/unk_826C60C.bin +++ /dev/null diff --git a/data/trade/unk_826207C.png b/graphics/trade/ball.png Binary files differindex 01e26de43..97cc86a6f 100644 --- a/data/trade/unk_826207C.png +++ b/graphics/trade/ball.png diff --git a/data/trade/unk_826BF5C.pal b/graphics/trade/black.pal index 4b0812f09..4b0812f09 100644 --- a/data/trade/unk_826BF5C.pal +++ b/graphics/trade/black.pal diff --git a/graphics/trade/buttons.png b/graphics/trade/buttons.png Binary files differnew file mode 100644 index 000000000..568f40a42 --- /dev/null +++ b/graphics/trade/buttons.png diff --git a/data/trade/unk_826407C.bin b/graphics/trade/cable_closeup_map.bin Binary files differindex aad25ed83..aad25ed83 100644 --- a/data/trade/unk_826407C.bin +++ b/graphics/trade/cable_closeup_map.bin diff --git a/graphics/trade/cable_end.png b/graphics/trade/cable_end.png Binary files differnew file mode 100644 index 000000000..1d7828a00 --- /dev/null +++ b/graphics/trade/cable_end.png diff --git a/data/trade/unk_826499C.pal b/graphics/trade/gba.pal index 64a442293..64a442293 100644 --- a/data/trade/unk_826499C.pal +++ b/graphics/trade/gba.pal diff --git a/graphics/trade/gba_affine.png b/graphics/trade/gba_affine.png Binary files differnew file mode 100644 index 000000000..b8c2623c4 --- /dev/null +++ b/graphics/trade/gba_affine.png diff --git a/data/trade/unk_826985C.bin b/graphics/trade/gba_affine_map_cable.bin Binary files differindex 19bab962b..19bab962b 100644 --- a/data/trade/unk_826985C.bin +++ b/graphics/trade/gba_affine_map_cable.bin diff --git a/data/trade/unk_826995C.bin b/graphics/trade/gba_affine_map_wireless.bin Binary files differindex 53a511321..53a511321 100644 --- a/data/trade/unk_826995C.bin +++ b/graphics/trade/gba_affine_map_wireless.bin diff --git a/data/trade/unk_826AA5C.bin b/graphics/trade/gba_map_cable.bin Binary files differindex 80705aef5..80705aef5 100644 --- a/data/trade/unk_826AA5C.bin +++ b/graphics/trade/gba_map_cable.bin diff --git a/data/trade/unk_8269A5C.bin b/graphics/trade/gba_map_wireless.bin Binary files differindex 52f6232fc..52f6232fc 100644 --- a/data/trade/unk_8269A5C.bin +++ b/graphics/trade/gba_map_wireless.bin diff --git a/graphics/trade/gba_screen.png b/graphics/trade/gba_screen.png Binary files differnew file mode 100644 index 000000000..4220e5e0d --- /dev/null +++ b/graphics/trade/gba_screen.png diff --git a/data/trade/unk_8264A1C.png b/graphics/trade/glow1.png Binary files differindex 4197d701c..e223d97ce 100644 --- a/data/trade/unk_8264A1C.png +++ b/graphics/trade/glow1.png diff --git a/graphics/trade/glow2.png b/graphics/trade/glow2.png Binary files differnew file mode 100644 index 000000000..e7729bc84 --- /dev/null +++ b/graphics/trade/glow2.png diff --git a/graphics/trade/menu.pal b/graphics/trade/menu.pal new file mode 100644 index 000000000..98377bbb3 --- /dev/null +++ b/graphics/trade/menu.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +0 0 0 +57 57 172 +98 98 180 +123 106 222 +82 90 213 +82 148 205 +131 115 230 +148 156 189 +205 106 0 +246 148 0 +49 49 90 +255 213 115 +205 74 90 +255 98 32 +205 205 222 +255 255 213 +0 0 0 +0 8 16 +0 16 32 +0 24 49 +0 41 65 +0 49 82 +0 57 98 +0 65 115 +0 82 131 +0 90 148 +0 98 164 +0 106 180 +0 123 197 +0 131 213 +0 139 230 +0 156 255 +0 0 0 +0 8 16 +0 16 32 +0 24 49 +0 41 65 +0 49 82 +0 57 98 +0 65 115 +0 82 131 +0 90 148 +0 98 164 +0 106 180 +0 123 197 +0 131 213 +0 139 230 +0 156 255 diff --git a/graphics/trade/menu.png b/graphics/trade/menu.png Binary files differnew file mode 100644 index 000000000..f06e5b35c --- /dev/null +++ b/graphics/trade/menu.png diff --git a/graphics/trade/menu_mon_box.bin b/graphics/trade/menu_mon_box.bin Binary files differnew file mode 100644 index 000000000..354866137 --- /dev/null +++ b/graphics/trade/menu_mon_box.bin diff --git a/graphics/trade/misc.pal b/graphics/trade/misc.pal new file mode 100644 index 000000000..32fafddfc --- /dev/null +++ b/graphics/trade/misc.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 156 123 +164 123 197 +41 255 115 +0 139 255 +255 255 74 +255 255 255 +106 106 106 +255 156 123 +255 156 123 +255 156 123 +255 156 123 +255 156 123 +255 156 123 +255 156 123 +255 156 123 diff --git a/data/trade/unk_8260834.bin b/graphics/trade/moves_box_map.bin Binary files differindex 123abf716..123abf716 100644 --- a/data/trade/unk_8260834.bin +++ b/graphics/trade/moves_box_map.bin diff --git a/data/trade/unk_8260A32.bin b/graphics/trade/party_box_map.bin Binary files differindex 69304c5cb..69304c5cb 100644 --- a/data/trade/unk_8260A32.bin +++ b/graphics/trade/party_box_map.bin diff --git a/graphics/trade/pokeball.png b/graphics/trade/pokeball.png Binary files differnew file mode 100644 index 000000000..97cc86a6f --- /dev/null +++ b/graphics/trade/pokeball.png diff --git a/graphics/trade/pokeball_symbol.png b/graphics/trade/pokeball_symbol.png Binary files differnew file mode 100644 index 000000000..3b4a30f4f --- /dev/null +++ b/graphics/trade/pokeball_symbol.png diff --git a/graphics/trade/pokeball_symbol_map.bin b/graphics/trade/pokeball_symbol_map.bin Binary files differnew file mode 100644 index 000000000..8355c2f5c --- /dev/null +++ b/graphics/trade/pokeball_symbol_map.bin diff --git a/graphics/trade/shadow.pal b/graphics/trade/shadow.pal new file mode 100644 index 000000000..a4bec6478 --- /dev/null +++ b/graphics/trade/shadow.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 255 255 +222 230 238 +189 205 230 +156 180 222 +0 16 172 +32 32 106 +16 16 90 +0 0 74 +255 255 189 +230 230 164 +205 205 148 +189 180 115 +139 139 90 +74 74 57 +32 32 32 diff --git a/data/trade/unk_826601C.bin b/graphics/trade/shadow_map.bin Binary files differindex 8846e2d7d..8846e2d7d 100644 --- a/data/trade/unk_826601C.bin +++ b/graphics/trade/shadow_map.bin diff --git a/data/trade/unk_8260C30.bin b/graphics/trade/stripes_bg2_map.bin index 22f8f3b71..22f8f3b71 100644 --- a/data/trade/unk_8260C30.bin +++ b/graphics/trade/stripes_bg2_map.bin diff --git a/data/trade/unk_8261430.bin b/graphics/trade/stripes_bg3_map.bin index e4168474a..e4168474a 100644 --- a/data/trade/unk_8261430.bin +++ b/graphics/trade/stripes_bg3_map.bin diff --git a/data/trade/unk_8261CE0.pal b/graphics/trade/text.pal index 40426b71f..40426b71f 100644 --- a/data/trade/unk_8261CE0.pal +++ b/graphics/trade/text.pal diff --git a/graphics/trade/unknown_3308C0.pal b/graphics/trade/unknown_3308C0.pal new file mode 100644 index 000000000..72cf8b7c9 --- /dev/null +++ b/graphics/trade/unknown_3308C0.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +255 57 8 +255 90 8 +255 131 8 +255 172 8 +255 213 8 +255 255 8 +255 255 131 +255 255 255 +255 255 0 +65 0 0 +115 16 0 +172 32 0 +230 57 8 +0 0 0 +0 0 0 diff --git a/graphics/trade/unknown_338EA4.pal b/graphics/trade/unknown_338EA4.pal new file mode 100644 index 000000000..346db3df8 --- /dev/null +++ b/graphics/trade/unknown_338EA4.pal @@ -0,0 +1,15 @@ +JASC-PAL +0100 +12 +148 197 255 +148 197 255 +148 197 255 +255 255 255 +255 255 255 +255 255 255 +148 197 255 +148 197 255 +148 197 255 +255 255 255 +255 255 255 +255 255 255 diff --git a/graphics/trade/unknown_DDB444.pal b/graphics/trade/unknown_DDB444.pal new file mode 100644 index 000000000..bb74b34a2 --- /dev/null +++ b/graphics/trade/unknown_DDB444.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +123 131 222 +98 98 180 +123 106 222 +106 172 238 +82 148 205 +180 189 230 +148 156 189 +205 106 0 +255 189 49 +246 148 0 +255 213 115 +205 74 90 +255 98 32 +205 205 222 +255 98 32 diff --git a/graphics/trade/unknown_DDCF04.bin b/graphics/trade/unknown_DDCF04.bin Binary files differnew file mode 100644 index 000000000..46218245f --- /dev/null +++ b/graphics/trade/unknown_DDCF04.bin diff --git a/data/trade/unk_826BD5C.pal b/graphics/trade/wireless_signal_receive.pal index 218390aa2..218390aa2 100644 --- a/data/trade/unk_826BD5C.pal +++ b/graphics/trade/wireless_signal_receive.pal diff --git a/data/trade/unk_826BB5C.pal b/graphics/trade/wireless_signal_send.pal index a5da8a543..a5da8a543 100644 --- a/data/trade/unk_826BB5C.pal +++ b/graphics/trade/wireless_signal_send.pal diff --git a/graphics/unused/unused_DDCEE4.bin b/graphics/unused/unused_DDCEE4.bin Binary files differnew file mode 100644 index 000000000..481183cbd --- /dev/null +++ b/graphics/unused/unused_DDCEE4.bin diff --git a/include/berry_powder.h b/include/berry_powder.h index f0e77c44b..d944ae44d 100644 --- a/include/berry_powder.h +++ b/include/berry_powder.h @@ -3,5 +3,6 @@ u32 GetBerryPowder(void); void SetBerryPowder(u32 *powder, u32 amount); +void sub_815EE6C(u32 newKey); #endif //GUARD_BERRY_POWDER_H diff --git a/include/constants/flags.h b/include/constants/flags.h index 082e12f87..bd356064c 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1,7 +1,7 @@ #ifndef GUARD_CONSTANTS_FLAGS_H #define GUARD_CONSTANTS_FLAGS_H -// TODO: Get correct names and numbers +#include "constants/trainers.h" #define FLAG_TEMP_1 0x001 #define FLAG_TEMP_2 0x002 @@ -1309,10 +1309,8 @@ #define FLAG_TRAINER_FLAG_START 0x500 -#define TRAINERS_FLAG_NO 0x2E7 // 743 -#define TRAINER_FLAGS_WORDS 0x300 - -#define SYS_FLAGS (FLAG_TRAINER_FLAG_START + TRAINER_FLAGS_WORDS) // 0x800 +// Vanilla: SYS_FLAGS = 0x800 +#define SYS_FLAGS (FLAG_TRAINER_FLAG_START + ((NUM_TRAINERS) + 31) / 32 * 32) // SYSTEM FLAGS diff --git a/include/constants/region_map.h b/include/constants/region_map.h index 527acf2c9..0957a72ee 100644 --- a/include/constants/region_map.h +++ b/include/constants/region_map.h @@ -200,4 +200,6 @@ #define MAPSEC_SPECIAL_AREA 0xC4 #define MAPSEC_NONE 0xC5 +#define MAPSEC_IN_GAME_TRADE 0xFE + #endif //GUARD_CONSTANTS_REGION_MAP_H diff --git a/include/decompress.h b/include/decompress.h index 03080fe48..3f3a02d7b 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -23,9 +23,7 @@ void DecompressPicFromTable_2(const struct CompressedSpriteSheet *src, void* buf void DecompressPicFromTable_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void* buffer, s32 species); void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality); -void HandleLoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality); void HandleLoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality); -void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality); void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic); void LoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic); diff --git a/include/gba/defines.h b/include/gba/defines.h index 65561f10a..8c92d7b64 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -76,6 +76,7 @@ #define RGB_BLACK RGB(0, 0, 0) #define RGB_WHITE RGB(31, 31, 31) +#define RGB_WHITEALPHA (0xFFFF) #define NAKED __attribute__((naked)) #define UNUSED __attribute__((unused)) diff --git a/include/graphics.h b/include/graphics.h index 638351be4..56a51e67c 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4214,4 +4214,12 @@ extern const u8 gMonIcon_Unown_ExclamationMark[]; extern const u8 gMonIcon_Unown_QuestionMark[]; extern const u8 gMonIcon_QuestionMark[]; +// trade +extern const u16 gTradeMenu_Pal[]; +extern const u16 gTradeButtons_Pal[]; +extern const u16 gTradeMenu_Gfx[]; +extern const u16 gUnknown_8E9E9FC[]; +extern const u16 gTradeButtons_Gfx[]; +extern const u16 gTradeMenuMonBox_Tilemap[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/international_string_util.h b/include/international_string_util.h deleted file mode 100644 index 2b922676d..000000000 --- a/include/international_string_util.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef GUARD_INTERNATIONAL_STRING_UTIL_H -#define GUARD_INTERNATIONAL_STRING_UTIL_H - -#include "global.h" - -#include "menu.h" - -void sub_81DB52C(const u8 *src); -void TVShowConvertInternationalString(u8 *dest, const u8 *src, u8 language); -s32 GetStringCenterAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth); -s32 GetStringRightAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth); -s32 GetStringCenterAlignXOffsetWithLetterSpacing(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing); -s32 GetStringWidthDifference(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing); -s32 GetMaxWidthInMenuTable(const struct MenuAction *str, s32 arg1); -s32 sub_81DB3D8(const struct MenuAction *str, u8* arg1, s32 arg2); -// sub_81DB41C -// CopyMonCategoryText -// sub_81DB494 -// sub_81DB4DC -// sub_81DB554 -// sub_81DB5AC -u32 sub_81DB604(const u8 *); -// sub_81DB620 - -#endif // GUARD_INTERNATIONAL_STRING_UTIL_H diff --git a/include/item.h b/include/item.h index dd6271d13..ccc9cd3bb 100644 --- a/include/item.h +++ b/include/item.h @@ -72,10 +72,12 @@ u16 BagGetQuantityByPocketPosition(u8 pocketId, u16 itemId); bool8 itemid_is_unique(u16 itemId); void BagPocketCompaction(struct ItemSlot * slots, u8 capacity); u16 GetPcItemQuantity(u16 *); +void SetBagPocketsPointers(void); void ItemPcCompaction(void); void RemoveItemFromPC(u16 itemId, u16 quantity); void SortAndCompactBagPocket(struct BagPocket * pocket); u8 CountItemsInPC(void); +void ApplyNewEncryptionKeyToBagItems_(u32 newKey); #endif // GUARD_ITEM_H diff --git a/include/link.h b/include/link.h index 7c4b871de..9465f0404 100644 --- a/include/link.h +++ b/include/link.h @@ -181,7 +181,7 @@ extern u32 gLinkStatus; extern u16 gBlockRecvBuffer[MAX_RFU_PLAYERS][BLOCK_BUFFER_SIZE / 2]; extern u16 gSendCmd[CMD_LENGTH]; extern u8 gShouldAdvanceLinkState; -extern struct LinkPlayer gLinkPlayers[]; +extern struct LinkPlayer gLinkPlayers[MAX_RFU_PLAYERS]; extern u16 word_3002910[]; extern bool8 gReceivedRemoteLinkPlayers; extern bool8 gLinkVSyncDisabled; @@ -212,6 +212,7 @@ u8 GetBlockReceivedStatus(void); void ResetBlockReceivedFlags(void); void ResetBlockReceivedFlag(u8); void SetLinkDebugValues(u32, u32); +u8 GetSavedPlayerCount(void); u8 GetLinkPlayerCount_2(void); bool8 IsLinkMaster(void); void CB2_LinkError(void); @@ -232,10 +233,10 @@ bool8 sub_800A520(void); bool8 sub_8010500(void); void sub_800DFB4(u8, u8); void sub_800AB9C(void); -void sub_800B488(void); +void sub_800B1F4(void); void sub_8009734(void); void sub_800A620(void); -void sub_8011BD0(void); +void sub_80FBB4C(void); u8 sub_800ABAC(void); u8 sub_800ABBC(void); void sub_800AAC0(void); @@ -257,5 +258,6 @@ void ClearLinkCallback_2(void); void sub_80FA42C(void); void sub_800B284(struct LinkPlayer * linkPlayer); bool8 IsWirelessAdapterConnected(void); +bool8 sub_800A474(u8 a0); #endif // GUARD_LINK_H diff --git a/include/link_rfu.h b/include/link_rfu.h index f5aa682e6..6e6e5f7a3 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -39,6 +39,8 @@ bool32 sub_80FAEF0(void); bool32 IsRfuRecvQueueEmpty(void); u32 GetRfuRecvQueueLength(void); void sub_80F8DC0(void); +void sub_80FBB20(void); +bool8 sub_80FA484(bool32 a0); void var_800D_set_xB(void); #endif //GUARD_LINK_RFU_H diff --git a/include/load_save.h b/include/load_save.h index 2406b5f03..6162c30b9 100644 --- a/include/load_save.h +++ b/include/load_save.h @@ -26,7 +26,7 @@ void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey); void ApplyNewEncryptionKeyToBagItems(u32 encryptionKey); void ApplyNewEncryptionKeyToWord(u32 * word, u32 encryptionKey); void ApplyNewEncryptionKeyToHword(u16 * hword, u32 encryptionKey); -void sav2_gender2_inplace_and_xFE(void); -void sub_804C1C0(void); +void ClearContinueGameWarpStatus2(void); +void SetContinueGameWarpStatusToDynamicWarp(void); #endif // GUARD_LOAD_SAVE_H diff --git a/include/mevent.h b/include/mevent.h index 98d184f60..6b67aa27c 100644 --- a/include/mevent.h +++ b/include/mevent.h @@ -68,5 +68,6 @@ bool32 WonderCard_Test_Unk_08_6(void); u32 MENews_GetInput(u16 input); void sub_8143D24(void); u16 sub_81445C0(u32 command); +void sub_8144714(u32 a0, u32 a1); #endif //GUARD_MEVENT_H diff --git a/include/overworld.h b/include/overworld.h index 805ddc8a0..36c890eb5 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -142,5 +142,8 @@ bool32 sub_8058318(void); void CB2_ReturnToStartMenu(void); void CB2_WhiteOut(void); +void c2_8056854(void); +void sub_8054F38(u32 newKey); +void sub_8055778(int); #endif //GUARD_OVERWORLD_H diff --git a/include/party_menu.h b/include/party_menu.h index 53731bee6..c07371a5d 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -82,9 +82,11 @@ void OpenPartyMenuInBattle(u8 arg); void sub_8127EC4(u8 battlerId, u8 unk, u8 arrayIndex); bool8 IsMultiBattle(void); void sub_8126EDC(void); +void sub_812256C(u8 *partyCount, u8 (*icons)[6], u8 side); void PartyMenuInit_FromPlayerPc(void); void CB2_PartyMenuFromStartMenu(void); void sub_8128198(void); void sub_8127FF4(u8 slot, u8 slot2); +void LoadHeldItemIcons(void); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokeball.h b/include/pokeball.h index ee0478eab..884ded22e 100644 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -25,7 +25,7 @@ enum u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow); void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h); -u8 sub_804BB98(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h); +u8 CreateTradePokeballSprite(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h); u8 sub_807671C(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h); void sub_8076918(u8 bank); void DoHitAnimHealthboxEffect(u8 bank); diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index 52d374041..cfc3c18f0 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -8,17 +8,20 @@ const u8 *GetMonIconTiles(u16 iconSpecies, bool32 extra); const u16 *GetValidMonIconPalettePtr(u16 speciesId); u16 sub_80D2E84(u16 speciesId); void sub_80D2F68(u16 iconId); -u8 sub_80D2D78(u16 iconId, void callback(struct Sprite *), u16 x, u16 y, u16 a4, u8 a5); +u8 sub_80D2D78(u16 iconId, SpriteCallback callback, u16 x, u16 y, u16 a4, u8 a5); void sub_80D2FF0(u16 iconId); -void sub_80D2EF8(struct Sprite *sprite); +void sub_80D2EF8(struct Sprite * sprite); void LoadMonIconPalettes(void); void FreeMonIconPalettes(void); u16 MailSpeciesToIconSpecies(u16); -u8 CreateMonIcon_HandleDeoxys(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, bool32 extra); +u8 CreateMonIcon_HandleDeoxys(u16 species, SpriteCallback callback, s16 x, s16 y, u8 subpriority, bool32 extra); void DestroyMonIcon(struct Sprite *); u16 GetUnownLetterByPersonality(u32 personality); -u8 UpdateMonIconFrame(struct Sprite *sprite); +void SpriteCB_MonIcon(struct Sprite *); +u8 CreateMonIcon(u16 species, SpriteCallback callback, s16 x, s16 y, u8 subpriority, u32 personality, bool32 extra); +u8 UpdateMonIconFrame(struct Sprite * sprite); void LoadMonIconPalette(u16 iconId); void FreeMonIconPalette(u16 iconId); +void MonIcon_SetAnim(struct Sprite * sprite, u8 animNum); #endif // GUARD_POKEMON_ICON_H diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index 6790fb775..81f50e1e9 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -16,5 +16,6 @@ u8 * GetBoxNamePtr(u8 boxId); void sub_808CE60(void); void ResetPokemonStorageSystem(void); u8 StorageGetCurrentBox(void); +void PSS_RenderTextToVramViaBuffer(const u8 *name, u8 *a1, u8 a2, u8 a3, u8 *buffer, u8 a5); #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h index 7b250b647..b800e3d30 100644 --- a/include/pokemon_summary_screen.h +++ b/include/pokemon_summary_screen.h @@ -8,7 +8,6 @@ extern u8 gLastViewedMonIndex; extern const u8 *const gMoveDescriptionPointers[]; extern const u8 *const gNatureNamePointers[]; -void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)); void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16); void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)); u8 sub_8138B2C(void); @@ -33,4 +32,7 @@ enum PokemonSummaryScreenPage PSS_PAGE_CONTEST_MOVES, }; +s32 sub_8138B20(void); +void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, void (*callback)(void), u8 a4); + #endif // GUARD_POKEMON_SUMMARY_SCREEN_H diff --git a/include/quest_log.h b/include/quest_log.h index 8165486ce..3f6c94de5 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -46,6 +46,7 @@ void sub_811231C(void); void sub_81139BC(void); void *QuestLogGetFlagOrVarPtr(bool8 isFlag, u16 idx); void QuestLogSetFlagOrVar(bool8 isFlag, u16 idx, u16 value); +void sub_8110840(void *oldSave); extern u8 gUnknown_203ADFA; diff --git a/include/save_failed_screen.h b/include/save_failed_screen.h new file mode 100644 index 000000000..feffa2014 --- /dev/null +++ b/include/save_failed_screen.h @@ -0,0 +1,6 @@ +#ifndef GUARD_SAVE_FAILED_SCREEN_H +#define GUARD_SAVE_FAILED_SCREEN_H + +extern void DoSaveFailedScreen(u8 saveType); // save_failed_screen + +#endif //GUARD_SAVE_FAILED_SCREEN_H diff --git a/include/strings.h b/include/strings.h index 9304b225d..7231755c5 100644 --- a/include/strings.h +++ b/include/strings.h @@ -660,4 +660,30 @@ extern const u8 gText_FiveIsland[]; extern const u8 gText_SixIsland[]; extern const u8 gText_SevenIsland[]; +// trade +extern const u8 gUnknown_841E0A5[]; +extern const u8 gText_XWillBeSentToY[]; +extern const u8 gText_ByeByeVar1[]; +extern const u8 gText_XSentOverY[]; +extern const u8 gText_TakeGoodCareOfX[]; +extern const u8 gUnknown_841E325[]; +extern const u8 gTradeText_Cancel[]; +extern const u8 gTradeText_ChooseAPokemon[]; +extern const u8 gTradeText_Summary[]; +extern const u8 gTradeText_Trade[]; +extern const u8 gTradeText_CancelTrade[]; +extern const u8 gTradeText_PressBButtonToExit[]; +extern const u8 gUnknown_841E10A[]; +extern const u8 gUnknown_841E112[]; +extern const u8 gUnknown_841E118[]; +extern const u8 gUnknown_841E145[]; +extern const u8 gUnknown_841E16B[]; +extern const u8 gUnknown_8417094[]; +extern const u8 gUnknown_841E199[]; +extern const u8 gUnknown_841E1C5[]; +extern const u8 gUnknown_84170BC[]; +extern const u8 gUnknown_84170E0[]; +extern const u8 gUnknown_84170FC[]; +extern const u8 gUnknown_841E09F[]; + #endif //GUARD_STRINGS_H diff --git a/include/trade.h b/include/trade.h index 02ed7d8c4..257357053 100644 --- a/include/trade.h +++ b/include/trade.h @@ -1,6 +1,11 @@ #ifndef GUARD_TRADE_H #define GUARD_TRADE_H +extern struct MailStruct gLinkPartnerMail[6]; +extern u8 gSelectedTradeMonPositions[2]; + +extern const u16 gUnknown_826601C[]; +void CB2_ReturnFromLinkTrade(void); s32 sub_804FB34(void); #endif //GUARD_TRADE_H diff --git a/include/trade_scene.h b/include/trade_scene.h new file mode 100644 index 000000000..13cb1a56c --- /dev/null +++ b/include/trade_scene.h @@ -0,0 +1,17 @@ +#ifndef GUARD_TRADE_SCENE_H +#define GUARD_TRADE_SCENE_H + +void CB2_InitTradeAnim_LinkTrade(void); +void CreateInGameTradePokemon(void); +void DoInGameTradeScene(void); +void DrawTextOnTradeWindow(u8 windowId, const u8 *str, s8 speed); +u16 GetInGameTradeSpeciesInfo(void); +u16 GetTradeSpecies(void); +void sub_805049C(void); +void sub_80504B0(void); +void LoadTradeAnimGfx(void); + +extern const u16 gUnknown_826601C[]; +extern const struct WindowTemplate gUnknown_826D1CC; + +#endif //GUARD_TRADE_SCENE_H diff --git a/include/util.h b/include/util.h index 3884ab21c..ef1c15faa 100644 --- a/include/util.h +++ b/include/util.h @@ -14,7 +14,8 @@ void LoadWordFromTwoHalfwords(u16 *, u32 *); int CountTrailingZeroBits(u32 value); u16 CalcCRC16(const u8 *data, u32 length); u16 CalcCRC16WithTable(const u8 *data, u32 length); -u32 CalcByteArraySum(const u8* data, u32 length); +u32 CalcByteArraySum(const u8 *data, u32 length); void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor); +void DoBgAffineSet(struct BgAffineDstData * dest, u32 texX, u32 texY, s16 srcX, s16 srcY, s16 sx, s16 sy, u16 alpha); #endif // GUARD_UTIL_H diff --git a/ld_script.txt b/ld_script.txt index 2b2dff40e..f8e33aa9f 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -85,7 +85,8 @@ SECTIONS { asm/smokescreen.o(.text); asm/pokeball.o(.text); src/load_save.o(.text); - asm/trade.o(.text); + src/trade.o(.text); + src/trade_scene.o(.text); src/play_time.o(.text); src/new_game.o(.text); asm/overworld.o(.text); @@ -399,7 +400,8 @@ SECTIONS { src/battle_gfx_sfx_util.o(.rodata); data/battle_interface.o(.rodata); data/pokeball.o(.rodata); - data/trade.o(.rodata); + src/trade.o(.rodata); + src/trade_scene.o(.rodata); data/overworld.o(.rodata); data/tilesets.o(.rodata); data/maps.o(.rodata); diff --git a/src/battle_main.c b/src/battle_main.c index 1b1614a5a..9104bc381 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -20,7 +20,6 @@ #include "graphics.h" #include "gpu_regs.h" #include "help_system.h" -#include "international_string_util.h" #include "item.h" #include "link.h" #include "link_rfu.h" diff --git a/src/data/ingame_trades.h b/src/data/ingame_trades.h new file mode 100644 index 000000000..59304242b --- /dev/null +++ b/src/data/ingame_trades.h @@ -0,0 +1,144 @@ +static const struct InGameTrade sInGameTrades[] = { + { + .nickname = _("MIMIEN"), + .species = SPECIES_MR_MIME, + .ivs = {20, 15, 17, 24, 23, 22}, + .abilityNum = 0, + .otId = 1985, + .conditions = {5, 5, 5, 30, 5}, + .personality = 0x00009cae, + .heldItem = ITEM_NONE, + .mailNum = 255, + .otName = _("REYLEY"), + .otGender = MALE, + .sheen = 10, + .requestedSpecies = SPECIES_ABRA + }, { + .nickname = _("ZYNX"), + .species = SPECIES_JYNX, + .ivs = {18, 17, 18, 22, 25, 21}, + .abilityNum = 0, + .otId = 36728, + .conditions = {5, 30, 5, 5, 5}, + .personality = 0x498a2e1d, + .heldItem = ITEM_FAB_MAIL, + .mailNum = 0, + .otName = _("DONTAE"), + .otGender = MALE, + .sheen = 10, + .requestedSpecies = SPECIES_POLIWHIRL + }, { + .nickname = _("MS. NIDO"), + .species = SPECIES_NIDORAN_F, + .ivs = {22, 18, 25, 19, 15, 22}, + .abilityNum = 0, + .otId = 63184, + .conditions = {5, 5, 5, 5, 30}, + .personality = 0x4c970b89, + .heldItem = ITEM_TINY_MUSHROOM, + .mailNum = 255, + .otName = _("SAIGE"), + .otGender = FEMALE, + .sheen = 10, + .requestedSpecies = SPECIES_NIDORAN_M + }, { + .nickname = _("CH'DING"), + .species = SPECIES_FARFETCHD, + .ivs = {20, 25, 21, 24, 15, 20}, + .abilityNum = 0, + .otId = 8810, + .conditions = {30, 5, 5, 5, 5}, + .personality = 0x151943d7, + .heldItem = ITEM_STICK, + .mailNum = 255, + .otName = _("ELYSSA"), + .otGender = MALE, + .sheen = 10, + .requestedSpecies = SPECIES_SPEAROW + }, { + .nickname = _("NINA"), + .species = SPECIES_NIDORINA, + .ivs = {22, 25, 18, 19, 22, 15}, + .abilityNum = 0, + .otId = 13637, + .conditions = {5, 5, 30, 5, 5}, + .personality = 0x00eeca15, + .heldItem = ITEM_NONE, + .mailNum = 255, + .otName = _("TURNER"), + .otGender = MALE, + .sheen = 10, + .requestedSpecies = SPECIES_NIDORINO + }, { + .nickname = _("MARC"), + .species = SPECIES_LICKITUNG, + .ivs = {24, 19, 21, 15, 23, 21}, + .abilityNum = 0, + .otId = 1239, + .conditions = {5, 5, 5, 5, 30}, + .personality = 0x451308ab, + .heldItem = ITEM_NONE, + .mailNum = 255, + .otName = _("HADEN"), + .otGender = MALE, + .sheen = 10, + .requestedSpecies = SPECIES_GOLDUCK + }, { + .nickname = _("ESPHERE"), + .species = SPECIES_ELECTRODE, + .ivs = {19, 16, 18, 25, 25, 19}, + .abilityNum = 1, + .otId = 50298, + .conditions = {30, 5, 5, 5, 5}, + .personality = 0x06341016, + .heldItem = ITEM_NONE, + .mailNum = 255, + .otName = _("CLIFTON"), + .otGender = MALE, + .sheen = 10, + .requestedSpecies = SPECIES_RAICHU + }, { + .nickname = _("TANGENY"), + .species = SPECIES_TANGELA, + .ivs = {22, 17, 25, 16, 23, 20}, + .abilityNum = 0, + .otId = 60042, + .conditions = {5, 5, 30, 5, 5}, + .personality = 0x5c77ecfa, + .heldItem = ITEM_STARDUST, + .mailNum = 255, + .otName = _("NORMA"), + .otGender = FEMALE, + .sheen = 10, + .requestedSpecies = SPECIES_VENONAT + }, + { + .nickname = _("SEELOR"), + .species = SPECIES_SEEL, + .ivs = {24, 15, 22, 16, 23, 22}, + .abilityNum = 0, + .otId = 9853, + .conditions = {5, 5, 5, 5, 30}, + .personality = 0x482cac89, + .heldItem = ITEM_NONE, + .mailNum = 255, + .otName = _("GARETT"), + .otGender = MALE, + .sheen = 10, + .requestedSpecies = SPECIES_PONYTA + } +}; + +static const u16 sInGameTradeMailMessages[][10] = { + { + EC_WORD_THAT_S, + EC_WORD_A, + EC_WORD_HEALTHY, + EC_POKEMON2(JYNX), + EC_WORD_EXCL, + EC_WORD_BE, + EC_WORD_KIND, + EC_WORD_TO, + EC_WORD_IT + } +}; diff --git a/src/daycare.c b/src/daycare.c index c016bbc38..f034bc220 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -14,7 +14,6 @@ #include "text.h" #include "menu.h" #include "new_menu_helpers.h" -#include "international_string_util.h" #include "script.h" #include "strings.h" #include "task.h" @@ -24,25 +23,18 @@ #include "overworld.h" #include "pokedex.h" #include "decompress.h" -#include "task.h" #include "palette.h" -#include "main.h" #include "sound.h" #include "constants/songs.h" #include "text_window.h" #include "trig.h" #include "malloc.h" -#include "dma3.h" #include "gpu_regs.h" #include "bg.h" #include "m4a.h" #include "graphics.h" -#include "constants/abilities.h" -#include "constants/species.h" #include "scanline_effect.h" -#include "field_weather.h" #include "naming_screen.h" -#include "field_screen_effect.h" #include "help_system.h" #include "field_fadetransition.h" diff --git a/src/load_save.c b/src/load_save.c index 0a7bbbfc5..da469d4e6 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -7,13 +7,10 @@ #include "malloc.h" #include "item.h" #include "save_location.h" - -extern void SetBagPocketsPointers(void); -extern void sub_8110840(void *oldSave); -extern void sub_8055778(int); -extern void sub_8054F38(u32 newKey); -extern void ApplyNewEncryptionKeyToBagItems_(u32 newKey); -extern void sub_815EE6C(u32 newKey); +#include "berry_powder.h" +#include "item.h" +#include "overworld.h" +#include "quest_log.h" #define SAVEBLOCK_MOVE_RANGE 128 @@ -146,13 +143,13 @@ void sub_804C1AC(void) gSaveBlock2Ptr->specialSaveWarpFlags |= CONTINUE_GAME_WARP; } -void sub_804C1C0(void) +void SetContinueGameWarpStatusToDynamicWarp(void) { sub_8055778(0); gSaveBlock2Ptr->specialSaveWarpFlags |= CONTINUE_GAME_WARP; } -void sav2_gender2_inplace_and_xFE(void) +void ClearContinueGameWarpStatus2(void) { gSaveBlock2Ptr->specialSaveWarpFlags &= ~CONTINUE_GAME_WARP; } diff --git a/src/oak_speech.c b/src/oak_speech.c index c39ff262e..3f946e13f 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -977,7 +977,7 @@ static void Task_OakSpeech15(u8 taskId) { ClearDialogWindowAndFrame(0, 1); spriteId = gTasks[taskId].data[4]; - gTasks[taskId].data[6] = sub_804BB98(spriteId, gSprites[spriteId].oam.paletteNum, 0x64, 0x42, 0, 0, 32, 0xFFFF1F3F); + gTasks[taskId].data[6] = CreateTradePokeballSprite(spriteId, gSprites[spriteId].oam.paletteNum, 0x64, 0x42, 0, 0, 32, 0xFFFF1F3F); gTasks[taskId].data[3] = 48; gTasks[taskId].data[0] = 64; gTasks[taskId].func = Task_OakSpeech16; diff --git a/src/pokemon.c b/src/pokemon.c index 17f28c7a6..fb7a8c626 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -64,9 +64,11 @@ struct OakSpeechNidoranFStruct struct SpriteFrameImage *frameImages; }; -// TODO: move sLearningMoveTableID, gPlayerPartyCount, gEnemyPartyCount, -// gEnemyParty, gPlayerParty here after resolving symbol ref in between. -extern u8 sLearningMoveTableID; +static EWRAM_DATA u8 sLearningMoveTableID = 0; +EWRAM_DATA u8 gPlayerPartyCount = 0; +EWRAM_DATA u8 gEnemyPartyCount = 0; +EWRAM_DATA struct Pokemon gEnemyParty[PARTY_SIZE] = {}; +EWRAM_DATA struct Pokemon gPlayerParty[PARTY_SIZE] = {}; EWRAM_DATA struct SpriteTemplate gMultiuseSpriteTemplate = {0}; static EWRAM_DATA struct OakSpeechNidoranFStruct *sOakSpeechNidoranResources = NULL; diff --git a/src/random.c b/src/random.c index 54dae0824..f6c49971d 100644 --- a/src/random.c +++ b/src/random.c @@ -8,11 +8,11 @@ u32 gRngValue; u16 Random(void) { - gRngValue = 1103515245 * gRngValue + 24691; - return gRngValue >> 16; + gRngValue = 1103515245 * gRngValue + 24691; + return gRngValue >> 16; } void SeedRng(u16 seed) { - gRngValue = seed; + gRngValue = seed; } diff --git a/src/save.c b/src/save.c index 45f5fc6f0..57364b10b 100644 --- a/src/save.c +++ b/src/save.c @@ -6,6 +6,8 @@ #include "load_save.h" #include "task.h" #include "link.h" +#include "save_failed_screen.h" +#include "fieldmap.h" #include "gba/flash_internal.h" #define FILE_SIGNATURE 0x08012025 // signature value to determine if a sector is in use @@ -66,13 +68,6 @@ const struct SaveSectionOffsets gSaveSectionOffsets[] = SAVEBLOCK_CHUNK(struct PokemonStorage, 8) }; -extern void DoSaveFailedScreen(u8 saveType); // save_failed_screen -extern void sub_800AB9C(void); // link -extern bool8 IsLinkTaskFinished(void); // link -extern void save_serialize_map(void); // fieldmap -extern void sub_804C1C0(void); // load_save -extern void sav2_gender2_inplace_and_xFE(void); // load_save - // Sector num to begin writing save data. Sectors are rotated each time the game is saved. (possibly to avoid wear on flash memory?) u16 gFirstSaveSector; u32 gPrevSaveCounter; @@ -872,7 +867,7 @@ void sub_80DA634(u8 taskId) } break; case 3: - sub_804C1C0(); + SetContinueGameWarpStatusToDynamicWarp(); sub_80DA3AC(); gTasks[taskId].data[0] = 4; break; @@ -894,7 +889,7 @@ void sub_80DA634(u8 taskId) gTasks[taskId].data[0] = 7; break; case 7: - sav2_gender2_inplace_and_xFE(); + ClearContinueGameWarpStatus2(); sub_800AB9C(); gTasks[taskId].data[0] = 8; break; diff --git a/src/start_menu.c b/src/start_menu.c index dddb5f44e..4a4fe52e3 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -923,14 +923,14 @@ static void task50_after_link_battle_save(u8 taskId) data[0] = 1; break; case 1: - sub_804C1C0(); + SetContinueGameWarpStatusToDynamicWarp(); sub_80DA45C(); data[0] = 2; break; case 2: if (sub_80DA4A0()) { - sav2_gender2_inplace_and_xFE(); + ClearContinueGameWarpStatus2(); data[0] = 3; } break; diff --git a/src/trade.c b/src/trade.c new file mode 100644 index 000000000..5151ecedd --- /dev/null +++ b/src/trade.c @@ -0,0 +1,4502 @@ +#include "global.h" +#include "palette.h" +#include "task.h" +#include "decompress.h" +#include "gpu_regs.h" +#include "malloc.h" +#include "bg.h" +#include "text.h" +#include "window.h" +#include "librfu.h" +#include "text_window.h" +#include "evolution_scene.h" +#include "pokemon_icon.h" +#include "pokedex.h" +#include "mail_data.h" +#include "graphics.h" +#include "link.h" +#include "random.h" +#include "save.h" +#include "load_save.h" +#include "quest_log.h" +#include "field_fadetransition.h" +#include "mevent.h" +#include "help_system.h" +#include "link_rfu.h" +#include "cable_club.h" +#include "data.h" +#include "sound.h" +#include "string_util.h" +#include "strings.h" +#include "menu.h" +#include "overworld.h" +#include "battle_anim.h" +#include "pokeball.h" +#include "party_menu.h" +#include "util.h" +#include "daycare.h" +#include "script.h" +#include "event_data.h" +#include "battle_interface.h" +#include "pokemon_summary_screen.h" +#include "pokemon_storage_system.h" +#include "new_menu_helpers.h" +#include "trade.h" +#include "trade_scene.h" +#include "constants/species.h" +#include "constants/items.h" +#include "constants/easy_chat.h" +#include "constants/songs.h" +#include "constants/region_map.h" +#include "constants/moves.h" + +struct TradeMenuResources +{ + /*0x0000*/ u8 unk_0; + /*0x0001*/ u8 unk_1; + /*0x0002*/ u8 filler_2[0x28 - 2]; + /*0x0028*/ u8 partyIcons[2][PARTY_SIZE]; + /*0x0034*/ u8 tradeMenuCursorSpriteIdx; + /*0x0035*/ u8 tradeMenuCursorPosition; + /*0x0036*/ u8 partyCounts[2]; + /*0x0038*/ bool8 tradeMenuOptionsActive[13]; + /*0x0045*/ u8 unk_45[2][PARTY_SIZE]; + /*0x0051*/ u8 unk_51[2][PARTY_SIZE]; + /*0x005D*/ u8 unk_5D[2][PARTY_SIZE]; + /*0x0069*/ u8 unk_69; + /*0x006A*/ u8 filler_6A[0x6F - 0x6A]; + /*0x006F*/ u8 unk_6F; + /*0x0070*/ u8 unk_70; + /*0x0071*/ u8 filler_71; + /*0x0072*/ u16 unk_72; + /*0x0074*/ u8 unk_74[2]; + /*0x0076*/ u8 unk_76[2]; + /*0x0078*/ u8 unk_78; + /*0x0079*/ u8 unk_79; + /*0x007A*/ u8 unk_7A; + /*0x007B*/ u8 unk_7B; + /*0x007C*/ u8 filler_7C[0x7E - 0x7C]; + /*0x007E*/ u8 unk_7E; + /*0x007F*/ u8 filler_7F; + /*0x0080*/ u16 linkData[20]; + /*0x00A8*/ u8 unk_A8; + /*0x00A9*/ u8 unk_A9[11]; + /*0x00B4*/ u8 filler_B4[0x8D0-0xB4]; + /*0x08D0*/ struct { + bool8 active; + u16 delay; + u8 kind; + } cron[4]; + /*0x08F0*/ u16 tilemapBuffer[BG_SCREEN_SIZE / 2]; +}; + +enum TradeStatusMsg +{ + TRADESTATMSG_COMMSTANDBY = 0, + TRADESTATMSG_CANCELED, + TRADESTATMSG_ONLYMON, + TRADESTATMSG_ONLYMON2, + TRADESTATMSG_WAITINGFORFRIEND, + TRADESTATMSG_FRIENDWANTSTOTRADE, + TRADESTATMSG_YOURMONCANTBETRADED, + TRADESTATMSG_EGGCANTBETRADED, + TRADESTATMSG_PARTNERMONCANTBETRADED +}; + +static EWRAM_DATA u8 *sSpriteTextTileBuffer = NULL; +static EWRAM_DATA u8 *sSpriteTextTilePtrs[14] = {}; +EWRAM_DATA struct MailStruct gLinkPartnerMail[6] = {}; +EWRAM_DATA u8 gSelectedTradeMonPositions[2] = {0}; +static EWRAM_DATA struct TradeMenuResources * sTradeMenuResourcesPtr = NULL; + +static void sub_804C728(void); +static void sub_804D4F8(void); +static void sub_804D638(void); +static void sub_804D694(u8 state); +static void sub_804D764(void); +static u8 shedinja_maker_maybe(void); +static void sub_804DFF0(void); +static void RunTradeMenuCallback(void); +static void sub_804EAAC(u8 a0); +static void sub_804EAE4(u8 side); +static u8 sub_804EE6C(u8 *str, u8 whichParty, u8 partyIdx); +static void sub_804EED4(u8 *str, u8 whichParty, u8 partyIdx); +static void sub_804F020(u8 side); +static void sub_804F08C(u8 a0, u8 partyIdx, u8 a2, u8 a3, u8 a4, u8 a5); +static void sub_804F284(u8 side); +static void sub_804F3B4(void); +static void sub_804F3C8(u8 a0); +static void TradeMenuAction_Summary(u8 taskId); +static void TradeMenuAction_Trade(u8 taskId); +static void ScheduleLinkTaskWithDelay(u16 delay, u8 kind); +static void RunScheduledLinkTasks(void); +static void PrintTradeErrorOrStatusMessage(u8 strIdx); +static bool8 sub_804F610(void); +static void RenderTextToVramViaBuffer(const u8 *name, u8 *a1, u8 unused); +static void sub_804F748(u8 side); +static void sub_804F890(u8 side); +static void sub_804F964(void); +static void sub_804F9D8(void); +static u32 sub_804FA14(struct Pokemon * party, int partyCount, int cursorPos); + +static const size_t gUnknown_8260814[] = { + sizeof(struct SaveBlock2), + sizeof(struct SaveBlock1), + sizeof(struct MapData), + 0x530, // unk + 0x34, // unk + sizeof(struct MailStruct), + sizeof(struct Pokemon), + 0x528 // unk +}; + +static const u16 sTradeMovesBoxTilemap[] = INCBIN_U16("graphics/trade/moves_box_map.bin"); +static const u16 sTradePartyBoxTilemap[] = INCBIN_U16("graphics/trade/party_box_map.bin"); +static const u8 sTradeStripesBG2Tilemap[] = INCBIN_U8("graphics/trade/stripes_bg2_map.bin"); +static const u8 sTradeStripesBG3Tilemap[] = INCBIN_U8("graphics/trade/stripes_bg3_map.bin"); + +static const struct OamData gOamData_8261C30 = { + .shape = SPRITE_SHAPE(32x16), + .size = SPRITE_SIZE(32x16), + .priority = 1 +}; + +static const struct OamData gOamData_8261C38 = { + .shape = SPRITE_SHAPE(64x32), + .size = SPRITE_SIZE(64x32), + .priority = 1 +}; + +static const union AnimCmd gSpriteAnim_8261C40[] = { + ANIMCMD_FRAME(0x00, 5), + ANIMCMD_END +}; + +static const union AnimCmd gSpriteAnim_8261C48[] = { + ANIMCMD_FRAME(0x20, 5), + ANIMCMD_END +}; + +static const union AnimCmd *const gSpriteAnimTable_8261C50[] = { + gSpriteAnim_8261C40, + gSpriteAnim_8261C48 +}; + +static const struct SpriteSheet sTradeButtons_SpriteSheet = { + gTradeButtons_Gfx, + 0x800, + 300 +}; + +static const struct SpritePalette sTradeButtons_SpritePal = { + gTradeButtons_Pal, + 2345 +}; + + +static const union AnimCmd gSpriteAnim_8261C68[] = { + ANIMCMD_FRAME(0x00, 5), + ANIMCMD_END +}; + +static const union AnimCmd gSpriteAnim_8261C70[] = { + ANIMCMD_FRAME(0x08, 5), + ANIMCMD_END +}; + +static const union AnimCmd gSpriteAnim_8261C78[] = { + ANIMCMD_FRAME(0x10, 5), + ANIMCMD_END +}; + +static const union AnimCmd gSpriteAnim_8261C80[] = { + ANIMCMD_FRAME(0x18, 5), + ANIMCMD_END +}; + +static const union AnimCmd gSpriteAnim_8261C88[] = { + ANIMCMD_FRAME(0x20, 5), + ANIMCMD_END +}; + +static const union AnimCmd gSpriteAnim_8261C90[] = { + ANIMCMD_FRAME(0x28, 5), + ANIMCMD_END +}; + +static const union AnimCmd *const gSpriteAnimTable_8261C98[] = { + gSpriteAnim_8261C68, + gSpriteAnim_8261C70, + gSpriteAnim_8261C78, + gSpriteAnim_8261C80, + gSpriteAnim_8261C88, + gSpriteAnim_8261C90 +}; + +static const struct SpriteTemplate sSpriteTemplate_TradeButtons = { + .tileTag = 300, + .paletteTag = 2345, + .oam = &gOamData_8261C38, + .anims = gSpriteAnimTable_8261C50, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +static const struct SpriteTemplate sSpriteTemplate_Text = { + .tileTag = 200, + .paletteTag = 4925, + .oam = &gOamData_8261C30, + .anims = gSpriteAnimTable_8261C98, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy +}; + +static const u16 sTradeTextPal[] = INCBIN_U16("graphics/trade/text.gbapal"); + +static const struct SpritePalette sSpritePalette_Text = { + sTradeTextPal, + 4925 +}; + +#define DIR_UP 0 +#define DIR_DOWN 1 +#define DIR_LEFT 2 +#define DIR_RIGHT 3 + +static const u8 sCursorMoveDestinations[][4][6] = { + // Player's party + [0] = { + [DIR_UP] = { 4, 2, 12, 12, 0, 0}, + [DIR_DOWN] = { 2, 4, 12, 12, 0, 0}, + [DIR_LEFT] = { 7, 6, 1, 0, 0, 0}, + [DIR_RIGHT] = { 1, 6, 7, 0, 0, 0} + }, + [1] = { + [DIR_UP] = { 5, 3, 12, 12, 0, 0}, + [DIR_DOWN] = { 3, 5, 12, 12, 0, 0}, + [DIR_LEFT] = { 0, 7, 6, 1, 0, 0}, + [DIR_RIGHT] = { 6, 7, 0, 1, 0, 0} + }, + [2] = { + [DIR_UP] = { 0, 0, 0, 0, 0, 0}, + [DIR_DOWN] = { 4, 0, 0, 0, 0, 0}, + [DIR_LEFT] = { 9, 8, 7, 6, 0, 0}, + [DIR_RIGHT] = { 3, 1, 0, 0, 0, 0} + }, + [3] = { + [DIR_UP] = { 1, 1, 1, 1, 0, 0}, + [DIR_DOWN] = { 5, 1, 1, 1, 0, 0}, + [DIR_LEFT] = { 2, 9, 8, 7, 0, 0}, + [DIR_RIGHT] = { 8, 9, 6, 6, 0, 0} + }, + [4] = { + [DIR_UP] = { 2, 2, 2, 2, 0, 0}, + [DIR_DOWN] = { 0, 0, 0, 0, 0, 0}, + [DIR_LEFT] = {11, 10, 9, 8, 7, 6}, + [DIR_RIGHT] = { 5, 3, 1, 0, 0, 0} + }, + [5] = { + [DIR_UP] = { 3, 3, 3, 3, 0, 0}, + [DIR_DOWN] = { 1, 1, 1, 1, 0, 0}, + [DIR_LEFT] = { 4, 4, 4, 4, 0, 0}, + [DIR_RIGHT] = {10, 8, 6, 0, 0, 0} + }, + // Partner's party + [6] = { + [DIR_UP] = {10, 8, 12, 0, 0, 0}, + [DIR_DOWN] = { 8, 10, 12, 0, 0, 0}, + [DIR_LEFT] = { 1, 0, 0, 0, 0, 0}, + [DIR_RIGHT] = { 7, 0, 1, 0, 0, 0} + }, + [7] = { + [DIR_UP] = {12, 0, 0, 0, 0, 0}, + [DIR_DOWN] = { 9, 12, 0, 0, 0, 0}, + [DIR_LEFT] = { 6, 0, 0, 0, 0, 0}, + [DIR_RIGHT] = { 0, 0, 0, 0, 0, 0} + }, + [8] = { + [DIR_UP] = { 6, 0, 0, 0, 0, 0}, + [DIR_DOWN] = {10, 6, 0, 0, 0, 0}, + [DIR_LEFT] = { 3, 2, 1, 0, 0, 0}, + [DIR_RIGHT] = { 9, 7, 0, 0, 0, 0} + }, + [9] = { + [DIR_UP] = { 7, 0, 0, 0, 0, 0}, + [DIR_DOWN] = {11, 12, 0, 0, 0, 0}, + [DIR_LEFT] = { 8, 0, 0, 0, 0, 0}, + [DIR_RIGHT] = { 2, 1, 0, 0, 0, 0} + }, + [10] = { + [DIR_UP] = { 8, 0, 0, 0, 0, 0}, + [DIR_DOWN] = { 6, 0, 0, 0, 0, 0}, + [DIR_LEFT] = { 5, 4, 3, 2, 1, 0}, + [DIR_RIGHT] = {11, 9, 7, 0, 0, 0} + }, + [11] = { + [DIR_UP] = { 9, 0, 0, 0, 0, 0}, + [DIR_DOWN] = {12, 0, 0, 0, 0, 0}, + [DIR_LEFT] = {10, 0, 0, 0, 0, 0}, + [DIR_RIGHT] = { 4, 2, 0, 0, 0, 0} + }, + // Cancel + [12] = { + [DIR_UP] = {11, 9, 7, 6, 0, 0}, + [DIR_DOWN] = { 7, 6, 0, 0, 0, 0}, + [DIR_LEFT] = {12, 0, 0, 0, 0, 0}, + [DIR_RIGHT] = {12, 0, 0, 0, 0, 0} + } +}; + +static const u8 sTradeMonSpriteCoords[][2] = { + {0x01, 0x05}, + {0x08, 0x05}, + {0x01, 0x0a}, + {0x08, 0x0a}, + {0x01, 0x0f}, + {0x08, 0x0f}, + + {0x10, 0x05}, + {0x17, 0x05}, + {0x10, 0x0a}, + {0x17, 0x0a}, + {0x10, 0x0f}, + {0x17, 0x0f}, + + {0x17, 0x12}, +}; + +// No idea if a 4D array is correct +static const u8 gUnknown_8261E5A[][2][6][2] = { + { + { + {0x05, 0x04}, + {0x0c, 0x04}, + {0x05, 0x09}, + {0x0c, 0x09}, + {0x05, 0x0e}, + {0x0c, 0x0e} + }, { + {0x14, 0x04}, + {0x1b, 0x04}, + {0x14, 0x09}, + {0x1b, 0x09}, + {0x14, 0x0e}, + {0x1b, 0x0e} + } + }, { + { + {0x01, 0x03}, + {0x08, 0x03}, + {0x01, 0x08}, + {0x08, 0x08}, + {0x01, 0x0d}, + {0x08, 0x0d} + }, { + {0x10, 0x03}, + {0x17, 0x03}, + {0x10, 0x08}, + {0x17, 0x08}, + {0x10, 0x0d}, + {0x17, 0x0d} + } + } +}; + +static const u8 sTradeUnknownSpriteCoords[][4] = { + {0x3c, 0x09, 0xb4, 0x09}, + {0x30, 0x09, 0xa8, 0x09} +}; + +static const u8 gUnknown_8261E92[] = { + 0x00, 0x0e, 0x0f, 0x1d, + 0x03, 0x05, 0x03, 0x07, + 0x12, 0x05, 0x12, 0x07, + 0x08, 0x07, 0x16, 0x0c, + 0x08, 0x07, 0x16, 0x0c, + 0x06, 0x07, 0x18, 0x0c, + 0x06, 0x07, 0x18, 0x0c, + 0x08, 0x07, 0x16, 0x0c, + 0x07, 0x07, 0x17, 0x0c +}; + +const u8 gUnknown_8261EB6[] = _(""); +const u8 gUnknown_8261EB7[] = _("{COLOR DARK_GREY}{HIGHLIGHT TRANSPARENT}{SHADOW RED}"); +const u8 gText_MaleSymbol4[] = _("♂"); +const u8 gText_FemaleSymbol4[] = _("♀"); +const u8 gText_GenderlessSymbol[] = _(""); +const u8 gUnknown_8261EC6[] = _(""); +const u8 gUnknown_8261EC7[] = _("\n"); +const u8 gUnknown_8261EC9[] = _("/"); + +enum TradeUIText +{ + TRADEUITEXT_CANCEL = 0, + TRADEUITEXT_CHOOSE, + TRADEUITEXT_SUMMARY, + TRADEUITEXT_TRADE, + TRADEUITEXT_ASKCANCEL, + TRADEUITEXT_PRESSBTOEXIT +}; + +static const u8 *const sTradeUITextPtrs[] = { + gTradeText_Cancel, + gTradeText_ChooseAPokemon, + gTradeText_Summary, + gTradeText_Trade, + gTradeText_CancelTrade, + gTradeText_PressBButtonToExit +}; + +static const struct MenuAction gUnknown_8261EE4[] = { + {gUnknown_841E10A, { .void_u8 = TradeMenuAction_Summary }}, + {gUnknown_841E112, { .void_u8 = TradeMenuAction_Trade }} +}; + +static const u8 *const sTradeErrorOrStatusMessagePtrs[] = { + gUnknown_841E118, // Communication standby + gUnknown_841E145, // The trade has been canceled. + gUnknown_841E16B, // That's your only POKéMON for battle + gUnknown_8417094, // That's your only POKéMON for battle + gUnknown_841E199, // Waiting for your friend to finish + gUnknown_841E1C5, // Your friend wants to trade POKéMON + gUnknown_84170BC, // That POKéMON can't be traded now + gUnknown_84170E0, // An EGG can't be traded now + gUnknown_84170FC // The other TRAINER's POKéMON can't be traded now +}; + +static const u8 gUnknown_8261F18[] = { 0, 1, 2 }; + +static const struct BgTemplate gUnknown_8261F1C[] = { + { + .bg = 0, + .charBaseIndex = 2, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + }, { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 5, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0x000 + }, { + .bg = 2, + .charBaseIndex = 0, + .mapBaseIndex = 6, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0x000 + }, { + .bg = 3, + .charBaseIndex = 0, + .mapBaseIndex = 7, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0x000 + } +}; + +static const struct WindowTemplate gUnknown_8261F2C[] = { + { + .bg = 0, + .tilemapLeft = 4, + .tilemapTop = 7, + .width = 22, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x01e + }, { + .bg = 0, + .tilemapLeft = 17, + .tilemapTop = 15, + .width = 12, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x076 + }, { + .bg = 0, + .tilemapLeft = 0, + .tilemapTop = 5, + .width = 8, + .height = 2, + .paletteNum = 13, + .baseBlock = 0x0a6 + }, { + .bg = 0, + .tilemapLeft = 7, + .tilemapTop = 5, + .width = 8, + .height = 2, + .paletteNum = 13, + .baseBlock = 0x0b6 + }, { + .bg = 0, + .tilemapLeft = 0, + .tilemapTop = 10, + .width = 8, + .height = 2, + .paletteNum = 13, + .baseBlock = 0x0c6 + }, { + .bg = 0, + .tilemapLeft = 7, + .tilemapTop = 10, + .width = 8, + .height = 2, + .paletteNum = 13, + .baseBlock = 0x0d6 + }, { + .bg = 0, + .tilemapLeft = 0, + .tilemapTop = 15, + .width = 8, + .height = 2, + .paletteNum = 13, + .baseBlock = 0x0e6 + }, { + .bg = 0, + .tilemapLeft = 7, + .tilemapTop = 15, + .width = 8, + .height = 2, + .paletteNum = 13, + .baseBlock = 0x0f6 + }, { + .bg = 0, + .tilemapLeft = 15, + .tilemapTop = 5, + .width = 8, + .height = 2, + .paletteNum = 13, + .baseBlock = 0x106 + }, { + .bg = 0, + .tilemapLeft = 22, + .tilemapTop = 5, + .width = 8, + .height = 2, + .paletteNum = 13, + .baseBlock = 0x116 + }, { + .bg = 0, + .tilemapLeft = 15, + .tilemapTop = 10, + .width = 8, + .height = 2, + .paletteNum = 13, + .baseBlock = 0x126 + }, { + .bg = 0, + .tilemapLeft = 22, + .tilemapTop = 10, + .width = 8, + .height = 2, + .paletteNum = 13, + .baseBlock = 0x136 + }, { + .bg = 0, + .tilemapLeft = 15, + .tilemapTop = 15, + .width = 8, + .height = 2, + .paletteNum = 13, + .baseBlock = 0x146 + }, { + .bg = 0, + .tilemapLeft = 22, + .tilemapTop = 15, + .width = 8, + .height = 2, + .paletteNum = 13, + .baseBlock = 0x156 + }, { + .bg = 0, + .tilemapLeft = 2, + .tilemapTop = 5, + .width = 14, + .height = 2, + .paletteNum = 13, + .baseBlock = 0x166 + }, { + .bg = 0, + .tilemapLeft = 3, + .tilemapTop = 8, + .width = 11, + .height = 8, + .paletteNum = 15, + .baseBlock = 0x182 + }, { + .bg = 0, + .tilemapLeft = 17, + .tilemapTop = 5, + .width = 14, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x1da + }, { + .bg = 0, + .tilemapLeft = 18, + .tilemapTop = 8, + .width = 11, + .height = 8, + .paletteNum = 15, + .baseBlock = 0x1f6 + }, DUMMY_WIN_TEMPLATE +}; + +static const struct WindowTemplate gUnknown_8261FC4 = { + .bg = 0, + .tilemapLeft = 21, + .tilemapTop = 13, + .width = 6, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x24e +}; + +static const u8 gUnknown_8261FCC[][13] = { + _("かいめの そうしん"), + _("かいめの じゅしん"), + _("ポケモンアイコンセット"), + _("OBJテキストセット"), + _("セルセット"), + _("OBJテキストADD"), + _("システムメッセージADD"), + _("はいけいセット") +}; + +static const u8 gJPText_Shedinja[] = _("ヌケニン"); +static const u8 gUnknown_8262039[] = _("こうかんせいりつ "); +static const u8 gUnknown_8262047[] = _("だめだたらしいよ "); + +static const u8 gUnknown_8262055[][2] = { + { 4, 3}, + {19, 3} +}; + +static void sub_804C600(void) +{ + int i; + static vu16 dummy; + + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + ResetPaletteFade(); + gPaletteFade.bufferTransferDisabled = TRUE; + SetVBlankCallback(sub_804D4F8); + LoadPalette(gTMCaseMainWindowPalette, 0xF0, 0x14); + LoadPalette(gTMCaseMainWindowPalette, 0xD0, 0x14); + ResetBgsAndClearDma3BusyFlags(FALSE); + InitBgsFromTemplates(0, gUnknown_8261F1C, NELEMS(gUnknown_8261F1C)); + SetBgTilemapBuffer(1, sTradeMenuResourcesPtr->tilemapBuffer); + if (InitWindows(gUnknown_8261F2C)) + { + DeactivateAllTextPrinters(); + dummy = 590; // ? + for (i = 0; i < NELEMS(gUnknown_8261F2C) - 1; i++) + { + ClearWindowTilemap(i); + FillWindowPixelBuffer(i, PIXEL_FILL(0)); + } + FillBgTilemapBufferRect(0, 0, 0, 0, 30, 20, 0xF); + TextWindow_SetStdFrame0_WithPal(0, 0x014, 0xC0); + TextWindow_SetUserSelectedFrame(2, 0x001, 0xE0); + LoadMonIconPalettes(); + sTradeMenuResourcesPtr->unk_69 = 0; + sTradeMenuResourcesPtr->unk_6F = 0; + sTradeMenuResourcesPtr->unk_70 = 0; + sTradeMenuResourcesPtr->unk_74[0] = 0; + sTradeMenuResourcesPtr->unk_74[1] = 0; + sTradeMenuResourcesPtr->unk_7A = 0; + sTradeMenuResourcesPtr->unk_7B = 0; + sTradeMenuResourcesPtr->unk_A8 = 0; + } +} + +void CB2_ReturnFromLinkTrade(void) +{ + SetMainCallback2(sub_804C728); +} + +#ifdef NONMATCHING +// See note on case 12 below +static void sub_804C728(void) +{ + int i; + struct SpriteTemplate temp; + u8 id; + s32 width; + u32 xPos; + + switch (gMain.state) + { + case 0: + sTradeMenuResourcesPtr = AllocZeroed(sizeof(*sTradeMenuResourcesPtr)); + sub_804C600(); + sSpriteTextTileBuffer = AllocZeroed(0xE00); + + for (i = 0; i < 14; i++) + { + sSpriteTextTilePtrs[i] = &sSpriteTextTileBuffer[i * 256]; + } + + gMain.state++; + break; + case 1: + gPaletteFade.bufferTransferDisabled = FALSE; + + for (i = 0; i < PARTY_SIZE; i++) + { + CreateMon(&gEnemyParty[i], SPECIES_NONE, 0, 0x20, FALSE, 0, OT_ID_PLAYER_ID, 0); + } + + PrintTradeErrorOrStatusMessage(TRADESTATMSG_COMMSTANDBY); + ShowBg(0); + + if (!gReceivedRemoteLinkPlayers) + { + gLinkType = 0x1122; + sTradeMenuResourcesPtr->unk_A8 = 0; + + if (gWirelessCommType) + { + sub_800B1F4(); + OpenLink(); + sub_80FBB20(); + } + else + { + OpenLink(); + gMain.state++; + } + if (gWirelessCommType == 0) + CreateTask(sub_8081A90, 1); + } + else + { + gMain.state = 4; + } + break; + case 2: + sTradeMenuResourcesPtr->unk_A8++; + if (sTradeMenuResourcesPtr->unk_A8 > 11) + { + sTradeMenuResourcesPtr->unk_A8 = 0; + gMain.state++; + } + break; + case 3: + if (GetLinkPlayerCount_2() >= GetSavedPlayerCount()) + { + if (IsLinkMaster()) + { + if (++sTradeMenuResourcesPtr->unk_A8 > 30) + { + CheckShouldAdvanceLinkState(); + gMain.state++; + } + } + else + { + gMain.state++; + } + } + break; + case 4: + if (gReceivedRemoteLinkPlayers == TRUE && IsLinkPlayerDataExchangeComplete() == TRUE) + { + sub_80FBB4C(); + CalculatePlayerPartyCount(); + gMain.state++; + sTradeMenuResourcesPtr->unk_A8 = 0; + if (gWirelessCommType) + { + sub_80FA484(TRUE); + sub_800AB9C(); + } + } + break; + case 5: + if (gWirelessCommType) + { + if (IsLinkRfuTaskFinished()) + { + gMain.state++; + LoadWirelessStatusIndicatorSpriteGfx(); + CreateWirelessStatusIndicatorSprite(0, 0); + } + } + else + { + gMain.state++; + } + break; + case 6: + if (shedinja_maker_maybe()) + { + sub_804F9D8(); + gMain.state++; + } + break; + case 7: + CalculateEnemyPartyCount(); + SetGpuReg(REG_OFFSET_DISPCNT, 0); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + sTradeMenuResourcesPtr->partyCounts[0] = gPlayerPartyCount; + sTradeMenuResourcesPtr->partyCounts[1] = gEnemyPartyCount; + + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[0]; i++) + { + struct Pokemon * mon = &gPlayerParty[i]; + sTradeMenuResourcesPtr->partyIcons[0][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2), + SpriteCB_MonIcon, + (sTradeMonSpriteCoords[i][0] * 8) + 14, + (sTradeMonSpriteCoords[i][1] * 8) - 12, + 1, + GetMonData(mon, MON_DATA_PERSONALITY), + TRUE); + } + + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[1]; i++) + { + struct Pokemon * mon = &gEnemyParty[i]; + sTradeMenuResourcesPtr->partyIcons[1][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2, NULL), + SpriteCB_MonIcon, + (sTradeMonSpriteCoords[i + PARTY_SIZE][0] * 8) + 14, + (sTradeMonSpriteCoords[i + PARTY_SIZE][1] * 8) - 12, + 1, + GetMonData(mon, MON_DATA_PERSONALITY), + FALSE); + } + gMain.state++; + break; + case 8: + LoadHeldItemIcons(); + sub_812256C(sTradeMenuResourcesPtr->partyCounts, sTradeMenuResourcesPtr->partyIcons, 0); + gMain.state++; + break; + case 9: + sub_812256C(sTradeMenuResourcesPtr->partyCounts, sTradeMenuResourcesPtr->partyIcons, 1); + gMain.state++; + break; + case 10: + PSS_RenderTextToVramViaBuffer(gSaveBlock2Ptr->playerName, sSpriteTextTilePtrs[0], 0, 0, gDecompressionBuffer, 3); + id = GetMultiplayerId(); + PSS_RenderTextToVramViaBuffer(gLinkPlayers[id ^ 1].name, sSpriteTextTilePtrs[3], 0, 0, gDecompressionBuffer, 3); + PSS_RenderTextToVramViaBuffer(sTradeUITextPtrs[TRADEUITEXT_CANCEL], sSpriteTextTilePtrs[6], 0, 0, gDecompressionBuffer, 2); + RenderTextToVramViaBuffer(sTradeUITextPtrs[TRADEUITEXT_CHOOSE], sSpriteTextTilePtrs[8], 24); + gMain.state++; + sTradeMenuResourcesPtr->unk_A8 = 0; + break; + case 11: + if (sub_804F610()) + gMain.state++; + break; + case 12: + width = GetStringWidth(1, gSaveBlock2Ptr->playerName, 0); + xPos = (56 - width) / 2; + for (i = 0; i < 3; i++) + { + temp = sSpriteTemplate_Text; + temp.tileTag += i; + CreateSprite(&temp, xPos + sTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][0] + (i * 32), sTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][1], 1); + } + + /* + * These three lines are a pain to match due to register alloc and + * pointer arithmetic misbehavior. + */ + id = GetMultiplayerId(); + id ^= 1; + width = GetStringWidth(1, gLinkPlayers[id].name, 0); + xPos = (56 - width) / 2; + for (i = 0; i < 3; i++) + { + temp = sSpriteTemplate_Text; + temp.tileTag += i + 3; + CreateSprite(&temp, xPos + sTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][2] + (i * 32), sTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][3], 1); + } + gMain.state++; + break; + case 13: + temp = sSpriteTemplate_Text; + temp.tileTag += 6; + CreateSprite(&temp, 215, 151, 1); + temp = sSpriteTemplate_Text; + temp.tileTag += 7; + CreateSprite(&temp, 247, 151, 1); + + for (i = 0; i < PARTY_SIZE; i++) + { + temp = sSpriteTemplate_Text; + temp.tileTag += i + 8; + CreateSprite(&temp, (i * 32) + 24, 150, 1); + } + + sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx = CreateSprite(&sSpriteTemplate_TradeButtons, sTradeMonSpriteCoords[0][0] * 8 + 32, sTradeMonSpriteCoords[0][1] * 8, 2); + sTradeMenuResourcesPtr->tradeMenuCursorPosition = 0; + gMain.state++; + rbox_fill_rectangle(0); + break; + case 14: + sub_804F748(0); + sub_804F020(0); + sTradeMenuResourcesPtr->unk_0 = 0; + sTradeMenuResourcesPtr->unk_1 = 0; + sub_804D764(); + gMain.state++; + PlayBGM(MUS_SLOT); + break; + case 15: + sub_804F748(1); + sub_804F020(1); + gMain.state++; + // fallthrough + case 16: + sub_804D694(0); + gMain.state++; + break; + case 17: + sub_804D694(1); + gMain.state++; + break; + case 18: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + gMain.state++; + break; + case 19: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + sub_804D694(2); + gMain.state++; + break; + case 20: + sub_804F890(0); + gMain.state++; + break; + case 21: + sub_804F890(1); + sub_804F964(); + gMain.state++; + break; + case 22: + if (!gPaletteFade.active) + { + gMain.callback1 = sub_804DFF0; + SetMainCallback2(sub_804D638); + } + break; + } + + RunTextPrinters(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} +#else +NAKED +static void sub_804C728(void) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r8\n" + "\tpush {r7}\n" + "\tsub sp, 0x28\n" + "\tldr r1, _0804C74C @ =gMain\n" + "\tmovs r2, 0x87\n" + "\tlsls r2, 3\n" + "\tadds r0, r1, r2\n" + "\tldrb r0, [r0]\n" + "\tadds r3, r1, 0\n" + "\tcmp r0, 0x16\n" + "\tbls _0804C742\n" + "\tb _0804CEE6\n" + "_0804C742:\n" + "\tlsls r0, 2\n" + "\tldr r1, _0804C750 @ =_0804C754\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_0804C74C: .4byte gMain\n" + "_0804C750: .4byte _0804C754\n" + "\t.align 2, 0\n" + "_0804C754:\n" + "\t.4byte _0804C7B0\n" + "\t.4byte _0804C7FC\n" + "\t.4byte _0804C8C8\n" + "\t.4byte _0804C8F4\n" + "\t.4byte _0804C950\n" + "\t.4byte _0804C9B0\n" + "\t.4byte _0804C9F0\n" + "\t.4byte _0804CA10\n" + "\t.4byte _0804CB50\n" + "\t.4byte _0804CB78\n" + "\t.4byte _0804CB9C\n" + "\t.4byte _0804CC30\n" + "\t.4byte _0804CC3E\n" + "\t.4byte _0804CD10\n" + "\t.4byte _0804CDE0\n" + "\t.4byte _0804CE20\n" + "\t.4byte _0804CE3A\n" + "\t.4byte _0804CE48\n" + "\t.4byte _0804CE5C\n" + "\t.4byte _0804CE7C\n" + "\t.4byte _0804CE9C\n" + "\t.4byte _0804CEB0\n" + "\t.4byte _0804CED0\n" + "_0804C7B0:\n" + "\tldr r4, _0804C7E8 @ =sTradeMenuResourcesPtr\n" + "\tldr r0, _0804C7EC @ =0x000010f0\n" + "\tbl AllocZeroed\n" + "\tstr r0, [r4]\n" + "\tbl sub_804C600\n" + "\tldr r4, _0804C7F0 @ =sSpriteTextTileBuffer\n" + "\tmovs r0, 0xE0\n" + "\tlsls r0, 4\n" + "\tbl AllocZeroed\n" + "\tstr r0, [r4]\n" + "\tmovs r6, 0\n" + "\tldr r2, _0804C7F4 @ =sSpriteTextTilePtrs\n" + "_0804C7CE:\n" + "\tlsls r1, r6, 8\n" + "\tldr r0, [r4]\n" + "\tadds r0, r1\n" + "\tstm r2!, {r0}\n" + "\tadds r6, 0x1\n" + "\tcmp r6, 0xD\n" + "\tble _0804C7CE\n" + "\tldr r1, _0804C7F8 @ =gMain\n" + "\tmovs r3, 0x87\n" + "\tlsls r3, 3\n" + "\tadds r1, r3\n" + "\tb _0804CEC2\n" + "\t.align 2, 0\n" + "_0804C7E8: .4byte sTradeMenuResourcesPtr\n" + "_0804C7EC: .4byte 0x000010f0\n" + "_0804C7F0: .4byte sSpriteTextTileBuffer\n" + "_0804C7F4: .4byte sSpriteTextTilePtrs\n" + "_0804C7F8: .4byte gMain\n" + "_0804C7FC:\n" + "\tldr r2, _0804C864 @ =gPaletteFade\n" + "\tldrb r1, [r2, 0x8]\n" + "\tmovs r0, 0x7F\n" + "\tands r0, r1\n" + "\tstrb r0, [r2, 0x8]\n" + "\tmovs r6, 0\n" + "\tmovs r4, 0\n" + "_0804C80A:\n" + "\tmovs r0, 0x64\n" + "\tmuls r0, r6\n" + "\tldr r1, _0804C868 @ =gEnemyParty\n" + "\tadds r0, r1\n" + "\tstr r4, [sp]\n" + "\tstr r4, [sp, 0x4]\n" + "\tstr r4, [sp, 0x8]\n" + "\tstr r4, [sp, 0xC]\n" + "\tmovs r1, 0\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0x20\n" + "\tbl CreateMon\n" + "\tadds r6, 0x1\n" + "\tcmp r6, 0x5\n" + "\tble _0804C80A\n" + "\tmovs r0, 0\n" + "\tbl PrintTradeErrorOrStatusMessage\n" + "\tmovs r0, 0\n" + "\tbl ShowBg\n" + "\tldr r0, _0804C86C @ =gReceivedRemoteLinkPlayers\n" + "\tldrb r2, [r0]\n" + "\tcmp r2, 0\n" + "\tbne _0804C8B4\n" + "\tldr r1, _0804C870 @ =gLinkType\n" + "\tldr r5, _0804C874 @ =0x00001122\n" + "\tadds r0, r5, 0\n" + "\tstrh r0, [r1]\n" + "\tldr r0, _0804C878 @ =sTradeMenuResourcesPtr\n" + "\tldr r0, [r0]\n" + "\tadds r0, 0xA8\n" + "\tstrb r2, [r0]\n" + "\tldr r0, _0804C87C @ =gWirelessCommType\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbeq _0804C880\n" + "\tbl sub_800B1F4\n" + "\tbl OpenLink\n" + "\tbl sub_80FBB20\n" + "\tb _0804C892\n" + "\t.align 2, 0\n" + "_0804C864: .4byte gPaletteFade\n" + "_0804C868: .4byte gEnemyParty\n" + "_0804C86C: .4byte gReceivedRemoteLinkPlayers\n" + "_0804C870: .4byte gLinkType\n" + "_0804C874: .4byte 0x00001122\n" + "_0804C878: .4byte sTradeMenuResourcesPtr\n" + "_0804C87C: .4byte gWirelessCommType\n" + "_0804C880:\n" + "\tbl OpenLink\n" + "\tldr r1, _0804C8A8 @ =gMain\n" + "\tmovs r7, 0x87\n" + "\tlsls r7, 3\n" + "\tadds r1, r7\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "_0804C892:\n" + "\tldr r0, _0804C8AC @ =gWirelessCommType\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbeq _0804C89C\n" + "\tb _0804CEE6\n" + "_0804C89C:\n" + "\tldr r0, _0804C8B0 @ =sub_8081A90\n" + "\tmovs r1, 0x1\n" + "\tbl CreateTask\n" + "\tb _0804CEE6\n" + "\t.align 2, 0\n" + "_0804C8A8: .4byte gMain\n" + "_0804C8AC: .4byte gWirelessCommType\n" + "_0804C8B0: .4byte sub_8081A90\n" + "_0804C8B4:\n" + "\tldr r0, _0804C8C4 @ =gMain\n" + "\tmovs r1, 0x87\n" + "\tlsls r1, 3\n" + "\tadds r0, r1\n" + "\tmovs r1, 0x4\n" + "\tstrb r1, [r0]\n" + "\tb _0804CEE6\n" + "\t.align 2, 0\n" + "_0804C8C4: .4byte gMain\n" + "_0804C8C8:\n" + "\tldr r2, _0804C8F0 @ =sTradeMenuResourcesPtr\n" + "\tldr r1, [r2]\n" + "\tadds r1, 0xA8\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "\tldr r0, [r2]\n" + "\tadds r1, r0, 0\n" + "\tadds r1, 0xA8\n" + "\tldrb r0, [r1]\n" + "\tcmp r0, 0xB\n" + "\tbhi _0804C8E2\n" + "\tb _0804CEE6\n" + "_0804C8E2:\n" + "\tmovs r0, 0\n" + "\tstrb r0, [r1]\n" + "\tmovs r2, 0x87\n" + "\tlsls r2, 3\n" + "\tadds r1, r3, r2\n" + "\tb _0804CEC2\n" + "\t.align 2, 0\n" + "_0804C8F0: .4byte sTradeMenuResourcesPtr\n" + "_0804C8F4:\n" + "\tbl GetLinkPlayerCount_2\n" + "\tadds r4, r0, 0\n" + "\tbl GetSavedPlayerCount\n" + "\tlsls r4, 24\n" + "\tlsls r0, 24\n" + "\tcmp r4, r0\n" + "\tbcs _0804C908\n" + "\tb _0804CEE6\n" + "_0804C908:\n" + "\tbl IsLinkMaster\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _0804C940\n" + "\tldr r0, _0804C938 @ =sTradeMenuResourcesPtr\n" + "\tldr r1, [r0]\n" + "\tadds r1, 0xA8\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x1E\n" + "\tbhi _0804C928\n" + "\tb _0804CEE6\n" + "_0804C928:\n" + "\tbl CheckShouldAdvanceLinkState\n" + "\tldr r1, _0804C93C @ =gMain\n" + "\tmovs r3, 0x87\n" + "\tlsls r3, 3\n" + "\tadds r1, r3\n" + "\tb _0804CEC2\n" + "\t.align 2, 0\n" + "_0804C938: .4byte sTradeMenuResourcesPtr\n" + "_0804C93C: .4byte gMain\n" + "_0804C940:\n" + "\tldr r1, _0804C94C @ =gMain\n" + "\tmovs r5, 0x87\n" + "\tlsls r5, 3\n" + "\tadds r1, r5\n" + "\tb _0804CEC2\n" + "\t.align 2, 0\n" + "_0804C94C: .4byte gMain\n" + "_0804C950:\n" + "\tldr r0, _0804C9A0 @ =gReceivedRemoteLinkPlayers\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0x1\n" + "\tbeq _0804C95A\n" + "\tb _0804CEE6\n" + "_0804C95A:\n" + "\tbl IsLinkPlayerDataExchangeComplete\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x1\n" + "\tbeq _0804C968\n" + "\tb _0804CEE6\n" + "_0804C968:\n" + "\tbl sub_80FBB4C\n" + "\tbl CalculatePlayerPartyCount\n" + "\tldr r1, _0804C9A4 @ =gMain\n" + "\tmovs r7, 0x87\n" + "\tlsls r7, 3\n" + "\tadds r1, r7\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tmovs r2, 0\n" + "\tstrb r0, [r1]\n" + "\tldr r0, _0804C9A8 @ =sTradeMenuResourcesPtr\n" + "\tldr r0, [r0]\n" + "\tadds r0, 0xA8\n" + "\tstrb r2, [r0]\n" + "\tldr r0, _0804C9AC @ =gWirelessCommType\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbne _0804C992\n" + "\tb _0804CEE6\n" + "_0804C992:\n" + "\tmovs r0, 0x1\n" + "\tbl sub_80FA484\n" + "\tbl sub_800AB9C\n" + "\tb _0804CEE6\n" + "\t.align 2, 0\n" + "_0804C9A0: .4byte gReceivedRemoteLinkPlayers\n" + "_0804C9A4: .4byte gMain\n" + "_0804C9A8: .4byte sTradeMenuResourcesPtr\n" + "_0804C9AC: .4byte gWirelessCommType\n" + "_0804C9B0:\n" + "\tldr r0, _0804C9E0 @ =gWirelessCommType\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbeq _0804C9E8\n" + "\tbl IsLinkRfuTaskFinished\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _0804C9C4\n" + "\tb _0804CEE6\n" + "_0804C9C4:\n" + "\tldr r1, _0804C9E4 @ =gMain\n" + "\tmovs r0, 0x87\n" + "\tlsls r0, 3\n" + "\tadds r1, r0\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "\tbl LoadWirelessStatusIndicatorSpriteGfx\n" + "\tmovs r0, 0\n" + "\tmovs r1, 0\n" + "\tbl CreateWirelessStatusIndicatorSprite\n" + "\tb _0804CEE6\n" + "\t.align 2, 0\n" + "_0804C9E0: .4byte gWirelessCommType\n" + "_0804C9E4: .4byte gMain\n" + "_0804C9E8:\n" + "\tmovs r2, 0x87\n" + "\tlsls r2, 3\n" + "\tadds r1, r3, r2\n" + "\tb _0804CEC2\n" + "_0804C9F0:\n" + "\tbl shedinja_maker_maybe\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _0804C9FC\n" + "\tb _0804CEE6\n" + "_0804C9FC:\n" + "\tbl sub_804F9D8\n" + "\tldr r1, _0804CA0C @ =gMain\n" + "\tmovs r3, 0x87\n" + "\tlsls r3, 3\n" + "\tadds r1, r3\n" + "\tb _0804CEC2\n" + "\t.align 2, 0\n" + "_0804CA0C: .4byte gMain\n" + "_0804CA10:\n" + "\tbl CalculateEnemyPartyCount\n" + "\tmovs r0, 0\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0x50\n" + "\tmovs r1, 0\n" + "\tbl SetGpuReg\n" + "\tldr r2, _0804CB2C @ =sTradeMenuResourcesPtr\n" + "\tldr r0, [r2]\n" + "\tldr r1, _0804CB30 @ =gPlayerPartyCount\n" + "\tldrb r1, [r1]\n" + "\tadds r0, 0x36\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r2]\n" + "\tldr r1, _0804CB34 @ =gEnemyPartyCount\n" + "\tldrb r1, [r1]\n" + "\tadds r0, 0x37\n" + "\tstrb r1, [r0]\n" + "\tmovs r6, 0\n" + "\tldr r0, [r2]\n" + "\tadds r0, 0x36\n" + "\tldrb r0, [r0]\n" + "\tcmp r6, r0\n" + "\tbge _0804CAA8\n" + "\tmov r8, r2\n" + "\tldr r7, _0804CB38 @ =sTradeMonSpriteCoords\n" + "_0804CA4A:\n" + "\tmovs r0, 0x64\n" + "\tadds r4, r6, 0\n" + "\tmuls r4, r0\n" + "\tldr r0, _0804CB3C @ =gPlayerParty\n" + "\tadds r4, r0\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x41\n" + "\tbl GetMonData\n" + "\tadds r5, r0, 0\n" + "\tlsls r5, 16\n" + "\tlsrs r5, 16\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0\n" + "\tbl GetMonData\n" + "\tldrb r2, [r7]\n" + "\tlsls r2, 19\n" + "\tmovs r1, 0xE0\n" + "\tlsls r1, 12\n" + "\tadds r2, r1\n" + "\tasrs r2, 16\n" + "\tldrb r3, [r7, 0x1]\n" + "\tlsls r3, 19\n" + "\tldr r1, _0804CB40 @ =0xfff40000\n" + "\tadds r3, r1\n" + "\tasrs r3, 16\n" + "\tmovs r1, 0x1\n" + "\tstr r1, [sp]\n" + "\tstr r0, [sp, 0x4]\n" + "\tstr r1, [sp, 0x8]\n" + "\tadds r0, r5, 0\n" + "\tldr r1, _0804CB44 @ =SpriteCB_MonIcon\n" + "\tbl CreateMonIcon\n" + "\tmov r2, r8\n" + "\tldr r1, [r2]\n" + "\tadds r1, 0x28\n" + "\tadds r1, r6\n" + "\tstrb r0, [r1]\n" + "\tadds r7, 0x2\n" + "\tadds r6, 0x1\n" + "\tldr r0, [r2]\n" + "\tadds r0, 0x36\n" + "\tldrb r0, [r0]\n" + "\tcmp r6, r0\n" + "\tblt _0804CA4A\n" + "_0804CAA8:\n" + "\tmovs r6, 0\n" + "\tldr r1, _0804CB2C @ =sTradeMenuResourcesPtr\n" + "\tldr r0, [r1]\n" + "\tadds r0, 0x37\n" + "\tldrb r0, [r0]\n" + "\tcmp r6, r0\n" + "\tbge _0804CB20\n" + "\tldr r0, _0804CB38 @ =sTradeMonSpriteCoords\n" + "\tmov r8, r1\n" + "\tadds r7, r0, 0\n" + "\tadds r7, 0xC\n" + "_0804CABE:\n" + "\tmovs r0, 0x64\n" + "\tadds r4, r6, 0\n" + "\tmuls r4, r0\n" + "\tldr r0, _0804CB48 @ =gEnemyParty\n" + "\tadds r4, r0\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x41\n" + "\tmovs r2, 0\n" + "\tbl GetMonData\n" + "\tadds r5, r0, 0\n" + "\tlsls r5, 16\n" + "\tlsrs r5, 16\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0\n" + "\tbl GetMonData\n" + "\tldrb r2, [r7]\n" + "\tlsls r2, 19\n" + "\tmovs r3, 0xE0\n" + "\tlsls r3, 12\n" + "\tadds r2, r3\n" + "\tasrs r2, 16\n" + "\tldrb r3, [r7, 0x1]\n" + "\tlsls r3, 19\n" + "\tldr r1, _0804CB40 @ =0xfff40000\n" + "\tadds r3, r1\n" + "\tasrs r3, 16\n" + "\tmovs r1, 0x1\n" + "\tstr r1, [sp]\n" + "\tstr r0, [sp, 0x4]\n" + "\tmovs r0, 0\n" + "\tstr r0, [sp, 0x8]\n" + "\tadds r0, r5, 0\n" + "\tldr r1, _0804CB44 @ =SpriteCB_MonIcon\n" + "\tbl CreateMonIcon\n" + "\tmov r2, r8\n" + "\tldr r1, [r2]\n" + "\tadds r1, 0x2E\n" + "\tadds r1, r6\n" + "\tstrb r0, [r1]\n" + "\tadds r7, 0x2\n" + "\tadds r6, 0x1\n" + "\tldr r0, [r2]\n" + "\tadds r0, 0x37\n" + "\tldrb r0, [r0]\n" + "\tcmp r6, r0\n" + "\tblt _0804CABE\n" + "_0804CB20:\n" + "\tldr r1, _0804CB4C @ =gMain\n" + "\tmovs r3, 0x87\n" + "\tlsls r3, 3\n" + "\tadds r1, r3\n" + "\tb _0804CEC2\n" + "\t.align 2, 0\n" + "_0804CB2C: .4byte sTradeMenuResourcesPtr\n" + "_0804CB30: .4byte gPlayerPartyCount\n" + "_0804CB34: .4byte gEnemyPartyCount\n" + "_0804CB38: .4byte sTradeMonSpriteCoords\n" + "_0804CB3C: .4byte gPlayerParty\n" + "_0804CB40: .4byte 0xfff40000\n" + "_0804CB44: .4byte SpriteCB_MonIcon\n" + "_0804CB48: .4byte gEnemyParty\n" + "_0804CB4C: .4byte gMain\n" + "_0804CB50:\n" + "\tbl LoadHeldItemIcons\n" + "\tldr r0, _0804CB70 @ =sTradeMenuResourcesPtr\n" + "\tldr r1, [r0]\n" + "\tadds r0, r1, 0\n" + "\tadds r0, 0x36\n" + "\tadds r1, 0x28\n" + "\tmovs r2, 0\n" + "\tbl sub_812256C\n" + "\tldr r1, _0804CB74 @ =gMain\n" + "\tmovs r5, 0x87\n" + "\tlsls r5, 3\n" + "\tadds r1, r5\n" + "\tb _0804CEC2\n" + "\t.align 2, 0\n" + "_0804CB70: .4byte sTradeMenuResourcesPtr\n" + "_0804CB74: .4byte gMain\n" + "_0804CB78:\n" + "\tldr r0, _0804CB94 @ =sTradeMenuResourcesPtr\n" + "\tldr r1, [r0]\n" + "\tadds r0, r1, 0\n" + "\tadds r0, 0x36\n" + "\tadds r1, 0x28\n" + "\tmovs r2, 0x1\n" + "\tbl sub_812256C\n" + "\tldr r1, _0804CB98 @ =gMain\n" + "\tmovs r7, 0x87\n" + "\tlsls r7, 3\n" + "\tadds r1, r7\n" + "\tb _0804CEC2\n" + "\t.align 2, 0\n" + "_0804CB94: .4byte sTradeMenuResourcesPtr\n" + "_0804CB98: .4byte gMain\n" + "_0804CB9C:\n" + "\tldr r0, _0804CC14 @ =gSaveBlock2Ptr\n" + "\tldr r0, [r0]\n" + "\tldr r6, _0804CC18 @ =sSpriteTextTilePtrs\n" + "\tldr r1, [r6]\n" + "\tldr r5, _0804CC1C @ =gDecompressionBuffer\n" + "\tstr r5, [sp]\n" + "\tmovs r4, 0x3\n" + "\tstr r4, [sp, 0x4]\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0\n" + "\tbl PSS_RenderTextToVramViaBuffer\n" + "\tbl GetMultiplayerId\n" + "\tlsls r0, 24\n" + "\tmovs r1, 0x80\n" + "\tlsls r1, 17\n" + "\teors r1, r0\n" + "\tlsrs r1, 24\n" + "\tlsls r0, r1, 3\n" + "\tsubs r0, r1\n" + "\tlsls r0, 2\n" + "\tldr r1, _0804CC20 @ =gLinkPlayers + 8\n" + "\tadds r0, r1\n" + "\tldr r1, [r6, 0xC]\n" + "\tstr r5, [sp]\n" + "\tstr r4, [sp, 0x4]\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0\n" + "\tbl PSS_RenderTextToVramViaBuffer\n" + "\tldr r4, _0804CC24 @ =sTradeUITextPtrs\n" + "\tldr r0, [r4]\n" + "\tldr r1, [r6, 0x18]\n" + "\tstr r5, [sp]\n" + "\tmovs r2, 0x2\n" + "\tstr r2, [sp, 0x4]\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0\n" + "\tbl PSS_RenderTextToVramViaBuffer\n" + "\tldr r0, [r4, 0x4]\n" + "\tldr r1, [r6, 0x20]\n" + "\tmovs r2, 0x18\n" + "\tbl RenderTextToVramViaBuffer\n" + "\tldr r1, _0804CC28 @ =gMain\n" + "\tmovs r0, 0x87\n" + "\tlsls r0, 3\n" + "\tadds r1, r0\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tmovs r2, 0\n" + "\tstrb r0, [r1]\n" + "\tldr r0, _0804CC2C @ =sTradeMenuResourcesPtr\n" + "\tldr r0, [r0]\n" + "\tadds r0, 0xA8\n" + "\tstrb r2, [r0]\n" + "\tb _0804CEE6\n" + "\t.align 2, 0\n" + "_0804CC14: .4byte gSaveBlock2Ptr\n" + "_0804CC18: .4byte sSpriteTextTilePtrs\n" + "_0804CC1C: .4byte gDecompressionBuffer\n" + "_0804CC20: .4byte gLinkPlayers + 8\n" + "_0804CC24: .4byte sTradeUITextPtrs\n" + "_0804CC28: .4byte gMain\n" + "_0804CC2C: .4byte sTradeMenuResourcesPtr\n" + "_0804CC30:\n" + "\tbl sub_804F610\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _0804CC3C\n" + "\tb _0804CEE6\n" + "_0804CC3C:\n" + "\tb _0804CEBA\n" + "_0804CC3E:\n" + "\tldr r0, _0804CCFC @ =gSaveBlock2Ptr\n" + "\tldr r1, [r0]\n" + "\tmovs r0, 0x1\n" + "\tmovs r2, 0\n" + "\tbl GetStringWidth\n" + "\tadds r1, r0, 0\n" + "\tmovs r0, 0x38\n" + "\tsubs r0, r1\n" + "\tlsrs r1, r0, 31\n" + "\tadds r0, r1\n" + "\tmovs r6, 0\n" + "\tadd r5, sp, 0x10\n" + "\tldr r3, _0804CD00 @ =sTradeUnknownSpriteCoords\n" + "\tmov r8, r3\n" + "\tasrs r0, 1\n" + "\tldrb r7, [r3, 0x4]\n" + "\tadds r4, r0, r7\n" + "_0804CC62:\n" + "\tadd r1, sp, 0x10\n" + "\tldr r0, _0804CD04 @ =sSpriteTemplate_Text\n" + "\tldm r0!, {r2,r3,r7}\n" + "\tstm r1!, {r2,r3,r7}\n" + "\tldm r0!, {r2,r3,r7}\n" + "\tstm r1!, {r2,r3,r7}\n" + "\tldrh r0, [r5]\n" + "\tadds r0, r6\n" + "\tstrh r0, [r5]\n" + "\tlsls r1, r4, 16\n" + "\tasrs r1, 16\n" + "\tadd r0, sp, 0x10\n" + "\tmov r3, r8\n" + "\tldrb r2, [r3, 0x5]\n" + "\tmovs r3, 0x1\n" + "\tbl CreateSprite\n" + "\tadds r4, 0x20\n" + "\tadds r6, 0x1\n" + "\tcmp r6, 0x2\n" + "\tble _0804CC62\n" + "\tbl GetMultiplayerId\n" + "\tlsls r0, 24\n" + "\tmovs r1, 0x80\n" + "\tlsls r1, 17\n" + "\teors r1, r0\n" + "\tlsrs r1, 24\n" + "\tlsls r0, r1, 3\n" + "\tsubs r0, r1\n" + "\tlsls r0, 2\n" + "\tldr r1, _0804CD08 @ =gLinkPlayers + 8\n" + "\tadds r1, r0, r1\n" + "\tmovs r0, 0x1\n" + "\tmovs r2, 0\n" + "\tbl GetStringWidth\n" + "\tadds r1, r0, 0\n" + "\tmovs r0, 0x38\n" + "\tsubs r0, r1\n" + "\tlsrs r1, r0, 31\n" + "\tadds r0, r1\n" + "\tmovs r6, 0\n" + "\tadd r5, sp, 0x10\n" + "\tldr r7, _0804CD00 @ =sTradeUnknownSpriteCoords\n" + "\tmov r8, r7\n" + "\tasrs r0, 1\n" + "\tmov r1, r8\n" + "\tldrb r1, [r1, 0x6]\n" + "\tadds r4, r0, r1\n" + "_0804CCC6:\n" + "\tadd r1, sp, 0x10\n" + "\tldr r0, _0804CD04 @ =sSpriteTemplate_Text\n" + "\tldm r0!, {r2,r3,r7}\n" + "\tstm r1!, {r2,r3,r7}\n" + "\tldm r0!, {r2,r3,r7}\n" + "\tstm r1!, {r2,r3,r7}\n" + "\tadds r0, r6, 0x3\n" + "\tldrh r1, [r5]\n" + "\tadds r0, r1\n" + "\tstrh r0, [r5]\n" + "\tlsls r1, r4, 16\n" + "\tasrs r1, 16\n" + "\tadd r0, sp, 0x10\n" + "\tmov r3, r8\n" + "\tldrb r2, [r3, 0x7]\n" + "\tmovs r3, 0x1\n" + "\tbl CreateSprite\n" + "\tadds r4, 0x20\n" + "\tadds r6, 0x1\n" + "\tcmp r6, 0x2\n" + "\tble _0804CCC6\n" + "\tldr r1, _0804CD0C @ =gMain\n" + "\tmovs r5, 0x87\n" + "\tlsls r5, 3\n" + "\tadds r1, r5\n" + "\tb _0804CEC2\n" + "\t.align 2, 0\n" + "_0804CCFC: .4byte gSaveBlock2Ptr\n" + "_0804CD00: .4byte sTradeUnknownSpriteCoords\n" + "_0804CD04: .4byte sSpriteTemplate_Text\n" + "_0804CD08: .4byte gLinkPlayers + 8\n" + "_0804CD0C: .4byte gMain\n" + "_0804CD10:\n" + "\tldr r4, _0804CDCC @ =sSpriteTemplate_Text\n" + "\tadd r1, sp, 0x10\n" + "\tadds r0, r4, 0\n" + "\tldm r0!, {r2,r3,r7}\n" + "\tstm r1!, {r2,r3,r7}\n" + "\tldm r0!, {r2,r5,r7}\n" + "\tstm r1!, {r2,r5,r7}\n" + "\tadd r1, sp, 0x10\n" + "\tadds r0, r1, 0\n" + "\tldrh r0, [r0]\n" + "\tadds r0, 0x6\n" + "\tstrh r0, [r1]\n" + "\tadds r0, r1, 0\n" + "\tmovs r1, 0xD7\n" + "\tmovs r2, 0x97\n" + "\tmovs r3, 0x1\n" + "\tbl CreateSprite\n" + "\tadd r0, sp, 0x10\n" + "\tldm r4!, {r3,r5,r7}\n" + "\tstm r0!, {r3,r5,r7}\n" + "\tldm r4!, {r1-r3}\n" + "\tstm r0!, {r1-r3}\n" + "\tadd r1, sp, 0x10\n" + "\tadds r0, r1, 0\n" + "\tldrh r0, [r0]\n" + "\tadds r0, 0x7\n" + "\tstrh r0, [r1]\n" + "\tadds r0, r1, 0\n" + "\tmovs r1, 0xF7\n" + "\tmovs r2, 0x97\n" + "\tmovs r3, 0x1\n" + "\tbl CreateSprite\n" + "\tmovs r6, 0\n" + "\tadd r4, sp, 0x10\n" + "\tmovs r5, 0xC0\n" + "\tlsls r5, 13\n" + "_0804CD5C:\n" + "\tadd r1, sp, 0x10\n" + "\tldr r0, _0804CDCC @ =sSpriteTemplate_Text\n" + "\tldm r0!, {r2,r3,r7}\n" + "\tstm r1!, {r2,r3,r7}\n" + "\tldm r0!, {r2,r3,r7}\n" + "\tstm r1!, {r2,r3,r7}\n" + "\tadds r0, r6, 0\n" + "\tadds r0, 0x8\n" + "\tldrh r7, [r4]\n" + "\tadds r0, r7\n" + "\tstrh r0, [r4]\n" + "\tasrs r1, r5, 16\n" + "\tadd r0, sp, 0x10\n" + "\tmovs r2, 0x96\n" + "\tmovs r3, 0x1\n" + "\tbl CreateSprite\n" + "\tmovs r0, 0x80\n" + "\tlsls r0, 14\n" + "\tadds r5, r0\n" + "\tadds r6, 0x1\n" + "\tcmp r6, 0x5\n" + "\tble _0804CD5C\n" + "\tldr r0, _0804CDD0 @ =sSpriteTemplate_TradeButtons\n" + "\tldr r2, _0804CDD4 @ =sTradeMonSpriteCoords\n" + "\tldrb r1, [r2]\n" + "\tlsls r1, 19\n" + "\tmovs r3, 0x80\n" + "\tlsls r3, 14\n" + "\tadds r1, r3\n" + "\tasrs r1, 16\n" + "\tldrb r2, [r2, 0x1]\n" + "\tlsls r2, 3\n" + "\tmovs r3, 0x2\n" + "\tbl CreateSprite\n" + "\tldr r2, _0804CDD8 @ =sTradeMenuResourcesPtr\n" + "\tldr r1, [r2]\n" + "\tadds r1, 0x34\n" + "\tmovs r3, 0\n" + "\tstrb r0, [r1]\n" + "\tldr r0, [r2]\n" + "\tadds r0, 0x35\n" + "\tstrb r3, [r0]\n" + "\tldr r1, _0804CDDC @ =gMain\n" + "\tmovs r5, 0x87\n" + "\tlsls r5, 3\n" + "\tadds r1, r5\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "\tmovs r0, 0\n" + "\tbl rbox_fill_rectangle\n" + "\tb _0804CEE6\n" + "\t.align 2, 0\n" + "_0804CDCC: .4byte sSpriteTemplate_Text\n" + "_0804CDD0: .4byte sSpriteTemplate_TradeButtons\n" + "_0804CDD4: .4byte sTradeMonSpriteCoords\n" + "_0804CDD8: .4byte sTradeMenuResourcesPtr\n" + "_0804CDDC: .4byte gMain\n" + "_0804CDE0:\n" + "\tmovs r0, 0\n" + "\tbl sub_804F748\n" + "\tmovs r0, 0\n" + "\tbl sub_804F020\n" + "\tldr r2, _0804CE14 @ =sTradeMenuResourcesPtr\n" + "\tldr r0, [r2]\n" + "\tmovs r1, 0\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r2]\n" + "\tstrb r1, [r0, 0x1]\n" + "\tbl sub_804D764\n" + "\tldr r1, _0804CE18 @ =gMain\n" + "\tmovs r7, 0x87\n" + "\tlsls r7, 3\n" + "\tadds r1, r7\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "\tldr r0, _0804CE1C @ =0x00000111\n" + "\tbl PlayBGM\n" + "\tb _0804CEE6\n" + "\t.align 2, 0\n" + "_0804CE14: .4byte sTradeMenuResourcesPtr\n" + "_0804CE18: .4byte gMain\n" + "_0804CE1C: .4byte 0x00000111\n" + "_0804CE20:\n" + "\tmovs r0, 0x1\n" + "\tbl sub_804F748\n" + "\tmovs r0, 0x1\n" + "\tbl sub_804F020\n" + "\tldr r1, _0804CE44 @ =gMain\n" + "\tmovs r0, 0x87\n" + "\tlsls r0, 3\n" + "\tadds r1, r0\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "_0804CE3A:\n" + "\tmovs r0, 0\n" + "\tbl sub_804D694\n" + "\tb _0804CEBA\n" + "\t.align 2, 0\n" + "_0804CE44: .4byte gMain\n" + "_0804CE48:\n" + "\tmovs r0, 0x1\n" + "\tbl sub_804D694\n" + "\tldr r1, _0804CE58 @ =gMain\n" + "\tmovs r3, 0x87\n" + "\tlsls r3, 3\n" + "\tadds r1, r3\n" + "\tb _0804CEC2\n" + "\t.align 2, 0\n" + "_0804CE58: .4byte gMain\n" + "_0804CE5C:\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tmovs r1, 0\n" + "\tstr r1, [sp]\n" + "\tmovs r2, 0x10\n" + "\tmovs r3, 0\n" + "\tbl BeginNormalPaletteFade\n" + "\tldr r1, _0804CE78 @ =gMain\n" + "\tmovs r5, 0x87\n" + "\tlsls r5, 3\n" + "\tadds r1, r5\n" + "\tb _0804CEC2\n" + "\t.align 2, 0\n" + "_0804CE78: .4byte gMain\n" + "_0804CE7C:\n" + "\tmovs r1, 0x82\n" + "\tlsls r1, 5\n" + "\tmovs r0, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0x2\n" + "\tbl sub_804D694\n" + "\tldr r1, _0804CE98 @ =gMain\n" + "\tmovs r7, 0x87\n" + "\tlsls r7, 3\n" + "\tadds r1, r7\n" + "\tb _0804CEC2\n" + "\t.align 2, 0\n" + "_0804CE98: .4byte gMain\n" + "_0804CE9C:\n" + "\tmovs r0, 0\n" + "\tbl sub_804F890\n" + "\tldr r1, _0804CEAC @ =gMain\n" + "\tmovs r0, 0x87\n" + "\tlsls r0, 3\n" + "\tadds r1, r0\n" + "\tb _0804CEC2\n" + "\t.align 2, 0\n" + "_0804CEAC: .4byte gMain\n" + "_0804CEB0:\n" + "\tmovs r0, 0x1\n" + "\tbl sub_804F890\n" + "\tbl sub_804F964\n" + "_0804CEBA:\n" + "\tldr r1, _0804CECC @ =gMain\n" + "\tmovs r2, 0x87\n" + "\tlsls r2, 3\n" + "\tadds r1, r2\n" + "_0804CEC2:\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "\tb _0804CEE6\n" + "\t.align 2, 0\n" + "_0804CECC: .4byte gMain\n" + "_0804CED0:\n" + "\tldr r0, _0804CF08 @ =gPaletteFade\n" + "\tldrb r1, [r0, 0x7]\n" + "\tmovs r0, 0x80\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _0804CEE6\n" + "\tldr r0, _0804CF0C @ =sub_804DFF0\n" + "\tstr r0, [r3]\n" + "\tldr r0, _0804CF10 @ =sub_804D638\n" + "\tbl SetMainCallback2\n" + "_0804CEE6:\n" + "\tbl RunTextPrinters\n" + "\tbl RunTasks\n" + "\tbl AnimateSprites\n" + "\tbl BuildOamBuffer\n" + "\tbl UpdatePaletteFade\n" + "\tadd sp, 0x28\n" + "\tpop {r3}\n" + "\tmov r8, r3\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0804CF08: .4byte gPaletteFade\n" + "_0804CF0C: .4byte sub_804DFF0\n" + "_0804CF10: .4byte sub_804D638"); +} +#endif //NONMATCHING + +#ifdef NONMATCHING +// Nonmatching behaviour is the same as the function above +void sub_804CF14(void) +{ + int i; + struct SpriteTemplate temp; + u8 id; + s32 width; + u32 xPos; + + switch (gMain.state) + { + case 0: + sub_804C600(); + gMain.state++; + break; + case 1: + gMain.state++; + sTradeMenuResourcesPtr->unk_A8 = 0; + break; + case 2: + gMain.state++; + break; + case 3: + gMain.state++; + break; + case 4: + CalculatePlayerPartyCount(); + gMain.state++; + break; + case 5: + if (gWirelessCommType != 0) + { + LoadWirelessStatusIndicatorSpriteGfx(); + CreateWirelessStatusIndicatorSprite(0, 0); + } + gMain.state++; + break; + case 6: + gMain.state++; + break; + case 7: + CalculateEnemyPartyCount(); + sTradeMenuResourcesPtr->partyCounts[0] = gPlayerPartyCount; + sTradeMenuResourcesPtr->partyCounts[1] = gEnemyPartyCount; + ClearWindowTilemap(0); + sub_804F020(0); + sub_804F020(1); + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[0]; i++) + { + sTradeMenuResourcesPtr->partyIcons[0][i] = CreateMonIcon( + GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL), + SpriteCB_MonIcon, + sTradeMonSpriteCoords[i][0] * 8 + 14, + sTradeMonSpriteCoords[i][1] * 8 - 12, + 1, + GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY), + TRUE + ); + } + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[1]; i++) + { + sTradeMenuResourcesPtr->partyIcons[1][i] = CreateMonIcon( + GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2, NULL), + SpriteCB_MonIcon, + sTradeMonSpriteCoords[i + 6][0] * 8 + 14, + sTradeMonSpriteCoords[i + 6][1] * 8 - 12, + 1, + GetMonData(&gEnemyParty[i], MON_DATA_PERSONALITY), + FALSE + ); + } + gMain.state++; + break; + case 8: + LoadHeldItemIcons(); + sub_812256C(sTradeMenuResourcesPtr->partyCounts, sTradeMenuResourcesPtr->partyIcons, 0); + gMain.state++; + break; + case 9: + sub_812256C(sTradeMenuResourcesPtr->partyCounts, sTradeMenuResourcesPtr->partyIcons, 1); + gMain.state++; + break; + case 10: + PSS_RenderTextToVramViaBuffer(gSaveBlock2Ptr->playerName, sSpriteTextTilePtrs[0], 0, 0, gDecompressionBuffer, 3); + id = GetMultiplayerId(); + PSS_RenderTextToVramViaBuffer(gLinkPlayers[id ^ 1].name, sSpriteTextTilePtrs[3], 0, 0, gDecompressionBuffer, 3); + PSS_RenderTextToVramViaBuffer(sTradeUITextPtrs[TRADEUITEXT_CANCEL], sSpriteTextTilePtrs[6], 0, 0, gDecompressionBuffer, 2); + RenderTextToVramViaBuffer(sTradeUITextPtrs[TRADEUITEXT_CHOOSE], sSpriteTextTilePtrs[8], 24); + gMain.state++; + sTradeMenuResourcesPtr->unk_A8 = 0; + break; + case 11: + if (sub_804F610()) + { + gMain.state++; + } + break; + case 12: + width = GetStringWidth(1, gSaveBlock2Ptr->playerName, 0); + xPos = (56 - width) / 2; + for (i = 0; i < 3; i++) + { + temp = sSpriteTemplate_Text; + temp.tileTag += i; + CreateSprite(&temp, xPos + sTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][0] + (i * 32), sTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][1], 1); + } + + /* + * These three lines are a pain to match due to register alloc and + * pointer arithmetic misbehavior. + */ + id = GetMultiplayerId(); + id ^= 1; + width = GetStringWidth(1, gLinkPlayers[id].name, 0); + xPos = (56 - width) / 2; + for (i = 0; i < 3; i++) + { + temp = sSpriteTemplate_Text; + temp.tileTag += i + 3; + CreateSprite(&temp, xPos + sTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][2] + (i * 32), sTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][3], 1); + } + gMain.state++; + break; + case 13: + temp = sSpriteTemplate_Text; + temp.tileTag += 6; + CreateSprite(&temp, 215, 151, 1); + temp = sSpriteTemplate_Text; + temp.tileTag += 7; + CreateSprite(&temp, 247, 151, 1); + + for (i = 0; i < PARTY_SIZE; i++) + { + temp = sSpriteTemplate_Text; + temp.tileTag += i + 8; + CreateSprite(&temp, (i * 32) + 24, 150, 1); + } + + if (sTradeMenuResourcesPtr->tradeMenuCursorPosition < 6) + sTradeMenuResourcesPtr->tradeMenuCursorPosition = sub_8138B20(); + else + sTradeMenuResourcesPtr->tradeMenuCursorPosition = sub_8138B20() + 6; + + sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx = CreateSprite(&sSpriteTemplate_TradeButtons, sTradeMonSpriteCoords[sTradeMenuResourcesPtr->tradeMenuCursorPosition][0] * 8 + 32, sTradeMonSpriteCoords[sTradeMenuResourcesPtr->tradeMenuCursorPosition][1] * 8, 2); + gMain.state = 16; + break; + case 16: + sub_804D694(0); + gMain.state++; + break; + case 17: + sub_804D694(1); + sTradeMenuResourcesPtr->unk_0 = 0; + sTradeMenuResourcesPtr->unk_1 = 0; + sub_804D764(); + gMain.state++; + break; + case 18: + gPaletteFade.bufferTransferDisabled = FALSE; + BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + gMain.state++; + break; + case 19: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + sub_804D694(2); + gMain.state++; + break; + case 20: + gMain.state++; + break; + case 21: + sub_804F964(); + gMain.state++; + break; + case 22: + if (!gPaletteFade.active) + { + SetMainCallback2(sub_804D638); + } + break; + } + + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} +#else +NAKED +void sub_804CF14(void) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r8\n" + "\tpush {r7}\n" + "\tsub sp, 0x24\n" + "\tldr r1, _0804CF38 @ =gMain\n" + "\tmovs r2, 0x87\n" + "\tlsls r2, 3\n" + "\tadds r0, r1, r2\n" + "\tldrb r0, [r0]\n" + "\tadds r2, r1, 0\n" + "\tcmp r0, 0x16\n" + "\tbls _0804CF2E\n" + "\tb _0804D4D2\n" + "_0804CF2E:\n" + "\tlsls r0, 2\n" + "\tldr r1, _0804CF3C @ =_0804CF40\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_0804CF38: .4byte gMain\n" + "_0804CF3C: .4byte _0804CF40\n" + "\t.align 2, 0\n" + "_0804CF40:\n" + "\t.4byte _0804CF9C\n" + "\t.4byte _0804CFB0\n" + "\t.4byte _0804CFB8\n" + "\t.4byte _0804CFC0\n" + "\t.4byte _0804CFC8\n" + "\t.4byte _0804CFDC\n" + "\t.4byte _0804D004\n" + "\t.4byte _0804D00C\n" + "\t.4byte _0804D150\n" + "\t.4byte _0804D178\n" + "\t.4byte _0804D19C\n" + "\t.4byte _0804D230\n" + "\t.4byte _0804D24C\n" + "\t.4byte _0804D320\n" + "\t.4byte _0804D4D2\n" + "\t.4byte _0804D4D2\n" + "\t.4byte _0804D414\n" + "\t.4byte _0804D41C\n" + "\t.4byte _0804D444\n" + "\t.4byte _0804D480\n" + "\t.4byte _0804D4A0\n" + "\t.4byte _0804D4A8\n" + "\t.4byte _0804D4C0\n" + "_0804CF9C:\n" + "\tbl sub_804C600\n" + "\tldr r1, _0804CFAC @ =gMain\n" + "\tmovs r3, 0x87\n" + "\tlsls r3, 3\n" + "\tadds r1, r3\n" + "\tb _0804D4B4\n" + "\t.align 2, 0\n" + "_0804CFAC: .4byte gMain\n" + "_0804CFB0:\n" + "\tmovs r5, 0x87\n" + "\tlsls r5, 3\n" + "\tadds r1, r2, r5\n" + "\tb _0804D200\n" + "_0804CFB8:\n" + "\tmovs r7, 0x87\n" + "\tlsls r7, 3\n" + "\tadds r1, r2, r7\n" + "\tb _0804D4B4\n" + "_0804CFC0:\n" + "\tmovs r0, 0x87\n" + "\tlsls r0, 3\n" + "\tadds r1, r2, r0\n" + "\tb _0804D4B4\n" + "_0804CFC8:\n" + "\tbl CalculatePlayerPartyCount\n" + "\tldr r1, _0804CFD8 @ =gMain\n" + "\tmovs r2, 0x87\n" + "\tlsls r2, 3\n" + "\tadds r1, r2\n" + "\tb _0804D4B4\n" + "\t.align 2, 0\n" + "_0804CFD8: .4byte gMain\n" + "_0804CFDC:\n" + "\tldr r0, _0804CFFC @ =gWirelessCommType\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbeq _0804CFF0\n" + "\tbl LoadWirelessStatusIndicatorSpriteGfx\n" + "\tmovs r0, 0\n" + "\tmovs r1, 0\n" + "\tbl CreateWirelessStatusIndicatorSprite\n" + "_0804CFF0:\n" + "\tldr r1, _0804D000 @ =gMain\n" + "\tmovs r3, 0x87\n" + "\tlsls r3, 3\n" + "\tadds r1, r3\n" + "\tb _0804D4B4\n" + "\t.align 2, 0\n" + "_0804CFFC: .4byte gWirelessCommType\n" + "_0804D000: .4byte gMain\n" + "_0804D004:\n" + "\tmovs r5, 0x87\n" + "\tlsls r5, 3\n" + "\tadds r1, r2, r5\n" + "\tb _0804D4B4\n" + "_0804D00C:\n" + "\tbl CalculateEnemyPartyCount\n" + "\tldr r4, _0804D12C @ =sTradeMenuResourcesPtr\n" + "\tldr r0, [r4]\n" + "\tldr r1, _0804D130 @ =gPlayerPartyCount\n" + "\tldrb r1, [r1]\n" + "\tadds r0, 0x36\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r4]\n" + "\tldr r1, _0804D134 @ =gEnemyPartyCount\n" + "\tldrb r1, [r1]\n" + "\tadds r0, 0x37\n" + "\tstrb r1, [r0]\n" + "\tmovs r0, 0\n" + "\tbl ClearWindowTilemap\n" + "\tmovs r0, 0\n" + "\tbl sub_804F020\n" + "\tmovs r0, 0x1\n" + "\tbl sub_804F020\n" + "\tmovs r6, 0\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0x36\n" + "\tldrb r0, [r0]\n" + "\tcmp r6, r0\n" + "\tbge _0804D0A8\n" + "\tmov r8, r4\n" + "\tldr r7, _0804D138 @ =sTradeMonSpriteCoords\n" + "_0804D048:\n" + "\tmovs r0, 0x64\n" + "\tadds r4, r6, 0\n" + "\tmuls r4, r0\n" + "\tldr r0, _0804D13C @ =gPlayerParty\n" + "\tadds r4, r0\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x41\n" + "\tmovs r2, 0\n" + "\tbl GetMonData\n" + "\tadds r5, r0, 0\n" + "\tlsls r5, 16\n" + "\tlsrs r5, 16\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0\n" + "\tbl GetMonData\n" + "\tldrb r2, [r7]\n" + "\tlsls r2, 19\n" + "\tmovs r1, 0xE0\n" + "\tlsls r1, 12\n" + "\tadds r2, r1\n" + "\tasrs r2, 16\n" + "\tldrb r3, [r7, 0x1]\n" + "\tlsls r3, 19\n" + "\tldr r1, _0804D140 @ =0xfff40000\n" + "\tadds r3, r1\n" + "\tasrs r3, 16\n" + "\tmovs r1, 0x1\n" + "\tstr r1, [sp]\n" + "\tstr r0, [sp, 0x4]\n" + "\tstr r1, [sp, 0x8]\n" + "\tadds r0, r5, 0\n" + "\tldr r1, _0804D144 @ =SpriteCB_MonIcon\n" + "\tbl CreateMonIcon\n" + "\tmov r2, r8\n" + "\tldr r1, [r2]\n" + "\tadds r1, 0x28\n" + "\tadds r1, r6\n" + "\tstrb r0, [r1]\n" + "\tadds r7, 0x2\n" + "\tadds r6, 0x1\n" + "\tldr r0, [r2]\n" + "\tadds r0, 0x36\n" + "\tldrb r0, [r0]\n" + "\tcmp r6, r0\n" + "\tblt _0804D048\n" + "_0804D0A8:\n" + "\tmovs r6, 0\n" + "\tldr r1, _0804D12C @ =sTradeMenuResourcesPtr\n" + "\tldr r0, [r1]\n" + "\tadds r0, 0x37\n" + "\tldrb r0, [r0]\n" + "\tcmp r6, r0\n" + "\tbge _0804D120\n" + "\tldr r0, _0804D138 @ =sTradeMonSpriteCoords\n" + "\tmov r8, r1\n" + "\tadds r7, r0, 0\n" + "\tadds r7, 0xC\n" + "_0804D0BE:\n" + "\tmovs r0, 0x64\n" + "\tadds r4, r6, 0\n" + "\tmuls r4, r0\n" + "\tldr r0, _0804D148 @ =gEnemyParty\n" + "\tadds r4, r0\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x41\n" + "\tmovs r2, 0\n" + "\tbl GetMonData\n" + "\tadds r5, r0, 0\n" + "\tlsls r5, 16\n" + "\tlsrs r5, 16\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0\n" + "\tbl GetMonData\n" + "\tldrb r2, [r7]\n" + "\tlsls r2, 19\n" + "\tmovs r3, 0xE0\n" + "\tlsls r3, 12\n" + "\tadds r2, r3\n" + "\tasrs r2, 16\n" + "\tldrb r3, [r7, 0x1]\n" + "\tlsls r3, 19\n" + "\tldr r1, _0804D140 @ =0xfff40000\n" + "\tadds r3, r1\n" + "\tasrs r3, 16\n" + "\tmovs r1, 0x1\n" + "\tstr r1, [sp]\n" + "\tstr r0, [sp, 0x4]\n" + "\tmovs r0, 0\n" + "\tstr r0, [sp, 0x8]\n" + "\tadds r0, r5, 0\n" + "\tldr r1, _0804D144 @ =SpriteCB_MonIcon\n" + "\tbl CreateMonIcon\n" + "\tmov r2, r8\n" + "\tldr r1, [r2]\n" + "\tadds r1, 0x2E\n" + "\tadds r1, r6\n" + "\tstrb r0, [r1]\n" + "\tadds r7, 0x2\n" + "\tadds r6, 0x1\n" + "\tldr r0, [r2]\n" + "\tadds r0, 0x37\n" + "\tldrb r0, [r0]\n" + "\tcmp r6, r0\n" + "\tblt _0804D0BE\n" + "_0804D120:\n" + "\tldr r1, _0804D14C @ =gMain\n" + "\tmovs r3, 0x87\n" + "\tlsls r3, 3\n" + "\tadds r1, r3\n" + "\tb _0804D4B4\n" + "\t.align 2, 0\n" + "_0804D12C: .4byte sTradeMenuResourcesPtr\n" + "_0804D130: .4byte gPlayerPartyCount\n" + "_0804D134: .4byte gEnemyPartyCount\n" + "_0804D138: .4byte sTradeMonSpriteCoords\n" + "_0804D13C: .4byte gPlayerParty\n" + "_0804D140: .4byte 0xfff40000\n" + "_0804D144: .4byte SpriteCB_MonIcon\n" + "_0804D148: .4byte gEnemyParty\n" + "_0804D14C: .4byte gMain\n" + "_0804D150:\n" + "\tbl LoadHeldItemIcons\n" + "\tldr r0, _0804D170 @ =sTradeMenuResourcesPtr\n" + "\tldr r1, [r0]\n" + "\tadds r0, r1, 0\n" + "\tadds r0, 0x36\n" + "\tadds r1, 0x28\n" + "\tmovs r2, 0\n" + "\tbl sub_812256C\n" + "\tldr r1, _0804D174 @ =gMain\n" + "\tmovs r5, 0x87\n" + "\tlsls r5, 3\n" + "\tadds r1, r5\n" + "\tb _0804D4B4\n" + "\t.align 2, 0\n" + "_0804D170: .4byte sTradeMenuResourcesPtr\n" + "_0804D174: .4byte gMain\n" + "_0804D178:\n" + "\tldr r0, _0804D194 @ =sTradeMenuResourcesPtr\n" + "\tldr r1, [r0]\n" + "\tadds r0, r1, 0\n" + "\tadds r0, 0x36\n" + "\tadds r1, 0x28\n" + "\tmovs r2, 0x1\n" + "\tbl sub_812256C\n" + "\tldr r1, _0804D198 @ =gMain\n" + "\tmovs r7, 0x87\n" + "\tlsls r7, 3\n" + "\tadds r1, r7\n" + "\tb _0804D4B4\n" + "\t.align 2, 0\n" + "_0804D194: .4byte sTradeMenuResourcesPtr\n" + "_0804D198: .4byte gMain\n" + "_0804D19C:\n" + "\tldr r0, _0804D214 @ =gSaveBlock2Ptr\n" + "\tldr r0, [r0]\n" + "\tldr r6, _0804D218 @ =sSpriteTextTilePtrs\n" + "\tldr r1, [r6]\n" + "\tldr r5, _0804D21C @ =gDecompressionBuffer\n" + "\tstr r5, [sp]\n" + "\tmovs r4, 0x3\n" + "\tstr r4, [sp, 0x4]\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0\n" + "\tbl PSS_RenderTextToVramViaBuffer\n" + "\tbl GetMultiplayerId\n" + "\tlsls r0, 24\n" + "\tmovs r1, 0x80\n" + "\tlsls r1, 17\n" + "\teors r1, r0\n" + "\tlsrs r1, 24\n" + "\tlsls r0, r1, 3\n" + "\tsubs r0, r1\n" + "\tlsls r0, 2\n" + "\tldr r1, _0804D220 @ =gLinkPlayers + 8\n" + "\tadds r0, r1\n" + "\tldr r1, [r6, 0xC]\n" + "\tstr r5, [sp]\n" + "\tstr r4, [sp, 0x4]\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0\n" + "\tbl PSS_RenderTextToVramViaBuffer\n" + "\tldr r4, _0804D224 @ =sTradeUITextPtrs\n" + "\tldr r0, [r4]\n" + "\tldr r1, [r6, 0x18]\n" + "\tstr r5, [sp]\n" + "\tmovs r2, 0x2\n" + "\tstr r2, [sp, 0x4]\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0\n" + "\tbl PSS_RenderTextToVramViaBuffer\n" + "\tldr r0, [r4, 0x4]\n" + "\tldr r1, [r6, 0x20]\n" + "\tmovs r2, 0x18\n" + "\tbl RenderTextToVramViaBuffer\n" + "\tldr r1, _0804D228 @ =gMain\n" + "\tmovs r0, 0x87\n" + "\tlsls r0, 3\n" + "\tadds r1, r0\n" + "_0804D200:\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tmovs r2, 0\n" + "\tstrb r0, [r1]\n" + "\tldr r0, _0804D22C @ =sTradeMenuResourcesPtr\n" + "\tldr r0, [r0]\n" + "\tadds r0, 0xA8\n" + "\tstrb r2, [r0]\n" + "\tb _0804D4D2\n" + "\t.align 2, 0\n" + "_0804D214: .4byte gSaveBlock2Ptr\n" + "_0804D218: .4byte sSpriteTextTilePtrs\n" + "_0804D21C: .4byte gDecompressionBuffer\n" + "_0804D220: .4byte gLinkPlayers + 8\n" + "_0804D224: .4byte sTradeUITextPtrs\n" + "_0804D228: .4byte gMain\n" + "_0804D22C: .4byte sTradeMenuResourcesPtr\n" + "_0804D230:\n" + "\tbl sub_804F610\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _0804D23C\n" + "\tb _0804D4D2\n" + "_0804D23C:\n" + "\tldr r1, _0804D248 @ =gMain\n" + "\tmovs r2, 0x87\n" + "\tlsls r2, 3\n" + "\tadds r1, r2\n" + "\tb _0804D4B4\n" + "\t.align 2, 0\n" + "_0804D248: .4byte gMain\n" + "_0804D24C:\n" + "\tldr r0, _0804D30C @ =gSaveBlock2Ptr\n" + "\tldr r1, [r0]\n" + "\tmovs r0, 0x1\n" + "\tmovs r2, 0\n" + "\tbl GetStringWidth\n" + "\tadds r1, r0, 0\n" + "\tmovs r0, 0x38\n" + "\tsubs r0, r1\n" + "\tlsrs r1, r0, 31\n" + "\tadds r0, r1\n" + "\tmovs r6, 0\n" + "\tadd r5, sp, 0xC\n" + "\tldr r3, _0804D310 @ =sTradeUnknownSpriteCoords\n" + "\tmov r8, r3\n" + "\tasrs r0, 1\n" + "\tldrb r7, [r3, 0x4]\n" + "\tadds r4, r0, r7\n" + "_0804D270:\n" + "\tadd r1, sp, 0xC\n" + "\tldr r0, _0804D314 @ =sSpriteTemplate_Text\n" + "\tldm r0!, {r2,r3,r7}\n" + "\tstm r1!, {r2,r3,r7}\n" + "\tldm r0!, {r2,r3,r7}\n" + "\tstm r1!, {r2,r3,r7}\n" + "\tldrh r0, [r5]\n" + "\tadds r0, r6\n" + "\tstrh r0, [r5]\n" + "\tlsls r1, r4, 16\n" + "\tasrs r1, 16\n" + "\tadd r0, sp, 0xC\n" + "\tmov r3, r8\n" + "\tldrb r2, [r3, 0x5]\n" + "\tmovs r3, 0x1\n" + "\tbl CreateSprite\n" + "\tadds r4, 0x20\n" + "\tadds r6, 0x1\n" + "\tcmp r6, 0x2\n" + "\tble _0804D270\n" + "\tbl GetMultiplayerId\n" + "\tlsls r0, 24\n" + "\tmovs r1, 0x80\n" + "\tlsls r1, 17\n" + "\teors r1, r0\n" + "\tlsrs r1, 24\n" + "\tlsls r0, r1, 3\n" + "\tsubs r0, r1\n" + "\tlsls r0, 2\n" + "\tldr r1, _0804D318 @ =gLinkPlayers + 8\n" + "\tadds r1, r0, r1\n" + "\tmovs r0, 0x1\n" + "\tmovs r2, 0\n" + "\tbl GetStringWidth\n" + "\tadds r1, r0, 0\n" + "\tmovs r0, 0x38\n" + "\tsubs r0, r1\n" + "\tlsrs r1, r0, 31\n" + "\tadds r0, r1\n" + "\tmovs r6, 0\n" + "\tadd r5, sp, 0xC\n" + "\tldr r7, _0804D310 @ =sTradeUnknownSpriteCoords\n" + "\tmov r8, r7\n" + "\tasrs r0, 1\n" + "\tmov r1, r8\n" + "\tldrb r1, [r1, 0x6]\n" + "\tadds r4, r0, r1\n" + "_0804D2D4:\n" + "\tadd r1, sp, 0xC\n" + "\tldr r0, _0804D314 @ =sSpriteTemplate_Text\n" + "\tldm r0!, {r2,r3,r7}\n" + "\tstm r1!, {r2,r3,r7}\n" + "\tldm r0!, {r2,r3,r7}\n" + "\tstm r1!, {r2,r3,r7}\n" + "\tadds r0, r6, 0x3\n" + "\tldrh r1, [r5]\n" + "\tadds r0, r1\n" + "\tstrh r0, [r5]\n" + "\tlsls r1, r4, 16\n" + "\tasrs r1, 16\n" + "\tadd r0, sp, 0xC\n" + "\tmov r3, r8\n" + "\tldrb r2, [r3, 0x7]\n" + "\tmovs r3, 0x1\n" + "\tbl CreateSprite\n" + "\tadds r4, 0x20\n" + "\tadds r6, 0x1\n" + "\tcmp r6, 0x2\n" + "\tble _0804D2D4\n" + "\tldr r1, _0804D31C @ =gMain\n" + "\tmovs r5, 0x87\n" + "\tlsls r5, 3\n" + "\tadds r1, r5\n" + "\tb _0804D4B4\n" + "\t.align 2, 0\n" + "_0804D30C: .4byte gSaveBlock2Ptr\n" + "_0804D310: .4byte sTradeUnknownSpriteCoords\n" + "_0804D314: .4byte sSpriteTemplate_Text\n" + "_0804D318: .4byte gLinkPlayers + 8\n" + "_0804D31C: .4byte gMain\n" + "_0804D320:\n" + "\tldr r4, _0804D3B0 @ =sSpriteTemplate_Text\n" + "\tadd r1, sp, 0xC\n" + "\tadds r0, r4, 0\n" + "\tldm r0!, {r2,r3,r7}\n" + "\tstm r1!, {r2,r3,r7}\n" + "\tldm r0!, {r2,r5,r7}\n" + "\tstm r1!, {r2,r5,r7}\n" + "\tadd r1, sp, 0xC\n" + "\tadds r0, r1, 0\n" + "\tldrh r0, [r0]\n" + "\tadds r0, 0x6\n" + "\tstrh r0, [r1]\n" + "\tadds r0, r1, 0\n" + "\tmovs r1, 0xD7\n" + "\tmovs r2, 0x97\n" + "\tmovs r3, 0x1\n" + "\tbl CreateSprite\n" + "\tadd r0, sp, 0xC\n" + "\tldm r4!, {r3,r5,r7}\n" + "\tstm r0!, {r3,r5,r7}\n" + "\tldm r4!, {r1-r3}\n" + "\tstm r0!, {r1-r3}\n" + "\tadd r1, sp, 0xC\n" + "\tadds r0, r1, 0\n" + "\tldrh r0, [r0]\n" + "\tadds r0, 0x7\n" + "\tstrh r0, [r1]\n" + "\tadds r0, r1, 0\n" + "\tmovs r1, 0xF7\n" + "\tmovs r2, 0x97\n" + "\tmovs r3, 0x1\n" + "\tbl CreateSprite\n" + "\tmovs r6, 0\n" + "\tadd r4, sp, 0xC\n" + "\tmovs r5, 0xC0\n" + "\tlsls r5, 13\n" + "_0804D36C:\n" + "\tadd r1, sp, 0xC\n" + "\tldr r0, _0804D3B0 @ =sSpriteTemplate_Text\n" + "\tldm r0!, {r2,r3,r7}\n" + "\tstm r1!, {r2,r3,r7}\n" + "\tldm r0!, {r2,r3,r7}\n" + "\tstm r1!, {r2,r3,r7}\n" + "\tadds r0, r6, 0\n" + "\tadds r0, 0x8\n" + "\tldrh r7, [r4]\n" + "\tadds r0, r7\n" + "\tstrh r0, [r4]\n" + "\tasrs r1, r5, 16\n" + "\tadd r0, sp, 0xC\n" + "\tmovs r2, 0x96\n" + "\tmovs r3, 0x1\n" + "\tbl CreateSprite\n" + "\tmovs r0, 0x80\n" + "\tlsls r0, 14\n" + "\tadds r5, r0\n" + "\tadds r6, 0x1\n" + "\tcmp r6, 0x5\n" + "\tble _0804D36C\n" + "\tldr r4, _0804D3B4 @ =sTradeMenuResourcesPtr\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0x35\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0x5\n" + "\tbhi _0804D3B8\n" + "\tbl sub_8138B20\n" + "\tldr r1, [r4]\n" + "\tb _0804D3C0\n" + "\t.align 2, 0\n" + "_0804D3B0: .4byte sSpriteTemplate_Text\n" + "_0804D3B4: .4byte sTradeMenuResourcesPtr\n" + "_0804D3B8:\n" + "\tbl sub_8138B20\n" + "\tldr r1, [r4]\n" + "\tadds r0, 0x6\n" + "_0804D3C0:\n" + "\tadds r1, 0x35\n" + "\tstrb r0, [r1]\n" + "\tldr r0, _0804D404 @ =sSpriteTemplate_TradeButtons\n" + "\tldr r3, _0804D408 @ =sTradeMonSpriteCoords\n" + "\tldr r4, _0804D40C @ =sTradeMenuResourcesPtr\n" + "\tldr r1, [r4]\n" + "\tadds r1, 0x35\n" + "\tldrb r2, [r1]\n" + "\tlsls r2, 1\n" + "\tadds r1, r2, r3\n" + "\tldrb r1, [r1]\n" + "\tlsls r1, 19\n" + "\tmovs r5, 0x80\n" + "\tlsls r5, 14\n" + "\tadds r1, r5\n" + "\tasrs r1, 16\n" + "\tadds r3, 0x1\n" + "\tadds r2, r3\n" + "\tldrb r2, [r2]\n" + "\tlsls r2, 3\n" + "\tmovs r3, 0x2\n" + "\tbl CreateSprite\n" + "\tldr r1, [r4]\n" + "\tadds r1, 0x34\n" + "\tstrb r0, [r1]\n" + "\tldr r0, _0804D410 @ =gMain\n" + "\tmovs r7, 0x87\n" + "\tlsls r7, 3\n" + "\tadds r0, r7\n" + "\tmovs r1, 0x10\n" + "\tstrb r1, [r0]\n" + "\tb _0804D4D2\n" + "\t.align 2, 0\n" + "_0804D404: .4byte sSpriteTemplate_TradeButtons\n" + "_0804D408: .4byte sTradeMonSpriteCoords\n" + "_0804D40C: .4byte sTradeMenuResourcesPtr\n" + "_0804D410: .4byte gMain\n" + "_0804D414:\n" + "\tmovs r0, 0\n" + "\tbl sub_804D694\n" + "\tb _0804D4AC\n" + "_0804D41C:\n" + "\tmovs r0, 0x1\n" + "\tbl sub_804D694\n" + "\tldr r2, _0804D43C @ =sTradeMenuResourcesPtr\n" + "\tldr r0, [r2]\n" + "\tmovs r1, 0\n" + "\tstrb r1, [r0]\n" + "\tldr r0, [r2]\n" + "\tstrb r1, [r0, 0x1]\n" + "\tbl sub_804D764\n" + "\tldr r1, _0804D440 @ =gMain\n" + "\tmovs r2, 0x87\n" + "\tlsls r2, 3\n" + "\tadds r1, r2\n" + "\tb _0804D4B4\n" + "\t.align 2, 0\n" + "_0804D43C: .4byte sTradeMenuResourcesPtr\n" + "_0804D440: .4byte gMain\n" + "_0804D444:\n" + "\tldr r2, _0804D478 @ =gPaletteFade\n" + "\tldrb r1, [r2, 0x8]\n" + "\tmovs r0, 0x7F\n" + "\tands r0, r1\n" + "\tstrb r0, [r2, 0x8]\n" + "\tmovs r4, 0x1\n" + "\tnegs r4, r4\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x10\n" + "\tmovs r2, 0\n" + "\tbl BlendPalettes\n" + "\tmovs r0, 0\n" + "\tstr r0, [sp]\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0\n" + "\tmovs r2, 0x10\n" + "\tmovs r3, 0\n" + "\tbl BeginNormalPaletteFade\n" + "\tldr r1, _0804D47C @ =gMain\n" + "\tmovs r3, 0x87\n" + "\tlsls r3, 3\n" + "\tadds r1, r3\n" + "\tb _0804D4B4\n" + "\t.align 2, 0\n" + "_0804D478: .4byte gPaletteFade\n" + "_0804D47C: .4byte gMain\n" + "_0804D480:\n" + "\tmovs r1, 0x82\n" + "\tlsls r1, 5\n" + "\tmovs r0, 0\n" + "\tbl SetGpuReg\n" + "\tmovs r0, 0x2\n" + "\tbl sub_804D694\n" + "\tldr r1, _0804D49C @ =gMain\n" + "\tmovs r5, 0x87\n" + "\tlsls r5, 3\n" + "\tadds r1, r5\n" + "\tb _0804D4B4\n" + "\t.align 2, 0\n" + "_0804D49C: .4byte gMain\n" + "_0804D4A0:\n" + "\tmovs r7, 0x87\n" + "\tlsls r7, 3\n" + "\tadds r1, r2, r7\n" + "\tb _0804D4B4\n" + "_0804D4A8:\n" + "\tbl sub_804F964\n" + "_0804D4AC:\n" + "\tldr r1, _0804D4BC @ =gMain\n" + "\tmovs r0, 0x87\n" + "\tlsls r0, 3\n" + "\tadds r1, r0\n" + "_0804D4B4:\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "\tb _0804D4D2\n" + "\t.align 2, 0\n" + "_0804D4BC: .4byte gMain\n" + "_0804D4C0:\n" + "\tldr r0, _0804D4F0 @ =gPaletteFade\n" + "\tldrb r1, [r0, 0x7]\n" + "\tmovs r0, 0x80\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _0804D4D2\n" + "\tldr r0, _0804D4F4 @ =sub_804D638\n" + "\tbl SetMainCallback2\n" + "_0804D4D2:\n" + "\tbl RunTasks\n" + "\tbl AnimateSprites\n" + "\tbl BuildOamBuffer\n" + "\tbl UpdatePaletteFade\n" + "\tadd sp, 0x24\n" + "\tpop {r3}\n" + "\tmov r8, r3\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0804D4F0: .4byte gPaletteFade\n" + "_0804D4F4: .4byte sub_804D638"); +} +#endif //NONMATCHING + +static void sub_804D4F8(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void sub_804D50C(void) +{ + if (++sTradeMenuResourcesPtr->unk_A8 >= 16) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sTradeMenuResourcesPtr->unk_6F = 10; + } +} + +static void sub_804D548(void) +{ + if (!gPaletteFade.active) + { + gSelectedTradeMonPositions[0] = sTradeMenuResourcesPtr->tradeMenuCursorPosition; + gSelectedTradeMonPositions[1] = sTradeMenuResourcesPtr->unk_7E; + if (gWirelessCommType != 0) + { + sTradeMenuResourcesPtr->unk_6F = 16; + } + else + { + sub_800AA80(32); + sTradeMenuResourcesPtr->unk_6F = 13; + } + } +} + +static void sub_804D5A4(void) +{ + gMain.savedCallback = CB2_ReturnFromLinkTrade; + if (gWirelessCommType != 0) + { + if (IsLinkRfuTaskFinished()) + { + Free(sSpriteTextTileBuffer); + FreeAllWindowBuffers(); + Free(sTradeMenuResourcesPtr); + gMain.callback1 = NULL; + DestroyWirelessStatusIndicatorSprite(); + SetMainCallback2(CB2_InitTradeAnim_LinkTrade); + } + } + else + { + if (gReceivedRemoteLinkPlayers == 0) + { + Free(sSpriteTextTileBuffer); + FreeAllWindowBuffers(); + Free(sTradeMenuResourcesPtr); + gMain.callback1 = NULL; + SetMainCallback2(CB2_InitTradeAnim_LinkTrade); + } + } +} + +static void sub_804D638(void) +{ + RunTradeMenuCallback(); + RunScheduledLinkTasks(); + sub_804EAE4(0); + sub_804EAE4(1); + SetGpuReg(REG_OFFSET_BG2HOFS, sTradeMenuResourcesPtr->unk_0++); + SetGpuReg(REG_OFFSET_BG3HOFS, sTradeMenuResourcesPtr->unk_1--); + RunTextPrinters_CheckPrinter0Active(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_804D694(u8 state) +{ + int i; + + switch (state) + { + case 0: + LoadPalette(gTradeMenu_Pal, 0x00, 0x60); + LoadBgTiles(1, gTradeMenu_Gfx, 0x1280, 0); + CopyToBgTilemapBufferRect_ChangePalette(1, gUnknown_8E9E9FC, 0, 0, 32, 20, 0); + LoadBgTilemap(2, sTradeStripesBG2Tilemap, 0x800, 0); + break; + case 1: + LoadBgTilemap(3, sTradeStripesBG3Tilemap, 0x800, 0); + sub_804F284(0); + sub_804F284(1); + CopyBgTilemapBufferToVram(1); + break; + case 2: + for (i = 0; i < 4; i++) + { + // BG0 and BG1 coords only + SetGpuReg(REG_OFFSET_BG0HOFS + 2 * i, 0); + } + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + break; + } +} + +static void sub_804D764(void) +{ + int i; + for (i = 0; i < PARTY_SIZE; i++) + { + if (i < sTradeMenuResourcesPtr->partyCounts[0]) + { + gSprites[sTradeMenuResourcesPtr->partyIcons[0][i]].invisible = FALSE; + sTradeMenuResourcesPtr->tradeMenuOptionsActive[i] = TRUE; + } + else + { + sTradeMenuResourcesPtr->tradeMenuOptionsActive[i] = FALSE; + } + if (i < sTradeMenuResourcesPtr->partyCounts[1]) + { + gSprites[sTradeMenuResourcesPtr->partyIcons[1][i]].invisible = FALSE; + sTradeMenuResourcesPtr->tradeMenuOptionsActive[i + 6] = TRUE; + } + else + { + sTradeMenuResourcesPtr->tradeMenuOptionsActive[i + 6] = FALSE; + } + } + sTradeMenuResourcesPtr->tradeMenuOptionsActive[12] = TRUE; +} + +static void Trade_Memcpy(void *dest, const void *src, size_t size) +{ + int i; + char *_dest = dest; + const char *_src = src; + for (i = 0; i < size; i++) + _dest[i] = _src[i]; +} + +static bool8 shedinja_maker_maybe(void) +{ + u8 id = GetMultiplayerId(); + int i; + struct Pokemon * mon; + + switch (sTradeMenuResourcesPtr->unk_69) + { + case 0: + Trade_Memcpy(gBlockSendBuffer, &gPlayerParty[0], 2 * sizeof(struct Pokemon)); + sTradeMenuResourcesPtr->unk_69++; + sTradeMenuResourcesPtr->unk_A8 = 0; + break; + case 1: + if (IsLinkTaskFinished()) + { + if (GetBlockReceivedStatus() == 0) + { + sTradeMenuResourcesPtr->unk_69++; + } + else + { + ResetBlockReceivedFlags(); + sTradeMenuResourcesPtr->unk_69++; + } + } + break; + case 3: + if (id == 0) + { + sub_800A474(1); + } + sTradeMenuResourcesPtr->unk_69++; + break; + case 4: + if (GetBlockReceivedStatus() == 3) + { + Trade_Memcpy(&gEnemyParty[0], gBlockRecvBuffer[id ^ 1], 2 * sizeof(struct Pokemon)); + ResetBlockReceivedFlags(); + sTradeMenuResourcesPtr->unk_69++; + } + break; + case 5: + Trade_Memcpy(gBlockSendBuffer, &gPlayerParty[2], 2 * sizeof(struct Pokemon)); + sTradeMenuResourcesPtr->unk_69++; + break; + case 7: + if (id == 0) + { + sub_800A474(1); + } + sTradeMenuResourcesPtr->unk_69++; + break; + case 8: + if (GetBlockReceivedStatus() == 3) + { + Trade_Memcpy(&gEnemyParty[2], gBlockRecvBuffer[id ^ 1], 200); + ResetBlockReceivedFlags(); + sTradeMenuResourcesPtr->unk_69++; + } + break; + case 9: + Trade_Memcpy(gBlockSendBuffer, &gPlayerParty[4], 200); + sTradeMenuResourcesPtr->unk_69++; + break; + case 11: + if (id == 0) + { + sub_800A474(1); + } + sTradeMenuResourcesPtr->unk_69++; + break; + case 12: + if (GetBlockReceivedStatus() == 3) + { + Trade_Memcpy(&gEnemyParty[4], gBlockRecvBuffer[id ^ 1], 200); + ResetBlockReceivedFlags(); + sTradeMenuResourcesPtr->unk_69++; + } + break; + case 13: + Trade_Memcpy(gBlockSendBuffer, gSaveBlock1Ptr->mail, 220); + sTradeMenuResourcesPtr->unk_69++; + break; + case 15: + if (id == 0) + { + sub_800A474(3); + } + sTradeMenuResourcesPtr->unk_69++; + break; + case 16: + if (GetBlockReceivedStatus() == 3) + { + Trade_Memcpy(gLinkPartnerMail, gBlockRecvBuffer[id ^ 1], 216); + ResetBlockReceivedFlags(); + sTradeMenuResourcesPtr->unk_69++; + } + break; + case 17: + Trade_Memcpy(gBlockSendBuffer, gSaveBlock1Ptr->giftRibbons, 11); + sTradeMenuResourcesPtr->unk_69++; + break; + case 19: + if (id == 0) + { + sub_800A474(4); + } + sTradeMenuResourcesPtr->unk_69++; + break; + case 20: + if (GetBlockReceivedStatus() == 3) + { + Trade_Memcpy(sTradeMenuResourcesPtr->unk_A9, gBlockRecvBuffer[id ^ 1], 11); + ResetBlockReceivedFlags(); + sTradeMenuResourcesPtr->unk_69++; + } + break; + case 21: + for (i = 0, mon = gEnemyParty; i < PARTY_SIZE; mon++, i++) + { + u8 name[POKEMON_NAME_LENGTH + 1]; + u16 species = GetMonData(mon, MON_DATA_SPECIES); + + if (species != SPECIES_NONE) + { + if (species == SPECIES_SHEDINJA && GetMonData(mon, MON_DATA_LANGUAGE) != LANGUAGE_JAPANESE) + { + GetMonData(mon, MON_DATA_NICKNAME, name); + + if (!StringCompareWithoutExtCtrlCodes(name, gJPText_Shedinja)) + { + SetMonData(mon, MON_DATA_NICKNAME, gSpeciesNames[SPECIES_SHEDINJA]); + } + } + } + } + return TRUE; + case 2: + case 6: + case 10: + case 14: + case 18: + sTradeMenuResourcesPtr->unk_A8++; + if (sTradeMenuResourcesPtr->unk_A8 > 10) + { + sTradeMenuResourcesPtr->unk_A8 = 0; + sTradeMenuResourcesPtr->unk_69++; + } + break; + } + return FALSE; +} + +static void sub_804DBAC(void) +{ + RenderTextToVramViaBuffer(gUnknown_841E0A5, (u8 *)OBJ_VRAM0 + sTradeMenuResourcesPtr->unk_72 * 32, 0x18); +} + +static void sub_804DBD4(u8 a0, u8 a1) +{ + if (a1 & 1) + { + switch (gBlockRecvBuffer[0][0]) + { + case 0xEEAA: + sTradeMenuResourcesPtr->unk_78 = 2; + break; + case 0xAABB: + sTradeMenuResourcesPtr->unk_78 = 1; + break; + case 0xBBBB: + sTradeMenuResourcesPtr->unk_7A = 1; + break; + case 0xBBCC: + sTradeMenuResourcesPtr->unk_7A = 2; + break; + } + ResetBlockReceivedFlag(0); + } + + if (a1 & 2) + { + switch (gBlockRecvBuffer[1][0]) + { + case 0xEEAA: + sTradeMenuResourcesPtr->unk_79 = 2; + break; + case 0xAABB: + sTradeMenuResourcesPtr->unk_7E = gBlockRecvBuffer[1][1] + 6; + sTradeMenuResourcesPtr->unk_79 = 1; + break; + case 0xBBBB: + sTradeMenuResourcesPtr->unk_7B = 1; + break; + case 0xBBCC: + sTradeMenuResourcesPtr->unk_7B = 2; + break; + } + ResetBlockReceivedFlag(1); + } +} + +static void sub_804DCF4(u8 a0, u8 a1) +{ + if (a1 & 1) + { + switch (gBlockRecvBuffer[0][0]) + { + case 0xEEBB: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + PrintTradeErrorOrStatusMessage(TRADESTATMSG_WAITINGFORFRIEND); + sTradeMenuResourcesPtr->unk_6F = 11; + break; + case 0xEECC: + PrintTradeErrorOrStatusMessage(TRADESTATMSG_FRIENDWANTSTOTRADE); + sTradeMenuResourcesPtr->unk_6F = 8; + break; + case 0xDDDD: + sTradeMenuResourcesPtr->unk_7E = gBlockRecvBuffer[0][1] + 6; + rbox_fill_rectangle(0); + sub_804EAAC(sTradeMenuResourcesPtr->tradeMenuCursorPosition); + sub_804EAAC(sTradeMenuResourcesPtr->unk_7E); + sTradeMenuResourcesPtr->unk_6F = 7; + break; + case 0xCCDD: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sTradeMenuResourcesPtr->unk_6F = 10; + break; + case 0xDDEE: + PrintTradeErrorOrStatusMessage(TRADESTATMSG_CANCELED); + sTradeMenuResourcesPtr->unk_6F = 8; + } + ResetBlockReceivedFlag(0); + } + + if (a1 & 2) + ResetBlockReceivedFlag(1); +} + +static void sub_804DDF0(void) +{ + if (sTradeMenuResourcesPtr->unk_78 && sTradeMenuResourcesPtr->unk_79) + { + if (sTradeMenuResourcesPtr->unk_78 == 1 && sTradeMenuResourcesPtr->unk_79 == 1) + { + sTradeMenuResourcesPtr->unk_6F = 6; + sTradeMenuResourcesPtr->linkData[0] = 0xDDDD; + sTradeMenuResourcesPtr->linkData[1] = sTradeMenuResourcesPtr->tradeMenuCursorPosition; + ScheduleLinkTaskWithDelay(5, 0); + sTradeMenuResourcesPtr->unk_78 = sTradeMenuResourcesPtr->unk_79 = 0; + } + else if (sTradeMenuResourcesPtr->unk_78 == 1 && sTradeMenuResourcesPtr->unk_79 == 2) + { + PrintTradeErrorOrStatusMessage(TRADESTATMSG_CANCELED); + sTradeMenuResourcesPtr->linkData[0] = 0xEECC; + sTradeMenuResourcesPtr->linkData[1] = 0; + ScheduleLinkTaskWithDelay(5, 0); + sTradeMenuResourcesPtr->unk_7A = sTradeMenuResourcesPtr->unk_7B = 0; + sTradeMenuResourcesPtr->unk_78 = sTradeMenuResourcesPtr->unk_79 = 0; + sTradeMenuResourcesPtr->unk_6F = 8; + } + else if (sTradeMenuResourcesPtr->unk_78 == 2 && sTradeMenuResourcesPtr->unk_79 == 1) + { + PrintTradeErrorOrStatusMessage(TRADESTATMSG_FRIENDWANTSTOTRADE); + sTradeMenuResourcesPtr->linkData[0] = 0xDDEE; + sTradeMenuResourcesPtr->linkData[1] = 0; + ScheduleLinkTaskWithDelay(5, 0); + sTradeMenuResourcesPtr->unk_7A = sTradeMenuResourcesPtr->unk_7B = 0; + sTradeMenuResourcesPtr->unk_78 = sTradeMenuResourcesPtr->unk_79 = 0; + sTradeMenuResourcesPtr->unk_6F = 8; + } + else if (sTradeMenuResourcesPtr->unk_78 == 2 && sTradeMenuResourcesPtr->unk_79 == 2) + { + sTradeMenuResourcesPtr->linkData[0] = 0xEEBB; + sTradeMenuResourcesPtr->linkData[1] = 0; + ScheduleLinkTaskWithDelay(5, 0); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sTradeMenuResourcesPtr->unk_78 = sTradeMenuResourcesPtr->unk_79 = 0; + sTradeMenuResourcesPtr->unk_6F = 11; + } + } + + if (sTradeMenuResourcesPtr->unk_7A && sTradeMenuResourcesPtr->unk_7B) + { + if (sTradeMenuResourcesPtr->unk_7A == 1 && sTradeMenuResourcesPtr->unk_7B == 1) + { + sTradeMenuResourcesPtr->linkData[0] = 0xCCDD; + sTradeMenuResourcesPtr->linkData[1] = 0; + ScheduleLinkTaskWithDelay(5, 0); + sTradeMenuResourcesPtr->unk_7A = 0; + sTradeMenuResourcesPtr->unk_7B = 0; + sTradeMenuResourcesPtr->unk_6F = 9; + } + + if (sTradeMenuResourcesPtr->unk_7A == 2 || sTradeMenuResourcesPtr->unk_7B == 2) + { + PrintTradeErrorOrStatusMessage(TRADESTATMSG_CANCELED); + sTradeMenuResourcesPtr->linkData[0] = 0xDDEE; + sTradeMenuResourcesPtr->linkData[1] = 0; + ScheduleLinkTaskWithDelay(5, 0); + sTradeMenuResourcesPtr->unk_7A = 0; + sTradeMenuResourcesPtr->unk_7B = 0; + sTradeMenuResourcesPtr->unk_6F = 8; + } + } +} + +static void sub_804DFF0(void) +{ + u8 mpId = GetMultiplayerId(); + u8 status; + if ((status = GetBlockReceivedStatus())) + { + if (mpId == 0) + sub_804DBD4(0, status); + else + sub_804DCF4(mpId, status); + } + if (mpId == 0) + sub_804DDF0(); +} + +static u8 sub_804E028(u8 oldPosition, u8 direction) +{ + int i; + u8 newPosition = 0; + + for (i = 0; i < 6; i++) + { + if (sTradeMenuResourcesPtr->tradeMenuOptionsActive[sCursorMoveDestinations[oldPosition][direction][i]] == TRUE) + { + newPosition = sCursorMoveDestinations[oldPosition][direction][i]; + break; + } + } + + return newPosition; +} + + +static void TradeMenuMoveCursor(u8 *tradeMenuCursorPosition, u8 direction) +{ + u8 newPosition = sub_804E028(*tradeMenuCursorPosition, direction); + + if (newPosition == 12) // CANCEL + { + StartSpriteAnim(&gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx], 1); + gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].pos1.x = 224; + gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].pos1.y = 160; + } + else + { + StartSpriteAnim(&gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx], 0); + gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].pos1.x = sTradeMonSpriteCoords[newPosition][0] * 8 + 32; + gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].pos1.y = sTradeMonSpriteCoords[newPosition][1] * 8; + } + + if (*tradeMenuCursorPosition != newPosition) + { + PlaySE(SE_SELECT); + } + + *tradeMenuCursorPosition = newPosition; +} + +static void sub_804E134(void) +{ + PrintTradeErrorOrStatusMessage(TRADESTATMSG_COMMSTANDBY); + sTradeMenuResourcesPtr->unk_6F = 5; + + if (GetMultiplayerId() == 1) + { + sTradeMenuResourcesPtr->linkData[0] = 0xAABB; + sTradeMenuResourcesPtr->linkData[1] = sTradeMenuResourcesPtr->tradeMenuCursorPosition; + SendBlock(bitmask_all_link_players_but_self(), sTradeMenuResourcesPtr->linkData, 0x14); + } + else + { + sTradeMenuResourcesPtr->unk_78 = 1; + } +} + +static void sub_804E194(void) +{ + int i; + + if (JOY_REPT(DPAD_UP)) + { + TradeMenuMoveCursor(&sTradeMenuResourcesPtr->tradeMenuCursorPosition, 0); + } + else if (JOY_REPT(DPAD_DOWN)) + { + TradeMenuMoveCursor(&sTradeMenuResourcesPtr->tradeMenuCursorPosition, 1); + } + else if (JOY_REPT(DPAD_LEFT)) + { + TradeMenuMoveCursor(&sTradeMenuResourcesPtr->tradeMenuCursorPosition, 2); + } + else if (JOY_REPT(DPAD_RIGHT)) + { + TradeMenuMoveCursor(&sTradeMenuResourcesPtr->tradeMenuCursorPosition, 3); + } + + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + + if (sTradeMenuResourcesPtr->tradeMenuCursorPosition < 6) // PlayerParty + { + DrawTextBorderOuter(1, 1, 14); + FillWindowPixelBuffer(1, PIXEL_FILL(1)); + UnionRoomAndTradeMenuPrintOptions(1, 3, 16, 2, gUnknown_8261EE4); + Menu_InitCursor(1, 3, 0, 0, 16, 2, 0); + PutWindowTilemap(1); + CopyWindowToVram(1, 3); + sTradeMenuResourcesPtr->unk_6F = 1; + } + else if (sTradeMenuResourcesPtr->tradeMenuCursorPosition < 12) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sTradeMenuResourcesPtr->unk_6F = 2; + } + else if (sTradeMenuResourcesPtr->tradeMenuCursorPosition == 12) + { + CreateYesNoMenu(&gUnknown_8261FC4, 3, 0, 2, 0x001, 14, 0); + sTradeMenuResourcesPtr->unk_6F = 4; + RenderTextToVramViaBuffer(sTradeUITextPtrs[TRADEUITEXT_ASKCANCEL], (void *)OBJ_VRAM0 + sTradeMenuResourcesPtr->unk_72 * 32, 24); + } + } + if (JOY_NEW(R_BUTTON)) + { + for (i = 0; i < 10; i++) + sTradeMenuResourcesPtr->linkData[i] = i; + SendBlock(bitmask_all_link_players_but_self(), sTradeMenuResourcesPtr->linkData, 20); + } +} + +static void sub_804E330(void) +{ + sub_804F3B4(); + sTradeMenuResourcesPtr->unk_6F = 0; + gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].invisible = FALSE; + RenderTextToVramViaBuffer(sTradeUITextPtrs[TRADEUITEXT_CHOOSE], (void *)OBJ_VRAM0 + sTradeMenuResourcesPtr->unk_72 * 32, 24); +} + +static void sub_804E388(void) +{ + switch (Menu_ProcessInputNoWrapAround()) + { + case MENU_B_PRESSED: + PlaySE(SE_SELECT); + sub_804E330(); + break; + case MENU_NOTHING_CHOSEN: + break; + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sTradeMenuResourcesPtr->unk_6F = 2; + break; + case 1: + switch (sub_804FA14(gPlayerParty, gPlayerPartyCount, sTradeMenuResourcesPtr->tradeMenuCursorPosition)) + { + case 0: + sub_804E134(); + gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].invisible = TRUE; + break; + case 1: + ScheduleLinkTaskWithDelay(3, 3); + sTradeMenuResourcesPtr->unk_6F = 8; + break; + case 2: + case 4: + ScheduleLinkTaskWithDelay(3, 6); + sTradeMenuResourcesPtr->unk_6F = 8; + break; + case 3: + case 5: + ScheduleLinkTaskWithDelay(3, 7); + sTradeMenuResourcesPtr->unk_6F = 8; + break; + } + break; + } +} + +static void sub_804E46C(void) +{ + if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + sub_804E330(); + } +} + +static void sub_804E494(void) +{ + if (!gPaletteFade.active) + { + if (sTradeMenuResourcesPtr->tradeMenuCursorPosition < 6) + ShowPokemonSummaryScreen(gPlayerParty, sTradeMenuResourcesPtr->tradeMenuCursorPosition, sTradeMenuResourcesPtr->partyCounts[0] - 1, sub_804CF14, 4); + else + ShowPokemonSummaryScreen(gEnemyParty, sTradeMenuResourcesPtr->tradeMenuCursorPosition - 6, sTradeMenuResourcesPtr->partyCounts[1] - 1, sub_804CF14, 4); + FreeAllWindowBuffers(); + } +} + +static u8 sub_804E50C(u8 *flags, u8 partyCount, u8 cursorPos) +{ + s32 i; + u16 species; + u8 count = 0; + for (i = 0; i < partyCount; i++) + { + if (cursorPos != i) + count += flags[i]; + } + species = GetMonData(&gEnemyParty[sTradeMenuResourcesPtr->unk_7E % 6], MON_DATA_SPECIES); + if ((species == SPECIES_DEOXYS || species == SPECIES_MEW) && !GetMonData(&gEnemyParty[sTradeMenuResourcesPtr->unk_7E % 6], MON_DATA_OBEDIENCE)) + return 2; + if (count != 0) + count = 1; + return count; +} + +static void sub_804E5A0(void) +{ + int i; + u8 arr[12]; + + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[0]; i++) + { + arr[i] = sTradeMenuResourcesPtr->unk_45[0][i]; + } + + switch (sub_804E50C(arr, sTradeMenuResourcesPtr->partyCounts[0], sTradeMenuResourcesPtr->tradeMenuCursorPosition)) + { + case 0: + ScheduleLinkTaskWithDelay(3, 3); + sTradeMenuResourcesPtr->linkData[0] = 0xBBCC; + ScheduleLinkTaskWithDelay(0xB4, 0); + break; + case 1: + ScheduleLinkTaskWithDelay(3, 1); + sTradeMenuResourcesPtr->linkData[0] = 0xBBBB; + if (IsLinkTaskFinished()) + { + SendBlock(bitmask_all_link_players_but_self(), sTradeMenuResourcesPtr->linkData, 20); + } + break; + case 2: + ScheduleLinkTaskWithDelay(3, 8); + sTradeMenuResourcesPtr->linkData[0] = 0xBBCC; + ScheduleLinkTaskWithDelay(0xB4, 0); + break; + } +} + +static void sub_804E674(void) +{ + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: + sub_804E5A0(); + sTradeMenuResourcesPtr->unk_6F = 100; + PutWindowTilemap(17); + break; + case 1: + case MENU_B_PRESSED: + ScheduleLinkTaskWithDelay(3, 1); + if (IsLinkTaskFinished()) + { + sTradeMenuResourcesPtr->linkData[0] = 0xBBCC; + SendBlock(bitmask_all_link_players_but_self(), sTradeMenuResourcesPtr->linkData, 20); + } + sTradeMenuResourcesPtr->unk_6F = 100; + PutWindowTilemap(17); + break; + } +} + +static void sub_804E6FC(void) +{ + int i; + + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[1] - 4; i++) + { + PutWindowTilemap(i + 12); + CopyWindowToVram(i + 12, 1); + } +} + +static void sub_804E744(void) +{ + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: + PrintTradeErrorOrStatusMessage(TRADESTATMSG_WAITINGFORFRIEND); + sTradeMenuResourcesPtr->linkData[0] = 0xEEAA; + sTradeMenuResourcesPtr->linkData[1] = 0; + ScheduleLinkTaskWithDelay(5, 0); + gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].invisible = TRUE; + sTradeMenuResourcesPtr->unk_6F = 100; + sub_804E6FC(); + break; + case 1: + case MENU_B_PRESSED: + PlaySE(SE_SELECT); + sub_804E330(); + break; + } +} + +static void sub_804E7C8(void) +{ + if (GetMultiplayerId() == 0) + { + rbox_fill_rectangle(0); + sub_804EAAC(sTradeMenuResourcesPtr->tradeMenuCursorPosition); + sub_804EAAC(sTradeMenuResourcesPtr->unk_7E); + } + sTradeMenuResourcesPtr->unk_6F = 7; +} + +static void sub_804E804(void) +{ + if (sTradeMenuResourcesPtr->unk_74[0] == 5 && sTradeMenuResourcesPtr->unk_74[1] == 5) + { + sub_804DBAC(); + sTradeMenuResourcesPtr->unk_6F = 14; + } +} + +static void sub_804E830(void) +{ + sTradeMenuResourcesPtr->unk_A8++; + + if (sTradeMenuResourcesPtr->unk_A8 > 120) + { + CreateYesNoMenu(&gUnknown_8261FC4, 3, 0, 2, 1, 14, 0); + sTradeMenuResourcesPtr->unk_A8 = 0; + sTradeMenuResourcesPtr->unk_6F = 3; + } +} + +static void sub_804E880(void) +{ + int i; + + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + rbox_fill_rectangle(0); + rbox_fill_rectangle(1); + + for (i = 0; i < 4; i++) + { + FillWindowPixelBuffer(i + 14, PIXEL_FILL(0)); + rbox_fill_rectangle(i + 14); + } + + sub_804F3C8(0); + sub_804F3C8(1); + sTradeMenuResourcesPtr->unk_6F = 0; + gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].invisible = FALSE; + } +} + +static void sub_804E908(void) +{ + if (!gPaletteFade.active) + { + if (gWirelessCommType) + { + sub_800AB9C(); + } + else + { + sub_800AA80(12); + } + + sTradeMenuResourcesPtr->unk_6F = 12; + } +} + +static void sub_804E944(void) +{ + if (gWirelessCommType) + { + if (IsLinkTaskFinished()) + { + Free(sSpriteTextTileBuffer); + Free(sTradeMenuResourcesPtr); + FreeAllWindowBuffers(); + DestroyWirelessStatusIndicatorSprite(); + SetMainCallback2(c2_8056854); + } + } + else + { + if (!gReceivedRemoteLinkPlayers) + { + Free(sSpriteTextTileBuffer); + Free(sTradeMenuResourcesPtr); + FreeAllWindowBuffers(); + SetMainCallback2(c2_8056854); + } + } +} + +static void sub_804E9C0(void) +{ + if (!sub_80FA484(FALSE)) + { + sub_800AB9C(); + sTradeMenuResourcesPtr->unk_6F = 13; + } +} + +static void RunTradeMenuCallback(void) +{ + switch (sTradeMenuResourcesPtr->unk_6F) + { + case 0: + sub_804E194(); + break; + case 1: + sub_804E388(); + break; + case 2: + sub_804E494(); + break; + case 3: + sub_804E674(); + break; + case 4: + sub_804E744(); + break; + case 6: + sub_804E7C8(); + break; + case 7: + sub_804E804(); + break; + case 8: + sub_804E880(); + break; + case 9: + sub_804D50C(); + break; + case 10: + sub_804D548(); + break; + case 11: + sub_804E908(); + break; + case 12: + sub_804E944(); + break; + case 13: + sub_804D5A4(); + break; + case 14: + sub_804E830(); + break; + case 15: + sub_804E46C(); + break; + case 16: + sub_804E9C0(); + break; + } +} + +static void sub_804EAAC(u8 a0) +{ + u8 whichParty = a0 / PARTY_SIZE; + + if (sTradeMenuResourcesPtr->unk_74[whichParty] == 0) + { + sTradeMenuResourcesPtr->unk_74[whichParty] = 1; + sTradeMenuResourcesPtr->unk_76[whichParty] = a0; + } +} + +static void sub_804EAE4(u8 a0) +{ + s8 nameStringWidth; + u8 nickname[20]; + u8 movesString[56]; + u8 i; + u8 partyIdx; + u8 whichParty; + u8 monIdx = sTradeMenuResourcesPtr->unk_76[a0]; + + whichParty = 1; + if (sTradeMenuResourcesPtr->unk_76[a0] < PARTY_SIZE) + whichParty = 0; + partyIdx = monIdx % PARTY_SIZE; + nameStringWidth = 0; + + switch (sTradeMenuResourcesPtr->unk_74[a0]) + { + case 1: + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[a0]; i++) + { + gSprites[sTradeMenuResourcesPtr->partyIcons[0][i + (whichParty * PARTY_SIZE)]].invisible = TRUE; + } + + for (i = 0; i < 6; i++) + { + ClearWindowTilemap(i + (a0 * 6 + 2)); + } + + gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].invisible = FALSE; + gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].data[0] = 20; + gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].data[2] = (sTradeMonSpriteCoords[whichParty * PARTY_SIZE][0] + sTradeMonSpriteCoords[whichParty * PARTY_SIZE + 1][0]) / 2 * 8 + 14; + gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].data[4] = (sTradeMonSpriteCoords[whichParty * PARTY_SIZE][1] * 8) - 12; + StoreSpriteCallbackInData6(&gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]], SpriteCB_MonIcon); + sTradeMenuResourcesPtr->unk_74[a0]++; + sub_8075490(&gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]]); + CopyToBgTilemapBufferRect_ChangePalette(1, sTradePartyBoxTilemap, a0 * 15, 0, 15, 17, 0); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(0); + + if (whichParty == 0) + sub_804F3B4(); + break; + case 2: + if (gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].callback == SpriteCB_MonIcon) + sTradeMenuResourcesPtr->unk_74[a0] = 3; + break; + case 3: + CopyToBgTilemapBufferRect_ChangePalette(1, sTradeMovesBoxTilemap, whichParty * 15, 0, 15, 17, 0); + CopyBgTilemapBufferToVram(1); + gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].pos1.x = (sTradeMonSpriteCoords[whichParty * PARTY_SIZE][0] + sTradeMonSpriteCoords[whichParty * PARTY_SIZE + 1][0]) / 2 * 8 + 14; + gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].pos1.y = (sTradeMonSpriteCoords[whichParty * PARTY_SIZE][1] * 8) - 12; + gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].pos2.x = 0; + gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].pos2.y = 0; + nameStringWidth = sub_804EE6C(nickname, whichParty, partyIdx); + AddTextPrinterParameterized3((a0 * 2) + 14, 0, (80 - nameStringWidth) / 2, 4, gUnknown_8261F18, 0, nickname); + sub_804EED4(movesString, whichParty, partyIdx); + AddTextPrinterParameterized4((a0 * 2) + 15, 1, 0, 0, 0, 0, gUnknown_8261F18, 0, movesString); + PutWindowTilemap((a0 * 2) + 14); + CopyWindowToVram((a0 * 2) + 14, 3); + PutWindowTilemap((a0 * 2) + 15); + CopyWindowToVram((a0 * 2) + 15, 3); + sTradeMenuResourcesPtr->unk_74[a0]++; + break; + case 4: + sub_804F08C(a0, partyIdx, gUnknown_8262055[a0][0] + 4, gUnknown_8262055[a0][1] + 1, gUnknown_8262055[a0][0], gUnknown_8262055[a0][1]); + sTradeMenuResourcesPtr->unk_74[a0]++; + break; + } +} + +static u8 sub_804EE6C(u8 *dest, u8 whichParty, u8 partyIdx) +{ + u8 nickname[11]; + if (whichParty == 0) + GetMonData(&gPlayerParty[partyIdx], MON_DATA_NICKNAME, nickname); + else + GetMonData(&gEnemyParty[partyIdx], MON_DATA_NICKNAME, nickname); + StringCopy10(dest, nickname); + return GetStringWidth(0, dest, GetFontAttribute(0, FONTATTR_LETTER_SPACING)); +} + +static void sub_804EED4(u8 *a0, u8 a1, u8 a2) +{ + u16 moves[MAX_MON_MOVES]; + u16 i; + + if (!sTradeMenuResourcesPtr->unk_51[a1][a2]) + { + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (!a1) + { + moves[i] = GetMonData(&gPlayerParty[a2], i + MON_DATA_MOVE1, NULL); + } + else + { + moves[i] = GetMonData(&gEnemyParty[a2], i + MON_DATA_MOVE1, NULL); + } + } + + StringCopy(a0, gUnknown_8261EB6); + + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (moves[i] != MOVE_NONE) + { + StringAppend(a0, gMoveNames[moves[i]]); + } + + StringAppend(a0, gUnknown_8261EC7); + } + } + else + { + StringCopy(a0, gUnknown_8261EB6); + StringAppend(a0, gUnknown_841E09F); + } +} + +static void sub_804EFB4(u8 whichParty, u8 windowId, const u8 *str) +{ + u8 xPos; + s8 speed; + windowId += (whichParty * PARTY_SIZE) + 2; + speed = 0; + xPos = (64u - GetStringWidth(0, str, GetFontAttribute(0, FONTATTR_LETTER_SPACING))) / 2; + AddTextPrinterParameterized3(windowId, 0, xPos, 4, gUnknown_8261F18, speed, str); + PutWindowTilemap(windowId); + CopyWindowToVram(windowId, 3); +} + +static void sub_804F020(u8 whichParty) +{ + u8 buff[20]; + u8 nickname[30]; + struct Pokemon * party = whichParty == 0 ? gPlayerParty : gEnemyParty; + u8 i; + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[whichParty]; i++) + { + GetMonData(&party[i], MON_DATA_NICKNAME, buff); + StringCopy10(nickname, buff); + sub_804EFB4(whichParty, i, nickname); + } +} + +static void sub_804F08C(u8 whichParty, u8 monIdx, u8 a2, u8 a3, u8 a4, u8 a5) +{ + u8 level; + u32 r2; + u8 gender; + u8 nickname[12]; + + CopyToBgTilemapBufferRect_ChangePalette(1, gTradeMenuMonBox_Tilemap, a4, a5, 6, 3, 0); + CopyBgTilemapBufferToVram(1); + + if (whichParty == 0) + level = GetMonData(&gPlayerParty[monIdx], MON_DATA_LEVEL, NULL); + else + level = GetMonData(&gEnemyParty[monIdx], MON_DATA_LEVEL, NULL); + + if (sTradeMenuResourcesPtr->unk_51[whichParty][monIdx] == 0) + { + if (level / 10 != 0) + sTradeMenuResourcesPtr->tilemapBuffer[a2 + (a3 * 32)] = (level / 10) + 0x60; + + sTradeMenuResourcesPtr->tilemapBuffer[a2 + (a3 * 32) + 1] = (level % 10) + 0x70; + } + else + { + sTradeMenuResourcesPtr->tilemapBuffer[a2 + (a3 * 32) - 32] = sTradeMenuResourcesPtr->tilemapBuffer[a2 + (a3 * 32) - 33]; + sTradeMenuResourcesPtr->tilemapBuffer[a2 + (a3 * 32) - 31] = sTradeMenuResourcesPtr->tilemapBuffer[a2 + (a3 * 32) - 36] | 0x400; + } + + if (sTradeMenuResourcesPtr->unk_51[whichParty][monIdx] != 0) + { + r2 = 0x480; + } + else + { + if (whichParty == 0) + { + gender = GetMonGender(&gPlayerParty[monIdx]); + GetMonData(&gPlayerParty[monIdx], MON_DATA_NICKNAME, nickname); + } + else + { + gender = GetMonGender(&gEnemyParty[monIdx]); + GetMonData(&gEnemyParty[monIdx], MON_DATA_NICKNAME, nickname); + } + + switch (gender) + { + case MON_MALE: + r2 = !NameHasGenderSymbol(nickname, MON_MALE) ? 0x84 : 0x83; + break; + case MON_FEMALE: + r2 = !NameHasGenderSymbol(nickname, MON_FEMALE) ? 0x85 : 0x83; + break; + default: + r2 = 0x83; + break; + } + } + sTradeMenuResourcesPtr->tilemapBuffer[(a3 - 1) * 32 + a2 + 1] = r2; +} + +#ifdef NONMATCHING +// Instruction swap when setting r5 and r4 +static void sub_804F284(u8 whichParty) +{ + s32 i; + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[whichParty]; i++) + { + sub_804F08C( + whichParty, + i, + gUnknown_8261E5A[0][whichParty][i][0], + gUnknown_8261E5A[0][whichParty][i][1], + gUnknown_8261E5A[1][whichParty][i][0], + gUnknown_8261E5A[1][whichParty][i][1] + ); + } +} +#else +NAKED +static void sub_804F284(u8 whichParty) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tsub sp, 0x8\n" + "\tlsls r0, 24\n" + "\tlsrs r6, r0, 24\n" + "\tmovs r7, 0\n" + "\tldr r0, _0804F2DC @ =sTradeMenuResourcesPtr\n" + "\tldr r0, [r0]\n" + "\tadds r0, 0x36\n" + "\tadds r0, r6\n" + "\tldrb r0, [r0]\n" + "\tcmp r7, r0\n" + "\tbge _0804F2D4\n" + "\tlsls r0, r6, 1\n" + "\tadds r0, r6\n" + "\tldr r1, _0804F2E0 @ =gUnknown_8261E5A\n" + "\tlsls r0, 2\n" + "\tadds r5, r0, r1\n" + "\tldr r1, _0804F2E4 @ =gUnknown_8261E5A+24\n" + "\tadds r4, r0, r1\n" + "_0804F2AA:\n" + "\tlsls r1, r7, 24\n" + "\tlsrs r1, 24\n" + "\tldrb r2, [r5]\n" + "\tldrb r3, [r5, 0x1]\n" + "\tldrb r0, [r4]\n" + "\tstr r0, [sp]\n" + "\tldrb r0, [r4, 0x1]\n" + "\tstr r0, [sp, 0x4]\n" + "\tadds r0, r6, 0\n" + "\tbl sub_804F08C\n" + "\tadds r5, 0x2\n" + "\tadds r4, 0x2\n" + "\tadds r7, 0x1\n" + "\tldr r0, _0804F2DC @ =sTradeMenuResourcesPtr\n" + "\tldr r0, [r0]\n" + "\tadds r0, 0x36\n" + "\tadds r0, r6\n" + "\tldrb r0, [r0]\n" + "\tcmp r7, r0\n" + "\tblt _0804F2AA\n" + "_0804F2D4:\n" + "\tadd sp, 0x8\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0804F2DC: .4byte sTradeMenuResourcesPtr\n" + "_0804F2E0: .4byte gUnknown_8261E5A\n" + "_0804F2E4: .4byte gUnknown_8261E5A+24"); +} +#endif //NONMATCHING + +static void sub_804F2E8(u8 whichParty) +{ + int i; + + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[whichParty]; i++) + { + gSprites[sTradeMenuResourcesPtr->partyIcons[whichParty][i]].invisible = FALSE; + gSprites[sTradeMenuResourcesPtr->partyIcons[whichParty][i]].pos1.x = sTradeMonSpriteCoords[(whichParty * PARTY_SIZE) + i][0] * 8 + 14; + gSprites[sTradeMenuResourcesPtr->partyIcons[whichParty][i]].pos1.y = sTradeMonSpriteCoords[(whichParty * PARTY_SIZE) + i][1] * 8 - 12; + gSprites[sTradeMenuResourcesPtr->partyIcons[whichParty][i]].pos2.x = 0; + gSprites[sTradeMenuResourcesPtr->partyIcons[whichParty][i]].pos2.y = 0; + } +} + +static void sub_804F3B4(void) +{ + rbox_fill_rectangle(1); + sub_804F020(1); +} + +static void sub_804F3C8(u8 whichParty) +{ + CopyToBgTilemapBufferRect_ChangePalette(1, sTradePartyBoxTilemap, 15 * whichParty, 0, 15, 17, 0); + CopyBgTilemapBufferToVram(1); + sub_804F284(whichParty); + sub_804F020(whichParty); + sub_804F2E8(whichParty); + RenderTextToVramViaBuffer(sTradeUITextPtrs[TRADEUITEXT_CHOOSE], (void *)OBJ_VRAM0 + 32 * sTradeMenuResourcesPtr->unk_72, 24); + sTradeMenuResourcesPtr->unk_74[whichParty] = 0; +} + +static void TradeMenuAction_Summary(u8 taskId) +{ + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(0); +} + +static void TradeMenuAction_Trade(u8 taskId) +{ + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(0); +} + +static void ScheduleLinkTaskWithDelay(u16 delay, u8 kind) +{ + int i; + for (i = 0; i < 4; i++) + { + if (!sTradeMenuResourcesPtr->cron[i].active) + { + sTradeMenuResourcesPtr->cron[i].delay = delay; + sTradeMenuResourcesPtr->cron[i].kind = kind; + sTradeMenuResourcesPtr->cron[i].active = TRUE; + break; + } + } +} + +static void RunScheduledLinkTasks(void) +{ + int i; + + for (i = 0; i < 4; i++) + { + if (sTradeMenuResourcesPtr->cron[i].active) + { + if (sTradeMenuResourcesPtr->cron[i].delay != 0) + { + sTradeMenuResourcesPtr->cron[i].delay--; + } + else + { + switch (sTradeMenuResourcesPtr->cron[i].kind) + { + case 0: + SendBlock(bitmask_all_link_players_but_self(), sTradeMenuResourcesPtr->linkData, 20); + break; + case 1: + PrintTradeErrorOrStatusMessage(TRADESTATMSG_COMMSTANDBY); + break; + case 2: + PrintTradeErrorOrStatusMessage(TRADESTATMSG_ONLYMON); + break; + case 3: + case 4: + case 5: + PrintTradeErrorOrStatusMessage(TRADESTATMSG_ONLYMON2); + break; + case 6: + PrintTradeErrorOrStatusMessage(TRADESTATMSG_YOURMONCANTBETRADED); + break; + case 7: + PrintTradeErrorOrStatusMessage(TRADESTATMSG_EGGCANTBETRADED); + break; + case 8: + PrintTradeErrorOrStatusMessage(TRADESTATMSG_PARTNERMONCANTBETRADED); + break; + } + sTradeMenuResourcesPtr->cron[i].active = FALSE; + } + } + } +} + +static void PrintTradeErrorOrStatusMessage(u8 idx) +{ + FillWindowPixelBuffer(0, PIXEL_FILL(1)); + AddTextPrinterParameterized(0, 3, sTradeErrorOrStatusMessagePtrs[idx], 0, 2, 0xFF, NULL); + DrawTextBorderOuter(0, 0x014, 12); + PutWindowTilemap(0); + CopyWindowToVram(0, 3); +} + +static bool8 sub_804F610(void) +{ + struct SpriteSheet sheet; + + if (sTradeMenuResourcesPtr->unk_A8 < 14) + { + sheet.data = sSpriteTextTilePtrs[sTradeMenuResourcesPtr->unk_A8]; + sheet.size = 0x100; + sheet.tag = 200 + sTradeMenuResourcesPtr->unk_A8; + } + + switch (sTradeMenuResourcesPtr->unk_A8) + { + case 0 ... 7: + LoadSpriteSheet(&sheet); + sTradeMenuResourcesPtr->unk_A8++; + break; + case 8: + sTradeMenuResourcesPtr->unk_72 = LoadSpriteSheet(&sheet); + sTradeMenuResourcesPtr->unk_A8++; + break; + case 9 ... 13: + LoadSpriteSheet(&sheet); + sTradeMenuResourcesPtr->unk_A8++; + break; + case 14: + LoadSpritePalette(&sSpritePalette_Text); + sTradeMenuResourcesPtr->unk_A8++; + break; + case 15: + LoadSpritePalette(&sTradeButtons_SpritePal); + sTradeMenuResourcesPtr->unk_A8++; + break; + case 16: + LoadSpriteSheet(&sTradeButtons_SpriteSheet); + sTradeMenuResourcesPtr->unk_A8++; + break; + case 17: + sTradeMenuResourcesPtr->unk_A8 = 0; + return TRUE; + } + + return FALSE; +} + +static void RenderTextToVramViaBuffer(const u8 *name, u8 *dest, u8 unused) +{ + PSS_RenderTextToVramViaBuffer(name, dest, 0, 0, gDecompressionBuffer, 6); +} + +static void sub_804F748(u8 who) +{ + int i; + + switch (who) + { + case 0: + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[who]; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) == TRUE) + { + sTradeMenuResourcesPtr->unk_45[who][i] = 0; + sTradeMenuResourcesPtr->unk_51[who][i] = 1; + } + else if (GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0) + { + sTradeMenuResourcesPtr->unk_45[who][i] = 0; + sTradeMenuResourcesPtr->unk_51[who][i] = 0; + } + else + { + sTradeMenuResourcesPtr->unk_45[who][i] = 1; + sTradeMenuResourcesPtr->unk_51[who][i] = 0; + } + } + break; + case 1: + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[who]; i++) + { + if (GetMonData(&gEnemyParty[i], MON_DATA_IS_EGG) == TRUE) + { + sTradeMenuResourcesPtr->unk_45[who][i] = 0; + sTradeMenuResourcesPtr->unk_51[who][i] = 1; + } + else if (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0) + { + sTradeMenuResourcesPtr->unk_45[who][i] = 0; + sTradeMenuResourcesPtr->unk_51[who][i] = 0; + } + else + { + sTradeMenuResourcesPtr->unk_45[who][i] = 1; + sTradeMenuResourcesPtr->unk_51[who][i] = 0; + } + } + break; + } +} + +static void sub_804F890(u8 who) +{ + u16 i, curHp, maxHp; + + switch (who) + { + case 0: + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[0]; i++) + { + curHp = GetMonData(&gPlayerParty[i], MON_DATA_HP); + maxHp = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP); + sTradeMenuResourcesPtr->unk_5D[0][i] = GetHPBarLevel(curHp, maxHp); + } + break; + case 1: + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[1]; i++) + { + curHp = GetMonData(&gEnemyParty[i], MON_DATA_HP); + maxHp = GetMonData(&gEnemyParty[i], MON_DATA_MAX_HP); + sTradeMenuResourcesPtr->unk_5D[1][i] = GetHPBarLevel(curHp, maxHp); + } + break; + } +} + +static void sub_804F964(void) +{ + int i, j; + for (i = 0; i < 2; i++) + { + for (j = 0; j < sTradeMenuResourcesPtr->partyCounts[i]; j++) + { + MonIcon_SetAnim(&gSprites[sTradeMenuResourcesPtr->partyIcons[i][j]], 4 - sTradeMenuResourcesPtr->unk_5D[i][j]); + } + } +} + +static void sub_804F9D8(void) +{ + int i; + for (i = 0; i < 11; i++) + { + if (gSaveBlock1Ptr->giftRibbons[i] == 0 && sTradeMenuResourcesPtr->unk_A9[i] != 0) + gSaveBlock1Ptr->giftRibbons[i] = sTradeMenuResourcesPtr->unk_A9[i]; + } +} + +static u32 sub_804FA14(struct Pokemon * party, int partyCount, int cursorPos) +{ + int i, sum; + struct LinkPlayer * player; + int species[6]; + int species2[6]; + + for (i = 0; i < partyCount; i++) + { + species2[i] = GetMonData(&party[i], MON_DATA_SPECIES2); + species[i] = GetMonData(&party[i], MON_DATA_SPECIES); + } + + if (!IsNationalPokedexEnabled()) + { + if (species2[cursorPos] > SPECIES_MEW) + { + return 2; + } + if (species2[cursorPos] == SPECIES_NONE) + { + return 3; + } + } + + player = &gLinkPlayers[GetMultiplayerId() ^ 1]; + if ((player->version & 0xFF) != VERSION_RUBY && + (player->version & 0xFF) != VERSION_SAPPHIRE) + { + if ((player->name[10] & 0xF) == 0) + { + if (species2[cursorPos] == SPECIES_EGG) + { + return 5; + } + + if (species2[cursorPos] > SPECIES_MEW) + { + return 4; + } + } + } + + if (species[cursorPos] == SPECIES_DEOXYS || species[cursorPos] == SPECIES_MEW) + { + if (!GetMonData(&party[cursorPos], MON_DATA_OBEDIENCE)) + { + return 4; + } + } + + for (i = 0; i < partyCount; i++) + { + if (species2[i] == SPECIES_EGG) + { + species2[i] = SPECIES_NONE; + } + } + + for (sum = 0, i = 0; i < partyCount; i++) + { + if (i != cursorPos) + { + sum += species2[i]; + } + } + + if (sum != 0) + { + return 0; + } + else + { + return 1; + } +} + +s32 sub_804FB34(void) +{ + s32 val; + u16 version; + + if (gReceivedRemoteLinkPlayers != 0) + { + val = 0; + version = (gLinkPlayers[GetMultiplayerId() ^ 1].version & 0xFF); + + if (version == VERSION_FIRE_RED || version == VERSION_LEAF_GREEN) + { + // this value could actually be anything 0 or less + val = 0; + } + else if (version == VERSION_RUBY || version == VERSION_SAPPHIRE) + { + val = 1; + } + else + { + val = 2; + } + + if (val > 0) + { + if (gLinkPlayers[GetMultiplayerId()].name[10] & 0xF0) + { + if (val == 2) + { + if (gLinkPlayers[GetMultiplayerId() ^ 1].name[10] & 0xF0) + { + return 0; + } + else + { + return 2; + } + } + } + else + { + return 1; + } + } + } + return 0; +} + +static bool32 IsDeoxysOrMewUntradable(u16 species, bool8 isObedientBitSet) +{ + if (species == SPECIES_DEOXYS || species == SPECIES_MEW) + { + if (!isObedientBitSet) + return TRUE; + } + return FALSE; +} + +int sub_804FBEC(struct UnkLinkRfuStruct_02022B14Substruct a0, struct UnkLinkRfuStruct_02022B14Substruct a1, u16 species1, u16 species2, u8 type, u16 species3, u8 isObedientBitSet) +{ + u8 r9 = a0.unk_01_0; + u8 r4 = a0.unk_00_7; + u8 r10 = a1.unk_01_0; + u8 r0 = a1.unk_00_7; + u8 r1 = a1.unk_01_2; + u8 r2; + + if (r1 == VERSION_FIRE_RED || r1 == VERSION_LEAF_GREEN) + { + r2 = 0; + } + else + { + r2 = 1; + } + if (r2) + { + if (!r4) + { + return 8; + } + else if (!r0) + { + return 9; + } + } + + if (IsDeoxysOrMewUntradable(species3, isObedientBitSet)) + { + return 4; + } + + if (species2 == SPECIES_EGG) + { + if (species1 != species2) + { + return 2; + } + } + else + { + if (gBaseStats[species1].type1 != type && gBaseStats[species1].type2 != type) + { + return 1; + } + } + + if (species1 == SPECIES_EGG && species1 != species2) + { + return 3; + } + + if (!r9) + { + if (species1 == SPECIES_EGG) + { + return 6; + } + + if (species1 > SPECIES_MEW) + { + return 4; + } + + if (species2 > SPECIES_MEW) + { + return 5; + } + } + + if (!r10 && species1 > SPECIES_MEW) + { + return 7; + } + + return 0; +} + +int Trade_CanTradeSelectedMon(struct UnkLinkRfuStruct_02022B14Substruct a0, u16 species, u16 a2, u8 a3) +{ + u8 canTradeEggAndNational = a0.unk_01_0; + + if (IsDeoxysOrMewUntradable(a2, a3)) + { + return 1; + } + + if (canTradeEggAndNational) + { + return 0; + } + + if (species == SPECIES_EGG) + { + return 2; + } + + if (species > SPECIES_MEW && species != SPECIES_EGG) + { + return 1; + } + + return 0; +} diff --git a/src/trade_scene.c b/src/trade_scene.c new file mode 100644 index 000000000..94fdadd5d --- /dev/null +++ b/src/trade_scene.c @@ -0,0 +1,2874 @@ +#include "global.h" +#include "task.h" +#include "malloc.h" +#include "bg.h" +#include "gpu_regs.h" +#include "util.h" +#include "window.h" +#include "sound.h" +#include "decompress.h" +#include "palette.h" +#include "trade.h" +#include "link.h" +#include "librfu.h" +#include "link_rfu.h" +#include "text.h" +#include "mevent.h" +#include "graphics.h" +#include "strings.h" +#include "menu.h" +#include "data.h" +#include "battle.h" +#include "script.h" +#include "event_data.h" +#include "string_util.h" +#include "mail_data.h" +#include "pokeball.h" +#include "evolution_scene.h" +#include "overworld.h" +#include "field_fadetransition.h" +#include "quest_log.h" +#include "help_system.h" +#include "new_menu_helpers.h" +#include "battle_interface.h" +#include "pokedex.h" +#include "save.h" +#include "load_save.h" +#include "random.h" +#include "trade_scene.h" +#include "constants/species.h" +#include "constants/items.h" +#include "constants/easy_chat.h" +#include "constants/songs.h" +#include "constants/region_map.h" +#include "constants/moves.h" + +#define TAG_GLOW1_TILES 5550 +#define TAG_GLOW_PAL 5551 +#define TAG_GLOW2_TILES 5552 +#define TAG_UNUSED_5553 5553 +#define TAG_CABLE_END_TILES 5554 +#define TAG_GBA_PAL 5555 +#define TAG_GBA_SCREEN_TILES 5556 +#define TAG_BALL_TILES 5557 +#define TAG_BALL_PAL 5558 + +struct InGameTrade { + /*0x00*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; + /*0x0C*/ u16 species; + /*0x0E*/ u8 ivs[NUM_STATS]; + /*0x14*/ u8 abilityNum; + /*0x18*/ u32 otId; + /*0x1C*/ u8 conditions[5]; + /*0x24*/ u32 personality; + /*0x28*/ u16 heldItem; + /*0x2A*/ u8 mailNum; + /*0x2B*/ u8 otName[11]; + /*0x36*/ u8 otGender; + /*0x37*/ u8 sheen; + /*0x38*/ u16 requestedSpecies; +}; + +struct TradeAnimationResources { + /*0x00*/ struct Pokemon mon; + /*0x64*/ u32 timer; + /*0x68*/ u32 monPersonalities[2]; + /*0x70*/ u8 filler_70[2]; + /*0x72*/ u8 tradeStatus1; + /*0x73*/ u8 tradeStatus2; + /*0x74*/ u16 linkData[10]; + /*0x88*/ u8 linkTimeoutCheck1; + /*0x89*/ u8 linkTimeoutCheck2; + /*0x8A*/ u16 linkTimeoutTimer; + /*0x8C*/ u16 unk_8C; + /*0x8E*/ u8 pokePicSpriteIdxs[2]; + /*0x90*/ u8 tradeGlow1SpriteId; + /*0x91*/ u8 gbaScreenSpriteId; + /*0x92*/ u8 linkCableEndSpriteId; + /*0x93*/ u8 scheduleLinkTransfer; + /*0x94*/ u16 state; + /*0x96*/ u8 filler_96[0xD2 - 0x96]; + /*0xD2*/ u8 pokeballSpriteId; + /*0xD3*/ u8 pokeballSpriteId2; + /*0xD4*/ u16 bg2texX; + /*0xD6*/ u16 bg2texY; + /*0xD8*/ u16 unk_D8; + /*0xDA*/ u16 unk_DA; + /*0xDC*/ u16 bg2srcX; + /*0xDE*/ u16 bg2srcY; + /*0xE0*/ s16 bg1vofs; + /*0xE2*/ s16 bg1hofs; + /*0xE4*/ s16 bg2vofs; + /*0xE6*/ s16 bg2hofs; + /*0xE8*/ u16 sXY; + /*0xEA*/ u16 bg2Zoom; + /*0xEC*/ u16 bg2alpha; + /*0xEE*/ bool8 isLinkTrade; + /*0xF0*/ u16 tradeSpecies[2]; + /*0xF4*/ u16 cachedMapMusic; + /*0xF6*/ u8 unk_F6; + /*0xF8*/ u16 monSpecies[2]; + /*0xFC*/ u8 linkPartnerName[7]; + /*0x103*/ u8 filler_103[1]; + /*0x104*/ u8 textColor[3]; + /*0x107*/ u8 filler_107[1]; + /*0x108*/ bool8 isCableTrade; + /*0x109*/ u8 win0left; + /*0x10A*/ u8 win0top; + /*0x10B*/ u8 win0right; + /*0x10C*/ u8 win0bottom; +}; + +static EWRAM_DATA struct TradeAnimationResources * sTradeData = NULL; + +static void SpriteCB_TradeGlowCable(struct Sprite * sprite); +static void SpriteCB_TradeGlowWireless(struct Sprite * sprite); +static void SpriteCB_TradeGlowCore(struct Sprite * sprite); +static void SpriteCB_GameLinkCableEnd_Outbound(struct Sprite * sprite); +static void SpriteCB_GameLinkCableEnd_Inbound(struct Sprite * sprite); +static void SpriteCB_TradeGBAScreen(struct Sprite * sprite); +static void TradeAnimInit_LoadGfx(void); +static void CB2_RunTradeAnim_InGameTrade(void); +static void SetTradeSequenceBgGpuRegs(u8 idx); +static void LoadTradeGbaSpriteGfx(void); +static void TradeBufferOTnameAndNicknames(void); +static u8 DoTradeAnim(void); +static u8 DoTradeAnim_Cable(void); +static u8 DoTradeAnim_Wireless(void); +static void SpriteCB_TradePokeball_Default(struct Sprite * sprite); +static void SpriteCB_TradePokeball_Outbound(struct Sprite * sprite); +static void SpriteCB_TradePokeball_Outbound2(struct Sprite * sprite); +static void SpriteCB_TradePokeball_Inbound(struct Sprite * sprite); +static void BufferInGameTradeMonName(void); +static void GetInGameTradeMail(struct MailStruct * mail, const struct InGameTrade * inGameTrade); +static void CB2_RunTradeAnim_LinkTrade(void); +static void CB2_WaitAndAckTradeComplete(void); +static void sub_8053E8C(void); +static void LinkTrade_TearDownAssets(void); +static void Task_WaitFadeAndStartInGameTradeAnim(u8 taskId); +static void CheckPartnersMonForRibbons(void); +static void Task_AnimateWirelessSignal(u8 taskId); +static void Task_OpenCenterWhiteColumn(u8 taskId); +static void Task_CloseCenterWhiteColumn(u8 taskId); + +static const u16 sTradeBallPalette[] = INCBIN_U16("graphics/trade/ball.gbapal"); +static const u8 sTradeBallTiles[] = INCBIN_U8("graphics/trade/ball.4bpp"); +static const u8 gUnknown_826267C[] = INCBIN_U8("graphics/trade/pokeball_symbol.8bpp"); +static const u16 gUnknown_826407C[] = INCBIN_U16("graphics/trade/cable_closeup_map.bin"); +static const u16 gUnknown_083307C0[] = INCBIN_U16("graphics/trade/pokeball_symbol_map.bin"); +static const u16 sUnref_083308C0[] = INCBIN_U16("graphics/trade/unknown_3308C0.gbapal"); +static const u16 sTradeGbaPal[] = INCBIN_U16("graphics/trade/gba.gbapal"); +static const u16 gUnref_08330900[] = INCBIN_U16("graphics/trade/shadow.gbapal"); +static const u16 gUnref_08330920[] = INCBIN_U16("graphics/trade/black.gbapal"); +static const u16 sTradeGlowPal[] = INCBIN_U16("graphics/trade/misc.gbapal"); +static const u8 sTradeGlow1Tiles[] = INCBIN_U8("graphics/trade/glow1.4bpp"); +static const u8 sTradeGlow2Tiles[] = INCBIN_U8("graphics/trade/glow2.4bpp"); +static const u8 sTradeCableEndTiles[] = INCBIN_U8("graphics/trade/cable_end.4bpp"); +static const u8 sTradeGBAScreenTiles[] = INCBIN_U8("graphics/trade/gba_screen.4bpp"); +const u16 gUnknown_826601C[] = INCBIN_U16("graphics/trade/shadow_map.bin"); +static const u8 gUnknown_826701C[] = INCBIN_U8("graphics/trade/gba_affine.8bpp"); +static const u8 sFiller_08335760[64] = {}; +static const u8 gUnknown_826985C[] = INCBIN_U8("graphics/trade/gba_affine_map_cable.bin"); +static const u8 gUnknown_826995C[] = INCBIN_U8("graphics/trade/gba_affine_map_wireless.bin"); +static const u16 gUnknown_8269A5C[] = INCBIN_U16("graphics/trade/gba_map_wireless.bin"); +static const u16 gUnknown_826AA5C[] = INCBIN_U16("graphics/trade/gba_map_cable.bin"); +static const u32 sUnknown_3379A0Bin[] = INCBIN_U32("graphics/trade/unknown_3379A0.bin.lz"); +static const u16 sWirelessSignalAnimPals_Outbound[] = INCBIN_U16("graphics/trade/wireless_signal_send.gbapal"); +static const u16 sWirelessSignalAnimPals_Inbound[] = INCBIN_U16("graphics/trade/wireless_signal_receive.gbapal"); +static const u16 sWirelessSignalAnimPals_Off[] = INCBIN_U16("graphics/trade/black.gbapal"); +static const u32 sWirelessSignal4bpp[] = INCBIN_U32("graphics/trade/wireless_signal.4bpp.lz"); +static const u32 sWirelessSignalTilemap[] = INCBIN_U32("graphics/trade/wireless_signal.bin.lz"); + +static const struct OamData gOamData_826CD00 = { + .affineMode = ST_OAM_AFFINE_NORMAL, + .shape = SPRITE_SHAPE(16x16), + .size = SPRITE_SIZE(16x16) +}; + +static const union AnimCmd gAnimCmd_826CD08[] = { + ANIMCMD_FRAME(0x00, 3), + ANIMCMD_FRAME(0x04, 3), + ANIMCMD_FRAME(0x08, 3), + ANIMCMD_FRAME(0x0c, 3), + ANIMCMD_FRAME(0x10, 3), + ANIMCMD_FRAME(0x14, 3), + ANIMCMD_FRAME(0x18, 3), + ANIMCMD_FRAME(0x1c, 3), + ANIMCMD_FRAME(0x20, 3), + ANIMCMD_FRAME(0x24, 3), + ANIMCMD_FRAME(0x28, 3), + ANIMCMD_FRAME(0x2c, 3), + ANIMCMD_LOOP(1), + ANIMCMD_FRAME(0x00, 3), + ANIMCMD_END +}; + +static const union AnimCmd gAnimCmd_826CD44[] = { + ANIMCMD_FRAME(0x00, 3), + ANIMCMD_FRAME(0x04, 3), + ANIMCMD_FRAME(0x08, 3), + ANIMCMD_FRAME(0x0c, 3), + ANIMCMD_FRAME(0x10, 3), + ANIMCMD_FRAME(0x14, 3), + ANIMCMD_FRAME(0x18, 3), + ANIMCMD_FRAME(0x1c, 3), + ANIMCMD_FRAME(0x20, 3), + ANIMCMD_FRAME(0x24, 3), + ANIMCMD_FRAME(0x28, 3), + ANIMCMD_FRAME(0x2c, 3), + ANIMCMD_LOOP(2), + ANIMCMD_FRAME(0x00, 3), + ANIMCMD_END +}; + +static const union AnimCmd *const gSpriteAnimTable_826CD80[] = { + gAnimCmd_826CD08, + gAnimCmd_826CD44 +}; + +static const union AffineAnimCmd gAffineAnimCmd_826CD88[] = { + AFFINEANIMCMD_FRAME(0, 0, 0, 1), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd gAffineAnimCmd_826CD98[] = { + AFFINEANIMCMD_FRAME(-8, 0, 0, 20), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd gAffineAnimCmd_826CDA8[] = { + AFFINEANIMCMD_FRAME(96, 256, 0, 0), + AFFINEANIMCMD_FRAME(0, 0, 0, 5), + AFFINEANIMCMD_FRAME(8, 0, 0, 20), + AFFINEANIMCMD_END +}; + +static const union AffineAnimCmd *const gSpriteAffineAnimTable_826CDC8[] = { + gAffineAnimCmd_826CD88, + gAffineAnimCmd_826CD98, + gAffineAnimCmd_826CDA8 +}; + +static const struct SpriteSheet sTradeBallSpriteSheet = { + sTradeBallTiles, + 0x600, + TAG_BALL_TILES +}; + +static const struct SpritePalette sTradeBallSpritePal = { + sTradeBallPalette, + TAG_BALL_PAL +}; + +static const struct SpriteTemplate sTradePokeballSpriteTemplate = { + .tileTag = TAG_BALL_TILES, + .paletteTag = TAG_BALL_PAL, + .oam = &gOamData_826CD00, + .anims = gSpriteAnimTable_826CD80, + .affineAnims = gSpriteAffineAnimTable_826CDC8, + .callback = SpriteCB_TradePokeball_Default +}; + +static const struct OamData gOamData_826CDFC = { + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .shape = SPRITE_SHAPE(32x32), + .size = SPRITE_SIZE(32x32), + .priority = 1 +}; + +static const union AnimCmd gAnimCmd_826CE04[] = { + ANIMCMD_FRAME(0, 5, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd *const gSpriteAnimTable_826CE0C[] = { + gAnimCmd_826CE04 +}; + +static const union AffineAnimCmd gAffineAnimCmd_826CE10[] = { + AFFINEANIMCMD_FRAME(-10, -10, 0, 5), + AFFINEANIMCMD_FRAME( 10, 10, 0, 5), + AFFINEANIMCMD_JUMP(0) +}; + +static const union AffineAnimCmd *const gSpriteAffineAnimTable_826CE28[] = { + gAffineAnimCmd_826CE10 +}; + +static const struct SpriteSheet sTradeGlow1SpriteSheet = { + sTradeGlow1Tiles, + 0x200, + TAG_GLOW1_TILES +}; + +static const struct SpritePalette sTradeGlowSpritePal = { + sTradeGlowPal, + TAG_GLOW_PAL +}; + +static const struct SpritePalette sTradeGbaSpritePal = { + sTradeGbaPal, + TAG_GBA_PAL +}; + +static const struct SpriteTemplate sTradeGlow1SpriteTemplate = { + .tileTag = TAG_GLOW1_TILES, + .paletteTag = TAG_GLOW_PAL, + .oam = &gOamData_826CDFC, + .anims = gSpriteAnimTable_826CE0C, + .affineAnims = gSpriteAffineAnimTable_826CE28, + .callback = SpriteCB_TradeGlowCable +}; + +static const struct OamData gOamData_826CE5C = { + .shape = SPRITE_SHAPE(16x32), + .size = SPRITE_SIZE(16x32), + .priority = 1 +}; + +static const union AnimCmd gAnimCmd_826CE64[] = { + ANIMCMD_FRAME(0, 5, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd gAnimCmd_826CE6C[] = { + ANIMCMD_FRAME(8, 5, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd *const gSpriteAnimTable_826CE74[] = { + gAnimCmd_826CE64, + gAnimCmd_826CE6C +}; + +static const struct SpriteSheet sTradeGlow2SpriteSheet = { + sTradeGlow2Tiles, + 0x300, + TAG_GLOW2_TILES +}; + +static const struct SpriteTemplate sGlowBallSpriteTemplate = { + .tileTag = TAG_GLOW2_TILES, + .paletteTag = TAG_GLOW_PAL, + .oam = &gOamData_826CE5C, + .anims = gSpriteAnimTable_826CE74, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_TradeGlowCore +}; + +static const struct OamData gOamData_826CE9C = { + .shape = SPRITE_SHAPE(16x32), + .size = SPRITE_SIZE(16x32), + .priority = 1 +}; + +static const union AnimCmd gAnimCmd_826CEA4[] = { + ANIMCMD_FRAME(0, 10), + ANIMCMD_END +}; + +static const union AnimCmd *const gSpriteAnimTable_826CEAC[] = { + gAnimCmd_826CEA4 +}; + +static const struct SpriteSheet sTradeCableEndSpriteSheet = { + sTradeCableEndTiles, + 0x100, + TAG_CABLE_END_TILES +}; + +static const struct SpriteTemplate sGameLinkCableEndSpriteTemplate = { + .tileTag = TAG_CABLE_END_TILES, + .paletteTag = TAG_GBA_PAL, + .oam = &gOamData_826CE9C, + .anims = gSpriteAnimTable_826CEAC, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_GameLinkCableEnd_Outbound +}; + +static const struct OamData gOamData_826CED0 = { + .shape = SPRITE_SHAPE(64x32), + .size = SPRITE_SIZE(64x32), + .priority = 1 +}; + +static const union AnimCmd gAnimCmd_826CED8[] = { + ANIMCMD_FRAME(0x00, 2, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_FRAME(0x20, 2, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_FRAME(0x40, 2, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_FRAME(0x60, 2, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_FRAME(0x40, 2, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_FRAME(0x20, 2, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_FRAME(0x00, 2, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_LOOP(8), + ANIMCMD_END +}; + +static const union AnimCmd gAnimCmd_826CEFC[] = { + ANIMCMD_FRAME(0x00, 2, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_FRAME(0x20, 2, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_FRAME(0x40, 2, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_FRAME(0x60, 2, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_FRAME(0x40, 2, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_FRAME(0x20, 2, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_FRAME(0x00, 2, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_LOOP(2), + ANIMCMD_END +}; + +static const union AnimCmd *const gSpriteAnimTable_826CF20[] = { + gAnimCmd_826CED8 +}; + +static const union AnimCmd *const gSpriteAnimTable_826CF24[] = { + gAnimCmd_826CEFC +}; + +static const struct SpriteSheet sTradeGBAScreenSpriteSheet = { + sTradeGBAScreenTiles, + 0x1000, + TAG_GBA_SCREEN_TILES +}; + +static const struct SpriteTemplate sTradeGBAScreenSpriteTemplate1 = { + .tileTag = TAG_GBA_SCREEN_TILES, + .paletteTag = TAG_GBA_PAL, + .oam = &gOamData_826CED0, + .anims = gSpriteAnimTable_826CF20, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_TradeGBAScreen +}; + +static const struct SpriteTemplate sTradeGBAScreenSpriteTemplate2 = { + .tileTag = TAG_GBA_SCREEN_TILES, + .paletteTag = TAG_GBA_PAL, + .oam = &gOamData_826CED0, + .anims = gSpriteAnimTable_826CF24, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_TradeGBAScreen +}; + +static const u16 sTradeGlow2PaletteAnimTable[] = { + RGB(18, 24, 31), + RGB(18, 24, 31), + RGB(18, 24, 31), + RGB(31, 31, 31), + RGB(31, 31, 31), + RGB(31, 31, 31), + RGB(18, 24, 31), + RGB(18, 24, 31), + RGB(18, 24, 31), + RGB(31, 31, 31), + RGB(31, 31, 31), + RGB(31, 31, 31) +}; + +static const union AffineAnimCmd gAffineAnimCmd_826CF78[] = { + AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), + AFFINEANIMCMD_JUMP(0) +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_PlayerPokePicAlt[] = { + gAffineAnimCmd_826CF78 +}; + +#include "data/ingame_trades.h" + +static const struct WindowTemplate gUnknown_826D1BC[] = { + { + .bg = 0, + .tilemapLeft = 2, + .tilemapTop = 15, + .width = 26, + .height = 4, + .paletteNum = 0, + .baseBlock = 0x040 + }, DUMMY_WIN_TEMPLATE +}; + +const struct WindowTemplate gUnknown_826D1CC = { + .bg = 0, + .tilemapLeft = 21, + .tilemapTop = 9, + .width = 6, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x0bc +}; + +static const struct BgTemplate gUnknown_826D1D4[] = { + { + .bg = 0, + .charBaseIndex = 3, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + }, { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 5, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0x000 + }, { + .bg = 2, + .charBaseIndex = 1, + .mapBaseIndex = 18, + .screenSize = 1, + .paletteMode = 0, + .priority = 2, + .baseTile = 0x000 + }, { + .bg = 3, + .charBaseIndex = 0, + .mapBaseIndex = 6, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0x000 + } +}; + +static const s8 sTradeBallVerticalVelocityTable[] = { + 0, 0, 1, 0, + 1, 0, 1, 1, + 1, 1, 2, 2, + 2, 2, 3, 3, + 3, 3, 4, 4, + 4, 4, -4, -4, + -4, -3, -3, -3, + -3, -2, -2, -2, + -2, -1, -1, -1, + -1, 0, -1, 0, + -1, 0, 0, 0, + 0, 0, 1, 0, + 1, 0, 1, 1, + 1, 1, 2, 2, + 2, 2, 3, 3, + 3, 3, 4, 4, + 4, 4, -4, -3, + -3, -2, -2, -1, + -1, -1, 0, -1, + 0, 0, 0, 0, + 0, 0, 1, 0, + 1, 1, 1, 2, + 2, 3, 3, 4, + -4, -3, -2, -1, + -1, -1, 0, 0, + 0, 0, 1, 0, + 1, 1, 2, 3 +}; + +static const u8 sWirelessSignalAnimParams[][2] = { + {0, 1}, + {1, 1}, + {2, 1}, + {3, 1}, + {4, 1}, + {5, 2}, + {6, 2}, + {7, 2}, + {8, 2}, + {9, 2}, + {10, 3}, + {11, 3}, + {12, 3}, + {13, 4}, + {14, 5}, + {15, 2}, + {0, 1}, + {1, 1}, + {2, 1}, + {3, 1}, + {4, 1}, + {5, 2}, + {6, 2}, + {7, 2}, + {8, 2}, + {9, 2}, + {10, 3}, + {11, 3}, + {12, 3}, + {13, 4}, + {14, 5}, + {16, 1}, + {16, -1} +}; + +// Sprite callback for link cable trade glow +static void SpriteCB_TradeGlowCable(struct Sprite * sprite) +{ + sprite->data[0]++; + if (sprite->data[0] == 10) + { + PlaySE(SE_BOWA); + sprite->data[0] = 0; + } +} + +// Sprite callback for wireless trade glow +static void SpriteCB_TradeGlowWireless(struct Sprite * sprite) +{ + if (!sprite->invisible) + { + sprite->data[0]++; + if (sprite->data[0] == 10) + { + PlaySE(SE_W207B); + sprite->data[0] = 0; + } + } +} + +// Palette flash for trade glow core +static void SpriteCB_TradeGlowCore(struct Sprite * sprite) +{ + if (sprite->data[1] == 0) + { + sprite->data[0]++; + if (sprite->data[0] == 12) + sprite->data[0] = 0; + LoadPalette(&sTradeGlow2PaletteAnimTable[sprite->data[0]], 16 * (sprite->oam.paletteNum + 16) + 4, 2); + } +} + +// Move down for 10 frames +static void SpriteCB_GameLinkCableEnd_Outbound(struct Sprite * sprite) +{ + sprite->data[0]++; + sprite->pos2.y++; + if (sprite->data[0] == 10) + DestroySprite(sprite); +} + +// Move up for 10 frames +static void SpriteCB_GameLinkCableEnd_Inbound(struct Sprite * sprite) +{ + sprite->data[0]++; + sprite->pos2.y--; + if (sprite->data[0] == 10) + DestroySprite(sprite); +} + +// Play a sound every 15 frames +static void SpriteCB_TradeGBAScreen(struct Sprite * sprite) +{ + sprite->data[0]++; + if (sprite->data[0] == 15) + { + PlaySE(SE_W107); + sprite->data[0] = 0; + } +} + +static void SetTradeBGAffine(void) +{ + struct BgAffineDstData affine; + DoBgAffineSet(&affine, sTradeData->bg2texX * 0x100, sTradeData->bg2texY * 0x100, sTradeData->bg2srcX, sTradeData->bg2srcY, sTradeData->sXY, sTradeData->sXY, sTradeData->bg2alpha); + SetGpuReg(REG_OFFSET_BG2PA, affine.pa); + SetGpuReg(REG_OFFSET_BG2PB, affine.pb); + SetGpuReg(REG_OFFSET_BG2PC, affine.pc); + SetGpuReg(REG_OFFSET_BG2PD, affine.pd); + SetGpuReg(REG_OFFSET_BG2X, affine.dx); + SetGpuReg(REG_OFFSET_BG2Y, affine.dy); +} + +static void TradeAnim_UpdateBgRegs(void) +{ + u16 dispcnt; + + SetGpuReg(REG_OFFSET_BG1VOFS, sTradeData->bg1vofs); + SetGpuReg(REG_OFFSET_BG1HOFS, sTradeData->bg1hofs); + + dispcnt = GetGpuReg(REG_OFFSET_DISPCNT); + if ((dispcnt & 7) == DISPCNT_MODE_0) + { + SetGpuReg(REG_OFFSET_BG2VOFS, sTradeData->bg2vofs); + SetGpuReg(REG_OFFSET_BG2HOFS, sTradeData->bg2hofs); + } + else + { + SetTradeBGAffine(); + } +} + +static void VBlankCB_TradeAnim(void) +{ + TradeAnim_UpdateBgRegs(); + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void InitLinkTimeoutTracker(void) +{ + sTradeData->linkTimeoutTimer = 0; + sTradeData->linkTimeoutCheck1 = 0; + sTradeData->linkTimeoutCheck2 = 0; +} + +static void CheckLinkTimeout(void) +{ + if (sTradeData->linkTimeoutCheck1 == sTradeData->linkTimeoutCheck2) + sTradeData->linkTimeoutTimer++; + else + sTradeData->linkTimeoutTimer = 0; + + if (sTradeData->linkTimeoutTimer > 300) + { + CloseLink(); + SetMainCallback2(CB2_LinkError); + sTradeData->linkTimeoutTimer = 0; + sTradeData->linkTimeoutCheck2 = 0; + sTradeData->linkTimeoutCheck1 = 0; + } + + sTradeData->linkTimeoutCheck2 = sTradeData->linkTimeoutCheck1; +} + +static u32 GetMultiplayerIdIfLinkTrade(void) +{ + if (gReceivedRemoteLinkPlayers) + return GetMultiplayerId(); + return 0; +} + +static void LoadTradeMonPic(u8 whichParty, u8 action) +{ + int pos = 0; + struct Pokemon * mon = NULL; + u16 species; + u32 personality; + + if (whichParty == 0) + { + mon = &gPlayerParty[gSelectedTradeMonPositions[0]]; + pos = 1; + } + + /*else*/ if (whichParty == 1) + { + mon = &gEnemyParty[gSelectedTradeMonPositions[1] % PARTY_SIZE]; + pos = 3; + } + + switch (action) + { + case 0: + // Load graphics + species = GetMonData(mon, MON_DATA_SPECIES2); + personality = GetMonData(mon, MON_DATA_PERSONALITY); + + if (whichParty == 0) + HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality); + else + HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[whichParty * 2 + 1], species, personality); + + LoadCompressedSpritePalette(GetMonSpritePalStruct(mon)); + sTradeData->tradeSpecies[whichParty] = species; + sTradeData->monPersonalities[whichParty] = personality; + break; + case 1: + // Create sprite + SetMultiuseSpriteTemplateToPokemon(GetMonSpritePalStruct(mon)->tag, pos); + sTradeData->pokePicSpriteIdxs[whichParty] = CreateSprite(&gMultiuseSpriteTemplate, 120, 60, 6); + gSprites[sTradeData->pokePicSpriteIdxs[whichParty]].invisible = TRUE; + gSprites[sTradeData->pokePicSpriteIdxs[whichParty]].callback = SpriteCallbackDummy; + break; + } +} + +void CB2_InitTradeAnim_LinkTrade(void) +{ + switch (gMain.state) + { + case 0: + if (!gReceivedRemoteLinkPlayers) + { + gLinkType = 0x1144; + CloseLink(); + } + sTradeData = AllocZeroed(sizeof(struct TradeAnimationResources)); + AllocateMonSpritesGfx(); + ResetTasks(); + ResetSpriteData(); + FreeAllSpritePalettes(); + SetVBlankCallback(VBlankCB_TradeAnim); + TradeAnimInit_LoadGfx(); + InitLinkTimeoutTracker(); + gMain.state++; + sTradeData->unk_8C = 0; + sTradeData->state = 0; + sTradeData->isLinkTrade = TRUE; + sTradeData->bg2texX = 64; + sTradeData->bg2texY = 64; + sTradeData->unk_D8 = 0; + sTradeData->unk_DA = 0; + sTradeData->bg2srcX = 120; + sTradeData->bg2srcY = 80; + sTradeData->sXY = 256; + sTradeData->bg2alpha = 0; + break; + case 1: + if (!gReceivedRemoteLinkPlayers) + { + sTradeData->isCableTrade = TRUE; + OpenLink(); + gMain.state++; + sTradeData->timer = 0; + } + else + { + gMain.state = 4; + } + break; + case 2: + sTradeData->timer++; + if (sTradeData->timer > 60) + { + sTradeData->timer = 0; + gMain.state++; + } + break; + case 3: + if (IsLinkMaster()) + { + if (GetLinkPlayerCount_2() >= GetSavedPlayerCount()) + { + sTradeData->timer++; + if (sTradeData->timer > 30) + { + CheckShouldAdvanceLinkState(); + gMain.state++; + } + } + else + { + CheckLinkTimeout(); + } + } + else + { + gMain.state++; + } + break; + case 4: + CheckLinkTimeout(); + if (gReceivedRemoteLinkPlayers == 1 && IsLinkPlayerDataExchangeComplete() == 1) + { + gMain.state++; + } + break; + case 5: + sTradeData->tradeStatus1 = 0; + sTradeData->tradeStatus2 = 0; + sTradeData->scheduleLinkTransfer = 0; + LoadTradeMonPic(0, 0); + gMain.state++; + break; + case 6: + LoadTradeMonPic(0, 1); + gMain.state++; + break; + case 7: + LoadTradeMonPic(1, 0); + gMain.state++; + break; + case 8: + LoadTradeMonPic(1, 1); + sub_80504B0(); + gMain.state++; + break; + case 9: + LoadTradeGbaSpriteGfx(); + LoadSpriteSheet(&sTradeBallSpriteSheet); + LoadSpritePalette(&sTradeBallSpritePal); + gMain.state++; + break; + case 10: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + ShowBg(0); + sTradeData->monSpecies[0] = GetMonData(&gPlayerParty[gSelectedTradeMonPositions[0]], MON_DATA_SPECIES2); + sTradeData->monSpecies[1] = GetMonData(&gEnemyParty[gSelectedTradeMonPositions[1] % 6], MON_DATA_SPECIES2); + memcpy(sTradeData->linkPartnerName, gLinkPlayers[GetMultiplayerId() ^ 1].name, 7); + gMain.state++; + break; + case 11: + sub_805049C(); + TradeBufferOTnameAndNicknames(); + gMain.state++; + break; + case 12: + if (!gPaletteFade.active) + { + if (gWirelessCommType != 0) + { + LoadWirelessStatusIndicatorSpriteGfx(); + CreateWirelessStatusIndicatorSprite(0, 0); + } + SetMainCallback2(CB2_RunTradeAnim_LinkTrade); + } + break; + } + RunTasks(); + RunTextPrinters(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_805049C(void) +{ + SetTradeSequenceBgGpuRegs(5); + SetTradeSequenceBgGpuRegs(0); +} + +void sub_80504B0(void) +{ + FillWindowPixelBuffer(0, PIXEL_FILL(15)); + PutWindowTilemap(0); + CopyWindowToVram(0, 3); +} + +static void TradeAnimInit_LoadGfx(void) +{ + SetGpuReg(REG_OFFSET_DISPCNT, 0); + ResetBgsAndClearDma3BusyFlags(FALSE); + InitBgsFromTemplates(0, gUnknown_826D1D4, NELEMS(gUnknown_826D1D4)); + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + SetBgTilemapBuffer(0, Alloc(BG_SCREEN_SIZE)); + SetBgTilemapBuffer(1, Alloc(BG_SCREEN_SIZE)); + SetBgTilemapBuffer(3, Alloc(BG_SCREEN_SIZE)); + DeactivateAllTextPrinters(); + // Doing the graphics load... + DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0); + LZDecompressWram(gFile_graphics_interface_menu_map_tilemap, gDecompressionBuffer); + CopyToBgTilemapBuffer(0, gDecompressionBuffer, BG_SCREEN_SIZE, 0); + LoadCompressedPalette(gBattleTextboxPalette, 0x000, 0x20); + InitWindows(gUnknown_826D1BC); + // ... and doing the same load again + DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0); + LZDecompressWram(gFile_graphics_interface_menu_map_tilemap, gDecompressionBuffer); + CopyToBgTilemapBuffer(0, gDecompressionBuffer, BG_SCREEN_SIZE, 0); + LoadCompressedPalette(gBattleTextboxPalette, 0x000, 0x20); +} + +static void CB2_InitTradeAnim_InGameTrade(void) +{ + u8 otName[11]; + + switch (gMain.state) + { + case 0: + gSelectedTradeMonPositions[0] = gSpecialVar_0x8005; + gSelectedTradeMonPositions[1] = 6; + StringCopy(gLinkPlayers[0].name, gSaveBlock2Ptr->playerName); + GetMonData(&gEnemyParty[0], MON_DATA_OT_NAME, otName); + StringCopy(gLinkPlayers[1].name, otName); + sTradeData = AllocZeroed(sizeof(*sTradeData)); + AllocateMonSpritesGfx(); + ResetTasks(); + ResetSpriteData(); + FreeAllSpritePalettes(); + SetVBlankCallback(VBlankCB_TradeAnim); + TradeAnimInit_LoadGfx(); + sTradeData->isLinkTrade = FALSE; + sTradeData->unk_8C = 0; + sTradeData->state = 0; + sTradeData->bg2texX = 64; + sTradeData->bg2texY = 64; + sTradeData->unk_D8 = 0; + sTradeData->unk_DA = 0; + sTradeData->bg2srcX = 120; + sTradeData->bg2srcY = 80; + sTradeData->sXY = 256; + sTradeData->bg2alpha = 0; + sTradeData->timer = 0; + gMain.state = 5; + break; + case 5: + LoadTradeMonPic(0, 0); + gMain.state++; + break; + case 6: + LoadTradeMonPic(0, 1); + gMain.state++; + break; + case 7: + LoadTradeMonPic(1, 0); + ShowBg(0); + gMain.state++; + break; + case 8: + LoadTradeMonPic(1, 1); + FillWindowPixelBuffer(0, PIXEL_FILL(15)); + PutWindowTilemap(0); + CopyWindowToVram(0, 3); + gMain.state++; + break; + case 9: + LoadTradeGbaSpriteGfx(); + LoadSpriteSheet(&sTradeBallSpriteSheet); + LoadSpritePalette(&sTradeBallSpritePal); + gMain.state++; + break; + case 10: + ShowBg(0); + gMain.state++; + break; + case 11: + SetTradeSequenceBgGpuRegs(5); + SetTradeSequenceBgGpuRegs(0); + TradeBufferOTnameAndNicknames(); + gMain.state++; + break; + case 12: + SetMainCallback2(CB2_RunTradeAnim_InGameTrade); + break; + } + + RunTasks(); + RunTextPrinters(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void ReceivedMonSetPokedexFlags(u8 partyIdx) +{ + struct Pokemon * mon = &gPlayerParty[partyIdx]; + + if (!GetMonData(mon, MON_DATA_IS_EGG)) + { + u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); + u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL); + species = SpeciesToNationalPokedexNum(species); + GetSetPokedexFlag(species, FLAG_SET_SEEN); + HandleSetPokedexFlag(species, FLAG_SET_CAUGHT, personality); + } +} + +static void RS_TryEnableNationalPokedex(void) +{ + u8 mpId = GetMultiplayerId(); + // Originally in Ruby but commented out + /*if (gLinkPlayers[mpId ^ 1].lp_field_2 == 0x8000) + EnableNationalPokedex();*/ +} + +static void TradeMons(u8 playerPartyIdx, u8 partnerPartyIdx) +{ + u8 friendship; + + // Get whether the offered Pokemon have mail + struct Pokemon * playerMon = &gPlayerParty[playerPartyIdx]; + u16 playerMail = GetMonData(playerMon, MON_DATA_MAIL); + + struct Pokemon * partnerMon = &gEnemyParty[partnerPartyIdx]; + u16 partnerMail = GetMonData(partnerMon, MON_DATA_MAIL); + + // The mail attached to the sent Pokemon no longer exists in your file. + if (playerMail != 0xFF) + ClearMailStruct(&gSaveBlock1Ptr->mail[playerMail]); + + // This is where the actual trade happens!! + sTradeData->mon = *playerMon; + *playerMon = *partnerMon; + *partnerMon = sTradeData->mon; + + // By default, a Pokemon received from a trade will have 70 Friendship. + friendship = 70; + if (!GetMonData(playerMon, MON_DATA_IS_EGG)) + SetMonData(playerMon, MON_DATA_FRIENDSHIP, &friendship); + + // Associate your partner's mail with the Pokemon they sent over. + if (partnerMail != 0xFF) + GiveMailToMon2(playerMon, &gLinkPartnerMail[partnerMail]); + + ReceivedMonSetPokedexFlags(playerPartyIdx); + if (gReceivedRemoteLinkPlayers) + RS_TryEnableNationalPokedex(); +} + +static void HandleLinkDataSend(void) +{ + switch (sTradeData->scheduleLinkTransfer) + { + case 1: + if (IsLinkTaskFinished()) + { + SendBlock(bitmask_all_link_players_but_self(), sTradeData->linkData, 20); + sTradeData->scheduleLinkTransfer++; + } + case 2: + sTradeData->scheduleLinkTransfer = 0; + break; + } +} + +static void CB2_RunTradeAnim_InGameTrade(void) +{ + DoTradeAnim(); + RunTasks(); + RunTextPrinters(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void SetTradeSequenceBgGpuRegs(u8 state) +{ + switch (state) + { + case 0: + sTradeData->bg2vofs = 0; + sTradeData->bg2hofs = 0xB4; + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON); + SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(18) | BGCNT_TXT512x256); + LoadPalette(gTradeGba2_Pal, 0x10, 0x60); + DmaCopyLarge16(3, gTradeGba_Gfx, (void *)BG_CHAR_ADDR(1), 0x1420, 0x1000); + DmaCopy16Defvars(3, gUnknown_826601C, (void *)BG_SCREEN_ADDR(18), 0x1000); + break; + case 1: + sTradeData->bg1hofs = 0; + sTradeData->bg1vofs = 0x15C; + SetGpuReg(REG_OFFSET_BG1VOFS, 0x15C); + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(5) | BGCNT_TXT256x512); + SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(18) | BGCNT_TXT256x512); + if (sTradeData->isCableTrade) + { + DmaCopy16Defvars(3, gUnknown_826AA5C, (void *)BG_SCREEN_ADDR(5), 0x1000); + } + else + { + DmaCopy16Defvars(3, gUnknown_8269A5C, (void *)BG_SCREEN_ADDR(5), 0x1000); + } + DmaCopyLarge16(3, gTradeGba_Gfx, (void *)BG_CHAR_ADDR(0), 0x1420, 0x1000); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_OBJ_ON); + break; + case 2: + sTradeData->bg1vofs = 0; + sTradeData->bg1hofs = 0; + if (!sTradeData->isCableTrade) + { + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_OBJ_ON); + LZ77UnCompVram(sUnknown_3379A0Bin, (void *)BG_SCREEN_ADDR(5)); + BlendPalettes(0x000000008, 0x10, RGB_BLACK); + } + else + { + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_OBJ_ON); + DmaCopy16Defvars(3, gUnknown_826407C, (void *)BG_SCREEN_ADDR(5), 0x800); + BlendPalettes(0x00000001, 0x10, RGB_BLACK); + } + break; + case 3: + LoadPalette(sWirelessSignalAnimPals_Off, 0x30, 0x20); + LZ77UnCompVram(sWirelessSignal4bpp, BG_CHAR_ADDR(1)); + LZ77UnCompVram(sWirelessSignalTilemap, BG_SCREEN_ADDR(18)); + sTradeData->bg2vofs = 0x50; + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON); + break; + case 4: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON); + SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_256COLOR | BGCNT_SCREENBASE(18) | BGCNT_AFF128x128); + sTradeData->bg2texX = 0x40; + sTradeData->bg2texY = 0x5C; + sTradeData->sXY = 0x20; + sTradeData->bg2Zoom = 0x400; + sTradeData->bg2alpha = 0; + DmaCopyLarge16(3, gUnknown_826701C, (void *)BG_CHAR_ADDR(1), 0x2840, 0x1000); + if (sTradeData->isCableTrade) + { + DmaCopy16Defvars(3, gUnknown_826985C, (void *)BG_SCREEN_ADDR(18), 0x100); + } + else + { + DmaCopy16Defvars(3, gUnknown_826995C, (void *)BG_SCREEN_ADDR(18), 0x100); + } + break; + case 5: + sTradeData->bg1vofs = 0; + sTradeData->bg1hofs = 0; + break; + case 6: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON); + SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_256COLOR | BGCNT_SCREENBASE(18) | BGCNT_TXT256x256); + sTradeData->bg2texX = 0x40; + sTradeData->bg2texY = 0x5C; + sTradeData->sXY = 0x100; + sTradeData->bg2Zoom = 0x80; + sTradeData->bg2srcX = 0x78; + sTradeData->bg2srcY = 0x50; + sTradeData->bg2alpha = 0; + DmaCopyLarge16(3, gUnknown_826701C, BG_CHAR_ADDR(1), 0x2840, 0x1000); + if (sTradeData->isCableTrade) + { + DmaCopy16Defvars(3, gUnknown_826985C, (void *)BG_SCREEN_ADDR(18), 0x100); + } + else + { + DmaCopy16Defvars(3, gUnknown_826995C, (void *)BG_SCREEN_ADDR(18), 0x100); + } + break; + case 7: + sTradeData->bg2vofs = 0; + sTradeData->bg2hofs = 0; + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(18) | BGCNT_TXT512x256); + LoadPalette(gTradeGba2_Pal, 0x10, 0x60); + DmaCopyLarge16(3, gTradeGba_Gfx, (void *)BG_CHAR_ADDR(1), 0x1420, 0x1000); + DmaCopy16Defvars(3, gUnknown_826601C, (void *)BG_SCREEN_ADDR(18), 0x1000); + break; + } +} + +static void LoadTradeGbaSpriteGfx(void) +{ + LoadSpriteSheet(&sTradeGlow1SpriteSheet); + LoadSpriteSheet(&sTradeGlow2SpriteSheet); + LoadSpriteSheet(&sTradeCableEndSpriteSheet); + LoadSpriteSheet(&sTradeGBAScreenSpriteSheet); + LoadSpritePalette(&sTradeGlowSpritePal); + LoadSpritePalette(&sTradeGbaSpritePal); +} + +static void TradeBufferOTnameAndNicknames(void) +{ + u8 nickname[20]; + u8 mpId; + const struct InGameTrade * inGameTrade; + if (sTradeData->isLinkTrade) + { + mpId = GetMultiplayerId(); + StringCopy(gStringVar1, gLinkPlayers[mpId ^ 1].name); + GetMonData(&gEnemyParty[gSelectedTradeMonPositions[1] % 6], MON_DATA_NICKNAME, nickname); + StringCopy10(gStringVar3, nickname); + GetMonData(&gPlayerParty[gSelectedTradeMonPositions[0]], MON_DATA_NICKNAME, nickname); + StringCopy10(gStringVar2, nickname); + } + else + { + inGameTrade = &sInGameTrades[gSpecialVar_0x8004]; + StringCopy(gStringVar1, inGameTrade->otName); + StringCopy10(gStringVar3, inGameTrade->nickname); + GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_NICKNAME, nickname); + StringCopy10(gStringVar2, nickname); + } +} + +static bool8 DoTradeAnim(void) +{ + if (sTradeData->isCableTrade) + return DoTradeAnim_Cable(); + else + return DoTradeAnim_Wireless(); +} + +static bool8 DoTradeAnim_Cable(void) +{ + u16 evoTarget; + + switch (sTradeData->state) + { + case 0: + gSprites[sTradeData->pokePicSpriteIdxs[0]].invisible = FALSE; + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.x = -180; + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.y = gMonFrontPicCoords[sTradeData->tradeSpecies[0]].y_offset; + sTradeData->state++; + sTradeData->cachedMapMusic = GetCurrentMapMusic(); + PlayNewMapMusic(MUS_SHINKA); + break; + case 1: + if (sTradeData->bg2hofs > 0) + { + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.x += 3; + sTradeData->bg2hofs -= 3; + } + else + { + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.x = 0; + sTradeData->bg2hofs = 0; + sTradeData->state = 10; + } + break; + case 10: + StringExpandPlaceholders(gStringVar4, gText_XWillBeSentToY); + DrawTextOnTradeWindow(0, gStringVar4, 0); + + if (sTradeData->tradeSpecies[0] != SPECIES_EGG) + { + PlayCry1(sTradeData->tradeSpecies[0], 0); + } + + sTradeData->state = 11; + sTradeData->timer = 0; + break; + case 11: + if (++sTradeData->timer == 80) + { + sTradeData->pokeballSpriteId = CreateTradePokeballSprite(sTradeData->pokePicSpriteIdxs[0], gSprites[sTradeData->pokePicSpriteIdxs[0]].oam.paletteNum, 120, 32, 2, 1, 0x14, 0xfffff); + sTradeData->state++; + StringExpandPlaceholders(gStringVar4, gText_ByeByeVar1); + DrawTextOnTradeWindow(0, gStringVar4, 0); + } + break; + case 12: + if (gSprites[sTradeData->pokeballSpriteId].callback == SpriteCallbackDummy) + { + sTradeData->pokeballSpriteId2 = CreateSprite(&sTradePokeballSpriteTemplate, 120, 32, 0); + gSprites[sTradeData->pokeballSpriteId2].callback = SpriteCB_TradePokeball_Outbound; + DestroySprite(&gSprites[sTradeData->pokeballSpriteId]); + sTradeData->state++; + } + break; + case 13: + // The game waits here for the sprite to finish its animation sequence. + break; + case 14: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sTradeData->state = 20; + break; + case 20: + if (!gPaletteFade.active) + { + SetTradeSequenceBgGpuRegs(4); + FillWindowPixelBuffer(0, PIXEL_FILL(15)); + CopyWindowToVram(0, 3); + sTradeData->state++; + } + break; + case 21: + BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK); + sTradeData->state++; + break; + case 22: + if (!gPaletteFade.active) + { + sTradeData->state = 23; + } + break; + case 23: + if (sTradeData->bg2Zoom > 0x100) + { + sTradeData->bg2Zoom -= 0x34; + } + else + { + SetTradeSequenceBgGpuRegs(1); + sTradeData->bg2Zoom = 0x80; + sTradeData->state++; + sTradeData->timer = 0; + } + sTradeData->sXY = 0x8000 / sTradeData->bg2Zoom; + break; + case 24: + if (++sTradeData->timer > 20) + { + SetTradeBGAffine(); + sTradeData->gbaScreenSpriteId = CreateSprite(&sTradeGBAScreenSpriteTemplate1, 120, 80, 0); + sTradeData->state++; + } + break; + case 25: + if (gSprites[sTradeData->gbaScreenSpriteId].animEnded) + { + DestroySprite(&gSprites[sTradeData->gbaScreenSpriteId]); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | + BLDCNT_TGT2_BG1 | + BLDCNT_TGT2_BG2); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(12, 4)); + sTradeData->state++; + } + break; + case 26: + if (--sTradeData->bg1vofs == 316) + { + sTradeData->state++; + } + if (sTradeData->bg1vofs == 328) + { + sTradeData->linkCableEndSpriteId = CreateSprite(&sGameLinkCableEndSpriteTemplate, 128, 65, 0); + } + break; + case 27: + sTradeData->tradeGlow1SpriteId = CreateSprite(&sTradeGlow1SpriteTemplate, 128, 80, 3); + sTradeData->gbaScreenSpriteId = CreateSprite(&sGlowBallSpriteTemplate, 128, 80, 0); + StartSpriteAnim(&gSprites[sTradeData->gbaScreenSpriteId], 1); + sTradeData->state++; + break; + case 28: + if ((sTradeData->bg1vofs -= 2) == 166) + { + sTradeData->state = 200; + } + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 | + DISPCNT_OBJ_1D_MAP | + DISPCNT_BG1_ON | + DISPCNT_OBJ_ON); + break; + case 200: + gSprites[sTradeData->tradeGlow1SpriteId].pos1.y -= 2; + gSprites[sTradeData->gbaScreenSpriteId].pos1.y -= 2; + if (gSprites[sTradeData->tradeGlow1SpriteId].pos1.y < -8) + { + sTradeData->state = 29; + } + break; + case 29: + BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK); + sTradeData->state = 30; + break; + case 30: + if (!gPaletteFade.active) + { + DestroySprite(&gSprites[sTradeData->tradeGlow1SpriteId]); + DestroySprite(&gSprites[sTradeData->gbaScreenSpriteId]); + SetTradeSequenceBgGpuRegs(2); + sTradeData->state++; + } + break; + case 31: + BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK); + sTradeData->tradeGlow1SpriteId = CreateSprite(&sGlowBallSpriteTemplate, 111, 170, 0); + sTradeData->gbaScreenSpriteId = CreateSprite(&sGlowBallSpriteTemplate, 129, -10, 0); + sTradeData->state++; + break; + case 32: + if (!gPaletteFade.active) + { + PlaySE(SE_TK_WARPOUT); + sTradeData->state++; + } + gSprites[sTradeData->tradeGlow1SpriteId].pos2.y -= 3; + gSprites[sTradeData->gbaScreenSpriteId].pos2.y += 3; + break; + case 33: + gSprites[sTradeData->tradeGlow1SpriteId].pos2.y -= 3; + gSprites[sTradeData->gbaScreenSpriteId].pos2.y += 3; + if (gSprites[sTradeData->tradeGlow1SpriteId].pos2.y <= -90) + { + gSprites[sTradeData->tradeGlow1SpriteId].data[1] = 1; + gSprites[sTradeData->gbaScreenSpriteId].data[1] = 1; + sTradeData->state++; + } + break; + case 34: + BlendPalettes(0x1, 16, RGB_WHITEALPHA); + sTradeData->state++; + break; + case 35: + BlendPalettes(0x1, 0, RGB_WHITEALPHA); + sTradeData->state++; + break; + case 36: + BlendPalettes(0x1, 16, RGB_WHITEALPHA); + sTradeData->state++; + break; + case 37: + if (!IsPokeSpriteNotFlipped(sTradeData->tradeSpecies[0])) + { + gSprites[sTradeData->pokePicSpriteIdxs[0]].affineAnims = sSpriteAffineAnimTable_PlayerPokePicAlt; + gSprites[sTradeData->pokePicSpriteIdxs[0]].oam.affineMode = 3; + CalcCenterToCornerVec(&gSprites[sTradeData->pokePicSpriteIdxs[0]], 0, 3, 3); + StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[0]], 0); + } + else + { + StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[0]], 0); + } + StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[1]], 0); + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos1.x = 60; + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos1.x = 180; + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos1.y = 192; + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos1.y = -32; + gSprites[sTradeData->pokePicSpriteIdxs[0]].invisible = FALSE; + gSprites[sTradeData->pokePicSpriteIdxs[1]].invisible = FALSE; + sTradeData->state++; + break; + case 38: + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.y -= 3; + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos2.y += 3; + if (gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.y < -160 && gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.y >= -163) + { + PlaySE(SE_TK_WARPIN); + } + if (gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.y < -222) + { + gSprites[sTradeData->tradeGlow1SpriteId].data[1] = 0; + gSprites[sTradeData->gbaScreenSpriteId].data[1] = 0; + sTradeData->state++; + gSprites[sTradeData->pokePicSpriteIdxs[0]].invisible = TRUE; + gSprites[sTradeData->pokePicSpriteIdxs[1]].invisible = TRUE; + BlendPalettes(0x1, 0, RGB_WHITEALPHA); + } + break; + case 39: + gSprites[sTradeData->tradeGlow1SpriteId].pos2.y -= 3; + gSprites[sTradeData->gbaScreenSpriteId].pos2.y += 3; + if (gSprites[sTradeData->tradeGlow1SpriteId].pos2.y <= -222) + { + BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK); + sTradeData->state++; + DestroySprite(&gSprites[sTradeData->tradeGlow1SpriteId]); + DestroySprite(&gSprites[sTradeData->gbaScreenSpriteId]); + } + break; + case 40: + if (!gPaletteFade.active) + { + sTradeData->state++; + SetTradeSequenceBgGpuRegs(1); + sTradeData->bg1vofs = 166; + sTradeData->tradeGlow1SpriteId = CreateSprite(&sTradeGlow1SpriteTemplate, 128, -20, 3); + sTradeData->gbaScreenSpriteId = CreateSprite(&sGlowBallSpriteTemplate, 128, -20, 0); + StartSpriteAnim(&gSprites[sTradeData->gbaScreenSpriteId], 1); + } + break; + case 41: + BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK); + sTradeData->state++; + break; + case 42: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | + DISPCNT_OBJ_1D_MAP | + DISPCNT_BG1_ON | + DISPCNT_OBJ_ON); + if (!gPaletteFade.active) + { + sTradeData->state++; + } + break; + case 43: + gSprites[sTradeData->tradeGlow1SpriteId].pos2.y += 3; + gSprites[sTradeData->gbaScreenSpriteId].pos2.y += 3; + if (gSprites[sTradeData->tradeGlow1SpriteId].pos2.y + gSprites[sTradeData->tradeGlow1SpriteId].pos1.y == 64) + { + sTradeData->state++; + } + break; + case 44: + if ((sTradeData->bg1vofs += 2) > 316) + { + sTradeData->bg1vofs = 316; + sTradeData->state++; + } + break; + case 45: + DestroySprite(&gSprites[sTradeData->tradeGlow1SpriteId]); + DestroySprite(&gSprites[sTradeData->gbaScreenSpriteId]); + sTradeData->state++; + sTradeData->timer = 0; + break; + case 46: + if (++sTradeData->timer == 10) + { + sTradeData->state++; + } + break; + case 47: + if (++sTradeData->bg1vofs > 348) + { + sTradeData->bg1vofs = 348; + sTradeData->state++; + } + if (sTradeData->bg1vofs == 328 && sTradeData->isCableTrade) + { + sTradeData->linkCableEndSpriteId = CreateSprite(&sGameLinkCableEndSpriteTemplate, 128, 65, 0); + gSprites[sTradeData->linkCableEndSpriteId].callback = SpriteCB_GameLinkCableEnd_Inbound; + } + break; + case 48: + sTradeData->gbaScreenSpriteId = CreateSprite(&sTradeGBAScreenSpriteTemplate1, 120, 80, 0); + sTradeData->state = 50; + break; + case 50: + if (gSprites[sTradeData->gbaScreenSpriteId].animEnded) + { + DestroySprite(&gSprites[sTradeData->gbaScreenSpriteId]); + SetTradeSequenceBgGpuRegs(6); + sTradeData->state++; + PlaySE(SE_W028); + } + break; + case 51: + if (sTradeData->bg2Zoom < 0x400) + { + sTradeData->bg2Zoom += 0x34; + } + else + { + sTradeData->bg2Zoom = 0x400; + sTradeData->state++; + } + sTradeData->sXY = 0x8000 / sTradeData->bg2Zoom; + break; + case 52: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sTradeData->state = 60; + break; + + case 60: + if (!gPaletteFade.active) + { + SetTradeSequenceBgGpuRegs(5); + SetTradeSequenceBgGpuRegs(7); + gPaletteFade.bufferTransferDisabled = TRUE; + sTradeData->state++; + } + break; + case 61: + gPaletteFade.bufferTransferDisabled = FALSE; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + sTradeData->state++; + break; + case 62: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | + DISPCNT_OBJ_1D_MAP | + DISPCNT_BG2_ON | + DISPCNT_OBJ_ON); + if (!gPaletteFade.active) + { + sTradeData->state++; + } + break; + case 63: + sTradeData->pokeballSpriteId2 = CreateSprite(&sTradePokeballSpriteTemplate, 120, -8, 0); + gSprites[sTradeData->pokeballSpriteId2].data[3] = 74; + gSprites[sTradeData->pokeballSpriteId2].callback = SpriteCB_TradePokeball_Inbound; + StartSpriteAnim(&gSprites[sTradeData->pokeballSpriteId2], 1); + StartSpriteAffineAnim(&gSprites[sTradeData->pokeballSpriteId2], 2); + BlendPalettes(1 << (16 + gSprites[sTradeData->pokeballSpriteId2].oam.paletteNum), 16, RGB_WHITEALPHA); + sTradeData->state++; + sTradeData->timer = 0; + break; + case 64: + BeginNormalPaletteFade(1 << (16 + gSprites[sTradeData->pokeballSpriteId2].oam.paletteNum), 1, 16, 0, RGB_WHITEALPHA); + sTradeData->state++; + break; + case 65: + if (gSprites[sTradeData->pokeballSpriteId2].callback == SpriteCallbackDummy) + { + HandleLoadSpecialPokePic(&gMonFrontPicTable[sTradeData->tradeSpecies[1]], gMonSpritesGfxPtr->sprites[3], sTradeData->tradeSpecies[1], sTradeData->monPersonalities[1]); + sTradeData->state++; + } + break; + case 66: + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos1.x = 120; + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos1.y = gMonFrontPicCoords[sTradeData->tradeSpecies[1]].y_offset + 60; + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos2.x = 0; + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos2.y = 0; + StartSpriteAnim(&gSprites[sTradeData->pokePicSpriteIdxs[1]], 0); + CreatePokeballSpriteToReleaseMon(sTradeData->pokePicSpriteIdxs[1], gSprites[sTradeData->pokePicSpriteIdxs[1]].oam.paletteNum, 120, 84, 2, 1, 20, 0xFFFFF); + FreeSpriteOamMatrix(&gSprites[sTradeData->pokeballSpriteId2]); + DestroySprite(&gSprites[sTradeData->pokeballSpriteId2]); + sTradeData->state++; + break; + case 67: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | + DISPCNT_OBJ_1D_MAP | + DISPCNT_BG0_ON | + DISPCNT_BG2_ON | + DISPCNT_OBJ_ON); + StringExpandPlaceholders(gStringVar4, gText_XSentOverY); + DrawTextOnTradeWindow(0, gStringVar4, 0); + sTradeData->state = 167; + sTradeData->timer = 0; + break; + // 167 and 267 are extra cases added in for animations + case 167: + if (++sTradeData->timer > 60) + { + if (sTradeData->tradeSpecies[1] != SPECIES_EGG) + { + PlayCry1(sTradeData->tradeSpecies[1], 0); + } + sTradeData->state = 267; + sTradeData->timer = 0; + } + break; + case 267: + if (IsCryFinished()) + { + sTradeData->state = 68; + } + break; + case 68: + if (++sTradeData->timer == 10) + { + PlayFanfare(MUS_FANFA5); + } + if (sTradeData->timer == 250) + { + sTradeData->state++; + StringExpandPlaceholders(gStringVar4, gText_TakeGoodCareOfX); + DrawTextOnTradeWindow(0, gStringVar4, 0); + sTradeData->timer = 0; + } + break; + case 69: + if (++sTradeData->timer == 60) + { + sTradeData->state++; + } + break; + case 70: + CheckPartnersMonForRibbons(); + sTradeData->state++; + break; + case 71: + if (sTradeData->isLinkTrade) + { + return TRUE; + } + else if (JOY_NEW(A_BUTTON)) + { + sTradeData->state++; + } + break; + case 72: // Only if in-game trade + TradeMons(gSpecialVar_0x8005, 0); + gCB2_AfterEvolution = CB2_RunTradeAnim_InGameTrade; + evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[0]], TRUE, ITEM_NONE); + if (evoTarget != SPECIES_NONE) + { + TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[0]], evoTarget, sTradeData->pokePicSpriteIdxs[1], gSelectedTradeMonPositions[0]); + } + sTradeData->state++; + break; + case 73: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sTradeData->state++; + break; + case 74: + if (!gPaletteFade.active) + { + PlayNewMapMusic(sTradeData->cachedMapMusic); + if (sTradeData) + { + FreeAllWindowBuffers(); + Free(GetBgTilemapBuffer(3)); + Free(GetBgTilemapBuffer(1)); + Free(GetBgTilemapBuffer(0)); + FreeMonSpritesGfx(); + FREE_AND_SET_NULL(sTradeData); + } + SetMainCallback2(CB2_ReturnToField); + BufferInGameTradeMonName(); + HelpSystem_Enable(); + } + break; + } + return FALSE; +} + +static bool8 DoTradeAnim_Wireless(void) +{ + u16 evoTarget; + + switch (sTradeData->state) + { + case 0: + gSprites[sTradeData->pokePicSpriteIdxs[0]].invisible = FALSE; + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.x = -180; + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.y = gMonFrontPicCoords[sTradeData->tradeSpecies[0]].y_offset; + sTradeData->state++; + sTradeData->cachedMapMusic = GetCurrentMapMusic(); + PlayNewMapMusic(MUS_SHINKA); + break; + case 1: + if (sTradeData->bg2hofs > 0) + { + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.x += 3; + sTradeData->bg2hofs -= 3; + } + else + { + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.x = 0; + sTradeData->bg2hofs = 0; + sTradeData->state = 10; + } + break; + case 10: + StringExpandPlaceholders(gStringVar4, gText_XWillBeSentToY); + DrawTextOnTradeWindow(0, gStringVar4, 0); + + if (sTradeData->tradeSpecies[0] != SPECIES_EGG) + { + PlayCry1(sTradeData->tradeSpecies[0], 0); + } + + sTradeData->state = 11; + sTradeData->timer = 0; + break; + case 11: + if (++sTradeData->timer == 80) + { + sTradeData->pokeballSpriteId = CreateTradePokeballSprite(sTradeData->pokePicSpriteIdxs[0], gSprites[sTradeData->pokePicSpriteIdxs[0]].oam.paletteNum, 120, 32, 2, 1, 0x14, 0xfffff); + sTradeData->state++; + StringExpandPlaceholders(gStringVar4, gText_ByeByeVar1); + DrawTextOnTradeWindow(0, gStringVar4, 0); + } + break; + case 12: + if (gSprites[sTradeData->pokeballSpriteId].callback == SpriteCallbackDummy) + { + sTradeData->pokeballSpriteId2 = CreateSprite(&sTradePokeballSpriteTemplate, 120, 32, 0); + gSprites[sTradeData->pokeballSpriteId2].callback = SpriteCB_TradePokeball_Outbound; + DestroySprite(&gSprites[sTradeData->pokeballSpriteId]); + sTradeData->state++; + } + break; + case 13: + // The game waits here for the sprite to finish its animation sequence. + break; + case 14: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sTradeData->state = 20; + break; + case 20: + if (!gPaletteFade.active) + { + SetTradeSequenceBgGpuRegs(4); + FillWindowPixelBuffer(0, PIXEL_FILL(15)); + CopyWindowToVram(0, 3); + sTradeData->state++; + } + break; + case 21: + BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK); + sTradeData->state++; + break; + case 22: + if (!gPaletteFade.active) + { + sTradeData->state = 23; + } + break; + case 23: + if (sTradeData->bg2Zoom > 0x100) + { + sTradeData->bg2Zoom -= 0x34; + } + else + { + SetTradeSequenceBgGpuRegs(1); + sTradeData->bg2Zoom = 0x80; + sTradeData->state = 124; + sTradeData->timer = 0; + } + sTradeData->sXY = 0x8000 / sTradeData->bg2Zoom; + break; + case 124: + if (++sTradeData->timer > 20) + { + SetTradeSequenceBgGpuRegs(3); + sTradeData->gbaScreenSpriteId = CreateSprite(&sTradeGBAScreenSpriteTemplate2, 120, 80, 0); + sTradeData->state++; + } + break; + case 125: + if (gSprites[sTradeData->gbaScreenSpriteId].animEnded) + { + DestroySprite(&gSprites[sTradeData->gbaScreenSpriteId]); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | + BLDCNT_TGT1_OBJ | + BLDCNT_EFFECT_BLEND | + BLDCNT_TGT2_BG2); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 4)); + CreateTask(Task_AnimateWirelessSignal, 5); + sTradeData->state++; + } + break; + case 126: + if (!FuncIsActiveTask(Task_AnimateWirelessSignal)) + { + sTradeData->state = 26; + } + break; + case 26: + if (--sTradeData->bg1vofs == 316) + { + sTradeData->state++; + } + break; + case 27: + sTradeData->tradeGlow1SpriteId = CreateSprite(&sTradeGlow1SpriteTemplate, 120, 80, 3); + gSprites[sTradeData->tradeGlow1SpriteId].callback = SpriteCB_TradeGlowWireless; + sTradeData->gbaScreenSpriteId = CreateSprite(&sGlowBallSpriteTemplate, 120, 80, 0); + StartSpriteAnim(&gSprites[sTradeData->gbaScreenSpriteId], 1); + sTradeData->state++; + break; + case 28: + if ((sTradeData->bg1vofs -= 3) == 166) + { + sTradeData->state = 200; + } + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 | + DISPCNT_OBJ_1D_MAP | + DISPCNT_BG1_ON | + DISPCNT_OBJ_ON); + break; + case 200: + gSprites[sTradeData->tradeGlow1SpriteId].pos1.y -= 2; + gSprites[sTradeData->gbaScreenSpriteId].pos1.y -= 2; + if (gSprites[sTradeData->tradeGlow1SpriteId].pos1.y < -8) + { + sTradeData->state = 29; + } + break; + case 29: + BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK); + sTradeData->state = 30; + break; + case 30: + if (!gPaletteFade.active) + { + DestroySprite(&gSprites[sTradeData->tradeGlow1SpriteId]); + DestroySprite(&gSprites[sTradeData->gbaScreenSpriteId]); + SetTradeSequenceBgGpuRegs(2); + sTradeData->state++; + } + break; + case 31: + BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK); + sTradeData->tradeGlow1SpriteId = CreateSprite(&sGlowBallSpriteTemplate, 111, 170, 0); + sTradeData->gbaScreenSpriteId = CreateSprite(&sGlowBallSpriteTemplate, 129, -10, 0); + sTradeData->state++; + break; + case 32: + if (!gPaletteFade.active) + { + PlaySE(SE_TK_WARPOUT); + sTradeData->state++; + } + gSprites[sTradeData->tradeGlow1SpriteId].pos2.y -= 3; + gSprites[sTradeData->gbaScreenSpriteId].pos2.y += 3; + break; + case 33: + gSprites[sTradeData->tradeGlow1SpriteId].pos2.y -= 3; + gSprites[sTradeData->gbaScreenSpriteId].pos2.y += 3; + if (gSprites[sTradeData->tradeGlow1SpriteId].pos2.y <= -90) + { + gSprites[sTradeData->tradeGlow1SpriteId].data[1] = 1; + gSprites[sTradeData->gbaScreenSpriteId].data[1] = 1; + sTradeData->state++; + CreateTask(Task_OpenCenterWhiteColumn, 5); + } + break; + case 34: + BlendPalettes(0x8, 16, RGB_WHITEALPHA); + sTradeData->state++; + break; + case 35: + BlendPalettes(0x8, 16, RGB_WHITEALPHA); + sTradeData->state++; + break; + case 36: + BlendPalettes(0x8, 16, RGB_WHITEALPHA); + sTradeData->state++; + break; + case 37: + if (!IsPokeSpriteNotFlipped(sTradeData->tradeSpecies[0])) + { + gSprites[sTradeData->pokePicSpriteIdxs[0]].affineAnims = sSpriteAffineAnimTable_PlayerPokePicAlt; + gSprites[sTradeData->pokePicSpriteIdxs[0]].oam.affineMode = 3; + CalcCenterToCornerVec(&gSprites[sTradeData->pokePicSpriteIdxs[0]], 0, 3, 3); + StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[0]], 0); + } + else + { + StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[0]], 0); + } + StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[1]], 0); + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos1.x = 40; + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos1.x = 200; + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos1.y = 192; + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos1.y = -32; + gSprites[sTradeData->pokePicSpriteIdxs[0]].invisible = FALSE; + gSprites[sTradeData->pokePicSpriteIdxs[1]].invisible = FALSE; + sTradeData->state++; + break; + case 38: + gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.y -= 3; + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos2.y += 3; + if (gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.y < -160 && gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.y >= -163) + { + PlaySE(SE_TK_WARPIN); + } + if (gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.y < -222) + { + gSprites[sTradeData->tradeGlow1SpriteId].data[1] = 0; + gSprites[sTradeData->gbaScreenSpriteId].data[1] = 0; + sTradeData->state++; + gSprites[sTradeData->pokePicSpriteIdxs[0]].invisible = TRUE; + gSprites[sTradeData->pokePicSpriteIdxs[1]].invisible = TRUE; + CreateTask(Task_CloseCenterWhiteColumn, 5); + } + break; + case 39: + gSprites[sTradeData->tradeGlow1SpriteId].pos2.y -= 3; + gSprites[sTradeData->gbaScreenSpriteId].pos2.y += 3; + if (gSprites[sTradeData->tradeGlow1SpriteId].pos2.y <= -222) + { + BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK); + sTradeData->state++; + DestroySprite(&gSprites[sTradeData->tradeGlow1SpriteId]); + DestroySprite(&gSprites[sTradeData->gbaScreenSpriteId]); + } + break; + case 40: + if (!gPaletteFade.active) + { + sTradeData->state++; + SetTradeSequenceBgGpuRegs(1); + sTradeData->bg1vofs = 166; + SetTradeSequenceBgGpuRegs(3); + sTradeData->bg2vofs = 412; + sTradeData->tradeGlow1SpriteId = CreateSprite(&sTradeGlow1SpriteTemplate, 120, -20, 3); + gSprites[sTradeData->tradeGlow1SpriteId].callback = SpriteCB_TradeGlowWireless; + sTradeData->gbaScreenSpriteId = CreateSprite(&sGlowBallSpriteTemplate, 120, -20, 0); + StartSpriteAnim(&gSprites[sTradeData->gbaScreenSpriteId], 1); + } + break; + case 41: + BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK); + sTradeData->state++; + break; + case 42: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | + DISPCNT_OBJ_1D_MAP | + DISPCNT_BG1_ON | + DISPCNT_OBJ_ON); + if (!gPaletteFade.active) + { + sTradeData->state++; + } + break; + case 43: + gSprites[sTradeData->tradeGlow1SpriteId].pos2.y += 4; + gSprites[sTradeData->gbaScreenSpriteId].pos2.y += 4; + if (gSprites[sTradeData->tradeGlow1SpriteId].pos2.y + gSprites[sTradeData->tradeGlow1SpriteId].pos1.y == 64) + { + sTradeData->state = 144; + sTradeData->timer = 0; + } + break; + case 144: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | + DISPCNT_OBJ_1D_MAP | + DISPCNT_BG1_ON | + DISPCNT_BG2_ON | + DISPCNT_OBJ_ON); + sTradeData->bg1vofs += 3; + sTradeData->bg2vofs += 3; + if (++sTradeData->timer == 10) + { + u8 taskId = CreateTask(Task_AnimateWirelessSignal, 5); + gTasks[taskId].data[2] = TRUE; + } + if (sTradeData->bg1vofs > 316) + { + sTradeData->bg1vofs = 316; + sTradeData->state++; + } + break; + case 145: + DestroySprite(&gSprites[sTradeData->tradeGlow1SpriteId]); + DestroySprite(&gSprites[sTradeData->gbaScreenSpriteId]); + sTradeData->state++; + sTradeData->timer = 0; + break; + case 146: + if (!FuncIsActiveTask(Task_AnimateWirelessSignal)) + { + sTradeData->state = 46; + sTradeData->timer = 0; + } + break; + case 46: + if (++sTradeData->timer == 10) + { + sTradeData->state++; + } + break; + case 47: + if (++sTradeData->bg1vofs > 348) + { + sTradeData->bg1vofs = 348; + sTradeData->state++; + } + break; + case 48: + sTradeData->gbaScreenSpriteId = CreateSprite(&sTradeGBAScreenSpriteTemplate1, 120, 80, 0); + sTradeData->state = 50; + break; + case 50: + if (gSprites[sTradeData->gbaScreenSpriteId].animEnded) + { + DestroySprite(&gSprites[sTradeData->gbaScreenSpriteId]); + SetTradeSequenceBgGpuRegs(6); + sTradeData->state++; + PlaySE(SE_W028); + } + break; + case 51: + if (sTradeData->bg2Zoom < 0x400) + { + sTradeData->bg2Zoom += 0x34; + } + else + { + sTradeData->bg2Zoom = 0x400; + sTradeData->state++; + } + sTradeData->sXY = 0x8000 / sTradeData->bg2Zoom; + break; + case 52: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sTradeData->state = 60; + break; + + case 60: + if (!gPaletteFade.active) + { + SetTradeSequenceBgGpuRegs(5); + SetTradeSequenceBgGpuRegs(7); + gPaletteFade.bufferTransferDisabled = TRUE; + sTradeData->state++; + } + break; + case 61: + gPaletteFade.bufferTransferDisabled = FALSE; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + sTradeData->state++; + break; + case 62: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | + DISPCNT_OBJ_1D_MAP | + DISPCNT_BG2_ON | + DISPCNT_OBJ_ON); + if (!gPaletteFade.active) + { + sTradeData->state++; + } + break; + case 63: + sTradeData->pokeballSpriteId2 = CreateSprite(&sTradePokeballSpriteTemplate, 120, -8, 0); + gSprites[sTradeData->pokeballSpriteId2].data[3] = 74; + gSprites[sTradeData->pokeballSpriteId2].callback = SpriteCB_TradePokeball_Inbound; + StartSpriteAnim(&gSprites[sTradeData->pokeballSpriteId2], 1); + StartSpriteAffineAnim(&gSprites[sTradeData->pokeballSpriteId2], 2); + BlendPalettes(1 << (16 + gSprites[sTradeData->pokeballSpriteId2].oam.paletteNum), 16, RGB_WHITEALPHA); + sTradeData->state++; + sTradeData->timer = 0; + break; + case 64: + BeginNormalPaletteFade(1 << (16 + gSprites[sTradeData->pokeballSpriteId2].oam.paletteNum), 1, 16, 0, RGB_WHITEALPHA); + sTradeData->state++; + break; + case 65: + if (gSprites[sTradeData->pokeballSpriteId2].callback == SpriteCallbackDummy) + { + HandleLoadSpecialPokePic(&gMonFrontPicTable[sTradeData->tradeSpecies[1]], gMonSpritesGfxPtr->sprites[3], sTradeData->tradeSpecies[1], sTradeData->monPersonalities[1]); + sTradeData->state++; + } + break; + case 66: + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos1.x = 120; + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos1.y = gMonFrontPicCoords[sTradeData->tradeSpecies[1]].y_offset + 60; + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos2.x = 0; + gSprites[sTradeData->pokePicSpriteIdxs[1]].pos2.y = 0; + StartSpriteAnim(&gSprites[sTradeData->pokePicSpriteIdxs[1]], 0); + CreatePokeballSpriteToReleaseMon(sTradeData->pokePicSpriteIdxs[1], gSprites[sTradeData->pokePicSpriteIdxs[1]].oam.paletteNum, 120, 84, 2, 1, 20, 0xFFFFF); + FreeSpriteOamMatrix(&gSprites[sTradeData->pokeballSpriteId2]); + DestroySprite(&gSprites[sTradeData->pokeballSpriteId2]); + sTradeData->state++; + break; + case 67: + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | + DISPCNT_OBJ_1D_MAP | + DISPCNT_BG0_ON | + DISPCNT_BG2_ON | + DISPCNT_OBJ_ON); + StringExpandPlaceholders(gStringVar4, gText_XSentOverY); + DrawTextOnTradeWindow(0, gStringVar4, 0); + sTradeData->state = 167; + sTradeData->timer = 0; + break; + // 167 and 267 are extra cases added in for animations + case 167: + if (++sTradeData->timer > 60) + { + if (sTradeData->tradeSpecies[1] != SPECIES_EGG) + { + PlayCry1(sTradeData->tradeSpecies[1], 0); + } + sTradeData->state = 267; + sTradeData->timer = 0; + } + break; + case 267: + if (IsCryFinished()) + { + sTradeData->state = 68; + } + break; + case 68: + if (++sTradeData->timer == 10) + { + PlayFanfare(MUS_FANFA5); + } + if (sTradeData->timer == 250) + { + sTradeData->state++; + StringExpandPlaceholders(gStringVar4, gText_TakeGoodCareOfX); + DrawTextOnTradeWindow(0, gStringVar4, 0); + sTradeData->timer = 0; + } + break; + case 69: + if (++sTradeData->timer == 60) + { + sTradeData->state++; + } + break; + case 70: + CheckPartnersMonForRibbons(); + sTradeData->state++; + break; + case 71: + if (sTradeData->isLinkTrade) + { + return TRUE; + } + else if (JOY_NEW(A_BUTTON)) + { + sTradeData->state++; + } + break; + case 72: // Only if in-game trade + TradeMons(gSpecialVar_0x8005, 0); + gCB2_AfterEvolution = CB2_RunTradeAnim_InGameTrade; + evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[0]], TRUE, ITEM_NONE); + if (evoTarget != SPECIES_NONE) + { + TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[0]], evoTarget, sTradeData->pokePicSpriteIdxs[1], gSelectedTradeMonPositions[0]); + } + sTradeData->state++; + break; + case 73: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sTradeData->state++; + break; + case 74: + if (!gPaletteFade.active) + { + PlayNewMapMusic(sTradeData->cachedMapMusic); + if (sTradeData) + { + FreeAllWindowBuffers(); + Free(GetBgTilemapBuffer(3)); + Free(GetBgTilemapBuffer(1)); + Free(GetBgTilemapBuffer(0)); + FreeMonSpritesGfx(); + FREE_AND_SET_NULL(sTradeData); + } + SetMainCallback2(CB2_ReturnToField); + BufferInGameTradeMonName(); + HelpSystem_Enable(); + } + break; + } + return FALSE; +} + +static void sub_8053788(void) +{ + u16 evoSpecies; + switch (gMain.state) + { + case 0: + gMain.state = 4; + gSoftResetDisabled = TRUE; + break; + case 4: + gCB2_AfterEvolution = sub_8053E8C; + evoSpecies = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[0]], 1, 0); + if (evoSpecies != SPECIES_NONE) + TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[0]], evoSpecies, sTradeData->pokePicSpriteIdxs[1], gSelectedTradeMonPositions[0]); + else + SetMainCallback2(sub_8053E8C); + gSelectedTradeMonPositions[0] = 0xFF; + break; + } + if (!HasLinkErrorOccurred()) + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void HandleLinkDataReceive(void) +{ + u8 recvStatus; + GetMultiplayerIdIfLinkTrade(); + recvStatus = GetBlockReceivedStatus(); + if (recvStatus & (1 << 0)) + { + if (gBlockRecvBuffer[0][0] == 0xDCBA) + SetMainCallback2(sub_8053788); + if (gBlockRecvBuffer[0][0] == 0xABCD) + sTradeData->tradeStatus1 = 1; + ResetBlockReceivedFlag(0); + } + if (recvStatus & (1 << 1)) + { + if (gBlockRecvBuffer[1][0] == 0xABCD) + sTradeData->tradeStatus2 = 1; + ResetBlockReceivedFlag(1); + } +} + +static void SpriteCB_TradePokeball_Default(struct Sprite * sprite) +{ + sprite->pos1.y += sprite->data[0] / 10; + sprite->data[5] += sprite->data[1]; + sprite->pos1.x = sprite->data[5] / 10; + if (sprite->pos1.y > 76) + { + sprite->pos1.y = 76; + sprite->data[0] = -(sprite->data[0] * sprite->data[2]) / 100; + sprite->data[3]++; + } + if (sprite->pos1.x == 120) + sprite->data[1] = 0; + sprite->data[0] += sprite->data[4]; + if (sprite->data[3] == 4) + { + sprite->data[7] = 1; + sprite->callback = SpriteCallbackDummy; + } +} + +static void SpriteCB_TradePokeball_Outbound(struct Sprite * sprite) +{ + sprite->pos2.y += sTradeBallVerticalVelocityTable[sprite->data[0]]; + if (sprite->data[0] == 22) + PlaySE(SE_KON); + sprite->data[0]++; + if (sprite->data[0] == 44) + { + PlaySE(SE_W025); + sprite->callback = SpriteCB_TradePokeball_Outbound2; + sprite->data[0] = 0; + BeginNormalPaletteFade(1 << (sprite->oam.paletteNum + 16), -1, 0, 16, RGB_WHITEALPHA); + } +} + +static void SpriteCB_TradePokeball_Outbound2(struct Sprite * sprite) +{ + if (sprite->data[1] == 20) + StartSpriteAffineAnim(sprite, 1); + sprite->data[1]++; + if (sprite->data[1] > 20) + { + sprite->pos2.y -= sTradeBallVerticalVelocityTable[sprite->data[0]]; + sprite->data[0]++; + if (sprite->data[0] == 23) + { + DestroySprite(sprite); + sTradeData->state = 14; + } + } +} + +static void SpriteCB_TradePokeball_Inbound(struct Sprite * sprite) +{ + if (sprite->data[2] == 0) + { + sprite->pos1.y += 4; + if (sprite->pos1.y > sprite->data[3]) + { + sprite->data[2]++; + sprite->data[0] = 22; + PlaySE(SE_KON); + } + } + else + { + if (sprite->data[0] == 66) + PlaySE(SE_KON2); + if (sprite->data[0] == 92) + PlaySE(SE_KON3); + if (sprite->data[0] == 107) + PlaySE(SE_KON4); + sprite->pos2.y += sTradeBallVerticalVelocityTable[sprite->data[0]]; + sprite->data[0]++; + if (sprite->data[0] == 108) + sprite->callback = SpriteCallbackDummy; + } +} + +u16 GetInGameTradeSpeciesInfo(void) +{ + // Populates gStringVar1 with the name of the requested species and + // gStringVar2 with the name of the offered species. + // Returns the requested species. + const struct InGameTrade * inGameTrade = &sInGameTrades[gSpecialVar_0x8004]; + StringCopy(gStringVar1, gSpeciesNames[inGameTrade->requestedSpecies]); + StringCopy(gStringVar2, gSpeciesNames[inGameTrade->species]); + return inGameTrade->requestedSpecies; +} + +static void BufferInGameTradeMonName(void) +{ + // Populates gStringVar1 with the nickname of the sent Pokemon and + // gStringVar2 with the name of the offered species. + u8 nickname[30]; + const struct InGameTrade * inGameTrade = &sInGameTrades[gSpecialVar_0x8004]; + GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_NICKNAME, nickname); + StringCopy10(gStringVar1, nickname); + StringCopy(gStringVar2, gSpeciesNames[inGameTrade->species]); +} + +static void CreateInGameTradePokemonInternal(u8 playerSlot, u8 inGameTradeIdx) +{ + const struct InGameTrade * inGameTrade = &sInGameTrades[inGameTradeIdx]; + u8 level = GetMonData(&gPlayerParty[playerSlot], MON_DATA_LEVEL); + struct MailStruct mail; + u8 metLocation = MAPSEC_IN_GAME_TRADE; + struct Pokemon * tradeMon = &gEnemyParty[0]; + u8 mailNum; + CreateMon(tradeMon, inGameTrade->species, level, 32, TRUE, inGameTrade->personality, TRUE, inGameTrade->otId); + SetMonData(tradeMon, MON_DATA_HP_IV, &inGameTrade->ivs[0]); + SetMonData(tradeMon, MON_DATA_ATK_IV, &inGameTrade->ivs[1]); + SetMonData(tradeMon, MON_DATA_DEF_IV, &inGameTrade->ivs[2]); + SetMonData(tradeMon, MON_DATA_SPEED_IV, &inGameTrade->ivs[3]); + SetMonData(tradeMon, MON_DATA_SPATK_IV, &inGameTrade->ivs[4]); + SetMonData(tradeMon, MON_DATA_SPDEF_IV, &inGameTrade->ivs[5]); + SetMonData(tradeMon, MON_DATA_NICKNAME, inGameTrade->nickname); + SetMonData(tradeMon, MON_DATA_OT_NAME, inGameTrade->otName); + SetMonData(tradeMon, MON_DATA_OT_GENDER, &inGameTrade->otGender); + SetMonData(tradeMon, MON_DATA_ABILITY_NUM, &inGameTrade->abilityNum); + SetMonData(tradeMon, MON_DATA_BEAUTY, &inGameTrade->conditions[1]); + SetMonData(tradeMon, MON_DATA_CUTE, &inGameTrade->conditions[2]); + SetMonData(tradeMon, MON_DATA_COOL, &inGameTrade->conditions[0]); + SetMonData(tradeMon, MON_DATA_SMART, &inGameTrade->conditions[3]); + SetMonData(tradeMon, MON_DATA_TOUGH, &inGameTrade->conditions[4]); + SetMonData(tradeMon, MON_DATA_SHEEN, &inGameTrade->sheen); + SetMonData(tradeMon, MON_DATA_MET_LOCATION, &metLocation); + mailNum = 0; + if (inGameTrade->heldItem != ITEM_NONE) + { + if (ItemIsMail(inGameTrade->heldItem)) + { + GetInGameTradeMail(&mail, inGameTrade); + gLinkPartnerMail[0] = mail; + SetMonData(tradeMon, MON_DATA_MAIL, &mailNum); + SetMonData(tradeMon, MON_DATA_HELD_ITEM, &inGameTrade->heldItem); + } + else + { + SetMonData(tradeMon, MON_DATA_HELD_ITEM, &inGameTrade->heldItem); + } + } + CalculateMonStats(&gEnemyParty[0]); +} + +static void GetInGameTradeMail(struct MailStruct * mail, const struct InGameTrade * inGameTrade) +{ + int i; + for (i = 0; i < 9; i++) + mail->words[i] = sInGameTradeMailMessages[inGameTrade->mailNum][i]; + StringCopy(mail->playerName, inGameTrade->otName); + mail->trainerId[0] = inGameTrade->otId >> 24; + mail->trainerId[1] = inGameTrade->otId >> 16; + mail->trainerId[2] = inGameTrade->otId >> 8; + mail->trainerId[3] = inGameTrade->otId; + mail->species = inGameTrade->species; + mail->itemId = inGameTrade->heldItem; +} + +u16 GetTradeSpecies(void) +{ + if (GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_IS_EGG)) + return SPECIES_NONE; + else + return GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_SPECIES); +} + +void CreateInGameTradePokemon(void) +{ + CreateInGameTradePokemonInternal(gSpecialVar_0x8005, gSpecialVar_0x8004); +} + +static void CB2_RunTradeAnim_LinkTrade(void) +{ + if (DoTradeAnim() == TRUE) + { + DestroySprite(&gSprites[sTradeData->pokePicSpriteIdxs[0]]); + FreeSpriteOamMatrix(&gSprites[sTradeData->pokePicSpriteIdxs[1]]); + TradeMons(gSelectedTradeMonPositions[0], gSelectedTradeMonPositions[1] % 6); + sTradeData->linkData[0] = 0xABCD; + sTradeData->scheduleLinkTransfer = 1; + SetMainCallback2(CB2_WaitAndAckTradeComplete); + } + HandleLinkDataSend(); + HandleLinkDataReceive(); + RunTasks(); + RunTextPrinters(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void CB2_WaitAndAckTradeComplete(void) +{ + u8 mpId = GetMultiplayerIdIfLinkTrade(); + HandleLinkDataReceive(); + if (mpId == 0 && sTradeData->tradeStatus1 == 1 && sTradeData->tradeStatus2 == 1) + { + sTradeData->linkData[0] = 0xDCBA; + SendBlock(bitmask_all_link_players_but_self(), sTradeData->linkData, 20); + sTradeData->tradeStatus1 = 2; + sTradeData->tradeStatus2 = 2; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void sub_8053E8C(void) +{ + switch (gMain.state) + { + case 0: + gMain.state++; + StringExpandPlaceholders(gStringVar4, gUnknown_841E325); + DrawTextOnTradeWindow(0, gStringVar4, 0); + break; + case 1: + sub_800AB9C(); + gMain.state = 100; + sTradeData->timer = 0; + break; + case 100: + if (++sTradeData->timer > 180) + { + gMain.state = 101; + sTradeData->timer = 0; + } + if (IsLinkTaskFinished()) + { + gMain.state = 2; + } + break; + case 101: + if (IsLinkTaskFinished()) + { + gMain.state = 2; + } + break; + case 2: + gMain.state = 50; + StringExpandPlaceholders(gStringVar4, gText_SavingDontTurnOffThePower2); + DrawTextOnTradeWindow(0, gStringVar4, 0); + break; + case 50: + if (InUnionRoom()) + { + sub_8113550(18, sTradeData->monSpecies); + } + else + { + sub_8113550(12, sTradeData->monSpecies); + IncrementGameStat(GAME_STAT_POKEMON_TRADES); + } + if (gWirelessCommType) + { + sub_8144714(2, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId); + } + SetContinueGameWarpStatusToDynamicWarp(); + sub_80DA3AC(); + gMain.state++; + sTradeData->timer = 0; + break; + case 51: + if (++sTradeData->timer == 5) + { + gMain.state++; + } + break; + case 52: + if (sub_80DA3D8()) + { + ClearContinueGameWarpStatus2(); + gMain.state = 4; + } + else + { + sTradeData->timer = 0; + gMain.state = 51; + } + break; + case 4: + sub_80DA40C(); + gMain.state = 40; + sTradeData->timer = 0; + break; + case 40: + if (++sTradeData->timer > 50) + { + if (GetMultiplayerId() == 0) + { + sTradeData->timer = Random() % 30; + } + else + { + sTradeData->timer = 0; + } + gMain.state = 41; + } + break; + case 41: + if (sTradeData->timer == 0) + { + sub_800AB9C(); + gMain.state = 42; + } + else + { + sTradeData->timer--; + } + break; + case 42: + if (IsLinkTaskFinished()) + { + sub_80DA434(); + gMain.state = 5; + } + break; + case 5: + if (++sTradeData->timer > 60) + { + gMain.state++; + sub_800AB9C(); + } + break; + case 6: + if (IsLinkTaskFinished()) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + gMain.state ++; + } + break; + case 7: + if (!gPaletteFade.active) + { + FadeOutBGM(3); + gMain.state++; + } + break; + case 8: + if (IsBGMStopped() == TRUE) + { + if (gWirelessCommType && gMain.savedCallback == CB2_ReturnFromLinkTrade) + { + sub_800AB9C(); + } + else + { + sub_800AAC0(); + } + gMain.state++; + } + break; + case 9: + if (gWirelessCommType && gMain.savedCallback == CB2_ReturnFromLinkTrade) + { + if (IsLinkRfuTaskFinished()) + { + gSoftResetDisabled = FALSE; + SetMainCallback2(LinkTrade_TearDownAssets); + } + } + else if (!gReceivedRemoteLinkPlayers) + { + gSoftResetDisabled = FALSE; + SetMainCallback2(LinkTrade_TearDownAssets); + } + break; + } + if (!HasLinkErrorOccurred()) + { + RunTasks(); + } + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void LinkTrade_TearDownAssets(void) +{ + if (!gPaletteFade.active) + { + FreeAllWindowBuffers(); + Free(GetBgTilemapBuffer(3)); + Free(GetBgTilemapBuffer(1)); + Free(GetBgTilemapBuffer(0)); + FreeMonSpritesGfx(); + FREE_AND_SET_NULL(sTradeData); + if (gWirelessCommType != 0) + DestroyWirelessStatusIndicatorSprite(); + SetMainCallback2(gMain.savedCallback); + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void DoInGameTradeScene(void) +{ + ScriptContext2_Enable(); + CreateTask(Task_WaitFadeAndStartInGameTradeAnim, 10); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + HelpSystem_Disable(); +} + +static void Task_WaitFadeAndStartInGameTradeAnim(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(CB2_InitTradeAnim_InGameTrade); + gFieldCallback = FieldCallback_ReturnToEventScript2; + DestroyTask(taskId); + } +} + +static void CheckPartnersMonForRibbons(void) +{ + u8 nRibbons = 0; + u8 i; + for (i = 0; i < 12; i++) + { + nRibbons += GetMonData(&gEnemyParty[gSelectedTradeMonPositions[1] % 6], MON_DATA_CHAMPION_RIBBON + i); + } + if (nRibbons != 0) + FlagSet(FLAG_SYS_RIBBON_GET); +} + +void LoadTradeAnimGfx(void) +{ + TradeAnimInit_LoadGfx(); +} + +void DrawTextOnTradeWindow(u8 windowId, const u8 *str, s8 speed) +{ + FillWindowPixelBuffer(windowId, PIXEL_FILL(15)); + sTradeData->textColor[0] = 15; + sTradeData->textColor[1] = 1; + sTradeData->textColor[2] = 6; + AddTextPrinterParameterized4(windowId, 2, 0, 2, 0, 2, sTradeData->textColor, speed, str); + CopyWindowToVram(windowId, 3); +} + +static void Task_AnimateWirelessSignal(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u16 r2 = 16 * sWirelessSignalAnimParams[data[0]][0]; + if (data[2] == 0) + { + if (r2 == 0x100) + LoadPalette(sWirelessSignalAnimPals_Off, 0x30, 0x20); + else + LoadPalette(&sWirelessSignalAnimPals_Outbound[r2], 0x30, 0x20); + } + else + { + if (r2 == 0x100) + LoadPalette(sWirelessSignalAnimPals_Off, 0x30, 0x20); + else + LoadPalette(&sWirelessSignalAnimPals_Inbound[r2], 0x30, 0x20); + } + if (sWirelessSignalAnimParams[data[0]][0] == 0 && data[1] == 0) + PlaySE(SE_W215); + if (data[1] == sWirelessSignalAnimParams[data[0]][1]) + { + data[0]++; + data[1] = 0; + if (sWirelessSignalAnimParams[data[0]][1] == 0xFF) + DestroyTask(taskId); + } + else + data[1]++; +} + +static void Task_OpenCenterWhiteColumn(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (data[0] == 0) + { + sTradeData->win0left = sTradeData->win0right = 120; + sTradeData->win0top = 0; + sTradeData->win0bottom = 160; + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_OBJ); + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 | + WININ_WIN0_BG1 | + WININ_WIN0_OBJ); + } + + SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE2(sTradeData->win0left, sTradeData->win0right)); + SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE2(sTradeData->win0top, sTradeData->win0bottom)); + + data[0]++; + sTradeData->win0left -= 5; + sTradeData->win0right += 5; + + if (sTradeData->win0left < 80) + { + DestroyTask(taskId); + } +} + +static void Task_CloseCenterWhiteColumn(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (data[0] == 0) + { + sTradeData->win0left = 80; + sTradeData->win0right = 160; + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_OBJ); + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 | + WININ_WIN0_BG1 | + WININ_WIN0_OBJ); + } + + SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE2(sTradeData->win0left, sTradeData->win0right)); + SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE2(sTradeData->win0top, sTradeData->win0bottom)); + + if (sTradeData->win0left != 120) + { + data[0]++; + sTradeData->win0left += 5; + sTradeData->win0right -= 5; + + if (sTradeData->win0left >= 116) + BlendPalettes(0x8, 0, RGB_WHITEALPHA); + } + else + { + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); + DestroyTask(taskId); + } +} diff --git a/sym_bss.txt b/sym_bss.txt index a8c5ba44c..1f9f5b3d8 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -20,10 +20,9 @@ .include "src/multiboot.o" .align 2 .include "src/daycare.o" - -gUnknown_3000E78: @ 3000E78 - .space 0x4 - + .align 2 + .include "src/trade.o" + .align 2 .include "src/play_time.o" .align 2 gUnknown_3000E80: @ 3000E80 diff --git a/sym_ewram.txt b/sym_ewram.txt index 77acf5657..d4c25d15f 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -18,75 +18,20 @@ .space 8 @ .include "src/link_rfu.o" + .align 2 .include "src/battle_controllers.o" + .align 2 .include "src/battle_main.o" - -sLearningMoveTableID: @ 2024028 - .space 0x1 - -gPlayerPartyCount: @ 2024029 - .space 0x1 - -gEnemyPartyCount: @ 202402A - .space 0x2 - -gEnemyParty: @ 202402C - .space 0xC8 - -gUnknown_20240F4: @ 20240F4 - .space 0x64 - -gUnknown_2024158: @ 2024158 - .space 0x64 - -gUnknown_20241BC: @ 20241BC - .space 0x64 - -gUnknown_2024220: @ 2024220 - .space 0x64 - -gPlayerParty: @ 2024284 - .space 0x64 - -gUnknown_20242E8: @ 20242E8 - .space 0x64 - -gUnknown_202434C: @ 202434C - .space 0x64 - -gUnknown_20243B0: @ 20243B0 - .space 0x64 - -gUnknown_2024414: @ 2024414 - .space 0x64 - -gUnknown_2024478: @ 2024478 - .space 0x64 - + .align 2 .include "src/pokemon.o" + .align 2 .include "src/daycare.o" .align 2 .include "src/load_save.o" - .align 2 -gUnknown_2031C90: @ 2031C90 - .space 0x4 - -gUnknown_2031C94: @ 2031C94 - .space 0x38 - -gUnknown_2031CCC: @ 2031CCC - .space 0xD8 - -gUnknown_2031DA4: @ 2031DA4 - .space 0x4 - -gUnknown_2031DA8: @ 2031DA8 - .space 0x4 - -gUnknown_2031DAC: @ 2031DAC - .space 0x4 - + .include "src/trade.o" + .align 2 + .include "src/trade_scene.o" .align 2 .include "src/new_game.o" |