summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/contest.s4
-rw-r--r--asm/pokemon_summary_screen.s8776
-rw-r--r--data-de/text/contest_strings.inc2
-rw-r--r--data-de/text/move_descriptions.inc1771
-rw-r--r--data-de/text/nature_names.inc102
-rw-r--r--data/graphics.s3
-rw-r--r--data/pokemon_summary_screen.s393
-rw-r--r--data/text/contest_strings.inc2
-rw-r--r--data/text/move_descriptions.inc1772
-rw-r--r--data/text/nature_names.inc102
-rw-r--r--graphics/unknown/unknown_E94550.binbin128 -> 64 bytes
-rw-r--r--graphics/unknown/unknown_E94590.binbin0 -> 64 bytes
-rwxr-xr-xinclude/ewram.h1
-rw-r--r--include/gba/macro.h16
-rw-r--r--include/learn_move.h15
-rw-r--r--include/party_menu.h1
-rw-r--r--include/pokemon.h4
-rw-r--r--include/pokemon_summary_screen.h61
-rw-r--r--ld_script.txt4
-rw-r--r--src/battle/battle_4.c4
-rw-r--r--src/battle/battle_party_menu.c2
-rw-r--r--src/data/text/move_descriptions_de.h1771
-rw-r--r--src/data/text/move_descriptions_en.h1772
-rw-r--r--src/data/text/nature_names_de.h53
-rw-r--r--src/data/text/nature_names_en.h53
-rw-r--r--src/engine/trade.c4
-rw-r--r--src/field/choose_party.c5
-rw-r--r--src/field/party_menu.c2
-rw-r--r--src/pokemon/learn_move.c24
-rw-r--r--src/pokemon/mon_markings.c16
-rw-r--r--src/pokemon/pokemon_menu.c2
-rw-r--r--src/pokemon/pokemon_summary_screen.c5423
-rw-r--r--src/scene/evolution_scene.c4
-rw-r--r--src/script_pokemon_util_80F99CC.c2
-rw-r--r--src/strings.c2
35 files changed, 9188 insertions, 12980 deletions
diff --git a/asm/contest.s b/asm/contest.s
index ad3b4fba9..2d24f5bb0 100644
--- a/asm/contest.s
+++ b/asm/contest.s
@@ -7157,7 +7157,7 @@ _080AEC34:
ldr r6, _080AEC78 @ =gContestMoves
lsls r5, r4, 3
ldr r7, _080AEC80 @ =gContestEffects
- ldr r0, _080AEC84 @ =gUnknown_083CADD4
+ ldr r0, _080AEC84 @ =gContestEffectStrings
mov r9, r0
ldr r4, _080AEC88 @ =0x0600c816
ldr r3, _080AEC8C @ =0x0600c7d6
@@ -7189,7 +7189,7 @@ _080AEC74: .4byte gUnknown_03004210
_080AEC78: .4byte gContestMoves
_080AEC7C: .4byte 0x00004040
_080AEC80: .4byte gContestEffects
-_080AEC84: .4byte gUnknown_083CADD4
+_080AEC84: .4byte gContestEffectStrings
_080AEC88: .4byte 0x0600c816
_080AEC8C: .4byte 0x0600c7d6
_080AEC90:
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
deleted file mode 100644
index dddc31fd8..000000000
--- a/asm/pokemon_summary_screen.s
+++ /dev/null
@@ -1,8776 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_809D844
-sub_809D844: @ 809D844
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_809D844
-
- thumb_func_start sub_809D85C
-sub_809D85C: @ 809D85C
- push {lr}
- ldr r1, _0809D8A0 @ =REG_BG1HOFS
- ldr r0, _0809D8A4 @ =gUnknown_030042C0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0809D8A8 @ =gUnknown_030041B4
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0809D8AC @ =gUnknown_03004288
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0809D8B0 @ =gUnknown_03004280
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0809D8B4 @ =gUnknown_030041B0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0809D8B8 @ =gUnknown_030041B8
- ldrh r0, [r0]
- strh r0, [r1]
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- .align 2, 0
-_0809D8A0: .4byte REG_BG1HOFS
-_0809D8A4: .4byte gUnknown_030042C0
-_0809D8A8: .4byte gUnknown_030041B4
-_0809D8AC: .4byte gUnknown_03004288
-_0809D8B0: .4byte gUnknown_03004280
-_0809D8B4: .4byte gUnknown_030041B0
-_0809D8B8: .4byte gUnknown_030041B8
- thumb_func_end sub_809D85C
-
- thumb_func_start ShowPokemonSummaryScreen
-ShowPokemonSummaryScreen: @ 809D8BC
- push {r4-r7,lr}
- ldr r4, [sp, 0x14]
- lsls r4, 24
- lsrs r7, r4, 24
- ldr r6, _0809D904 @ =gPaletteFade
- ldrb r4, [r6, 0x8]
- movs r5, 0x80
- orrs r4, r5
- strb r4, [r6, 0x8]
- ldr r5, _0809D908 @ =gSharedMem + 0x18000
- str r0, [r5]
- movs r4, 0
- strb r7, [r5, 0x8]
- strb r1, [r5, 0x9]
- strb r2, [r5, 0xA]
- str r3, [r5, 0x4]
- adds r0, r5, 0
- adds r0, 0x74
- strb r4, [r0]
- adds r1, r5, 0
- adds r1, 0x79
- movs r0, 0x4
- strb r0, [r1]
- adds r0, r5, 0
- adds r0, 0x7C
- movs r1, 0
- strh r4, [r0]
- adds r0, 0x4
- strb r1, [r0]
- subs r0, 0x5
- strb r1, [r0]
- cmp r7, 0x4
- bls _0809D90C
- movs r0, 0x1
- strb r0, [r5, 0xE]
- b _0809D90E
- .align 2, 0
-_0809D904: .4byte gPaletteFade
-_0809D908: .4byte gSharedMem + 0x18000
-_0809D90C:
- strb r1, [r5, 0xE]
-_0809D90E:
- cmp r7, 0x6
- bhi _0809D9D6
- lsls r0, r7, 2
- ldr r1, _0809D91C @ =_0809D920
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0809D91C: .4byte _0809D920
- .align 2, 0
-_0809D920:
- .4byte _0809D93C
- .4byte _0809D9BC
- .4byte _0809D992
- .4byte _0809D9D6
- .4byte _0809D966
- .4byte _0809D93C
- .4byte _0809D9BC
-_0809D93C:
- adds r0, r5, 0
- adds r0, 0x75
- movs r1, 0
- strb r1, [r0]
- adds r2, r5, 0
- adds r2, 0x76
- movs r0, 0x3
- strb r0, [r2]
- adds r0, r5, 0
- adds r0, 0x77
- strb r1, [r0]
- adds r0, 0x1
- strb r1, [r0]
- adds r1, r5, 0
- adds r1, 0x7E
- movs r0, 0x1
- strb r0, [r1]
- adds r1, 0x1
- movs r0, 0x7
- strb r0, [r1]
- b _0809D9D6
-_0809D966:
- adds r0, r5, 0
- adds r0, 0x75
- movs r1, 0
- strb r1, [r0]
- adds r2, r5, 0
- adds r2, 0x76
- movs r0, 0x3
- strb r0, [r2]
- adds r0, r5, 0
- adds r0, 0x77
- strb r1, [r0]
- adds r0, 0x1
- strb r1, [r0]
- adds r0, 0x6
- movs r1, 0x1
- strb r1, [r0]
- adds r2, 0x9
- movs r0, 0x7
- strb r0, [r2]
- adds r0, r5, 0
- adds r0, 0x7B
- b _0809D9D4
-_0809D992:
- adds r1, r5, 0
- adds r1, 0x75
- movs r3, 0
- movs r0, 0x2
- strb r0, [r1]
- adds r0, r5, 0
- adds r0, 0x76
- movs r2, 0x3
- strb r2, [r0]
- adds r0, 0x1
- movs r1, 0x1
- strb r1, [r0]
- adds r0, 0x1
- strb r1, [r0]
- adds r0, 0x6
- strb r2, [r0]
- adds r0, 0x1
- strb r3, [r0]
- subs r0, 0x6
- strb r3, [r0]
- b _0809D9D6
-_0809D9BC:
- adds r1, r5, 0
- adds r1, 0x75
- movs r0, 0x2
- strb r0, [r1]
- adds r1, 0x1
- movs r0, 0x3
- strb r0, [r1]
- adds r0, r5, 0
- adds r0, 0x77
- movs r1, 0x1
- strb r1, [r0]
- adds r0, 0x1
-_0809D9D4:
- strb r1, [r0]
-_0809D9D6:
- adds r0, r5, 0
- adds r0, 0x75
- ldrb r0, [r0]
- strb r0, [r5, 0xB]
- ldr r0, _0809D9EC @ =sub_809DE44
- bl SetMainCallback2
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809D9EC: .4byte sub_809DE44
- thumb_func_end ShowPokemonSummaryScreen
-
- thumb_func_start sub_809D9F0
-sub_809D9F0: @ 809D9F0
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, [sp, 0x10]
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r5, 16
- lsrs r5, 16
- movs r4, 0x2
- str r4, [sp]
- bl ShowPokemonSummaryScreen
- ldr r0, _0809DA18 @ =gSharedMem + 0x18000
- adds r0, 0x7C
- strh r5, [r0]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809DA18: .4byte gSharedMem + 0x18000
- thumb_func_end sub_809D9F0
-
- thumb_func_start sub_809DA1C
-sub_809DA1C: @ 809DA1C
- push {lr}
- ldr r0, _0809DA30 @ =gSharedMem + 0x18000
- ldrb r0, [r0, 0x8]
- cmp r0, 0x6
- bhi _0809DA78
- lsls r0, 2
- ldr r1, _0809DA34 @ =_0809DA38
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0809DA30: .4byte gSharedMem + 0x18000
-_0809DA34: .4byte _0809DA38
- .align 2, 0
-_0809DA38:
- .4byte _0809DA54
- .4byte _0809DA6C
- .4byte _0809DA64
- .4byte _0809DA64
- .4byte _0809DA5C
- .4byte _0809DA54
- .4byte _0809DA6C
-_0809DA54:
- ldr r0, _0809DA58 @ =SummaryScreenHandleKeyInput
- b _0809DA6E
- .align 2, 0
-_0809DA58: .4byte SummaryScreenHandleKeyInput
-_0809DA5C:
- ldr r0, _0809DA60 @ =SummaryScreenHandleKeyInput
- b _0809DA6E
- .align 2, 0
-_0809DA60: .4byte SummaryScreenHandleKeyInput
-_0809DA64:
- ldr r0, _0809DA68 @ =sub_809EB40
- b _0809DA6E
- .align 2, 0
-_0809DA68: .4byte sub_809EB40
-_0809DA6C:
- ldr r0, _0809DA7C @ =sub_809E3FC
-_0809DA6E:
- movs r1, 0
- bl CreateTask
- ldr r1, _0809DA80 @ =gSharedMem + 0x18000
- strb r0, [r1, 0xF]
-_0809DA78:
- pop {r0}
- bx r0
- .align 2, 0
-_0809DA7C: .4byte sub_809E3FC
-_0809DA80: .4byte gSharedMem + 0x18000
- thumb_func_end sub_809DA1C
-
- thumb_func_start sub_809DA84
-sub_809DA84: @ 809DA84
- push {r4-r7,lr}
- sub sp, 0x8
- ldr r1, _0809DAA4 @ =gMain
- ldr r2, _0809DAA8 @ =0x0000043c
- adds r0, r1, r2
- ldrb r0, [r0]
- mov r12, r1
- cmp r0, 0x16
- bls _0809DA98
- b _0809DE00
-_0809DA98:
- lsls r0, 2
- ldr r1, _0809DAAC @ =_0809DAB0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0809DAA4: .4byte gMain
-_0809DAA8: .4byte 0x0000043c
-_0809DAAC: .4byte _0809DAB0
- .align 2, 0
-_0809DAB0:
- .4byte _0809DB0C
- .4byte _0809DB18
- .4byte _0809DB2C
- .4byte _0809DB32
- .4byte _0809DB80
- .4byte _0809DB94
- .4byte _0809DBA0
- .4byte _0809DBBC
- .4byte _0809DBC8
- .4byte _0809DBDC
- .4byte _0809DC2C
- .4byte _0809DC48
- .4byte _0809DC5C
- .4byte _0809DC90
- .4byte _0809DCB0
- .4byte _0809DCC4
- .4byte _0809DCF8
- .4byte _0809DD02
- .4byte _0809DD30
- .4byte _0809DD3C
- .4byte _0809DD68
- .4byte _0809DD98
- .4byte _0809DDE0
-_0809DB0C:
- movs r0, 0
- bl SetVBlankCallback
- bl ResetSpriteData
- b _0809DDE8
-_0809DB18:
- bl remove_some_task
- ldr r1, _0809DB24 @ =gMain
- ldr r2, _0809DB28 @ =0x0000043c
- adds r1, r2
- b _0809DDEE
- .align 2, 0
-_0809DB24: .4byte gMain
-_0809DB28: .4byte 0x0000043c
-_0809DB2C:
- bl FreeAllSpritePalettes
- b _0809DDE8
-_0809DB32:
- movs r2, 0xC0
- lsls r2, 19
- movs r3, 0x80
- lsls r3, 9
- movs r5, 0
- ldr r1, _0809DB74 @ =0x040000d4
- movs r4, 0x80
- lsls r4, 5
- ldr r6, _0809DB78 @ =0x85000400
- movs r7, 0x85
- lsls r7, 24
-_0809DB48:
- str r5, [sp, 0x4]
- add r0, sp, 0x4
- str r0, [r1]
- str r2, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r4
- subs r3, r4
- cmp r3, r4
- bhi _0809DB48
- str r5, [sp, 0x4]
- add r0, sp, 0x4
- str r0, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 2
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r1, _0809DB7C @ =0x0000043c
- add r1, r12
- b _0809DDEE
- .align 2, 0
-_0809DB74: .4byte 0x040000d4
-_0809DB78: .4byte 0x85000400
-_0809DB7C: .4byte 0x0000043c
-_0809DB80:
- bl sub_809DE64
- ldr r1, _0809DB8C @ =gMain
- ldr r2, _0809DB90 @ =0x0000043c
- adds r1, r2
- b _0809DDEE
- .align 2, 0
-_0809DB8C: .4byte gMain
-_0809DB90: .4byte 0x0000043c
-_0809DB94:
- ldr r0, _0809DB9C @ =gWindowConfig_81E6E6C
- bl SetUpWindowConfig
- b _0809DDE8
- .align 2, 0
-_0809DB9C: .4byte gWindowConfig_81E6E6C
-_0809DBA0:
- ldr r0, _0809DBB0 @ =gWindowConfig_81E6E6C
- bl MultistepInitMenuWindowBegin
- ldr r1, _0809DBB4 @ =gMain
- ldr r2, _0809DBB8 @ =0x0000043c
- adds r1, r2
- b _0809DDEE
- .align 2, 0
-_0809DBB0: .4byte gWindowConfig_81E6E6C
-_0809DBB4: .4byte gMain
-_0809DBB8: .4byte 0x0000043c
-_0809DBBC:
- bl MultistepInitMenuWindowContinue
- cmp r0, 0
- bne _0809DBC6
- b _0809DE38
-_0809DBC6:
- b _0809DDE8
-_0809DBC8:
- bl sub_809DA1C
- ldr r1, _0809DBD4 @ =gMain
- ldr r2, _0809DBD8 @ =0x0000043c
- adds r1, r2
- b _0809DDEE
- .align 2, 0
-_0809DBD4: .4byte gMain
-_0809DBD8: .4byte 0x0000043c
-_0809DBDC:
- ldr r1, _0809DC08 @ =gSummaryScreenTextTiles
- ldr r2, _0809DC0C @ =0x0600d000
- ldr r0, _0809DC10 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0809DC14 @ =0x800000a0
- str r1, [r0, 0x8]
- ldr r1, [r0, 0x8]
- ldr r1, _0809DC18 @ =gSummaryScreenButtonTiles
- ldr r2, _0809DC1C @ =0x0600d140
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0809DC20 @ =0x80000080
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- ldr r0, _0809DC24 @ =gSharedMem + 0x18000
- adds r0, 0x74
- movs r1, 0
- strb r1, [r0]
- ldr r1, _0809DC28 @ =0x0000043c
- add r1, r12
- b _0809DDEE
- .align 2, 0
-_0809DC08: .4byte gSummaryScreenTextTiles
-_0809DC0C: .4byte 0x0600d000
-_0809DC10: .4byte 0x040000d4
-_0809DC14: .4byte 0x800000a0
-_0809DC18: .4byte gSummaryScreenButtonTiles
-_0809DC1C: .4byte 0x0600d140
-_0809DC20: .4byte 0x80000080
-_0809DC24: .4byte gSharedMem + 0x18000
-_0809DC28: .4byte 0x0000043c
-_0809DC2C:
- bl sub_809DF00
- lsls r0, 24
- cmp r0, 0
- bne _0809DC38
- b _0809DE38
-_0809DC38:
- ldr r0, _0809DC44 @ =gSharedMem + 0x18000
- adds r0, 0x74
- movs r1, 0
- strb r1, [r0]
- b _0809DDE8
- .align 2, 0
-_0809DC44: .4byte gSharedMem + 0x18000
-_0809DC48:
- bl sub_80A18C4
- ldr r1, _0809DC54 @ =gMain
- ldr r2, _0809DC58 @ =0x0000043c
- adds r1, r2
- b _0809DDEE
- .align 2, 0
-_0809DC54: .4byte gMain
-_0809DC58: .4byte 0x0000043c
-_0809DC5C:
- ldr r4, _0809DC78 @ =gSharedMem + 0x18010
- adds r0, r4, 0
- bl sub_809F678
- adds r0, r4, 0
- bl GetMonStatusAndPokerus
- lsls r0, 24
- cmp r0, 0
- bne _0809DC7C
- movs r0, 0
- bl sub_80A12D0
- b _0809DC82
- .align 2, 0
-_0809DC78: .4byte gSharedMem + 0x18010
-_0809DC7C:
- movs r0, 0xA
- bl sub_80A12D0
-_0809DC82:
- ldr r0, _0809DC8C @ =gSharedMem + 0x18010
- bl sub_80A0EA4
- b _0809DDE8
- .align 2, 0
-_0809DC8C: .4byte gSharedMem + 0x18010
-_0809DC90:
- bl sub_80A1950
- ldr r0, _0809DCA4 @ =gSharedMem + 0x18010
- bl sub_80A1D84
- ldr r1, _0809DCA8 @ =gMain
- ldr r2, _0809DCAC @ =0x0000043c
- adds r1, r2
- b _0809DDEE
- .align 2, 0
-_0809DCA4: .4byte gSharedMem + 0x18010
-_0809DCA8: .4byte gMain
-_0809DCAC: .4byte 0x0000043c
-_0809DCB0:
- ldr r4, _0809DCC0 @ =gSharedMem + 0x18010
- adds r0, r4, 0
- bl sub_80A1DE8
- adds r4, 0x64
- movs r0, 0
- strb r0, [r4]
- b _0809DDE8
- .align 2, 0
-_0809DCC0: .4byte gSharedMem + 0x18010
-_0809DCC4:
- ldr r4, _0809DCEC @ =gSharedMem + 0x18010
- adds r5, r4, 0
- adds r5, 0x64
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_809F6B4
- subs r4, 0x10
- strb r0, [r4, 0xC]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _0809DCE0
- b _0809DE38
-_0809DCE0:
- movs r0, 0
- strb r0, [r5]
- ldr r1, _0809DCF0 @ =gMain
- ldr r2, _0809DCF4 @ =0x0000043c
- adds r1, r2
- b _0809DDEE
- .align 2, 0
-_0809DCEC: .4byte gSharedMem + 0x18010
-_0809DCF0: .4byte gMain
-_0809DCF4: .4byte 0x0000043c
-_0809DCF8:
- bl sub_809E044
- bl sub_80A0EE8
- b _0809DDE8
-_0809DD02:
- ldr r1, _0809DD20 @ =gSharedMem + 0x18000
- ldrb r0, [r1, 0xB]
- cmp r0, 0x1
- bhi _0809DD18
- ldr r0, _0809DD24 @ =gUnknown_083C1580
- ldrb r1, [r1, 0xB]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- bl _call_via_r0
-_0809DD18:
- ldr r1, _0809DD28 @ =gMain
- ldr r2, _0809DD2C @ =0x0000043c
- adds r1, r2
- b _0809DDEE
- .align 2, 0
-_0809DD20: .4byte gSharedMem + 0x18000
-_0809DD24: .4byte gUnknown_083C1580
-_0809DD28: .4byte gMain
-_0809DD2C: .4byte 0x0000043c
-_0809DD30:
- ldr r0, _0809DD38 @ =gSharedMem + 0x18010
- bl sub_809FAC8
- b _0809DDE8
- .align 2, 0
-_0809DD38: .4byte gSharedMem + 0x18010
-_0809DD3C:
- ldr r2, _0809DD58 @ =gUnknown_083C1598
- ldr r0, _0809DD5C @ =gSharedMem + 0x18000
- ldrb r1, [r0, 0xB]
- lsls r1, 2
- adds r1, r2
- adds r0, 0x10
- ldr r1, [r1]
- bl _call_via_r1
- ldr r1, _0809DD60 @ =gMain
- ldr r2, _0809DD64 @ =0x0000043c
- adds r1, r2
- b _0809DDEE
- .align 2, 0
-_0809DD58: .4byte gUnknown_083C1598
-_0809DD5C: .4byte gSharedMem + 0x18000
-_0809DD60: .4byte gMain
-_0809DD64: .4byte 0x0000043c
-_0809DD68:
- ldr r0, _0809DD84 @ =gSharedMem + 0x18010
- movs r1, 0x2D
- bl GetMonData
- adds r1, r0, 0
- cmp r1, 0
- beq _0809DD8C
- ldr r1, _0809DD88 @ =gUnknown_030041B0
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- b _0809DDE8
- .align 2, 0
-_0809DD84: .4byte gSharedMem + 0x18010
-_0809DD88: .4byte gUnknown_030041B0
-_0809DD8C:
- ldr r0, _0809DD94 @ =gUnknown_030041B0
- strh r1, [r0]
- b _0809DDE8
- .align 2, 0
-_0809DD94: .4byte gUnknown_030041B0
-_0809DD98:
- bl sub_809EBC4
- ldr r0, _0809DDB8 @ =gSharedMem + 0x18000
- adds r0, 0x79
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809DDBC
- movs r0, 0
- movs r1, 0
- bl sub_80A1488
- movs r0, 0
- movs r1, 0
- bl sub_80A1654
- b _0809DDCC
- .align 2, 0
-_0809DDB8: .4byte gSharedMem + 0x18000
-_0809DDBC:
- movs r0, 0xA
- movs r1, 0
- bl sub_80A1488
- movs r0, 0xA
- movs r1, 0
- bl sub_80A1654
-_0809DDCC:
- bl sub_80A0DD0
- ldr r1, _0809DDD8 @ =gMain
- ldr r2, _0809DDDC @ =0x0000043c
- adds r1, r2
- b _0809DDEE
- .align 2, 0
-_0809DDD8: .4byte gMain
-_0809DDDC: .4byte 0x0000043c
-_0809DDE0:
- bl sub_8055870
- cmp r0, 0x1
- beq _0809DE38
-_0809DDE8:
- ldr r1, _0809DDF8 @ =gMain
- ldr r0, _0809DDFC @ =0x0000043c
- adds r1, r0
-_0809DDEE:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0809DE38
- .align 2, 0
-_0809DDF8: .4byte gMain
-_0809DDFC: .4byte 0x0000043c
-_0809DE00:
- ldr r0, _0809DE2C @ =sub_809D85C
- bl SetVBlankCallback
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginHardwarePaletteFade
- ldr r0, _0809DE30 @ =sub_809D844
- bl SetMainCallback2
- ldr r2, _0809DE34 @ =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- movs r0, 0x1
- b _0809DE3A
- .align 2, 0
-_0809DE2C: .4byte sub_809D85C
-_0809DE30: .4byte sub_809D844
-_0809DE34: .4byte gPaletteFade
-_0809DE38:
- movs r0, 0
-_0809DE3A:
- add sp, 0x8
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_809DA84
-
- thumb_func_start sub_809DE44
-sub_809DE44: @ 809DE44
- push {lr}
-_0809DE46:
- bl sub_809DA84
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0809DE5E
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809DE46
-_0809DE5E:
- pop {r0}
- bx r0
- thumb_func_end sub_809DE44
-
- thumb_func_start sub_809DE64
-sub_809DE64: @ 809DE64
- ldr r1, _0809DED0 @ =REG_BG0CNT
- ldr r2, _0809DED4 @ =0x00001e08
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _0809DED8 @ =0x00004801
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _0809DEDC @ =0x00004a02
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _0809DEE0 @ =0x00005c03
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _0809DEE4 @ =gUnknown_030042C0
- movs r0, 0
- strh r0, [r1]
- ldr r1, _0809DEE8 @ =gUnknown_030041B4
- strh r0, [r1]
- ldr r1, _0809DEEC @ =gUnknown_03004288
- strh r0, [r1]
- ldr r1, _0809DEF0 @ =gUnknown_03004280
- strh r0, [r1]
- ldr r1, _0809DEF4 @ =gUnknown_030041B0
- strh r0, [r1]
- ldr r1, _0809DEF8 @ =gUnknown_030041B8
- strh r0, [r1]
- ldr r1, _0809DEFC @ =REG_BG0HOFS
- strh r0, [r1]
- adds r1, 0x2
- strh r0, [r1]
- adds r1, 0x2
- strh r0, [r1]
- adds r1, 0x2
- strh r0, [r1]
- adds r1, 0x2
- strh r0, [r1]
- adds r1, 0x2
- strh r0, [r1]
- adds r1, 0x2
- strh r0, [r1]
- adds r1, 0x2
- strh r0, [r1]
- adds r1, 0x32
- strh r0, [r1]
- subs r1, 0x50
- movs r2, 0xFA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- bx lr
- .align 2, 0
-_0809DED0: .4byte REG_BG0CNT
-_0809DED4: .4byte 0x00001e08
-_0809DED8: .4byte 0x00004801
-_0809DEDC: .4byte 0x00004a02
-_0809DEE0: .4byte 0x00005c03
-_0809DEE4: .4byte gUnknown_030042C0
-_0809DEE8: .4byte gUnknown_030041B4
-_0809DEEC: .4byte gUnknown_03004288
-_0809DEF0: .4byte gUnknown_03004280
-_0809DEF4: .4byte gUnknown_030041B0
-_0809DEF8: .4byte gUnknown_030041B8
-_0809DEFC: .4byte REG_BG0HOFS
- thumb_func_end sub_809DE64
-
- thumb_func_start sub_809DF00
-sub_809DF00: @ 809DF00
- push {lr}
- ldr r0, _0809DF18 @ =gSharedMem + 0x18000
- adds r0, 0x74
- ldrb r0, [r0]
- cmp r0, 0xC
- bls _0809DF0E
- b _0809E030
-_0809DF0E:
- lsls r0, 2
- ldr r1, _0809DF1C @ =_0809DF20
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0809DF18: .4byte gSharedMem + 0x18000
-_0809DF1C: .4byte _0809DF20
- .align 2, 0
-_0809DF20:
- .4byte _0809DF54
- .4byte _0809DF64
- .4byte _0809DF74
- .4byte _0809DF88
- .4byte _0809DF9C
- .4byte _0809DFAC
- .4byte _0809DFC4
- .4byte _0809DFD4
- .4byte _0809DFE0
- .4byte _0809DFEC
- .4byte _0809DFF8
- .4byte _0809E004
- .4byte _0809E010
-_0809DF54:
- ldr r0, _0809DF60 @ =gStatusScreen_Gfx
- movs r1, 0xC0
- lsls r1, 19
- bl LZDecompressVram
- b _0809E030
- .align 2, 0
-_0809DF60: .4byte gStatusScreen_Gfx
-_0809DF64:
- ldr r0, _0809DF6C @ =gUnknown_08E73508
- ldr r1, _0809DF70 @ =0x0600e000
- b _0809DFB0
- .align 2, 0
-_0809DF6C: .4byte gUnknown_08E73508
-_0809DF70: .4byte 0x0600e000
-_0809DF74:
- ldr r0, _0809DF80 @ =gUnknown_08E74E88
- ldr r1, _0809DF84 @ =0x0600e800
- bl LZDecompressVram
- b _0809E030
- .align 2, 0
-_0809DF80: .4byte gUnknown_08E74E88
-_0809DF84: .4byte 0x0600e800
-_0809DF88:
- ldr r0, _0809DF94 @ =gStatusScreen_Tilemap
- ldr r1, _0809DF98 @ =0x06004800
- bl LZDecompressVram
- b _0809E030
- .align 2, 0
-_0809DF94: .4byte gStatusScreen_Tilemap
-_0809DF98: .4byte 0x06004800
-_0809DF9C:
- ldr r0, _0809DFA4 @ =gUnknown_08E73E88
- ldr r1, _0809DFA8 @ =0x06005800
- b _0809DFB0
- .align 2, 0
-_0809DFA4: .4byte gUnknown_08E73E88
-_0809DFA8: .4byte 0x06005800
-_0809DFAC:
- ldr r0, _0809DFBC @ =gUnknown_08E74688
- ldr r1, _0809DFC0 @ =0x06006800
-_0809DFB0:
- movs r2, 0x80
- lsls r2, 3
- bl CpuSet
- b _0809E030
- .align 2, 0
-_0809DFBC: .4byte gUnknown_08E74688
-_0809DFC0: .4byte 0x06006800
-_0809DFC4:
- ldr r0, _0809DFD0 @ =gStatusScreen_Pal
- movs r1, 0
- movs r2, 0xA0
- bl LoadCompressedPalette
- b _0809E030
- .align 2, 0
-_0809DFD0: .4byte gStatusScreen_Pal
-_0809DFD4:
- ldr r0, _0809DFDC @ =gUnknown_083C11B8
- bl LoadCompressedObjectPic
- b _0809E030
- .align 2, 0
-_0809DFDC: .4byte gUnknown_083C11B8
-_0809DFE0:
- ldr r0, _0809DFE8 @ =gUnknown_083C1270
- bl LoadCompressedObjectPic
- b _0809E030
- .align 2, 0
-_0809DFE8: .4byte gUnknown_083C1270
-_0809DFEC:
- ldr r0, _0809DFF4 @ =gUnknown_083C12F4
- bl LoadCompressedObjectPic
- b _0809E030
- .align 2, 0
-_0809DFF4: .4byte gUnknown_083C12F4
-_0809DFF8:
- ldr r0, _0809E000 @ =gUnknown_083C12FC
- bl LoadCompressedObjectPalette
- b _0809E030
- .align 2, 0
-_0809E000: .4byte gUnknown_083C12FC
-_0809E004:
- ldr r0, _0809E00C @ =gUnknown_083C1278
- bl LoadCompressedObjectPalette
- b _0809E030
- .align 2, 0
-_0809E00C: .4byte gUnknown_083C1278
-_0809E010:
- ldr r0, _0809E028 @ =gMoveTypes_Pal
- movs r1, 0xE8
- lsls r1, 1
- movs r2, 0x60
- bl LoadCompressedPalette
- ldr r0, _0809E02C @ =gSharedMem + 0x18000
- adds r0, 0x74
- movs r1, 0
- strb r1, [r0]
- movs r0, 0x1
- b _0809E03C
- .align 2, 0
-_0809E028: .4byte gMoveTypes_Pal
-_0809E02C: .4byte gSharedMem + 0x18000
-_0809E030:
- ldr r1, _0809E040 @ =gSharedMem + 0x18000
- adds r1, 0x74
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
-_0809E03C:
- pop {r1}
- bx r1
- .align 2, 0
-_0809E040: .4byte gSharedMem + 0x18000
- thumb_func_end sub_809DF00
-
- thumb_func_start sub_809E044
-sub_809E044: @ 809E044
- push {r4,r5,lr}
- ldr r4, _0809E0F4 @ =gUnknownPalette_81E6692+0x1C
- adds r0, r4, 0
- movs r1, 0x81
- movs r2, 0x2
- bl LoadPalette
- adds r5, r4, 0x2
- adds r0, r5, 0
- movs r1, 0x88
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0x8F
- movs r2, 0x2
- bl LoadPalette
- adds r0, r5, 0
- movs r1, 0x89
- movs r2, 0x2
- bl LoadPalette
- subs r5, 0x12
- adds r0, r5, 0
- movs r1, 0xD1
- movs r2, 0x4
- bl LoadPalette
- adds r0, r4, 0
- subs r0, 0x8
- movs r1, 0xD3
- movs r2, 0x4
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0xD5
- movs r2, 0x4
- bl LoadPalette
- adds r0, r5, 0
- movs r1, 0xD7
- movs r2, 0x4
- bl LoadPalette
- adds r0, r4, 0
- subs r0, 0x14
- movs r1, 0xD9
- movs r2, 0x4
- bl LoadPalette
- adds r0, r4, 0
- subs r0, 0xC
- movs r1, 0xDB
- movs r2, 0x4
- bl LoadPalette
- adds r0, r4, 0
- subs r0, 0x18
- movs r1, 0xDD
- movs r2, 0x2
- bl LoadPalette
- subs r5, 0x6
- adds r0, r5, 0
- movs r1, 0xDE
- movs r2, 0x2
- bl LoadPalette
- subs r4, 0x1A
- adds r0, r4, 0
- movs r1, 0xDF
- movs r2, 0x2
- bl LoadPalette
- ldr r0, _0809E0F8 @ =gFontDefaultPalette
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- adds r0, r5, 0
- movs r1, 0xF9
- movs r2, 0x2
- bl LoadPalette
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809E0F4: .4byte gUnknownPalette_81E6692+0x1C
-_0809E0F8: .4byte gFontDefaultPalette
- thumb_func_end sub_809E044
-
- thumb_func_start SummaryScreenExit
-SummaryScreenExit: @ 809E0FC
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0809E134 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0809E138 @ =sub_809E13C
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809E134: .4byte gTasks
-_0809E138: .4byte sub_809E13C
- thumb_func_end SummaryScreenExit
-
- thumb_func_start sub_809E13C
-sub_809E13C: @ 809E13C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_8055870
- cmp r0, 0x1
- beq _0809E182
- ldr r0, _0809E188 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0809E182
- ldr r1, _0809E18C @ =gUnknown_020384F0
- ldr r4, _0809E190 @ =gSharedMem + 0x18000
- ldrb r0, [r4, 0x9]
- strb r0, [r1]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl StopCryAndClearCrySongs
- ldr r0, _0809E194 @ =gMPlay_BGM
- ldr r1, _0809E198 @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
- ldr r0, [r4, 0x4]
- bl SetMainCallback2
- adds r0, r5, 0
- bl DestroyTask
-_0809E182:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809E188: .4byte gPaletteFade
-_0809E18C: .4byte gUnknown_020384F0
-_0809E190: .4byte gSharedMem + 0x18000
-_0809E194: .4byte gMPlay_BGM
-_0809E198: .4byte 0x0000ffff
- thumb_func_end sub_809E13C
-
- thumb_func_start SummaryScreenHandleKeyInput
-SummaryScreenHandleKeyInput: @ 809E19C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0809E1C8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r2, 0x80
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _0809E25A
- ldr r5, _0809E1CC @ =gMain
- ldrh r1, [r5, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0809E1D0
- movs r1, 0x1
- negs r1, r1
- adds r0, r4, 0
- bl SummaryScreenHandleUpDownInput
- b _0809E25A
- .align 2, 0
-_0809E1C8: .4byte gPaletteFade
-_0809E1CC: .4byte gMain
-_0809E1D0:
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _0809E1E2
- adds r0, r4, 0
- movs r1, 0x1
- bl SummaryScreenHandleUpDownInput
- b _0809E25A
-_0809E1E2:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0809E1F6
- bl sub_80F9284
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809E202
-_0809E1F6:
- movs r1, 0x1
- negs r1, r1
- adds r0, r4, 0
- bl SummaryScreenHandleLeftRightInput
- b _0809E25A
-_0809E202:
- ldrh r1, [r5, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0809E218
- bl sub_80F9284
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0809E222
-_0809E218:
- adds r0, r4, 0
- movs r1, 0x1
- bl SummaryScreenHandleLeftRightInput
- b _0809E25A
-_0809E222:
- ldrh r1, [r5, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0809E24C
- ldr r5, _0809E248 @ =gSharedMem + 0x18000
- ldrb r0, [r5, 0xB]
- cmp r0, 0x1
- bls _0809E23A
- adds r0, r4, 0
- bl SummaryScreenHandleAButton
-_0809E23A:
- ldrb r0, [r5, 0xB]
- cmp r0, 0
- bne _0809E25A
- adds r0, r4, 0
- bl SummaryScreenExit
- b _0809E25A
- .align 2, 0
-_0809E248: .4byte gSharedMem + 0x18000
-_0809E24C:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0809E25A
- adds r0, r4, 0
- bl SummaryScreenExit
-_0809E25A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end SummaryScreenHandleKeyInput
-
- thumb_func_start sub_809E260
-sub_809E260: @ 809E260
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0809E29C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r2, 0x80
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _0809E276
- b _0809E3EE
-_0809E276:
- ldr r5, _0809E2A0 @ =gMain
- ldrh r1, [r5, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0809E2AC
- ldr r1, _0809E2A4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0x4
- strh r1, [r0, 0x8]
- subs r1, 0x5
- ldr r2, _0809E2A8 @ =gSharedMem + 0x18079
- adds r0, r4, 0
- bl sub_809E8F0
- b _0809E3EE
- .align 2, 0
-_0809E29C: .4byte gPaletteFade
-_0809E2A0: .4byte gMain
-_0809E2A4: .4byte gTasks
-_0809E2A8: .4byte gSharedMem + 0x18079
-_0809E2AC:
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _0809E2D8
- ldr r1, _0809E2D0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0x4
- strh r1, [r0, 0x8]
- ldr r2, _0809E2D4 @ =gSharedMem + 0x18079
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_809E8F0
- b _0809E3EE
- .align 2, 0
-_0809E2D0: .4byte gTasks
-_0809E2D4: .4byte gSharedMem + 0x18079
-_0809E2D8:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0809E2EC
- bl sub_80F9284
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809E324
-_0809E2EC:
- ldr r1, _0809E320 @ =gSharedMem + 0x18000
- ldrb r0, [r1, 0xB]
- cmp r0, 0x3
- bne _0809E314
- adds r0, r1, 0
- adds r0, 0x79
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _0809E308
- adds r0, r1, 0
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0
- beq _0809E314
-_0809E308:
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x9
- movs r3, 0x12
- bl MenuZeroFillWindowRect
-_0809E314:
- movs r1, 0x1
- negs r1, r1
- adds r0, r4, 0
- bl SummaryScreenHandleLeftRightInput
- b _0809E3EE
- .align 2, 0
-_0809E320: .4byte gSharedMem + 0x18000
-_0809E324:
- ldrh r1, [r5, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0809E33A
- bl sub_80F9284
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0809E37C
-_0809E33A:
- ldr r1, _0809E378 @ =gSharedMem + 0x18000
- adds r2, r1, 0
- adds r2, 0x76
- ldrb r0, [r1, 0xB]
- ldrb r2, [r2]
- cmp r0, r2
- beq _0809E3EE
- cmp r0, 0x2
- bne _0809E36C
- adds r0, r1, 0
- adds r0, 0x79
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _0809E360
- adds r0, r1, 0
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0
- beq _0809E36C
-_0809E360:
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x9
- movs r3, 0x12
- bl MenuZeroFillWindowRect
-_0809E36C:
- adds r0, r4, 0
- movs r1, 0x1
- bl SummaryScreenHandleLeftRightInput
- b _0809E3EE
- .align 2, 0
-_0809E378: .4byte gSharedMem + 0x18000
-_0809E37C:
- ldrh r1, [r5, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0809E3D4
- adds r0, r4, 0
- bl sub_809F7D0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0809E3A0
- ldr r0, _0809E3BC @ =gSharedMem + 0x18000
- adds r5, r0, 0
- adds r5, 0x79
- ldrb r0, [r5]
- cmp r0, 0x4
- bne _0809E3C4
-_0809E3A0:
- ldr r0, _0809E3BC @ =gSharedMem + 0x18000
- adds r1, r0, 0
- adds r1, 0x79
- ldrb r1, [r1]
- adds r0, 0x7A
- strb r1, [r0]
- ldr r1, _0809E3C0 @ =gSpecialVar_0x8005
- ldrb r0, [r0]
- strh r0, [r1]
- adds r0, r4, 0
- bl SummaryScreenExit
- b _0809E3EE
- .align 2, 0
-_0809E3BC: .4byte gSharedMem + 0x18000
-_0809E3C0: .4byte gSpecialVar_0x8005
-_0809E3C4:
- movs r0, 0x20
- bl PlaySE
- ldrb r1, [r5]
- adds r0, r4, 0
- bl sub_809F9D0
- b _0809E3EE
-_0809E3D4:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0809E3EE
- ldr r0, _0809E3F4 @ =gSharedMem + 0x18000
- adds r0, 0x7A
- movs r1, 0x4
- strb r1, [r0]
- ldr r0, _0809E3F8 @ =gSpecialVar_0x8005
- strh r1, [r0]
- adds r0, r4, 0
- bl SummaryScreenExit
-_0809E3EE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809E3F4: .4byte gSharedMem + 0x18000
-_0809E3F8: .4byte gSpecialVar_0x8005
- thumb_func_end sub_809E260
-
- thumb_func_start sub_809E3FC
-sub_809E3FC: @ 809E3FC
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, r5, 0
- ldr r0, _0809E438 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r2, 0x80
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _0809E502
- ldr r0, _0809E43C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0809E448
- ldr r1, _0809E440 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0x4
- strh r1, [r0, 0x8]
- subs r1, 0x5
- ldr r2, _0809E444 @ =gSharedMem + 0x18079
- adds r0, r5, 0
- bl sub_809E8F0
- b _0809E502
- .align 2, 0
-_0809E438: .4byte gPaletteFade
-_0809E43C: .4byte gMain
-_0809E440: .4byte gTasks
-_0809E444: .4byte gSharedMem + 0x18079
-_0809E448:
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _0809E474
- ldr r1, _0809E46C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0x4
- strh r1, [r0, 0x8]
- ldr r2, _0809E470 @ =gSharedMem + 0x18079
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_809E8F0
- b _0809E502
- .align 2, 0
-_0809E46C: .4byte gTasks
-_0809E470: .4byte gSharedMem + 0x18079
-_0809E474:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0809E4EE
- ldr r4, _0809E4A8 @ =gSharedMem + 0x18000
- adds r6, r4, 0
- adds r6, 0x79
- ldrb r0, [r6]
- cmp r0, 0x4
- beq _0809E4E0
- adds r0, r4, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- cmp r0, 0
- bne _0809E4E0
- adds r0, r4, 0
- adds r0, 0x10
- bl sub_809E508
- lsls r0, 24
- cmp r0, 0
- bne _0809E4AC
- movs r0, 0x20
- bl PlaySE
- b _0809E502
- .align 2, 0
-_0809E4A8: .4byte gSharedMem + 0x18000
-_0809E4AC:
- movs r0, 0x5
- bl PlaySE
- ldrb r1, [r6]
- adds r0, r4, 0
- adds r0, 0x7A
- strb r1, [r0]
- movs r0, 0x1
- bl sub_80A1B40
- movs r0, 0x13
- bl sub_80A1A30
- ldr r1, _0809E4D8 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _0809E4DC @ =sub_809E534
- str r1, [r0]
- b _0809E502
- .align 2, 0
-_0809E4D8: .4byte gTasks
-_0809E4DC: .4byte sub_809E534
-_0809E4E0:
- movs r0, 0x5
- bl PlaySE
- adds r0, r7, 0
- bl sub_809EAC8
- b _0809E502
-_0809E4EE:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0809E502
- movs r0, 0x5
- bl PlaySE
- adds r0, r7, 0
- bl sub_809EAC8
-_0809E502:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_809E3FC
-
- thumb_func_start sub_809E508
-sub_809E508: @ 809E508
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r4, 0x1
-_0809E50E:
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_809F760
- lsls r0, 16
- cmp r0, 0
- beq _0809E520
- movs r0, 0x1
- b _0809E52C
-_0809E520:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _0809E50E
- movs r0, 0
-_0809E52C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809E508
-
- thumb_func_start sub_809E534
-sub_809E534: @ 809E534
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- adds r2, r3, 0
- ldr r0, _0809E564 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0809E570
- ldr r1, _0809E568 @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- movs r1, 0x3
- strh r1, [r0, 0x8]
- subs r1, 0x4
- ldr r2, _0809E56C @ =gSharedMem + 0x1807A
- adds r0, r3, 0
- bl sub_809E8F0
- b _0809E5C0
- .align 2, 0
-_0809E564: .4byte gMain
-_0809E568: .4byte gTasks
-_0809E56C: .4byte gSharedMem + 0x1807A
-_0809E570:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0809E59C
- ldr r1, _0809E594 @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- movs r1, 0x3
- strh r1, [r0, 0x8]
- ldr r2, _0809E598 @ =gSharedMem + 0x1807A
- adds r0, r3, 0
- movs r1, 0x1
- bl sub_809E8F0
- b _0809E5C0
- .align 2, 0
-_0809E594: .4byte gTasks
-_0809E598: .4byte gSharedMem + 0x1807A
-_0809E59C:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0809E5AE
- adds r0, r3, 0
- movs r1, 0x1
- bl sub_809E83C
- b _0809E5C0
-_0809E5AE:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0809E5C0
- movs r1, 0x1
- negs r1, r1
- adds r0, r2, 0
- bl sub_809E83C
-_0809E5C0:
- pop {r0}
- bx r0
- thumb_func_end sub_809E534
-
- thumb_func_start sub_809E5C4
-sub_809E5C4: @ 809E5C4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- ldr r1, _0809E6D0 @ =gSharedMem + 0x18000
- ldr r5, [r1]
- ldrb r2, [r1, 0x9]
- movs r0, 0x64
- muls r0, r2
- adds r5, r0
- adds r0, r1, 0
- adds r0, 0x79
- ldrb r0, [r0]
- mov r8, r0
- adds r1, 0x7A
- ldrb r6, [r1]
- adds r0, 0xD
- str r0, [sp, 0x8]
- adds r0, r5, 0
- ldr r1, [sp, 0x8]
- bl GetMonData
- mov r1, sp
- adds r1, 0x2
- str r1, [sp, 0x14]
- strh r0, [r1]
- adds r2, r6, 0
- adds r2, 0xD
- str r2, [sp, 0xC]
- adds r0, r5, 0
- adds r1, r2, 0
- bl GetMonData
- mov r1, sp
- strh r0, [r1]
- mov r3, r8
- adds r3, 0x11
- str r3, [sp, 0x10]
- adds r0, r5, 0
- adds r1, r3, 0
- bl GetMonData
- mov r7, sp
- adds r7, 0x5
- str r7, [sp, 0x18]
- strb r0, [r7]
- adds r0, r6, 0
- adds r0, 0x11
- str r0, [sp, 0x1C]
- adds r0, r5, 0
- ldr r1, [sp, 0x1C]
- bl GetMonData
- add r1, sp, 0x4
- mov r10, r1
- strb r0, [r1]
- adds r0, r5, 0
- movs r1, 0x15
- bl GetMonData
- mov r4, sp
- adds r4, 0x6
- strb r0, [r4]
- ldr r1, _0809E6D4 @ =gUnknown_08208238
- mov r2, r8
- adds r0, r2, r1
- ldrb r0, [r0]
- mov r9, r0
- ldrb r0, [r4]
- adds r2, r0, 0
- mov r3, r9
- ands r2, r3
- mov r7, r8
- lsls r7, 1
- mov r8, r7
- asrs r2, r7
- lsls r2, 24
- lsrs r2, 24
- adds r1, r6, r1
- ldrb r3, [r1]
- adds r1, r0, 0
- ands r1, r3
- lsls r6, 1
- asrs r1, r6
- lsls r1, 24
- lsrs r1, 24
- mov r7, r9
- bics r0, r7
- strb r0, [r4]
- ldrb r0, [r4]
- bics r0, r3
- strb r0, [r4]
- lsls r2, r6
- mov r0, r8
- lsls r1, r0
- adds r2, r1
- ldrb r0, [r4]
- orrs r0, r2
- strb r0, [r4]
- adds r0, r5, 0
- ldr r1, [sp, 0x8]
- mov r2, sp
- bl SetMonData
- adds r0, r5, 0
- ldr r1, [sp, 0xC]
- ldr r2, [sp, 0x14]
- bl SetMonData
- adds r0, r5, 0
- ldr r1, [sp, 0x10]
- mov r2, r10
- bl SetMonData
- adds r0, r5, 0
- ldr r1, [sp, 0x1C]
- ldr r2, [sp, 0x18]
- bl SetMonData
- adds r0, r5, 0
- movs r1, 0x15
- adds r2, r4, 0
- bl SetMonData
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809E6D0: .4byte gSharedMem + 0x18000
-_0809E6D4: .4byte gUnknown_08208238
- thumb_func_end sub_809E5C4
-
- thumb_func_start sub_809E6D8
-sub_809E6D8: @ 809E6D8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- ldr r2, _0809E7E8 @ =gSharedMem + 0x18000
- ldr r5, [r2]
- ldrb r1, [r2, 0x9]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 4
- adds r5, r0
- adds r0, r2, 0
- adds r0, 0x79
- ldrb r0, [r0]
- mov r8, r0
- adds r2, 0x7A
- ldrb r6, [r2]
- adds r0, 0xD
- str r0, [sp, 0x8]
- adds r0, r5, 0
- ldr r1, [sp, 0x8]
- bl GetBoxMonData
- mov r1, sp
- adds r1, 0x2
- str r1, [sp, 0x14]
- strh r0, [r1]
- adds r2, r6, 0
- adds r2, 0xD
- str r2, [sp, 0xC]
- adds r0, r5, 0
- adds r1, r2, 0
- bl GetBoxMonData
- mov r1, sp
- strh r0, [r1]
- mov r3, r8
- adds r3, 0x11
- str r3, [sp, 0x10]
- adds r0, r5, 0
- adds r1, r3, 0
- bl GetBoxMonData
- mov r7, sp
- adds r7, 0x5
- str r7, [sp, 0x18]
- strb r0, [r7]
- adds r0, r6, 0
- adds r0, 0x11
- str r0, [sp, 0x1C]
- adds r0, r5, 0
- ldr r1, [sp, 0x1C]
- bl GetBoxMonData
- add r1, sp, 0x4
- mov r10, r1
- strb r0, [r1]
- adds r0, r5, 0
- movs r1, 0x15
- bl GetBoxMonData
- mov r4, sp
- adds r4, 0x6
- strb r0, [r4]
- ldr r1, _0809E7EC @ =gUnknown_08208238
- mov r2, r8
- adds r0, r2, r1
- ldrb r0, [r0]
- mov r9, r0
- ldrb r0, [r4]
- adds r2, r0, 0
- mov r3, r9
- ands r2, r3
- mov r7, r8
- lsls r7, 1
- mov r8, r7
- asrs r2, r7
- lsls r2, 24
- lsrs r2, 24
- adds r1, r6, r1
- ldrb r3, [r1]
- adds r1, r0, 0
- ands r1, r3
- lsls r6, 1
- asrs r1, r6
- lsls r1, 24
- lsrs r1, 24
- mov r7, r9
- bics r0, r7
- strb r0, [r4]
- ldrb r0, [r4]
- bics r0, r3
- strb r0, [r4]
- lsls r2, r6
- mov r0, r8
- lsls r1, r0
- adds r2, r1
- ldrb r0, [r4]
- orrs r0, r2
- strb r0, [r4]
- adds r0, r5, 0
- ldr r1, [sp, 0x8]
- mov r2, sp
- bl SetBoxMonData
- adds r0, r5, 0
- ldr r1, [sp, 0xC]
- ldr r2, [sp, 0x14]
- bl SetBoxMonData
- adds r0, r5, 0
- ldr r1, [sp, 0x10]
- mov r2, r10
- bl SetBoxMonData
- adds r0, r5, 0
- ldr r1, [sp, 0x1C]
- ldr r2, [sp, 0x18]
- bl SetBoxMonData
- adds r0, r5, 0
- movs r1, 0x15
- adds r2, r4, 0
- bl SetBoxMonData
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809E7E8: .4byte gSharedMem + 0x18000
-_0809E7EC: .4byte gUnknown_08208238
- thumb_func_end sub_809E6D8
-
- thumb_func_start sub_809E7F0
-sub_809E7F0: @ 809E7F0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_809F5F8
- lsls r0, 24
- cmp r0, 0
- beq _0809E828
- ldr r1, _0809E830 @ =gSharedMem + 0x18000
- adds r2, r1, 0
- adds r2, 0x74
- movs r0, 0
- strb r0, [r2]
- adds r0, r1, 0
- adds r0, 0x10
- adds r1, 0x79
- bl sub_80A0428
- ldr r1, _0809E834 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0809E838 @ =sub_809E3FC
- str r1, [r0]
- adds r0, r4, 0
- bl sub_80A2078
-_0809E828:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809E830: .4byte gSharedMem + 0x18000
-_0809E834: .4byte gTasks
-_0809E838: .4byte sub_809E3FC
- thumb_func_end sub_809E7F0
-
- thumb_func_start sub_809E83C
-sub_809E83C: @ 809E83C
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x13
- bl sub_80A1B1C
- movs r0, 0
- bl sub_80A1B40
- cmp r4, 0x1
- bne _0809E8C0
- ldr r1, _0809E87C @ =gSharedMem + 0x18000
- adds r0, r1, 0
- adds r0, 0x79
- adds r2, r1, 0
- adds r2, 0x7A
- ldrb r0, [r0]
- ldrb r2, [r2]
- cmp r0, r2
- beq _0809E8CA
- ldrb r0, [r1, 0xE]
- cmp r0, 0
- bne _0809E880
- bl sub_809E5C4
- b _0809E884
- .align 2, 0
-_0809E87C: .4byte gSharedMem + 0x18000
-_0809E880:
- bl sub_809E6D8
-_0809E884:
- ldr r4, _0809E8B4 @ =gSharedMem + 0x18000
- adds r0, r4, 0
- adds r0, 0x7A
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x79
- strb r0, [r1]
- adds r0, r4, 0
- adds r0, 0x10
- bl sub_809F678
- adds r1, r4, 0
- adds r1, 0x74
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, _0809E8B8 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _0809E8BC @ =sub_809E7F0
- str r1, [r0]
- b _0809E8DE
- .align 2, 0
-_0809E8B4: .4byte gSharedMem + 0x18000
-_0809E8B8: .4byte gTasks
-_0809E8BC: .4byte sub_809E7F0
-_0809E8C0:
- ldr r0, _0809E8E4 @ =gSharedMem + 0x18010
- adds r1, r0, 0
- adds r1, 0x69
- bl sub_80A0428
-_0809E8CA:
- ldr r0, _0809E8E8 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _0809E8EC @ =sub_809E3FC
- str r0, [r1]
- adds r0, r5, 0
- bl sub_80A2078
-_0809E8DE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809E8E4: .4byte gSharedMem + 0x18010
-_0809E8E8: .4byte gTasks
-_0809E8EC: .4byte sub_809E3FC
- thumb_func_end sub_809E83C
-
- thumb_func_start sub_809E8F0
-sub_809E8F0: @ 809E8F0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r4, r1, 0
- mov r9, r2
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0x5
- bl PlaySE
- mov r1, r9
- ldrb r6, [r1]
- ldr r1, _0809E944 @ =gTasks
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0, 0x8]
- movs r2, 0
- lsls r4, 24
- asrs r4, 24
- mov r10, r4
- lsls r7, r0, 24
-_0809E930:
- lsls r0, r6, 24
- asrs r0, 24
- add r0, r10
- lsls r0, 24
- lsrs r6, r0, 24
- asrs r1, r0, 24
- cmp r0, r7
- ble _0809E948
- movs r6, 0
- b _0809E94E
- .align 2, 0
-_0809E944: .4byte gTasks
-_0809E948:
- cmp r1, 0
- bge _0809E94E
- lsrs r6, r7, 24
-_0809E94E:
- lsls r4, r6, 24
- lsrs r1, r4, 24
- ldr r0, _0809EA10 @ =gSharedMem + 0x18010
- str r2, [sp, 0x4]
- bl sub_809F760
- lsls r0, 16
- adds r5, r4, 0
- ldr r2, [sp, 0x4]
- cmp r0, 0
- bne _0809E97A
- asrs r0, r5, 24
- cmp r0, 0x4
- beq _0809E97A
- lsls r0, r2, 24
- movs r3, 0x80
- lsls r3, 17
- adds r0, r3
- lsrs r2, r0, 24
- asrs r0, 24
- cmp r0, 0x3
- ble _0809E930
-_0809E97A:
- mov r1, r9
- ldrb r0, [r1]
- cmp r0, 0x4
- bne _0809E996
- asrs r0, r5, 24
- cmp r0, 0x4
- beq _0809E996
- ldr r0, _0809EA14 @ =gSharedMem + 0x18000
- adds r0, 0x7C
- ldrh r0, [r0]
- mov r2, r8
- lsls r7, r2, 2
- cmp r0, 0
- beq _0809E9AC
-_0809E996:
- ldr r2, _0809EA18 @ =gTasks
- mov r3, r8
- lsls r1, r3, 2
- adds r0, r1, r3
- lsls r0, 3
- adds r0, r2
- movs r2, 0x22
- ldrsh r0, [r0, r2]
- adds r7, r1, 0
- cmp r0, 0x1
- bne _0809E9D0
-_0809E9AC:
- lsrs r4, r5, 24
- movs r0, 0x2
- adds r1, r4, 0
- bl sub_80A1488
- movs r0, 0x2
- adds r1, r4, 0
- bl sub_80A1654
- ldr r1, _0809EA18 @ =gTasks
- mov r3, r8
- adds r0, r7, r3
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x22]
- movs r0, 0
- str r0, [sp]
-_0809E9D0:
- mov r1, r9
- ldrb r0, [r1]
- cmp r0, 0x4
- beq _0809E9FE
- asrs r0, r5, 24
- cmp r0, 0x4
- bne _0809E9FE
- ldr r0, _0809EA14 @ =gSharedMem + 0x18000
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0
- bne _0809E9FE
- movs r4, 0x2
- negs r4, r4
- lsrs r5, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80A1488
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80A1654
-_0809E9FE:
- mov r2, r9
- strb r6, [r2]
- ldr r0, _0809EA1C @ =gSharedMem + 0x18079
- cmp r9, r0
- bne _0809EA20
- movs r0, 0
- bl sub_80A1C30
- b _0809EA26
- .align 2, 0
-_0809EA10: .4byte gSharedMem + 0x18010
-_0809EA14: .4byte gSharedMem + 0x18000
-_0809EA18: .4byte gTasks
-_0809EA1C: .4byte gSharedMem + 0x18079
-_0809EA20:
- movs r0, 0x1
- bl sub_80A1C30
-_0809EA26:
- ldr r3, [sp]
- cmp r3, 0
- beq _0809EA34
- ldr r0, _0809EA4C @ =gSharedMem + 0x18010
- mov r1, r9
- bl sub_80A0428
-_0809EA34:
- mov r0, r8
- bl sub_80A2078
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809EA4C: .4byte gSharedMem + 0x18010
- thumb_func_end sub_809E8F0
-
- thumb_func_start SummaryScreenHandleAButton
-SummaryScreenHandleAButton: @ 809EA50
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x5
- bl PlaySE
- ldr r4, _0809EABC @ =gSharedMem + 0x18000
- adds r1, r4, 0
- adds r1, 0x79
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x2
- movs r1, 0
- bl sub_80A1488
- movs r0, 0x2
- movs r1, 0
- bl sub_80A1654
- adds r0, r4, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- cmp r0, 0
- bne _0809EA8C
- adds r1, r4, 0
- adds r1, 0x7F
- movs r0, 0x5
- strb r0, [r1]
- bl sub_80A0DD0
-_0809EA8C:
- movs r0, 0
- bl sub_80A16CC
- adds r0, r4, 0
- adds r0, 0x10
- bl sub_80A029C
- movs r0, 0x9
- bl sub_80A1A30
- ldr r1, _0809EAC0 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _0809EAC4 @ =sub_809E3FC
- str r1, [r0]
- adds r0, r5, 0
- bl sub_80A2078
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809EABC: .4byte gSharedMem + 0x18000
-_0809EAC0: .4byte gTasks
-_0809EAC4: .4byte sub_809E3FC
- thumb_func_end SummaryScreenHandleAButton
-
- thumb_func_start sub_809EAC8
-sub_809EAC8: @ 809EAC8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r6, _0809EB34 @ =gSharedMem + 0x18000
- adds r0, r6, 0
- adds r0, 0x79
- ldrb r0, [r0]
- cmp r0, 0x4
- beq _0809EAEE
- movs r4, 0x2
- negs r4, r4
- adds r0, r4, 0
- movs r1, 0
- bl sub_80A1488
- adds r0, r4, 0
- movs r1, 0
- bl sub_80A1654
-_0809EAEE:
- movs r0, 0x9
- bl sub_80A1B1C
- movs r0, 0x1
- bl sub_80A16CC
- movs r0, 0xF
- movs r1, 0xC
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- movs r0, 0xB
- movs r1, 0xF
- movs r2, 0x1C
- movs r3, 0x12
- bl MenuZeroFillWindowRect
- adds r1, r6, 0
- adds r1, 0x7F
- movs r0, 0x6
- strb r0, [r1]
- bl sub_80A0DD0
- ldr r1, _0809EB38 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _0809EB3C @ =SummaryScreenHandleKeyInput
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809EB34: .4byte gSharedMem + 0x18000
-_0809EB38: .4byte gTasks
-_0809EB3C: .4byte SummaryScreenHandleKeyInput
- thumb_func_end sub_809EAC8
-
- thumb_func_start sub_809EB40
-sub_809EB40: @ 809EB40
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _0809EB6C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0809EB74
- cmp r0, 0x5
- bne _0809EBA4
- movs r0, 0x9
- bl sub_80A1A30
- movs r0, 0
- strh r0, [r4, 0x8]
- ldr r0, _0809EB70 @ =sub_809E260
- str r0, [r4]
- b _0809EBB4
- .align 2, 0
-_0809EB6C: .4byte gTasks
-_0809EB70: .4byte sub_809E260
-_0809EB74:
- ldr r4, _0809EBBC @ =gSharedMem + 0x18000
- adds r6, r4, 0
- adds r6, 0x79
- strb r0, [r6]
- adds r0, r4, 0
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0
- beq _0809EB96
- movs r0, 0xA
- movs r1, 0
- bl sub_80A1488
- ldrb r1, [r6]
- movs r0, 0xA
- bl sub_80A1654
-_0809EB96:
- movs r0, 0
- bl sub_80A16CC
- adds r0, r4, 0
- adds r0, 0x10
- bl sub_80A029C
-_0809EBA4:
- ldr r0, _0809EBC0 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_0809EBB4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809EBBC: .4byte gSharedMem + 0x18000
-_0809EBC0: .4byte gTasks
- thumb_func_end sub_809EB40
-
- thumb_func_start sub_809EBC4
-sub_809EBC4: @ 809EBC4
- push {r4,lr}
- ldr r4, _0809EC28 @ =gSharedMem + 0x18000
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- beq _0809EC22
- bl sub_80A0EE8
- ldr r0, _0809EC2C @ =gUnknown_030042C0
- movs r2, 0x80
- lsls r2, 1
- adds r1, r2, 0
- strh r1, [r0]
- ldrb r0, [r4, 0xB]
- cmp r0, 0x1
- bne _0809EBF4
- ldr r2, _0809EC30 @ =REG_BG1CNT
- ldrh r1, [r2]
- ldr r0, _0809EC34 @ =0x0000e0ff
- ands r0, r1
- movs r3, 0x80
- lsls r3, 4
- adds r1, r3, 0
- adds r0, r1
- strh r0, [r2]
-_0809EBF4:
- ldrb r3, [r4, 0xB]
- cmp r3, 0x2
- bne _0809EC0C
- ldr r2, _0809EC30 @ =REG_BG1CNT
- ldrh r1, [r2]
- ldr r0, _0809EC34 @ =0x0000e0ff
- ands r0, r1
- movs r4, 0xA0
- lsls r4, 4
- adds r1, r4, 0
- adds r0, r1
- strh r0, [r2]
-_0809EC0C:
- cmp r3, 0x3
- bne _0809EC22
- ldr r2, _0809EC30 @ =REG_BG1CNT
- ldrh r1, [r2]
- ldr r0, _0809EC34 @ =0x0000e0ff
- ands r0, r1
- movs r3, 0xC0
- lsls r3, 4
- adds r1, r3, 0
- adds r0, r1
- strh r0, [r2]
-_0809EC22:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809EC28: .4byte gSharedMem + 0x18000
-_0809EC2C: .4byte gUnknown_030042C0
-_0809EC30: .4byte REG_BG1CNT
-_0809EC34: .4byte 0x0000e0ff
- thumb_func_end sub_809EBC4
-
- thumb_func_start sub_809EC38
-sub_809EC38: @ 809EC38
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _0809EC5C @ =gTasks + 0x8
- adds r6, r0, r1
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0x5
- bls _0809EC52
- b _0809EE64
-_0809EC52:
- lsls r0, 2
- ldr r1, _0809EC60 @ =_0809EC64
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0809EC5C: .4byte gTasks + 0x8
-_0809EC60: .4byte _0809EC64
- .align 2, 0
-_0809EC64:
- .4byte _0809EC7C
- .4byte _0809ED14
- .4byte _0809ED98
- .4byte _0809EE12
- .4byte _0809EE1C
- .4byte _0809EE4C
-_0809EC7C:
- ldr r1, _0809ECB8 @ =gSharedMem + 0x18000
- adds r0, r1, 0
- adds r0, 0x80
- ldrb r0, [r0]
- cmp r0, 0
- bne _0809ECC8
- ldrb r3, [r1, 0xB]
- cmp r3, 0
- beq _0809EC98
- ldr r1, _0809ECBC @ =gUnknown_03004288
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
-_0809EC98:
- cmp r3, 0x1
- bne _0809ECAE
- ldr r2, _0809ECC0 @ =REG_BG2CNT
- ldrh r1, [r2]
- ldr r0, _0809ECC4 @ =0x0000e0ff
- ands r0, r1
- movs r4, 0x80
- lsls r4, 4
- adds r1, r4, 0
- adds r0, r1
- strh r0, [r2]
-_0809ECAE:
- cmp r3, 0x2
- beq _0809ECB4
- b _0809EE3A
-_0809ECB4:
- ldr r2, _0809ECC0 @ =REG_BG2CNT
- b _0809ECF6
- .align 2, 0
-_0809ECB8: .4byte gSharedMem + 0x18000
-_0809ECBC: .4byte gUnknown_03004288
-_0809ECC0: .4byte REG_BG2CNT
-_0809ECC4: .4byte 0x0000e0ff
-_0809ECC8:
- ldrb r3, [r1, 0xB]
- cmp r3, 0
- beq _0809ECD8
- ldr r1, _0809ED08 @ =gUnknown_030042C0
- movs r4, 0x80
- lsls r4, 1
- adds r0, r4, 0
- strh r0, [r1]
-_0809ECD8:
- cmp r3, 0x1
- bne _0809ECEE
- ldr r2, _0809ED0C @ =REG_BG1CNT
- ldrh r1, [r2]
- ldr r0, _0809ED10 @ =0x0000e0ff
- ands r0, r1
- movs r4, 0x80
- lsls r4, 4
- adds r1, r4, 0
- adds r0, r1
- strh r0, [r2]
-_0809ECEE:
- cmp r3, 0x2
- beq _0809ECF4
- b _0809EE3A
-_0809ECF4:
- ldr r2, _0809ED0C @ =REG_BG1CNT
-_0809ECF6:
- ldrh r1, [r2]
- ldr r0, _0809ED10 @ =0x0000e0ff
- ands r0, r1
- movs r3, 0xA0
- lsls r3, 4
- adds r1, r3, 0
- adds r0, r1
- strh r0, [r2]
- b _0809EE3A
- .align 2, 0
-_0809ED08: .4byte gUnknown_030042C0
-_0809ED0C: .4byte REG_BG1CNT
-_0809ED10: .4byte 0x0000e0ff
-_0809ED14:
- ldr r0, _0809ED48 @ =gSharedMem + 0x18000
- adds r0, 0x80
- ldrb r0, [r0]
- cmp r0, 0
- bne _0809ED5C
- ldr r1, _0809ED4C @ =gUnknown_030042C0
- ldrh r0, [r1]
- subs r0, 0x20
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- beq _0809ED2E
- b _0809EE64
-_0809ED2E:
- ldr r3, _0809ED50 @ =REG_BG1CNT
- ldrh r2, [r3]
- ldr r1, _0809ED54 @ =0x0000fffc
- adds r0, r1, 0
- ands r0, r2
- adds r0, 0x2
- strh r0, [r3]
- ldr r2, _0809ED58 @ =REG_BG2CNT
- ldrh r0, [r2]
- ands r1, r0
- adds r1, 0x1
- strh r1, [r2]
- b _0809EE3A
- .align 2, 0
-_0809ED48: .4byte gSharedMem + 0x18000
-_0809ED4C: .4byte gUnknown_030042C0
-_0809ED50: .4byte REG_BG1CNT
-_0809ED54: .4byte 0x0000fffc
-_0809ED58: .4byte REG_BG2CNT
-_0809ED5C:
- ldr r1, _0809ED88 @ =gUnknown_03004288
- ldrh r0, [r1]
- subs r0, 0x20
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- beq _0809ED6C
- b _0809EE64
-_0809ED6C:
- ldr r3, _0809ED8C @ =REG_BG1CNT
- ldrh r2, [r3]
- ldr r1, _0809ED90 @ =0x0000fffc
- adds r0, r1, 0
- ands r0, r2
- adds r0, 0x1
- strh r0, [r3]
- ldr r2, _0809ED94 @ =REG_BG2CNT
- ldrh r0, [r2]
- ands r1, r0
- adds r1, 0x2
- strh r1, [r2]
- b _0809EE3A
- .align 2, 0
-_0809ED88: .4byte gUnknown_03004288
-_0809ED8C: .4byte REG_BG1CNT
-_0809ED90: .4byte 0x0000fffc
-_0809ED94: .4byte REG_BG2CNT
-_0809ED98:
- ldr r1, _0809EDD4 @ =gSharedMem + 0x18000
- ldrb r3, [r1, 0xB]
- adds r0, r3, 0x1
- adds r2, r1, 0
- adds r2, 0x7E
- strb r0, [r2]
- ldrb r2, [r1, 0x8]
- subs r0, r2, 0x2
- lsls r0, 24
- lsrs r0, 24
- adds r5, r1, 0
- cmp r0, 0x1
- bhi _0809EDD8
- adds r1, 0x7F
- movs r0, 0
- strb r0, [r1]
- adds r4, r5, 0
- adds r4, 0x10
- adds r0, r4, 0
- bl sub_80A029C
- adds r5, 0x79
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80A0428
- ldrb r0, [r5]
- bl sub_80A00F4
- b _0809EE3A
- .align 2, 0
-_0809EDD4: .4byte gSharedMem + 0x18000
-_0809EDD8:
- lsls r0, r3, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _0809EDFA
- adds r0, r5, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809EDF2
- lsls r0, r2, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _0809EDFA
-_0809EDF2:
- adds r1, r5, 0
- adds r1, 0x7F
- movs r0, 0x6
- b _0809EE0E
-_0809EDFA:
- ldrb r0, [r5, 0xB]
- cmp r0, 0
- bne _0809EE08
- adds r1, r5, 0
- adds r1, 0x7F
- movs r0, 0x7
- b _0809EE0E
-_0809EE08:
- adds r1, r5, 0
- adds r1, 0x7F
- movs r0, 0
-_0809EE0E:
- strb r0, [r1]
- b _0809EE3A
-_0809EE12:
- bl sub_80A0EE8
- bl sub_80A0DD0
- b _0809EE3A
-_0809EE1C:
- ldr r0, _0809EE44 @ =gUnknown_083C1598
- ldr r4, _0809EE48 @ =gSharedMem + 0x18000
- ldrb r1, [r4, 0xB]
- lsls r1, 2
- adds r1, r0
- adds r0, r4, 0
- adds r0, 0x10
- ldr r1, [r1]
- bl _call_via_r1
- adds r4, 0x80
- ldrb r0, [r4]
- movs r1, 0x1
- eors r0, r1
- strb r0, [r4]
-_0809EE3A:
- ldrh r0, [r6]
- adds r0, 0x1
- strh r0, [r6]
- b _0809EE64
- .align 2, 0
-_0809EE44: .4byte gUnknown_083C1598
-_0809EE48: .4byte gSharedMem + 0x18000
-_0809EE4C:
- bl sub_8055870
- cmp r0, 0x1
- beq _0809EE64
- ldr r1, _0809EE6C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0809EE70 @ =gUnknown_03005CF0
- ldr r1, [r1]
- str r1, [r0]
-_0809EE64:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809EE6C: .4byte gTasks
-_0809EE70: .4byte gUnknown_03005CF0
- thumb_func_end sub_809EC38
-
- thumb_func_start sub_809EE74
-sub_809EE74: @ 809EE74
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _0809EE98 @ =gTasks + 0x8
- adds r6, r0, r1
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0x6
- bls _0809EE8E
- b _0809F0C0
-_0809EE8E:
- lsls r0, 2
- ldr r1, _0809EE9C @ =_0809EEA0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0809EE98: .4byte gTasks + 0x8
-_0809EE9C: .4byte _0809EEA0
- .align 2, 0
-_0809EEA0:
- .4byte _0809EEBC
- .4byte _0809EEE0
- .4byte _0809EFB4
- .4byte _0809EFF4
- .4byte _0809F06E
- .4byte _0809F078
- .4byte _0809F0A8
-_0809EEBC:
- ldr r0, _0809EECC @ =gSharedMem + 0x18000
- adds r0, 0x80
- ldrb r1, [r0]
- cmp r1, 0
- bne _0809EED4
- ldr r0, _0809EED0 @ =gUnknown_03004288
- strh r1, [r0]
- b _0809F096
- .align 2, 0
-_0809EECC: .4byte gSharedMem + 0x18000
-_0809EED0: .4byte gUnknown_03004288
-_0809EED4:
- ldr r1, _0809EEDC @ =gUnknown_030042C0
- movs r0, 0
- strh r0, [r1]
- b _0809F096
- .align 2, 0
-_0809EEDC: .4byte gUnknown_030042C0
-_0809EEE0:
- ldr r1, _0809EF30 @ =gSharedMem + 0x18000
- adds r0, r1, 0
- adds r0, 0x80
- ldrb r0, [r0]
- cmp r0, 0
- bne _0809EF4C
- ldrb r3, [r1, 0xB]
- cmp r3, 0x1
- bne _0809EF02
- ldr r2, _0809EF34 @ =REG_BG2CNT
- ldrh r1, [r2]
- ldr r0, _0809EF38 @ =0x0000e0fc
- ands r0, r1
- ldr r4, _0809EF3C @ =0x00000801
- adds r1, r4, 0
- adds r0, r1
- strh r0, [r2]
-_0809EF02:
- cmp r3, 0x2
- bne _0809EF16
- ldr r2, _0809EF34 @ =REG_BG2CNT
- ldrh r1, [r2]
- ldr r0, _0809EF38 @ =0x0000e0fc
- ands r0, r1
- ldr r4, _0809EF40 @ =0x00000a01
- adds r1, r4, 0
- adds r0, r1
- strh r0, [r2]
-_0809EF16:
- cmp r3, 0x3
- bne _0809EF2A
- ldr r2, _0809EF34 @ =REG_BG2CNT
- ldrh r1, [r2]
- ldr r0, _0809EF38 @ =0x0000e0fc
- ands r0, r1
- ldr r3, _0809EF44 @ =0x00000c01
- adds r1, r3, 0
- adds r0, r1
- strh r0, [r2]
-_0809EF2A:
- ldr r2, _0809EF48 @ =REG_BG1CNT
- b _0809EF8C
- .align 2, 0
-_0809EF30: .4byte gSharedMem + 0x18000
-_0809EF34: .4byte REG_BG2CNT
-_0809EF38: .4byte 0x0000e0fc
-_0809EF3C: .4byte 0x00000801
-_0809EF40: .4byte 0x00000a01
-_0809EF44: .4byte 0x00000c01
-_0809EF48: .4byte REG_BG1CNT
-_0809EF4C:
- ldrb r3, [r1, 0xB]
- cmp r3, 0x1
- bne _0809EF62
- ldr r2, _0809EF98 @ =REG_BG1CNT
- ldrh r1, [r2]
- ldr r0, _0809EF9C @ =0x0000e0fc
- ands r0, r1
- ldr r4, _0809EFA0 @ =0x00000801
- adds r1, r4, 0
- adds r0, r1
- strh r0, [r2]
-_0809EF62:
- cmp r3, 0x2
- bne _0809EF76
- ldr r2, _0809EF98 @ =REG_BG1CNT
- ldrh r1, [r2]
- ldr r0, _0809EF9C @ =0x0000e0fc
- ands r0, r1
- ldr r4, _0809EFA4 @ =0x00000a01
- adds r1, r4, 0
- adds r0, r1
- strh r0, [r2]
-_0809EF76:
- cmp r3, 0x3
- bne _0809EF8A
- ldr r2, _0809EF98 @ =REG_BG1CNT
- ldrh r1, [r2]
- ldr r0, _0809EF9C @ =0x0000e0fc
- ands r0, r1
- ldr r3, _0809EFA8 @ =0x00000c01
- adds r1, r3, 0
- adds r0, r1
- strh r0, [r2]
-_0809EF8A:
- ldr r2, _0809EFAC @ =REG_BG2CNT
-_0809EF8C:
- ldrh r1, [r2]
- ldr r0, _0809EFB0 @ =0x0000fffc
- ands r0, r1
- adds r0, 0x2
- strh r0, [r2]
- b _0809F096
- .align 2, 0
-_0809EF98: .4byte REG_BG1CNT
-_0809EF9C: .4byte 0x0000e0fc
-_0809EFA0: .4byte 0x00000801
-_0809EFA4: .4byte 0x00000a01
-_0809EFA8: .4byte 0x00000c01
-_0809EFAC: .4byte REG_BG2CNT
-_0809EFB0: .4byte 0x0000fffc
-_0809EFB4:
- ldr r0, _0809EFD4 @ =gSharedMem + 0x18000
- adds r0, 0x80
- ldrb r0, [r0]
- cmp r0, 0
- bne _0809EFDC
- ldr r0, _0809EFD8 @ =gUnknown_03004288
- ldrh r1, [r0]
- adds r1, 0x20
- strh r1, [r0]
- lsls r1, 16
- movs r0, 0x80
- lsls r0, 17
- cmp r1, r0
- bne _0809F0C0
- b _0809F096
- .align 2, 0
-_0809EFD4: .4byte gSharedMem + 0x18000
-_0809EFD8: .4byte gUnknown_03004288
-_0809EFDC:
- ldr r0, _0809EFF0 @ =gUnknown_030042C0
- ldrh r1, [r0]
- adds r1, 0x20
- strh r1, [r0]
- lsls r1, 16
- movs r0, 0x80
- lsls r0, 17
- cmp r1, r0
- bne _0809F0C0
- b _0809F096
- .align 2, 0
-_0809EFF0: .4byte gUnknown_030042C0
-_0809EFF4:
- ldr r1, _0809F030 @ =gSharedMem + 0x18000
- ldrb r3, [r1, 0xB]
- adds r0, r3, 0x1
- adds r2, r1, 0
- adds r2, 0x7E
- strb r0, [r2]
- ldrb r2, [r1, 0x8]
- subs r0, r2, 0x2
- lsls r0, 24
- lsrs r0, 24
- adds r5, r1, 0
- cmp r0, 0x1
- bhi _0809F034
- adds r1, 0x7F
- movs r0, 0
- strb r0, [r1]
- adds r4, r5, 0
- adds r4, 0x10
- adds r0, r4, 0
- bl sub_80A029C
- adds r5, 0x79
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80A0428
- ldrb r0, [r5]
- bl sub_80A00F4
- b _0809F096
- .align 2, 0
-_0809F030: .4byte gSharedMem + 0x18000
-_0809F034:
- lsls r0, r3, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _0809F056
- adds r0, r5, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809F04E
- lsls r0, r2, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _0809F056
-_0809F04E:
- adds r1, r5, 0
- adds r1, 0x7F
- movs r0, 0x6
- b _0809F06A
-_0809F056:
- ldrb r0, [r5, 0xB]
- cmp r0, 0
- bne _0809F064
- adds r1, r5, 0
- adds r1, 0x7F
- movs r0, 0x7
- b _0809F06A
-_0809F064:
- adds r1, r5, 0
- adds r1, 0x7F
- movs r0, 0
-_0809F06A:
- strb r0, [r1]
- b _0809F096
-_0809F06E:
- bl sub_80A0EE8
- bl sub_80A0DD0
- b _0809F096
-_0809F078:
- ldr r0, _0809F0A0 @ =gUnknown_083C1598
- ldr r4, _0809F0A4 @ =gSharedMem + 0x18000
- ldrb r1, [r4, 0xB]
- lsls r1, 2
- adds r1, r0
- adds r0, r4, 0
- adds r0, 0x10
- ldr r1, [r1]
- bl _call_via_r1
- adds r4, 0x80
- ldrb r0, [r4]
- movs r1, 0x1
- eors r0, r1
- strb r0, [r4]
-_0809F096:
- ldrh r0, [r6]
- adds r0, 0x1
- strh r0, [r6]
- b _0809F0C0
- .align 2, 0
-_0809F0A0: .4byte gUnknown_083C1598
-_0809F0A4: .4byte gSharedMem + 0x18000
-_0809F0A8:
- bl sub_8055870
- cmp r0, 0x1
- beq _0809F0C0
- ldr r1, _0809F0C8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0809F0CC @ =gUnknown_03005CF0
- ldr r1, [r1]
- str r1, [r0]
-_0809F0C0:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809F0C8: .4byte gTasks
-_0809F0CC: .4byte gUnknown_03005CF0
- thumb_func_end sub_809EE74
-
- thumb_func_start sub_809F0D0
-sub_809F0D0: @ 809F0D0
- push {r4-r7,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _0809F110 @ =gSharedMem + 0x18000
- ldrb r0, [r1, 0xB]
- adds r0, r4
- movs r5, 0
- strb r0, [r1, 0xB]
- ldr r2, _0809F114 @ =gUnknown_03005CF0
- ldr r1, _0809F118 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r6, r0, r1
- ldr r0, [r6]
- str r0, [r2]
- bl sub_809FBE4
- strh r5, [r6, 0x8]
- lsls r4, 24
- asrs r4, 24
- movs r0, 0x1
- negs r0, r0
- cmp r4, r0
- bne _0809F120
- ldr r0, _0809F11C @ =sub_809EC38
- str r0, [r6]
- b _0809F12A
- .align 2, 0
-_0809F110: .4byte gSharedMem + 0x18000
-_0809F114: .4byte gUnknown_03005CF0
-_0809F118: .4byte gTasks
-_0809F11C: .4byte sub_809EC38
-_0809F120:
- ldr r1, _0809F130 @ =sub_809EE74
- str r1, [r6]
- adds r0, r7, 0
- bl _call_via_r1
-_0809F12A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809F130: .4byte sub_809EE74
- thumb_func_end sub_809F0D0
-
- thumb_func_start SummaryScreenHandleLeftRightInput
-SummaryScreenHandleLeftRightInput: @ 809F134
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r4, _0809F1AC @ =gSharedMem + 0x18010
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0809F1A6
- lsls r0, r5, 24
- asrs r5, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- bne _0809F168
- adds r0, r4, 0
- subs r0, 0x10
- adds r1, r4, 0
- adds r1, 0x65
- ldrb r0, [r0, 0xB]
- ldrb r1, [r1]
- cmp r0, r1
- beq _0809F1A6
-_0809F168:
- cmp r5, 0x1
- bne _0809F17C
- adds r0, r4, 0
- subs r0, 0x10
- adds r1, r4, 0
- adds r1, 0x66
- ldrb r0, [r0, 0xB]
- ldrb r1, [r1]
- cmp r0, r1
- beq _0809F1A6
-_0809F17C:
- ldr r0, _0809F1B0 @ =sub_80A1334
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _0809F1A6
- ldr r0, _0809F1B4 @ =sub_80A1500
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _0809F1A6
- movs r0, 0x5
- bl PlaySE
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_809F0D0
-_0809F1A6:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809F1AC: .4byte gSharedMem + 0x18010
-_0809F1B0: .4byte sub_80A1334
-_0809F1B4: .4byte sub_80A1500
- thumb_func_end SummaryScreenHandleLeftRightInput
-
- thumb_func_start SummaryScreenHandleUpDownInput
-SummaryScreenHandleUpDownInput: @ 809F1B8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r0, _0809F1E4 @ =gSharedMem + 0x18000
- ldrb r1, [r0, 0xE]
- adds r2, r0, 0
- cmp r1, 0x1
- bne _0809F202
- ldrb r0, [r2, 0xB]
- cmp r0, 0
- beq _0809F1E8
- lsls r1, r4, 24
- asrs r1, 24
- movs r4, 0x1
- eors r1, r4
- negs r0, r1
- orrs r0, r1
- lsrs r4, r0, 31
- b _0809F1F4
- .align 2, 0
-_0809F1E4: .4byte gSharedMem + 0x18000
-_0809F1E8:
- lsls r0, r4, 24
- asrs r0, 24
- movs r4, 0x3
- cmp r0, 0x1
- bne _0809F1F4
- movs r4, 0x2
-_0809F1F4:
- ldr r0, [r2]
- ldrb r1, [r2, 0x9]
- ldrb r2, [r2, 0xA]
- adds r3, r4, 0
- bl StorageSystemGetNextMonIndex
- b _0809F22C
-_0809F202:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809F224
- bl IsLinkDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809F224
- lsls r0, r4, 24
- asrs r0, 24
- bl sub_809F3CC
- b _0809F22C
-_0809F224:
- lsls r0, r4, 24
- asrs r0, 24
- bl sub_809F284
-_0809F22C:
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _0809F270
- movs r0, 0x5
- bl PlaySE
- ldr r5, _0809F278 @ =gSharedMem + 0x18010
- adds r0, r5, 0
- bl GetMonStatusAndPokerus
- lsls r0, 24
- cmp r0, 0
- beq _0809F258
- movs r0, 0x2
- negs r0, r0
- bl sub_80A12D0
-_0809F258:
- adds r0, r5, 0
- subs r0, 0x10
- strb r4, [r0, 0x9]
- ldr r1, _0809F27C @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, [r0]
- str r1, [r5, 0x74]
- ldr r1, _0809F280 @ =sub_809F43C
- str r1, [r0]
-_0809F270:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809F278: .4byte gSharedMem + 0x18010
-_0809F27C: .4byte gTasks
-_0809F280: .4byte sub_809F43C
- thumb_func_end SummaryScreenHandleUpDownInput
-
- thumb_func_start sub_809F284
-sub_809F284: @ 809F284
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, _0809F2C0 @ =gSharedMem + 0x18000
- ldr r7, [r0]
- movs r6, 0
- ldrb r1, [r0, 0xB]
- adds r4, r0, 0
- cmp r1, 0
- bne _0809F2C4
- lsls r0, r3, 24
- asrs r2, r0, 24
- movs r1, 0x1
- negs r1, r1
- adds r5, r0, 0
- cmp r2, r1
- bne _0809F2AC
- ldrb r0, [r4, 0x9]
- cmp r0, 0
- beq _0809F2E4
-_0809F2AC:
- asrs r0, r5, 24
- cmp r0, 0x1
- bne _0809F2BA
- ldrb r0, [r4, 0x9]
- ldrb r1, [r4, 0xA]
- cmp r0, r1
- bcs _0809F2E4
-_0809F2BA:
- ldrb r0, [r4, 0x9]
- adds r0, r3
- b _0809F304
- .align 2, 0
-_0809F2C0: .4byte gSharedMem + 0x18000
-_0809F2C4:
- lsls r5, r3, 24
-_0809F2C6:
- lsls r0, r6, 24
- asrs r0, 24
- asrs r1, r5, 24
- adds r0, r1
- lsls r0, 24
- ldr r4, _0809F2EC @ =gSharedMem + 0x18000
- lsrs r6, r0, 24
- asrs r0, 24
- ldrb r2, [r4, 0x9]
- adds r1, r0, r2
- cmp r1, 0
- blt _0809F2E4
- ldrb r0, [r4, 0xA]
- cmp r1, r0
- ble _0809F2F0
-_0809F2E4:
- movs r0, 0x1
- negs r0, r0
- b _0809F308
- .align 2, 0
-_0809F2EC: .4byte gSharedMem + 0x18000
-_0809F2F0:
- movs r0, 0x64
- muls r0, r1
- adds r0, r7, r0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0809F2C6
- ldrb r0, [r4, 0x9]
- adds r0, r6
-_0809F304:
- lsls r0, 24
- asrs r0, 24
-_0809F308:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_809F284
-
- thumb_func_start sub_809F310
-sub_809F310: @ 809F310
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0809F33C
- ldr r0, _0809F338 @ =gSharedMem + 0x18000
- ldrb r0, [r0, 0xB]
- cmp r0, 0
- bne _0809F332
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0809F33C
-_0809F332:
- movs r0, 0x1
- b _0809F33E
- .align 2, 0
-_0809F338: .4byte gSharedMem + 0x18000
-_0809F33C:
- movs r0, 0
-_0809F33E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_809F310
-
- thumb_func_start sub_809F344
-sub_809F344: @ 809F344
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
-_0809F34A:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- beq _0809F37C
- ldr r0, _0809F374 @ =gUnknown_083C15A8
- adds r5, r4, r0
- ldrb r1, [r5]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0809F378 @ =gPlayerParty
- adds r0, r1
- bl sub_809F310
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809F34A
- movs r0, 0
- ldrsb r0, [r5, r0]
- b _0809F380
- .align 2, 0
-_0809F374: .4byte gUnknown_083C15A8
-_0809F378: .4byte gPlayerParty
-_0809F37C:
- movs r0, 0x1
- negs r0, r0
-_0809F380:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809F344
-
- thumb_func_start sub_809F388
-sub_809F388: @ 809F388
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
-_0809F38E:
- cmp r4, 0
- beq _0809F3C0
- subs r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0809F3B8 @ =gUnknown_083C15A8
- adds r5, r4, r0
- ldrb r1, [r5]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0809F3BC @ =gPlayerParty
- adds r0, r1
- bl sub_809F310
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809F38E
- movs r0, 0
- ldrsb r0, [r5, r0]
- b _0809F3C4
- .align 2, 0
-_0809F3B8: .4byte gUnknown_083C15A8
-_0809F3BC: .4byte gPlayerParty
-_0809F3C0:
- movs r0, 0x1
- negs r0, r0
-_0809F3C4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809F388
-
- thumb_func_start sub_809F3CC
-sub_809F3CC: @ 809F3CC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r2, 0
- movs r1, 0
- ldr r3, _0809F41C @ =gUnknown_083C15A8
- ldr r4, _0809F420 @ =gSharedMem + 0x18000
- ldrb r0, [r3]
- ldrb r5, [r4, 0x9]
- cmp r0, r5
- beq _0809F3FC
- adds r5, r3, 0
- adds r3, r4, 0
-_0809F3E6:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x5
- bhi _0809F3FC
- adds r0, r1, r5
- ldrb r0, [r0]
- ldrb r4, [r3, 0x9]
- cmp r0, r4
- bne _0809F3E6
- adds r2, r1, 0
-_0809F3FC:
- lsls r0, r6, 24
- asrs r1, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _0809F40C
- cmp r2, 0
- beq _0809F414
-_0809F40C:
- cmp r1, 0x1
- bne _0809F424
- cmp r2, 0x5
- bne _0809F42C
-_0809F414:
- movs r0, 0x1
- negs r0, r0
- b _0809F436
- .align 2, 0
-_0809F41C: .4byte gUnknown_083C15A8
-_0809F420: .4byte gSharedMem + 0x18000
-_0809F424:
- adds r0, r2, 0
- bl sub_809F388
- b _0809F432
-_0809F42C:
- adds r0, r2, 0
- bl sub_809F344
-_0809F432:
- lsls r0, 24
- asrs r0, 24
-_0809F436:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_809F3CC
-
- thumb_func_start sub_809F43C
-sub_809F43C: @ 809F43C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0809F45C @ =gMain
- ldr r1, _0809F460 @ =0x0000043c
- adds r5, r0, r1
- ldrb r2, [r5]
- adds r3, r0, 0
- cmp r2, 0x8
- bls _0809F452
- b _0809F5CC
-_0809F452:
- lsls r0, r2, 2
- ldr r1, _0809F464 @ =_0809F468
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0809F45C: .4byte gMain
-_0809F460: .4byte 0x0000043c
-_0809F464: .4byte _0809F468
- .align 2, 0
-_0809F468:
- .4byte _0809F48C
- .4byte _0809F492
- .4byte _0809F4BC
- .4byte _0809F4D8
- .4byte _0809F4F4
- .4byte _0809F51C
- .4byte _0809F578
- .4byte _0809F584
- .4byte _0809F5A0
-_0809F48C:
- bl StopCryAndClearCrySongs
- b _0809F5B2
-_0809F492:
- ldr r0, _0809F4AC @ =gSharedMem + 0x18000
- ldrb r1, [r0, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0809F4B0 @ =gSprites
- adds r0, r1
- bl DestroySpriteAndFreeResources
- ldr r1, _0809F4B4 @ =gMain
- ldr r0, _0809F4B8 @ =0x0000043c
- adds r1, r0
- b _0809F5B8
- .align 2, 0
-_0809F4AC: .4byte gSharedMem + 0x18000
-_0809F4B0: .4byte gSprites
-_0809F4B4: .4byte gMain
-_0809F4B8: .4byte 0x0000043c
-_0809F4BC:
- ldr r0, _0809F4D0 @ =gSharedMem + 0x18000
- ldrb r1, [r0, 0xD]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0809F4D4 @ =gSprites
- adds r0, r1
- bl DestroySpriteAndFreeResources
- b _0809F5B2
- .align 2, 0
-_0809F4D0: .4byte gSharedMem + 0x18000
-_0809F4D4: .4byte gSprites
-_0809F4D8:
- ldr r0, _0809F4EC @ =gSharedMem + 0x18000
- adds r1, r0, 0
- adds r1, 0x74
- movs r2, 0
- strb r2, [r1]
- adds r0, 0x79
- strb r2, [r0]
- ldr r0, _0809F4F0 @ =0x0000043c
- adds r1, r3, r0
- b _0809F5B8
- .align 2, 0
-_0809F4EC: .4byte gSharedMem + 0x18000
-_0809F4F0: .4byte 0x0000043c
-_0809F4F4:
- ldr r4, _0809F518 @ =gSharedMem + 0x18010
- adds r0, r4, 0
- bl sub_809F678
- adds r0, r4, 0
- bl GetMonStatusAndPokerus
- lsls r0, 24
- cmp r0, 0
- beq _0809F50E
- movs r0, 0x2
- bl sub_80A12D0
-_0809F50E:
- adds r0, r4, 0
- bl sub_80A0EA4
- b _0809F5B2
- .align 2, 0
-_0809F518: .4byte gSharedMem + 0x18010
-_0809F51C:
- ldr r4, _0809F558 @ =gSharedMem + 0x18010
- adds r5, r4, 0
- adds r5, 0x64
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_809F6B4
- adds r1, r4, 0
- subs r1, 0x10
- strb r0, [r1, 0xC]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _0809F5EA
- movs r0, 0
- strb r0, [r5]
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- adds r1, r0, 0
- cmp r1, 0
- beq _0809F560
- ldr r1, _0809F55C @ =gUnknown_030041B0
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- b _0809F564
- .align 2, 0
-_0809F558: .4byte gSharedMem + 0x18010
-_0809F55C: .4byte gUnknown_030041B0
-_0809F560:
- ldr r0, _0809F56C @ =gUnknown_030041B0
- strh r1, [r0]
-_0809F564:
- ldr r1, _0809F570 @ =gMain
- ldr r0, _0809F574 @ =0x0000043c
- adds r1, r0
- b _0809F5B8
- .align 2, 0
-_0809F56C: .4byte gUnknown_030041B0
-_0809F570: .4byte gMain
-_0809F574: .4byte 0x0000043c
-_0809F578:
- ldr r0, _0809F580 @ =gSharedMem + 0x18010
- bl sub_80A1DCC
- b _0809F5B2
- .align 2, 0
-_0809F580: .4byte gSharedMem + 0x18010
-_0809F584:
- ldr r0, _0809F594 @ =gSharedMem + 0x18010
- bl sub_80A1DE8
- ldr r1, _0809F598 @ =gMain
- ldr r0, _0809F59C @ =0x0000043c
- adds r1, r0
- b _0809F5B8
- .align 2, 0
-_0809F594: .4byte gSharedMem + 0x18010
-_0809F598: .4byte gMain
-_0809F59C: .4byte 0x0000043c
-_0809F5A0:
- bl sub_809F5F8
- lsls r0, 24
- cmp r0, 0
- beq _0809F5EA
- ldr r0, _0809F5C0 @ =gSharedMem + 0x18000
- adds r0, 0x74
- movs r1, 0
- strb r1, [r0]
-_0809F5B2:
- ldr r1, _0809F5C4 @ =gMain
- ldr r2, _0809F5C8 @ =0x0000043c
- adds r1, r2
-_0809F5B8:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0809F5EA
- .align 2, 0
-_0809F5C0: .4byte gSharedMem + 0x18000
-_0809F5C4: .4byte gMain
-_0809F5C8: .4byte 0x0000043c
-_0809F5CC:
- bl sub_8055870
- cmp r0, 0x1
- beq _0809F5EA
- movs r0, 0
- strb r0, [r5]
- ldr r0, _0809F5F0 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0809F5F4 @ =gSharedMem + 0x18000
- adds r0, 0x84
- ldr r0, [r0]
- str r0, [r1]
-_0809F5EA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809F5F0: .4byte gTasks
-_0809F5F4: .4byte gSharedMem + 0x18000
- thumb_func_end sub_809F43C
-
- thumb_func_start sub_809F5F8
-sub_809F5F8: @ 809F5F8
- push {r4,lr}
- ldr r2, _0809F61C @ =gSharedMem + 0x18000
- adds r4, r2, 0
- adds r4, 0x74
- ldrb r0, [r4]
- cmp r0, 0
- beq _0809F624
- ldr r0, _0809F620 @ =gUnknown_083C1588
- ldrb r1, [r2, 0xB]
- lsls r1, 2
- adds r1, r0
- adds r0, r2, 0
- adds r0, 0x10
- ldr r1, [r1]
- bl _call_via_r1
- movs r0, 0x1
- b _0809F634
- .align 2, 0
-_0809F61C: .4byte gSharedMem + 0x18000
-_0809F620: .4byte gUnknown_083C1588
-_0809F624:
- adds r0, r2, 0
- adds r0, 0x10
- bl sub_809FAC8
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- movs r0, 0
-_0809F634:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_809F5F8
-
- thumb_func_start sub_809F63C
-sub_809F63C: @ 809F63C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_809FE80
- adds r0, r4, 0
- bl sub_809FC34
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_809F63C
-
- thumb_func_start sub_809F650
-sub_809F650: @ 809F650
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80A00A4
- adds r0, r4, 0
- bl sub_809FF64
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_809F650
-
- thumb_func_start sub_809F664
-sub_809F664: @ 809F664
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80A0390
- adds r0, r4, 0
- bl sub_80A015C
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_809F664
-
- thumb_func_start sub_809F678
-sub_809F678: @ 809F678
- push {lr}
- adds r3, r0, 0
- ldr r1, _0809F698 @ =gSharedMem + 0x18000
- ldrb r0, [r1, 0xE]
- cmp r0, 0
- bne _0809F69C
- ldr r2, [r1]
- ldrb r1, [r1, 0x9]
- movs r0, 0x64
- muls r1, r0
- adds r1, r2
- adds r0, r3, 0
- movs r2, 0x64
- bl memcpy
- b _0809F6AE
- .align 2, 0
-_0809F698: .4byte gSharedMem + 0x18000
-_0809F69C:
- ldr r0, [r1]
- ldrb r2, [r1, 0x9]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- adds r0, r1
- adds r1, r3, 0
- bl sub_803B4B4
-_0809F6AE:
- pop {r0}
- bx r0
- thumb_func_end sub_809F678
-
- thumb_func_start sub_809F6B4
-sub_809F6B4: @ 809F6B4
- push {r4-r7,lr}
- sub sp, 0xC
- adds r4, r0, 0
- adds r7, r1, 0
- ldrb r0, [r7]
- cmp r0, 0
- beq _0809F6D2
- cmp r0, 0x1
- beq _0809F718
- adds r0, r4, 0
- bl sub_80A1808
- lsls r0, 24
- lsrs r0, 24
- b _0809F756
-_0809F6D2:
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r6, r0, 0
- lsls r0, r5, 3
- ldr r1, _0809F70C @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _0809F710 @ =gMonFrontPicCoords
- lsls r2, r5, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- movs r3, 0x80
- lsls r3, 18
- ldr r4, _0809F714 @ =gUnknown_081FAF4C
- ldr r4, [r4, 0x4]
- str r4, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- bl HandleLoadSpecialPokePic
- b _0809F74E
- .align 2, 0
-_0809F70C: .4byte gMonFrontPicTable
-_0809F710: .4byte gMonFrontPicCoords
-_0809F714: .4byte gUnknown_081FAF4C
-_0809F718:
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r6, r0, 0
- adds r0, r4, 0
- movs r1, 0x1
- bl GetMonData
- adds r1, r0, 0
- adds r0, r5, 0
- adds r2, r6, 0
- bl GetMonSpritePalStructFromOtIdPersonality
- adds r4, r0, 0
- bl LoadCompressedObjectPalette
- ldrh r0, [r4, 0x4]
- movs r1, 0x1
- bl GetMonSpriteTemplate_803C56C
-_0809F74E:
- ldrb r0, [r7]
- adds r0, 0x1
- strb r0, [r7]
- movs r0, 0xFF
-_0809F756:
- add sp, 0xC
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_809F6B4
-
- thumb_func_start sub_809F760
-sub_809F760: @ 809F760
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- adds r2, r1, 0
- cmp r1, 0x1
- beq _0809F780
- cmp r1, 0x1
- bgt _0809F776
- cmp r1, 0
- beq _0809F77C
- b _0809F788
-_0809F776:
- cmp r2, 0x2
- beq _0809F784
- b _0809F788
-_0809F77C:
- movs r1, 0xD
- b _0809F78A
-_0809F780:
- movs r1, 0xE
- b _0809F78A
-_0809F784:
- movs r1, 0xF
- b _0809F78A
-_0809F788:
- movs r1, 0x10
-_0809F78A:
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_809F760
-
- thumb_func_start sub_809F798
-sub_809F798: @ 809F798
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- adds r2, r1, 0
- cmp r1, 0x1
- beq _0809F7B8
- cmp r1, 0x1
- bgt _0809F7AE
- cmp r1, 0
- beq _0809F7B4
- b _0809F7C0
-_0809F7AE:
- cmp r2, 0x2
- beq _0809F7BC
- b _0809F7C0
-_0809F7B4:
- movs r1, 0x11
- b _0809F7C2
-_0809F7B8:
- movs r1, 0x12
- b _0809F7C2
-_0809F7BC:
- movs r1, 0x13
- b _0809F7C2
-_0809F7C0:
- movs r1, 0x14
-_0809F7C2:
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_809F798
-
- thumb_func_start sub_809F7D0
-sub_809F7D0: @ 809F7D0
- push {r4,lr}
- sub sp, 0x64
- mov r0, sp
- bl sub_809F678
- ldr r4, _0809F804 @ =gSharedMem + 0x18000
- adds r0, r4, 0
- adds r0, 0x79
- ldrb r1, [r0]
- mov r0, sp
- bl sub_809F760
- lsls r0, 16
- lsrs r0, 16
- bl IsHMMove
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809F808
- ldrb r0, [r4, 0x8]
- cmp r0, 0x3
- beq _0809F808
- movs r0, 0
- b _0809F80A
- .align 2, 0
-_0809F804: .4byte gSharedMem + 0x18000
-_0809F808:
- movs r0, 0x1
-_0809F80A:
- add sp, 0x64
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_809F7D0
-
- thumb_func_start sub_809F814
-sub_809F814: @ 809F814
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r6, r0, 3
- ldr r0, _0809F83C @ =gTasks + 0x8
- mov r8, r0
- adds r4, r6, r0
- ldrh r1, [r4, 0x1C]
- movs r2, 0x1C
- ldrsh r0, [r4, r2]
- cmp r0, 0x3
- bgt _0809F840
- adds r0, r1, 0x1
- strh r0, [r4, 0x1C]
- b _0809F9C0
- .align 2, 0
-_0809F83C: .4byte gTasks + 0x8
-_0809F840:
- ldr r7, _0809F874 @ =gMain
- ldrh r1, [r7, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0809F880
- mov r0, r8
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0809F878 @ =sub_809E260
- str r1, [r0]
- movs r0, 0x4
- strh r0, [r4]
- movs r0, 0x1
- strh r0, [r4, 0x1A]
- ldr r2, _0809F87C @ =gSharedMem + 0x18000
- ldrh r0, [r4, 0x1E]
- adds r2, 0x79
- strb r0, [r2]
- movs r1, 0x1
- negs r1, r1
- adds r0, r5, 0
- bl sub_809E8F0
- b _0809F9C0
- .align 2, 0
-_0809F874: .4byte gMain
-_0809F878: .4byte sub_809E260
-_0809F87C: .4byte gSharedMem + 0x18000
-_0809F880:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0809F8B4
- mov r0, r8
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0809F8AC @ =sub_809E260
- str r1, [r0]
- movs r0, 0x4
- strh r0, [r4]
- movs r0, 0x1
- strh r0, [r4, 0x1A]
- ldr r2, _0809F8B0 @ =gSharedMem + 0x18000
- ldrh r0, [r4, 0x1E]
- adds r2, 0x79
- strb r0, [r2]
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_809E8F0
- b _0809F9C0
- .align 2, 0
-_0809F8AC: .4byte sub_809E260
-_0809F8B0: .4byte gSharedMem + 0x18000
-_0809F8B4:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0809F8C8
- bl sub_80F9284
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809F918
-_0809F8C8:
- ldr r1, _0809F90C @ =gSharedMem + 0x18000
- ldrb r0, [r1, 0xB]
- cmp r0, 0x2
- beq _0809F9C0
- cmp r0, 0x3
- bne _0809F8F4
- adds r0, r1, 0
- adds r0, 0x79
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _0809F8E8
- adds r0, r1, 0
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0
- beq _0809F8F4
-_0809F8E8:
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x9
- movs r3, 0x12
- bl MenuZeroFillWindowRect
-_0809F8F4:
- ldr r1, _0809F910 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _0809F914 @ =sub_809E260
- str r1, [r0]
- movs r1, 0x1
- negs r1, r1
- adds r0, r5, 0
- b _0809F972
- .align 2, 0
-_0809F90C: .4byte gSharedMem + 0x18000
-_0809F910: .4byte gTasks
-_0809F914: .4byte sub_809E260
-_0809F918:
- ldrh r1, [r7, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0809F92E
- bl sub_80F9284
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0809F994
-_0809F92E:
- ldr r1, _0809F988 @ =gSharedMem + 0x18000
- adds r2, r1, 0
- adds r2, 0x76
- ldrb r0, [r1, 0xB]
- ldrb r2, [r2]
- cmp r0, r2
- beq _0809F9C0
- cmp r0, 0x2
- bne _0809F960
- adds r0, r1, 0
- adds r0, 0x79
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _0809F954
- adds r0, r1, 0
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0
- beq _0809F960
-_0809F954:
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x9
- movs r3, 0x12
- bl MenuZeroFillWindowRect
-_0809F960:
- ldr r1, _0809F98C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _0809F990 @ =sub_809E260
- str r1, [r0]
- adds r0, r5, 0
- movs r1, 0x1
-_0809F972:
- bl SummaryScreenHandleLeftRightInput
- ldrb r1, [r4, 0x1E]
- movs r0, 0x1
- bl sub_80A1488
- ldrb r1, [r4, 0x1E]
- movs r0, 0x1
- bl sub_80A1654
- b _0809F9C0
- .align 2, 0
-_0809F988: .4byte gSharedMem + 0x18000
-_0809F98C: .4byte gTasks
-_0809F990: .4byte sub_809E260
-_0809F994:
- ldrh r1, [r7, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0809F9A6
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0809F9C0
-_0809F9A6:
- ldrb r1, [r4, 0x1E]
- movs r0, 0x2
- bl sub_80A1488
- ldrb r1, [r4, 0x1E]
- movs r0, 0x2
- bl sub_80A1654
- mov r0, r8
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0809F9CC @ =sub_809E260
- str r1, [r0]
-_0809F9C0:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809F9CC: .4byte sub_809E260
- thumb_func_end sub_809F814
-
- thumb_func_start sub_809F9D0
-sub_809F9D0: @ 809F9D0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r6, _0809FA24 @ =gTasks + 0x8
- adds r2, r4, r6
- movs r0, 0
- strh r0, [r2, 0x1C]
- strh r1, [r2, 0x1E]
- movs r5, 0x2
- negs r5, r5
- adds r0, r5, 0
- movs r1, 0x4
- bl sub_80A1488
- adds r0, r5, 0
- movs r1, 0x4
- bl sub_80A1654
- movs r0, 0xB
- movs r1, 0xF
- movs r2, 0x1C
- movs r3, 0x12
- bl MenuZeroFillWindowRect
- ldr r0, _0809FA28 @ =gOtherText_CantForgetHMs
- movs r1, 0xB
- movs r2, 0xF
- bl MenuPrint
- subs r6, 0x8
- adds r4, r6
- ldr r0, _0809FA2C @ =sub_809F814
- str r0, [r4]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809FA24: .4byte gTasks + 0x8
-_0809FA28: .4byte gOtherText_CantForgetHMs
-_0809FA2C: .4byte sub_809F814
- thumb_func_end sub_809F9D0
-
- thumb_func_start sub_809FA30
-sub_809FA30: @ 809FA30
- ldr r0, _0809FA38 @ =gSharedMem + 0x18000
- adds r0, 0x7A
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0809FA38: .4byte gSharedMem + 0x18000
- thumb_func_end sub_809FA30
-
- thumb_func_start GetStringCenterAlignXOffsetWithLetterSpacing
-GetStringCenterAlignXOffsetWithLetterSpacing: @ 809FA3C
- push {r4,lr}
- lsls r0, 24
- lsls r1, 24
- lsls r2, 24
- lsls r3, 24
- lsrs r2, 23
- lsrs r3, 18
- ldr r4, _0809FA70 @ =0x0600f000
- adds r3, r4
- adds r2, r3
- lsrs r1, 12
- lsrs r0, 23
- movs r4, 0x80
- lsls r4, 2
- adds r3, r4, 0
- adds r0, r3
- adds r1, r0
- adds r0, r1, 0
- adds r0, 0x80
- strh r0, [r2]
- adds r2, 0x40
- adds r1, 0x81
- strh r1, [r2]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809FA70: .4byte 0x0600f000
- thumb_func_end GetStringCenterAlignXOffsetWithLetterSpacing
-
- thumb_func_start GetStringCenterAlignXOffset
-GetStringCenterAlignXOffset: @ 809FA74
- push {r4,lr}
- adds r4, r1, 0
- adds r3, r2, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r3, 24
- lsrs r3, 24
- movs r1, 0xF
- adds r2, r4, 0
- bl GetStringCenterAlignXOffsetWithLetterSpacing
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end GetStringCenterAlignXOffset
-
- thumb_func_start sub_809FA94
-sub_809FA94: @ 809FA94
- push {lr}
- bl IsShiny
- lsls r0, 24
- cmp r0, 0
- beq _0809FAB4
- ldr r0, _0809FAB0 @ =gUnknown_083C157E
- movs r1, 0x4
- movs r2, 0x2
- bl LoadPalette
- movs r0, 0x1
- b _0809FAC0
- .align 2, 0
-_0809FAB0: .4byte gUnknown_083C157E
-_0809FAB4:
- ldr r0, _0809FAC4 @ =gUnknown_083C157C
- movs r1, 0x4
- movs r2, 0x2
- bl LoadPalette
- movs r0, 0
-_0809FAC0:
- pop {r1}
- bx r1
- .align 2, 0
-_0809FAC4: .4byte gUnknown_083C157C
- thumb_func_end sub_809FA94
-
- thumb_func_start sub_809FAC8
-sub_809FAC8: @ 809FAC8
- push {r4-r6,lr}
- sub sp, 0xC
- adds r5, r0, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- beq _0809FB28
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0x4
- movs r3, 0x3
- bl MenuZeroFillWindowRect
- movs r0, 0x3
- movs r1, 0x10
- movs r2, 0x9
- movs r3, 0x11
- bl MenuZeroFillWindowRect
- movs r0, 0
- movs r1, 0xC
- movs r2, 0xB
- movs r3, 0xF
- bl MenuZeroFillWindowRect
- ldr r4, _0809FB20 @ =gStringVar1
- adds r0, r5, 0
- adds r1, r4, 0
- bl GetMonNickname
- adds r0, r4, 0
- movs r1, 0xD
- movs r2, 0x3
- movs r3, 0x10
- bl sub_80A1FF8
- ldr r0, _0809FB24 @ =gUnknown_083C157C
- movs r1, 0x4
- movs r2, 0x2
- bl LoadPalette
- b _0809FBD6
- .align 2, 0
-_0809FB20: .4byte gStringVar1
-_0809FB24: .4byte gUnknown_083C157C
-_0809FB28:
- adds r0, r5, 0
- bl sub_809FA94
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl SpeciesToPokedexNum
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, _0809FB6C @ =0x0000ffff
- cmp r4, r0
- beq _0809FB96
- cmp r6, 0
- bne _0809FB70
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0x2
- bl GetStringCenterAlignXOffset
- movs r0, 0x11
- str r0, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r1, 0xD
- b _0809FB8C
- .align 2, 0
-_0809FB6C: .4byte 0x0000ffff
-_0809FB70:
- movs r0, 0x2
- movs r1, 0x8
- movs r2, 0x1
- movs r3, 0x2
- bl GetStringCenterAlignXOffsetWithLetterSpacing
- movs r0, 0x11
- str r0, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r1, 0x8
-_0809FB8C:
- movs r2, 0x3
- movs r3, 0x2
- bl sub_80A1F98
- b _0809FBA2
-_0809FB96:
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0x4
- movs r3, 0x3
- bl MenuZeroFillWindowRect
-_0809FBA2:
- ldr r1, _0809FBE0 @ =gStringVar1
- adds r0, r1, 0
- movs r1, 0xD
- bl sub_80A1E58
- adds r1, r0, 0
- adds r0, r5, 0
- bl GetMonNickname
- adds r1, r0, 0
- movs r0, 0xFC
- strb r0, [r1]
- movs r0, 0x13
- strb r0, [r1, 0x1]
- movs r0, 0x3C
- strb r0, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- ldr r0, _0809FBE0 @ =gStringVar1
- movs r1, 0x1
- movs r2, 0xC
- bl MenuPrint
- adds r0, r5, 0
- bl sub_80A0958
-_0809FBD6:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809FBE0: .4byte gStringVar1
- thumb_func_end sub_809FAC8
-
- thumb_func_start sub_809FBE4
-sub_809FBE4: @ 809FBE4
- push {r4,lr}
- movs r4, 0
-_0809FBE8:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80A1918
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1B
- bls _0809FBE8
- movs r0, 0xB
- movs r1, 0x4
- movs r2, 0x1D
- movs r3, 0x12
- bl MenuZeroFillWindowRect
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_809FBE4
-
- thumb_func_start sub_809FC0C
-sub_809FC0C: @ 809FC0C
- push {lr}
- ldr r0, _0809FC30 @ =gOtherText_Type2
- movs r1, 0xB
- movs r2, 0x6
- bl MenuPrint
- movs r0, 0
- movs r1, 0x16
- movs r2, 0x4
- bl GetStringCenterAlignXOffset
- movs r0, 0x2
- movs r1, 0x17
- movs r2, 0x4
- bl GetStringCenterAlignXOffset
- pop {r0}
- bx r0
- .align 2, 0
-_0809FC30: .4byte gOtherText_Type2
- thumb_func_end sub_809FC0C
-
- thumb_func_start sub_809FC34
-sub_809FC34: @ 809FC34
- push {r4-r6,lr}
- sub sp, 0xC
- adds r6, r0, 0
- movs r4, 0
-_0809FC3C:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80A1918
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x4
- bls _0809FC3C
- movs r0, 0xB
- movs r1, 0x9
- movs r2, 0x1C
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- adds r0, r6, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- beq _0809FD1C
- ldr r5, _0809FCD0 @ =gStringVar1
- adds r0, r5, 0
- movs r1, 0xD
- bl sub_80A1E58
- adds r5, r0, 0
- ldr r1, _0809FCD4 @ =gOtherText_OriginalTrainer
- bl StringCopy
- adds r5, r0, 0
- ldr r4, _0809FCD8 @ =gOtherText_FiveQuestionsAndSlash
- adds r1, r4, 0
- bl StringCopy
- adds r5, r0, 0
- movs r0, 0xFC
- strb r0, [r5]
- movs r0, 0x13
- strb r0, [r5, 0x1]
- movs r0, 0x4E
- strb r0, [r5, 0x2]
- movs r0, 0xFF
- strb r0, [r5, 0x3]
- ldr r0, _0809FCD0 @ =gStringVar1
- movs r1, 0xB
- movs r2, 0x4
- bl MenuPrint
- movs r0, 0x1
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0xD
- movs r2, 0xC1
- movs r3, 0x20
- bl sub_80A1EF8
- movs r0, 0x9
- movs r1, 0x78
- movs r2, 0x30
- movs r3, 0
- bl sub_80A198C
- adds r0, r6, 0
- movs r1, 0x20
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- adds r1, r0, 0
- cmp r0, 0x5
- bhi _0809FCE0
- ldr r0, _0809FCDC @ =gOtherText_EggAbout
- b _0809FCF2
- .align 2, 0
-_0809FCD0: .4byte gStringVar1
-_0809FCD4: .4byte gOtherText_OriginalTrainer
-_0809FCD8: .4byte gOtherText_FiveQuestionsAndSlash
-_0809FCDC: .4byte gOtherText_EggAbout
-_0809FCE0:
- cmp r0, 0xA
- bhi _0809FCEC
- ldr r0, _0809FCE8 @ =gOtherText_EggSoon
- b _0809FCF2
- .align 2, 0
-_0809FCE8: .4byte gOtherText_EggSoon
-_0809FCEC:
- cmp r1, 0x28
- bhi _0809FD00
- ldr r0, _0809FCFC @ =gOtherText_EggSomeTime
-_0809FCF2:
- movs r1, 0xB
- movs r2, 0x9
- bl MenuPrint
- b _0809FD0A
- .align 2, 0
-_0809FCFC: .4byte gOtherText_EggSomeTime
-_0809FD00:
- ldr r0, _0809FD18 @ =gOtherText_EggLongTime
- movs r1, 0xB
- movs r2, 0x9
- bl MenuPrint
-_0809FD0A:
- adds r0, r6, 0
- movs r1, 0xB
- movs r2, 0xE
- bl PokemonSummaryScreen_PrintEggTrainerMemo
- b _0809FE4C
- .align 2, 0
-_0809FD18: .4byte gOtherText_EggLongTime
-_0809FD1C:
- ldr r4, _0809FD64 @ =gStringVar2
- adds r0, r6, 0
- movs r1, 0x7
- adds r2, r4, 0
- bl GetMonData
- adds r0, r6, 0
- movs r1, 0x3
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl ConvertInternationalString
- ldr r5, _0809FD68 @ =gStringVar1
- adds r0, r5, 0
- movs r1, 0xD
- bl sub_80A1E58
- adds r5, r0, 0
- ldr r1, _0809FD6C @ =gOtherText_OriginalTrainer
- bl StringCopy
- adds r5, r0, 0
- adds r0, r6, 0
- movs r1, 0x31
- bl GetMonData
- cmp r0, 0
- bne _0809FD70
- adds r0, r5, 0
- movs r1, 0x9
- b _0809FD74
- .align 2, 0
-_0809FD64: .4byte gStringVar2
-_0809FD68: .4byte gStringVar1
-_0809FD6C: .4byte gOtherText_OriginalTrainer
-_0809FD70:
- adds r0, r5, 0
- movs r1, 0xA
-_0809FD74:
- bl sub_80A1E58
- adds r5, r0, 0
- ldr r1, _0809FE54 @ =gStringVar2
- adds r0, r5, 0
- bl StringCopy
- adds r5, r0, 0
- movs r0, 0xFC
- strb r0, [r5]
- movs r0, 0x13
- strb r0, [r5, 0x1]
- movs r0, 0x4E
- strb r0, [r5, 0x2]
- movs r0, 0xFF
- strb r0, [r5, 0x3]
- ldr r0, _0809FE58 @ =gStringVar1
- movs r1, 0xB
- movs r2, 0x4
- bl MenuPrint
- adds r0, r6, 0
- movs r1, 0x1
- bl GetMonData
- ldr r1, _0809FE5C @ =0x0000ffff
- ands r1, r0
- movs r0, 0xC1
- str r0, [sp]
- movs r0, 0x20
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- adds r0, r1, 0
- movs r1, 0xD
- movs r2, 0x5
- movs r3, 0x2
- bl sub_80A1F98
- adds r0, r6, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _0809FE60 @ =gBaseStats
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r5, r1, r2
- ldrb r4, [r5, 0x6]
- adds r0, r4, 0
- movs r1, 0x78
- movs r2, 0x30
- movs r3, 0
- bl sub_80A198C
- ldrb r0, [r5, 0x7]
- cmp r4, r0
- beq _0809FDF8
- ldrb r0, [r5, 0x7]
- movs r1, 0xA0
- movs r2, 0x30
- movs r3, 0x1
- bl sub_80A198C
-_0809FDF8:
- adds r0, r6, 0
- movs r1, 0xB
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r6, 0
- movs r1, 0x2E
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl GetAbilityBySpecies
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0xD
- muls r0, r4
- ldr r1, _0809FE64 @ =gAbilityNames
- adds r0, r1
- movs r1, 0xD
- movs r2, 0xB
- movs r3, 0x9
- bl sub_80A1FF8
- ldr r0, _0809FE68 @ =gAbilityDescriptions
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- movs r1, 0xB
- movs r2, 0xB
- bl MenuPrint
- adds r0, r6, 0
- movs r1, 0xB
- movs r2, 0xE
- bl PokemonSummaryScreen_PrintTrainerMemo
-_0809FE4C:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809FE54: .4byte gStringVar2
-_0809FE58: .4byte gStringVar1
-_0809FE5C: .4byte 0x0000ffff
-_0809FE60: .4byte gBaseStats
-_0809FE64: .4byte gAbilityNames
-_0809FE68: .4byte gAbilityDescriptions
- thumb_func_end sub_809FC34
-
- thumb_func_start sub_809FE6C
-sub_809FE6C: @ 809FE6C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_809FC0C
- adds r0, r4, 0
- bl sub_809FC34
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_809FE6C
-
- thumb_func_start sub_809FE80
-sub_809FE80: @ 809FE80
- push {lr}
- movs r0, 0xE
- movs r1, 0x4
- movs r2, 0x12
- movs r3, 0x5
- bl MenuZeroFillWindowRect
- movs r0, 0x19
- movs r1, 0x4
- movs r2, 0x1E
- movs r3, 0x5
- bl MenuZeroFillWindowRect
- movs r0, 0xB
- movs r1, 0x9
- movs r2, 0x1C
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- movs r0, 0xB
- movs r1, 0xE
- movs r2, 0x1C
- movs r3, 0x11
- bl MenuZeroFillWindowRect
- pop {r0}
- bx r0
- thumb_func_end sub_809FE80
-
- thumb_func_start sub_809FEB8
-sub_809FEB8: @ 809FEB8
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _0809FF40 @ =gOtherText_ExpPoints
- movs r1, 0xD
- movs r2, 0xB
- movs r3, 0xE
- bl sub_80A1FF8
- ldr r0, _0809FF44 @ =gOtherText_NextLv
- movs r1, 0xD
- movs r2, 0xB
- movs r3, 0x10
- bl sub_80A1FF8
- ldr r0, _0809FF48 @ =gOtherText_Terminator18
- movs r1, 0x15
- movs r2, 0x10
- bl MenuPrint
- ldr r0, _0809FF4C @ =gOtherText_HP
- movs r4, 0x2A
- str r4, [sp]
- movs r1, 0xD
- movs r2, 0xB
- movs r3, 0x7
- bl sub_80A1F48
- ldr r0, _0809FF50 @ =gOtherText_Attack
- str r4, [sp]
- movs r1, 0xD
- movs r2, 0xB
- movs r3, 0x9
- bl sub_80A1F48
- ldr r0, _0809FF54 @ =gOtherText_Defense
- str r4, [sp]
- movs r1, 0xD
- movs r2, 0xB
- movs r3, 0xB
- bl sub_80A1F48
- ldr r0, _0809FF58 @ =gOtherText_SpAtk
- movs r4, 0x24
- str r4, [sp]
- movs r1, 0xD
- movs r2, 0x16
- movs r3, 0x7
- bl sub_80A1F48
- ldr r0, _0809FF5C @ =gOtherText_SpDef
- str r4, [sp]
- movs r1, 0xD
- movs r2, 0x16
- movs r3, 0x9
- bl sub_80A1F48
- ldr r0, _0809FF60 @ =gOtherText_Speed
- str r4, [sp]
- movs r1, 0xD
- movs r2, 0x16
- movs r3, 0xB
- bl sub_80A1F48
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809FF40: .4byte gOtherText_ExpPoints
-_0809FF44: .4byte gOtherText_NextLv
-_0809FF48: .4byte gOtherText_Terminator18
-_0809FF4C: .4byte gOtherText_HP
-_0809FF50: .4byte gOtherText_Attack
-_0809FF54: .4byte gOtherText_Defense
-_0809FF58: .4byte gOtherText_SpAtk
-_0809FF5C: .4byte gOtherText_SpDef
-_0809FF60: .4byte gOtherText_Speed
- thumb_func_end sub_809FEB8
-
- thumb_func_start sub_809FF64
-sub_809FF64: @ 809FF64
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r4, 0
-_0809FF6A:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80A1918
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x4
- bls _0809FF6A
- adds r0, r5, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xB
- movs r2, 0x4
- bl sub_80A0BF4
- adds r0, r5, 0
- bl sub_80A0B88
- ldr r4, _080A008C @ =gStringVar1
- adds r0, r5, 0
- movs r1, 0x19
- bl GetMonData
- adds r1, r0, 0
- adds r0, r4, 0
- bl ConvertIntToDecimalString
- adds r0, r4, 0
- movs r1, 0x1D
- movs r2, 0xE
- bl MenuPrint_RightAligned
- adds r0, r5, 0
- movs r1, 0x17
- movs r2, 0x10
- bl sub_80A0C80
- adds r0, r5, 0
- movs r1, 0x3B
- bl GetMonData
- adds r1, r0, 0
- adds r0, r4, 0
- bl ConvertIntToDecimalString
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0x9
- movs r3, 0x32
- bl sub_8072BD8
- adds r0, r5, 0
- movs r1, 0x3C
- bl GetMonData
- adds r1, r0, 0
- adds r0, r4, 0
- bl ConvertIntToDecimalString
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0xB
- movs r3, 0x32
- bl sub_8072BD8
- adds r0, r5, 0
- movs r1, 0x3E
- bl GetMonData
- adds r1, r0, 0
- adds r0, r4, 0
- bl ConvertIntToDecimalString
- adds r0, r4, 0
- movs r1, 0x1B
- movs r2, 0x7
- movs r3, 0x12
- bl sub_8072BD8
- adds r0, r5, 0
- movs r1, 0x3F
- bl GetMonData
- adds r1, r0, 0
- adds r0, r4, 0
- bl ConvertIntToDecimalString
- adds r0, r4, 0
- movs r1, 0x1B
- movs r2, 0x9
- movs r3, 0x12
- bl sub_8072BD8
- adds r0, r5, 0
- movs r1, 0x3D
- bl GetMonData
- adds r1, r0, 0
- adds r0, r4, 0
- bl ConvertIntToDecimalString
- adds r0, r4, 0
- movs r1, 0x1B
- movs r2, 0xB
- movs r3, 0x12
- bl sub_8072BD8
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0x18
- movs r3, 0x1
- bl sub_8072C14
- adds r4, r0, 0
- movs r0, 0xBA
- strb r0, [r4]
- adds r4, 0x1
- adds r0, r5, 0
- movs r1, 0x3A
- bl GetMonData
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0x30
- movs r3, 0x1
- bl sub_8072C14
- ldr r0, _080A008C @ =gStringVar1
- movs r1, 0x7E
- movs r2, 0x38
- movs r3, 0x1
- bl MenuPrint_PixelCoords
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A008C: .4byte gStringVar1
- thumb_func_end sub_809FF64
-
- thumb_func_start sub_80A0090
-sub_80A0090: @ 80A0090
- push {r4,lr}
- adds r4, r0, 0
- bl sub_809FEB8
- adds r0, r4, 0
- bl sub_809FF64
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A0090
-
- thumb_func_start sub_80A00A4
-sub_80A00A4: @ 80A00A4
- push {lr}
- movs r0, 0xB
- movs r1, 0x4
- movs r2, 0x13
- movs r3, 0x5
- bl MenuZeroFillWindowRect
- movs r0, 0x10
- movs r1, 0x7
- movs r2, 0x15
- movs r3, 0x8
- bl MenuZeroFillWindowRect
- movs r0, 0x11
- movs r1, 0x9
- movs r2, 0x15
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- movs r0, 0x1B
- movs r1, 0x7
- movs r2, 0x1D
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- movs r0, 0x16
- movs r1, 0xE
- movs r2, 0x1C
- movs r3, 0xF
- bl MenuZeroFillWindowRect
- movs r0, 0x17
- movs r1, 0x10
- movs r2, 0x1C
- movs r3, 0x11
- bl MenuZeroFillWindowRect
- pop {r0}
- bx r0
- thumb_func_end sub_80A00A4
-
- thumb_func_start sub_80A00F4
-sub_80A00F4: @ 80A00F4
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r2, _080A012C @ =gSharedMem + 0x18000
- adds r0, r2, 0
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0
- bne _080A010A
- cmp r1, 0x4
- beq _080A0150
-_080A010A:
- ldrb r0, [r2, 0xB]
- cmp r0, 0x2
- bne _080A0138
- ldr r0, _080A0130 @ =gOtherText_Power2
- movs r1, 0xD
- movs r2, 0x1
- movs r3, 0xF
- bl sub_80A1FF8
- ldr r0, _080A0134 @ =gOtherText_Accuracy2
- movs r1, 0xD
- movs r2, 0x1
- movs r3, 0x11
- bl sub_80A1FF8
- b _080A0150
- .align 2, 0
-_080A012C: .4byte gSharedMem + 0x18000
-_080A0130: .4byte gOtherText_Power2
-_080A0134: .4byte gOtherText_Accuracy2
-_080A0138:
- ldr r0, _080A0154 @ =gOtherText_Appeal2
- movs r1, 0xD
- movs r2, 0x1
- movs r3, 0xF
- bl sub_80A1FF8
- ldr r0, _080A0158 @ =gOtherText_Jam2
- movs r1, 0xD
- movs r2, 0x1
- movs r3, 0x11
- bl sub_80A1FF8
-_080A0150:
- pop {r0}
- bx r0
- .align 2, 0
-_080A0154: .4byte gOtherText_Appeal2
-_080A0158: .4byte gOtherText_Jam2
- thumb_func_end sub_80A00F4
-
- thumb_func_start sub_80A015C
-sub_80A015C: @ 80A015C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r8, r0
- movs r7, 0
-_080A0168:
- mov r0, r8
- adds r1, r7, 0
- bl sub_809F760
- lsls r0, 16
- lsrs r6, r0, 16
- mov r0, r8
- adds r1, r7, 0
- bl sub_809F798
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- cmp r6, 0
- bne _080A01B8
- adds r0, r7, 0
- movs r1, 0x1
- bl sub_80A1918
- lsls r4, r7, 25
- movs r0, 0x80
- lsls r0, 19
- adds r4, r0
- lsrs r4, 24
- ldr r0, _080A01B0 @ =gOtherText_OneDash
- movs r1, 0xD
- movs r2, 0xF
- adds r3, r4, 0
- bl sub_80A1FF8
- ldr r0, _080A01B4 @ =gOtherText_TwoDashes
- movs r1, 0x1A
- adds r2, r4, 0
- bl MenuPrint
- b _080A0276
- .align 2, 0
-_080A01B0: .4byte gOtherText_OneDash
-_080A01B4: .4byte gOtherText_TwoDashes
-_080A01B8:
- ldr r0, _080A01E0 @ =gSharedMem + 0x18000
- ldrb r0, [r0, 0xB]
- cmp r0, 0x2
- bne _080A01E8
- ldr r1, _080A01E4 @ =gBattleMoves
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x2]
- lsls r4, r7, 1
- adds r2, r4, 0x4
- lsls r2, 27
- lsrs r2, 24
- movs r1, 0x57
- adds r3, r7, 0
- bl sub_80A198C
- b _080A020C
- .align 2, 0
-_080A01E0: .4byte gSharedMem + 0x18000
-_080A01E4: .4byte gBattleMoves
-_080A01E8:
- ldr r1, _080A0290 @ =gContestMoves
- lsls r0, r6, 3
- adds r0, r1
- ldrb r0, [r0, 0x1]
- lsls r0, 29
- lsrs r0, 5
- movs r1, 0x90
- lsls r1, 21
- adds r0, r1
- lsrs r0, 24
- lsls r4, r7, 1
- adds r2, r4, 0x4
- lsls r2, 27
- lsrs r2, 24
- movs r1, 0x57
- adds r3, r7, 0
- bl sub_80A198C
-_080A020C:
- movs r0, 0xD
- muls r0, r6
- ldr r1, _080A0294 @ =gMoveNames
- adds r0, r1
- adds r5, r4, 0x4
- lsls r5, 24
- lsrs r5, 24
- movs r1, 0xD
- movs r2, 0xF
- adds r3, r5, 0
- bl sub_80A1FF8
- movs r0, 0x1
- movs r1, 0x18
- adds r2, r5, 0
- bl GetStringCenterAlignXOffset
- mov r0, r8
- movs r1, 0x15
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r6, 0
- adds r2, r7, 0
- bl CalculatePPWithBonus
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080A0298 @ =gStringVar1
- adds r0, r1, 0
- mov r1, r9
- movs r2, 0xE
- movs r3, 0x1
- bl sub_8072C14
- adds r1, r0, 0
- movs r0, 0xBA
- strb r0, [r1]
- adds r1, 0x1
- adds r0, r1, 0
- adds r1, r4, 0
- movs r2, 0x20
- movs r3, 0x1
- bl sub_8072C14
- ldr r0, _080A0298 @ =gStringVar1
- movs r1, 0x19
- adds r2, r5, 0
- bl MenuPrint
-_080A0276:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x3
- bhi _080A0282
- b _080A0168
-_080A0282:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0290: .4byte gContestMoves
-_080A0294: .4byte gMoveNames
-_080A0298: .4byte gStringVar1
- thumb_func_end sub_80A015C
-
- thumb_func_start sub_80A029C
-sub_80A029C: @ 80A029C
- push {r4,r5,lr}
- ldr r1, _080A02B8 @ =gSharedMem + 0x18000
- adds r4, r1, 0
- adds r4, 0x7C
- ldrh r0, [r4]
- cmp r0, 0
- bne _080A02C0
- ldr r0, _080A02BC @ =gOtherText_CancelNoTerminator
- movs r1, 0xD
- movs r2, 0xF
- movs r3, 0xC
- bl sub_80A1FF8
- b _080A037E
- .align 2, 0
-_080A02B8: .4byte gSharedMem + 0x18000
-_080A02BC: .4byte gOtherText_CancelNoTerminator
-_080A02C0:
- ldrh r5, [r4]
- ldrb r0, [r1, 0xB]
- cmp r0, 0x2
- bne _080A02E4
- ldr r1, _080A02E0 @ =gBattleMoves
- lsls r4, r5, 1
- adds r0, r4, r5
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x2]
- movs r1, 0x57
- movs r2, 0x60
- movs r3, 0x4
- bl sub_80A198C
- b _080A0304
- .align 2, 0
-_080A02E0: .4byte gBattleMoves
-_080A02E4:
- ldr r1, _080A0320 @ =gContestMoves
- lsls r0, r5, 3
- adds r0, r1
- ldrb r0, [r0, 0x1]
- lsls r0, 29
- lsrs r0, 5
- movs r1, 0x90
- lsls r1, 21
- adds r0, r1
- lsrs r0, 24
- movs r1, 0x57
- movs r2, 0x60
- movs r3, 0x4
- bl sub_80A198C
- lsls r4, r5, 1
-_080A0304:
- ldr r0, _080A0324 @ =gSharedMem + 0x18000
- ldrb r0, [r0, 0xB]
- cmp r0, 0x2
- bne _080A032C
- movs r0, 0xD
- muls r0, r5
- ldr r1, _080A0328 @ =gMoveNames
- adds r0, r1
- movs r1, 0xA
- movs r2, 0xF
- movs r3, 0xC
- bl sub_80A1FF8
- b _080A033E
- .align 2, 0
-_080A0320: .4byte gContestMoves
-_080A0324: .4byte gSharedMem + 0x18000
-_080A0328: .4byte gMoveNames
-_080A032C:
- movs r0, 0xD
- muls r0, r5
- ldr r1, _080A0384 @ =gMoveNames
- adds r0, r1
- movs r1, 0x9
- movs r2, 0xF
- movs r3, 0xC
- bl sub_80A1FF8
-_080A033E:
- movs r0, 0x1
- movs r1, 0x18
- movs r2, 0xC
- bl GetStringCenterAlignXOffset
- ldr r2, _080A0388 @ =gStringVar1
- ldr r1, _080A038C @ =gBattleMoves
- adds r0, r4, r5
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x4]
- adds r0, r2, 0
- adds r1, r4, 0
- movs r2, 0xE
- movs r3, 0x1
- bl sub_8072C14
- adds r2, r0, 0
- movs r0, 0xBA
- strb r0, [r2]
- adds r2, 0x1
- adds r0, r2, 0
- adds r1, r4, 0
- movs r2, 0x20
- movs r3, 0x1
- bl sub_8072C14
- ldr r0, _080A0388 @ =gStringVar1
- movs r1, 0x19
- movs r2, 0xC
- bl MenuPrint
-_080A037E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0384: .4byte gMoveNames
-_080A0388: .4byte gStringVar1
-_080A038C: .4byte gBattleMoves
- thumb_func_end sub_80A029C
-
- thumb_func_start sub_80A0390
-sub_80A0390: @ 80A0390
- push {r4,lr}
- movs r4, 0
-_080A0394:
- lsls r3, r4, 1
- adds r1, r3, 0x4
- lsls r1, 24
- lsrs r1, 24
- adds r3, 0x5
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0xF
- movs r2, 0x1C
- bl MenuZeroFillWindowRect
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080A0394
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A0390
-
- thumb_func_start sub_80A03BC
-sub_80A03BC: @ 80A03BC
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x4
- beq _080A03D0
- bl sub_809F760
- lsls r0, 16
- lsrs r1, r0, 16
- b _080A03E0
-_080A03D0:
- ldr r0, _080A03E8 @ =gSharedMem + 0x18000
- adds r2, r0, 0
- adds r2, 0x7C
- ldrh r0, [r2]
- ldr r1, _080A03EC @ =0x0000ffff
- cmp r0, 0
- beq _080A03E0
- adds r1, r0, 0
-_080A03E0:
- adds r0, r1, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080A03E8: .4byte gSharedMem + 0x18000
-_080A03EC: .4byte 0x0000ffff
- thumb_func_end sub_80A03BC
-
- thumb_func_start sub_80A03F0
-sub_80A03F0: @ 80A03F0
- push {lr}
- ldrb r1, [r1]
- bl sub_80A03BC
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, _080A0414 @ =gSharedMem + 0x18000
- ldrb r0, [r0, 0xB]
- cmp r0, 0x2
- bne _080A041C
- adds r0, r1, 0
- bl sub_80A04CC
- ldr r0, _080A0418 @ =0x0000ffff
- bl sub_80A057C
- b _080A0422
- .align 2, 0
-_080A0414: .4byte gSharedMem + 0x18000
-_080A0418: .4byte 0x0000ffff
-_080A041C:
- adds r0, r1, 0
- bl sub_80A057C
-_080A0422:
- pop {r0}
- bx r0
- thumb_func_end sub_80A03F0
-
- thumb_func_start sub_80A0428
-sub_80A0428: @ 80A0428
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- ldrb r1, [r6]
- bl sub_80A03BC
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0xB
- movs r1, 0xF
- movs r2, 0x1C
- movs r3, 0x12
- bl MenuZeroFillWindowRect
- ldr r0, _080A0454 @ =gSharedMem + 0x18000
- ldrb r0, [r0, 0xB]
- cmp r0, 0x2
- bne _080A0458
- adds r0, r4, 0
- bl sub_80A046C
- b _080A045E
- .align 2, 0
-_080A0454: .4byte gSharedMem + 0x18000
-_080A0458:
- adds r0, r4, 0
- bl sub_80A0498
-_080A045E:
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_80A03F0
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80A0428
-
- thumb_func_start sub_80A046C
-sub_80A046C: @ 80A046C
- push {lr}
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, _080A0490 @ =0x0000ffff
- cmp r1, r0
- beq _080A048A
- ldr r0, _080A0494 @ =gMoveDescriptions
- subs r1, 0x1
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- movs r1, 0xB
- movs r2, 0xF
- bl MenuPrint
-_080A048A:
- pop {r0}
- bx r0
- .align 2, 0
-_080A0490: .4byte 0x0000ffff
-_080A0494: .4byte gMoveDescriptions
- thumb_func_end sub_80A046C
-
- thumb_func_start sub_80A0498
-sub_80A0498: @ 80A0498
- push {lr}
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r0, _080A04C0 @ =0x0000ffff
- cmp r3, r0
- beq _080A04BC
- ldr r2, _080A04C4 @ =gUnknown_083CADD4
- ldr r1, _080A04C8 @ =gContestMoves
- lsls r0, r3, 3
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- movs r1, 0xB
- movs r2, 0xF
- bl MenuPrint
-_080A04BC:
- pop {r0}
- bx r0
- .align 2, 0
-_080A04C0: .4byte 0x0000ffff
-_080A04C4: .4byte gUnknown_083CADD4
-_080A04C8: .4byte gContestMoves
- thumb_func_end sub_80A0498
-
- thumb_func_start sub_80A04CC
-sub_80A04CC: @ 80A04CC
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, _080A0504 @ =0x0000ffff
- cmp r4, r0
- beq _080A0572
- ldr r2, _080A0508 @ =gBattleMoves
- lsls r1, r4, 1
- adds r0, r1, r4
- lsls r0, 2
- adds r2, r0, r2
- ldrb r0, [r2, 0x1]
- adds r5, r1, 0
- cmp r0, 0x1
- bhi _080A0514
- ldr r0, _080A050C @ =gStringVar1
- ldr r1, _080A0510 @ =gOtherText_ThreeDashes2
- movs r2, 0x15
- movs r3, 0x1
- bl sub_8072C74
- ldr r0, _080A050C @ =gStringVar1
- movs r1, 0x7
- movs r2, 0xF
- bl MenuPrint
- b _080A052A
- .align 2, 0
-_080A0504: .4byte 0x0000ffff
-_080A0508: .4byte gBattleMoves
-_080A050C: .4byte gStringVar1
-_080A0510: .4byte gOtherText_ThreeDashes2
-_080A0514:
- ldr r0, _080A0550 @ =gStringVar1
- ldrb r1, [r2, 0x1]
- movs r2, 0x15
- movs r3, 0x1
- bl sub_8072C14
- ldr r0, _080A0550 @ =gStringVar1
- movs r1, 0x7
- movs r2, 0xF
- bl MenuPrint
-_080A052A:
- ldr r0, _080A0554 @ =gBattleMoves
- adds r1, r5, r4
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x3]
- cmp r0, 0
- bne _080A055C
- ldr r0, _080A0550 @ =gStringVar1
- ldr r1, _080A0558 @ =gOtherText_ThreeDashes2
- movs r2, 0x15
- movs r3, 0x1
- bl sub_8072C74
- ldr r0, _080A0550 @ =gStringVar1
- movs r1, 0x7
- movs r2, 0x11
- bl MenuPrint
- b _080A0572
- .align 2, 0
-_080A0550: .4byte gStringVar1
-_080A0554: .4byte gBattleMoves
-_080A0558: .4byte gOtherText_ThreeDashes2
-_080A055C:
- ldr r0, _080A0578 @ =gStringVar1
- ldrb r1, [r1, 0x3]
- movs r2, 0x15
- movs r3, 0x1
- bl sub_8072C14
- ldr r0, _080A0578 @ =gStringVar1
- movs r1, 0x7
- movs r2, 0x11
- bl MenuPrint
-_080A0572:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0578: .4byte gStringVar1
- thumb_func_end sub_80A04CC
-
- thumb_func_start sub_80A057C
-sub_80A057C: @ 80A057C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, _080A0648 @ =0x06006800
- mov r8, r0
- ldr r0, _080A064C @ =0x0000ffff
- cmp r5, r0
- beq _080A063A
- ldr r1, _080A0650 @ =gContestEffects
- ldr r2, _080A0654 @ =gContestMoves
- lsls r3, r5, 3
- adds r0, r3, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x1]
- mov r10, r2
- mov r9, r3
- cmp r4, 0xFF
- beq _080A05B8
- adds r0, r4, 0
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r4, r0, 24
-_080A05B8:
- movs r2, 0
- movs r7, 0x3
- movs r6, 0xF3
- lsls r6, 2
-_080A05C0:
- ldr r3, _080A0658 @ =0x00001039
- cmp r4, 0xFF
- beq _080A05CC
- cmp r2, r4
- bcs _080A05CC
- adds r3, 0x1
-_080A05CC:
- lsrs r0, r2, 2
- lsls r0, 5
- adds r1, r2, 0
- ands r1, r7
- adds r1, r0
- lsls r1, 1
- add r1, r8
- adds r1, r6
- strh r3, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x7
- bls _080A05C0
- ldr r0, _080A064C @ =0x0000ffff
- cmp r5, r0
- beq _080A063A
- mov r0, r9
- add r0, r10
- ldrb r0, [r0]
- lsls r0, 2
- ldr r1, _080A0650 @ =gContestEffects
- adds r0, r1
- ldrb r4, [r0, 0x2]
- cmp r4, 0xFF
- beq _080A060C
- adds r0, r4, 0
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r4, r0, 24
-_080A060C:
- movs r2, 0
- movs r6, 0x3
- ldr r5, _080A065C @ =0x0000044c
-_080A0612:
- ldr r3, _080A0660 @ =0x0000103d
- cmp r4, 0xFF
- beq _080A061E
- cmp r2, r4
- bcs _080A061E
- subs r3, 0x1
-_080A061E:
- lsrs r0, r2, 2
- lsls r0, 5
- adds r1, r2, 0
- ands r1, r6
- adds r1, r0
- lsls r1, 1
- add r1, r8
- adds r1, r5
- strh r3, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x7
- bls _080A0612
-_080A063A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0648: .4byte 0x06006800
-_080A064C: .4byte 0x0000ffff
-_080A0650: .4byte gContestEffects
-_080A0654: .4byte gContestMoves
-_080A0658: .4byte 0x00001039
-_080A065C: .4byte 0x0000044c
-_080A0660: .4byte 0x0000103d
- thumb_func_end sub_80A057C
-
- .section .text_80A0958
-
- thumb_func_start sub_80A0958
-sub_80A0958: @ 80A0958
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- mov r8, r0
- movs r1, 0xB
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r2, _080A0A24 @ =gStringVar1
- adds r0, r2, 0
- movs r1, 0xD
- bl sub_80A1E58
- adds r2, r0, 0
- movs r6, 0xFC
- strb r6, [r2]
- movs r0, 0x11
- strb r0, [r2, 0x1]
- movs r0, 0x7
- strb r0, [r2, 0x2]
- movs r0, 0xBA
- strb r0, [r2, 0x3]
- adds r2, 0x4
- movs r0, 0xB
- adds r1, r4, 0
- muls r1, r0
- ldr r0, _080A0A28 @ =gSpeciesNames
- adds r1, r0
- adds r0, r2, 0
- bl StringCopy
- adds r2, r0, 0
- strb r6, [r2]
- movs r0, 0x13
- mov r10, r0
- strb r0, [r2, 0x1]
- movs r0, 0x50
- strb r0, [r2, 0x2]
- movs r0, 0xFF
- mov r9, r0
- strb r0, [r2, 0x3]
- ldr r5, _080A0A24 @ =gStringVar1
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0xE
- bl MenuPrint
- movs r0, 0x3
- movs r1, 0x10
- movs r2, 0x9
- movs r3, 0x11
- bl MenuZeroFillWindowRect
- mov r0, r8
- movs r1, 0x38
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0xD
- bl sub_80A1E58
- adds r2, r0, 0
- movs r0, 0x34
- strb r0, [r2]
- adds r2, 0x1
- adds r0, r2, 0
- adds r1, r4, 0
- bl ConvertIntToDecimalString
- adds r2, r0, 0
- strb r6, [r2]
- mov r0, r10
- strb r0, [r2, 0x1]
- movs r0, 0x20
- strb r0, [r2, 0x2]
- mov r0, r9
- strb r0, [r2, 0x3]
- adds r0, r5, 0
- movs r1, 0x3
- movs r2, 0x10
- bl MenuPrint
- mov r0, r8
- movs r1, 0x7
- movs r2, 0x10
- bl sub_80A0A2C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0A24: .4byte gStringVar1
-_080A0A28: .4byte gSpeciesNames
- thumb_func_end sub_80A0958
-
- thumb_func_start sub_80A0A2C
-sub_80A0A2C: @ 80A0A2C
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r4, r2, 24
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x20
- beq _080A0A84
- cmp r0, 0x1D
- beq _080A0A84
- adds r0, r6, 0
- bl GetMonGender
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080A0A6E
- cmp r0, 0xFE
- beq _080A0A78
- adds r3, r4, 0x1
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
- adds r1, r4, 0
- adds r2, r5, 0
- bl MenuZeroFillWindowRect
- b _080A0A84
-_080A0A6E:
- ldr r0, _080A0A74 @ =gOtherText_MaleSymbol2
- movs r1, 0xB
- b _080A0A7C
- .align 2, 0
-_080A0A74: .4byte gOtherText_MaleSymbol2
-_080A0A78:
- ldr r0, _080A0A8C @ =gOtherText_FemaleSymbolAndLv
- movs r1, 0xC
-_080A0A7C:
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_80A1FF8
-_080A0A84:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0A8C: .4byte gOtherText_FemaleSymbolAndLv
- thumb_func_end sub_80A0A2C
-
- thumb_func_start sub_80A0A90
-sub_80A0A90: @ 80A0A90
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x32
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x33
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x34
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x35
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x36
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x43
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x44
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x45
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x46
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x47
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x48
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x49
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x4A
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x4B
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x4C
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x4D
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x4E
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80A0A90
-
- thumb_func_start sub_80A0B88
-sub_80A0B88: @ 80A0B88
- push {r4,r5,lr}
- bl sub_80A0A90
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080A0BA8
- ldr r0, _080A0BA0 @ =gStringVar1
- ldr r1, _080A0BA4 @ =gOtherText_None
- bl StringCopy
- b _080A0BD8
- .align 2, 0
-_080A0BA0: .4byte gStringVar1
-_080A0BA4: .4byte gOtherText_None
-_080A0BA8:
- ldr r4, _080A0BE8 @ =gStringVar1
- ldr r1, _080A0BEC @ =gOtherText_Ribbons00
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- bl StringLength
- lsls r0, 24
- lsrs r0, 24
- subs r4, 0x2
- adds r0, r4
- movs r1, 0xFC
- strb r1, [r0]
- movs r1, 0x14
- strb r1, [r0, 0x1]
- movs r1, 0x6
- strb r1, [r0, 0x2]
- adds r0, 0x3
- adds r1, r5, 0
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
-_080A0BD8:
- ldr r0, _080A0BF0 @ =gUnknown_083C15AE
- movs r1, 0x15
- movs r2, 0x4
- bl MenuPrint
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0BE8: .4byte gStringVar1
-_080A0BEC: .4byte gOtherText_Ribbons00
-_080A0BF0: .4byte gUnknown_083C15AE
- thumb_func_end sub_80A0B88
-
- thumb_func_start sub_80A0BF4
-sub_80A0BF4: @ 80A0BF4
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- cmp r5, 0xAF
- bne _080A0C48
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A0C48
- bl IsLinkDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A0C48
- ldr r0, _080A0C40 @ =gSharedMem + 0x18000
- ldrb r0, [r0, 0x9]
- cmp r0, 0x1
- beq _080A0C2E
- cmp r0, 0x4
- beq _080A0C2E
- cmp r0, 0x5
- bne _080A0C48
-_080A0C2E:
- ldr r4, _080A0C44 @ =gStringVar1
- adds r0, r5, 0
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- b _080A0C68
- .align 2, 0
-_080A0C40: .4byte gSharedMem + 0x18000
-_080A0C44: .4byte gStringVar1
-_080A0C48:
- cmp r5, 0
- bne _080A0C60
- ldr r0, _080A0C58 @ =gStringVar1
- ldr r1, _080A0C5C @ =gOtherText_None
- bl StringCopy
- b _080A0C68
- .align 2, 0
-_080A0C58: .4byte gStringVar1
-_080A0C5C: .4byte gOtherText_None
-_080A0C60:
- ldr r1, _080A0C78 @ =gStringVar1
- adds r0, r5, 0
- bl CopyItemName
-_080A0C68:
- ldr r0, _080A0C7C @ =gUnknown_083C15B4
- adds r1, r7, 0
- adds r2, r6, 0
- bl MenuPrint
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0C78: .4byte gStringVar1
-_080A0C7C: .4byte gUnknown_083C15B4
- thumb_func_end sub_80A0BF4
-
- thumb_func_start sub_80A0C80
-sub_80A0C80: @ 80A0C80
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp]
- movs r0, 0
- mov r9, r0
- movs r6, 0
- movs r7, 0
- adds r0, r4, 0
- movs r1, 0x19
- bl GetMonData
- mov r8, r0
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r5, 0x63
- bhi _080A0D14
- ldr r3, _080A0D4C @ =gExperienceTables
- adds r1, r5, 0x1
- lsls r1, 2
- ldr r2, _080A0D50 @ =gBaseStats
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- adds r0, r2
- ldrb r2, [r0, 0x13]
- movs r0, 0xCA
- lsls r0, 1
- muls r2, r0
- adds r1, r2
- adds r1, r3
- ldr r1, [r1]
- mov r0, r8
- subs r0, r1, r0
- mov r9, r0
- lsls r0, r5, 2
- adds r0, r2
- adds r0, r3
- ldr r0, [r0]
- subs r1, r0
- mov r2, r8
- subs r4, r2, r0
- lsls r0, r4, 6
- bl __udivsi3
- adds r6, r0, 0
- movs r7, 0
- adds r0, r7, 0
- orrs r0, r6
- cmp r0, 0
- bne _080A0D14
- cmp r4, 0
- beq _080A0D14
- movs r6, 0x1
- movs r7, 0
-_080A0D14:
- ldr r4, _080A0D54 @ =gStringVar1
- adds r0, r4, 0
- mov r1, r9
- bl ConvertIntToDecimalString
- mov r1, r10
- adds r1, 0x6
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- ldr r2, [sp]
- bl MenuPrint_RightAligned
- ldr r0, _080A0D58 @ =0x06004caa
- mov r9, r0
- movs r2, 0
- mov r12, r2
- ldr r0, _080A0D5C @ =0x00002062
- mov r8, r0
-_080A0D3A:
- cmp r7, 0
- bgt _080A0D46
- cmp r7, 0
- bne _080A0D64
- cmp r6, 0x7
- bls _080A0D64
-_080A0D46:
- ldr r1, _080A0D60 @ =0x0000206a
- b _080A0D96
- .align 2, 0
-_080A0D4C: .4byte gExperienceTables
-_080A0D50: .4byte gBaseStats
-_080A0D54: .4byte gStringVar1
-_080A0D58: .4byte 0x06004caa
-_080A0D5C: .4byte 0x00002062
-_080A0D60: .4byte 0x0000206a
-_080A0D64:
- adds r5, r7, 0
- adds r4, r6, 0
- cmp r7, 0
- bge _080A0D74
- movs r4, 0x7
- movs r5, 0
- adds r4, r6
- adcs r5, r7
-_080A0D74:
- lsls r3, r5, 29
- lsrs r2, r4, 3
- adds r0, r3, 0
- orrs r0, r2
- asrs r1, r5, 3
- lsrs r5, r0, 29
- lsls r4, r1, 3
- adds r3, r5, 0
- orrs r3, r4
- lsls r2, r0, 3
- adds r1, r7, 0
- adds r0, r6, 0
- subs r0, r2
- sbcs r1, r3
- add r0, r8
- lsls r0, 16
- lsrs r1, r0, 16
-_080A0D96:
- mov r2, r12
- lsls r0, r2, 1
- add r0, r9
- strh r1, [r0]
- movs r0, 0x8
- negs r0, r0
- asrs r1, r0, 31
- adds r6, r0
- adcs r7, r1
- cmp r7, 0
- bge _080A0DB0
- movs r6, 0
- movs r7, 0
-_080A0DB0:
- mov r0, r12
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- cmp r0, 0x7
- bls _080A0D3A
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80A0C80
-
- thumb_func_start sub_80A0DD0
-sub_80A0DD0: @ 80A0DD0
- push {r4,r5,lr}
- ldr r2, _080A0E3C @ =gStringVar1
- movs r5, 0xFC
- strb r5, [r2]
- movs r0, 0x12
- strb r0, [r2, 0x1]
- movs r0, 0x2
- strb r0, [r2, 0x2]
- adds r2, 0x3
- adds r0, r2, 0
- movs r1, 0xD
- bl sub_80A1E58
- adds r2, r0, 0
- ldr r1, _080A0E40 @ =gUnknown_083C1068
- ldr r4, _080A0E44 @ =gSharedMem + 0x18000
- adds r0, r4, 0
- adds r0, 0x7E
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r2, 0
- bl StringCopy
- adds r2, r0, 0
- strb r5, [r2]
- movs r0, 0x13
- strb r0, [r2, 0x1]
- movs r0, 0x58
- strb r0, [r2, 0x2]
- movs r0, 0xFF
- strb r0, [r2, 0x3]
- ldr r0, _080A0E3C @ =gStringVar1
- movs r1, 0
- movs r2, 0
- bl MenuPrint
- adds r4, 0x7F
- ldrb r0, [r4]
- cmp r0, 0
- beq _080A0E48
- movs r0, 0x5
- movs r1, 0x17
- movs r2, 0
- bl GetStringCenterAlignXOffset
- movs r0, 0x6
- movs r1, 0x18
- movs r2, 0
- bl GetStringCenterAlignXOffset
- b _080A0E54
- .align 2, 0
-_080A0E3C: .4byte gStringVar1
-_080A0E40: .4byte gUnknown_083C1068
-_080A0E44: .4byte gSharedMem + 0x18000
-_080A0E48:
- movs r0, 0x17
- movs r1, 0
- movs r2, 0x18
- movs r3, 0x1
- bl MenuZeroFillWindowRect
-_080A0E54:
- ldr r2, _080A0E98 @ =gStringVar1
- adds r0, r2, 0
- movs r1, 0xD
- bl sub_80A1E58
- adds r2, r0, 0
- ldr r1, _080A0E9C @ =gUnknown_083C1068
- ldr r0, _080A0EA0 @ =gSharedMem + 0x18000
- adds r0, 0x7F
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r2, 0
- bl StringCopy
- adds r2, r0, 0
- movs r0, 0xFC
- strb r0, [r2]
- movs r0, 0x13
- strb r0, [r2, 0x1]
- movs r0, 0x28
- strb r0, [r2, 0x2]
- movs r0, 0xFF
- strb r0, [r2, 0x3]
- ldr r0, _080A0E98 @ =gStringVar1
- movs r1, 0x19
- movs r2, 0
- bl MenuPrint
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0E98: .4byte gStringVar1
-_080A0E9C: .4byte gUnknown_083C1068
-_080A0EA0: .4byte gSharedMem + 0x18000
- thumb_func_end sub_80A0DD0
-
- thumb_func_start sub_80A0EA4
-sub_80A0EA4: @ 80A0EA4
- push {r4-r6,lr}
- adds r4, r0, 0
- ldr r5, _080A0ECC @ =0x0600e444
- ldr r6, _080A0ED0 @ =0x0600ec44
- movs r1, 0
- bl CheckPartyPokerus
- lsls r0, 24
- cmp r0, 0
- bne _080A0ED4
- adds r0, r4, 0
- movs r1, 0
- bl CheckPartyHasHadPokerus
- lsls r0, 24
- cmp r0, 0
- beq _080A0ED4
- movs r0, 0x2C
- b _080A0ED8
- .align 2, 0
-_080A0ECC: .4byte 0x0600e444
-_080A0ED0: .4byte 0x0600ec44
-_080A0ED4:
- ldr r1, _080A0EE4 @ =0x0000081a
- adds r0, r1, 0
-_080A0ED8:
- strh r0, [r5]
- strh r0, [r6]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0EE4: .4byte 0x0000081a
- thumb_func_end sub_80A0EA4
-
- thumb_func_start sub_80A0EE8
-sub_80A0EE8: @ 80A0EE8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- movs r3, 0
- ldr r6, _080A0F24 @ =gSharedMem + 0x18000
- adds r5, r6, 0
- ldr r1, _080A0F28 @ =0x00004040
- mov r8, r1
- ldr r2, _080A0F2C @ =0x0000404a
- mov r10, r2
-_080A0F02:
- adds r0, r5, 0
- adds r0, 0x75
- ldrb r0, [r0]
- cmp r3, r0
- bcs _080A0F30
- lsls r1, r3, 1
- lsls r0, r3, 2
- add r0, sp
- mov r4, r8
- strh r4, [r0]
- adds r1, 0x1
- lsls r1, 1
- mov r7, sp
- adds r0, r7, r1
- strh r4, [r0]
- b _080A0FE2
- .align 2, 0
-_080A0F24: .4byte gSharedMem + 0x18000
-_080A0F28: .4byte 0x00004040
-_080A0F2C: .4byte 0x0000404a
-_080A0F30:
- movs r0, 0x76
- adds r0, r6
- mov r12, r0
- ldrb r1, [r0]
- cmp r3, r1
- bls _080A0F52
- lsls r1, r3, 1
- lsls r0, r3, 2
- add r0, sp
- mov r2, r10
- strh r2, [r0]
- adds r1, 0x1
- lsls r1, 1
- mov r4, sp
- adds r0, r4, r1
- strh r2, [r0]
- b _080A0FE2
-_080A0F52:
- ldrb r4, [r5, 0xB]
- cmp r3, r4
- bcs _080A0F6E
- lsls r1, r3, 1
- lsls r0, r3, 2
- mov r7, sp
- adds r2, r7, r0
- ldr r0, _080A0F88 @ =0x00004046
- strh r0, [r2]
- adds r1, 0x1
- lsls r1, 1
- add r1, sp
- adds r0, 0x1
- strh r0, [r1]
-_080A0F6E:
- cmp r3, r4
- bne _080A0FA6
- mov r0, r12
- ldrb r0, [r0]
- cmp r3, r0
- beq _080A0F90
- lsls r1, r3, 1
- lsls r0, r3, 2
- mov r4, sp
- adds r2, r4, r0
- ldr r0, _080A0F8C @ =0x00004041
- b _080A0F9A
- .align 2, 0
-_080A0F88: .4byte 0x00004046
-_080A0F8C: .4byte 0x00004041
-_080A0F90:
- lsls r1, r3, 1
- lsls r0, r3, 2
- mov r7, sp
- adds r2, r7, r0
- ldr r0, _080A0FC4 @ =0x0000404b
-_080A0F9A:
- strh r0, [r2]
- adds r1, 0x1
- lsls r1, 1
- add r1, sp
- adds r0, 0x1
- strh r0, [r1]
-_080A0FA6:
- ldrb r0, [r5, 0xB]
- cmp r3, r0
- bls _080A0FE2
- adds r0, r6, 0
- adds r0, 0x76
- ldrb r0, [r0]
- cmp r3, r0
- beq _080A0FCC
- lsls r1, r3, 1
- lsls r0, r3, 2
- mov r4, sp
- adds r2, r4, r0
- ldr r0, _080A0FC8 @ =0x00004043
- b _080A0FD6
- .align 2, 0
-_080A0FC4: .4byte 0x0000404b
-_080A0FC8: .4byte 0x00004043
-_080A0FCC:
- lsls r1, r3, 1
- lsls r0, r3, 2
- mov r7, sp
- adds r2, r7, r0
- ldr r0, _080A1034 @ =0x00004048
-_080A0FD6:
- strh r0, [r2]
- adds r1, 0x1
- lsls r1, 1
- add r1, sp
- adds r0, 0x1
- strh r0, [r1]
-_080A0FE2:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _080A0F02
- ldr r1, _080A1038 @ =0x0600e016
- ldr r0, _080A103C @ =0x040000d4
- mov r2, sp
- str r2, [r0]
- str r1, [r0, 0x4]
- ldr r1, _080A1040 @ =0x80000008
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- movs r3, 0
-_080A0FFE:
- lsls r0, r3, 1
- mov r4, sp
- adds r1, r4, r0
- ldrh r0, [r1]
- adds r0, 0x10
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x7
- bls _080A0FFE
- ldr r1, _080A1044 @ =0x0600e056
- ldr r0, _080A103C @ =0x040000d4
- str r4, [r0]
- str r1, [r0, 0x4]
- ldr r1, _080A1040 @ =0x80000008
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1034: .4byte 0x00004048
-_080A1038: .4byte 0x0600e016
-_080A103C: .4byte 0x040000d4
-_080A1040: .4byte 0x80000008
-_080A1044: .4byte 0x0600e056
- thumb_func_end sub_80A0EE8
-
- thumb_func_start sub_80A1048
-sub_80A1048: @ 80A1048
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- ldr r1, _080A10A0 @ =gTasks + 0x8
- adds r6, r0, r1
- ldrh r0, [r6]
- ldrh r1, [r6, 0x2]
- adds r0, r1
- strh r0, [r6, 0x2]
- lsls r0, 16
- cmp r0, 0
- bne _080A106E
- b _080A1224
-_080A106E:
- movs r5, 0x2
- ldrsh r2, [r6, r5]
- ldr r0, _080A10A4 @ =0x0000024a
- subs r0, r2
- lsls r0, 1
- ldr r1, _080A10A8 @ =gUnknown_08E73508
- adds r4, r0, r1
- ldr r5, _080A10AC @ =0x0600e480
- lsls r2, 1
- movs r0, 0x80
- lsls r0, 5
- adds r7, r1, 0
- cmp r2, r0
- bhi _080A10B4
- ldr r0, _080A10B0 @ =0x040000d4
- str r4, [r0]
- str r5, [r0, 0x4]
- lsrs r1, r2, 1
- movs r2, 0x80
- lsls r2, 24
- orrs r1, r2
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- b _080A10E0
- .align 2, 0
-_080A10A0: .4byte gTasks + 0x8
-_080A10A4: .4byte 0x0000024a
-_080A10A8: .4byte gUnknown_08E73508
-_080A10AC: .4byte 0x0600e480
-_080A10B0: .4byte 0x040000d4
-_080A10B4:
- ldr r3, _080A110C @ =0x040000d4
- str r4, [r3]
- str r5, [r3, 0x4]
- ldr r0, _080A1110 @ =0x80000800
- str r0, [r3, 0x8]
- ldr r0, [r3, 0x8]
- movs r0, 0x80
- lsls r0, 5
- adds r4, r0
- adds r5, r0
- ldr r1, _080A1114 @ =0xfffff000
- adds r2, r1
- cmp r2, r0
- bhi _080A10B4
- str r4, [r3]
- str r5, [r3, 0x4]
- lsrs r0, r2, 1
- movs r1, 0x80
- lsls r1, 24
- orrs r0, r1
- str r0, [r3, 0x8]
- ldr r0, [r3, 0x8]
-_080A10E0:
- movs r5, 0x2
- ldrsh r0, [r6, r5]
- ldr r1, _080A1118 @ =0x0000026a
- subs r1, r0
- lsls r1, 1
- adds r3, r1, r7
- ldr r4, _080A111C @ =0x0600e4c0
- lsls r1, r0, 1
- movs r0, 0x80
- lsls r0, 5
- cmp r1, r0
- bhi _080A1120
- ldr r0, _080A110C @ =0x040000d4
- str r3, [r0]
- str r4, [r0, 0x4]
- lsrs r1, 1
- movs r2, 0x80
- lsls r2, 24
- orrs r1, r2
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- b _080A114C
- .align 2, 0
-_080A110C: .4byte 0x040000d4
-_080A1110: .4byte 0x80000800
-_080A1114: .4byte 0xfffff000
-_080A1118: .4byte 0x0000026a
-_080A111C: .4byte 0x0600e4c0
-_080A1120:
- ldr r2, _080A1178 @ =0x040000d4
- str r3, [r2]
- str r4, [r2, 0x4]
- ldr r0, _080A117C @ =0x80000800
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r0, 0x80
- lsls r0, 5
- adds r3, r0
- adds r4, r0
- ldr r5, _080A1180 @ =0xfffff000
- adds r1, r5
- cmp r1, r0
- bhi _080A1120
- str r3, [r2]
- str r4, [r2, 0x4]
- lsrs r0, r1, 1
- movs r1, 0x80
- lsls r1, 24
- orrs r0, r1
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
-_080A114C:
- movs r1, 0x2
- ldrsh r0, [r6, r1]
- ldr r1, _080A1184 @ =0x0000024a
- subs r1, r0
- lsls r1, 1
- adds r3, r1, r7
- ldr r4, _080A1188 @ =0x0600ec80
- lsls r1, r0, 1
- movs r0, 0x80
- lsls r0, 5
- cmp r1, r0
- bhi _080A118C
- ldr r0, _080A1178 @ =0x040000d4
- str r3, [r0]
- str r4, [r0, 0x4]
- lsrs r1, 1
- movs r2, 0x80
- lsls r2, 24
- orrs r1, r2
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- b _080A11B8
- .align 2, 0
-_080A1178: .4byte 0x040000d4
-_080A117C: .4byte 0x80000800
-_080A1180: .4byte 0xfffff000
-_080A1184: .4byte 0x0000024a
-_080A1188: .4byte 0x0600ec80
-_080A118C:
- ldr r2, _080A11E4 @ =0x040000d4
- str r3, [r2]
- str r4, [r2, 0x4]
- ldr r0, _080A11E8 @ =0x80000800
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r0, 0x80
- lsls r0, 5
- adds r3, r0
- adds r4, r0
- ldr r5, _080A11EC @ =0xfffff000
- adds r1, r5
- cmp r1, r0
- bhi _080A118C
- str r3, [r2]
- str r4, [r2, 0x4]
- lsrs r0, r1, 1
- movs r1, 0x80
- lsls r1, 24
- orrs r0, r1
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
-_080A11B8:
- movs r1, 0x2
- ldrsh r0, [r6, r1]
- ldr r1, _080A11F0 @ =0x0000026a
- subs r1, r0
- lsls r1, 1
- adds r3, r1, r7
- ldr r4, _080A11F4 @ =0x0600ecc0
- lsls r1, r0, 1
- movs r0, 0x80
- lsls r0, 5
- cmp r1, r0
- bhi _080A11F8
- ldr r0, _080A11E4 @ =0x040000d4
- str r3, [r0]
- str r4, [r0, 0x4]
- lsrs r1, 1
- movs r2, 0x80
- lsls r2, 24
- orrs r1, r2
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- b _080A1224
- .align 2, 0
-_080A11E4: .4byte 0x040000d4
-_080A11E8: .4byte 0x80000800
-_080A11EC: .4byte 0xfffff000
-_080A11F0: .4byte 0x0000026a
-_080A11F4: .4byte 0x0600ecc0
-_080A11F8:
- ldr r2, _080A12B0 @ =0x040000d4
- str r3, [r2]
- str r4, [r2, 0x4]
- ldr r0, _080A12B4 @ =0x80000800
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r0, 0x80
- lsls r0, 5
- adds r3, r0
- adds r4, r0
- ldr r5, _080A12B8 @ =0xfffff000
- adds r1, r5
- cmp r1, r0
- bhi _080A11F8
- str r3, [r2]
- str r4, [r2, 0x4]
- lsrs r0, r1, 1
- movs r1, 0x80
- lsls r1, 24
- orrs r0, r1
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
-_080A1224:
- ldrb r4, [r6, 0x2]
- ldrh r7, [r6, 0x2]
- ldrh r0, [r6]
- mov r12, r0
- cmp r4, 0x9
- bhi _080A1272
- adds r3, r6, 0x4
- ldr r2, _080A12B0 @ =0x040000d4
- ldr r5, _080A12BC @ =0x80000001
-_080A1236:
- lsls r1, r4, 1
- ldr r6, _080A12C0 @ =0x0600e480
- adds r0, r1, r6
- str r3, [r2]
- str r0, [r2, 0x4]
- str r5, [r2, 0x8]
- ldr r0, [r2, 0x8]
- adds r6, 0x40
- adds r0, r1, r6
- str r3, [r2]
- str r0, [r2, 0x4]
- str r5, [r2, 0x8]
- ldr r0, [r2, 0x8]
- ldr r6, _080A12C4 @ =0x0600ec80
- adds r0, r1, r6
- str r3, [r2]
- str r0, [r2, 0x4]
- str r5, [r2, 0x8]
- ldr r0, [r2, 0x8]
- ldr r0, _080A12C8 @ =0x0600ecc0
- adds r1, r0
- str r3, [r2]
- str r1, [r2, 0x4]
- str r5, [r2, 0x8]
- ldr r0, [r2, 0x8]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x9
- bls _080A1236
-_080A1272:
- mov r1, r12
- lsls r0, r1, 16
- cmp r0, 0
- beq _080A1286
- lsls r0, r7, 16
- asrs r0, 16
- cmp r0, 0
- ble _080A1286
- cmp r0, 0x9
- ble _080A12A4
-_080A1286:
- lsls r0, r7, 16
- asrs r0, 16
- cmp r0, 0x9
- ble _080A129A
- ldr r0, _080A12CC @ =gOtherText_Status
- movs r1, 0xD
- movs r2, 0x1
- movs r3, 0x12
- bl sub_80A1FF8
-_080A129A:
- bl sub_80A1D18
- mov r0, r8
- bl DestroyTask
-_080A12A4:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A12B0: .4byte 0x040000d4
-_080A12B4: .4byte 0x80000800
-_080A12B8: .4byte 0xfffff000
-_080A12BC: .4byte 0x80000001
-_080A12C0: .4byte 0x0600e480
-_080A12C4: .4byte 0x0600ec80
-_080A12C8: .4byte 0x0600ecc0
-_080A12CC: .4byte gOtherText_Status
- thumb_func_end sub_80A1048
-
- thumb_func_start sub_80A12D0
-sub_80A12D0: @ 80A12D0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- movs r1, 0x12
- movs r2, 0x5
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- movs r0, 0x1D
- bl sub_80A18E4
- ldr r0, _080A1310 @ =sub_80A1048
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080A1314 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0, r1
- lsls r4, 24
- asrs r4, 24
- strh r4, [r1, 0x8]
- cmp r4, 0
- bge _080A1318
- movs r0, 0xA
- b _080A131A
- .align 2, 0
-_080A1310: .4byte sub_80A1048
-_080A1314: .4byte gTasks
-_080A1318:
- movs r0, 0
-_080A131A:
- strh r0, [r1, 0xA]
- ldr r0, _080A1330 @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0xC]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1330: .4byte gTasks
- thumb_func_end sub_80A12D0
-
- thumb_func_start sub_80A1334
-sub_80A1334: @ 80A1334
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r0, 2
- add r0, r10
- lsls r0, 3
- ldr r1, _080A13E4 @ =gTasks + 0x8
- adds r7, r0, r1
- ldrh r0, [r7]
- ldrh r1, [r7, 0x2]
- adds r0, r1
- strh r0, [r7, 0x2]
- lsls r0, 16
- asrs r1, r0, 16
- movs r0, 0
- cmp r1, 0
- blt _080A136A
- movs r0, 0xA
- cmp r1, 0xA
- bgt _080A136A
- ldrh r0, [r7, 0x2]
-_080A136A:
- lsls r0, 16
- asrs r2, r0, 16
- mov r9, r0
- cmp r2, 0
- ble _080A13A6
- movs r0, 0xA
- subs r0, r2
- lsls r0, 1
- ldr r1, _080A13E8 @ =0x06005b40
- adds r4, r0, r1
- movs r5, 0
- adds r6, r2, 0
- ldr r0, _080A13EC @ =0x001fffff
- mov r8, r0
-_080A1386:
- adds r0, r5, 0
- adds r0, 0xD
- lsls r0, 6
- ldr r1, _080A13F0 @ =gUnknown_08E73E88
- adds r0, r1
- adds r1, r4, 0
- mov r2, r8
- ands r2, r6
- bl CpuSet
- adds r4, 0x40
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x6
- bls _080A1386
-_080A13A6:
- mov r1, r9
- asrs r2, r1, 16
- cmp r2, 0x9
- bgt _080A13F4
- ldr r4, _080A13E8 @ =0x06005b40
- movs r5, 0
- mov r8, sp
- movs r0, 0xA
- subs r6, r0, r2
- ldr r0, _080A13EC @ =0x001fffff
- ands r6, r0
- movs r0, 0x80
- lsls r0, 17
- mov r9, r0
-_080A13C2:
- ldrh r0, [r7, 0x4]
- mov r1, r8
- strh r0, [r1]
- mov r0, sp
- adds r1, r4, 0
- mov r2, r9
- orrs r2, r6
- bl CpuSet
- adds r4, 0x40
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x6
- bls _080A13C2
- b _080A1400
- .align 2, 0
-_080A13E4: .4byte gTasks + 0x8
-_080A13E8: .4byte 0x06005b40
-_080A13EC: .4byte 0x001fffff
-_080A13F0: .4byte gUnknown_08E73E88
-_080A13F4:
- movs r0, 0
- movs r1, 0x13
- movs r2, 0x9
- movs r3, 0x13
- bl MenuZeroFillWindowRect
-_080A1400:
- movs r1, 0
- ldrsh r0, [r7, r1]
- cmp r0, 0
- beq _080A1410
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- cmp r0, 0
- bge _080A144A
-_080A1410:
- ldr r4, _080A1480 @ =gSharedMem + 0x18000
- ldrb r0, [r4, 0xB]
- cmp r0, 0x2
- bne _080A1444
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x9
- movs r3, 0x12
- bl MenuZeroFillWindowRect
- adds r4, 0x10
- adds r0, r4, 0
- bl sub_80A0958
- adds r0, r4, 0
- bl GetMonStatusAndPokerus
- lsls r0, 24
- cmp r0, 0
- beq _080A1444
- ldr r0, _080A1484 @ =gOtherText_Status
- movs r1, 0xD
- movs r2, 0x1
- movs r3, 0x12
- bl sub_80A1FF8
-_080A1444:
- mov r0, r10
- bl DestroyTask
-_080A144A:
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- cmp r0, 0x9
- ble _080A1470
- ldr r4, _080A1480 @ =gSharedMem + 0x18000
- ldrb r0, [r4, 0xB]
- cmp r0, 0x2
- bne _080A1460
- ldrb r0, [r7, 0x6]
- bl sub_80A00F4
-_080A1460:
- adds r0, r4, 0
- adds r0, 0x10
- adds r1, r7, 0x6
- bl sub_80A0428
- mov r0, r10
- bl DestroyTask
-_080A1470:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1480: .4byte gSharedMem + 0x18000
-_080A1484: .4byte gOtherText_Status
- thumb_func_end sub_80A1334
-
- thumb_func_start sub_80A1488
-sub_80A1488: @ 80A1488
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r0, _080A14DC @ =gSharedMem + 0x18000
- ldrb r0, [r0, 0xB]
- cmp r0, 0x2
- bne _080A14A6
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x9
- movs r3, 0x13
- bl MenuZeroFillWindowRect
-_080A14A6:
- ldr r5, _080A14E0 @ =sub_80A1334
- adds r0, r5, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xFF
- bne _080A14C2
- adds r0, r5, 0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r4, r0, 24
-_080A14C2:
- ldr r1, _080A14E4 @ =gTasks
- lsls r2, r4, 2
- adds r0, r2, r4
- lsls r0, 3
- adds r3, r0, r1
- lsls r0, r6, 24
- asrs r0, 24
- strh r0, [r3, 0x8]
- cmp r0, 0
- bge _080A14E8
- movs r0, 0xA
- b _080A14EA
- .align 2, 0
-_080A14DC: .4byte gSharedMem + 0x18000
-_080A14E0: .4byte sub_80A1334
-_080A14E4: .4byte gTasks
-_080A14E8:
- movs r0, 0
-_080A14EA:
- strh r0, [r3, 0xA]
- adds r0, r2, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0xC]
- strh r7, [r0, 0xE]
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80A1488
-
- thumb_func_start sub_80A1500
-sub_80A1500: @ 80A1500
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r0, 2
- add r0, r10
- lsls r0, 3
- ldr r1, _080A15B0 @ =gTasks + 0x8
- adds r7, r0, r1
- ldrh r0, [r7]
- ldrh r1, [r7, 0x2]
- adds r0, r1
- strh r0, [r7, 0x2]
- lsls r0, 16
- asrs r1, r0, 16
- movs r0, 0
- cmp r1, 0
- blt _080A1536
- movs r0, 0xA
- cmp r1, 0xA
- bgt _080A1536
- ldrh r0, [r7, 0x2]
-_080A1536:
- lsls r0, 16
- asrs r2, r0, 16
- mov r9, r0
- cmp r2, 0
- ble _080A1572
- movs r0, 0xA
- subs r0, r2
- lsls r0, 1
- ldr r1, _080A15B4 @ =0x06006b40
- adds r4, r0, r1
- movs r5, 0
- adds r6, r2, 0
- ldr r0, _080A15B8 @ =0x001fffff
- mov r8, r0
-_080A1552:
- adds r0, r5, 0
- adds r0, 0xD
- lsls r0, 6
- ldr r1, _080A15BC @ =gUnknown_08E74688
- adds r0, r1
- adds r1, r4, 0
- mov r2, r8
- ands r2, r6
- bl CpuSet
- adds r4, 0x40
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x6
- bls _080A1552
-_080A1572:
- mov r1, r9
- asrs r2, r1, 16
- cmp r2, 0x9
- bgt _080A15C0
- ldr r4, _080A15B4 @ =0x06006b40
- movs r5, 0
- mov r8, sp
- movs r0, 0xA
- subs r6, r0, r2
- ldr r0, _080A15B8 @ =0x001fffff
- ands r6, r0
- movs r0, 0x80
- lsls r0, 17
- mov r9, r0
-_080A158E:
- ldrh r0, [r7, 0x4]
- mov r1, r8
- strh r0, [r1]
- mov r0, sp
- adds r1, r4, 0
- mov r2, r9
- orrs r2, r6
- bl CpuSet
- adds r4, 0x40
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x6
- bls _080A158E
- b _080A15CC
- .align 2, 0
-_080A15B0: .4byte gTasks + 0x8
-_080A15B4: .4byte 0x06006b40
-_080A15B8: .4byte 0x001fffff
-_080A15BC: .4byte gUnknown_08E74688
-_080A15C0:
- movs r0, 0
- movs r1, 0x13
- movs r2, 0x9
- movs r3, 0x13
- bl MenuZeroFillWindowRect
-_080A15CC:
- movs r1, 0
- ldrsh r0, [r7, r1]
- cmp r0, 0
- beq _080A15DC
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- cmp r0, 0
- bge _080A1616
-_080A15DC:
- ldr r4, _080A164C @ =gSharedMem + 0x18000
- ldrb r0, [r4, 0xB]
- cmp r0, 0x3
- bne _080A1610
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x9
- movs r3, 0x12
- bl MenuZeroFillWindowRect
- adds r4, 0x10
- adds r0, r4, 0
- bl sub_80A0958
- adds r0, r4, 0
- bl GetMonStatusAndPokerus
- lsls r0, 24
- cmp r0, 0
- beq _080A1610
- ldr r0, _080A1650 @ =gOtherText_Status
- movs r1, 0xD
- movs r2, 0x1
- movs r3, 0x12
- bl sub_80A1FF8
-_080A1610:
- mov r0, r10
- bl DestroyTask
-_080A1616:
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- cmp r0, 0x9
- ble _080A163C
- ldr r4, _080A164C @ =gSharedMem + 0x18000
- ldrb r0, [r4, 0xB]
- cmp r0, 0x3
- bne _080A162C
- ldrb r0, [r7, 0x6]
- bl sub_80A00F4
-_080A162C:
- adds r0, r4, 0
- adds r0, 0x10
- adds r1, r7, 0x6
- bl sub_80A0428
- mov r0, r10
- bl DestroyTask
-_080A163C:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A164C: .4byte gSharedMem + 0x18000
-_080A1650: .4byte gOtherText_Status
- thumb_func_end sub_80A1500
-
- thumb_func_start sub_80A1654
-sub_80A1654: @ 80A1654
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r0, _080A16A8 @ =gSharedMem + 0x18000
- ldrb r0, [r0, 0xB]
- cmp r0, 0x3
- bne _080A1672
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x9
- movs r3, 0x13
- bl MenuZeroFillWindowRect
-_080A1672:
- ldr r5, _080A16AC @ =sub_80A1500
- adds r0, r5, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xFF
- bne _080A168E
- adds r0, r5, 0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r4, r0, 24
-_080A168E:
- ldr r1, _080A16B0 @ =gTasks
- lsls r2, r4, 2
- adds r0, r2, r4
- lsls r0, 3
- adds r3, r0, r1
- lsls r0, r6, 24
- asrs r0, 24
- strh r0, [r3, 0x8]
- cmp r0, 0
- bge _080A16B4
- movs r0, 0xA
- b _080A16B6
- .align 2, 0
-_080A16A8: .4byte gSharedMem + 0x18000
-_080A16AC: .4byte sub_80A1500
-_080A16B0: .4byte gTasks
-_080A16B4:
- movs r0, 0
-_080A16B6:
- strh r0, [r3, 0xA]
- adds r0, r2, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0xC]
- strh r7, [r0, 0xE]
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80A1654
-
- thumb_func_start sub_80A16CC
-sub_80A16CC: @ 80A16CC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, _080A1724 @ =0x06006ad4
- mov r12, r0
- mov r1, r9
- cmp r1, 0
- bne _080A172C
- movs r5, 0
- ldr r7, _080A1728 @ =gUnknown_08E94510
- movs r0, 0x80
- lsls r0, 5
- adds r6, r0, 0
- movs r1, 0x40
- adds r1, r7
- mov r8, r1
-_080A16F4:
- lsls r2, r5, 1
- mov r0, r12
- adds r3, r2, r0
- adds r4, r2, r7
- ldrh r1, [r4]
- adds r0, r6, r1
- strh r0, [r3]
- adds r1, r3, 0
- adds r1, 0x40
- ldrh r4, [r4]
- adds r0, r6, r4
- strh r0, [r1]
- adds r3, 0x80
- add r2, r8
- ldrh r2, [r2]
- adds r0, r6, r2
- strh r0, [r3]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x13
- bls _080A16F4
- b _080A1768
- .align 2, 0
-_080A1724: .4byte 0x06006ad4
-_080A1728: .4byte gUnknown_08E94510
-_080A172C:
- movs r5, 0
- ldr r6, _080A17B0 @ =gUnknown_08E94550
- movs r7, 0x80
- lsls r7, 5
- adds r4, r7, 0
- movs r0, 0x40
- adds r0, r6
- mov r8, r0
-_080A173C:
- lsls r1, r5, 1
- mov r7, r12
- adds r2, r1, r7
- adds r0, r1, r6
- ldrh r0, [r0]
- adds r0, r4, r0
- strh r0, [r2]
- adds r3, r2, 0
- adds r3, 0x40
- add r1, r8
- ldrh r7, [r1]
- adds r0, r4, r7
- strh r0, [r3]
- adds r2, 0x80
- ldrh r1, [r1]
- adds r0, r4, r1
- strh r0, [r2]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x13
- bls _080A173C
-_080A1768:
- ldr r0, _080A17B4 @ =0x06005ad4
- mov r12, r0
- mov r1, r9
- cmp r1, 0
- bne _080A17BC
- movs r5, 0
- ldr r7, _080A17B8 @ =gUnknown_08E94510
- movs r0, 0xC0
- lsls r0, 6
- adds r6, r0, 0
- movs r1, 0x40
- adds r1, r7
- mov r8, r1
-_080A1782:
- lsls r2, r5, 1
- mov r0, r12
- adds r3, r2, r0
- adds r4, r2, r7
- ldrh r1, [r4]
- adds r0, r6, r1
- strh r0, [r3]
- adds r1, r3, 0
- adds r1, 0x40
- ldrh r4, [r4]
- adds r0, r6, r4
- strh r0, [r1]
- adds r3, 0x80
- add r2, r8
- ldrh r2, [r2]
- adds r0, r6, r2
- strh r0, [r3]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x13
- bls _080A1782
- b _080A17F8
- .align 2, 0
-_080A17B0: .4byte gUnknown_08E94550
-_080A17B4: .4byte 0x06005ad4
-_080A17B8: .4byte gUnknown_08E94510
-_080A17BC:
- movs r5, 0
- ldr r6, _080A1804 @ =gUnknown_08E94550
- movs r7, 0xC0
- lsls r7, 6
- adds r4, r7, 0
- movs r0, 0x40
- adds r0, r6
- mov r8, r0
-_080A17CC:
- lsls r1, r5, 1
- mov r7, r12
- adds r2, r1, r7
- adds r0, r1, r6
- ldrh r0, [r0]
- adds r0, r4, r0
- strh r0, [r2]
- adds r3, r2, 0
- adds r3, 0x40
- add r1, r8
- ldrh r7, [r1]
- adds r0, r4, r7
- strh r0, [r3]
- adds r2, 0x80
- ldrh r1, [r1]
- adds r0, r4, r1
- strh r0, [r2]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x13
- bls _080A17CC
-_080A17F8:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1804: .4byte gUnknown_08E94550
- thumb_func_end sub_80A16CC
-
- thumb_func_start sub_80A1808
-sub_80A1808: @ 80A1808
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r1, 0x41
- bl GetMonData
- adds r6, r0, 0
- lsls r6, 16
- lsrs r6, 16
- ldr r0, _080A1860 @ =gUnknown_02024E8C
- movs r1, 0x28
- movs r2, 0x40
- movs r3, 0x5
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r4, r0, 4
- add r4, r8
- lsls r4, 2
- ldr r5, _080A1864 @ =gSprites
- adds r7, r4, r5
- adds r0, r7, 0
- bl FreeSpriteOamMatrix
- strh r6, [r7, 0x2E]
- adds r5, 0x1C
- adds r4, r5
- ldr r0, _080A1868 @ =sub_80A1888
- str r0, [r4]
- adds r0, r6, 0
- bl IsPokeSpriteNotFlipped
- lsls r0, 24
- cmp r0, 0
- bne _080A186C
- adds r0, r7, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- b _080A187A
- .align 2, 0
-_080A1860: .4byte gUnknown_02024E8C
-_080A1864: .4byte gSprites
-_080A1868: .4byte sub_80A1888
-_080A186C:
- adds r2, r7, 0
- adds r2, 0x3F
- ldrb r1, [r2]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_080A187A:
- mov r0, r8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80A1808
-
- thumb_func_start sub_80A1888
-sub_80A1888: @ 80A1888
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080A18B8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080A18B0
- ldr r0, _080A18BC @ =SpriteCallbackDummy
- str r0, [r4, 0x1C]
- ldr r0, _080A18C0 @ =gSharedMem + 0x18010
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _080A18B0
- ldrh r0, [r4, 0x2E]
- movs r1, 0
- bl PlayCry1
-_080A18B0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A18B8: .4byte gPaletteFade
-_080A18BC: .4byte SpriteCallbackDummy
-_080A18C0: .4byte gSharedMem + 0x18010
- thumb_func_end sub_80A1888
-
- thumb_func_start sub_80A18C4
-sub_80A18C4: @ 80A18C4
- push {lr}
- movs r1, 0
- ldr r3, _080A18E0 @ =gSharedMem + 0x1A000
- movs r2, 0xFF
-_080A18CC:
- adds r0, r1, r3
- strb r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x1D
- bls _080A18CC
- pop {r0}
- bx r0
- .align 2, 0
-_080A18E0: .4byte gSharedMem + 0x1A000
- thumb_func_end sub_80A18C4
-
- thumb_func_start sub_80A18E4
-sub_80A18E4: @ 80A18E4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080A1910 @ =gSharedMem + 0x1A000
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _080A1908
- adds r1, r0, 0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080A1914 @ =gSprites
- adds r0, r1
- bl DestroySprite
- movs r0, 0xFF
- strb r0, [r4]
-_080A1908:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1910: .4byte gSharedMem + 0x1A000
-_080A1914: .4byte gSprites
- thumb_func_end sub_80A18E4
-
- thumb_func_start sub_80A1918
-sub_80A1918: @ 80A1918
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _080A1948 @ =gSprites
- ldr r2, _080A194C @ =gSharedMem + 0x1A000
- adds r0, r2
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- adds r2, 0x3E
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- bx lr
- .align 2, 0
-_080A1948: .4byte gSprites
-_080A194C: .4byte gSharedMem + 0x1A000
- thumb_func_end sub_80A1918
-
- thumb_func_start sub_80A1950
-sub_80A1950: @ 80A1950
- push {r4,r5,lr}
- movs r5, 0
-_080A1954:
- ldr r0, _080A1984 @ =gSharedMem + 0x1A000
- adds r4, r5, r0
- ldrb r0, [r4]
- cmp r0, 0xFF
- bne _080A196C
- ldr r0, _080A1988 @ =gSpriteTemplate_83C11C0
- movs r1, 0
- movs r2, 0
- movs r3, 0x2
- bl CreateSprite
- strb r0, [r4]
-_080A196C:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_80A1918
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x4
- bls _080A1954
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1984: .4byte gSharedMem + 0x1A000
-_080A1988: .4byte gSpriteTemplate_83C11C0
- thumb_func_end sub_80A1950
-
- thumb_func_start sub_80A198C
-sub_80A198C: @ 80A198C
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- mov r10, r3
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- mov r0, r10
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r1, _080A1A24 @ =gSharedMem + 0x1A000
- mov r8, r1
- add r8, r10
- mov r0, r8
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080A1A28 @ =gSprites
- mov r9, r1
- add r0, r9
- adds r1, r4, 0
- bl StartSpriteAnim
- mov r1, r8
- ldrb r0, [r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r9
- ldr r0, _080A1A2C @ =gUnknown_083C11D8
- adds r4, r0
- ldrb r2, [r4]
- lsls r2, 4
- ldrb r3, [r1, 0x5]
- movs r0, 0xF
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x5]
- mov r0, r8
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r9
- adds r5, 0x10
- strh r5, [r0, 0x20]
- mov r0, r8
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r9
- adds r6, 0x8
- strh r6, [r0, 0x22]
- mov r0, r10
- movs r1, 0
- bl sub_80A1918
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1A24: .4byte gSharedMem + 0x1A000
-_080A1A28: .4byte gSprites
-_080A1A2C: .4byte gUnknown_083C11D8
- thumb_func_end sub_80A198C
-
- thumb_func_start sub_80A1A30
-sub_80A1A30: @ 80A1A30
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0
- mov r9, r0
- ldr r1, _080A1A98 @ =gSharedMem + 0x18000
- ldrb r0, [r1, 0xB]
- cmp r0, 0x1
- bls _080A1B0A
- cmp r4, 0x9
- bne _080A1A52
- movs r3, 0x1
- mov r9, r3
-_080A1A52:
- movs r5, 0
- movs r0, 0x80
- lsls r0, 6
- adds r0, r1
- mov r8, r0
- ldr r6, _080A1A9C @ =gSprites
- mov r10, r5
-_080A1A60:
- lsls r1, r5, 20
- movs r3, 0xB0
- lsls r3, 15
- adds r1, r3
- asrs r1, 16
- ldr r0, _080A1AA0 @ =gSpriteTemplate_83C1280
- movs r2, 0x28
- mov r3, r9
- bl CreateSprite
- adds r1, r4, r5
- mov r3, r8
- adds r2, r1, r3
- strb r0, [r2]
- adds r7, r1, 0
- cmp r5, 0
- bne _080A1AA4
- adds r0, r4, r3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x4
- bl StartSpriteAnim
- b _080A1AD0
- .align 2, 0
-_080A1A98: .4byte gSharedMem + 0x18000
-_080A1A9C: .4byte gSprites
-_080A1AA0: .4byte gSpriteTemplate_83C1280
-_080A1AA4:
- cmp r5, 0x9
- bne _080A1AC0
- adds r0, r4, 0
- adds r0, 0x9
- add r0, r8
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x5
- bl StartSpriteAnim
- b _080A1AD0
-_080A1AC0:
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x6
- bl StartSpriteAnim
-_080A1AD0:
- mov r0, r8
- adds r2, r7, r0
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r6, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _080A1B18 @ =sub_80A1BC0
- str r1, [r0]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r4, [r0, 0x2E]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- mov r1, r10
- strh r1, [r0, 0x30]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x9
- bls _080A1A60
-_080A1B0A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1B18: .4byte sub_80A1BC0
- thumb_func_end sub_80A1A30
-
- thumb_func_start sub_80A1B1C
-sub_80A1B1C: @ 80A1B1C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
-_080A1B24:
- adds r0, r5, r4
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A18E4
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x9
- bls _080A1B24
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A1B1C
-
- thumb_func_start sub_80A1B40
-sub_80A1B40: @ 80A1B40
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, r7, 1
- adds r1, r7
- lsls r1, 24
- ldr r0, _080A1BB4 @ =gSharedMem + 0x1A009
- ldrb r2, [r0]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- ldr r2, _080A1BB8 @ =gSprites
- adds r0, r2
- lsrs r7, r1, 24
- movs r2, 0x80
- lsls r2, 19
- adds r1, r2
- lsrs r1, 24
- bl StartSpriteAnim
- movs r4, 0
- adds r0, r7, 0x6
- lsls r0, 24
- mov r8, r0
-_080A1B74:
- ldr r6, _080A1BBC @ =gSharedMem + 0x1A00A
- adds r0, r4, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r5, _080A1BB8 @ =gSprites
- adds r0, r5
- mov r2, r8
- lsrs r1, r2, 24
- bl StartSpriteAnim
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _080A1B74
- ldrb r1, [r6, 0x8]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r1, r7, 0x5
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1BB4: .4byte gSharedMem + 0x1A009
-_080A1BB8: .4byte gSprites
-_080A1BBC: .4byte gSharedMem + 0x1A00A
- thumb_func_end sub_80A1B40
-
- thumb_func_start sub_80A1BC0
-sub_80A1BC0: @ 80A1BC0
- push {lr}
- adds r2, r0, 0
- adds r0, 0x2A
- ldrb r0, [r0]
- subs r0, 0x4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bhi _080A1BF8
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- movs r1, 0x1F
- ands r0, r1
- strh r0, [r2, 0x30]
- cmp r0, 0x18
- ble _080A1BEC
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- b _080A1C06
-_080A1BEC:
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r0, 0x5
- negs r0, r0
- b _080A1C04
-_080A1BF8:
- movs r0, 0
- strh r0, [r2, 0x30]
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- subs r0, 0x5
-_080A1C04:
- ands r0, r1
-_080A1C06:
- strb r0, [r3]
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0x9
- bne _080A1C1C
- ldr r0, _080A1C18 @ =gSharedMem + 0x18000
- adds r0, 0x79
- b _080A1C20
- .align 2, 0
-_080A1C18: .4byte gSharedMem + 0x18000
-_080A1C1C:
- ldr r0, _080A1C2C @ =gSharedMem + 0x18000
- adds r0, 0x7A
-_080A1C20:
- ldrb r0, [r0]
- lsls r0, 4
- strh r0, [r2, 0x26]
- pop {r0}
- bx r0
- .align 2, 0
-_080A1C2C: .4byte gSharedMem + 0x18000
- thumb_func_end sub_80A1BC0
-
- thumb_func_start sub_80A1C30
-sub_80A1C30: @ 80A1C30
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 25
- lsrs r3, r0, 24
- adds r4, r3, 0
- adds r0, r3, 0
- adds r0, 0xA
- cmp r3, r0
- bge _080A1C82
- ldr r5, _080A1C88 @ =gSprites
- movs r7, 0x5
- negs r7, r7
- ldr r6, _080A1C8C @ =gSharedMem + 0x1A009
-_080A1C50:
- adds r2, r3, r6
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0
- strh r1, [r0, 0x30]
- ldrb r0, [r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r7, 0
- ands r0, r2
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r4, 0
- adds r0, 0xA
- cmp r3, r0
- blt _080A1C50
-_080A1C82:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1C88: .4byte gSprites
-_080A1C8C: .4byte gSharedMem + 0x1A009
- thumb_func_end sub_80A1C30
-
- thumb_func_start pokemon_ailments_get_primary
-pokemon_ailments_get_primary: @ 80A1C90
- push {lr}
- adds r1, r0, 0
- movs r0, 0x88
- ands r0, r1
- cmp r0, 0
- beq _080A1CA0
- movs r0, 0x1
- b _080A1CD2
-_080A1CA0:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080A1CAC
- movs r0, 0x2
- b _080A1CD2
-_080A1CAC:
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- beq _080A1CB8
- movs r0, 0x3
- b _080A1CD2
-_080A1CB8:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080A1CC4
- movs r0, 0x4
- b _080A1CD2
-_080A1CC4:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _080A1CD0
- movs r0, 0
- b _080A1CD2
-_080A1CD0:
- movs r0, 0x5
-_080A1CD2:
- pop {r1}
- bx r1
- thumb_func_end pokemon_ailments_get_primary
-
- thumb_func_start GetMonStatusAndPokerus
-GetMonStatusAndPokerus: @ 80A1CD8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _080A1CEA
- movs r0, 0x7
- b _080A1D12
-_080A1CEA:
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- bl pokemon_ailments_get_primary
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080A1D12
- adds r0, r4, 0
- movs r1, 0
- bl CheckPartyPokerus
- lsls r0, 24
- cmp r0, 0
- bne _080A1D10
- movs r0, 0
- b _080A1D12
-_080A1D10:
- movs r0, 0x6
-_080A1D12:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetMonStatusAndPokerus
-
- thumb_func_start sub_80A1D18
-sub_80A1D18: @ 80A1D18
- push {r4,r5,lr}
- sub sp, 0x64
- mov r0, sp
- bl sub_809F678
- mov r0, sp
- bl GetMonStatusAndPokerus
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080A1D58
- subs r0, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080A1D50 @ =gSharedMem + 0x1A01D
- ldrb r0, [r4]
- cmp r0, 0xFF
- bne _080A1D60
- ldr r0, _080A1D54 @ =gSpriteTemplate_83C1304
- movs r1, 0x40
- movs r2, 0x98
- movs r3, 0
- bl CreateSprite
- strb r0, [r4]
- b _080A1D60
- .align 2, 0
-_080A1D50: .4byte gSharedMem + 0x1A01D
-_080A1D54: .4byte gSpriteTemplate_83C1304
-_080A1D58:
- movs r0, 0x1D
- bl sub_80A18E4
- b _080A1D74
-_080A1D60:
- ldr r0, _080A1D7C @ =gSharedMem + 0x1A01D
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080A1D80 @ =gSprites
- adds r0, r1
- adds r1, r5, 0
- bl StartSpriteAnim
-_080A1D74:
- add sp, 0x64
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1D7C: .4byte gSharedMem + 0x1A01D
-_080A1D80: .4byte gSprites
- thumb_func_end sub_80A1D18
-
- thumb_func_start sub_80A1D84
-sub_80A1D84: @ 80A1D84
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r1, _080A1DC0 @ =0x00007533
- ldr r2, _080A1DC4 @ =gSummaryScreenMonMarkingsPalette
- adds r0, r1, 0
- bl sub_80F7920
- adds r4, r0, 0
- ldr r6, _080A1DC8 @ =gUnknown_020384F4
- str r4, [r6]
- cmp r4, 0
- beq _080A1DBA
- adds r0, r5, 0
- movs r1, 0x8
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r1, [r6]
- movs r0, 0x3C
- strh r0, [r1, 0x20]
- movs r0, 0x1A
- strh r0, [r1, 0x22]
-_080A1DBA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1DC0: .4byte 0x00007533
-_080A1DC4: .4byte gSummaryScreenMonMarkingsPalette
-_080A1DC8: .4byte gUnknown_020384F4
- thumb_func_end sub_80A1D84
-
- thumb_func_start sub_80A1DCC
-sub_80A1DCC: @ 80A1DCC
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080A1DE4 @ =gUnknown_020384F4
- ldr r0, [r0]
- bl DestroySprite
- adds r0, r4, 0
- bl sub_80A1D84
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1DE4: .4byte gUnknown_020384F4
- thumb_func_end sub_80A1DCC
-
- thumb_func_start sub_80A1DE8
-sub_80A1DE8: @ 80A1DE8
- push {r4,lr}
- movs r1, 0x26
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl ball_number_to_ball_processing_index
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_80478DC
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- ldr r1, _080A1E48 @ =gBallSpriteTemplates
- adds r0, r1
- movs r1, 0x6
- movs r2, 0x88
- movs r3, 0
- bl CreateSprite
- ldr r2, _080A1E4C @ =gSharedMem + 0x18000
- strb r0, [r2, 0xD]
- ldr r3, _080A1E50 @ =gSprites
- ldrb r1, [r2, 0xD]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r3, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _080A1E54 @ =SpriteCallbackDummy
- str r1, [r0]
- ldrb r1, [r2, 0xD]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r1, [r0, 0x5]
- movs r2, 0xC
- orrs r1, r2
- strb r1, [r0, 0x5]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1E48: .4byte gBallSpriteTemplates
-_080A1E4C: .4byte gSharedMem + 0x18000
-_080A1E50: .4byte gSprites
-_080A1E54: .4byte SpriteCallbackDummy
- thumb_func_end sub_80A1DE8
-
- thumb_func_start sub_80A1E58
-sub_80A1E58: @ 80A1E58
- push {r4,lr}
- adds r2, r0, 0
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0xFF
- beq _080A1E92
- ldr r3, _080A1E6C @ =gUnknown_083C15BC
- ldrb r0, [r3]
- adds r4, r2, 0x5
- b _080A1E74
- .align 2, 0
-_080A1E6C: .4byte gUnknown_083C15BC
-_080A1E70:
- adds r3, 0x4
- ldrb r0, [r3]
-_080A1E74:
- cmp r0, 0xFF
- beq _080A1E7C
- cmp r0, r1
- bne _080A1E70
-_080A1E7C:
- movs r0, 0xFC
- strb r0, [r2]
- movs r0, 0x4
- strb r0, [r2, 0x1]
- ldrb r0, [r3, 0x1]
- strb r0, [r2, 0x2]
- ldrb r0, [r3, 0x2]
- strb r0, [r2, 0x3]
- ldrb r0, [r3, 0x3]
- strb r0, [r2, 0x4]
- adds r2, r4, 0
-_080A1E92:
- adds r0, r2, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80A1E58
-
- thumb_func_start sub_80A1E9C
-sub_80A1E9C: @ 80A1E9C
- push {r4-r6,lr}
- sub sp, 0x4
- adds r6, r0, 0
- adds r5, r1, 0
- lsls r4, r2, 24
- lsrs r4, 24
- mov r1, sp
- adds r1, 0x1
- mov r2, sp
- adds r2, 0x2
- mov r0, sp
- bl sub_8072CD4
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80A1E58
- adds r6, r0, 0
- adds r1, r5, 0
- bl StringCopy
- adds r6, r0, 0
- cmp r4, 0xFF
- beq _080A1EEC
- movs r0, 0xFC
- strb r0, [r6]
- movs r0, 0x4
- strb r0, [r6, 0x1]
- mov r0, sp
- ldrb r0, [r0]
- strb r0, [r6, 0x2]
- mov r0, sp
- ldrb r0, [r0, 0x1]
- strb r0, [r6, 0x3]
- mov r0, sp
- ldrb r0, [r0, 0x2]
- strb r0, [r6, 0x4]
- movs r0, 0xFF
- strb r0, [r6, 0x5]
- adds r6, 0x5
-_080A1EEC:
- adds r0, r6, 0
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80A1E9C
-
- thumb_func_start sub_80A1EF8
-sub_80A1EF8: @ 80A1EF8
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- mov r9, r0
- adds r4, r1, 0
- adds r5, r2, 0
- adds r6, r3, 0
- ldr r3, [sp, 0x1C]
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 16
- lsrs r6, 16
- ldr r0, _080A1F44 @ =gStringVar4
- mov r8, r0
- mov r1, r9
- adds r2, r4, 0
- str r3, [sp]
- bl sub_80A1E9C
- ldr r3, [sp]
- lsls r3, 24
- lsrs r3, 24
- mov r0, r8
- adds r1, r5, 0
- adds r2, r6, 0
- bl MenuPrint_PixelCoords
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1F44: .4byte gStringVar4
- thumb_func_end sub_80A1EF8
-
- thumb_func_start sub_80A1F48
-sub_80A1F48: @ 80A1F48
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- mov r9, r0
- adds r4, r1, 0
- adds r5, r2, 0
- adds r6, r3, 0
- ldr r3, [sp, 0x1C]
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r3, 16
- lsrs r3, 16
- ldr r0, _080A1F94 @ =gStringVar4
- mov r8, r0
- mov r1, r9
- adds r2, r4, 0
- str r3, [sp]
- bl sub_80A1E9C
- mov r0, r8
- adds r1, r5, 0
- adds r2, r6, 0
- ldr r3, [sp]
- bl sub_8072BD8
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1F94: .4byte gStringVar4
- thumb_func_end sub_80A1F48
-
- thumb_func_start sub_80A1F98
-sub_80A1F98: @ 80A1F98
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r10, r0
- mov r8, r1
- adds r4, r2, 0
- adds r2, r3, 0
- ldr r5, [sp, 0x24]
- ldr r6, [sp, 0x28]
- ldr r7, [sp, 0x2C]
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r4, 24
- lsrs r4, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 16
- lsrs r6, 16
- ldr r0, _080A1FF4 @ =gStringVar1
- mov r9, r0
- mov r1, r10
- adds r3, r4, 0
- bl ConvertIntToDecimalStringN
- str r7, [sp]
- mov r0, r9
- mov r1, r8
- adds r2, r5, 0
- adds r3, r6, 0
- bl sub_80A1EF8
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A1FF4: .4byte gStringVar1
- thumb_func_end sub_80A1F98
-
- thumb_func_start sub_80A1FF8
-sub_80A1FF8: @ 80A1FF8
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- mov r9, r0
- adds r4, r1, 0
- adds r5, r2, 0
- adds r6, r3, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r0, _080A2038 @ =gStringVar4
- mov r8, r0
- mov r1, r9
- adds r2, r4, 0
- bl sub_80A1E9C
- mov r0, r8
- adds r1, r5, 0
- adds r2, r6, 0
- bl MenuPrint
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080A2038: .4byte gStringVar4
- thumb_func_end sub_80A1FF8
-
- thumb_func_start PokemonSummaryScreen_CopyPokemonLevel
-PokemonSummaryScreen_CopyPokemonLevel: @ 80A203C
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x34
- strb r0, [r4]
- adds r4, 0x1
- cmp r1, 0
- bne _080A2052
- movs r1, 0x5
-_080A2052:
- mov r0, sp
- bl ConvertIntToDecimalString
- adds r0, r4, 0
- mov r1, sp
- movs r2, 0xE
- bl sub_80A1E9C
- adds r4, r0, 0
- ldr r1, _080A2074 @ =gOtherText_Comma
- bl StringCopy
- adds r4, r0, 0
- add sp, 0xC
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080A2074: .4byte gOtherText_Comma
- thumb_func_end PokemonSummaryScreen_CopyPokemonLevel
-
- thumb_func_start sub_80A2078
-sub_80A2078: @ 80A2078
- push {lr}
- ldr r3, _080A209C @ =gUnknown_03005CF0
- ldr r2, _080A20A0 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, [r1]
- str r2, [r3]
- ldr r2, _080A20A4 @ =sub_80A20A8
- str r2, [r1]
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r2
- pop {r0}
- bx r0
- .align 2, 0
-_080A209C: .4byte gUnknown_03005CF0
-_080A20A0: .4byte gTasks
-_080A20A4: .4byte sub_80A20A8
- thumb_func_end sub_80A2078
-
- thumb_func_start sub_80A20A8
-sub_80A20A8: @ 80A20A8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8055870
- cmp r0, 0x1
- beq _080A20C6
- ldr r1, _080A20CC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080A20D0 @ =gUnknown_03005CF0
- ldr r1, [r1]
- str r1, [r0]
-_080A20C6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A20CC: .4byte gTasks
-_080A20D0: .4byte gUnknown_03005CF0
- thumb_func_end sub_80A20A8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data-de/text/contest_strings.inc b/data-de/text/contest_strings.inc
index fd7c00e5c..19cfe330f 100644
--- a/data-de/text/contest_strings.inc
+++ b/data-de/text/contest_strings.inc
@@ -148,7 +148,7 @@ ContestString_DescStopExcitement: @ 83CADA1
.string "terung des Publikums.$"
.align 2
-gUnknown_083CADD4:: @ 83CADD4
+gContestEffectStrings:: @ 83CADD4
.4byte ContestString_DescHighlyAppealing
.4byte ContestString_DescStartled1
.4byte ContestString_DescGreatLock
diff --git a/data-de/text/move_descriptions.inc b/data-de/text/move_descriptions.inc
deleted file mode 100644
index 74f7a5b9f..000000000
--- a/data-de/text/move_descriptions.inc
+++ /dev/null
@@ -1,1771 +0,0 @@
-gMoveDescription_Pound: @ 83BC680
- .string "Ein Hieb mit den Vorder-\n"
- .string "beinen oder dem Schweif.$"
-
-gMoveDescription_KarateChop: @ 83BC6A6
- .string "Gute Möglichkeit, einen\n"
- .string "Volltreffer zu landen.$"
-
-gMoveDescription_DoubleSlap: @ 83BC6D8
- .string "Trifft den Gegner 2 - 5-mal\n"
- .string "hintereinander.$"
-
-gMoveDescription_CometPunch: @ 83BC6FF
- .string "Trifft den Gegner 2 - 5-mal\n"
- .string "hintereinander.$"
-
-gMoveDescription_MegaPunch: @ 83BC728
- .string "Ein unglaublich kräftiger\n"
- .string "Hieb.$"
-
-gMoveDescription_PayDay: @ 83BC755
- .string "Wirft Münzen auf Gegner.\n"
- .string "Geld wird erstattet.$"
-
-gMoveDescription_FirePunch: @ 83BC788
- .string "Schlag, der dem Gegner evtl.\n"
- .string "Verbrennungen zufügt.$"
-
-gMoveDescription_IcePunch: @ 83BC7AD
- .string "Ein Schlag, der den Gegner\n"
- .string "evtl. einfriert.$"
-
-gMoveDescription_ThunderPunch: @ 83BC7D3
- .string "Schlag, der den Gegner evtl.\n"
- .string "paralysiert.$"
-
-gMoveDescription_Scratch: @ 83BC803
- .string "Der Gegner wird mit\n"
- .string "scharfen Klauen zerkratzt.$"
-
-gMoveDescription_ViceGrip: @ 83BC827
- .string "Umklammert den Gegner mit\n"
- .string "großen, kräftigen Zangen.$"
-
-gMoveDescription_Guillotine: @ 83BC856
- .string "Kräftige Scheren-Attacke.\n"
- .string "Führt evtl. zum K.O.$"
-
-gMoveDescription_RazorWind: @ 83BC888
- .string "Eine Attacke, die auf 2\n"
- .string "Runden basiert.$"
-
-gMoveDescription_SwordsDance: @ 83BC8BC
- .string "Erhöht den Angriffs-Wert\n"
- .string "drastisch.$"
-
-gMoveDescription_Cut: @ 83BC8E9
- .string "Trifft den Gegner mit\n"
- .string "Klauen, Scheren o. ä.$"
-
-gMoveDescription_Gust: @ 83BC916
- .string "Trifft den Gegner mit Wind-\n"
- .string "stoß durch Flügelschlag.$"
-
-gMoveDescription_WingAttack: @ 83BC94F
- .string "Trifft den Gegner mit weit\n"
- .string "gespreizten Flügeln.$"
-
-gMoveDescription_Whirlwind: @ 83BC977
- .string "Weht Gegner weg und be-\n"
- .string "endet den Kampf in Wildnis.$"
-
-gMoveDescription_Fly: @ 83BC9A9
- .string "Steigt empor in der 1. Runde\n"
- .string "und trifft Gegner in der 2.$"
-
-gMoveDescription_Bind: @ 83BC9E1
- .string "Umklammert und trifft den\n"
- .string "Gegner 2 - 5-mal.$"
-
-gMoveDescription_Slam: @ 83BCA0E
- .string "Schlag mit einem langen\n"
- .string "Schweif, einer Ranke o. ä.$"
-
-gMoveDescription_VineWhip: @ 83BCA39
- .string "Peitschenähnlicher Schlag\n"
- .string "mit Ranken.$"
-
-gMoveDescription_Stomp: @ 83BCA67
- .string "Stampfen mit Fuß. Gegner\n"
- .string "schreckt evtl. zurück.$"
-
-gMoveDescription_DoubleKick: @ 83BCA9E
- .string "Doppeltritt. Der Gegner\n"
- .string "wird zweimal getroffen.$"
-
-gMoveDescription_MegaKick: @ 83BCAD2
- .string "Ein extrem heftiger Tritt.$"
-
-gMoveDescription_JumpKick: @ 83BCB01
- .string "Sprung-Tritt. Selbstschä-\n"
- .string "digung bei Misserfolg.$"
-
-gMoveDescription_RollingKick: @ 83BCB36
- .string "Schneller Tritt aus der\n"
- .string "Drehung.$"
-
-gMoveDescription_SandAttack: @ 83BCB5F
- .string "Senkt Genauigkeit des Geg-\n"
- .string "ners durch Sand.$"
-
-gMoveDescription_Headbutt: @ 83BCB97
- .string "Rammt den Gegner und lässt\n"
- .string "ihn evtl. zurückschrecken.$"
-
-gMoveDescription_HornAttack: @ 83BCBC2
- .string "Spießt den Gegner mit\n"
- .string "spitzen Hörnern auf.$"
-
-gMoveDescription_FuryAttack: @ 83BCBE1
- .string "Spießt den Gegner 2 - 5-mal\n"
- .string "mit spitzen Hörnern auf.$"
-
-gMoveDescription_HornDrill: @ 83BCC12
- .string "K.O.-Attacke, die ein Horn\n"
- .string "als Bohrer einsetzt.$"
-
-gMoveDescription_Tackle: @ 83BCC45
- .string "Trifft den Gegner mit vollem\n"
- .string "Körpereinsatz.$"
-
-gMoveDescription_BodySlam: @ 83BCC6F
- .string "Körper-Ramme, kann\n"
- .string "Paralyse hervorrufen.$"
-
-gMoveDescription_Wrap: @ 83BCC9A
- .string "Umwickelt Gegner 2 - 5-mal\n"
- .string "mit Ranken o. ä.$"
-
-gMoveDescription_TakeDown: @ 83BCCD3
- .string "Rücksichtslose Attacke,\n"
- .string "mit Selbstschädigung.$"
-
-gMoveDescription_Thrash: @ 83BCD06
- .string "Attacke in 2 bis 3 Runden,\n"
- .string "die Anwender verwirrt.$"
-
-gMoveDescription_DoubleEdge: @ 83BCD38
- .string "Lebensgefährlicher Angriff\n"
- .string "mit Selbstschädigung.$"
-
-gMoveDescription_TailWhip: @ 83BCD68
- .string "Hieb mit dem Schweif, senkt\n"
- .string "die VERT. des Gegners.$"
-
-gMoveDescription_PoisonSting: @ 83BCD92
- .string "Angriff mit Widerhaken,\n"
- .string "kann Gegner vergiften.$"
-
-gMoveDescription_Twineedle: @ 83BCDC4
- .string "Stacheln an den Vorderbei-\n"
- .string "nen treffen Gegner 2-mal.$"
-
-gMoveDescription_PinMissile: @ 83BCDF0
- .string "Spitze Nadeln treffen den\n"
- .string "Gegner 2 - 5-mal.$"
-
-gMoveDescription_Leer: @ 83BCE1D
- .string "Gegners VERT.-Wert wird\n"
- .string "durch Blick gesenkt.$"
-
-gMoveDescription_Bite: @ 83BCE4D
- .string "Beißt zu und lässt den Geg-\n"
- .string "ner evtl. zurückschrecken.$"
-
-gMoveDescription_Growl: @ 83BCE7C
- .string "Knurren, das den ANGR.-Wert\n"
- .string "des Gegners senkt.$"
-
-gMoveDescription_Roar: @ 83BCEA6
- .string "Verjagt den Gegner und be-\n"
- .string "endet den Kampf in Wildnis.$"
-
-gMoveDescription_Sing: @ 83BCECC
- .string "Ein Lied, das den Gegner\n"
- .string "in tiefen Schlaf versetzt.$"
-
-gMoveDescription_Supersonic: @ 83BCEFF
- .string "Ausstoß bizarrer Schallwel-\n"
- .string "len. Verwirrt Gegner evtl.$"
-
-gMoveDescription_SonicBoom: @ 83BCF33
- .string "Schockwellen. Richten immer\n"
- .string "20 KP Schaden an.$"
-
-gMoveDescription_Disable: @ 83BCF6A
- .string "Psycho-Attacke. Blockiert\n"
- .string "eine Attacke des Gegners.$"
-
-gMoveDescription_Acid: @ 83BCF97
- .string "Versprüht ätzende Flüssig-\n"
- .string "keit, senkt evtl. VERT.$"
-
-gMoveDescription_Ember: @ 83BCFC6
- .string "Schwache Feuer-Attacke.\n"
- .string "Verbrennt Gegner evtl.$"
-
-gMoveDescription_Flamethrower: @ 83BCFF2
- .string "Starke Feuer-Attacke.\n"
- .string "Verbrennt Gegner evtl.$"
-
-gMoveDescription_Mist: @ 83BD022
- .string "Nebel, der die Änderung der\n"
- .string "Werte verhindert.$"
-
-gMoveDescription_WaterGun: @ 83BD054
- .string "Der Gegner wird mit Wasser\n"
- .string "bespritzt.$"
-
-gMoveDescription_HydroPump: @ 83BD075
- .string "Spritzt Wasser mit\n"
- .string "Hochdruck auf den Gegner.$"
-
-gMoveDescription_Surf: @ 83BD0A3
- .string "Eine riesige Welle bricht\n"
- .string "über den Gegner herein.$"
-
-gMoveDescription_IceBeam: @ 83BD0D9
- .string "Gegner wird von Eisstrahl\n"
- .string "getroffen, friert evtl. ein.$"
-
-gMoveDescription_Blizzard: @ 83BD10D
- .string "Ein Schneesturm, der den\n"
- .string "Gegner einfrieren kann.$"
-
-gMoveDescription_Psybeam: @ 83BD140
- .string "Feuert einen Strahl ab, der\n"
- .string "Gegner verwirren kann.$"
-
-gMoveDescription_BubbleBeam: @ 83BD16F
- .string "Versprüht Blasen, die den\n"
- .string "INIT.-Wert evtl. senken.$"
-
-gMoveDescription_AuroraBeam: @ 83BD19F
- .string "Regenbogenfarbener Strahl,\n"
- .string "senkt evtl. ANGR.-Wert.$"
-
-gMoveDescription_HyperBeam: @ 83BD1D3
- .string "Starke Attacke. Angreifer\n"
- .string "setzt eine Runde aus.$"
-
-gMoveDescription_Peck: @ 83BD209
- .string "Greift Gegner mit dem\n"
- .string "Schnabel an.$"
-
-gMoveDescription_DrillPeck: @ 83BD233
- .string "Attacke, bei der der Schna-\n"
- .string "bel als Bohrer dient.$"
-
-gMoveDescription_Submission: @ 83BD26A
- .string "Rücksichtsloser Rempler. \n"
- .string "Schädigt auch Angreifer.$"
-
-gMoveDescription_LowKick: @ 83BD299
- .string "Tritt, der massigen Gegnern\n"
- .string "mehr Schaden zufügt.$"
-
-gMoveDescription_Counter: @ 83BD2CB
- .string "Kontert physischen Tref-\n"
- .string "fer mit doppelter Kraft.$"
-
-gMoveDescription_SeismicToss: @ 83BD2FE
- .string "Richtet Schaden gemäß\n"
- .string "Level d. Angreifers an.$"
-
-gMoveDescription_Strength: @ 83BD32D
- .string "Erzeugt enorme Kraft und\n"
- .string "rammt den Gegner.$"
-
-gMoveDescription_Absorb: @ 83BD358
- .string "Attacke, die die Hälfte des\n"
- .string "Schadens absorbiert.$"
-
-gMoveDescription_MegaDrain: @ 83BD38A
- .string "Attacke, die die Hälfte des\n"
- .string "Schadens absorbiert.$"
-
-gMoveDescription_LeechSeed: @ 83BD3BC
- .string "Gegner wird bepflanzt und\n"
- .string "verliert jede Runde KP.$"
-
-gMoveDescription_Growth: @ 83BD3F0
- .string "Der Körper wächst und\n"
- .string "SPEZ. ANGR. wird erhöht.$"
-
-gMoveDescription_RazorLeaf: @ 83BD41F
- .string "Trifft Gegner mit Blättern.\n"
- .string "Hohe Volltrefferquote.$"
-
-gMoveDescription_SolarBeam: @ 83BD454
- .string "Absorbiert Licht in der 1.\n"
- .string "Runde, 2. Runde Angriff.$"
-
-gMoveDescription_PoisonPowder: @ 83BD487
- .string "Verstreut giftigen Puder,\n"
- .string "der Gegner vergiften kann.$"
-
-gMoveDescription_StunSpore: @ 83BD4B8
- .string "Verstreut Puder, der den\n"
- .string "Gegner evtl. paralysiert.$"
-
-gMoveDescription_SleepPowder: @ 83BD4E5
- .string "Verstreut Puder, der Geg.\n"
- .string "evtl. in Schlaf versetzt.$"
-
-gMoveDescription_PetalDance: @ 83BD518
- .string "Angriff in 2-3 Runden.\n"
- .string "Angreifer wird verwirrt.$"
-
-gMoveDescription_StringShot: @ 83BD54A
- .string "Umwickelt Gegner mit Faden\n"
- .string "und senkt INIT.-Wert.$"
-
-gMoveDescription_DragonRage: @ 83BD579
- .string "Stößt Schockwellen aus, die\n"
- .string "40 KP Schaden anrichten.$"
-
-gMoveDescription_FireSpin: @ 83BD5B0
- .string "Schließt Gegner für 2-5\n"
- .string "Runden in Feuerkreis ein.$"
-
-gMoveDescription_ThunderShock: @ 83BD5E2
- .string "Elektro-Attacke. Gegner\n"
- .string "evtl. paralysiert.$"
-
-gMoveDescription_Thunderbolt: @ 83BD612
- .string "Starke Elektro-Attacke,\n"
- .string "Gegner evtl. paralysiert.$"
-
-gMoveDescription_ThunderWave: @ 83BD648
- .string "Ein schwacher Stromstoß,\n"
- .string "der den Gegner paralysiert.$"
-
-gMoveDescription_Thunder: @ 83BD67B
- .string "Elektro-Attacke, die den\n"
- .string "Gegner evtl. paralysiert.$"
-
-gMoveDescription_RockThrow: @ 83BD6A8
- .string "Wirft kleine Steine auf den\n"
- .string "Gegner.$"
-
-gMoveDescription_Earthquake: @ 83BD6CE
- .string "Mächtiges Beben. Ist bei\n"
- .string "fliegenden Feinden nutzlos.$"
-
-gMoveDescription_Fissure: @ 83BD702
- .string "Sofort-K.O. Wirft Gegner\n"
- .string "in Gebirgsspalte.$"
-
-gMoveDescription_Dig: @ 83BD735
- .string "Gräbt sich in der 1. Runde\n"
- .string "ein und trifft in der 2.$"
-
-gMoveDescription_Toxic: @ 83BD76C
- .string "Vergiftet den Gegner mit \n"
- .string "einem starken Toxin.$"
-
-gMoveDescription_Confusion: @ 83BD798
- .string "Psycho-Attacke, die den\n"
- .string "Gegner evtl. verwirrt.$"
-
-gMoveDescription_Psychic: @ 83BD7C3
- .string "Starke Psycho-Attacke, die\n"
- .string "evtl. SPEZ. VERT. senkt.$"
-
-gMoveDescription_Hypnosis: @ 83BD7F5
- .string "Hypno-Attacke, die Gegner\n"
- .string "evtl. in Schlaf versetzt.$"
-
-gMoveDescription_Meditate: @ 83BD81F
- .string "Friedliche Meditation, um\n"
- .string "ANGR.-Wert zu steigern.$"
-
-gMoveDescription_Agility: @ 83BD850
- .string "Entspannt den Körper, um\n"
- .string "INIT.-Wert. zu steigern.$"
-
-gMoveDescription_QuickAttack: @ 83BD879
- .string "Sehr schneller Angriff mit\n"
- .string "Erstschlaggarantie.$"
-
-gMoveDescription_Rage: @ 83BD8AD
- .string "Erhöht ANGR. des Anwenders\n"
- .string "bei jedem gegn. Treffer.$"
-
-gMoveDescription_Teleport: @ 83BD8DC
- .string "Psycho-Angriff, um sofort\n"
- .string "aus einem Kampf zu fliehen.$"
-
-gMoveDescription_NightShade: @ 83BD90E
- .string "Richtet Schaden gemäß\n"
- .string "Level d. Angreifers an.$"
-
-gMoveDescription_Mimic: @ 83BD93D
- .string "Kopiert eine zuvor ausge-\n"
- .string "führte Attacke d. Gegners.$"
-
-gMoveDescription_Screech: @ 83BD96E
- .string "Stößt einen Schrei aus, um\n"
- .string "gegn. VERT. zu senken.$"
-
-gMoveDescription_DoubleTeam: @ 83BD9A3
- .string "Erzeugt Ebenbilder, um \n"
- .string "Fluchtwert zu erhöhen.$"
-
-gMoveDescription_Recover: @ 83BD9D1
- .string "Max. KP des Anwenders w.\n"
- .string "bis zur Hälfte aufgefüllt.$"
-
-gMoveDescription_Harden: @ 83BD9FC
- .string "Stärkt die Muskulatur und\n"
- .string "erhöht VERT.-Wert.$"
-
-gMoveDescription_Minimize: @ 83BDA2B
- .string "Anwender schrumpft, um\n"
- .string "Fluchtwert zu erhöhen.$"
-
-gMoveDescription_Smokescreen: @ 83BDA5B
- .string "Senkt Genauigkeit d. Geg-\n"
- .string "ners mit Rauch, Tinte o. ä.$"
-
-gMoveDescription_ConfuseRay: @ 83BDA8C
- .string "Ein fieser Strahl, der den\n"
- .string "Gegner verwirrt.$"
-
-gMoveDescription_Withdraw: @ 83BDAB2
- .string "Rückzug in den harten\n"
- .string "Panzer. Erhöht VERT.-Wert.$"
-
-gMoveDescription_DefenseCurl: @ 83BDAEB
- .string "Verbirgt Schwächen durch\n"
- .string "Einrollen, VERT.-Wert hoch.$"
-
-gMoveDescription_Barrier: @ 83BDB1D
- .string "Erzeugt Barriere, die den\n"
- .string "VERT.-Wert stark erhöht.$"
-
-gMoveDescription_LightScreen: @ 83BDB4C
- .string "Erzeugt Lichtwand u. senkt\n"
- .string "SPEZ. ANGR.-Schaden.$"
-
-gMoveDescription_Haze: @ 83BDB80
- .string "Erzeugt dunklen Dunst.\n"
- .string "Löscht alle Statusänder.$"
-
-gMoveDescription_Reflect: @ 83BDBB7
- .string "Erzeugt Lichtwand, schützt\n"
- .string "teilweise vor phys. Angr.$"
-
-gMoveDescription_FocusEnergy: @ 83BDBEE
- .string "Bündelt Kraft. Volltreffer-\n"
- .string "chance wird erhöht.$"
-
-gMoveDescription_Bide: @ 83BDC1D
- .string "Erträgt 2 Runden Angriffe,\n"
- .string "schlägt doppelt zurück.$"
-
-gMoveDescription_Metronome: @ 83BDC4D
- .string "Bewegt Finger und wählt\n"
- .string "PKMN-Attacke zufällig aus.$"
-
-gMoveDescription_MirrorMove: @ 83BDC81
- .string "Erwidert gegn. Angriff mit\n"
- .string "derselben Attacke.$"
-
-gMoveDescription_SelfDestruct: @ 83BDCAF
- .string "Richtet großen Schaden an.\n"
- .string "Anwender wird besiegt.$"
-
-gMoveDescription_EggBomb: @ 83BDCE0
- .string "Ein Ei wird auf den Gegner\n"
- .string "abgefeuert.$"
-
-gMoveDescription_Lick: @ 83BDD06
- .string "Leck-Attacke mit Zunge.\n"
- .string "Gegner evtl. paralysiert.$"
-
-gMoveDescription_Smog: @ 83BDD3D
- .string "Angriff mit Gas. Gegner wird\n"
- .string "evtl. vergiftet.$"
-
-gMoveDescription_Sludge: @ 83BDD69
- .string "Wirft Schlamm auf Gegner.\n"
- .string "Evtl. Vergiftung.$"
-
-gMoveDescription_BoneClub: @ 83BDD9E
- .string "Schlägt Gegner mit Keule\n"
- .string "und verschreckt ihn evtl.$"
-
-gMoveDescription_FireBlast: @ 83BDDCE
- .string "Feuersbrunst, die alles ver-\n"
- .string "sengt. Verbrennt Geg. evtl.$"
-
-gMoveDescription_Waterfall: @ 83BDE01
- .string "Attacke basiert auf Tempo.\n"
- .string "Erklimmt Wasserfälle.$"
-
-gMoveDescription_Clamp: @ 83BDE31
- .string "Fängt und drückt Gegner\n"
- .string "für 2-5 Runden.$"
-
-gMoveDescription_Swift: @ 83BDE5E
- .string "Verschießt sternförmige\n"
- .string "Strahlen. Treffergarantie!$"
-
-gMoveDescription_SkullBash: @ 83BDE87
- .string "Zieht Kopf ein und greift in\n"
- .string "der nächsten Runde an.$"
-
-gMoveDescription_SpikeCannon: @ 83BDEB9
- .string "Verschießt spitze Stacheln\n"
- .string "und trifft 2 - 5-mal.$"
-
-gMoveDescription_Constrict: @ 83BDEE9
- .string "Schmerzvoller Klammergriff.\n"
- .string "Senkt evtl. INIT.-Wert.$"
-
-gMoveDescription_Amnesia: @ 83BDF16
- .string "Gedächtnisverlust, der\n"
- .string "SPEZ. VERT. deutlich erhöht.$"
-
-gMoveDescription_Kinesis: @ 83BDF4A
- .string "Lenkt Gegner ab und senkt\n"
- .string "evtl. seine Genauigkeit.$"
-
-gMoveDescription_SoftBoiled: @ 83BDF71
- .string "Max. KP des Anwenders w.\n"
- .string "bis zur Hälfte aufgefüllt.$"
-
-gMoveDescription_HiJumpKick: @ 83BDF9C
- .string "Sprung-Tritt mit Knie. Miss-\n"
- .string "erfolg verletzt Anwender.$"
-
-gMoveDescription_Glare: @ 83BDFD1
- .string "Schüchtert Gegner ein, so\n"
- .string "dass er paralysiert ist.$"
-
-gMoveDescription_DreamEater: @ 83BE003
- .string "Schlafendem Gegner wird\n"
- .string "halber Schaden abgezogen.$"
-
-gMoveDescription_PoisonGas: @ 83BE03A
- .string "Hüllt Gegner in giftiges Gas\n"
- .string "ein, kann vergiften.$"
-
-gMoveDescription_Barrage: @ 83BE06B
- .string "Wirft 2 - 5-mal runde Gegen-\n"
- .string "stände auf den Gegner.$"
-
-gMoveDescription_LeechLife: @ 83BE098
- .string "Ein Angriff, der die Hälfte\n"
- .string "des Schadens saugt.$"
-
-gMoveDescription_LovelyKiss: @ 83BE0C9
- .string "Fordert Kuss mit bösem\n"
- .string "Blick. Evtl. Schlaf.$"
-
-gMoveDescription_SkyAttack: @ 83BE0FE
- .string "Sucht nach Schwächen,\n"
- .string "Treffer nächste Runde.$"
-
-gMoveDescription_Transform: @ 83BE133
- .string "Ändert die Anwenderzellen\n"
- .string "für ein Ebenbild d. Gegners.$"
-
-gMoveDescription_Bubble: @ 83BE168
- .string "Angriff mit Blasen. INIT.-\n"
- .string "Wert wird evtl. gesenkt.$"
-
-gMoveDescription_DizzyPunch: @ 83BE19C
- .string "Rhythmischer Schlag, der\n"
- .string "den Gegner verwirren kann.$"
-
-gMoveDescription_Spore: @ 83BE1C7
- .string "Erzeugt eine Wolke aus ein-\n"
- .string "schläfernden Sporen.$"
-
-gMoveDescription_Flash: @ 83BE1FC
- .string "Erzeugt helles Licht, das\n"
- .string "gegn. Genauigkeit senkt.$"
-
-gMoveDescription_Psywave: @ 83BE231
- .string "Psycho-Welle mit unter-\n"
- .string "schiedlicher Intensität.$"
-
-gMoveDescription_Splash: @ 83BE263
- .string "Nur ein Platscher..., der\n"
- .string "überhaupt nichts bewirkt.$"
-
-gMoveDescription_AcidArmor: @ 83BE293
- .string "Verflüssigt Körper d. An-\n"
- .string "wenders. Erhört VERT.$"
-
-gMoveDescription_Crabhammer: @ 83BE2C7
- .string "Schlägt mit Schere zu.\n"
- .string "Volltrefferchance hoch.$"
-
-gMoveDescription_Explosion: @ 83BE2FD
- .string "Richtet großen Schaden an.\n"
- .string "Anwender wird besiegt.$"
-
-gMoveDescription_FurySwipes: @ 83BE32E
- .string "Beharkt Gegner 2 - 5-mal\n"
- .string "mit scharfen Klauen o. ä.$"
-
-gMoveDescription_Bonemerang: @ 83BE362
- .string "Ein Bumerang aus Knochen,\n"
- .string "der zweimal trifft.$"
-
-gMoveDescription_Rest: @ 83BE38E
- .string "Anwender schläft 2 Runden,\n"
- .string "KP und Status erneuert.$"
-
-gMoveDescription_RockSlide: @ 83BE3C4
- .string "Schleudert riesige Felsen.\n"
- .string "Verschreckt evtl. Gegner.$"
-
-gMoveDescription_HyperFang: @ 83BE3F4
- .string "Angriff mit Zähnen.\n"
- .string "Verschreckt evtl. Gegner.$"
-
-gMoveDescription_Sharpen: @ 83BE423
- .string "Reduziert Polygonzahl und\n"
- .string "erhöht ANGR.-Wert.$"
-
-gMoveDescription_Conversion: @ 83BE450
- .string "Wandelt Typ d. Anwenders in\n"
- .string "eigenen Attacken-Typ.$"
-
-gMoveDescription_TriAttack: @ 83BE481
- .string "Feuert 3 Arten von Strahlen\n"
- .string "gleichzeitig ab.$"
-
-gMoveDescription_SuperFang: @ 83BE4AE
- .string "Greift mit scharfen Zähnen\n"
- .string "an. Halbiert gegnerische KP.$"
-
-gMoveDescription_Slash: @ 83BE4E3
- .string "Hieb mit Klauen o. ä. Hohe\n"
- .string "Volltrefferquote.$"
-
-gMoveDescription_Substitute: @ 83BE51B
- .string "Lockvogel, der 1/4 der max.\n"
- .string "KP des Anwenders besitzt.$"
-
-gMoveDescription_Struggle: @ 83BE54F
- .string "Einsatz nur bei verbrauch-\n"
- .string "ten AP. Selbstschädigung!$"
-
-gMoveDescription_Sketch: @ 83BE58B
- .string "Kopiert stets den zuletzt\n"
- .string "erlittenen Angriff.$"
-
-gMoveDescription_TripleKick: @ 83BE5B3
- .string "Tritt Gegner 3-mal nach-\n"
- .string "einander. Härte nimmt zu.$"
-
-gMoveDescription_Thief: @ 83BE5E9
- .string "Kann das vom Gegner\n"
- .string "gehaltene Item stehlen.$"
-
-gMoveDescription_SpiderWeb: @ 83BE61C
- .string "Wickelt Gegner ein. Flucht \n"
- .string "oder Tausch unmöglich.$"
-
-gMoveDescription_MindReader: @ 83BE653
- .string "Ahnt gegnerische Aktion.\n"
- .string "Nächste Attacke trifft.$"
-
-gMoveDescription_Nightmare: @ 83BE68A
- .string "Bewirkt 1/4 Schaden pro\n"
- .string "Zug bei schlafendem Gegner.$"
-
-gMoveDescription_FlameWheel: @ 83BE6BC
- .string "Feuer-Attacke, die Gegner\n"
- .string "evtl. verbrennt.$"
-
-gMoveDescription_Snore: @ 83BE6EB
- .string "Laute Attacke. Kann nur im\n"
- .string "Schlaf benutzt werden.$"
-
-gMoveDescription_Curse: @ 83BE71D
- .string "Ein Angriff, der bei GEIST-\n"
- .string "PKMN anders funktioniert.$"
-
-gMoveDescription_Flail: @ 83BE74B
- .string "Richtet mehr Schaden an,\n"
- .string "wenn eigene KP niedrig sind.$"
-
-gMoveDescription_Conversion2: @ 83BE77C
- .string "Anwender wird resistent\n"
- .string "gegen letzten Angr.-Typ.$"
-
-gMoveDescription_Aeroblast: @ 83BE7B0
- .string "Erzeugt ein Vakuum.\n"
- .string "Hohe Volltrefferquote.$"
-
-gMoveDescription_CottonSpore: @ 83BE7E4
- .string "Sporen heften sich an den\n"
- .string "Gegner. Senkt INIT.-Wert.$"
-
-gMoveDescription_Reversal: @ 83BE815
- .string "Richtet mehr Schaden an,\n"
- .string "wenn eigene KP niedrig sind.$"
-
-gMoveDescription_Spite: @ 83BE846
- .string "AP des letzten gegner.\n"
- .string "Angriffs werden gesenkt.$"
-
-gMoveDescription_PowderSnow: @ 83BE875
- .string "Schnee auf Gegner, der\n"
- .string "evtl. eingefroren wird.$"
-
-gMoveDescription_Protect: @ 83BE8AB
- .string "Weicht Angriff aus.\n"
- .string "Scheitert evtl. bei Wdh.$"
-
-gMoveDescription_MachPunch: @ 83BE8DE
- .string "Schneller Hieb, der stets\n"
- .string "zuerst trifft.$"
-
-gMoveDescription_ScaryFace: @ 83BE911
- .string "Erschreckt mit Grimasse. \n"
- .string "INIT.-Wert sinkt deutlich.$"
-
-gMoveDescription_FaintAttack: @ 83BE946
- .string "Zieht Gegner heran und\n"
- .string "trifft mit Sicherheit.$"
-
-gMoveDescription_SweetKiss: @ 83BE976
- .string "Fordert Kuss mit süßem\n"
- .string "Blick. Verwirrt Gegner evtl.$"
-
-gMoveDescription_BellyDrum: @ 83BE9AC
- .string "Erhöht ANGR.-Wert,\n"
- .string "opfert jedoch KP.$"
-
-gMoveDescription_SludgeBomb: @ 83BE9D3
- .string "Wirft Schlamm auf Gegner\n"
- .string "und vergiftet ihn evtl.$"
-
-gMoveDescription_MudSlap: @ 83BEA08
- .string "Wirft Gegner Matsch ins Ge-\n"
- .string "sicht. Genauigkeit sinkt.$"
-
-gMoveDescription_Octazooka: @ 83BEA3C
- .string "Verschießt Tinte und senkt\n"
- .string "dadurch Genauigkeit.$"
-
-gMoveDescription_Spikes: @ 83BEA6C
- .string "Richtet bei Tausch Schaden\n"
- .string "mit Stacheln an.$"
-
-gMoveDescription_ZapCannon: @ 83BEA98
- .string "Kräftige, ungenaue At-\n"
- .string "tacke, die evtl. paralysiert.$"
-
-gMoveDescription_Foresight: @ 83BEACE
- .string "Verhindert Anstieg von\n"
- .string "gegnerischem Fluchtwert.$"
-
-gMoveDescription_DestinyBond: @ 83BEB01
- .string "Wird der Angreifer besiegt,\n"
- .string "gilt das auch für d. Gegner.$"
-
-gMoveDescription_PerishSong: @ 83BEB34
- .string "Wer dieses Lied hört, wird\n"
- .string "nach 3 Runden besiegt.$"
-
-gMoveDescription_IcyWind: @ 83BEB65
- .string "Eis-Attacke, die den INIT.-\n"
- .string "Wert des Gegners senkt.$"
-
-gMoveDescription_Detect: @ 83BEB94
- .string "Wendet Attacken ab, Erfolg\n"
- .string "sinkt bei Wiederholung.$"
-
-gMoveDescription_BoneRush: @ 83BEBC7
- .string "Greift Gegner 2 - 5-mal in\n"
- .string "Folge mit einem Knochen an.$"
-
-gMoveDescription_LockOn: @ 83BEBF9
- .string "Visiert Gegner an u. trifft\n"
- .string "in der nächsten Runde.$"
-
-gMoveDescription_Outrage: @ 83BEC2B
- .string "Wiederholt Angriff 2-3 Run-\n"
- .string "den lang. Verwirrt Anwender.$"
-
-gMoveDescription_Sandstorm: @ 83BEC5D
- .string "Erzeugt einen Sandsturm,\n"
- .string "der mehrere Runden wütet.$"
-
-gMoveDescription_GigaDrain: @ 83BEC8E
- .string "Absorbiert die Hälfte des\n"
- .string "angerichteten Schadens.$"
-
-gMoveDescription_Endure: @ 83BECBF
- .string "Hält jeder Attacke 1 Runde\n"
- .string "stand. 1 KP bleibt stets.$"
-
-gMoveDescription_Charm: @ 83BECF4
- .string "Betört den Gegner u. redu-\n"
- .string "ziert seinen ANGR. deutlich.$"
-
-gMoveDescription_Rollout: @ 83BED23
- .string "Attacke, die 5 Runden\n"
- .string "dauert. Die Härte nimmt zu.$"
-
-gMoveDescription_FalseSwipe: @ 83BED54
- .string "Ein Angriff, der dem Gegner\n"
- .string "zumindest 1 KP lässt.$"
-
-gMoveDescription_Swagger: @ 83BED86
- .string "Verwirrt den Gegner und\n"
- .string "erhöht ANGR.-Wert deutlich.$"
-
-gMoveDescription_MilkDrink: @ 83BEDB8
- .string "Füllt bis zur Hälfte der max.\n"
- .string "KP des Benutzers auf.$"
-
-gMoveDescription_Spark: @ 83BEDE3
- .string "Elektro-Hieb, der Gegner\n"
- .string "paralysieren kann.$"
-
-gMoveDescription_FuryCutter: @ 83BEE14
- .string "Eine Attacke, deren Härte\n"
- .string "bei jedem Treffer zunimmt.$"
-
-gMoveDescription_SteelWing: @ 83BEE47
- .string "Trifft den Gegner hart mit\n"
- .string "ausgebreiteten Flügeln.$"
-
-gMoveDescription_MeanLook: @ 83BEE74
- .string "Böser Blick, der die Flucht\n"
- .string "des Gegners vereitelt.$"
-
-gMoveDescription_Attract: @ 83BEEA9
- .string "Angriff des anderen Ge-\n"
- .string "schlechts unwahrscheinl.$"
-
-gMoveDescription_SleepTalk: @ 83BEEDA
- .string "Benutzt per Zufall eine\n"
- .string "Attacke im Schlaf.$"
-
-gMoveDescription_HealBell: @ 83BEF02
- .string "Läutet beruhigend, heilt\n"
- .string "alle Status-Veränderungen.$"
-
-gMoveDescription_Return: @ 83BEF36
- .string "Angriff, dessen Kraft bei \n"
- .string "Freundschaft größer wird.$"
-
-gMoveDescription_Present: @ 83BEF69
- .string "Eine Bombe als Geschenk. Es\n"
- .string "kann KP wiederherstellen.$"
-
-gMoveDescription_Frustration: @ 83BEF97
- .string "Die Attacke ist stärker bei\n"
- .string "verhassten TRAINERn.$"
-
-gMoveDescription_Safeguard: @ 83BEFCE
- .string "Mystische Kraft, die alle\n"
- .string "Statusprobleme verhindert.$"
-
-gMoveDescription_PainSplit: @ 83BEFFD
- .string "Addiert KP v. Anwender u.\n"
- .string "Gegner, teilt gerecht auf.$"
-
-gMoveDescription_SacredFire: @ 83BF033
- .string "Mystische Feuer-Attacke, \n"
- .string "die d. Geg. evtl. verbrennt.$"
-
-gMoveDescription_Magnitude: @ 83BF063
- .string "Ein erdbebenartiger An-\n"
- .string "griff von zufälliger Stärke.$"
-
-gMoveDescription_DynamicPunch: @ 83BF090
- .string "Kräftige Attacke, die ver-\n"
- .string "wirrt, aber ungenau ist.$"
-
-gMoveDescription_Megahorn: @ 83BF0C6
- .string "Brutaler Frontalangriff\n"
- .string "mit spitzen Hörnern.$"
-
-gMoveDescription_DragonBreath: @ 83BF0F6
- .string "Fegt den Gegner mit zer-\n"
- .string "störerisch heißem Atem weg.$"
-
-gMoveDescription_BatonPass: @ 83BF12A
- .string "Tauscht PKMN aus. Alle Än-\n"
- .string "derungen bleiben bestehen.$"
-
-gMoveDescription_Encore: @ 83BF15F
- .string "Gegner wiederholt letzten\n"
- .string "Angriff 2 - 6-mal.$"
-
-gMoveDescription_Pursuit: @ 83BF195
- .string "Richtet großen Schaden bei\n"
- .string "Austausch des Gegners an.$"
-
-gMoveDescription_RapidSpin: @ 83BF1C9
- .string "Trifft den Gegner durch\n"
- .string "Drehen mit max. Tempo.$"
-
-gMoveDescription_SweetScent: @ 83BF1F9
- .string "Lockt Gegner an und senkt\n"
- .string "seinen Fluchtwert.$"
-
-gMoveDescription_IronTail: @ 83BF220
- .string "Att. mit hartem Schweif. \n"
- .string "Senkt evtl. VERT.-Wert.$"
-
-gMoveDescription_MetalClaw: @ 83BF252
- .string "Klauen-Attacke. Evtl. Er-\n"
- .string "höhung d. ANGR.-Wert d. Anw.$"
-
-gMoveDescription_VitalThrow: @ 83BF282
- .string "Attacke stets gleich, aber\n"
- .string "mit Treffergarantie.$"
-
-gMoveDescription_MorningSun: @ 83BF2B3
- .string "Füllt KP auf. Die Menge\n"
- .string "hängt vom Wetter ab.$"
-
-gMoveDescription_Synthesis: @ 83BF2E4
- .string "Füllt KP auf. Die Menge\n"
- .string "hängt vom Wetter ab.$"
-
-gMoveDescription_Moonlight: @ 83BF315
- .string "Füllt KP auf. Die Menge\n"
- .string "hängt vom Wetter ab.$"
-
-gMoveDescription_HiddenPower: @ 83BF346
- .string "Die Wirkung dieser Attacke\n"
- .string "hängt vom Benutzer ab.$"
-
-gMoveDescription_CrossChop: @ 83BF36E
- .string "Doppelter Hieb. Hohe \n"
- .string "Volltrefferquote.$"
-
-gMoveDescription_Twister: @ 83BF3A1
- .string "Trifft Gegner mit\n"
- .string "heftigem Wirbelsturm.$"
-
-gMoveDescription_RainDance: @ 83BF3D0
- .string "Erhöht Stärke von WASSER-\n"
- .string "Attacken 5 Runden lang.$"
-
-gMoveDescription_SunnyDay: @ 83BF403
- .string "Erhöht Stärke von FEUER-\n"
- .string "Attacken 5 Runden lang.$"
-
-gMoveDescription_Crunch: @ 83BF435
- .string "Beißt mit Reißzähnen zu und\n"
- .string "senkt evtl. SPEZ. VERT.$"
-
-gMoveDescription_MirrorCoat: @ 83BF463
- .string "Kontert d. Spezial-Attacke\n"
- .string "d. Geg. mit 2-facher Kraft.$"
-
-gMoveDescription_PsychUp: @ 83BF49A
- .string "Kopiert Effekte d. Gegners\n"
- .string "u. gibt sie dem Angreifer.$"
-
-gMoveDescription_ExtremeSpeed: @ 83BF4CC
- .string "Extrem schnelle und kraft-\n"
- .string "volle Attacke.$"
-
-gMoveDescription_AncientPower: @ 83BF4F3
- .string "Ein Angriff, der alle\n"
- .string "Status-Werte erhöhen kann.$"
-
-gMoveDescription_ShadowBall: @ 83BF517
- .string "Bewirft Gegner und senkt\n"
- .string "evtl. SPEZ. VERT.$"
-
-gMoveDescription_FutureSight: @ 83BF54C
- .string "Stärkt innere Kraft. Trifft\n"
- .string "2 Runden später.$"
-
-gMoveDescription_RockSmash: @ 83BF57B
- .string "Zertrümmernder Angriff, \n"
- .string "der evtl. VERT.-Wert senkt.$"
-
-gMoveDescription_Whirlpool: @ 83BF5AA
- .string "Hält Gegner 2-5 Züge in\n"
- .string "einem Strudel gefangen.$"
-
-gMoveDescription_BeatUp: @ 83BF5E3
- .string "Ruft POKéMON hinzu, um an\n"
- .string "dem Angriff teilzuhaben.$"
-
-gMoveDescription_FakeOut: @ 83BF610
- .string "Trifft schon mit dem ersten\n"
- .string "Schlag. Verjagt Gegner evtl.$"
-
-gMoveDescription_Uproar: @ 83BF643
- .string "Erzeugt für 2-5 Züge einen\n"
- .string "Aufruhr. Verhindert Schlaf.$"
-
-gMoveDescription_Stockpile: @ 83BF679
- .string "Lädt Kraft für bis zu 3\n"
- .string "Runden auf.$"
-
-gMoveDescription_SpitUp: @ 83BF69D
- .string "Entlädt gehortete Kraft.\n"
- .string "Je mehr, desto besser.$"
-
-gMoveDescription_Swallow: @ 83BF6CE
- .string "Absorbiert gehortete\n"
- .string "Kraft. Stellt KP wieder her.$"
-
-gMoveDescription_HeatWave: @ 83BF6F8
- .string "Gegner wird von heißem Atem\n"
- .string "getroffen. Verbrennt evtl.$"
-
-gMoveDescription_Hail: @ 83BF72D
- .string "Erzeugt Hagelsturm, der in\n"
- .string "jeder Runde trifft.$"
-
-gMoveDescription_Torment: @ 83BF75A
- .string "Quält Gegner u. verhindert\n"
- .string "Wdh. eines Angriffs.$"
-
-gMoveDescription_Flatter: @ 83BF78F
- .string "Verwirrt den Gegner, erhöht\n"
- .string "aber dessen SPEZ. ANGR.$"
-
-gMoveDescription_WillOWisp: @ 83BF7B9
- .string "Fügt dem Gegner \n"
- .string "Verbrennungen zu.$"
-
-gMoveDescription_Memento: @ 83BF7E7
- .string "Der Benutzer ist besiegt\n"
- .string "und senkt die gegn. Werte.$"
-
-gMoveDescription_Facade: @ 83BF817
- .string "Erhöht ANGR. nach Verbren-\n"
- .string "nung, Paralyse o. Vergift.$"
-
-gMoveDescription_FocusPunch: @ 83BF84A
- .string "Angriff, der später trifft.\n"
- .string "Ben. schreckt evtl. zurück.$"
-
-gMoveDescription_SmellingSalt: @ 83BF87F
- .string "Effektiv geg. paralysierte\n"
- .string "Gegner. Heilt sie aber auch.$"
-
-gMoveDescription_FollowMe: @ 83BF8B5
- .string "Zieht Aufmerksamkeit an.\n"
- .string "Gegner greift nur Anw. an.$"
-
-gMoveDescription_NaturePower: @ 83BF8E8
- .string "Die Elementklasse des\n"
- .string "Angriffs hängt vom Ort ab.$"
-
-gMoveDescription_Charge: @ 83BF91D
- .string "Lädt Energie für den kom-\n"
- .string "menden Elektro-Angr. auf.$"
-
-gMoveDescription_Taunt: @ 83BF951
- .string "Legt den Gegner rein. Er\n"
- .string "benutzt nur noch Angriffe.$"
-
-gMoveDescription_HelpingHand: @ 83BF97E
- .string "Steigert die Kraft der An-\n"
- .string "griffe des Getroffenen.$"
-
-gMoveDescription_Trick: @ 83BF9A9
- .string "Betrügt beim Handel\n"
- .string "mit Gegenständen.$"
-
-gMoveDescription_RolePlay: @ 83BF9D1
- .string "Parodiert Gegner u. kopiert\n"
- .string "seine Spezialfähigkeiten.$"
-
-gMoveDescription_Wish: @ 83BFA03
- .string "Ein Wunsch, der KP auffüllt.\n"
- .string "Die Erfüllung braucht Zeit.$"
-
-gMoveDescription_Assist: @ 83BFA33
- .string "Greift zufällig mit einem\n"
- .string "Angriff d. Partners an.$"
-
-gMoveDescription_Ingrain: @ 83BFA65
- .string "Verwurzelung füllt KP auf.\n"
- .string "Austausch unmöglich.$"
-
-gMoveDescription_Superpower: @ 83BFA9C
- .string "Steigert Stärke deutlich,\n"
- .string "senkt aber Status-Werte.$"
-
-gMoveDescription_MagicCoat: @ 83BFACB
- .string "Gibt Spezialeffekte zurück\n"
- .string "an Benutzer.$"
-
-gMoveDescription_Recycle: @ 83BFAFA
- .string "Recycling eines\n"
- .string "verwendeten Items.$"
-
-gMoveDescription_Revenge: @ 83BFB21
- .string "Attacke wird stärker, wenn\n"
- .string "Anwender Schaden nimmt.$"
-
-gMoveDescription_BrickBreak: @ 83BFB53
- .string "Durchbricht Barrieren und\n"
- .string "verursacht Schaden.$"
-
-gMoveDescription_Yawn: @ 83BFB88
- .string "Gegner gähnt und schläft\n"
- .string "in der nächsten Runde ein.$"
-
-gMoveDescription_KnockOff: @ 83BFBBD
- .string "Schlägt Gegner Item weg.\n"
- .string "Vereitelt so den Gebrauch.$"
-
-gMoveDescription_Endeavor: @ 83BFBF1
- .string "Wird stärker, wenn Anw.-KP\n"
- .string "geringer als Gegner-KP ist.$"
-
-gMoveDescription_Eruption: @ 83BFC2A
- .string "Je höher KP des Benutzers,\n"
- .string "desto mehr Schaden.$"
-
-gMoveDescription_SkillSwap: @ 83BFC5C
- .string "Anw. tauscht Spezial-\n"
- .string "fähigkeit mit POKéMON.$"
-
-gMoveDescription_Imprison: @ 83BFC8E
- .string "Hindert Gegner an Atta-\n"
- .string "cken, die d. Benutzer kennt.$"
-
-gMoveDescription_Refresh: @ 83BFCC0
- .string "Kuriert Vergiftungen, Para-\n"
- .string "lyse und Verbrennung.$"
-
-gMoveDescription_Grudge: @ 83BFCE7
- .string "Wenn Anw. bes., werden AP\n"
- .string "der Finalattacke gelöscht.$"
-
-gMoveDescription_Snatch: @ 83BFD1D
- .string "Immunität geg. den Effekt\n"
- .string "d. nächsten gegn. Angriffs.$"
-
-gMoveDescription_SecretPower: @ 83BFD4F
- .string "Angriff, dessen Auswirkung\n"
- .string "abhängig vom Ort ist.$"
-
-gMoveDescription_Dive: @ 83BFD7D
- .string "Taucht in der 1. Runde\n"
- .string "unter u. trifft in der 2.$"
-
-gMoveDescription_ArmThrust: @ 83BFDB4
- .string "Schläge mit geradem Arm, die\n"
- .string "Gegner 2 - 5-mal treffen.$"
-
-gMoveDescription_Camouflage: @ 83BFDEB
- .string "Die Elementklasse des\n"
- .string "POKéMON hängt vom Ort ab.$"
-
-gMoveDescription_TailGlow: @ 83BFE20
- .string "Ein blinkendes Licht. SPEZ.\n"
- .string "ANGR. wird deutlich erhöht.$"
-
-gMoveDescription_LusterPurge: @ 83BFE4D
- .string "Angriff mit grellem Licht.\n"
- .string "Senkt evtl. SPEZ. VERT.$"
-
-gMoveDescription_MistBall: @ 83BFE7F
- .string "Angriff m. Daunengestöber,\n"
- .string "Senkt evtl. SPEZ. ANGR.$"
-
-gMoveDescription_FeatherDance: @ 83BFEB1
- .string "Hüllt Gegner in Daunen und\n"
- .string "senkt ANGR.-Wert deutlich.$"
-
-gMoveDescription_TeeterDance: @ 83BFEE6
- .string "Verwirrt alle POKéMON im \n"
- .string "Kampf.$"
-
-gMoveDescription_BlazeKick: @ 83BFF09
- .string "Hohe Volltrefferquote. Ver-\n"
- .string "ursacht evtl. Verbrennung.$"
-
-gMoveDescription_MudSport: @ 83BFF43
- .string "Bedeckt Anw. mit Lehm u. er-\n"
- .string "höht Schutz geg. Elek.-Att.$"
-
-gMoveDescription_IceBall: @ 83BFF7A
- .string "Angriff für 5 Runden. \n"
- .string "Stärker, wenn Treffer.$"
-
-gMoveDescription_NeedleArm: @ 83BFFAF
- .string "Angriff mit dornigen Armen. \n"
- .string "Geg. schreckt evtl. zurück.$"
-
-gMoveDescription_SlackOff: @ 83BFFDE
- .string "Durch Müßiggang wird die\n"
- .string "Hälfte d. max. KP aufgefüllt.$"
-
-gMoveDescription_HyperVoice: @ 83C000B
- .string "Laute Attacke mit Schall-\n"
- .string "wellen.$"
-
-gMoveDescription_PoisonFang: @ 83C003A
- .string "Angriff mit Reißzähnen. \n"
- .string "Gegner wird evtl. vergiftet.$"
-
-gMoveDescription_CrushClaw: @ 83C006B
- .string "Angriff mit scharfen Klau-\n"
- .string "en. Senkt evtl. VERT.-Wert.$"
-
-gMoveDescription_BlastBurn: @ 83C00A1
- .string "Starker Angriff. Angreifer\n"
- .string "muss eine Runde aussetzen.$"
-
-gMoveDescription_HydroCannon: @ 83C00D7
- .string "Starker Angriff. Angreifer\n"
- .string "muss eine Runde aussetzen.$"
-
-gMoveDescription_MeteorMash: @ 83C010D
- .string "Ein Schlag wie ein Meteor.\n"
- .string "Erhöht evtl. ANGR.-Wert.$"
-
-gMoveDescription_Astonish: @ 83C013A
- .string "Angriff, der Gegner evtl.\n"
- .string "zurückschrecken lässt.$"
-
-gMoveDescription_WeatherBall: @ 83C016B
- .string "Elementkl. u. Stärke der At-\n"
- .string "tacke sind wetterabhängig.$"
-
-gMoveDescription_Aromatherapy: @ 83C019E
- .string "Heilt alle Status-Probleme\n"
- .string "mit beruhigendem Duft.$"
-
-gMoveDescription_FakeTears: @ 83C01CF
- .string "Täuscht Weinen vor, um\n"
- .string "gegn. SPEZ. VERT. zu senken.$"
-
-gMoveDescription_AirCutter: @ 83C0201
- .string "Greift mit heftigem Wind an.\n"
- .string "Hohe Volltrefferquote.$"
-
-gMoveDescription_Overheat: @ 83C0235
- .string "Angriff mit voller Kraft.\n"
- .string "SPEZ. ANGR. sinkt deutlich.$"
-
-gMoveDescription_OdorSleuth: @ 83C026D
- .string "Hindert Gegner daran, ihren\n"
- .string "Fluchtwert zu erhöhen.$"
-
-gMoveDescription_RockTomb: @ 83C02A0
- .string "Hält den Feind mit Steinen\n"
- .string "auf u. senkt INIT.-Wert.$"
-
-gMoveDescription_SilverWind: @ 83C02D5
- .string "Pulver-Attacke, die evtl.\n"
- .string "die Werte erhöht.$"
-
-gMoveDescription_MetalSound: @ 83C0300
- .string "Stößt einen spitzen Schrei\n"
- .string "aus. Senkt SPEZ. VERT.$"
-
-gMoveDescription_GrassWhistle: @ 83C0336
- .string "Versetzt Gegner mit schö-\n"
- .string "ner Melodie in den Schlaf.$"
-
-gMoveDescription_Tickle: @ 83C0367
- .string "Bringt Gegner zum Lachen.\n"
- .string "ANGR. u. VERT. sinken.$"
-
-gMoveDescription_CosmicPower: @ 83C0398
- .string "Erhöht VERT. u. SPEZ. VERT.\n"
- .string "durch mystische Kraft.$"
-
-gMoveDescription_WaterSpout: @ 83C03C8
- .string "Ist wirkungsvoller, wenn KP\n"
- .string "des Benutzers hoch sind.$"
-
-gMoveDescription_SignalBeam: @ 83C03F7
- .string "Seltsame Strahlenattacke.\n"
- .string "Verwirrt evtl. den Gegner.$"
-
-gMoveDescription_ShadowPunch: @ 83C0427
- .string "Schattenhieb. Ausweichen\n"
- .string "unmöglich.$"
-
-gMoveDescription_Extrasensory: @ 83C0459
- .string "Besonderer Angriff. Gegner\n"
- .string "schreckt evtl. zurück.$"
-
-gMoveDescription_SkyUppercut: @ 83C048D
- .string "Kinnhaken, als würde man in\n"
- .string "die Luft springen.$"
-
-gMoveDescription_SandTomb: @ 83C04BC
- .string "Gegner leidet für 2-5\n"
- .string "Runden in Sandhose.$"
-
-gMoveDescription_SheerCold: @ 83C04F3
- .string "Eis-Attacke. Besiegt den\n"
- .string "Gegner, wenn sie trifft.$"
-
-gMoveDescription_MuddyWater: @ 83C0526
- .string "Greift mit Matsch an und\n"
- .string "senkt evtl. Genauigkeit.$"
-
-gMoveDescription_BulletSeed: @ 83C0554
- .string "Verschießt 2 bis 5 Samen\n"
- .string "gleichzeitig auf Gegner.$"
-
-gMoveDescription_AerialAce: @ 83C0584
- .string "Eine extrem schnelle und\n"
- .string "unausweichbare Attacke.$"
-
-gMoveDescription_IcicleSpear: @ 83C05B0
- .string "Feuert 2-5 Eiszapfen auf\n"
- .string "den Gegner.$"
-
-gMoveDescription_IronDefense: @ 83C05E3
- .string "Stärkt den Körper.\n"
- .string "Erhöht VERT.-Wert deutlich.$"
-
-gMoveDescription_Block: @ 83C0618
- .string "Versperrt den Fluchtweg\n"
- .string "des Gegners.$"
-
-gMoveDescription_Howl: @ 83C0640
- .string "Jault, um in sich zu gehen.\n"
- .string "Erhöht ANGR.-Wert.$"
-
-gMoveDescription_DragonClaw: @ 83C066D
- .string "Der Gegner wird mit\n"
- .string "scharfen Klauen verletzt.$"
-
-gMoveDescription_FrenzyPlant: @ 83C068F
- .string "Starker Angriff. Angreifer\n"
- .string "muss eine Runde aussetzen.$"
-
-gMoveDescription_BulkUp: @ 83C06C5
- .string "Pumpt den Körper auf. ANGR.\n"
- .string "u. VERT. werden erhöht.$"
-
-gMoveDescription_Bounce: @ 83C06F9
- .string "Springt hoch u. landet in\n"
- .string "nächstem Zug. Evtl. Para.$"
-
-gMoveDescription_MudShot: @ 83C072C
- .string "Bewirft den Gegner mit Lehm\n"
- .string "und senkt INIT.-Wert.$"
-
-gMoveDescription_PoisonTail: @ 83C0754
- .string "Hohe Volltrefferquote.\n"
- .string "Gegner evtl. vergiftet.$"
-
-gMoveDescription_Covet: @ 83C0784
- .string "Bittet charmant um das ge-\n"
- .string "haltene Item des Gegners.$"
-
-gMoveDescription_VoltTackle: @ 83C07B3
- .string "Lebensgefährliche Attacke,\n"
- .string "leichte Selbstschädigung.$"
-
-gMoveDescription_MagicalLeaf: @ 83C07E7
- .string "Magischer Blattangriff.\n"
- .string "Ausweichen unmöglich.$"
-
-gMoveDescription_WaterSport: @ 83C081A
- .string "Benutzer wird nass, so dass\n"
- .string "er Feuer besser standhält.$"
-
-gMoveDescription_CalmMind: @ 83C084F
- .string "Erhöht SPEZ. ANGR. u. SPEZ.\n"
- .string "VERT. durch Konzentration.$"
-
-gMoveDescription_LeafBlade: @ 83C0880
- .string "Hieb mit scharfkantigem\n"
- .string "Blatt. Hohe Volltrefferqu.$"
-
-gMoveDescription_DragonDance: @ 83C08B4
- .string "Ein mystischer Tanz, der\n"
- .string "ANGR.- u. INIT.-Wert erhöht.$"
-
-gMoveDescription_RockBlast: @ 83C08E0
- .string "Wirft 2 - 5-mal in Folge\n"
- .string "Felsblöcke auf den Gegner.$"
-
-gMoveDescription_ShockWave: @ 83C0911
- .string "Schnelle Elektro-Attacke\n"
- .string "mit Treffergarantie.$"
-
-gMoveDescription_WaterPulse: @ 83C0939
- .string "Ultraschallwellen, die den\n"
- .string "Gegner verwirren können.$"
-
-gMoveDescription_DoomDesire: @ 83C096C
- .string "Speichert Sonnenenergie.\n"
- .string "Angriff 2 Runden später.$"
-
-gMoveDescription_PsychoBoost: @ 83C099D
- .string "Angriff mit voller Kraft.\n"
- .string "SPEZ. ANGR. sinkt deutlich.$"
-
- .align 2
-gMoveDescriptions:: @ 83C09D8
- .4byte gMoveDescription_Pound
- .4byte gMoveDescription_KarateChop
- .4byte gMoveDescription_DoubleSlap
- .4byte gMoveDescription_CometPunch
- .4byte gMoveDescription_MegaPunch
- .4byte gMoveDescription_PayDay
- .4byte gMoveDescription_FirePunch
- .4byte gMoveDescription_IcePunch
- .4byte gMoveDescription_ThunderPunch
- .4byte gMoveDescription_Scratch
- .4byte gMoveDescription_ViceGrip
- .4byte gMoveDescription_Guillotine
- .4byte gMoveDescription_RazorWind
- .4byte gMoveDescription_SwordsDance
- .4byte gMoveDescription_Cut
- .4byte gMoveDescription_Gust
- .4byte gMoveDescription_WingAttack
- .4byte gMoveDescription_Whirlwind
- .4byte gMoveDescription_Fly
- .4byte gMoveDescription_Bind
- .4byte gMoveDescription_Slam
- .4byte gMoveDescription_VineWhip
- .4byte gMoveDescription_Stomp
- .4byte gMoveDescription_DoubleKick
- .4byte gMoveDescription_MegaKick
- .4byte gMoveDescription_JumpKick
- .4byte gMoveDescription_RollingKick
- .4byte gMoveDescription_SandAttack
- .4byte gMoveDescription_Headbutt
- .4byte gMoveDescription_HornAttack
- .4byte gMoveDescription_FuryAttack
- .4byte gMoveDescription_HornDrill
- .4byte gMoveDescription_Tackle
- .4byte gMoveDescription_BodySlam
- .4byte gMoveDescription_Wrap
- .4byte gMoveDescription_TakeDown
- .4byte gMoveDescription_Thrash
- .4byte gMoveDescription_DoubleEdge
- .4byte gMoveDescription_TailWhip
- .4byte gMoveDescription_PoisonSting
- .4byte gMoveDescription_Twineedle
- .4byte gMoveDescription_PinMissile
- .4byte gMoveDescription_Leer
- .4byte gMoveDescription_Bite
- .4byte gMoveDescription_Growl
- .4byte gMoveDescription_Roar
- .4byte gMoveDescription_Sing
- .4byte gMoveDescription_Supersonic
- .4byte gMoveDescription_SonicBoom
- .4byte gMoveDescription_Disable
- .4byte gMoveDescription_Acid
- .4byte gMoveDescription_Ember
- .4byte gMoveDescription_Flamethrower
- .4byte gMoveDescription_Mist
- .4byte gMoveDescription_WaterGun
- .4byte gMoveDescription_HydroPump
- .4byte gMoveDescription_Surf
- .4byte gMoveDescription_IceBeam
- .4byte gMoveDescription_Blizzard
- .4byte gMoveDescription_Psybeam
- .4byte gMoveDescription_BubbleBeam
- .4byte gMoveDescription_AuroraBeam
- .4byte gMoveDescription_HyperBeam
- .4byte gMoveDescription_Peck
- .4byte gMoveDescription_DrillPeck
- .4byte gMoveDescription_Submission
- .4byte gMoveDescription_LowKick
- .4byte gMoveDescription_Counter
- .4byte gMoveDescription_SeismicToss
- .4byte gMoveDescription_Strength
- .4byte gMoveDescription_Absorb
- .4byte gMoveDescription_MegaDrain
- .4byte gMoveDescription_LeechSeed
- .4byte gMoveDescription_Growth
- .4byte gMoveDescription_RazorLeaf
- .4byte gMoveDescription_SolarBeam
- .4byte gMoveDescription_PoisonPowder
- .4byte gMoveDescription_StunSpore
- .4byte gMoveDescription_SleepPowder
- .4byte gMoveDescription_PetalDance
- .4byte gMoveDescription_StringShot
- .4byte gMoveDescription_DragonRage
- .4byte gMoveDescription_FireSpin
- .4byte gMoveDescription_ThunderShock
- .4byte gMoveDescription_Thunderbolt
- .4byte gMoveDescription_ThunderWave
- .4byte gMoveDescription_Thunder
- .4byte gMoveDescription_RockThrow
- .4byte gMoveDescription_Earthquake
- .4byte gMoveDescription_Fissure
- .4byte gMoveDescription_Dig
- .4byte gMoveDescription_Toxic
- .4byte gMoveDescription_Confusion
- .4byte gMoveDescription_Psychic
- .4byte gMoveDescription_Hypnosis
- .4byte gMoveDescription_Meditate
- .4byte gMoveDescription_Agility
- .4byte gMoveDescription_QuickAttack
- .4byte gMoveDescription_Rage
- .4byte gMoveDescription_Teleport
- .4byte gMoveDescription_NightShade
- .4byte gMoveDescription_Mimic
- .4byte gMoveDescription_Screech
- .4byte gMoveDescription_DoubleTeam
- .4byte gMoveDescription_Recover
- .4byte gMoveDescription_Harden
- .4byte gMoveDescription_Minimize
- .4byte gMoveDescription_Smokescreen
- .4byte gMoveDescription_ConfuseRay
- .4byte gMoveDescription_Withdraw
- .4byte gMoveDescription_DefenseCurl
- .4byte gMoveDescription_Barrier
- .4byte gMoveDescription_LightScreen
- .4byte gMoveDescription_Haze
- .4byte gMoveDescription_Reflect
- .4byte gMoveDescription_FocusEnergy
- .4byte gMoveDescription_Bide
- .4byte gMoveDescription_Metronome
- .4byte gMoveDescription_MirrorMove
- .4byte gMoveDescription_SelfDestruct
- .4byte gMoveDescription_EggBomb
- .4byte gMoveDescription_Lick
- .4byte gMoveDescription_Smog
- .4byte gMoveDescription_Sludge
- .4byte gMoveDescription_BoneClub
- .4byte gMoveDescription_FireBlast
- .4byte gMoveDescription_Waterfall
- .4byte gMoveDescription_Clamp
- .4byte gMoveDescription_Swift
- .4byte gMoveDescription_SkullBash
- .4byte gMoveDescription_SpikeCannon
- .4byte gMoveDescription_Constrict
- .4byte gMoveDescription_Amnesia
- .4byte gMoveDescription_Kinesis
- .4byte gMoveDescription_SoftBoiled
- .4byte gMoveDescription_HiJumpKick
- .4byte gMoveDescription_Glare
- .4byte gMoveDescription_DreamEater
- .4byte gMoveDescription_PoisonGas
- .4byte gMoveDescription_Barrage
- .4byte gMoveDescription_LeechLife
- .4byte gMoveDescription_LovelyKiss
- .4byte gMoveDescription_SkyAttack
- .4byte gMoveDescription_Transform
- .4byte gMoveDescription_Bubble
- .4byte gMoveDescription_DizzyPunch
- .4byte gMoveDescription_Spore
- .4byte gMoveDescription_Flash
- .4byte gMoveDescription_Psywave
- .4byte gMoveDescription_Splash
- .4byte gMoveDescription_AcidArmor
- .4byte gMoveDescription_Crabhammer
- .4byte gMoveDescription_Explosion
- .4byte gMoveDescription_FurySwipes
- .4byte gMoveDescription_Bonemerang
- .4byte gMoveDescription_Rest
- .4byte gMoveDescription_RockSlide
- .4byte gMoveDescription_HyperFang
- .4byte gMoveDescription_Sharpen
- .4byte gMoveDescription_Conversion
- .4byte gMoveDescription_TriAttack
- .4byte gMoveDescription_SuperFang
- .4byte gMoveDescription_Slash
- .4byte gMoveDescription_Substitute
- .4byte gMoveDescription_Struggle
- .4byte gMoveDescription_Sketch
- .4byte gMoveDescription_TripleKick
- .4byte gMoveDescription_Thief
- .4byte gMoveDescription_SpiderWeb
- .4byte gMoveDescription_MindReader
- .4byte gMoveDescription_Nightmare
- .4byte gMoveDescription_FlameWheel
- .4byte gMoveDescription_Snore
- .4byte gMoveDescription_Curse
- .4byte gMoveDescription_Flail
- .4byte gMoveDescription_Conversion2
- .4byte gMoveDescription_Aeroblast
- .4byte gMoveDescription_CottonSpore
- .4byte gMoveDescription_Reversal
- .4byte gMoveDescription_Spite
- .4byte gMoveDescription_PowderSnow
- .4byte gMoveDescription_Protect
- .4byte gMoveDescription_MachPunch
- .4byte gMoveDescription_ScaryFace
- .4byte gMoveDescription_FaintAttack
- .4byte gMoveDescription_SweetKiss
- .4byte gMoveDescription_BellyDrum
- .4byte gMoveDescription_SludgeBomb
- .4byte gMoveDescription_MudSlap
- .4byte gMoveDescription_Octazooka
- .4byte gMoveDescription_Spikes
- .4byte gMoveDescription_ZapCannon
- .4byte gMoveDescription_Foresight
- .4byte gMoveDescription_DestinyBond
- .4byte gMoveDescription_PerishSong
- .4byte gMoveDescription_IcyWind
- .4byte gMoveDescription_Detect
- .4byte gMoveDescription_BoneRush
- .4byte gMoveDescription_LockOn
- .4byte gMoveDescription_Outrage
- .4byte gMoveDescription_Sandstorm
- .4byte gMoveDescription_GigaDrain
- .4byte gMoveDescription_Endure
- .4byte gMoveDescription_Charm
- .4byte gMoveDescription_Rollout
- .4byte gMoveDescription_FalseSwipe
- .4byte gMoveDescription_Swagger
- .4byte gMoveDescription_MilkDrink
- .4byte gMoveDescription_Spark
- .4byte gMoveDescription_FuryCutter
- .4byte gMoveDescription_SteelWing
- .4byte gMoveDescription_MeanLook
- .4byte gMoveDescription_Attract
- .4byte gMoveDescription_SleepTalk
- .4byte gMoveDescription_HealBell
- .4byte gMoveDescription_Return
- .4byte gMoveDescription_Present
- .4byte gMoveDescription_Frustration
- .4byte gMoveDescription_Safeguard
- .4byte gMoveDescription_PainSplit
- .4byte gMoveDescription_SacredFire
- .4byte gMoveDescription_Magnitude
- .4byte gMoveDescription_DynamicPunch
- .4byte gMoveDescription_Megahorn
- .4byte gMoveDescription_DragonBreath
- .4byte gMoveDescription_BatonPass
- .4byte gMoveDescription_Encore
- .4byte gMoveDescription_Pursuit
- .4byte gMoveDescription_RapidSpin
- .4byte gMoveDescription_SweetScent
- .4byte gMoveDescription_IronTail
- .4byte gMoveDescription_MetalClaw
- .4byte gMoveDescription_VitalThrow
- .4byte gMoveDescription_MorningSun
- .4byte gMoveDescription_Synthesis
- .4byte gMoveDescription_Moonlight
- .4byte gMoveDescription_HiddenPower
- .4byte gMoveDescription_CrossChop
- .4byte gMoveDescription_Twister
- .4byte gMoveDescription_RainDance
- .4byte gMoveDescription_SunnyDay
- .4byte gMoveDescription_Crunch
- .4byte gMoveDescription_MirrorCoat
- .4byte gMoveDescription_PsychUp
- .4byte gMoveDescription_ExtremeSpeed
- .4byte gMoveDescription_AncientPower
- .4byte gMoveDescription_ShadowBall
- .4byte gMoveDescription_FutureSight
- .4byte gMoveDescription_RockSmash
- .4byte gMoveDescription_Whirlpool
- .4byte gMoveDescription_BeatUp
- .4byte gMoveDescription_FakeOut
- .4byte gMoveDescription_Uproar
- .4byte gMoveDescription_Stockpile
- .4byte gMoveDescription_SpitUp
- .4byte gMoveDescription_Swallow
- .4byte gMoveDescription_HeatWave
- .4byte gMoveDescription_Hail
- .4byte gMoveDescription_Torment
- .4byte gMoveDescription_Flatter
- .4byte gMoveDescription_WillOWisp
- .4byte gMoveDescription_Memento
- .4byte gMoveDescription_Facade
- .4byte gMoveDescription_FocusPunch
- .4byte gMoveDescription_SmellingSalt
- .4byte gMoveDescription_FollowMe
- .4byte gMoveDescription_NaturePower
- .4byte gMoveDescription_Charge
- .4byte gMoveDescription_Taunt
- .4byte gMoveDescription_HelpingHand
- .4byte gMoveDescription_Trick
- .4byte gMoveDescription_RolePlay
- .4byte gMoveDescription_Wish
- .4byte gMoveDescription_Assist
- .4byte gMoveDescription_Ingrain
- .4byte gMoveDescription_Superpower
- .4byte gMoveDescription_MagicCoat
- .4byte gMoveDescription_Recycle
- .4byte gMoveDescription_Revenge
- .4byte gMoveDescription_BrickBreak
- .4byte gMoveDescription_Yawn
- .4byte gMoveDescription_KnockOff
- .4byte gMoveDescription_Endeavor
- .4byte gMoveDescription_Eruption
- .4byte gMoveDescription_SkillSwap
- .4byte gMoveDescription_Imprison
- .4byte gMoveDescription_Refresh
- .4byte gMoveDescription_Grudge
- .4byte gMoveDescription_Snatch
- .4byte gMoveDescription_SecretPower
- .4byte gMoveDescription_Dive
- .4byte gMoveDescription_ArmThrust
- .4byte gMoveDescription_Camouflage
- .4byte gMoveDescription_TailGlow
- .4byte gMoveDescription_LusterPurge
- .4byte gMoveDescription_MistBall
- .4byte gMoveDescription_FeatherDance
- .4byte gMoveDescription_TeeterDance
- .4byte gMoveDescription_BlazeKick
- .4byte gMoveDescription_MudSport
- .4byte gMoveDescription_IceBall
- .4byte gMoveDescription_NeedleArm
- .4byte gMoveDescription_SlackOff
- .4byte gMoveDescription_HyperVoice
- .4byte gMoveDescription_PoisonFang
- .4byte gMoveDescription_CrushClaw
- .4byte gMoveDescription_BlastBurn
- .4byte gMoveDescription_HydroCannon
- .4byte gMoveDescription_MeteorMash
- .4byte gMoveDescription_Astonish
- .4byte gMoveDescription_WeatherBall
- .4byte gMoveDescription_Aromatherapy
- .4byte gMoveDescription_FakeTears
- .4byte gMoveDescription_AirCutter
- .4byte gMoveDescription_Overheat
- .4byte gMoveDescription_OdorSleuth
- .4byte gMoveDescription_RockTomb
- .4byte gMoveDescription_SilverWind
- .4byte gMoveDescription_MetalSound
- .4byte gMoveDescription_GrassWhistle
- .4byte gMoveDescription_Tickle
- .4byte gMoveDescription_CosmicPower
- .4byte gMoveDescription_WaterSpout
- .4byte gMoveDescription_SignalBeam
- .4byte gMoveDescription_ShadowPunch
- .4byte gMoveDescription_Extrasensory
- .4byte gMoveDescription_SkyUppercut
- .4byte gMoveDescription_SandTomb
- .4byte gMoveDescription_SheerCold
- .4byte gMoveDescription_MuddyWater
- .4byte gMoveDescription_BulletSeed
- .4byte gMoveDescription_AerialAce
- .4byte gMoveDescription_IcicleSpear
- .4byte gMoveDescription_IronDefense
- .4byte gMoveDescription_Block
- .4byte gMoveDescription_Howl
- .4byte gMoveDescription_DragonClaw
- .4byte gMoveDescription_FrenzyPlant
- .4byte gMoveDescription_BulkUp
- .4byte gMoveDescription_Bounce
- .4byte gMoveDescription_MudShot
- .4byte gMoveDescription_PoisonTail
- .4byte gMoveDescription_Covet
- .4byte gMoveDescription_VoltTackle
- .4byte gMoveDescription_MagicalLeaf
- .4byte gMoveDescription_WaterSport
- .4byte gMoveDescription_CalmMind
- .4byte gMoveDescription_LeafBlade
- .4byte gMoveDescription_DragonDance
- .4byte gMoveDescription_RockBlast
- .4byte gMoveDescription_ShockWave
- .4byte gMoveDescription_WaterPulse
- .4byte gMoveDescription_DoomDesire
- .4byte gMoveDescription_PsychoBoost
diff --git a/data-de/text/nature_names.inc b/data-de/text/nature_names.inc
deleted file mode 100644
index 78c49a14d..000000000
--- a/data-de/text/nature_names.inc
+++ /dev/null
@@ -1,102 +0,0 @@
-gNatureName_Hardy: @ 83C0F60
- .string "ROBUST$"
-
-gNatureName_Lonely: @ 83C0F66
- .string "SOLO$"
-
-gNatureName_Brave: @ 83C0F6D
- .string "MUTIG$"
-
-gNatureName_Adamant: @ 83C0F73
- .string "HART$"
-
-gNatureName_Naughty: @ 83C0F7B
- .string "FRECH$"
-
-gNatureName_Bold: @ 83C0F83
- .string "KÜHN$"
-
-gNatureName_Docile: @ 83C0F88
- .string "SANFT$"
-
-gNatureName_Relaxed: @ 83C0F8F
- .string "LOCKER$"
-
-gNatureName_Impish: @ 83C0F97
- .string "PFIFFIG$"
-
-gNatureName_Lax: @ 83C0F9E
- .string "LASCH$"
-
-gNatureName_Timid: @ 83C0FA2
- .string "SCHEU$"
-
-gNatureName_Hasty: @ 83C0FA8
- .string "HASTIG$"
-
-gNatureName_Serious: @ 83C0FAE
- .string "ERNST$"
-
-gNatureName_Jolly: @ 83C0FB6
- .string "FROH$"
-
-gNatureName_Naive: @ 83C0FBC
- .string "NAIV$"
-
-gNatureName_Modest: @ 83C0FC2
- .string "MÄSSIG$"
-
-gNatureName_Mild: @ 83C0FC9
- .string "MILD$"
-
-gNatureName_Quiet: @ 83C0FCE
- .string "RUHIG$"
-
-gNatureName_Bashful: @ 83C0FD4
- .string "ZAGHAFT$"
-
-gNatureName_Rash: @ 83C0FDC
- .string "HITZIG$"
-
-gNatureName_Calm: @ 83C0FE1
- .string "STILL$"
-
-gNatureName_Gentle: @ 83C0FE6
- .string "ZART$"
-
-gNatureName_Sassy: @ 83C0FED
- .string "FORSCH$"
-
-gNatureName_Careful: @ 83C0FF3
- .string "SACHT$"
-
-gNatureName_Quirky: @ 83C0FFB
- .string "KAUZIG$"
-
- .align 2
-gNatureNames:: @ 83C1004
- .4byte gNatureName_Hardy
- .4byte gNatureName_Lonely
- .4byte gNatureName_Brave
- .4byte gNatureName_Adamant
- .4byte gNatureName_Naughty
- .4byte gNatureName_Bold
- .4byte gNatureName_Docile
- .4byte gNatureName_Relaxed
- .4byte gNatureName_Impish
- .4byte gNatureName_Lax
- .4byte gNatureName_Timid
- .4byte gNatureName_Hasty
- .4byte gNatureName_Serious
- .4byte gNatureName_Jolly
- .4byte gNatureName_Naive
- .4byte gNatureName_Modest
- .4byte gNatureName_Mild
- .4byte gNatureName_Quiet
- .4byte gNatureName_Bashful
- .4byte gNatureName_Rash
- .4byte gNatureName_Calm
- .4byte gNatureName_Gentle
- .4byte gNatureName_Sassy
- .4byte gNatureName_Careful
- .4byte gNatureName_Quirky
diff --git a/data/graphics.s b/data/graphics.s
index f1c7c37a3..7792e8a9e 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -3960,6 +3960,9 @@ gUnknown_08E94510:: @ 8E94510
gUnknown_08E94550:: @ 8E94550
.incbin "graphics/unknown/unknown_E94550.bin"
+gUnknown_08E94590:: @ 8E94590
+ .incbin "graphics/unknown/unknown_E94590.bin"
+
gUnknown_08E945D0:: @ 8E945D0
.incbin "graphics/interface/wordgroup_layout.bin"
diff --git a/data/pokemon_summary_screen.s b/data/pokemon_summary_screen.s
deleted file mode 100644
index 5d577ca84..000000000
--- a/data/pokemon_summary_screen.s
+++ /dev/null
@@ -1,393 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-@ 83BC680
- .include "data/text/move_descriptions.inc"
-
-@ 83C0F60
- .include "data/text/nature_names.inc"
-
- .align 2
-gUnknown_083C1068:: @ 83C1068
- .4byte gEmptyString_81E72B0
- .4byte OtherText_PokeInfo
- .4byte OtherText_PokeSkills
- .4byte OtherText_BattleMoves
- .4byte OtherText_ContestMoves
- .4byte OtherText_Switch
- .4byte OtherText_Info
- .4byte gOtherText_CancelNoTerminator
-
- .align 2
-gSpriteAffineAnim_83C1088:: @ 83C1088
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnimTable_83C1098:: @ 83C1098
- .4byte gSpriteAffineAnim_83C1088
-
- .align 2
-gOamData_83C109C:: @ 83C109C
- .2byte 0x4000
- .2byte 0x8000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_83C10A4:: @ 83C10A4
- obj_image_anim_frame 0, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C10AC:: @ 83C10AC
- obj_image_anim_frame 8, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C10B4:: @ 83C10B4
- obj_image_anim_frame 16, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C10BC:: @ 83C10BC
- obj_image_anim_frame 24, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C10C4:: @ 83C10C4
- obj_image_anim_frame 32, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C10CC:: @ 83C10CC
- obj_image_anim_frame 40, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C10D4:: @ 83C10D4
- obj_image_anim_frame 48, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C10DC:: @ 83C10DC
- obj_image_anim_frame 56, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C10E4:: @ 83C10E4
- obj_image_anim_frame 64, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C10EC:: @ 83C10EC
- obj_image_anim_frame 72, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C10F4:: @ 83C10F4
- obj_image_anim_frame 80, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C10FC:: @ 83C10FC
- obj_image_anim_frame 88, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C1104:: @ 83C1104
- obj_image_anim_frame 96, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C110C:: @ 83C110C
- obj_image_anim_frame 104, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C1114:: @ 83C1114
- obj_image_anim_frame 112, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C111C:: @ 83C111C
- obj_image_anim_frame 120, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C1124:: @ 83C1124
- obj_image_anim_frame 128, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C112C:: @ 83C112C
- obj_image_anim_frame 136, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C1134:: @ 83C1134
- obj_image_anim_frame 144, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C113C:: @ 83C113C
- obj_image_anim_frame 152, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C1144:: @ 83C1144
- obj_image_anim_frame 160, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C114C:: @ 83C114C
- obj_image_anim_frame 168, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C1154:: @ 83C1154
- obj_image_anim_frame 176, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83C115C:: @ 83C115C
- .4byte gSpriteAnim_83C10A4
- .4byte gSpriteAnim_83C10AC
- .4byte gSpriteAnim_83C10B4
- .4byte gSpriteAnim_83C10BC
- .4byte gSpriteAnim_83C10C4
- .4byte gSpriteAnim_83C10CC
- .4byte gSpriteAnim_83C10D4
- .4byte gSpriteAnim_83C10DC
- .4byte gSpriteAnim_83C10E4
- .4byte gSpriteAnim_83C10EC
- .4byte gSpriteAnim_83C10F4
- .4byte gSpriteAnim_83C10FC
- .4byte gSpriteAnim_83C1104
- .4byte gSpriteAnim_83C110C
- .4byte gSpriteAnim_83C1114
- .4byte gSpriteAnim_83C111C
- .4byte gSpriteAnim_83C1124
- .4byte gSpriteAnim_83C112C
- .4byte gSpriteAnim_83C1134
- .4byte gSpriteAnim_83C113C
- .4byte gSpriteAnim_83C1144
- .4byte gSpriteAnim_83C114C
- .4byte gSpriteAnim_83C1154
-
- .align 2
-gUnknown_083C11B8:: @ 83C11B8
- obj_tiles gMoveTypes_Gfx, 5888, 0x7532
-
- .align 2
-gSpriteTemplate_83C11C0:: @ 83C11C0
- spr_template 30002, 30002, gOamData_83C109C, gSpriteAnimTable_83C115C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_083C11D8:: @ 83C11D8
- .byte 0xD,0xD,0xE,0xE,0xD,0xD,0xF,0xE,0xD,0xF,0xD,0xE,0xF,0xD,0xE,0xE,0xF,0xD,0xD,0xE,0xE,0xF,0xD
-
- .align 2
-gOamData_83C11F0:: @ 83C11F0
- .2byte 0x0000
- .2byte 0x4000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_83C11F8:: @ 83C11F8
- obj_image_anim_frame 0, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C1200:: @ 83C1200
- obj_image_anim_frame 4, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C1208:: @ 83C1208
- obj_image_anim_frame 8, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C1210:: @ 83C1210
- obj_image_anim_frame 12, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C1218:: @ 83C1218
- obj_image_anim_frame 16, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C1220:: @ 83C1220
- obj_image_anim_frame 16, 0, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C1228:: @ 83C1228
- obj_image_anim_frame 20, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C1230:: @ 83C1230
- obj_image_anim_frame 24, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C1238:: @ 83C1238
- obj_image_anim_frame 24, 0, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C1240:: @ 83C1240
- obj_image_anim_frame 28, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83C1248:: @ 83C1248
- .4byte gSpriteAnim_83C11F8
- .4byte gSpriteAnim_83C1200
- .4byte gSpriteAnim_83C1208
- .4byte gSpriteAnim_83C1210
- .4byte gSpriteAnim_83C1218
- .4byte gSpriteAnim_83C1220
- .4byte gSpriteAnim_83C1228
- .4byte gSpriteAnim_83C1230
- .4byte gSpriteAnim_83C1238
- .4byte gSpriteAnim_83C1240
-
- .align 2
-gUnknown_083C1270:: @ 83C1270
- obj_tiles gMenuSummaryGfx, 1024, 0x7530
-
- .align 2
-gUnknown_083C1278:: @ 83C1278
- obj_pal gMenuSummaryPal, 0x7530
-
- .align 2
-gSpriteTemplate_83C1280:: @ 83C1280
- spr_template 30000, 30000, gOamData_83C11F0, gSpriteAnimTable_83C1248, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gOamData_83C1298:: @ 83C1298
- .2byte 0x4000
- .2byte 0x4000
- .2byte 0x0C00
-
- .align 2
-gSpriteAnim_83C12A0:: @ 83C12A0
- obj_image_anim_frame 0, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C12A8:: @ 83C12A8
- obj_image_anim_frame 4, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C12B0:: @ 83C12B0
- obj_image_anim_frame 8, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C12B8:: @ 83C12B8
- obj_image_anim_frame 12, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C12C0:: @ 83C12C0
- obj_image_anim_frame 16, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C12C8:: @ 83C12C8
- obj_image_anim_frame 20, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83C12D0:: @ 83C12D0
- obj_image_anim_frame 24, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83C12D8:: @ 83C12D8
- .4byte gSpriteAnim_83C12A0
- .4byte gSpriteAnim_83C12A8
- .4byte gSpriteAnim_83C12B0
- .4byte gSpriteAnim_83C12B8
- .4byte gSpriteAnim_83C12C0
- .4byte gSpriteAnim_83C12C8
- .4byte gSpriteAnim_83C12D0
-
- .align 2
-gUnknown_083C12F4:: @ 83C12F4
- obj_tiles gStatusGfx_Icons, 896, 0x7531
-
- .align 2
-gUnknown_083C12FC:: @ 83C12FC
- obj_pal gStatusPal_Icons, 0x7531
-
- .align 2
-gSpriteTemplate_83C1304:: @ 83C1304
- spr_template 30001, 30001, gOamData_83C1298, gSpriteAnimTable_83C12D8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSummaryScreenMonMarkingsPalette:: @ 83C131C
- .incbin "graphics/summary_screen/mon_markings.gbapal"
-
-.ifdef ENGLISH
- .align 2
-gSummaryScreenTextTiles:: @ 83C133C
- .incbin "graphics/summary_screen/text.4bpp"
-.endif
-
- .align 2
-gSummaryScreenButtonTiles:: @ 83C147C
- .incbin "graphics/summary_screen/buttons.4bpp"
-
- .align 1
-gUnknown_083C157C:: @ 83C157C
- .2byte 0x5F5A @ palette color
-
- .align 1
-gUnknown_083C157E:: @ 83C157E
- .2byte 0x6FDE @ palette color
-
- .align 2
-gUnknown_083C1580:: @ 83C1580
- .4byte sub_809FC0C
- .4byte sub_809FEB8
-
- .align 2
-gUnknown_083C1588:: @ 83C1588
- .4byte sub_809F63C
- .4byte sub_809F650
- .4byte sub_809F664
- .4byte sub_809F664
-
- .align 2
-gUnknown_083C1598:: @ 83C1598
- .4byte sub_809FE6C
- .4byte sub_80A0090
- .4byte sub_80A015C
- .4byte sub_80A015C
-
-gUnknown_083C15A8:: @ 83C15A8
- .byte 0, 2, 3, 1, 4, 5
-
-gUnknown_083C15AE:: @ 83C15AE
- .string "{STR_VAR_1}{CLEAR_TO 64}$"
-
-gUnknown_083C15B4:: @ 83C15B4
- .string "{STR_VAR_1}{CLEAR_TO 72}$"
-
- .align 2
-gUnknown_083C15BC:: @ 83C15BC
- .byte 9, 1, 0, 2
- .byte 10, 3, 0, 4
- .byte 8, 5, 0, 6
- .byte 11, 7, 0, 8
- .byte 14, 9, 0, 10
- .byte 12, 11, 0, 12
- .byte 13, 13, 0, 14
- .byte -1, 15, 0, 10
diff --git a/data/text/contest_strings.inc b/data/text/contest_strings.inc
index 4c4f37fc4..94366cc41 100644
--- a/data/text/contest_strings.inc
+++ b/data/text/contest_strings.inc
@@ -96,7 +96,7 @@ ContestString_DescStopExcitement:
.string "Temporarily stops the\ncrowd from growing excited.$"
.align 2
-gUnknown_083CADD4:: @ 83CADD4
+gContestEffectStrings:: @ 83CADD4
.4byte ContestString_DescHighlyAppealing
.4byte ContestString_DescStartled1
.4byte ContestString_DescGreatLock
diff --git a/data/text/move_descriptions.inc b/data/text/move_descriptions.inc
deleted file mode 100644
index 29e325ad7..000000000
--- a/data/text/move_descriptions.inc
+++ /dev/null
@@ -1,1772 +0,0 @@
-gMoveDescription_Pound: @ 83BC680
- .string "Pounds the foe with\n"
- .string "forelegs or tail.$"
-
-gMoveDescription_KarateChop: @ 83BC6A6
- .string "A chopping attack with a\n"
- .string "high critical-hit ratio.$"
-
-gMoveDescription_DoubleSlap: @ 83BC6D8
- .string "Repeatedly slaps the foe\n"
- .string "2 to 5 times.$"
-
-gMoveDescription_CometPunch: @ 83BC6FF
- .string "Repeatedly punches the foe\n"
- .string "2 to 5 times.$"
-
-gMoveDescription_MegaPunch: @ 83BC728
- .string "A strong punch thrown with\n"
- .string "incredible power.$"
-
-gMoveDescription_PayDay: @ 83BC755
- .string "Throws coins at the foe.\n"
- .string "Money is recovered after.$"
-
-gMoveDescription_FirePunch: @ 83BC788
- .string "A fiery punch that may burn\n"
- .string "the foe.$"
-
-gMoveDescription_IcePunch: @ 83BC7AD
- .string "An icy punch that may\n"
- .string "freeze the foe.$"
-
-gMoveDescription_ThunderPunch: @ 83BC7D3
- .string "An electrified punch that\n"
- .string "may paralyze the foe.$"
-
-gMoveDescription_Scratch: @ 83BC803
- .string "Scratches the foe with\n"
- .string "sharp claws.$"
-
-gMoveDescription_ViceGrip: @ 83BC827
- .string "Grips the foe with large and\n"
- .string "powerful pincers.$"
-
-gMoveDescription_Guillotine: @ 83BC856
- .string "A powerful pincer attack\n"
- .string "that may cause fainting.$"
-
-gMoveDescription_RazorWind: @ 83BC888
- .string "A 2-turn move that strikes\n"
- .string "the foe on the 2nd turn.$"
-
-gMoveDescription_SwordsDance: @ 83BC8BC
- .string "A fighting dance that\n"
- .string "sharply raises ATTACK.$"
-
-gMoveDescription_Cut: @ 83BC8E9
- .string "Cuts the foe with sharp\n"
- .string "scythes, claws, etc.$"
-
-gMoveDescription_Gust: @ 83BC916
- .string "Strikes the foe with a gust\n"
- .string "of wind whipped up by wings.$"
-
-gMoveDescription_WingAttack: @ 83BC94F
- .string "Strikes the foe with wings\n"
- .string "spread wide.$"
-
-gMoveDescription_Whirlwind: @ 83BC977
- .string "Blows away the foe with\n"
- .string "wind and ends the battle.$"
-
-gMoveDescription_Fly: @ 83BC9A9
- .string "Flies up on the first turn,\n"
- .string "then strikes the next turn.$"
-
-gMoveDescription_Bind: @ 83BC9E1
- .string "Binds and squeezes the foe\n"
- .string "for 2 to 5 turns.$"
-
-gMoveDescription_Slam: @ 83BCA0E
- .string "Slams the foe with a long\n"
- .string "tail, vine, etc.$"
-
-gMoveDescription_VineWhip: @ 83BCA39
- .string "Strikes the foe with\n"
- .string "slender, whiplike vines.$"
-
-gMoveDescription_Stomp: @ 83BCA67
- .string "Stomps the enemy with a big\n"
- .string "foot. May cause flinching.$"
-
-gMoveDescription_DoubleKick: @ 83BCA9E
- .string "A double-kicking attack\n"
- .string "that strikes the foe twice.$"
-
-gMoveDescription_MegaKick: @ 83BCAD2
- .string "An extremely powerful kick\n"
- .string "with intense force.$"
-
-gMoveDescription_JumpKick: @ 83BCB01
- .string "A strong jumping kick. May\n"
- .string "miss and hurt the kicker.$"
-
-gMoveDescription_RollingKick: @ 83BCB36
- .string "A fast kick delivered from\n"
- .string "a rapid spin.$"
-
-gMoveDescription_SandAttack: @ 83BCB5F
- .string "Reduces the foe’s accuracy\n"
- .string "by hurling sand in its face.$"
-
-gMoveDescription_Headbutt: @ 83BCB97
- .string "A ramming attack that may\n"
- .string "cause flinching.$"
-
-gMoveDescription_HornAttack: @ 83BCBC2
- .string "Jabs the foe with sharp\n"
- .string "horns.$"
-
-gMoveDescription_FuryAttack: @ 83BCBE1
- .string "Jabs the foe 2 to 5 times\n"
- .string "with sharp horns, etc.$"
-
-gMoveDescription_HornDrill: @ 83BCC12
- .string "A one-hit KO attack that\n"
- .string "uses a horn like a drill.$"
-
-gMoveDescription_Tackle: @ 83BCC45
- .string "Charges the foe with a full-\n"
- .string "body tackle.$"
-
-gMoveDescription_BodySlam: @ 83BCC6F
- .string "A full-body slam that may\n"
- .string "cause paralysis.$"
-
-gMoveDescription_Wrap: @ 83BCC9A
- .string "Wraps and squeezes the foe\n"
- .string "2 to 5 times with vines, etc.$"
-
-gMoveDescription_TakeDown: @ 83BCCD3
- .string "A reckless charge attack\n"
- .string "that also hurts the user.$"
-
-gMoveDescription_Thrash: @ 83BCD06
- .string "A rampage of 2 to 3 turns\n"
- .string "that confuses the user.$"
-
-gMoveDescription_DoubleEdge: @ 83BCD38
- .string "A life-risking tackle that\n"
- .string "also hurts the user.$"
-
-gMoveDescription_TailWhip: @ 83BCD68
- .string "Wags the tail to lower the\n"
- .string "foe’s DEFENSE.$"
-
-gMoveDescription_PoisonSting: @ 83BCD92
- .string "A toxic attack with barbs,\n"
- .string "etc., that may poison.$"
-
-gMoveDescription_Twineedle: @ 83BCDC4
- .string "Stingers on the forelegs\n"
- .string "jab the foe twice.$"
-
-gMoveDescription_PinMissile: @ 83BCDF0
- .string "Sharp pins are fired to\n"
- .string "strike 2 to 5 times.$"
-
-gMoveDescription_Leer: @ 83BCE1D
- .string "Frightens the foe with a\n"
- .string "leer to lower DEFENSE.$"
-
-gMoveDescription_Bite: @ 83BCE4D
- .string "Bites with vicious fangs.\n"
- .string "May cause flinching.$"
-
-gMoveDescription_Growl: @ 83BCE7C
- .string "Growls cutely to reduce the\n"
- .string "foe’s ATTACK.$"
-
-gMoveDescription_Roar: @ 83BCEA6
- .string "Makes the foe flee to end\n"
- .string "the battle.$"
-
-gMoveDescription_Sing: @ 83BCECC
- .string "A soothing song lulls the\n"
- .string "foe into a deep slumber.$"
-
-gMoveDescription_Supersonic: @ 83BCEFF
- .string "Emits bizarre sound waves\n"
- .string "that may confuse the foe.$"
-
-gMoveDescription_SonicBoom: @ 83BCF33
- .string "Launches shock waves that\n"
- .string "always inflict 20 HP damage.$"
-
-gMoveDescription_Disable: @ 83BCF6A
- .string "Psychically disables one of\n"
- .string "the foe’s moves.$"
-
-gMoveDescription_Acid: @ 83BCF97
- .string "Sprays a hide-melting acid.\n"
- .string "May lower DEFENSE.$"
-
-gMoveDescription_Ember: @ 83BCFC6
- .string "A weak fire attack that may\n"
- .string "inflict a burn.$"
-
-gMoveDescription_Flamethrower: @ 83BCFF2
- .string "A powerful fire attack that\n"
- .string "may inflict a burn.$"
-
-gMoveDescription_Mist: @ 83BD022
- .string "Creates a mist that stops\n"
- .string "reduction of abilities.$"
-
-gMoveDescription_WaterGun: @ 83BD054
- .string "Squirts water to attack\n"
- .string "the foe.$"
-
-gMoveDescription_HydroPump: @ 83BD075
- .string "Blasts water at high power\n"
- .string "to strike the foe.$"
-
-gMoveDescription_Surf: @ 83BD0A3
- .string "Creates a huge wave, then\n"
- .string "crashes it down on the foe.$"
-
-gMoveDescription_IceBeam: @ 83BD0D9
- .string "Blasts the foe with an icy\n"
- .string "beam that may freeze it.$"
-
-gMoveDescription_Blizzard: @ 83BD10D
- .string "Hits the foe with an icy\n"
- .string "storm that may freeze it.$"
-
-gMoveDescription_Psybeam: @ 83BD140
- .string "Fires a peculiar ray that\n"
- .string "may confuse the foe.$"
-
-gMoveDescription_BubbleBeam: @ 83BD16F
- .string "Forcefully sprays bubbles\n"
- .string "that may lower SPEED.$"
-
-gMoveDescription_AuroraBeam: @ 83BD19F
- .string "Fires a rainbow-colored\n"
- .string "beam that may lower ATTACK.$"
-
-gMoveDescription_HyperBeam: @ 83BD1D3
- .string "Powerful, but leaves the\n"
- .string "user immobile the next turn.$"
-
-gMoveDescription_Peck: @ 83BD209
- .string "Attacks the foe with a\n"
- .string "jabbing beak, etc.$"
-
-gMoveDescription_DrillPeck: @ 83BD233
- .string "A corkscrewing attack with\n"
- .string "the beak acting as a drill.$"
-
-gMoveDescription_Submission: @ 83BD26A
- .string "A reckless body slam that\n"
- .string "also hurts the user.$"
-
-gMoveDescription_LowKick: @ 83BD299
- .string "A kick that inflicts more\n"
- .string "damage on heavier foes.$"
-
-gMoveDescription_Counter: @ 83BD2CB
- .string "Retaliates any physical hit\n"
- .string "with double the power.$"
-
-gMoveDescription_SeismicToss: @ 83BD2FE
- .string "Inflicts damage identical\n"
- .string "to the user’s level.$"
-
-gMoveDescription_Strength: @ 83BD32D
- .string "Builds enormous power,\n"
- .string "then slams the foe.$"
-
-gMoveDescription_Absorb: @ 83BD358
- .string "An attack that absorbs\n"
- .string "half the damage inflicted.$"
-
-gMoveDescription_MegaDrain: @ 83BD38A
- .string "An attack that absorbs\n"
- .string "half the damage inflicted.$"
-
-gMoveDescription_LeechSeed: @ 83BD3BC
- .string "Plants a seed on the foe to\n"
- .string "steal HP on every turn.$"
-
-gMoveDescription_Growth: @ 83BD3F0
- .string "Forces the body to grow\n"
- .string "and heightens SP. ATK.$"
-
-gMoveDescription_RazorLeaf: @ 83BD41F
- .string "Cuts the enemy with leaves.\n"
- .string "High critical-hit ratio.$"
-
-gMoveDescription_SolarBeam: @ 83BD454
- .string "Absorbs light in one turn,\n"
- .string "then attacks next turn.$"
-
-gMoveDescription_PoisonPowder: @ 83BD487
- .string "Scatters a toxic powder\n"
- .string "that may poison the foe.$"
-
-gMoveDescription_StunSpore: @ 83BD4B8
- .string "Scatters a powder that may\n"
- .string "paralyze the foe.$"
-
-gMoveDescription_SleepPowder: @ 83BD4E5
- .string "Scatters a powder that may\n"
- .string "cause the foe to sleep.$"
-
-gMoveDescription_PetalDance: @ 83BD518
- .string "A rampage of 2 to 3 turns\n"
- .string "that confuses the user.$"
-
-gMoveDescription_StringShot: @ 83BD54A
- .string "Binds the foe with string\n"
- .string "to reduce its SPEED.$"
-
-gMoveDescription_DragonRage: @ 83BD579
- .string "Launches shock waves that\n"
- .string "always inflict 40 HP damage.$"
-
-gMoveDescription_FireSpin: @ 83BD5B0
- .string "Traps the foe in a ring of\n"
- .string "fire for 2 to 5 turns.$"
-
-gMoveDescription_ThunderShock: @ 83BD5E2
- .string "An electrical attack that\n"
- .string "may paralyze the foe.$"
-
-gMoveDescription_Thunderbolt: @ 83BD612
- .string "A strong electrical attack\n"
- .string "that may paralyze the foe.$"
-
-gMoveDescription_ThunderWave: @ 83BD648
- .string "A weak jolt of electricity\n"
- .string "that paralyzes the foe.$"
-
-gMoveDescription_Thunder: @ 83BD67B
- .string "A lightning attack that may\n"
- .string "cause paralysis.$"
-
-gMoveDescription_RockThrow: @ 83BD6A8
- .string "Throws small rocks to\n"
- .string "strike the foe.$"
-
-gMoveDescription_Earthquake: @ 83BD6CE
- .string "A powerful quake, but has\n"
- .string "no effect on flying foes.$"
-
-gMoveDescription_Fissure: @ 83BD702
- .string "A one-hit KO move that\n"
- .string "drops the foe in a fissure.$"
-
-gMoveDescription_Dig: @ 83BD735
- .string "Digs underground the first\n"
- .string "turn and strikes next turn.$"
-
-gMoveDescription_Toxic: @ 83BD76C
- .string "Poisons the foe with an\n"
- .string "intensifying toxin.$"
-
-gMoveDescription_Confusion: @ 83BD798
- .string "A psychic attack that may\n"
- .string "cause confusion.$"
-
-gMoveDescription_Psychic: @ 83BD7C3
- .string "A powerful psychic attack\n"
- .string "that may lower SP. DEF.$"
-
-gMoveDescription_Hypnosis: @ 83BD7F5
- .string "A hypnotizing move that\n"
- .string "may induce sleep.$"
-
-gMoveDescription_Meditate: @ 83BD81F
- .string "Meditates in a peaceful\n"
- .string "fashion to raise ATTACK.$"
-
-gMoveDescription_Agility: @ 83BD850
- .string "Relaxes the body to sharply\n"
- .string "boost SPEED.$"
-
-gMoveDescription_QuickAttack: @ 83BD879
- .string "An extremely fast attack\n"
- .string "that always strikes first.$"
-
-gMoveDescription_Rage: @ 83BD8AD
- .string "Raises the user’s ATTACK\n"
- .string "every time it is hit.$"
-
-gMoveDescription_Teleport: @ 83BD8DC
- .string "A psychic move for fleeing\n"
- .string "from battle instantly.$"
-
-gMoveDescription_NightShade: @ 83BD90E
- .string "Inflicts damage identical\n"
- .string "to the user’s level.$"
-
-gMoveDescription_Mimic: @ 83BD93D
- .string "Copies a move used by the\n"
- .string "foe during one battle.$"
-
-gMoveDescription_Screech: @ 83BD96E
- .string "Emits a screech to sharply\n"
- .string "reduce the foe’s DEFENSE.$"
-
-gMoveDescription_DoubleTeam: @ 83BD9A3
- .string "Creates illusory copies to\n"
- .string "raise evasiveness.$"
-
-gMoveDescription_Recover: @ 83BD9D1
- .string "Recovers up to half the\n"
- .string "user’s maximum HP.$"
-
-gMoveDescription_Harden: @ 83BD9FC
- .string "Stiffens the body’s \n"
- .string "muscles to raise DEFENSE.$"
-
-gMoveDescription_Minimize: @ 83BDA2B
- .string "Minimizes the user’s size\n"
- .string "to raise evasiveness.$"
-
-gMoveDescription_Smokescreen: @ 83BDA5B
- .string "Lowers the foe’s accuracy\n"
- .string "using smoke, ink, etc.$"
-
-gMoveDescription_ConfuseRay: @ 83BDA8C
- .string "A sinister ray that\n"
- .string "confuses the foe.$"
-
-gMoveDescription_Withdraw: @ 83BDAB2
- .string "Withdraws the body into its\n"
- .string "hard shell to raise DEFENSE.$"
-
-gMoveDescription_DefenseCurl: @ 83BDAEB
- .string "Curls up to conceal weak\n"
- .string "spots and raise DEFENSE.$"
-
-gMoveDescription_Barrier: @ 83BDB1D
- .string "Creates a barrier that\n"
- .string "sharply raises DEFENSE.$"
-
-gMoveDescription_LightScreen: @ 83BDB4C
- .string "Creates a wall of light that\n"
- .string "lowers SP. ATK damage.$"
-
-gMoveDescription_Haze: @ 83BDB80
- .string "Creates a black haze that\n"
- .string "eliminates all stat changes.$"
-
-gMoveDescription_Reflect: @ 83BDBB7
- .string "Creates a wall of light that\n"
- .string "weakens physical attacks.$"
-
-gMoveDescription_FocusEnergy: @ 83BDBEE
- .string "Focuses power to raise the\n"
- .string "critical-hit ratio.$"
-
-gMoveDescription_Bide: @ 83BDC1D
- .string "Endures attack for 2\n"
- .string "turns to retaliate double.$"
-
-gMoveDescription_Metronome: @ 83BDC4D
- .string "Waggles a finger to use any\n"
- .string "POKéMON move at random.$"
-
-gMoveDescription_MirrorMove: @ 83BDC81
- .string "Counters the foe’s attack\n"
- .string "with the same move.$"
-
-gMoveDescription_SelfDestruct: @ 83BDCAF
- .string "Inflicts severe damage but\n"
- .string "makes the user faint.$"
-
-gMoveDescription_EggBomb: @ 83BDCE0
- .string "An egg is forcibly hurled at\n"
- .string "the foe.$"
-
-gMoveDescription_Lick: @ 83BDD06
- .string "Licks with a long tongue to\n"
- .string "injure. May also paralyze.$"
-
-gMoveDescription_Smog: @ 83BDD3D
- .string "An exhaust-gas attack\n"
- .string "that may also poison.$"
-
-gMoveDescription_Sludge: @ 83BDD69
- .string "Sludge is hurled to inflict\n"
- .string "damage. May also poison.$"
-
-gMoveDescription_BoneClub: @ 83BDD9E
- .string "Clubs the foe with a bone.\n"
- .string "May cause flinching.$"
-
-gMoveDescription_FireBlast: @ 83BDDCE
- .string "A fiery blast that scorches\n"
- .string "all. May cause a burn.$"
-
-gMoveDescription_Waterfall: @ 83BDE01
- .string "Charges the foe with speed\n"
- .string "to climb waterfalls.$"
-
-gMoveDescription_Clamp: @ 83BDE31
- .string "Traps and squeezes the\n"
- .string "foe for 2 to 5 turns.$"
-
-gMoveDescription_Swift: @ 83BDE5E
- .string "Sprays star-shaped rays\n"
- .string "that never miss.$"
-
-gMoveDescription_SkullBash: @ 83BDE87
- .string "Tucks in the head, then\n"
- .string "attacks on the next turn.$"
-
-gMoveDescription_SpikeCannon: @ 83BDEB9
- .string "Launches sharp spikes that\n"
- .string "strike 2 to 5 times.$"
-
-gMoveDescription_Constrict: @ 83BDEE9
- .string "Constricts to inflict pain.\n"
- .string "May lower SPEED.$"
-
-gMoveDescription_Amnesia: @ 83BDF16
- .string "Forgets about something\n"
- .string "and sharply raises SP. DEF.$"
-
-gMoveDescription_Kinesis: @ 83BDF4A
- .string "Distracts the foe.\n"
- .string "May lower accuracy.$"
-
-gMoveDescription_SoftBoiled: @ 83BDF71
- .string "Recovers up to half the\n"
- .string "user’s maximum HP.$"
-
-gMoveDescription_HiJumpKick: @ 83BDF9C
- .string "A jumping knee kick. If it\n"
- .string "misses, the user is hurt.$"
-
-gMoveDescription_Glare: @ 83BDFD1
- .string "Intimidates and frightens\n"
- .string "the foe into paralysis.$"
-
-gMoveDescription_DreamEater: @ 83BE003
- .string "Takes one half the damage\n"
- .string "inflicted on a sleeping foe.$"
-
-gMoveDescription_PoisonGas: @ 83BE03A
- .string "Envelops the foe in a toxic\n"
- .string "gas that may poison.$"
-
-gMoveDescription_Barrage: @ 83BE06B
- .string "Hurls round objects at the\n"
- .string "foe 2 to 5 times.$"
-
-gMoveDescription_LeechLife: @ 83BE098
- .string "An attack that steals half\n"
- .string "the damage inflicted.$"
-
-gMoveDescription_LovelyKiss: @ 83BE0C9
- .string "Demands a kiss with a scary\n"
- .string "face that induces sleep.$"
-
-gMoveDescription_SkyAttack: @ 83BE0FE
- .string "Searches out weak spots,\n"
- .string "then strikes the next turn.$"
-
-gMoveDescription_Transform: @ 83BE133
- .string "Alters the user’s cells to\n"
- .string "become a copy of the foe.$"
-
-gMoveDescription_Bubble: @ 83BE168
- .string "An attack using bubbles.\n"
- .string "May lower the foe’s SPEED.$"
-
-gMoveDescription_DizzyPunch: @ 83BE19C
- .string "A rhythmic punch that may\n"
- .string "confuse the foe.$"
-
-gMoveDescription_Spore: @ 83BE1C7
- .string "Scatters a cloud of spores\n"
- .string "that always induce sleep.$"
-
-gMoveDescription_Flash: @ 83BE1FC
- .string "Looses a powerful blast of\n"
- .string "light that cuts accuracy.$"
-
-gMoveDescription_Psywave: @ 83BE231
- .string "Attacks with a psychic\n"
- .string "wave of varying intensity.$"
-
-gMoveDescription_Splash: @ 83BE263
- .string "It’s just a splash...\n"
- .string "Has no effect whatsoever.$"
-
-gMoveDescription_AcidArmor: @ 83BE293
- .string "Liquifies the user’s body\n"
- .string "to sharply raise DEFENSE.$"
-
-gMoveDescription_Crabhammer: @ 83BE2C7
- .string "Hammers with a pincer. Has a\n"
- .string "high critical-hit ratio.$"
-
-gMoveDescription_Explosion: @ 83BE2FD
- .string "Inflicts severe damage but\n"
- .string "makes the user faint.$"
-
-gMoveDescription_FurySwipes: @ 83BE32E
- .string "Rakes the foe with sharp\n"
- .string "claws, etc., 2 to 5 times.$"
-
-gMoveDescription_Bonemerang: @ 83BE362
- .string "Throws a bone boomerang\n"
- .string "that strikes twice.$"
-
-gMoveDescription_Rest: @ 83BE38E
- .string "The user sleeps for 2 turns,\n"
- .string "restoring HP and status.$"
-
-gMoveDescription_RockSlide: @ 83BE3C4
- .string "Large boulders are hurled.\n"
- .string "May cause flinching.$"
-
-gMoveDescription_HyperFang: @ 83BE3F4
- .string "Attacks with sharp fangs.\n"
- .string "May cause flinching.$"
-
-gMoveDescription_Sharpen: @ 83BE423
- .string "Reduces the polygon count\n"
- .string "and raises ATTACK.$"
-
-gMoveDescription_Conversion: @ 83BE450
- .string "Changes the user’s type\n"
- .string "into an own move’s type.$"
-
-gMoveDescription_TriAttack: @ 83BE481
- .string "Fires three types of beams\n"
- .string "at the same time.$"
-
-gMoveDescription_SuperFang: @ 83BE4AE
- .string "Attacks with sharp fangs\n"
- .string "and cuts half the foe’s HP.$"
-
-gMoveDescription_Slash: @ 83BE4E3
- .string "Slashes with claws, etc. Has\n"
- .string "a high critical-hit ratio.$"
-
-gMoveDescription_Substitute: @ 83BE51B
- .string "Creates a decoy using 1/4\n"
- .string "of the user’s maximum HP.$"
-
-gMoveDescription_Struggle: @ 83BE54F
- .string "Used only if all PP are gone.\n"
- .string "Also hurts the user a little.$"
-
-gMoveDescription_Sketch: @ 83BE58B
- .string "Copies the foe’s last move\n"
- .string "permanently.$"
-
-gMoveDescription_TripleKick: @ 83BE5B3
- .string "Kicks the foe 3 times in a\n"
- .string "row with rising intensity.$"
-
-gMoveDescription_Thief: @ 83BE5E9
- .string "While attacking, it may\n"
- .string "steal the foe’s held item.$"
-
-gMoveDescription_SpiderWeb: @ 83BE61C
- .string "Ensnares the foe to stop it\n"
- .string "from fleeing or switching.$"
-
-gMoveDescription_MindReader: @ 83BE653
- .string "Senses the foe’s action to\n"
- .string "ensure the next move’s hit.$"
-
-gMoveDescription_Nightmare: @ 83BE68A
- .string "Inflicts 1/4 damage on a\n"
- .string "sleeping foe every turn.$"
-
-gMoveDescription_FlameWheel: @ 83BE6BC
- .string "A fiery charge attack that\n"
- .string "may inflict a burn.$"
-
-gMoveDescription_Snore: @ 83BE6EB
- .string "A loud attack that can be\n"
- .string "used only while asleep.$"
-
-gMoveDescription_Curse: @ 83BE71D
- .string "A move that functions\n"
- .string "differently for GHOSTS.$"
-
-gMoveDescription_Flail: @ 83BE74B
- .string "Inflicts more damage when\n"
- .string "the user’s HP is down.$"
-
-gMoveDescription_Conversion2: @ 83BE77C
- .string "Makes the user resistant\n"
- .string "to the last attack’s type.$"
-
-gMoveDescription_Aeroblast: @ 83BE7B0
- .string "Launches a vacuumed blast.\n"
- .string "High critical-hit ratio.$"
-
-gMoveDescription_CottonSpore: @ 83BE7E4
- .string "Spores cling to the foe,\n"
- .string "sharply reducing SPEED.$"
-
-gMoveDescription_Reversal: @ 83BE815
- .string "Inflicts more damage when\n"
- .string "the user’s HP is down.$"
-
-gMoveDescription_Spite: @ 83BE846
- .string "Spitefully cuts the PP\n"
- .string "of the foe’s last move.$"
-
-gMoveDescription_PowderSnow: @ 83BE875
- .string "Blasts the foe with a snowy\n"
- .string "gust. May cause freezing.$"
-
-gMoveDescription_Protect: @ 83BE8AB
- .string "Evades attack, but may fail\n"
- .string "if used in succession.$"
-
-gMoveDescription_MachPunch: @ 83BE8DE
- .string "A punch is thrown at wicked\n"
- .string "speed to strike first.$"
-
-gMoveDescription_ScaryFace: @ 83BE911
- .string "Frightens with a scary face\n"
- .string "to sharply reduce SPEED.$"
-
-gMoveDescription_FaintAttack: @ 83BE946
- .string "Draws the foe close, then\n"
- .string "strikes without fail.$"
-
-gMoveDescription_SweetKiss: @ 83BE976
- .string "Demands a kiss with a cute\n"
- .string "look. May cause confusion.$"
-
-gMoveDescription_BellyDrum: @ 83BE9AC
- .string "Maximizes ATTACK while\n"
- .string "sacrificing HP.$"
-
-gMoveDescription_SludgeBomb: @ 83BE9D3
- .string "Sludge is hurled to inflict\n"
- .string "damage. May also poison.$"
-
-gMoveDescription_MudSlap: @ 83BEA08
- .string "Hurls mud in the foe’s face\n"
- .string "to reduce its accuracy.$"
-
-gMoveDescription_Octazooka: @ 83BEA3C
- .string "Fires a lump of ink to\n"
- .string "damage and cut accuracy.$"
-
-gMoveDescription_Spikes: @ 83BEA6C
- .string "Sets spikes that hurt a \n"
- .string "foe switching out.$"
-
-gMoveDescription_ZapCannon: @ 83BEA98
- .string "Powerful and sure to cause\n"
- .string "paralysis, but inaccurate.$"
-
-gMoveDescription_Foresight: @ 83BEACE
- .string "Negates the foe’s efforts\n"
- .string "to heighten evasiveness.$"
-
-gMoveDescription_DestinyBond: @ 83BEB01
- .string "If the user faints, the foe\n"
- .string "is also made to faint.$"
-
-gMoveDescription_PerishSong: @ 83BEB34
- .string "Any POKéMON hearing this\n"
- .string "song faints in 3 turns.$"
-
-gMoveDescription_IcyWind: @ 83BEB65
- .string "A chilling attack that\n"
- .string "lowers the foe’s SPEED.$"
-
-gMoveDescription_Detect: @ 83BEB94
- .string "Evades attack, but may fail\n"
- .string "if used in succession.$"
-
-gMoveDescription_BoneRush: @ 83BEBC7
- .string "Strikes the foe with a bone\n"
- .string "in hand 2 to 5 times.$"
-
-gMoveDescription_LockOn: @ 83BEBF9
- .string "Locks on to the foe to\n"
- .string "ensure the next move hits.$"
-
-gMoveDescription_Outrage: @ 83BEC2B
- .string "A rampage of 2 to 3 turns\n"
- .string "that confuses the user.$"
-
-gMoveDescription_Sandstorm: @ 83BEC5D
- .string "Causes a sandstorm that\n"
- .string "rages for several turns.$"
-
-gMoveDescription_GigaDrain: @ 83BEC8E
- .string "An attack that steals half\n"
- .string "the damage inflicted.$"
-
-gMoveDescription_Endure: @ 83BECBF
- .string "Endures any attack for\n"
- .string "1 turn, leaving at least 1HP.$"
-
-gMoveDescription_Charm: @ 83BECF4
- .string "Charms the foe and sharply\n"
- .string "reduces its ATTACK.$"
-
-gMoveDescription_Rollout: @ 83BED23
- .string "An attack lasting 5 turns\n"
- .string "with rising intensity.$"
-
-gMoveDescription_FalseSwipe: @ 83BED54
- .string "An attack that leaves the\n"
- .string "foe with at least 1 HP.$"
-
-gMoveDescription_Swagger: @ 83BED86
- .string "Confuses the foe, but also\n"
- .string "sharply raises ATTACK.$"
-
-gMoveDescription_MilkDrink: @ 83BEDB8
- .string "Recovers up to half the\n"
- .string "user’s maximum HP.$"
-
-gMoveDescription_Spark: @ 83BEDE3
- .string "An electrified tackle that\n"
- .string "may paralyze the foe.$"
-
-gMoveDescription_FuryCutter: @ 83BEE14
- .string "An attack that intensifies\n"
- .string "on each successive hit.$"
-
-gMoveDescription_SteelWing: @ 83BEE47
- .string "Strikes the foe with hard\n"
- .string "wings spread wide.$"
-
-gMoveDescription_MeanLook: @ 83BEE74
- .string "Fixes the foe with a mean\n"
- .string "look that prevents escape.$"
-
-gMoveDescription_Attract: @ 83BEEA9
- .string "Makes the opposite gender\n"
- .string "less likely to attack.$"
-
-gMoveDescription_SleepTalk: @ 83BEEDA
- .string "Uses an own move randomly\n"
- .string "while asleep.$"
-
-gMoveDescription_HealBell: @ 83BEF02
- .string "Chimes soothingly to heal\n"
- .string "all status abnormalities.$"
-
-gMoveDescription_Return: @ 83BEF36
- .string "An attack that increases\n"
- .string "in power with friendship.$"
-
-gMoveDescription_Present: @ 83BEF69
- .string "A gift in the form of a\n"
- .string "bomb. May restore HP.$"
-
-gMoveDescription_Frustration: @ 83BEF97
- .string "An attack that is stronger\n"
- .string "if the TRAINER is disliked.$"
-
-gMoveDescription_Safeguard: @ 83BEFCE
- .string "A mystical force prevents\n"
- .string "all status problems.$"
-
-gMoveDescription_PainSplit: @ 83BEFFD
- .string "Adds the user and foe’s HP,\n"
- .string "then shares them equally.$"
-
-gMoveDescription_SacredFire: @ 83BF033
- .string "A mystical fire attack that\n"
- .string "may inflict a burn.$"
-
-gMoveDescription_Magnitude: @ 83BF063
- .string "A ground-shaking attack\n"
- .string "of random intensity.$"
-
-gMoveDescription_DynamicPunch: @ 83BF090
- .string "Powerful and sure to cause\n"
- .string "confusion, but inaccurate.$"
-
-gMoveDescription_Megahorn: @ 83BF0C6
- .string "A brutal ramming attack\n"
- .string "using out-thrust horns.$"
-
-gMoveDescription_DragonBreath: @ 83BF0F6
- .string "Strikes the foe with an\n"
- .string "incredible blast of breath.$"
-
-gMoveDescription_BatonPass: @ 83BF12A
- .string "Switches out the user while\n"
- .string "keeping effects in play.$"
-
-gMoveDescription_Encore: @ 83BF15F
- .string "Makes the foe repeat its\n"
- .string "last move over 2 to 6 turns.$"
-
-gMoveDescription_Pursuit: @ 83BF195
- .string "Inflicts bad damage if used\n"
- .string "on a foe switching out.$"
-
-gMoveDescription_RapidSpin: @ 83BF1C9
- .string "Spins the body at high\n"
- .string "speed to strike the foe.$"
-
-gMoveDescription_SweetScent: @ 83BF1F9
- .string "Allures the foe to reduce\n"
- .string "evasiveness.$"
-
-gMoveDescription_IronTail: @ 83BF220
- .string "Attacks with a rock-hard\n"
- .string "tail. May lower DEFENSE.$"
-
-gMoveDescription_MetalClaw: @ 83BF252
- .string "A claw attack that may\n"
- .string "raise the user’s ATTACK.$"
-
-gMoveDescription_VitalThrow: @ 83BF282
- .string "Makes the user’s move last,\n"
- .string "but it never misses.$"
-
-gMoveDescription_MorningSun: @ 83BF2B3
- .string "Restores HP. The amount\n"
- .string "varies with the weather.$"
-
-gMoveDescription_Synthesis: @ 83BF2E4
- .string "Restores HP. The amount\n"
- .string "varies with the weather.$"
-
-gMoveDescription_Moonlight: @ 83BF315
- .string "Restores HP. The amount\n"
- .string "varies with the weather.$"
-
-gMoveDescription_HiddenPower: @ 83BF346
- .string "The effectiveness varies\n"
- .string "with the user.$"
-
-gMoveDescription_CrossChop: @ 83BF36E
- .string "A double-chopping attack.\n"
- .string "High critical-hit ratio.$"
-
-gMoveDescription_Twister: @ 83BF3A1
- .string "Whips up a vicious twister\n"
- .string "to tear at the foe.$"
-
-gMoveDescription_RainDance: @ 83BF3D0
- .string "Boosts the power of WATER-\n"
- .string "type moves for 5 turns.$"
-
-gMoveDescription_SunnyDay: @ 83BF403
- .string "Boosts the power of FIRE-\n"
- .string "type moves for 5 turns.$"
-
-gMoveDescription_Crunch: @ 83BF435
- .string "Crunches with sharp fangs.\n"
- .string "May lower SP. DEF.$"
-
-gMoveDescription_MirrorCoat: @ 83BF463
- .string "Counters the foe’s special\n"
- .string "attack at double the power.$"
-
-gMoveDescription_PsychUp: @ 83BF49A
- .string "Copies the foe’s effect(s)\n"
- .string "and gives to the user.$"
-
-gMoveDescription_ExtremeSpeed: @ 83BF4CC
- .string "An extremely fast and\n"
- .string "powerful attack.$"
-
-gMoveDescription_AncientPower: @ 83BF4F3
- .string "An attack that may raise\n"
- .string "all stats.$"
-
-gMoveDescription_ShadowBall: @ 83BF517
- .string "Hurls a black blob that may\n"
- .string "lower the foe’s SP. DEF.$"
-
-gMoveDescription_FutureSight: @ 83BF54C
- .string "Heightens inner power to\n"
- .string "strike 2 turns later.$"
-
-gMoveDescription_RockSmash: @ 83BF57B
- .string "A rock-crushing attack\n"
- .string "that may lower DEFENSE.$"
-
-gMoveDescription_Whirlpool: @ 83BF5AA
- .string "Traps and hurts the foe in\n"
- .string "a whirlpool for 2 to 5 turns.$"
-
-gMoveDescription_BeatUp: @ 83BF5E3
- .string "Summons party POKéMON to\n"
- .string "join in the attack.$"
-
-gMoveDescription_FakeOut: @ 83BF610
- .string "A 1st-turn, 1st-strike move\n"
- .string "that causes flinching.$"
-
-gMoveDescription_Uproar: @ 83BF643
- .string "Causes an uproar for 2 to 5\n"
- .string "turns and prevents sleep.$"
-
-gMoveDescription_Stockpile: @ 83BF679
- .string "Charges up power for up to\n"
- .string "3 turns.$"
-
-gMoveDescription_SpitUp: @ 83BF69D
- .string "Releases stockpiled power\n"
- .string "(the more the better).$"
-
-gMoveDescription_Swallow: @ 83BF6CE
- .string "Absorbs stockpiled power\n"
- .string "and restores HP.$"
-
-gMoveDescription_HeatWave: @ 83BF6F8
- .string "Exhales a hot breath on the\n"
- .string "foe. May inflict a burn.$"
-
-gMoveDescription_Hail: @ 83BF72D
- .string "Summons a hailstorm that\n"
- .string "strikes every turn.$"
-
-gMoveDescription_Torment: @ 83BF75A
- .string "Torments the foe and stops\n"
- .string "successive use of a move.$"
-
-gMoveDescription_Flatter: @ 83BF78F
- .string "Confuses the foe, but\n"
- .string "raises its SP. ATK.$"
-
-gMoveDescription_WillOWisp: @ 83BF7B9
- .string "Inflicts a burn on the foe\n"
- .string "with intense fire.$"
-
-gMoveDescription_Memento: @ 83BF7E7
- .string "The user faints and lowers\n"
- .string "the foe’s abilities.$"
-
-gMoveDescription_Facade: @ 83BF817
- .string "Boosts ATTACK when burned,\n"
- .string "paralyzed, or poisoned.$"
-
-gMoveDescription_FocusPunch: @ 83BF84A
- .string "A powerful loyalty attack.\n"
- .string "The user flinches if hit.$"
-
-gMoveDescription_SmellingSalt: @ 83BF87F
- .string "Powerful against paralyzed\n"
- .string "foes, but also heals them.$"
-
-gMoveDescription_FollowMe: @ 83BF8B5
- .string "Draws attention to make\n"
- .string "foes attack only the user.$"
-
-gMoveDescription_NaturePower: @ 83BF8E8
- .string "The type of attack varies\n"
- .string "depending on the location.$"
-
-gMoveDescription_Charge: @ 83BF91D
- .string "Charges power to boost the\n"
- .string "electric move used next.$"
-
-gMoveDescription_Taunt: @ 83BF951
- .string "Taunts the foe into only\n"
- .string "using attack moves.$"
-
-gMoveDescription_HelpingHand: @ 83BF97E
- .string "Boosts the power of the\n"
- .string "recipient’s moves.$"
-
-gMoveDescription_Trick: @ 83BF9A9
- .string "Tricks the foe into trading\n"
- .string "held items.$"
-
-gMoveDescription_RolePlay: @ 83BF9D1
- .string "Mimics the target and\n"
- .string "copies its special ability.$"
-
-gMoveDescription_Wish: @ 83BFA03
- .string "A wish that restores HP.\n"
- .string "It takes time to work.$"
-
-gMoveDescription_Assist: @ 83BFA33
- .string "Attacks randomly with one\n"
- .string "of the partner’s moves.$"
-
-gMoveDescription_Ingrain: @ 83BFA65
- .string "Lays roots that restore HP.\n"
- .string "The user can’t switch out.$"
-
-gMoveDescription_Superpower: @ 83BFA9C
- .string "Boosts strength sharply,\n"
- .string "but lowers abilities.$"
-
-gMoveDescription_MagicCoat: @ 83BFACB
- .string "Reflects special effects\n"
- .string "back to the attacker.$"
-
-gMoveDescription_Recycle: @ 83BFAFA
- .string "Recycles a used item for\n"
- .string "one more use.$"
-
-gMoveDescription_Revenge: @ 83BFB21
- .string "An attack that gains power\n"
- .string "if injured by the foe.$"
-
-gMoveDescription_BrickBreak: @ 83BFB53
- .string "Destroys barriers such as\n"
- .string "REFLECT and causes damage.$"
-
-gMoveDescription_Yawn: @ 83BFB88
- .string "Lulls the foe into yawning,\n"
- .string "then sleeping next turn.$"
-
-gMoveDescription_KnockOff: @ 83BFBBD
- .string "Knocks down the foe’s held\n"
- .string "item to prevent its use.$"
-
-gMoveDescription_Endeavor: @ 83BFBF1
- .string "Gains power if the user’s HP\n"
- .string "is lower than the foe’s HP.$"
-
-gMoveDescription_Eruption: @ 83BFC2A
- .string "The higher the user’s HP,\n"
- .string "the more damage caused.$"
-
-gMoveDescription_SkillSwap: @ 83BFC5C
- .string "The user swaps special\n"
- .string "abilities with the target.$"
-
-gMoveDescription_Imprison: @ 83BFC8E
- .string "Prevents foes from using\n"
- .string "moves known by the user.$"
-
-gMoveDescription_Refresh: @ 83BFCC0
- .string "Heals poisoning, paralysis,\n"
- .string "or a burn.$"
-
-gMoveDescription_Grudge: @ 83BFCE7
- .string "If the user faints, deletes\n"
- .string "the PP of the final move.$"
-
-gMoveDescription_Snatch: @ 83BFD1D
- .string "Steals the effects of the\n"
- .string "move the foe uses next.$"
-
-gMoveDescription_SecretPower: @ 83BFD4F
- .string "An attack with effects\n"
- .string "that vary by location.$"
-
-gMoveDescription_Dive: @ 83BFD7D
- .string "Dives underwater the first\n"
- .string "turn and strikes next turn.$"
-
-gMoveDescription_ArmThrust: @ 83BFDB4
- .string "Straight-arm punches that\n"
- .string "strike the foe 2 to 5 times.$"
-
-gMoveDescription_Camouflage: @ 83BFDEB
- .string "Alters the POKéMON’s type\n"
- .string "depending on the location.$"
-
-gMoveDescription_TailGlow: @ 83BFE20
- .string "Flashes a light that sharply\n"
- .string "raises SP. ATK.$"
-
-gMoveDescription_LusterPurge: @ 83BFE4D
- .string "Attacks with a burst of\n"
- .string "light. May lower SP. DEF.$"
-
-gMoveDescription_MistBall: @ 83BFE7F
- .string "Attacks with a flurry of\n"
- .string "down. May lower SP. ATK.$"
-
-gMoveDescription_FeatherDance: @ 83BFEB1
- .string "Envelops the foe with down\n"
- .string "to sharply reduce ATTACK.$"
-
-gMoveDescription_TeeterDance: @ 83BFEE6
- .string "Confuses all POKéMON on\n"
- .string "the scene.$"
-
-gMoveDescription_BlazeKick: @ 83BFF09
- .string "A kick with a high critical-\n"
- .string "hit ratio. May cause a burn.$"
-
-gMoveDescription_MudSport: @ 83BFF43
- .string "Covers the user in mud to\n"
- .string "raise electrical resistance.$"
-
-gMoveDescription_IceBall: @ 83BFF7A
- .string "A 5-turn attack that gains\n"
- .string "power on successive hits.$"
-
-gMoveDescription_NeedleArm: @ 83BFFAF
- .string "Attacks with thorny arms.\n"
- .string "May cause flinching.$"
-
-gMoveDescription_SlackOff: @ 83BFFDE
- .string "Slacks off and restores\n"
- .string "half the maximum HP.$"
-
-gMoveDescription_HyperVoice: @ 83C000B
- .string "A loud attack that uses\n"
- .string "sound waves to injure.$"
-
-gMoveDescription_PoisonFang: @ 83C003A
- .string "A sharp-fanged attack.\n"
- .string "May badly poison the foe.$"
-
-gMoveDescription_CrushClaw: @ 83C006B
- .string "Tears at the foe with sharp\n"
- .string "claws. May lower DEFENSE.$"
-
-gMoveDescription_BlastBurn: @ 83C00A1
- .string "Powerful, but leaves the\n"
- .string "user immobile the next turn.$"
-
-gMoveDescription_HydroCannon: @ 83C00D7
- .string "Powerful, but leaves the\n"
- .string "user immobile the next turn.$"
-
-gMoveDescription_MeteorMash: @ 83C010D
- .string "Fires a meteor-like punch.\n"
- .string "May raise ATTACK.$"
-
-gMoveDescription_Astonish: @ 83C013A
- .string "An attack that may shock\n"
- .string "the foe into flinching.$"
-
-gMoveDescription_WeatherBall: @ 83C016B
- .string "The move’s type and power\n"
- .string "change with the weather.$"
-
-gMoveDescription_Aromatherapy: @ 83C019E
- .string "Heals all status problems\n"
- .string "with a soothing scent.$"
-
-gMoveDescription_FakeTears: @ 83C01CF
- .string "Feigns crying to sharply\n"
- .string "lower the foe’s SP. DEF.$"
-
-gMoveDescription_AirCutter: @ 83C0201
- .string "Hacks with razorlike wind.\n"
- .string "High critical-hit ratio.$"
-
-gMoveDescription_Overheat: @ 83C0235
- .string "Allows a full-power attack,\n"
- .string "but sharply lowers SP. ATK.$"
-
-gMoveDescription_OdorSleuth: @ 83C026D
- .string "Negates the foe’s efforts\n"
- .string "to heighten evasiveness.$"
-
-gMoveDescription_RockTomb: @ 83C02A0
- .string "Stops the foe from moving\n"
- .string "with rocks and cuts SPEED.$"
-
-gMoveDescription_SilverWind: @ 83C02D5
- .string "A powdery attack that may\n"
- .string "raise abilities.$"
-
-gMoveDescription_MetalSound: @ 83C0300
- .string "Emits a horrible screech\n"
- .string "that sharply lowers SP. DEF.$"
-
-gMoveDescription_GrassWhistle: @ 83C0336
- .string "Lulls the foe into sleep\n"
- .string "with a pleasant melody.$"
-
-gMoveDescription_Tickle: @ 83C0367
- .string "Makes the foe laugh to\n"
- .string "lower ATTACK and DEFENSE.$"
-
-gMoveDescription_CosmicPower: @ 83C0398
- .string "Raises DEFENSE and SP. DEF\n"
- .string "with a mystic power.$"
-
-gMoveDescription_WaterSpout: @ 83C03C8
- .string "Inflicts more damage if the\n"
- .string "user’s HP is high.$"
-
-gMoveDescription_SignalBeam: @ 83C03F7
- .string "A strange beam attack that\n"
- .string "may confuse the foe.$"
-
-gMoveDescription_ShadowPunch: @ 83C0427
- .string "An unavoidable punch that\n"
- .string "is thrown from shadows.$"
-
-gMoveDescription_Extrasensory: @ 83C0459
- .string "Attacks with a peculiar\n"
- .string "power. May cause flinching.$"
-
-gMoveDescription_SkyUppercut: @ 83C048D
- .string "An uppercut thrown as if\n"
- .string "leaping into the sky.$"
-
-gMoveDescription_SandTomb: @ 83C04BC
- .string "Traps and hurts the foe in\n"
- .string "quicksand for 2 to 5 turns.$"
-
-gMoveDescription_SheerCold: @ 83C04F3
- .string "A chilling attack that\n"
- .string "causes fainting if it hits.$"
-
-gMoveDescription_MuddyWater: @ 83C0526
- .string "Attacks with muddy water.\n"
- .string "May lower accuracy.$"
-
-gMoveDescription_BulletSeed: @ 83C0554
- .string "Shoots 2 to 5 seeds in a row\n"
- .string "to strike the foe.$"
-
-gMoveDescription_AerialAce: @ 83C0584
- .string "An extremely speedy and\n"
- .string "unavoidable attack.$"
-
-gMoveDescription_IcicleSpear: @ 83C05B0
- .string "Attacks the foe by firing\n"
- .string "2 to 5 icicles in a row.$"
-
-gMoveDescription_IronDefense: @ 83C05E3
- .string "Hardens the body’s surface\n"
- .string "to sharply raise DEFENSE.$"
-
-gMoveDescription_Block: @ 83C0618
- .string "Blocks the foe’s way to\n"
- .string "prevent escape.$"
-
-gMoveDescription_Howl: @ 83C0640
- .string "Howls to raise the spirit\n"
- .string "and boosts ATTACK.$"
-
-gMoveDescription_DragonClaw: @ 83C066D
- .string "Slashes the foe with sharp\n"
- .string "claws.$"
-
-gMoveDescription_FrenzyPlant: @ 83C068F
- .string "Powerful, but leaves the\n"
- .string "user immobile the next turn.$"
-
-gMoveDescription_BulkUp: @ 83C06C5
- .string "Bulks up the body to boost\n"
- .string "both ATTACK and DEFENSE.$"
-
-gMoveDescription_Bounce: @ 83C06F9
- .string "Bounces up, then down the\n"
- .string "next turn. May paralyze.$"
-
-gMoveDescription_MudShot: @ 83C072C
- .string "Hurls mud at the foe and\n"
- .string "reduces SPEED.$"
-
-gMoveDescription_PoisonTail: @ 83C0754
- .string "Has a high critical-hit\n"
- .string "ratio. May also poison.$"
-
-gMoveDescription_Covet: @ 83C0784
- .string "Cutely begs to obtain an\n"
- .string "item held by the foe.$"
-
-gMoveDescription_VoltTackle: @ 83C07B3
- .string "A life-risking tackle that\n"
- .string "slightly hurts the user.$"
-
-gMoveDescription_MagicalLeaf: @ 83C07E7
- .string "Attacks with a strange leaf\n"
- .string "that cannot be evaded.$"
-
-gMoveDescription_WaterSport: @ 83C081A
- .string "The user becomes soaked to\n"
- .string "raise resistance to fire.$"
-
-gMoveDescription_CalmMind: @ 83C084F
- .string "Raises SP. ATK and SP. DEF\n"
- .string "by focusing the mind.$"
-
-gMoveDescription_LeafBlade: @ 83C0880
- .string "Slashes with a sharp leaf.\n"
- .string "High critical-hit ratio.$"
-
-gMoveDescription_DragonDance: @ 83C08B4
- .string "A mystical dance that ups\n"
- .string "ATTACK and SPEED.$"
-
-gMoveDescription_RockBlast: @ 83C08E0
- .string "Hurls boulders at the foe\n"
- .string "2 to 5 times in a row.$"
-
-gMoveDescription_ShockWave: @ 83C0911
- .string "A fast and unavoidable\n"
- .string "electric attack.$"
-
-gMoveDescription_WaterPulse: @ 83C0939
- .string "Attacks with ultrasonic\n"
- .string "waves. May confuse the foe$"
-
-gMoveDescription_DoomDesire: @ 83C096C
- .string "Summons strong sunlight to\n"
- .string "attack 2 turns later.$"
-
-gMoveDescription_PsychoBoost: @ 83C099D
- .string "Allows a full-power attack,\n"
- .string "but sharply lowers SP. ATK.$"
-
- .align 2
-gMoveDescriptions:: @ 83C09D8
- .4byte gMoveDescription_Pound
- .4byte gMoveDescription_KarateChop
- .4byte gMoveDescription_DoubleSlap
- .4byte gMoveDescription_CometPunch
- .4byte gMoveDescription_MegaPunch
- .4byte gMoveDescription_PayDay
- .4byte gMoveDescription_FirePunch
- .4byte gMoveDescription_IcePunch
- .4byte gMoveDescription_ThunderPunch
- .4byte gMoveDescription_Scratch
- .4byte gMoveDescription_ViceGrip
- .4byte gMoveDescription_Guillotine
- .4byte gMoveDescription_RazorWind
- .4byte gMoveDescription_SwordsDance
- .4byte gMoveDescription_Cut
- .4byte gMoveDescription_Gust
- .4byte gMoveDescription_WingAttack
- .4byte gMoveDescription_Whirlwind
- .4byte gMoveDescription_Fly
- .4byte gMoveDescription_Bind
- .4byte gMoveDescription_Slam
- .4byte gMoveDescription_VineWhip
- .4byte gMoveDescription_Stomp
- .4byte gMoveDescription_DoubleKick
- .4byte gMoveDescription_MegaKick
- .4byte gMoveDescription_JumpKick
- .4byte gMoveDescription_RollingKick
- .4byte gMoveDescription_SandAttack
- .4byte gMoveDescription_Headbutt
- .4byte gMoveDescription_HornAttack
- .4byte gMoveDescription_FuryAttack
- .4byte gMoveDescription_HornDrill
- .4byte gMoveDescription_Tackle
- .4byte gMoveDescription_BodySlam
- .4byte gMoveDescription_Wrap
- .4byte gMoveDescription_TakeDown
- .4byte gMoveDescription_Thrash
- .4byte gMoveDescription_DoubleEdge
- .4byte gMoveDescription_TailWhip
- .4byte gMoveDescription_PoisonSting
- .4byte gMoveDescription_Twineedle
- .4byte gMoveDescription_PinMissile
- .4byte gMoveDescription_Leer
- .4byte gMoveDescription_Bite
- .4byte gMoveDescription_Growl
- .4byte gMoveDescription_Roar
- .4byte gMoveDescription_Sing
- .4byte gMoveDescription_Supersonic
- .4byte gMoveDescription_SonicBoom
- .4byte gMoveDescription_Disable
- .4byte gMoveDescription_Acid
- .4byte gMoveDescription_Ember
- .4byte gMoveDescription_Flamethrower
- .4byte gMoveDescription_Mist
- .4byte gMoveDescription_WaterGun
- .4byte gMoveDescription_HydroPump
- .4byte gMoveDescription_Surf
- .4byte gMoveDescription_IceBeam
- .4byte gMoveDescription_Blizzard
- .4byte gMoveDescription_Psybeam
- .4byte gMoveDescription_BubbleBeam
- .4byte gMoveDescription_AuroraBeam
- .4byte gMoveDescription_HyperBeam
- .4byte gMoveDescription_Peck
- .4byte gMoveDescription_DrillPeck
- .4byte gMoveDescription_Submission
- .4byte gMoveDescription_LowKick
- .4byte gMoveDescription_Counter
- .4byte gMoveDescription_SeismicToss
- .4byte gMoveDescription_Strength
- .4byte gMoveDescription_Absorb
- .4byte gMoveDescription_MegaDrain
- .4byte gMoveDescription_LeechSeed
- .4byte gMoveDescription_Growth
- .4byte gMoveDescription_RazorLeaf
- .4byte gMoveDescription_SolarBeam
- .4byte gMoveDescription_PoisonPowder
- .4byte gMoveDescription_StunSpore
- .4byte gMoveDescription_SleepPowder
- .4byte gMoveDescription_PetalDance
- .4byte gMoveDescription_StringShot
- .4byte gMoveDescription_DragonRage
- .4byte gMoveDescription_FireSpin
- .4byte gMoveDescription_ThunderShock
- .4byte gMoveDescription_Thunderbolt
- .4byte gMoveDescription_ThunderWave
- .4byte gMoveDescription_Thunder
- .4byte gMoveDescription_RockThrow
- .4byte gMoveDescription_Earthquake
- .4byte gMoveDescription_Fissure
- .4byte gMoveDescription_Dig
- .4byte gMoveDescription_Toxic
- .4byte gMoveDescription_Confusion
- .4byte gMoveDescription_Psychic
- .4byte gMoveDescription_Hypnosis
- .4byte gMoveDescription_Meditate
- .4byte gMoveDescription_Agility
- .4byte gMoveDescription_QuickAttack
- .4byte gMoveDescription_Rage
- .4byte gMoveDescription_Teleport
- .4byte gMoveDescription_NightShade
- .4byte gMoveDescription_Mimic
- .4byte gMoveDescription_Screech
- .4byte gMoveDescription_DoubleTeam
- .4byte gMoveDescription_Recover
- .4byte gMoveDescription_Harden
- .4byte gMoveDescription_Minimize
- .4byte gMoveDescription_Smokescreen
- .4byte gMoveDescription_ConfuseRay
- .4byte gMoveDescription_Withdraw
- .4byte gMoveDescription_DefenseCurl
- .4byte gMoveDescription_Barrier
- .4byte gMoveDescription_LightScreen
- .4byte gMoveDescription_Haze
- .4byte gMoveDescription_Reflect
- .4byte gMoveDescription_FocusEnergy
- .4byte gMoveDescription_Bide
- .4byte gMoveDescription_Metronome
- .4byte gMoveDescription_MirrorMove
- .4byte gMoveDescription_SelfDestruct
- .4byte gMoveDescription_EggBomb
- .4byte gMoveDescription_Lick
- .4byte gMoveDescription_Smog
- .4byte gMoveDescription_Sludge
- .4byte gMoveDescription_BoneClub
- .4byte gMoveDescription_FireBlast
- .4byte gMoveDescription_Waterfall
- .4byte gMoveDescription_Clamp
- .4byte gMoveDescription_Swift
- .4byte gMoveDescription_SkullBash
- .4byte gMoveDescription_SpikeCannon
- .4byte gMoveDescription_Constrict
- .4byte gMoveDescription_Amnesia
- .4byte gMoveDescription_Kinesis
- .4byte gMoveDescription_SoftBoiled
- .4byte gMoveDescription_HiJumpKick
- .4byte gMoveDescription_Glare
- .4byte gMoveDescription_DreamEater
- .4byte gMoveDescription_PoisonGas
- .4byte gMoveDescription_Barrage
- .4byte gMoveDescription_LeechLife
- .4byte gMoveDescription_LovelyKiss
- .4byte gMoveDescription_SkyAttack
- .4byte gMoveDescription_Transform
- .4byte gMoveDescription_Bubble
- .4byte gMoveDescription_DizzyPunch
- .4byte gMoveDescription_Spore
- .4byte gMoveDescription_Flash
- .4byte gMoveDescription_Psywave
- .4byte gMoveDescription_Splash
- .4byte gMoveDescription_AcidArmor
- .4byte gMoveDescription_Crabhammer
- .4byte gMoveDescription_Explosion
- .4byte gMoveDescription_FurySwipes
- .4byte gMoveDescription_Bonemerang
- .4byte gMoveDescription_Rest
- .4byte gMoveDescription_RockSlide
- .4byte gMoveDescription_HyperFang
- .4byte gMoveDescription_Sharpen
- .4byte gMoveDescription_Conversion
- .4byte gMoveDescription_TriAttack
- .4byte gMoveDescription_SuperFang
- .4byte gMoveDescription_Slash
- .4byte gMoveDescription_Substitute
- .4byte gMoveDescription_Struggle
- .4byte gMoveDescription_Sketch
- .4byte gMoveDescription_TripleKick
- .4byte gMoveDescription_Thief
- .4byte gMoveDescription_SpiderWeb
- .4byte gMoveDescription_MindReader
- .4byte gMoveDescription_Nightmare
- .4byte gMoveDescription_FlameWheel
- .4byte gMoveDescription_Snore
- .4byte gMoveDescription_Curse
- .4byte gMoveDescription_Flail
- .4byte gMoveDescription_Conversion2
- .4byte gMoveDescription_Aeroblast
- .4byte gMoveDescription_CottonSpore
- .4byte gMoveDescription_Reversal
- .4byte gMoveDescription_Spite
- .4byte gMoveDescription_PowderSnow
- .4byte gMoveDescription_Protect
- .4byte gMoveDescription_MachPunch
- .4byte gMoveDescription_ScaryFace
- .4byte gMoveDescription_FaintAttack
- .4byte gMoveDescription_SweetKiss
- .4byte gMoveDescription_BellyDrum
- .4byte gMoveDescription_SludgeBomb
- .4byte gMoveDescription_MudSlap
- .4byte gMoveDescription_Octazooka
- .4byte gMoveDescription_Spikes
- .4byte gMoveDescription_ZapCannon
- .4byte gMoveDescription_Foresight
- .4byte gMoveDescription_DestinyBond
- .4byte gMoveDescription_PerishSong
- .4byte gMoveDescription_IcyWind
- .4byte gMoveDescription_Detect
- .4byte gMoveDescription_BoneRush
- .4byte gMoveDescription_LockOn
- .4byte gMoveDescription_Outrage
- .4byte gMoveDescription_Sandstorm
- .4byte gMoveDescription_GigaDrain
- .4byte gMoveDescription_Endure
- .4byte gMoveDescription_Charm
- .4byte gMoveDescription_Rollout
- .4byte gMoveDescription_FalseSwipe
- .4byte gMoveDescription_Swagger
- .4byte gMoveDescription_MilkDrink
- .4byte gMoveDescription_Spark
- .4byte gMoveDescription_FuryCutter
- .4byte gMoveDescription_SteelWing
- .4byte gMoveDescription_MeanLook
- .4byte gMoveDescription_Attract
- .4byte gMoveDescription_SleepTalk
- .4byte gMoveDescription_HealBell
- .4byte gMoveDescription_Return
- .4byte gMoveDescription_Present
- .4byte gMoveDescription_Frustration
- .4byte gMoveDescription_Safeguard
- .4byte gMoveDescription_PainSplit
- .4byte gMoveDescription_SacredFire
- .4byte gMoveDescription_Magnitude
- .4byte gMoveDescription_DynamicPunch
- .4byte gMoveDescription_Megahorn
- .4byte gMoveDescription_DragonBreath
- .4byte gMoveDescription_BatonPass
- .4byte gMoveDescription_Encore
- .4byte gMoveDescription_Pursuit
- .4byte gMoveDescription_RapidSpin
- .4byte gMoveDescription_SweetScent
- .4byte gMoveDescription_IronTail
- .4byte gMoveDescription_MetalClaw
- .4byte gMoveDescription_VitalThrow
- .4byte gMoveDescription_MorningSun
- .4byte gMoveDescription_Synthesis
- .4byte gMoveDescription_Moonlight
- .4byte gMoveDescription_HiddenPower
- .4byte gMoveDescription_CrossChop
- .4byte gMoveDescription_Twister
- .4byte gMoveDescription_RainDance
- .4byte gMoveDescription_SunnyDay
- .4byte gMoveDescription_Crunch
- .4byte gMoveDescription_MirrorCoat
- .4byte gMoveDescription_PsychUp
- .4byte gMoveDescription_ExtremeSpeed
- .4byte gMoveDescription_AncientPower
- .4byte gMoveDescription_ShadowBall
- .4byte gMoveDescription_FutureSight
- .4byte gMoveDescription_RockSmash
- .4byte gMoveDescription_Whirlpool
- .4byte gMoveDescription_BeatUp
- .4byte gMoveDescription_FakeOut
- .4byte gMoveDescription_Uproar
- .4byte gMoveDescription_Stockpile
- .4byte gMoveDescription_SpitUp
- .4byte gMoveDescription_Swallow
- .4byte gMoveDescription_HeatWave
- .4byte gMoveDescription_Hail
- .4byte gMoveDescription_Torment
- .4byte gMoveDescription_Flatter
- .4byte gMoveDescription_WillOWisp
- .4byte gMoveDescription_Memento
- .4byte gMoveDescription_Facade
- .4byte gMoveDescription_FocusPunch
- .4byte gMoveDescription_SmellingSalt
- .4byte gMoveDescription_FollowMe
- .4byte gMoveDescription_NaturePower
- .4byte gMoveDescription_Charge
- .4byte gMoveDescription_Taunt
- .4byte gMoveDescription_HelpingHand
- .4byte gMoveDescription_Trick
- .4byte gMoveDescription_RolePlay
- .4byte gMoveDescription_Wish
- .4byte gMoveDescription_Assist
- .4byte gMoveDescription_Ingrain
- .4byte gMoveDescription_Superpower
- .4byte gMoveDescription_MagicCoat
- .4byte gMoveDescription_Recycle
- .4byte gMoveDescription_Revenge
- .4byte gMoveDescription_BrickBreak
- .4byte gMoveDescription_Yawn
- .4byte gMoveDescription_KnockOff
- .4byte gMoveDescription_Endeavor
- .4byte gMoveDescription_Eruption
- .4byte gMoveDescription_SkillSwap
- .4byte gMoveDescription_Imprison
- .4byte gMoveDescription_Refresh
- .4byte gMoveDescription_Grudge
- .4byte gMoveDescription_Snatch
- .4byte gMoveDescription_SecretPower
- .4byte gMoveDescription_Dive
- .4byte gMoveDescription_ArmThrust
- .4byte gMoveDescription_Camouflage
- .4byte gMoveDescription_TailGlow
- .4byte gMoveDescription_LusterPurge
- .4byte gMoveDescription_MistBall
- .4byte gMoveDescription_FeatherDance
- .4byte gMoveDescription_TeeterDance
- .4byte gMoveDescription_BlazeKick
- .4byte gMoveDescription_MudSport
- .4byte gMoveDescription_IceBall
- .4byte gMoveDescription_NeedleArm
- .4byte gMoveDescription_SlackOff
- .4byte gMoveDescription_HyperVoice
- .4byte gMoveDescription_PoisonFang
- .4byte gMoveDescription_CrushClaw
- .4byte gMoveDescription_BlastBurn
- .4byte gMoveDescription_HydroCannon
- .4byte gMoveDescription_MeteorMash
- .4byte gMoveDescription_Astonish
- .4byte gMoveDescription_WeatherBall
- .4byte gMoveDescription_Aromatherapy
- .4byte gMoveDescription_FakeTears
- .4byte gMoveDescription_AirCutter
- .4byte gMoveDescription_Overheat
- .4byte gMoveDescription_OdorSleuth
- .4byte gMoveDescription_RockTomb
- .4byte gMoveDescription_SilverWind
- .4byte gMoveDescription_MetalSound
- .4byte gMoveDescription_GrassWhistle
- .4byte gMoveDescription_Tickle
- .4byte gMoveDescription_CosmicPower
- .4byte gMoveDescription_WaterSpout
- .4byte gMoveDescription_SignalBeam
- .4byte gMoveDescription_ShadowPunch
- .4byte gMoveDescription_Extrasensory
- .4byte gMoveDescription_SkyUppercut
- .4byte gMoveDescription_SandTomb
- .4byte gMoveDescription_SheerCold
- .4byte gMoveDescription_MuddyWater
- .4byte gMoveDescription_BulletSeed
- .4byte gMoveDescription_AerialAce
- .4byte gMoveDescription_IcicleSpear
- .4byte gMoveDescription_IronDefense
- .4byte gMoveDescription_Block
- .4byte gMoveDescription_Howl
- .4byte gMoveDescription_DragonClaw
- .4byte gMoveDescription_FrenzyPlant
- .4byte gMoveDescription_BulkUp
- .4byte gMoveDescription_Bounce
- .4byte gMoveDescription_MudShot
- .4byte gMoveDescription_PoisonTail
- .4byte gMoveDescription_Covet
- .4byte gMoveDescription_VoltTackle
- .4byte gMoveDescription_MagicalLeaf
- .4byte gMoveDescription_WaterSport
- .4byte gMoveDescription_CalmMind
- .4byte gMoveDescription_LeafBlade
- .4byte gMoveDescription_DragonDance
- .4byte gMoveDescription_RockBlast
- .4byte gMoveDescription_ShockWave
- .4byte gMoveDescription_WaterPulse
- .4byte gMoveDescription_DoomDesire
- .4byte gMoveDescription_PsychoBoost
diff --git a/data/text/nature_names.inc b/data/text/nature_names.inc
deleted file mode 100644
index f191f80ba..000000000
--- a/data/text/nature_names.inc
+++ /dev/null
@@ -1,102 +0,0 @@
-gNatureName_Hardy: @ 83C0F60
- .string "HARDY$"
-
-gNatureName_Lonely: @ 83C0F66
- .string "LONELY$"
-
-gNatureName_Brave: @ 83C0F6D
- .string "BRAVE$"
-
-gNatureName_Adamant: @ 83C0F73
- .string "ADAMANT$"
-
-gNatureName_Naughty: @ 83C0F7B
- .string "NAUGHTY$"
-
-gNatureName_Bold: @ 83C0F83
- .string "BOLD$"
-
-gNatureName_Docile: @ 83C0F88
- .string "DOCILE$"
-
-gNatureName_Relaxed: @ 83C0F8F
- .string "RELAXED$"
-
-gNatureName_Impish: @ 83C0F97
- .string "IMPISH$"
-
-gNatureName_Lax: @ 83C0F9E
- .string "LAX$"
-
-gNatureName_Timid: @ 83C0FA2
- .string "TIMID$"
-
-gNatureName_Hasty: @ 83C0FA8
- .string "HASTY$"
-
-gNatureName_Serious: @ 83C0FAE
- .string "SERIOUS$"
-
-gNatureName_Jolly: @ 83C0FB6
- .string "JOLLY$"
-
-gNatureName_Naive: @ 83C0FBC
- .string "NAIVE$"
-
-gNatureName_Modest: @ 83C0FC2
- .string "MODEST$"
-
-gNatureName_Mild: @ 83C0FC9
- .string "MILD$"
-
-gNatureName_Quiet: @ 83C0FCE
- .string "QUIET$"
-
-gNatureName_Bashful: @ 83C0FD4
- .string "BASHFUL$"
-
-gNatureName_Rash: @ 83C0FDC
- .string "RASH$"
-
-gNatureName_Calm: @ 83C0FE1
- .string "CALM$"
-
-gNatureName_Gentle: @ 83C0FE6
- .string "GENTLE$"
-
-gNatureName_Sassy: @ 83C0FED
- .string "SASSY$"
-
-gNatureName_Careful: @ 83C0FF3
- .string "CAREFUL$"
-
-gNatureName_Quirky: @ 83C0FFB
- .string "QUIRKY$"
-
- .align 2
-gNatureNames:: @ 83C1004
- .4byte gNatureName_Hardy
- .4byte gNatureName_Lonely
- .4byte gNatureName_Brave
- .4byte gNatureName_Adamant
- .4byte gNatureName_Naughty
- .4byte gNatureName_Bold
- .4byte gNatureName_Docile
- .4byte gNatureName_Relaxed
- .4byte gNatureName_Impish
- .4byte gNatureName_Lax
- .4byte gNatureName_Timid
- .4byte gNatureName_Hasty
- .4byte gNatureName_Serious
- .4byte gNatureName_Jolly
- .4byte gNatureName_Naive
- .4byte gNatureName_Modest
- .4byte gNatureName_Mild
- .4byte gNatureName_Quiet
- .4byte gNatureName_Bashful
- .4byte gNatureName_Rash
- .4byte gNatureName_Calm
- .4byte gNatureName_Gentle
- .4byte gNatureName_Sassy
- .4byte gNatureName_Careful
- .4byte gNatureName_Quirky
diff --git a/graphics/unknown/unknown_E94550.bin b/graphics/unknown/unknown_E94550.bin
index ba6830b73..ed5feb3d6 100644
--- a/graphics/unknown/unknown_E94550.bin
+++ b/graphics/unknown/unknown_E94550.bin
Binary files differ
diff --git a/graphics/unknown/unknown_E94590.bin b/graphics/unknown/unknown_E94590.bin
new file mode 100644
index 000000000..bed9142e8
--- /dev/null
+++ b/graphics/unknown/unknown_E94590.bin
Binary files differ
diff --git a/include/ewram.h b/include/ewram.h
index 06ea513a3..eacc02cab 100755
--- a/include/ewram.h
+++ b/include/ewram.h
@@ -207,6 +207,7 @@ extern u8 gSharedMem[];
#define eEggHatchData (struct EggHatchData*)(&gSharedMem[0x18000])
#define ePokedexView1 (struct PokedexView *)(gSharedMem + 0x18000)
#define UNK_2018000_STRUCT (*(struct UnknownStruct2018000 *)(gSharedMem + 0x18000))
+#define pssData (*(struct PokemonSummaryScreenStruct *)(gSharedMem + 0x18000))
#define ewram18300 ((u16 *)(gSharedMem + 0x18300))
#define ewram18800 (&gSharedMem[0x18800])
#define ePokedexView2 (struct PokedexView *)(gSharedMem + 0x18800)
diff --git a/include/gba/macro.h b/include/gba/macro.h
index 1e0254806..a0edf2a49 100644
--- a/include/gba/macro.h
+++ b/include/gba/macro.h
@@ -103,6 +103,22 @@
} \
}
+#define DmaClearLarge(dmaNum, dest, size, block, bit) \
+{ \
+ u32 _size = size; \
+ while (1) \
+ { \
+ DmaFill##bit(dmaNum, 0, dest, (block)); \
+ dest += (block); \
+ _size -= (block); \
+ if (_size <= (block)) \
+ { \
+ DmaFill##bit(dmaNum, 0, dest, _size); \
+ break; \
+ } \
+ } \
+}
+
#define DmaCopyLarge16(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 16)
#define DmaCopyLarge32(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 32)
diff --git a/include/learn_move.h b/include/learn_move.h
index 85fbf046e..7a05ea60b 100644
--- a/include/learn_move.h
+++ b/include/learn_move.h
@@ -1,6 +1,21 @@
#ifndef GUARD_LEARN_MOVE_H
#define GUARD_LEARN_MOVE_H
+struct ContestMove
+{
+ u8 effect;
+ u8 contestCategory:3;
+ u8 comboStarterId;
+ u8 comboMoves[4];
+};
+
+struct ContestEffect
+{
+ u8 effectType;
+ u8 appeal;
+ u8 jam;
+};
+
void sub_8132670(void);
#endif // GUARD_LEARN_MOVE_H
diff --git a/include/party_menu.h b/include/party_menu.h
index 304389e78..3998054da 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -216,5 +216,6 @@ void PartyMenuTryGiveMonMail(u8 taskId, TaskFunc func);
void sub_806D668(u8 monIndex);
void TaughtMove(u8 taskId);
void StopTryingToTeachMove_806F588(u8 taskId);
+bool8 IsHMMove(u16 move);
#endif // GUARD_PARTY_MENU_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 7fc8e181f..a1c30f1f3 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -578,6 +578,7 @@ void MonRestorePP(struct Pokemon *);
u8 *sub_803F378(u16 itemId);
+u16 SpeciesToPokedexNum(u16 species);
u16 NationalPokedexNumToSpecies(u16 nationalNum);
u16 NationalToHoennOrder(u16);
u16 SpeciesToNationalPokedexNum(u16);
@@ -611,6 +612,9 @@ const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *);
bool8 IsPokeSpriteNotFlipped(u16);
u8 GetLevelUpMovesBySpecies(u16, u16 *);
u8 TryIncrementMonLevel(struct Pokemon *);
+bool8 IsShiny(struct Pokemon *mon);
+
+struct Sprite *sub_80F7920(u16, u16, const u16 *);
#endif // GUARD_POKEMON_H
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index c1b99c367..945e810a3 100644
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -1,11 +1,65 @@
#ifndef GUARD_POKEMON_SUMMARY_SCREEN_H
#define GUARD_POKEMON_SUMMARY_SCREEN_H
+#include "main.h"
+#include "task.h"
+
extern const u8 *const gNatureNames[];
-void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, void (*)(void), int);
-void sub_809D9F0(struct Pokemon *party, u8, u8, void *, u32);
-void sub_809D9F0(struct Pokemon *, u8, u8, void *, u32);
+// The Pokemon Summary Screen can operate in different modes. Certain features,
+// such as move re-ordering, are available in the different modes.
+enum PokemonSummaryScreenMode
+{
+ PSS_MODE_NORMAL,
+ PSS_MODE_MOVES_ONLY,
+ PSS_MODE_SELECT_MOVE,
+ PSS_MODE_UNKNOWN, // TODO: this mode might be used by pokemon_storage_system
+ PSS_MODE_NO_MOVE_ORDER_EDIT,
+ PSS_MODE_PC_NORMAL,
+ PSS_MODE_PC_MOVES_ONLY,
+};
+
+enum PokemonSummaryScreenPage
+{
+ PSS_PAGE_INFO,
+ PSS_PAGE_SKILLS,
+ PSS_PAGE_BATTLE_MOVES,
+ PSS_PAGE_CONTEST_MOVES,
+};
+
+struct PokemonSummaryScreenStruct
+{
+ /*0x00*/ union {
+ struct Pokemon *partyMons;
+ struct BoxPokemon *boxMons;
+ } monList;
+ /*0x04*/ MainCallback callback;
+ /*0x08*/ u8 mode; // see enum PokemonSummaryScreenMode
+ /*0x09*/ u8 monIndex;
+ /*0x0A*/ u8 maxMonIndex;
+ /*0x0B*/ u8 page; // enum PokemonSummaryScreenPage
+ /*0x0C*/ u8 monSpriteId;
+ /*0x0D*/ u8 ballSpriteId;
+ /*0x0E*/ bool8 usingPC;
+ /*0x0F*/ u8 inputHandlingTaskId;
+ /*0x10*/ struct Pokemon loadedMon;
+ /*0x74*/ u8 loadGfxState;
+ /*0x75*/ u8 firstPage;
+ /*0x76*/ u8 lastPage;
+ /*0x77*/ u8 unk77;
+ /*0x78*/ u8 unk78;
+ /*0x79*/ u8 selectedMoveIndex;
+ /*0x7A*/ u8 switchMoveIndex;
+ /*0x7B*/ bool8 disableMoveOrderEditing;
+ /*0x7C*/ u16 moveToLearn;
+ /*0x7E*/ u8 headerTextId; // used as index into sPageHeaderTexts
+ /*0x7F*/ u8 headerActionTextId; // used as index into sPageHeaderTexts
+ /*0x80*/ u8 bgToggle;
+ /*0x84*/ TaskFunc unk84;
+};
+
+void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u8);
+void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16);
u8 sub_809FA30(void);
u8 pokemon_ailments_get_primary(u32);
u8 GetMonStatusAndPokerus();
@@ -14,4 +68,5 @@ u8 *PokemonSummaryScreen_CopyPokemonLevel(u8 *dest, u8 level);
u8 PokemonSummaryScreen_CheckOT(struct Pokemon *pokemon);
bool8 CheckPartyPokerus(struct Pokemon *, u8);
+
#endif // GUARD_POKEMON_SUMMARY_SCREEN_H
diff --git a/ld_script.txt b/ld_script.txt
index 936a5eed1..3a271cd83 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -132,9 +132,7 @@ SECTIONS {
src/pokemon/pokemon_storage_system.o(.text);
asm/pokemon_storage_system.o(.text_8098A38);
src/pokemon/pokemon_icon.o(.text);
- asm/pokemon_summary_screen.o(.text);
src/pokemon/pokemon_summary_screen.o(.text);
- asm/pokemon_summary_screen.o(.text_80A0958);
src/field/script_movement.o(.text);
src/field/fldeff_cut.o(.text);
src/pokemon/mail_data.o(.text);
@@ -515,7 +513,7 @@ SECTIONS {
src/battle/battle_party_menu.o(.rodata);
data/pokemon_storage_system.o(.rodata);
src/pokemon/pokemon_icon.o(.rodata);
- data/pokemon_summary_screen.o(.rodata);
+ src/pokemon/pokemon_summary_screen.o(.rodata);
data/fldeff_cut.o(.rodata);
src/field/item_menu.o(.rodata);
data/battle_anim_80A7E7C.o(.rodata);
diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c
index 088f30669..4483c252a 100644
--- a/src/battle/battle_4.c
+++ b/src/battle/battle_4.c
@@ -18,6 +18,7 @@
#include "sound.h"
#include "task.h"
#include "decompress.h"
+#include "pokemon_summary_screen.h"
#include "naming_screen.h"
#include "ewram.h"
@@ -139,7 +140,6 @@ u16 GetPokedexHeightWeight(u16 national_num, u8 heightweight);
u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5);
void DestroyMenuCursor(void);
void sub_802BC6C(void);
-void sub_809D9F0(struct Pokemon *party, u8, u8, void *, u32);
u8 sub_809FA30(void);
bool32 IsHMMove2(u16 move);
void sub_802BBD4(u8 r0, u8 r1, u8 r2, u8 r3, u8 sp0);
@@ -10833,7 +10833,7 @@ static void atk5A(void)
case 2:
if (!gPaletteFade.active)
{
- sub_809D9F0(gPlayerParty, BATTLE_STRUCT->expGetterID, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn);
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, BATTLE_STRUCT->expGetterID, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn);
BATTLE_STRUCT->atk5A_StateTracker++;
}
break;
diff --git a/src/battle/battle_party_menu.c b/src/battle/battle_party_menu.c
index 97e9dc0fc..5531ead4b 100644
--- a/src/battle/battle_party_menu.c
+++ b/src/battle/battle_party_menu.c
@@ -625,7 +625,7 @@ static void Task_ShowSummaryScreen(u8 taskId)
{
DestroyTask(taskId);
EWRAM_1B000.unk262 = 1;
- ShowPokemonSummaryScreen(gPlayerParty, partySelection, gPlayerPartyCount - 1, Task_809535C, 4);
+ ShowPokemonSummaryScreen(gPlayerParty, partySelection, gPlayerPartyCount - 1, Task_809535C, PSS_MODE_NO_MOVE_ORDER_EDIT);
}
}
diff --git a/src/data/text/move_descriptions_de.h b/src/data/text/move_descriptions_de.h
new file mode 100644
index 000000000..854336295
--- /dev/null
+++ b/src/data/text/move_descriptions_de.h
@@ -0,0 +1,1771 @@
+static const u8 MoveDescription_Pound[] = _(
+ "Ein Hieb mit den Vorder-\n"
+ "beinen oder dem Schweif.");
+
+static const u8 MoveDescription_KarateChop[] = _(
+ "Gute Möglichkeit, einen\n"
+ "Volltreffer zu landen.");
+
+static const u8 MoveDescription_DoubleSlap[] = _(
+ "Trifft den Gegner 2 - 5-mal\n"
+ "hintereinander.");
+
+static const u8 MoveDescription_CometPunch[] = _(
+ "Trifft den Gegner 2 - 5-mal\n"
+ "hintereinander.");
+
+static const u8 MoveDescription_MegaPunch[] = _(
+ "Ein unglaublich kräftiger\n"
+ "Hieb.");
+
+static const u8 MoveDescription_PayDay[] = _(
+ "Wirft Münzen auf Gegner.\n"
+ "Geld wird erstattet.");
+
+static const u8 MoveDescription_FirePunch[] = _(
+ "Schlag, der dem Gegner evtl.\n"
+ "Verbrennungen zufügt.");
+
+static const u8 MoveDescription_IcePunch[] = _(
+ "Ein Schlag, der den Gegner\n"
+ "evtl. einfriert.");
+
+static const u8 MoveDescription_ThunderPunch[] = _(
+ "Schlag, der den Gegner evtl.\n"
+ "paralysiert.");
+
+static const u8 MoveDescription_Scratch[] = _(
+ "Der Gegner wird mit\n"
+ "scharfen Klauen zerkratzt.");
+
+static const u8 MoveDescription_ViceGrip[] = _(
+ "Umklammert den Gegner mit\n"
+ "großen, kräftigen Zangen.");
+
+static const u8 MoveDescription_Guillotine[] = _(
+ "Kräftige Scheren-Attacke.\n"
+ "Führt evtl. zum K.O.");
+
+static const u8 MoveDescription_RazorWind[] = _(
+ "Eine Attacke, die auf 2\n"
+ "Runden basiert.");
+
+static const u8 MoveDescription_SwordsDance[] = _(
+ "Erhöht den Angriffs-Wert\n"
+ "drastisch.");
+
+static const u8 MoveDescription_Cut[] = _(
+ "Trifft den Gegner mit\n"
+ "Klauen, Scheren o. ä.");
+
+static const u8 MoveDescription_Gust[] = _(
+ "Trifft den Gegner mit Wind-\n"
+ "stoß durch Flügelschlag.");
+
+static const u8 MoveDescription_WingAttack[] = _(
+ "Trifft den Gegner mit weit\n"
+ "gespreizten Flügeln.");
+
+static const u8 MoveDescription_Whirlwind[] = _(
+ "Weht Gegner weg und be-\n"
+ "endet den Kampf in Wildnis.");
+
+static const u8 MoveDescription_Fly[] = _(
+ "Steigt empor in der 1. Runde\n"
+ "und trifft Gegner in der 2.");
+
+static const u8 MoveDescription_Bind[] = _(
+ "Umklammert und trifft den\n"
+ "Gegner 2 - 5-mal.");
+
+static const u8 MoveDescription_Slam[] = _(
+ "Schlag mit einem langen\n"
+ "Schweif, einer Ranke o. ä.");
+
+static const u8 MoveDescription_VineWhip[] = _(
+ "Peitschenähnlicher Schlag\n"
+ "mit Ranken.");
+
+static const u8 MoveDescription_Stomp[] = _(
+ "Stampfen mit Fuß. Gegner\n"
+ "schreckt evtl. zurück.");
+
+static const u8 MoveDescription_DoubleKick[] = _(
+ "Doppeltritt. Der Gegner\n"
+ "wird zweimal getroffen.");
+
+static const u8 MoveDescription_MegaKick[] = _(
+ "Ein extrem heftiger Tritt.");
+
+static const u8 MoveDescription_JumpKick[] = _(
+ "Sprung-Tritt. Selbstschä-\n"
+ "digung bei Misserfolg.");
+
+static const u8 MoveDescription_RollingKick[] = _(
+ "Schneller Tritt aus der\n"
+ "Drehung.");
+
+static const u8 MoveDescription_SandAttack[] = _(
+ "Senkt Genauigkeit des Geg-\n"
+ "ners durch Sand.");
+
+static const u8 MoveDescription_Headbutt[] = _(
+ "Rammt den Gegner und lässt\n"
+ "ihn evtl. zurückschrecken.");
+
+static const u8 MoveDescription_HornAttack[] = _(
+ "Spießt den Gegner mit\n"
+ "spitzen Hörnern auf.");
+
+static const u8 MoveDescription_FuryAttack[] = _(
+ "Spießt den Gegner 2 - 5-mal\n"
+ "mit spitzen Hörnern auf.");
+
+static const u8 MoveDescription_HornDrill[] = _(
+ "K.O.-Attacke, die ein Horn\n"
+ "als Bohrer einsetzt.");
+
+static const u8 MoveDescription_Tackle[] = _(
+ "Trifft den Gegner mit vollem\n"
+ "Körpereinsatz.");
+
+static const u8 MoveDescription_BodySlam[] = _(
+ "Körper-Ramme, kann\n"
+ "Paralyse hervorrufen.");
+
+static const u8 MoveDescription_Wrap[] = _(
+ "Umwickelt Gegner 2 - 5-mal\n"
+ "mit Ranken o. ä.");
+
+static const u8 MoveDescription_TakeDown[] = _(
+ "Rücksichtslose Attacke,\n"
+ "mit Selbstschädigung.");
+
+static const u8 MoveDescription_Thrash[] = _(
+ "Attacke in 2 bis 3 Runden,\n"
+ "die Anwender verwirrt.");
+
+static const u8 MoveDescription_DoubleEdge[] = _(
+ "Lebensgefährlicher Angriff\n"
+ "mit Selbstschädigung.");
+
+static const u8 MoveDescription_TailWhip[] = _(
+ "Hieb mit dem Schweif, senkt\n"
+ "die VERT. des Gegners.");
+
+static const u8 MoveDescription_PoisonSting[] = _(
+ "Angriff mit Widerhaken,\n"
+ "kann Gegner vergiften.");
+
+static const u8 MoveDescription_Twineedle[] = _(
+ "Stacheln an den Vorderbei-\n"
+ "nen treffen Gegner 2-mal.");
+
+static const u8 MoveDescription_PinMissile[] = _(
+ "Spitze Nadeln treffen den\n"
+ "Gegner 2 - 5-mal.");
+
+static const u8 MoveDescription_Leer[] = _(
+ "Gegners VERT.-Wert wird\n"
+ "durch Blick gesenkt.");
+
+static const u8 MoveDescription_Bite[] = _(
+ "Beißt zu und lässt den Geg-\n"
+ "ner evtl. zurückschrecken.");
+
+static const u8 MoveDescription_Growl[] = _(
+ "Knurren, das den ANGR.-Wert\n"
+ "des Gegners senkt.");
+
+static const u8 MoveDescription_Roar[] = _(
+ "Verjagt den Gegner und be-\n"
+ "endet den Kampf in Wildnis.");
+
+static const u8 MoveDescription_Sing[] = _(
+ "Ein Lied, das den Gegner\n"
+ "in tiefen Schlaf versetzt.");
+
+static const u8 MoveDescription_Supersonic[] = _(
+ "Ausstoß bizarrer Schallwel-\n"
+ "len. Verwirrt Gegner evtl.");
+
+static const u8 MoveDescription_SonicBoom[] = _(
+ "Schockwellen. Richten immer\n"
+ "20 KP Schaden an.");
+
+static const u8 MoveDescription_Disable[] = _(
+ "Psycho-Attacke. Blockiert\n"
+ "eine Attacke des Gegners.");
+
+static const u8 MoveDescription_Acid[] = _(
+ "Versprüht ätzende Flüssig-\n"
+ "keit, senkt evtl. VERT.");
+
+static const u8 MoveDescription_Ember[] = _(
+ "Schwache Feuer-Attacke.\n"
+ "Verbrennt Gegner evtl.");
+
+static const u8 MoveDescription_Flamethrower[] = _(
+ "Starke Feuer-Attacke.\n"
+ "Verbrennt Gegner evtl.");
+
+static const u8 MoveDescription_Mist[] = _(
+ "Nebel, der die Änderung der\n"
+ "Werte verhindert.");
+
+static const u8 MoveDescription_WaterGun[] = _(
+ "Der Gegner wird mit Wasser\n"
+ "bespritzt.");
+
+static const u8 MoveDescription_HydroPump[] = _(
+ "Spritzt Wasser mit\n"
+ "Hochdruck auf den Gegner.");
+
+static const u8 MoveDescription_Surf[] = _(
+ "Eine riesige Welle bricht\n"
+ "über den Gegner herein.");
+
+static const u8 MoveDescription_IceBeam[] = _(
+ "Gegner wird von Eisstrahl\n"
+ "getroffen, friert evtl. ein.");
+
+static const u8 MoveDescription_Blizzard[] = _(
+ "Ein Schneesturm, der den\n"
+ "Gegner einfrieren kann.");
+
+static const u8 MoveDescription_Psybeam[] = _(
+ "Feuert einen Strahl ab, der\n"
+ "Gegner verwirren kann.");
+
+static const u8 MoveDescription_BubbleBeam[] = _(
+ "Versprüht Blasen, die den\n"
+ "INIT.-Wert evtl. senken.");
+
+static const u8 MoveDescription_AuroraBeam[] = _(
+ "Regenbogenfarbener Strahl,\n"
+ "senkt evtl. ANGR.-Wert.");
+
+static const u8 MoveDescription_HyperBeam[] = _(
+ "Starke Attacke. Angreifer\n"
+ "setzt eine Runde aus.");
+
+static const u8 MoveDescription_Peck[] = _(
+ "Greift Gegner mit dem\n"
+ "Schnabel an.");
+
+static const u8 MoveDescription_DrillPeck[] = _(
+ "Attacke, bei der der Schna-\n"
+ "bel als Bohrer dient.");
+
+static const u8 MoveDescription_Submission[] = _(
+ "Rücksichtsloser Rempler. \n"
+ "Schädigt auch Angreifer.");
+
+static const u8 MoveDescription_LowKick[] = _(
+ "Tritt, der massigen Gegnern\n"
+ "mehr Schaden zufügt.");
+
+static const u8 MoveDescription_Counter[] = _(
+ "Kontert physischen Tref-\n"
+ "fer mit doppelter Kraft.");
+
+static const u8 MoveDescription_SeismicToss[] = _(
+ "Richtet Schaden gemäß\n"
+ "Level d. Angreifers an.");
+
+static const u8 MoveDescription_Strength[] = _(
+ "Erzeugt enorme Kraft und\n"
+ "rammt den Gegner.");
+
+static const u8 MoveDescription_Absorb[] = _(
+ "Attacke, die die Hälfte des\n"
+ "Schadens absorbiert.");
+
+static const u8 MoveDescription_MegaDrain[] = _(
+ "Attacke, die die Hälfte des\n"
+ "Schadens absorbiert.");
+
+static const u8 MoveDescription_LeechSeed[] = _(
+ "Gegner wird bepflanzt und\n"
+ "verliert jede Runde KP.");
+
+static const u8 MoveDescription_Growth[] = _(
+ "Der Körper wächst und\n"
+ "SPEZ. ANGR. wird erhöht.");
+
+static const u8 MoveDescription_RazorLeaf[] = _(
+ "Trifft Gegner mit Blättern.\n"
+ "Hohe Volltrefferquote.");
+
+static const u8 MoveDescription_SolarBeam[] = _(
+ "Absorbiert Licht in der 1.\n"
+ "Runde, 2. Runde Angriff.");
+
+static const u8 MoveDescription_PoisonPowder[] = _(
+ "Verstreut giftigen Puder,\n"
+ "der Gegner vergiften kann.");
+
+static const u8 MoveDescription_StunSpore[] = _(
+ "Verstreut Puder, der den\n"
+ "Gegner evtl. paralysiert.");
+
+static const u8 MoveDescription_SleepPowder[] = _(
+ "Verstreut Puder, der Geg.\n"
+ "evtl. in Schlaf versetzt.");
+
+static const u8 MoveDescription_PetalDance[] = _(
+ "Angriff in 2-3 Runden.\n"
+ "Angreifer wird verwirrt.");
+
+static const u8 MoveDescription_StringShot[] = _(
+ "Umwickelt Gegner mit Faden\n"
+ "und senkt INIT.-Wert.");
+
+static const u8 MoveDescription_DragonRage[] = _(
+ "Stößt Schockwellen aus, die\n"
+ "40 KP Schaden anrichten.");
+
+static const u8 MoveDescription_FireSpin[] = _(
+ "Schließt Gegner für 2-5\n"
+ "Runden in Feuerkreis ein.");
+
+static const u8 MoveDescription_ThunderShock[] = _(
+ "Elektro-Attacke. Gegner\n"
+ "evtl. paralysiert.");
+
+static const u8 MoveDescription_Thunderbolt[] = _(
+ "Starke Elektro-Attacke,\n"
+ "Gegner evtl. paralysiert.");
+
+static const u8 MoveDescription_ThunderWave[] = _(
+ "Ein schwacher Stromstoß,\n"
+ "der den Gegner paralysiert.");
+
+static const u8 MoveDescription_Thunder[] = _(
+ "Elektro-Attacke, die den\n"
+ "Gegner evtl. paralysiert.");
+
+static const u8 MoveDescription_RockThrow[] = _(
+ "Wirft kleine Steine auf den\n"
+ "Gegner.");
+
+static const u8 MoveDescription_Earthquake[] = _(
+ "Mächtiges Beben. Ist bei\n"
+ "fliegenden Feinden nutzlos.");
+
+static const u8 MoveDescription_Fissure[] = _(
+ "Sofort-K.O. Wirft Gegner\n"
+ "in Gebirgsspalte.");
+
+static const u8 MoveDescription_Dig[] = _(
+ "Gräbt sich in der 1. Runde\n"
+ "ein und trifft in der 2.");
+
+static const u8 MoveDescription_Toxic[] = _(
+ "Vergiftet den Gegner mit \n"
+ "einem starken Toxin.");
+
+static const u8 MoveDescription_Confusion[] = _(
+ "Psycho-Attacke, die den\n"
+ "Gegner evtl. verwirrt.");
+
+static const u8 MoveDescription_Psychic[] = _(
+ "Starke Psycho-Attacke, die\n"
+ "evtl. SPEZ. VERT. senkt.");
+
+static const u8 MoveDescription_Hypnosis[] = _(
+ "Hypno-Attacke, die Gegner\n"
+ "evtl. in Schlaf versetzt.");
+
+static const u8 MoveDescription_Meditate[] = _(
+ "Friedliche Meditation, um\n"
+ "ANGR.-Wert zu steigern.");
+
+static const u8 MoveDescription_Agility[] = _(
+ "Entspannt den Körper, um\n"
+ "INIT.-Wert. zu steigern.");
+
+static const u8 MoveDescription_QuickAttack[] = _(
+ "Sehr schneller Angriff mit\n"
+ "Erstschlaggarantie.");
+
+static const u8 MoveDescription_Rage[] = _(
+ "Erhöht ANGR. des Anwenders\n"
+ "bei jedem gegn. Treffer.");
+
+static const u8 MoveDescription_Teleport[] = _(
+ "Psycho-Angriff, um sofort\n"
+ "aus einem Kampf zu fliehen.");
+
+static const u8 MoveDescription_NightShade[] = _(
+ "Richtet Schaden gemäß\n"
+ "Level d. Angreifers an.");
+
+static const u8 MoveDescription_Mimic[] = _(
+ "Kopiert eine zuvor ausge-\n"
+ "führte Attacke d. Gegners.");
+
+static const u8 MoveDescription_Screech[] = _(
+ "Stößt einen Schrei aus, um\n"
+ "gegn. VERT. zu senken.");
+
+static const u8 MoveDescription_DoubleTeam[] = _(
+ "Erzeugt Ebenbilder, um \n"
+ "Fluchtwert zu erhöhen.");
+
+static const u8 MoveDescription_Recover[] = _(
+ "Max. KP des Anwenders w.\n"
+ "bis zur Hälfte aufgefüllt.");
+
+static const u8 MoveDescription_Harden[] = _(
+ "Stärkt die Muskulatur und\n"
+ "erhöht VERT.-Wert.");
+
+static const u8 MoveDescription_Minimize[] = _(
+ "Anwender schrumpft, um\n"
+ "Fluchtwert zu erhöhen.");
+
+static const u8 MoveDescription_Smokescreen[] = _(
+ "Senkt Genauigkeit d. Geg-\n"
+ "ners mit Rauch, Tinte o. ä.");
+
+static const u8 MoveDescription_ConfuseRay[] = _(
+ "Ein fieser Strahl, der den\n"
+ "Gegner verwirrt.");
+
+static const u8 MoveDescription_Withdraw[] = _(
+ "Rückzug in den harten\n"
+ "Panzer. Erhöht VERT.-Wert.");
+
+static const u8 MoveDescription_DefenseCurl[] = _(
+ "Verbirgt Schwächen durch\n"
+ "Einrollen, VERT.-Wert hoch.");
+
+static const u8 MoveDescription_Barrier[] = _(
+ "Erzeugt Barriere, die den\n"
+ "VERT.-Wert stark erhöht.");
+
+static const u8 MoveDescription_LightScreen[] = _(
+ "Erzeugt Lichtwand u. senkt\n"
+ "SPEZ. ANGR.-Schaden.");
+
+static const u8 MoveDescription_Haze[] = _(
+ "Erzeugt dunklen Dunst.\n"
+ "Löscht alle Statusänder.");
+
+static const u8 MoveDescription_Reflect[] = _(
+ "Erzeugt Lichtwand, schützt\n"
+ "teilweise vor phys. Angr.");
+
+static const u8 MoveDescription_FocusEnergy[] = _(
+ "Bündelt Kraft. Volltreffer-\n"
+ "chance wird erhöht.");
+
+static const u8 MoveDescription_Bide[] = _(
+ "Erträgt 2 Runden Angriffe,\n"
+ "schlägt doppelt zurück.");
+
+static const u8 MoveDescription_Metronome[] = _(
+ "Bewegt Finger und wählt\n"
+ "PKMN-Attacke zufällig aus.");
+
+static const u8 MoveDescription_MirrorMove[] = _(
+ "Erwidert gegn. Angriff mit\n"
+ "derselben Attacke.");
+
+static const u8 MoveDescription_SelfDestruct[] = _(
+ "Richtet großen Schaden an.\n"
+ "Anwender wird besiegt.");
+
+static const u8 MoveDescription_EggBomb[] = _(
+ "Ein Ei wird auf den Gegner\n"
+ "abgefeuert.");
+
+static const u8 MoveDescription_Lick[] = _(
+ "Leck-Attacke mit Zunge.\n"
+ "Gegner evtl. paralysiert.");
+
+static const u8 MoveDescription_Smog[] = _(
+ "Angriff mit Gas. Gegner wird\n"
+ "evtl. vergiftet.");
+
+static const u8 MoveDescription_Sludge[] = _(
+ "Wirft Schlamm auf Gegner.\n"
+ "Evtl. Vergiftung.");
+
+static const u8 MoveDescription_BoneClub[] = _(
+ "Schlägt Gegner mit Keule\n"
+ "und verschreckt ihn evtl.");
+
+static const u8 MoveDescription_FireBlast[] = _(
+ "Feuersbrunst, die alles ver-\n"
+ "sengt. Verbrennt Geg. evtl.");
+
+static const u8 MoveDescription_Waterfall[] = _(
+ "Attacke basiert auf Tempo.\n"
+ "Erklimmt Wasserfälle.");
+
+static const u8 MoveDescription_Clamp[] = _(
+ "Fängt und drückt Gegner\n"
+ "für 2-5 Runden.");
+
+static const u8 MoveDescription_Swift[] = _(
+ "Verschießt sternförmige\n"
+ "Strahlen. Treffergarantie!");
+
+static const u8 MoveDescription_SkullBash[] = _(
+ "Zieht Kopf ein und greift in\n"
+ "der nächsten Runde an.");
+
+static const u8 MoveDescription_SpikeCannon[] = _(
+ "Verschießt spitze Stacheln\n"
+ "und trifft 2 - 5-mal.");
+
+static const u8 MoveDescription_Constrict[] = _(
+ "Schmerzvoller Klammergriff.\n"
+ "Senkt evtl. INIT.-Wert.");
+
+static const u8 MoveDescription_Amnesia[] = _(
+ "Gedächtnisverlust, der\n"
+ "SPEZ. VERT. deutlich erhöht.");
+
+static const u8 MoveDescription_Kinesis[] = _(
+ "Lenkt Gegner ab und senkt\n"
+ "evtl. seine Genauigkeit.");
+
+static const u8 MoveDescription_SoftBoiled[] = _(
+ "Max. KP des Anwenders w.\n"
+ "bis zur Hälfte aufgefüllt.");
+
+static const u8 MoveDescription_HiJumpKick[] = _(
+ "Sprung-Tritt mit Knie. Miss-\n"
+ "erfolg verletzt Anwender.");
+
+static const u8 MoveDescription_Glare[] = _(
+ "Schüchtert Gegner ein, so\n"
+ "dass er paralysiert ist.");
+
+static const u8 MoveDescription_DreamEater[] = _(
+ "Schlafendem Gegner wird\n"
+ "halber Schaden abgezogen.");
+
+static const u8 MoveDescription_PoisonGas[] = _(
+ "Hüllt Gegner in giftiges Gas\n"
+ "ein, kann vergiften.");
+
+static const u8 MoveDescription_Barrage[] = _(
+ "Wirft 2 - 5-mal runde Gegen-\n"
+ "stände auf den Gegner.");
+
+static const u8 MoveDescription_LeechLife[] = _(
+ "Ein Angriff, der die Hälfte\n"
+ "des Schadens saugt.");
+
+static const u8 MoveDescription_LovelyKiss[] = _(
+ "Fordert Kuss mit bösem\n"
+ "Blick. Evtl. Schlaf.");
+
+static const u8 MoveDescription_SkyAttack[] = _(
+ "Sucht nach Schwächen,\n"
+ "Treffer nächste Runde.");
+
+static const u8 MoveDescription_Transform[] = _(
+ "Ändert die Anwenderzellen\n"
+ "für ein Ebenbild d. Gegners.");
+
+static const u8 MoveDescription_Bubble[] = _(
+ "Angriff mit Blasen. INIT.-\n"
+ "Wert wird evtl. gesenkt.");
+
+static const u8 MoveDescription_DizzyPunch[] = _(
+ "Rhythmischer Schlag, der\n"
+ "den Gegner verwirren kann.");
+
+static const u8 MoveDescription_Spore[] = _(
+ "Erzeugt eine Wolke aus ein-\n"
+ "schläfernden Sporen.");
+
+static const u8 MoveDescription_Flash[] = _(
+ "Erzeugt helles Licht, das\n"
+ "gegn. Genauigkeit senkt.");
+
+static const u8 MoveDescription_Psywave[] = _(
+ "Psycho-Welle mit unter-\n"
+ "schiedlicher Intensität.");
+
+static const u8 MoveDescription_Splash[] = _(
+ "Nur ein Platscher..., der\n"
+ "überhaupt nichts bewirkt.");
+
+static const u8 MoveDescription_AcidArmor[] = _(
+ "Verflüssigt Körper d. An-\n"
+ "wenders. Erhört VERT.");
+
+static const u8 MoveDescription_Crabhammer[] = _(
+ "Schlägt mit Schere zu.\n"
+ "Volltrefferchance hoch.");
+
+static const u8 MoveDescription_Explosion[] = _(
+ "Richtet großen Schaden an.\n"
+ "Anwender wird besiegt.");
+
+static const u8 MoveDescription_FurySwipes[] = _(
+ "Beharkt Gegner 2 - 5-mal\n"
+ "mit scharfen Klauen o. ä.");
+
+static const u8 MoveDescription_Bonemerang[] = _(
+ "Ein Bumerang aus Knochen,\n"
+ "der zweimal trifft.");
+
+static const u8 MoveDescription_Rest[] = _(
+ "Anwender schläft 2 Runden,\n"
+ "KP und Status erneuert.");
+
+static const u8 MoveDescription_RockSlide[] = _(
+ "Schleudert riesige Felsen.\n"
+ "Verschreckt evtl. Gegner.");
+
+static const u8 MoveDescription_HyperFang[] = _(
+ "Angriff mit Zähnen.\n"
+ "Verschreckt evtl. Gegner.");
+
+static const u8 MoveDescription_Sharpen[] = _(
+ "Reduziert Polygonzahl und\n"
+ "erhöht ANGR.-Wert.");
+
+static const u8 MoveDescription_Conversion[] = _(
+ "Wandelt Typ d. Anwenders in\n"
+ "eigenen Attacken-Typ.");
+
+static const u8 MoveDescription_TriAttack[] = _(
+ "Feuert 3 Arten von Strahlen\n"
+ "gleichzeitig ab.");
+
+static const u8 MoveDescription_SuperFang[] = _(
+ "Greift mit scharfen Zähnen\n"
+ "an. Halbiert gegnerische KP.");
+
+static const u8 MoveDescription_Slash[] = _(
+ "Hieb mit Klauen o. ä. Hohe\n"
+ "Volltrefferquote.");
+
+static const u8 MoveDescription_Substitute[] = _(
+ "Lockvogel, der 1/4 der max.\n"
+ "KP des Anwenders besitzt.");
+
+static const u8 MoveDescription_Struggle[] = _(
+ "Einsatz nur bei verbrauch-\n"
+ "ten AP. Selbstschädigung!");
+
+static const u8 MoveDescription_Sketch[] = _(
+ "Kopiert stets den zuletzt\n"
+ "erlittenen Angriff.");
+
+static const u8 MoveDescription_TripleKick[] = _(
+ "Tritt Gegner 3-mal nach-\n"
+ "einander. Härte nimmt zu.");
+
+static const u8 MoveDescription_Thief[] = _(
+ "Kann das vom Gegner\n"
+ "gehaltene Item stehlen.");
+
+static const u8 MoveDescription_SpiderWeb[] = _(
+ "Wickelt Gegner ein. Flucht \n"
+ "oder Tausch unmöglich.");
+
+static const u8 MoveDescription_MindReader[] = _(
+ "Ahnt gegnerische Aktion.\n"
+ "Nächste Attacke trifft.");
+
+static const u8 MoveDescription_Nightmare[] = _(
+ "Bewirkt 1/4 Schaden pro\n"
+ "Zug bei schlafendem Gegner.");
+
+static const u8 MoveDescription_FlameWheel[] = _(
+ "Feuer-Attacke, die Gegner\n"
+ "evtl. verbrennt.");
+
+static const u8 MoveDescription_Snore[] = _(
+ "Laute Attacke. Kann nur im\n"
+ "Schlaf benutzt werden.");
+
+static const u8 MoveDescription_Curse[] = _(
+ "Ein Angriff, der bei GEIST-\n"
+ "PKMN anders funktioniert.");
+
+static const u8 MoveDescription_Flail[] = _(
+ "Richtet mehr Schaden an,\n"
+ "wenn eigene KP niedrig sind.");
+
+static const u8 MoveDescription_Conversion2[] = _(
+ "Anwender wird resistent\n"
+ "gegen letzten Angr.-Typ.");
+
+static const u8 MoveDescription_Aeroblast[] = _(
+ "Erzeugt ein Vakuum.\n"
+ "Hohe Volltrefferquote.");
+
+static const u8 MoveDescription_CottonSpore[] = _(
+ "Sporen heften sich an den\n"
+ "Gegner. Senkt INIT.-Wert.");
+
+static const u8 MoveDescription_Reversal[] = _(
+ "Richtet mehr Schaden an,\n"
+ "wenn eigene KP niedrig sind.");
+
+static const u8 MoveDescription_Spite[] = _(
+ "AP des letzten gegner.\n"
+ "Angriffs werden gesenkt.");
+
+static const u8 MoveDescription_PowderSnow[] = _(
+ "Schnee auf Gegner, der\n"
+ "evtl. eingefroren wird.");
+
+static const u8 MoveDescription_Protect[] = _(
+ "Weicht Angriff aus.\n"
+ "Scheitert evtl. bei Wdh.");
+
+static const u8 MoveDescription_MachPunch[] = _(
+ "Schneller Hieb, der stets\n"
+ "zuerst trifft.");
+
+static const u8 MoveDescription_ScaryFace[] = _(
+ "Erschreckt mit Grimasse. \n"
+ "INIT.-Wert sinkt deutlich.");
+
+static const u8 MoveDescription_FaintAttack[] = _(
+ "Zieht Gegner heran und\n"
+ "trifft mit Sicherheit.");
+
+static const u8 MoveDescription_SweetKiss[] = _(
+ "Fordert Kuss mit süßem\n"
+ "Blick. Verwirrt Gegner evtl.");
+
+static const u8 MoveDescription_BellyDrum[] = _(
+ "Erhöht ANGR.-Wert,\n"
+ "opfert jedoch KP.");
+
+static const u8 MoveDescription_SludgeBomb[] = _(
+ "Wirft Schlamm auf Gegner\n"
+ "und vergiftet ihn evtl.");
+
+static const u8 MoveDescription_MudSlap[] = _(
+ "Wirft Gegner Matsch ins Ge-\n"
+ "sicht. Genauigkeit sinkt.");
+
+static const u8 MoveDescription_Octazooka[] = _(
+ "Verschießt Tinte und senkt\n"
+ "dadurch Genauigkeit.");
+
+static const u8 MoveDescription_Spikes[] = _(
+ "Richtet bei Tausch Schaden\n"
+ "mit Stacheln an.");
+
+static const u8 MoveDescription_ZapCannon[] = _(
+ "Kräftige, ungenaue At-\n"
+ "tacke, die evtl. paralysiert.");
+
+static const u8 MoveDescription_Foresight[] = _(
+ "Verhindert Anstieg von\n"
+ "gegnerischem Fluchtwert.");
+
+static const u8 MoveDescription_DestinyBond[] = _(
+ "Wird der Angreifer besiegt,\n"
+ "gilt das auch für d. Gegner.");
+
+static const u8 MoveDescription_PerishSong[] = _(
+ "Wer dieses Lied hört, wird\n"
+ "nach 3 Runden besiegt.");
+
+static const u8 MoveDescription_IcyWind[] = _(
+ "Eis-Attacke, die den INIT.-\n"
+ "Wert des Gegners senkt.");
+
+static const u8 MoveDescription_Detect[] = _(
+ "Wendet Attacken ab, Erfolg\n"
+ "sinkt bei Wiederholung.");
+
+static const u8 MoveDescription_BoneRush[] = _(
+ "Greift Gegner 2 - 5-mal in\n"
+ "Folge mit einem Knochen an.");
+
+static const u8 MoveDescription_LockOn[] = _(
+ "Visiert Gegner an u. trifft\n"
+ "in der nächsten Runde.");
+
+static const u8 MoveDescription_Outrage[] = _(
+ "Wiederholt Angriff 2-3 Run-\n"
+ "den lang. Verwirrt Anwender.");
+
+static const u8 MoveDescription_Sandstorm[] = _(
+ "Erzeugt einen Sandsturm,\n"
+ "der mehrere Runden wütet.");
+
+static const u8 MoveDescription_GigaDrain[] = _(
+ "Absorbiert die Hälfte des\n"
+ "angerichteten Schadens.");
+
+static const u8 MoveDescription_Endure[] = _(
+ "Hält jeder Attacke 1 Runde\n"
+ "stand. 1 KP bleibt stets.");
+
+static const u8 MoveDescription_Charm[] = _(
+ "Betört den Gegner u. redu-\n"
+ "ziert seinen ANGR. deutlich.");
+
+static const u8 MoveDescription_Rollout[] = _(
+ "Attacke, die 5 Runden\n"
+ "dauert. Die Härte nimmt zu.");
+
+static const u8 MoveDescription_FalseSwipe[] = _(
+ "Ein Angriff, der dem Gegner\n"
+ "zumindest 1 KP lässt.");
+
+static const u8 MoveDescription_Swagger[] = _(
+ "Verwirrt den Gegner und\n"
+ "erhöht ANGR.-Wert deutlich.");
+
+static const u8 MoveDescription_MilkDrink[] = _(
+ "Füllt bis zur Hälfte der max.\n"
+ "KP des Benutzers auf.");
+
+static const u8 MoveDescription_Spark[] = _(
+ "Elektro-Hieb, der Gegner\n"
+ "paralysieren kann.");
+
+static const u8 MoveDescription_FuryCutter[] = _(
+ "Eine Attacke, deren Härte\n"
+ "bei jedem Treffer zunimmt.");
+
+static const u8 MoveDescription_SteelWing[] = _(
+ "Trifft den Gegner hart mit\n"
+ "ausgebreiteten Flügeln.");
+
+static const u8 MoveDescription_MeanLook[] = _(
+ "Böser Blick, der die Flucht\n"
+ "des Gegners vereitelt.");
+
+static const u8 MoveDescription_Attract[] = _(
+ "Angriff des anderen Ge-\n"
+ "schlechts unwahrscheinl.");
+
+static const u8 MoveDescription_SleepTalk[] = _(
+ "Benutzt per Zufall eine\n"
+ "Attacke im Schlaf.");
+
+static const u8 MoveDescription_HealBell[] = _(
+ "Läutet beruhigend, heilt\n"
+ "alle Status-Veränderungen.");
+
+static const u8 MoveDescription_Return[] = _(
+ "Angriff, dessen Kraft bei \n"
+ "Freundschaft größer wird.");
+
+static const u8 MoveDescription_Present[] = _(
+ "Eine Bombe als Geschenk. Es\n"
+ "kann KP wiederherstellen.");
+
+static const u8 MoveDescription_Frustration[] = _(
+ "Die Attacke ist stärker bei\n"
+ "verhassten TRAINERn.");
+
+static const u8 MoveDescription_Safeguard[] = _(
+ "Mystische Kraft, die alle\n"
+ "Statusprobleme verhindert.");
+
+static const u8 MoveDescription_PainSplit[] = _(
+ "Addiert KP v. Anwender u.\n"
+ "Gegner, teilt gerecht auf.");
+
+static const u8 MoveDescription_SacredFire[] = _(
+ "Mystische Feuer-Attacke, \n"
+ "die d. Geg. evtl. verbrennt.");
+
+static const u8 MoveDescription_Magnitude[] = _(
+ "Ein erdbebenartiger An-\n"
+ "griff von zufälliger Stärke.");
+
+static const u8 MoveDescription_DynamicPunch[] = _(
+ "Kräftige Attacke, die ver-\n"
+ "wirrt, aber ungenau ist.");
+
+static const u8 MoveDescription_Megahorn[] = _(
+ "Brutaler Frontalangriff\n"
+ "mit spitzen Hörnern.");
+
+static const u8 MoveDescription_DragonBreath[] = _(
+ "Fegt den Gegner mit zer-\n"
+ "störerisch heißem Atem weg.");
+
+static const u8 MoveDescription_BatonPass[] = _(
+ "Tauscht PKMN aus. Alle Än-\n"
+ "derungen bleiben bestehen.");
+
+static const u8 MoveDescription_Encore[] = _(
+ "Gegner wiederholt letzten\n"
+ "Angriff 2 - 6-mal.");
+
+static const u8 MoveDescription_Pursuit[] = _(
+ "Richtet großen Schaden bei\n"
+ "Austausch des Gegners an.");
+
+static const u8 MoveDescription_RapidSpin[] = _(
+ "Trifft den Gegner durch\n"
+ "Drehen mit max. Tempo.");
+
+static const u8 MoveDescription_SweetScent[] = _(
+ "Lockt Gegner an und senkt\n"
+ "seinen Fluchtwert.");
+
+static const u8 MoveDescription_IronTail[] = _(
+ "Att. mit hartem Schweif. \n"
+ "Senkt evtl. VERT.-Wert.");
+
+static const u8 MoveDescription_MetalClaw[] = _(
+ "Klauen-Attacke. Evtl. Er-\n"
+ "höhung d. ANGR.-Wert d. Anw.");
+
+static const u8 MoveDescription_VitalThrow[] = _(
+ "Attacke stets gleich, aber\n"
+ "mit Treffergarantie.");
+
+static const u8 MoveDescription_MorningSun[] = _(
+ "Füllt KP auf. Die Menge\n"
+ "hängt vom Wetter ab.");
+
+static const u8 MoveDescription_Synthesis[] = _(
+ "Füllt KP auf. Die Menge\n"
+ "hängt vom Wetter ab.");
+
+static const u8 MoveDescription_Moonlight[] = _(
+ "Füllt KP auf. Die Menge\n"
+ "hängt vom Wetter ab.");
+
+static const u8 MoveDescription_HiddenPower[] = _(
+ "Die Wirkung dieser Attacke\n"
+ "hängt vom Benutzer ab.");
+
+static const u8 MoveDescription_CrossChop[] = _(
+ "Doppelter Hieb. Hohe \n"
+ "Volltrefferquote.");
+
+static const u8 MoveDescription_Twister[] = _(
+ "Trifft Gegner mit\n"
+ "heftigem Wirbelsturm.");
+
+static const u8 MoveDescription_RainDance[] = _(
+ "Erhöht Stärke von WASSER-\n"
+ "Attacken 5 Runden lang.");
+
+static const u8 MoveDescription_SunnyDay[] = _(
+ "Erhöht Stärke von FEUER-\n"
+ "Attacken 5 Runden lang.");
+
+static const u8 MoveDescription_Crunch[] = _(
+ "Beißt mit Reißzähnen zu und\n"
+ "senkt evtl. SPEZ. VERT.");
+
+static const u8 MoveDescription_MirrorCoat[] = _(
+ "Kontert d. Spezial-Attacke\n"
+ "d. Geg. mit 2-facher Kraft.");
+
+static const u8 MoveDescription_PsychUp[] = _(
+ "Kopiert Effekte d. Gegners\n"
+ "u. gibt sie dem Angreifer.");
+
+static const u8 MoveDescription_ExtremeSpeed[] = _(
+ "Extrem schnelle und kraft-\n"
+ "volle Attacke.");
+
+static const u8 MoveDescription_AncientPower[] = _(
+ "Ein Angriff, der alle\n"
+ "Status-Werte erhöhen kann.");
+
+static const u8 MoveDescription_ShadowBall[] = _(
+ "Bewirft Gegner und senkt\n"
+ "evtl. SPEZ. VERT.");
+
+static const u8 MoveDescription_FutureSight[] = _(
+ "Stärkt innere Kraft. Trifft\n"
+ "2 Runden später.");
+
+static const u8 MoveDescription_RockSmash[] = _(
+ "Zertrümmernder Angriff, \n"
+ "der evtl. VERT.-Wert senkt.");
+
+static const u8 MoveDescription_Whirlpool[] = _(
+ "Hält Gegner 2-5 Züge in\n"
+ "einem Strudel gefangen.");
+
+static const u8 MoveDescription_BeatUp[] = _(
+ "Ruft POKéMON hinzu, um an\n"
+ "dem Angriff teilzuhaben.");
+
+static const u8 MoveDescription_FakeOut[] = _(
+ "Trifft schon mit dem ersten\n"
+ "Schlag. Verjagt Gegner evtl.");
+
+static const u8 MoveDescription_Uproar[] = _(
+ "Erzeugt für 2-5 Züge einen\n"
+ "Aufruhr. Verhindert Schlaf.");
+
+static const u8 MoveDescription_Stockpile[] = _(
+ "Lädt Kraft für bis zu 3\n"
+ "Runden auf.");
+
+static const u8 MoveDescription_SpitUp[] = _(
+ "Entlädt gehortete Kraft.\n"
+ "Je mehr, desto besser.");
+
+static const u8 MoveDescription_Swallow[] = _(
+ "Absorbiert gehortete\n"
+ "Kraft. Stellt KP wieder her.");
+
+static const u8 MoveDescription_HeatWave[] = _(
+ "Gegner wird von heißem Atem\n"
+ "getroffen. Verbrennt evtl.");
+
+static const u8 MoveDescription_Hail[] = _(
+ "Erzeugt Hagelsturm, der in\n"
+ "jeder Runde trifft.");
+
+static const u8 MoveDescription_Torment[] = _(
+ "Quält Gegner u. verhindert\n"
+ "Wdh. eines Angriffs.");
+
+static const u8 MoveDescription_Flatter[] = _(
+ "Verwirrt den Gegner, erhöht\n"
+ "aber dessen SPEZ. ANGR.");
+
+static const u8 MoveDescription_WillOWisp[] = _(
+ "Fügt dem Gegner \n"
+ "Verbrennungen zu.");
+
+static const u8 MoveDescription_Memento[] = _(
+ "Der Benutzer ist besiegt\n"
+ "und senkt die gegn. Werte.");
+
+static const u8 MoveDescription_Facade[] = _(
+ "Erhöht ANGR. nach Verbren-\n"
+ "nung, Paralyse o. Vergift.");
+
+static const u8 MoveDescription_FocusPunch[] = _(
+ "Angriff, der später trifft.\n"
+ "Ben. schreckt evtl. zurück.");
+
+static const u8 MoveDescription_SmellingSalt[] = _(
+ "Effektiv geg. paralysierte\n"
+ "Gegner. Heilt sie aber auch.");
+
+static const u8 MoveDescription_FollowMe[] = _(
+ "Zieht Aufmerksamkeit an.\n"
+ "Gegner greift nur Anw. an.");
+
+static const u8 MoveDescription_NaturePower[] = _(
+ "Die Elementklasse des\n"
+ "Angriffs hängt vom Ort ab.");
+
+static const u8 MoveDescription_Charge[] = _(
+ "Lädt Energie für den kom-\n"
+ "menden Elektro-Angr. auf.");
+
+static const u8 MoveDescription_Taunt[] = _(
+ "Legt den Gegner rein. Er\n"
+ "benutzt nur noch Angriffe.");
+
+static const u8 MoveDescription_HelpingHand[] = _(
+ "Steigert die Kraft der An-\n"
+ "griffe des Getroffenen.");
+
+static const u8 MoveDescription_Trick[] = _(
+ "Betrügt beim Handel\n"
+ "mit Gegenständen.");
+
+static const u8 MoveDescription_RolePlay[] = _(
+ "Parodiert Gegner u. kopiert\n"
+ "seine Spezialfähigkeiten.");
+
+static const u8 MoveDescription_Wish[] = _(
+ "Ein Wunsch, der KP auffüllt.\n"
+ "Die Erfüllung braucht Zeit.");
+
+static const u8 MoveDescription_Assist[] = _(
+ "Greift zufällig mit einem\n"
+ "Angriff d. Partners an.");
+
+static const u8 MoveDescription_Ingrain[] = _(
+ "Verwurzelung füllt KP auf.\n"
+ "Austausch unmöglich.");
+
+static const u8 MoveDescription_Superpower[] = _(
+ "Steigert Stärke deutlich,\n"
+ "senkt aber Status-Werte.");
+
+static const u8 MoveDescription_MagicCoat[] = _(
+ "Gibt Spezialeffekte zurück\n"
+ "an Benutzer.");
+
+static const u8 MoveDescription_Recycle[] = _(
+ "Recycling eines\n"
+ "verwendeten Items.");
+
+static const u8 MoveDescription_Revenge[] = _(
+ "Attacke wird stärker, wenn\n"
+ "Anwender Schaden nimmt.");
+
+static const u8 MoveDescription_BrickBreak[] = _(
+ "Durchbricht Barrieren und\n"
+ "verursacht Schaden.");
+
+static const u8 MoveDescription_Yawn[] = _(
+ "Gegner gähnt und schläft\n"
+ "in der nächsten Runde ein.");
+
+static const u8 MoveDescription_KnockOff[] = _(
+ "Schlägt Gegner Item weg.\n"
+ "Vereitelt so den Gebrauch.");
+
+static const u8 MoveDescription_Endeavor[] = _(
+ "Wird stärker, wenn Anw.-KP\n"
+ "geringer als Gegner-KP ist.");
+
+static const u8 MoveDescription_Eruption[] = _(
+ "Je höher KP des Benutzers,\n"
+ "desto mehr Schaden.");
+
+static const u8 MoveDescription_SkillSwap[] = _(
+ "Anw. tauscht Spezial-\n"
+ "fähigkeit mit POKéMON.");
+
+static const u8 MoveDescription_Imprison[] = _(
+ "Hindert Gegner an Atta-\n"
+ "cken, die d. Benutzer kennt.");
+
+static const u8 MoveDescription_Refresh[] = _(
+ "Kuriert Vergiftungen, Para-\n"
+ "lyse und Verbrennung.");
+
+static const u8 MoveDescription_Grudge[] = _(
+ "Wenn Anw. bes., werden AP\n"
+ "der Finalattacke gelöscht.");
+
+static const u8 MoveDescription_Snatch[] = _(
+ "Immunität geg. den Effekt\n"
+ "d. nächsten gegn. Angriffs.");
+
+static const u8 MoveDescription_SecretPower[] = _(
+ "Angriff, dessen Auswirkung\n"
+ "abhängig vom Ort ist.");
+
+static const u8 MoveDescription_Dive[] = _(
+ "Taucht in der 1. Runde\n"
+ "unter u. trifft in der 2.");
+
+static const u8 MoveDescription_ArmThrust[] = _(
+ "Schläge mit geradem Arm, die\n"
+ "Gegner 2 - 5-mal treffen.");
+
+static const u8 MoveDescription_Camouflage[] = _(
+ "Die Elementklasse des\n"
+ "POKéMON hängt vom Ort ab.");
+
+static const u8 MoveDescription_TailGlow[] = _(
+ "Ein blinkendes Licht. SPEZ.\n"
+ "ANGR. wird deutlich erhöht.");
+
+static const u8 MoveDescription_LusterPurge[] = _(
+ "Angriff mit grellem Licht.\n"
+ "Senkt evtl. SPEZ. VERT.");
+
+static const u8 MoveDescription_MistBall[] = _(
+ "Angriff m. Daunengestöber,\n"
+ "Senkt evtl. SPEZ. ANGR.");
+
+static const u8 MoveDescription_FeatherDance[] = _(
+ "Hüllt Gegner in Daunen und\n"
+ "senkt ANGR.-Wert deutlich.");
+
+static const u8 MoveDescription_TeeterDance[] = _(
+ "Verwirrt alle POKéMON im \n"
+ "Kampf.");
+
+static const u8 MoveDescription_BlazeKick[] = _(
+ "Hohe Volltrefferquote. Ver-\n"
+ "ursacht evtl. Verbrennung.");
+
+static const u8 MoveDescription_MudSport[] = _(
+ "Bedeckt Anw. mit Lehm u. er-\n"
+ "höht Schutz geg. Elek.-Att.");
+
+static const u8 MoveDescription_IceBall[] = _(
+ "Angriff für 5 Runden. \n"
+ "Stärker, wenn Treffer.");
+
+static const u8 MoveDescription_NeedleArm[] = _(
+ "Angriff mit dornigen Armen. \n"
+ "Geg. schreckt evtl. zurück.");
+
+static const u8 MoveDescription_SlackOff[] = _(
+ "Durch Müßiggang wird die\n"
+ "Hälfte d. max. KP aufgefüllt.");
+
+static const u8 MoveDescription_HyperVoice[] = _(
+ "Laute Attacke mit Schall-\n"
+ "wellen.");
+
+static const u8 MoveDescription_PoisonFang[] = _(
+ "Angriff mit Reißzähnen. \n"
+ "Gegner wird evtl. vergiftet.");
+
+static const u8 MoveDescription_CrushClaw[] = _(
+ "Angriff mit scharfen Klau-\n"
+ "en. Senkt evtl. VERT.-Wert.");
+
+static const u8 MoveDescription_BlastBurn[] = _(
+ "Starker Angriff. Angreifer\n"
+ "muss eine Runde aussetzen.");
+
+static const u8 MoveDescription_HydroCannon[] = _(
+ "Starker Angriff. Angreifer\n"
+ "muss eine Runde aussetzen.");
+
+static const u8 MoveDescription_MeteorMash[] = _(
+ "Ein Schlag wie ein Meteor.\n"
+ "Erhöht evtl. ANGR.-Wert.");
+
+static const u8 MoveDescription_Astonish[] = _(
+ "Angriff, der Gegner evtl.\n"
+ "zurückschrecken lässt.");
+
+static const u8 MoveDescription_WeatherBall[] = _(
+ "Elementkl. u. Stärke der At-\n"
+ "tacke sind wetterabhängig.");
+
+static const u8 MoveDescription_Aromatherapy[] = _(
+ "Heilt alle Status-Probleme\n"
+ "mit beruhigendem Duft.");
+
+static const u8 MoveDescription_FakeTears[] = _(
+ "Täuscht Weinen vor, um\n"
+ "gegn. SPEZ. VERT. zu senken.");
+
+static const u8 MoveDescription_AirCutter[] = _(
+ "Greift mit heftigem Wind an.\n"
+ "Hohe Volltrefferquote.");
+
+static const u8 MoveDescription_Overheat[] = _(
+ "Angriff mit voller Kraft.\n"
+ "SPEZ. ANGR. sinkt deutlich.");
+
+static const u8 MoveDescription_OdorSleuth[] = _(
+ "Hindert Gegner daran, ihren\n"
+ "Fluchtwert zu erhöhen.");
+
+static const u8 MoveDescription_RockTomb[] = _(
+ "Hält den Feind mit Steinen\n"
+ "auf u. senkt INIT.-Wert.");
+
+static const u8 MoveDescription_SilverWind[] = _(
+ "Pulver-Attacke, die evtl.\n"
+ "die Werte erhöht.");
+
+static const u8 MoveDescription_MetalSound[] = _(
+ "Stößt einen spitzen Schrei\n"
+ "aus. Senkt SPEZ. VERT.");
+
+static const u8 MoveDescription_GrassWhistle[] = _(
+ "Versetzt Gegner mit schö-\n"
+ "ner Melodie in den Schlaf.");
+
+static const u8 MoveDescription_Tickle[] = _(
+ "Bringt Gegner zum Lachen.\n"
+ "ANGR. u. VERT. sinken.");
+
+static const u8 MoveDescription_CosmicPower[] = _(
+ "Erhöht VERT. u. SPEZ. VERT.\n"
+ "durch mystische Kraft.");
+
+static const u8 MoveDescription_WaterSpout[] = _(
+ "Ist wirkungsvoller, wenn KP\n"
+ "des Benutzers hoch sind.");
+
+static const u8 MoveDescription_SignalBeam[] = _(
+ "Seltsame Strahlenattacke.\n"
+ "Verwirrt evtl. den Gegner.");
+
+static const u8 MoveDescription_ShadowPunch[] = _(
+ "Schattenhieb. Ausweichen\n"
+ "unmöglich.");
+
+static const u8 MoveDescription_Extrasensory[] = _(
+ "Besonderer Angriff. Gegner\n"
+ "schreckt evtl. zurück.");
+
+static const u8 MoveDescription_SkyUppercut[] = _(
+ "Kinnhaken, als würde man in\n"
+ "die Luft springen.");
+
+static const u8 MoveDescription_SandTomb[] = _(
+ "Gegner leidet für 2-5\n"
+ "Runden in Sandhose.");
+
+static const u8 MoveDescription_SheerCold[] = _(
+ "Eis-Attacke. Besiegt den\n"
+ "Gegner, wenn sie trifft.");
+
+static const u8 MoveDescription_MuddyWater[] = _(
+ "Greift mit Matsch an und\n"
+ "senkt evtl. Genauigkeit.");
+
+static const u8 MoveDescription_BulletSeed[] = _(
+ "Verschießt 2 bis 5 Samen\n"
+ "gleichzeitig auf Gegner.");
+
+static const u8 MoveDescription_AerialAce[] = _(
+ "Eine extrem schnelle und\n"
+ "unausweichbare Attacke.");
+
+static const u8 MoveDescription_IcicleSpear[] = _(
+ "Feuert 2-5 Eiszapfen auf\n"
+ "den Gegner.");
+
+static const u8 MoveDescription_IronDefense[] = _(
+ "Stärkt den Körper.\n"
+ "Erhöht VERT.-Wert deutlich.");
+
+static const u8 MoveDescription_Block[] = _(
+ "Versperrt den Fluchtweg\n"
+ "des Gegners.");
+
+static const u8 MoveDescription_Howl[] = _(
+ "Jault, um in sich zu gehen.\n"
+ "Erhöht ANGR.-Wert.");
+
+static const u8 MoveDescription_DragonClaw[] = _(
+ "Der Gegner wird mit\n"
+ "scharfen Klauen verletzt.");
+
+static const u8 MoveDescription_FrenzyPlant[] = _(
+ "Starker Angriff. Angreifer\n"
+ "muss eine Runde aussetzen.");
+
+static const u8 MoveDescription_BulkUp[] = _(
+ "Pumpt den Körper auf. ANGR.\n"
+ "u. VERT. werden erhöht.");
+
+static const u8 MoveDescription_Bounce[] = _(
+ "Springt hoch u. landet in\n"
+ "nächstem Zug. Evtl. Para.");
+
+static const u8 MoveDescription_MudShot[] = _(
+ "Bewirft den Gegner mit Lehm\n"
+ "und senkt INIT.-Wert.");
+
+static const u8 MoveDescription_PoisonTail[] = _(
+ "Hohe Volltrefferquote.\n"
+ "Gegner evtl. vergiftet.");
+
+static const u8 MoveDescription_Covet[] = _(
+ "Bittet charmant um das ge-\n"
+ "haltene Item des Gegners.");
+
+static const u8 MoveDescription_VoltTackle[] = _(
+ "Lebensgefährliche Attacke,\n"
+ "leichte Selbstschädigung.");
+
+static const u8 MoveDescription_MagicalLeaf[] = _(
+ "Magischer Blattangriff.\n"
+ "Ausweichen unmöglich.");
+
+static const u8 MoveDescription_WaterSport[] = _(
+ "Benutzer wird nass, so dass\n"
+ "er Feuer besser standhält.");
+
+static const u8 MoveDescription_CalmMind[] = _(
+ "Erhöht SPEZ. ANGR. u. SPEZ.\n"
+ "VERT. durch Konzentration.");
+
+static const u8 MoveDescription_LeafBlade[] = _(
+ "Hieb mit scharfkantigem\n"
+ "Blatt. Hohe Volltrefferqu.");
+
+static const u8 MoveDescription_DragonDance[] = _(
+ "Ein mystischer Tanz, der\n"
+ "ANGR.- u. INIT.-Wert erhöht.");
+
+static const u8 MoveDescription_RockBlast[] = _(
+ "Wirft 2 - 5-mal in Folge\n"
+ "Felsblöcke auf den Gegner.");
+
+static const u8 MoveDescription_ShockWave[] = _(
+ "Schnelle Elektro-Attacke\n"
+ "mit Treffergarantie.");
+
+static const u8 MoveDescription_WaterPulse[] = _(
+ "Ultraschallwellen, die den\n"
+ "Gegner verwirren können.");
+
+static const u8 MoveDescription_DoomDesire[] = _(
+ "Speichert Sonnenenergie.\n"
+ "Angriff 2 Runden später.");
+
+static const u8 MoveDescription_PsychoBoost[] = _(
+ "Angriff mit voller Kraft.\n"
+ "SPEZ. ANGR. sinkt deutlich.");
+
+const u8 * const gMoveDescriptions[] = {
+ MoveDescription_Pound,
+ MoveDescription_KarateChop,
+ MoveDescription_DoubleSlap,
+ MoveDescription_CometPunch,
+ MoveDescription_MegaPunch,
+ MoveDescription_PayDay,
+ MoveDescription_FirePunch,
+ MoveDescription_IcePunch,
+ MoveDescription_ThunderPunch,
+ MoveDescription_Scratch,
+ MoveDescription_ViceGrip,
+ MoveDescription_Guillotine,
+ MoveDescription_RazorWind,
+ MoveDescription_SwordsDance,
+ MoveDescription_Cut,
+ MoveDescription_Gust,
+ MoveDescription_WingAttack,
+ MoveDescription_Whirlwind,
+ MoveDescription_Fly,
+ MoveDescription_Bind,
+ MoveDescription_Slam,
+ MoveDescription_VineWhip,
+ MoveDescription_Stomp,
+ MoveDescription_DoubleKick,
+ MoveDescription_MegaKick,
+ MoveDescription_JumpKick,
+ MoveDescription_RollingKick,
+ MoveDescription_SandAttack,
+ MoveDescription_Headbutt,
+ MoveDescription_HornAttack,
+ MoveDescription_FuryAttack,
+ MoveDescription_HornDrill,
+ MoveDescription_Tackle,
+ MoveDescription_BodySlam,
+ MoveDescription_Wrap,
+ MoveDescription_TakeDown,
+ MoveDescription_Thrash,
+ MoveDescription_DoubleEdge,
+ MoveDescription_TailWhip,
+ MoveDescription_PoisonSting,
+ MoveDescription_Twineedle,
+ MoveDescription_PinMissile,
+ MoveDescription_Leer,
+ MoveDescription_Bite,
+ MoveDescription_Growl,
+ MoveDescription_Roar,
+ MoveDescription_Sing,
+ MoveDescription_Supersonic,
+ MoveDescription_SonicBoom,
+ MoveDescription_Disable,
+ MoveDescription_Acid,
+ MoveDescription_Ember,
+ MoveDescription_Flamethrower,
+ MoveDescription_Mist,
+ MoveDescription_WaterGun,
+ MoveDescription_HydroPump,
+ MoveDescription_Surf,
+ MoveDescription_IceBeam,
+ MoveDescription_Blizzard,
+ MoveDescription_Psybeam,
+ MoveDescription_BubbleBeam,
+ MoveDescription_AuroraBeam,
+ MoveDescription_HyperBeam,
+ MoveDescription_Peck,
+ MoveDescription_DrillPeck,
+ MoveDescription_Submission,
+ MoveDescription_LowKick,
+ MoveDescription_Counter,
+ MoveDescription_SeismicToss,
+ MoveDescription_Strength,
+ MoveDescription_Absorb,
+ MoveDescription_MegaDrain,
+ MoveDescription_LeechSeed,
+ MoveDescription_Growth,
+ MoveDescription_RazorLeaf,
+ MoveDescription_SolarBeam,
+ MoveDescription_PoisonPowder,
+ MoveDescription_StunSpore,
+ MoveDescription_SleepPowder,
+ MoveDescription_PetalDance,
+ MoveDescription_StringShot,
+ MoveDescription_DragonRage,
+ MoveDescription_FireSpin,
+ MoveDescription_ThunderShock,
+ MoveDescription_Thunderbolt,
+ MoveDescription_ThunderWave,
+ MoveDescription_Thunder,
+ MoveDescription_RockThrow,
+ MoveDescription_Earthquake,
+ MoveDescription_Fissure,
+ MoveDescription_Dig,
+ MoveDescription_Toxic,
+ MoveDescription_Confusion,
+ MoveDescription_Psychic,
+ MoveDescription_Hypnosis,
+ MoveDescription_Meditate,
+ MoveDescription_Agility,
+ MoveDescription_QuickAttack,
+ MoveDescription_Rage,
+ MoveDescription_Teleport,
+ MoveDescription_NightShade,
+ MoveDescription_Mimic,
+ MoveDescription_Screech,
+ MoveDescription_DoubleTeam,
+ MoveDescription_Recover,
+ MoveDescription_Harden,
+ MoveDescription_Minimize,
+ MoveDescription_Smokescreen,
+ MoveDescription_ConfuseRay,
+ MoveDescription_Withdraw,
+ MoveDescription_DefenseCurl,
+ MoveDescription_Barrier,
+ MoveDescription_LightScreen,
+ MoveDescription_Haze,
+ MoveDescription_Reflect,
+ MoveDescription_FocusEnergy,
+ MoveDescription_Bide,
+ MoveDescription_Metronome,
+ MoveDescription_MirrorMove,
+ MoveDescription_SelfDestruct,
+ MoveDescription_EggBomb,
+ MoveDescription_Lick,
+ MoveDescription_Smog,
+ MoveDescription_Sludge,
+ MoveDescription_BoneClub,
+ MoveDescription_FireBlast,
+ MoveDescription_Waterfall,
+ MoveDescription_Clamp,
+ MoveDescription_Swift,
+ MoveDescription_SkullBash,
+ MoveDescription_SpikeCannon,
+ MoveDescription_Constrict,
+ MoveDescription_Amnesia,
+ MoveDescription_Kinesis,
+ MoveDescription_SoftBoiled,
+ MoveDescription_HiJumpKick,
+ MoveDescription_Glare,
+ MoveDescription_DreamEater,
+ MoveDescription_PoisonGas,
+ MoveDescription_Barrage,
+ MoveDescription_LeechLife,
+ MoveDescription_LovelyKiss,
+ MoveDescription_SkyAttack,
+ MoveDescription_Transform,
+ MoveDescription_Bubble,
+ MoveDescription_DizzyPunch,
+ MoveDescription_Spore,
+ MoveDescription_Flash,
+ MoveDescription_Psywave,
+ MoveDescription_Splash,
+ MoveDescription_AcidArmor,
+ MoveDescription_Crabhammer,
+ MoveDescription_Explosion,
+ MoveDescription_FurySwipes,
+ MoveDescription_Bonemerang,
+ MoveDescription_Rest,
+ MoveDescription_RockSlide,
+ MoveDescription_HyperFang,
+ MoveDescription_Sharpen,
+ MoveDescription_Conversion,
+ MoveDescription_TriAttack,
+ MoveDescription_SuperFang,
+ MoveDescription_Slash,
+ MoveDescription_Substitute,
+ MoveDescription_Struggle,
+ MoveDescription_Sketch,
+ MoveDescription_TripleKick,
+ MoveDescription_Thief,
+ MoveDescription_SpiderWeb,
+ MoveDescription_MindReader,
+ MoveDescription_Nightmare,
+ MoveDescription_FlameWheel,
+ MoveDescription_Snore,
+ MoveDescription_Curse,
+ MoveDescription_Flail,
+ MoveDescription_Conversion2,
+ MoveDescription_Aeroblast,
+ MoveDescription_CottonSpore,
+ MoveDescription_Reversal,
+ MoveDescription_Spite,
+ MoveDescription_PowderSnow,
+ MoveDescription_Protect,
+ MoveDescription_MachPunch,
+ MoveDescription_ScaryFace,
+ MoveDescription_FaintAttack,
+ MoveDescription_SweetKiss,
+ MoveDescription_BellyDrum,
+ MoveDescription_SludgeBomb,
+ MoveDescription_MudSlap,
+ MoveDescription_Octazooka,
+ MoveDescription_Spikes,
+ MoveDescription_ZapCannon,
+ MoveDescription_Foresight,
+ MoveDescription_DestinyBond,
+ MoveDescription_PerishSong,
+ MoveDescription_IcyWind,
+ MoveDescription_Detect,
+ MoveDescription_BoneRush,
+ MoveDescription_LockOn,
+ MoveDescription_Outrage,
+ MoveDescription_Sandstorm,
+ MoveDescription_GigaDrain,
+ MoveDescription_Endure,
+ MoveDescription_Charm,
+ MoveDescription_Rollout,
+ MoveDescription_FalseSwipe,
+ MoveDescription_Swagger,
+ MoveDescription_MilkDrink,
+ MoveDescription_Spark,
+ MoveDescription_FuryCutter,
+ MoveDescription_SteelWing,
+ MoveDescription_MeanLook,
+ MoveDescription_Attract,
+ MoveDescription_SleepTalk,
+ MoveDescription_HealBell,
+ MoveDescription_Return,
+ MoveDescription_Present,
+ MoveDescription_Frustration,
+ MoveDescription_Safeguard,
+ MoveDescription_PainSplit,
+ MoveDescription_SacredFire,
+ MoveDescription_Magnitude,
+ MoveDescription_DynamicPunch,
+ MoveDescription_Megahorn,
+ MoveDescription_DragonBreath,
+ MoveDescription_BatonPass,
+ MoveDescription_Encore,
+ MoveDescription_Pursuit,
+ MoveDescription_RapidSpin,
+ MoveDescription_SweetScent,
+ MoveDescription_IronTail,
+ MoveDescription_MetalClaw,
+ MoveDescription_VitalThrow,
+ MoveDescription_MorningSun,
+ MoveDescription_Synthesis,
+ MoveDescription_Moonlight,
+ MoveDescription_HiddenPower,
+ MoveDescription_CrossChop,
+ MoveDescription_Twister,
+ MoveDescription_RainDance,
+ MoveDescription_SunnyDay,
+ MoveDescription_Crunch,
+ MoveDescription_MirrorCoat,
+ MoveDescription_PsychUp,
+ MoveDescription_ExtremeSpeed,
+ MoveDescription_AncientPower,
+ MoveDescription_ShadowBall,
+ MoveDescription_FutureSight,
+ MoveDescription_RockSmash,
+ MoveDescription_Whirlpool,
+ MoveDescription_BeatUp,
+ MoveDescription_FakeOut,
+ MoveDescription_Uproar,
+ MoveDescription_Stockpile,
+ MoveDescription_SpitUp,
+ MoveDescription_Swallow,
+ MoveDescription_HeatWave,
+ MoveDescription_Hail,
+ MoveDescription_Torment,
+ MoveDescription_Flatter,
+ MoveDescription_WillOWisp,
+ MoveDescription_Memento,
+ MoveDescription_Facade,
+ MoveDescription_FocusPunch,
+ MoveDescription_SmellingSalt,
+ MoveDescription_FollowMe,
+ MoveDescription_NaturePower,
+ MoveDescription_Charge,
+ MoveDescription_Taunt,
+ MoveDescription_HelpingHand,
+ MoveDescription_Trick,
+ MoveDescription_RolePlay,
+ MoveDescription_Wish,
+ MoveDescription_Assist,
+ MoveDescription_Ingrain,
+ MoveDescription_Superpower,
+ MoveDescription_MagicCoat,
+ MoveDescription_Recycle,
+ MoveDescription_Revenge,
+ MoveDescription_BrickBreak,
+ MoveDescription_Yawn,
+ MoveDescription_KnockOff,
+ MoveDescription_Endeavor,
+ MoveDescription_Eruption,
+ MoveDescription_SkillSwap,
+ MoveDescription_Imprison,
+ MoveDescription_Refresh,
+ MoveDescription_Grudge,
+ MoveDescription_Snatch,
+ MoveDescription_SecretPower,
+ MoveDescription_Dive,
+ MoveDescription_ArmThrust,
+ MoveDescription_Camouflage,
+ MoveDescription_TailGlow,
+ MoveDescription_LusterPurge,
+ MoveDescription_MistBall,
+ MoveDescription_FeatherDance,
+ MoveDescription_TeeterDance,
+ MoveDescription_BlazeKick,
+ MoveDescription_MudSport,
+ MoveDescription_IceBall,
+ MoveDescription_NeedleArm,
+ MoveDescription_SlackOff,
+ MoveDescription_HyperVoice,
+ MoveDescription_PoisonFang,
+ MoveDescription_CrushClaw,
+ MoveDescription_BlastBurn,
+ MoveDescription_HydroCannon,
+ MoveDescription_MeteorMash,
+ MoveDescription_Astonish,
+ MoveDescription_WeatherBall,
+ MoveDescription_Aromatherapy,
+ MoveDescription_FakeTears,
+ MoveDescription_AirCutter,
+ MoveDescription_Overheat,
+ MoveDescription_OdorSleuth,
+ MoveDescription_RockTomb,
+ MoveDescription_SilverWind,
+ MoveDescription_MetalSound,
+ MoveDescription_GrassWhistle,
+ MoveDescription_Tickle,
+ MoveDescription_CosmicPower,
+ MoveDescription_WaterSpout,
+ MoveDescription_SignalBeam,
+ MoveDescription_ShadowPunch,
+ MoveDescription_Extrasensory,
+ MoveDescription_SkyUppercut,
+ MoveDescription_SandTomb,
+ MoveDescription_SheerCold,
+ MoveDescription_MuddyWater,
+ MoveDescription_BulletSeed,
+ MoveDescription_AerialAce,
+ MoveDescription_IcicleSpear,
+ MoveDescription_IronDefense,
+ MoveDescription_Block,
+ MoveDescription_Howl,
+ MoveDescription_DragonClaw,
+ MoveDescription_FrenzyPlant,
+ MoveDescription_BulkUp,
+ MoveDescription_Bounce,
+ MoveDescription_MudShot,
+ MoveDescription_PoisonTail,
+ MoveDescription_Covet,
+ MoveDescription_VoltTackle,
+ MoveDescription_MagicalLeaf,
+ MoveDescription_WaterSport,
+ MoveDescription_CalmMind,
+ MoveDescription_LeafBlade,
+ MoveDescription_DragonDance,
+ MoveDescription_RockBlast,
+ MoveDescription_ShockWave,
+ MoveDescription_WaterPulse,
+ MoveDescription_DoomDesire,
+ MoveDescription_PsychoBoost,
+};
diff --git a/src/data/text/move_descriptions_en.h b/src/data/text/move_descriptions_en.h
new file mode 100644
index 000000000..3c3a961d1
--- /dev/null
+++ b/src/data/text/move_descriptions_en.h
@@ -0,0 +1,1772 @@
+static const u8 MoveDescription_Pound[] = _(
+ "Pounds the foe with\n"
+ "forelegs or tail.");
+
+static const u8 MoveDescription_KarateChop[] = _(
+ "A chopping attack with a\n"
+ "high critical-hit ratio.");
+
+static const u8 MoveDescription_DoubleSlap[] = _(
+ "Repeatedly slaps the foe\n"
+ "2 to 5 times.");
+
+static const u8 MoveDescription_CometPunch[] = _(
+ "Repeatedly punches the foe\n"
+ "2 to 5 times.");
+
+static const u8 MoveDescription_MegaPunch[] = _(
+ "A strong punch thrown with\n"
+ "incredible power.");
+
+static const u8 MoveDescription_PayDay[] = _(
+ "Throws coins at the foe.\n"
+ "Money is recovered after.");
+
+static const u8 MoveDescription_FirePunch[] = _(
+ "A fiery punch that may burn\n"
+ "the foe.");
+
+static const u8 MoveDescription_IcePunch[] = _(
+ "An icy punch that may\n"
+ "freeze the foe.");
+
+static const u8 MoveDescription_ThunderPunch[] = _(
+ "An electrified punch that\n"
+ "may paralyze the foe.");
+
+static const u8 MoveDescription_Scratch[] = _(
+ "Scratches the foe with\n"
+ "sharp claws.");
+
+static const u8 MoveDescription_ViceGrip[] = _(
+ "Grips the foe with large and\n"
+ "powerful pincers.");
+
+static const u8 MoveDescription_Guillotine[] = _(
+ "A powerful pincer attack\n"
+ "that may cause fainting.");
+
+static const u8 MoveDescription_RazorWind[] = _(
+ "A 2-turn move that strikes\n"
+ "the foe on the 2nd turn.");
+
+static const u8 MoveDescription_SwordsDance[] = _(
+ "A fighting dance that\n"
+ "sharply raises ATTACK.");
+
+static const u8 MoveDescription_Cut[] = _(
+ "Cuts the foe with sharp\n"
+ "scythes, claws, etc.");
+
+static const u8 MoveDescription_Gust[] = _(
+ "Strikes the foe with a gust\n"
+ "of wind whipped up by wings.");
+
+static const u8 MoveDescription_WingAttack[] = _(
+ "Strikes the foe with wings\n"
+ "spread wide.");
+
+static const u8 MoveDescription_Whirlwind[] = _(
+ "Blows away the foe with\n"
+ "wind and ends the battle.");
+
+static const u8 MoveDescription_Fly[] = _(
+ "Flies up on the first turn,\n"
+ "then strikes the next turn.");
+
+static const u8 MoveDescription_Bind[] = _(
+ "Binds and squeezes the foe\n"
+ "for 2 to 5 turns.");
+
+static const u8 MoveDescription_Slam[] = _(
+ "Slams the foe with a long\n"
+ "tail, vine, etc.");
+
+static const u8 MoveDescription_VineWhip[] = _(
+ "Strikes the foe with\n"
+ "slender, whiplike vines.");
+
+static const u8 MoveDescription_Stomp[] = _(
+ "Stomps the enemy with a big\n"
+ "foot. May cause flinching.");
+
+static const u8 MoveDescription_DoubleKick[] = _(
+ "A double-kicking attack\n"
+ "that strikes the foe twice.");
+
+static const u8 MoveDescription_MegaKick[] = _(
+ "An extremely powerful kick\n"
+ "with intense force.");
+
+static const u8 MoveDescription_JumpKick[] = _(
+ "A strong jumping kick. May\n"
+ "miss and hurt the kicker.");
+
+static const u8 MoveDescription_RollingKick[] = _(
+ "A fast kick delivered from\n"
+ "a rapid spin.");
+
+static const u8 MoveDescription_SandAttack[] = _(
+ "Reduces the foe’s accuracy\n"
+ "by hurling sand in its face.");
+
+static const u8 MoveDescription_Headbutt[] = _(
+ "A ramming attack that may\n"
+ "cause flinching.");
+
+static const u8 MoveDescription_HornAttack[] = _(
+ "Jabs the foe with sharp\n"
+ "horns.");
+
+static const u8 MoveDescription_FuryAttack[] = _(
+ "Jabs the foe 2 to 5 times\n"
+ "with sharp horns, etc.");
+
+static const u8 MoveDescription_HornDrill[] = _(
+ "A one-hit KO attack that\n"
+ "uses a horn like a drill.");
+
+static const u8 MoveDescription_Tackle[] = _(
+ "Charges the foe with a full-\n"
+ "body tackle.");
+
+static const u8 MoveDescription_BodySlam[] = _(
+ "A full-body slam that may\n"
+ "cause paralysis.");
+
+static const u8 MoveDescription_Wrap[] = _(
+ "Wraps and squeezes the foe\n"
+ "2 to 5 times with vines, etc.");
+
+static const u8 MoveDescription_TakeDown[] = _(
+ "A reckless charge attack\n"
+ "that also hurts the user.");
+
+static const u8 MoveDescription_Thrash[] = _(
+ "A rampage of 2 to 3 turns\n"
+ "that confuses the user.");
+
+static const u8 MoveDescription_DoubleEdge[] = _(
+ "A life-risking tackle that\n"
+ "also hurts the user.");
+
+static const u8 MoveDescription_TailWhip[] = _(
+ "Wags the tail to lower the\n"
+ "foe’s DEFENSE.");
+
+static const u8 MoveDescription_PoisonSting[] = _(
+ "A toxic attack with barbs,\n"
+ "etc., that may poison.");
+
+static const u8 MoveDescription_Twineedle[] = _(
+ "Stingers on the forelegs\n"
+ "jab the foe twice.");
+
+static const u8 MoveDescription_PinMissile[] = _(
+ "Sharp pins are fired to\n"
+ "strike 2 to 5 times.");
+
+static const u8 MoveDescription_Leer[] = _(
+ "Frightens the foe with a\n"
+ "leer to lower DEFENSE.");
+
+static const u8 MoveDescription_Bite[] = _(
+ "Bites with vicious fangs.\n"
+ "May cause flinching.");
+
+static const u8 MoveDescription_Growl[] = _(
+ "Growls cutely to reduce the\n"
+ "foe’s ATTACK.");
+
+static const u8 MoveDescription_Roar[] = _(
+ "Makes the foe flee to end\n"
+ "the battle.");
+
+static const u8 MoveDescription_Sing[] = _(
+ "A soothing song lulls the\n"
+ "foe into a deep slumber.");
+
+static const u8 MoveDescription_Supersonic[] = _(
+ "Emits bizarre sound waves\n"
+ "that may confuse the foe.");
+
+static const u8 MoveDescription_SonicBoom[] = _(
+ "Launches shock waves that\n"
+ "always inflict 20 HP damage.");
+
+static const u8 MoveDescription_Disable[] = _(
+ "Psychically disables one of\n"
+ "the foe’s moves.");
+
+static const u8 MoveDescription_Acid[] = _(
+ "Sprays a hide-melting acid.\n"
+ "May lower DEFENSE.");
+
+static const u8 MoveDescription_Ember[] = _(
+ "A weak fire attack that may\n"
+ "inflict a burn.");
+
+static const u8 MoveDescription_Flamethrower[] = _(
+ "A powerful fire attack that\n"
+ "may inflict a burn.");
+
+static const u8 MoveDescription_Mist[] = _(
+ "Creates a mist that stops\n"
+ "reduction of abilities.");
+
+static const u8 MoveDescription_WaterGun[] = _(
+ "Squirts water to attack\n"
+ "the foe.");
+
+static const u8 MoveDescription_HydroPump[] = _(
+ "Blasts water at high power\n"
+ "to strike the foe.");
+
+static const u8 MoveDescription_Surf[] = _(
+ "Creates a huge wave, then\n"
+ "crashes it down on the foe.");
+
+static const u8 MoveDescription_IceBeam[] = _(
+ "Blasts the foe with an icy\n"
+ "beam that may freeze it.");
+
+static const u8 MoveDescription_Blizzard[] = _(
+ "Hits the foe with an icy\n"
+ "storm that may freeze it.");
+
+static const u8 MoveDescription_Psybeam[] = _(
+ "Fires a peculiar ray that\n"
+ "may confuse the foe.");
+
+static const u8 MoveDescription_BubbleBeam[] = _(
+ "Forcefully sprays bubbles\n"
+ "that may lower SPEED.");
+
+static const u8 MoveDescription_AuroraBeam[] = _(
+ "Fires a rainbow-colored\n"
+ "beam that may lower ATTACK.");
+
+static const u8 MoveDescription_HyperBeam[] = _(
+ "Powerful, but leaves the\n"
+ "user immobile the next turn.");
+
+static const u8 MoveDescription_Peck[] = _(
+ "Attacks the foe with a\n"
+ "jabbing beak, etc.");
+
+static const u8 MoveDescription_DrillPeck[] = _(
+ "A corkscrewing attack with\n"
+ "the beak acting as a drill.");
+
+static const u8 MoveDescription_Submission[] = _(
+ "A reckless body slam that\n"
+ "also hurts the user.");
+
+static const u8 MoveDescription_LowKick[] = _(
+ "A kick that inflicts more\n"
+ "damage on heavier foes.");
+
+static const u8 MoveDescription_Counter[] = _(
+ "Retaliates any physical hit\n"
+ "with double the power.");
+
+static const u8 MoveDescription_SeismicToss[] = _(
+ "Inflicts damage identical\n"
+ "to the user’s level.");
+
+static const u8 MoveDescription_Strength[] = _(
+ "Builds enormous power,\n"
+ "then slams the foe.");
+
+static const u8 MoveDescription_Absorb[] = _(
+ "An attack that absorbs\n"
+ "half the damage inflicted.");
+
+static const u8 MoveDescription_MegaDrain[] = _(
+ "An attack that absorbs\n"
+ "half the damage inflicted.");
+
+static const u8 MoveDescription_LeechSeed[] = _(
+ "Plants a seed on the foe to\n"
+ "steal HP on every turn.");
+
+static const u8 MoveDescription_Growth[] = _(
+ "Forces the body to grow\n"
+ "and heightens SP. ATK.");
+
+static const u8 MoveDescription_RazorLeaf[] = _(
+ "Cuts the enemy with leaves.\n"
+ "High critical-hit ratio.");
+
+static const u8 MoveDescription_SolarBeam[] = _(
+ "Absorbs light in one turn,\n"
+ "then attacks next turn.");
+
+static const u8 MoveDescription_PoisonPowder[] = _(
+ "Scatters a toxic powder\n"
+ "that may poison the foe.");
+
+static const u8 MoveDescription_StunSpore[] = _(
+ "Scatters a powder that may\n"
+ "paralyze the foe.");
+
+static const u8 MoveDescription_SleepPowder[] = _(
+ "Scatters a powder that may\n"
+ "cause the foe to sleep.");
+
+static const u8 MoveDescription_PetalDance[] = _(
+ "A rampage of 2 to 3 turns\n"
+ "that confuses the user.");
+
+static const u8 MoveDescription_StringShot[] = _(
+ "Binds the foe with string\n"
+ "to reduce its SPEED.");
+
+static const u8 MoveDescription_DragonRage[] = _(
+ "Launches shock waves that\n"
+ "always inflict 40 HP damage.");
+
+static const u8 MoveDescription_FireSpin[] = _(
+ "Traps the foe in a ring of\n"
+ "fire for 2 to 5 turns.");
+
+static const u8 MoveDescription_ThunderShock[] = _(
+ "An electrical attack that\n"
+ "may paralyze the foe.");
+
+static const u8 MoveDescription_Thunderbolt[] = _(
+ "A strong electrical attack\n"
+ "that may paralyze the foe.");
+
+static const u8 MoveDescription_ThunderWave[] = _(
+ "A weak jolt of electricity\n"
+ "that paralyzes the foe.");
+
+static const u8 MoveDescription_Thunder[] = _(
+ "A lightning attack that may\n"
+ "cause paralysis.");
+
+static const u8 MoveDescription_RockThrow[] = _(
+ "Throws small rocks to\n"
+ "strike the foe.");
+
+static const u8 MoveDescription_Earthquake[] = _(
+ "A powerful quake, but has\n"
+ "no effect on flying foes.");
+
+static const u8 MoveDescription_Fissure[] = _(
+ "A one-hit KO move that\n"
+ "drops the foe in a fissure.");
+
+static const u8 MoveDescription_Dig[] = _(
+ "Digs underground the first\n"
+ "turn and strikes next turn.");
+
+static const u8 MoveDescription_Toxic[] = _(
+ "Poisons the foe with an\n"
+ "intensifying toxin.");
+
+static const u8 MoveDescription_Confusion[] = _(
+ "A psychic attack that may\n"
+ "cause confusion.");
+
+static const u8 MoveDescription_Psychic[] = _(
+ "A powerful psychic attack\n"
+ "that may lower SP. DEF.");
+
+static const u8 MoveDescription_Hypnosis[] = _(
+ "A hypnotizing move that\n"
+ "may induce sleep.");
+
+static const u8 MoveDescription_Meditate[] = _(
+ "Meditates in a peaceful\n"
+ "fashion to raise ATTACK.");
+
+static const u8 MoveDescription_Agility[] = _(
+ "Relaxes the body to sharply\n"
+ "boost SPEED.");
+
+static const u8 MoveDescription_QuickAttack[] = _(
+ "An extremely fast attack\n"
+ "that always strikes first.");
+
+static const u8 MoveDescription_Rage[] = _(
+ "Raises the user’s ATTACK\n"
+ "every time it is hit.");
+
+static const u8 MoveDescription_Teleport[] = _(
+ "A psychic move for fleeing\n"
+ "from battle instantly.");
+
+static const u8 MoveDescription_NightShade[] = _(
+ "Inflicts damage identical\n"
+ "to the user’s level.");
+
+static const u8 MoveDescription_Mimic[] = _(
+ "Copies a move used by the\n"
+ "foe during one battle.");
+
+static const u8 MoveDescription_Screech[] = _(
+ "Emits a screech to sharply\n"
+ "reduce the foe’s DEFENSE.");
+
+static const u8 MoveDescription_DoubleTeam[] = _(
+ "Creates illusory copies to\n"
+ "raise evasiveness.");
+
+static const u8 MoveDescription_Recover[] = _(
+ "Recovers up to half the\n"
+ "user’s maximum HP.");
+
+static const u8 MoveDescription_Harden[] = _(
+ "Stiffens the body’s \n"
+ "muscles to raise DEFENSE.");
+
+static const u8 MoveDescription_Minimize[] = _(
+ "Minimizes the user’s size\n"
+ "to raise evasiveness.");
+
+static const u8 MoveDescription_Smokescreen[] = _(
+ "Lowers the foe’s accuracy\n"
+ "using smoke, ink, etc.");
+
+static const u8 MoveDescription_ConfuseRay[] = _(
+ "A sinister ray that\n"
+ "confuses the foe.");
+
+static const u8 MoveDescription_Withdraw[] = _(
+ "Withdraws the body into its\n"
+ "hard shell to raise DEFENSE.");
+
+static const u8 MoveDescription_DefenseCurl[] = _(
+ "Curls up to conceal weak\n"
+ "spots and raise DEFENSE.");
+
+static const u8 MoveDescription_Barrier[] = _(
+ "Creates a barrier that\n"
+ "sharply raises DEFENSE.");
+
+static const u8 MoveDescription_LightScreen[] = _(
+ "Creates a wall of light that\n"
+ "lowers SP. ATK damage.");
+
+static const u8 MoveDescription_Haze[] = _(
+ "Creates a black haze that\n"
+ "eliminates all stat changes.");
+
+static const u8 MoveDescription_Reflect[] = _(
+ "Creates a wall of light that\n"
+ "weakens physical attacks.");
+
+static const u8 MoveDescription_FocusEnergy[] = _(
+ "Focuses power to raise the\n"
+ "critical-hit ratio.");
+
+static const u8 MoveDescription_Bide[] = _(
+ "Endures attack for 2\n"
+ "turns to retaliate double.");
+
+static const u8 MoveDescription_Metronome[] = _(
+ "Waggles a finger to use any\n"
+ "POKéMON move at random.");
+
+static const u8 MoveDescription_MirrorMove[] = _(
+ "Counters the foe’s attack\n"
+ "with the same move.");
+
+static const u8 MoveDescription_SelfDestruct[] = _(
+ "Inflicts severe damage but\n"
+ "makes the user faint.");
+
+static const u8 MoveDescription_EggBomb[] = _(
+ "An egg is forcibly hurled at\n"
+ "the foe.");
+
+static const u8 MoveDescription_Lick[] = _(
+ "Licks with a long tongue to\n"
+ "injure. May also paralyze.");
+
+static const u8 MoveDescription_Smog[] = _(
+ "An exhaust-gas attack\n"
+ "that may also poison.");
+
+static const u8 MoveDescription_Sludge[] = _(
+ "Sludge is hurled to inflict\n"
+ "damage. May also poison.");
+
+static const u8 MoveDescription_BoneClub[] = _(
+ "Clubs the foe with a bone.\n"
+ "May cause flinching.");
+
+static const u8 MoveDescription_FireBlast[] = _(
+ "A fiery blast that scorches\n"
+ "all. May cause a burn.");
+
+static const u8 MoveDescription_Waterfall[] = _(
+ "Charges the foe with speed\n"
+ "to climb waterfalls.");
+
+static const u8 MoveDescription_Clamp[] = _(
+ "Traps and squeezes the\n"
+ "foe for 2 to 5 turns.");
+
+static const u8 MoveDescription_Swift[] = _(
+ "Sprays star-shaped rays\n"
+ "that never miss.");
+
+static const u8 MoveDescription_SkullBash[] = _(
+ "Tucks in the head, then\n"
+ "attacks on the next turn.");
+
+static const u8 MoveDescription_SpikeCannon[] = _(
+ "Launches sharp spikes that\n"
+ "strike 2 to 5 times.");
+
+static const u8 MoveDescription_Constrict[] = _(
+ "Constricts to inflict pain.\n"
+ "May lower SPEED.");
+
+static const u8 MoveDescription_Amnesia[] = _(
+ "Forgets about something\n"
+ "and sharply raises SP. DEF.");
+
+static const u8 MoveDescription_Kinesis[] = _(
+ "Distracts the foe.\n"
+ "May lower accuracy.");
+
+static const u8 MoveDescription_SoftBoiled[] = _(
+ "Recovers up to half the\n"
+ "user’s maximum HP.");
+
+static const u8 MoveDescription_HiJumpKick[] = _(
+ "A jumping knee kick. If it\n"
+ "misses, the user is hurt.");
+
+static const u8 MoveDescription_Glare[] = _(
+ "Intimidates and frightens\n"
+ "the foe into paralysis.");
+
+static const u8 MoveDescription_DreamEater[] = _(
+ "Takes one half the damage\n"
+ "inflicted on a sleeping foe.");
+
+static const u8 MoveDescription_PoisonGas[] = _(
+ "Envelops the foe in a toxic\n"
+ "gas that may poison.");
+
+static const u8 MoveDescription_Barrage[] = _(
+ "Hurls round objects at the\n"
+ "foe 2 to 5 times.");
+
+static const u8 MoveDescription_LeechLife[] = _(
+ "An attack that steals half\n"
+ "the damage inflicted.");
+
+static const u8 MoveDescription_LovelyKiss[] = _(
+ "Demands a kiss with a scary\n"
+ "face that induces sleep.");
+
+static const u8 MoveDescription_SkyAttack[] = _(
+ "Searches out weak spots,\n"
+ "then strikes the next turn.");
+
+static const u8 MoveDescription_Transform[] = _(
+ "Alters the user’s cells to\n"
+ "become a copy of the foe.");
+
+static const u8 MoveDescription_Bubble[] = _(
+ "An attack using bubbles.\n"
+ "May lower the foe’s SPEED.");
+
+static const u8 MoveDescription_DizzyPunch[] = _(
+ "A rhythmic punch that may\n"
+ "confuse the foe.");
+
+static const u8 MoveDescription_Spore[] = _(
+ "Scatters a cloud of spores\n"
+ "that always induce sleep.");
+
+static const u8 MoveDescription_Flash[] = _(
+ "Looses a powerful blast of\n"
+ "light that cuts accuracy.");
+
+static const u8 MoveDescription_Psywave[] = _(
+ "Attacks with a psychic\n"
+ "wave of varying intensity.");
+
+static const u8 MoveDescription_Splash[] = _(
+ "It’s just a splash...\n"
+ "Has no effect whatsoever.");
+
+static const u8 MoveDescription_AcidArmor[] = _(
+ "Liquifies the user’s body\n"
+ "to sharply raise DEFENSE.");
+
+static const u8 MoveDescription_Crabhammer[] = _(
+ "Hammers with a pincer. Has a\n"
+ "high critical-hit ratio.");
+
+static const u8 MoveDescription_Explosion[] = _(
+ "Inflicts severe damage but\n"
+ "makes the user faint.");
+
+static const u8 MoveDescription_FurySwipes[] = _(
+ "Rakes the foe with sharp\n"
+ "claws, etc., 2 to 5 times.");
+
+static const u8 MoveDescription_Bonemerang[] = _(
+ "Throws a bone boomerang\n"
+ "that strikes twice.");
+
+static const u8 MoveDescription_Rest[] = _(
+ "The user sleeps for 2 turns,\n"
+ "restoring HP and status.");
+
+static const u8 MoveDescription_RockSlide[] = _(
+ "Large boulders are hurled.\n"
+ "May cause flinching.");
+
+static const u8 MoveDescription_HyperFang[] = _(
+ "Attacks with sharp fangs.\n"
+ "May cause flinching.");
+
+static const u8 MoveDescription_Sharpen[] = _(
+ "Reduces the polygon count\n"
+ "and raises ATTACK.");
+
+static const u8 MoveDescription_Conversion[] = _(
+ "Changes the user’s type\n"
+ "into an own move’s type.");
+
+static const u8 MoveDescription_TriAttack[] = _(
+ "Fires three types of beams\n"
+ "at the same time.");
+
+static const u8 MoveDescription_SuperFang[] = _(
+ "Attacks with sharp fangs\n"
+ "and cuts half the foe’s HP.");
+
+static const u8 MoveDescription_Slash[] = _(
+ "Slashes with claws, etc. Has\n"
+ "a high critical-hit ratio.");
+
+static const u8 MoveDescription_Substitute[] = _(
+ "Creates a decoy using 1/4\n"
+ "of the user’s maximum HP.");
+
+static const u8 MoveDescription_Struggle[] = _(
+ "Used only if all PP are gone.\n"
+ "Also hurts the user a little.");
+
+static const u8 MoveDescription_Sketch[] = _(
+ "Copies the foe’s last move\n"
+ "permanently.");
+
+static const u8 MoveDescription_TripleKick[] = _(
+ "Kicks the foe 3 times in a\n"
+ "row with rising intensity.");
+
+static const u8 MoveDescription_Thief[] = _(
+ "While attacking, it may\n"
+ "steal the foe’s held item.");
+
+static const u8 MoveDescription_SpiderWeb[] = _(
+ "Ensnares the foe to stop it\n"
+ "from fleeing or switching.");
+
+static const u8 MoveDescription_MindReader[] = _(
+ "Senses the foe’s action to\n"
+ "ensure the next move’s hit.");
+
+static const u8 MoveDescription_Nightmare[] = _(
+ "Inflicts 1/4 damage on a\n"
+ "sleeping foe every turn.");
+
+static const u8 MoveDescription_FlameWheel[] = _(
+ "A fiery charge attack that\n"
+ "may inflict a burn.");
+
+static const u8 MoveDescription_Snore[] = _(
+ "A loud attack that can be\n"
+ "used only while asleep.");
+
+static const u8 MoveDescription_Curse[] = _(
+ "A move that functions\n"
+ "differently for GHOSTS.");
+
+static const u8 MoveDescription_Flail[] = _(
+ "Inflicts more damage when\n"
+ "the user’s HP is down.");
+
+static const u8 MoveDescription_Conversion2[] = _(
+ "Makes the user resistant\n"
+ "to the last attack’s type.");
+
+static const u8 MoveDescription_Aeroblast[] = _(
+ "Launches a vacuumed blast.\n"
+ "High critical-hit ratio.");
+
+static const u8 MoveDescription_CottonSpore[] = _(
+ "Spores cling to the foe,\n"
+ "sharply reducing SPEED.");
+
+static const u8 MoveDescription_Reversal[] = _(
+ "Inflicts more damage when\n"
+ "the user’s HP is down.");
+
+static const u8 MoveDescription_Spite[] = _(
+ "Spitefully cuts the PP\n"
+ "of the foe’s last move.");
+
+static const u8 MoveDescription_PowderSnow[] = _(
+ "Blasts the foe with a snowy\n"
+ "gust. May cause freezing.");
+
+static const u8 MoveDescription_Protect[] = _(
+ "Evades attack, but may fail\n"
+ "if used in succession.");
+
+static const u8 MoveDescription_MachPunch[] = _(
+ "A punch is thrown at wicked\n"
+ "speed to strike first.");
+
+static const u8 MoveDescription_ScaryFace[] = _(
+ "Frightens with a scary face\n"
+ "to sharply reduce SPEED.");
+
+static const u8 MoveDescription_FaintAttack[] = _(
+ "Draws the foe close, then\n"
+ "strikes without fail.");
+
+static const u8 MoveDescription_SweetKiss[] = _(
+ "Demands a kiss with a cute\n"
+ "look. May cause confusion.");
+
+static const u8 MoveDescription_BellyDrum[] = _(
+ "Maximizes ATTACK while\n"
+ "sacrificing HP.");
+
+static const u8 MoveDescription_SludgeBomb[] = _(
+ "Sludge is hurled to inflict\n"
+ "damage. May also poison.");
+
+static const u8 MoveDescription_MudSlap[] = _(
+ "Hurls mud in the foe’s face\n"
+ "to reduce its accuracy.");
+
+static const u8 MoveDescription_Octazooka[] = _(
+ "Fires a lump of ink to\n"
+ "damage and cut accuracy.");
+
+static const u8 MoveDescription_Spikes[] = _(
+ "Sets spikes that hurt a \n"
+ "foe switching out.");
+
+static const u8 MoveDescription_ZapCannon[] = _(
+ "Powerful and sure to cause\n"
+ "paralysis, but inaccurate.");
+
+static const u8 MoveDescription_Foresight[] = _(
+ "Negates the foe’s efforts\n"
+ "to heighten evasiveness.");
+
+static const u8 MoveDescription_DestinyBond[] = _(
+ "If the user faints, the foe\n"
+ "is also made to faint.");
+
+static const u8 MoveDescription_PerishSong[] = _(
+ "Any POKéMON hearing this\n"
+ "song faints in 3 turns.");
+
+static const u8 MoveDescription_IcyWind[] = _(
+ "A chilling attack that\n"
+ "lowers the foe’s SPEED.");
+
+static const u8 MoveDescription_Detect[] = _(
+ "Evades attack, but may fail\n"
+ "if used in succession.");
+
+static const u8 MoveDescription_BoneRush[] = _(
+ "Strikes the foe with a bone\n"
+ "in hand 2 to 5 times.");
+
+static const u8 MoveDescription_LockOn[] = _(
+ "Locks on to the foe to\n"
+ "ensure the next move hits.");
+
+static const u8 MoveDescription_Outrage[] = _(
+ "A rampage of 2 to 3 turns\n"
+ "that confuses the user.");
+
+static const u8 MoveDescription_Sandstorm[] = _(
+ "Causes a sandstorm that\n"
+ "rages for several turns.");
+
+static const u8 MoveDescription_GigaDrain[] = _(
+ "An attack that steals half\n"
+ "the damage inflicted.");
+
+static const u8 MoveDescription_Endure[] = _(
+ "Endures any attack for\n"
+ "1 turn, leaving at least 1HP.");
+
+static const u8 MoveDescription_Charm[] = _(
+ "Charms the foe and sharply\n"
+ "reduces its ATTACK.");
+
+static const u8 MoveDescription_Rollout[] = _(
+ "An attack lasting 5 turns\n"
+ "with rising intensity.");
+
+static const u8 MoveDescription_FalseSwipe[] = _(
+ "An attack that leaves the\n"
+ "foe with at least 1 HP.");
+
+static const u8 MoveDescription_Swagger[] = _(
+ "Confuses the foe, but also\n"
+ "sharply raises ATTACK.");
+
+static const u8 MoveDescription_MilkDrink[] = _(
+ "Recovers up to half the\n"
+ "user’s maximum HP.");
+
+static const u8 MoveDescription_Spark[] = _(
+ "An electrified tackle that\n"
+ "may paralyze the foe.");
+
+static const u8 MoveDescription_FuryCutter[] = _(
+ "An attack that intensifies\n"
+ "on each successive hit.");
+
+static const u8 MoveDescription_SteelWing[] = _(
+ "Strikes the foe with hard\n"
+ "wings spread wide.");
+
+static const u8 MoveDescription_MeanLook[] = _(
+ "Fixes the foe with a mean\n"
+ "look that prevents escape.");
+
+static const u8 MoveDescription_Attract[] = _(
+ "Makes the opposite gender\n"
+ "less likely to attack.");
+
+static const u8 MoveDescription_SleepTalk[] = _(
+ "Uses an own move randomly\n"
+ "while asleep.");
+
+static const u8 MoveDescription_HealBell[] = _(
+ "Chimes soothingly to heal\n"
+ "all status abnormalities.");
+
+static const u8 MoveDescription_Return[] = _(
+ "An attack that increases\n"
+ "in power with friendship.");
+
+static const u8 MoveDescription_Present[] = _(
+ "A gift in the form of a\n"
+ "bomb. May restore HP.");
+
+static const u8 MoveDescription_Frustration[] = _(
+ "An attack that is stronger\n"
+ "if the TRAINER is disliked.");
+
+static const u8 MoveDescription_Safeguard[] = _(
+ "A mystical force prevents\n"
+ "all status problems.");
+
+static const u8 MoveDescription_PainSplit[] = _(
+ "Adds the user and foe’s HP,\n"
+ "then shares them equally.");
+
+static const u8 MoveDescription_SacredFire[] = _(
+ "A mystical fire attack that\n"
+ "may inflict a burn.");
+
+static const u8 MoveDescription_Magnitude[] = _(
+ "A ground-shaking attack\n"
+ "of random intensity.");
+
+static const u8 MoveDescription_DynamicPunch[] = _(
+ "Powerful and sure to cause\n"
+ "confusion, but inaccurate.");
+
+static const u8 MoveDescription_Megahorn[] = _(
+ "A brutal ramming attack\n"
+ "using out-thrust horns.");
+
+static const u8 MoveDescription_DragonBreath[] = _(
+ "Strikes the foe with an\n"
+ "incredible blast of breath.");
+
+static const u8 MoveDescription_BatonPass[] = _(
+ "Switches out the user while\n"
+ "keeping effects in play.");
+
+static const u8 MoveDescription_Encore[] = _(
+ "Makes the foe repeat its\n"
+ "last move over 2 to 6 turns.");
+
+static const u8 MoveDescription_Pursuit[] = _(
+ "Inflicts bad damage if used\n"
+ "on a foe switching out.");
+
+static const u8 MoveDescription_RapidSpin[] = _(
+ "Spins the body at high\n"
+ "speed to strike the foe.");
+
+static const u8 MoveDescription_SweetScent[] = _(
+ "Allures the foe to reduce\n"
+ "evasiveness.");
+
+static const u8 MoveDescription_IronTail[] = _(
+ "Attacks with a rock-hard\n"
+ "tail. May lower DEFENSE.");
+
+static const u8 MoveDescription_MetalClaw[] = _(
+ "A claw attack that may\n"
+ "raise the user’s ATTACK.");
+
+static const u8 MoveDescription_VitalThrow[] = _(
+ "Makes the user’s move last,\n"
+ "but it never misses.");
+
+static const u8 MoveDescription_MorningSun[] = _(
+ "Restores HP. The amount\n"
+ "varies with the weather.");
+
+static const u8 MoveDescription_Synthesis[] = _(
+ "Restores HP. The amount\n"
+ "varies with the weather.");
+
+static const u8 MoveDescription_Moonlight[] = _(
+ "Restores HP. The amount\n"
+ "varies with the weather.");
+
+static const u8 MoveDescription_HiddenPower[] = _(
+ "The effectiveness varies\n"
+ "with the user.");
+
+static const u8 MoveDescription_CrossChop[] = _(
+ "A double-chopping attack.\n"
+ "High critical-hit ratio.");
+
+static const u8 MoveDescription_Twister[] = _(
+ "Whips up a vicious twister\n"
+ "to tear at the foe.");
+
+static const u8 MoveDescription_RainDance[] = _(
+ "Boosts the power of WATER-\n"
+ "type moves for 5 turns.");
+
+static const u8 MoveDescription_SunnyDay[] = _(
+ "Boosts the power of FIRE-\n"
+ "type moves for 5 turns.");
+
+static const u8 MoveDescription_Crunch[] = _(
+ "Crunches with sharp fangs.\n"
+ "May lower SP. DEF.");
+
+static const u8 MoveDescription_MirrorCoat[] = _(
+ "Counters the foe’s special\n"
+ "attack at double the power.");
+
+static const u8 MoveDescription_PsychUp[] = _(
+ "Copies the foe’s effect(s)\n"
+ "and gives to the user.");
+
+static const u8 MoveDescription_ExtremeSpeed[] = _(
+ "An extremely fast and\n"
+ "powerful attack.");
+
+static const u8 MoveDescription_AncientPower[] = _(
+ "An attack that may raise\n"
+ "all stats.");
+
+static const u8 MoveDescription_ShadowBall[] = _(
+ "Hurls a black blob that may\n"
+ "lower the foe’s SP. DEF.");
+
+static const u8 MoveDescription_FutureSight[] = _(
+ "Heightens inner power to\n"
+ "strike 2 turns later.");
+
+static const u8 MoveDescription_RockSmash[] = _(
+ "A rock-crushing attack\n"
+ "that may lower DEFENSE.");
+
+static const u8 MoveDescription_Whirlpool[] = _(
+ "Traps and hurts the foe in\n"
+ "a whirlpool for 2 to 5 turns.");
+
+static const u8 MoveDescription_BeatUp[] = _(
+ "Summons party POKéMON to\n"
+ "join in the attack.");
+
+static const u8 MoveDescription_FakeOut[] = _(
+ "A 1st-turn, 1st-strike move\n"
+ "that causes flinching.");
+
+static const u8 MoveDescription_Uproar[] = _(
+ "Causes an uproar for 2 to 5\n"
+ "turns and prevents sleep.");
+
+static const u8 MoveDescription_Stockpile[] = _(
+ "Charges up power for up to\n"
+ "3 turns.");
+
+static const u8 MoveDescription_SpitUp[] = _(
+ "Releases stockpiled power\n"
+ "(the more the better).");
+
+static const u8 MoveDescription_Swallow[] = _(
+ "Absorbs stockpiled power\n"
+ "and restores HP.");
+
+static const u8 MoveDescription_HeatWave[] = _(
+ "Exhales a hot breath on the\n"
+ "foe. May inflict a burn.");
+
+static const u8 MoveDescription_Hail[] = _(
+ "Summons a hailstorm that\n"
+ "strikes every turn.");
+
+static const u8 MoveDescription_Torment[] = _(
+ "Torments the foe and stops\n"
+ "successive use of a move.");
+
+static const u8 MoveDescription_Flatter[] = _(
+ "Confuses the foe, but\n"
+ "raises its SP. ATK.");
+
+static const u8 MoveDescription_WillOWisp[] = _(
+ "Inflicts a burn on the foe\n"
+ "with intense fire.");
+
+static const u8 MoveDescription_Memento[] = _(
+ "The user faints and lowers\n"
+ "the foe’s abilities.");
+
+static const u8 MoveDescription_Facade[] = _(
+ "Boosts ATTACK when burned,\n"
+ "paralyzed, or poisoned.");
+
+static const u8 MoveDescription_FocusPunch[] = _(
+ "A powerful loyalty attack.\n"
+ "The user flinches if hit.");
+
+static const u8 MoveDescription_SmellingSalt[] = _(
+ "Powerful against paralyzed\n"
+ "foes, but also heals them.");
+
+static const u8 MoveDescription_FollowMe[] = _(
+ "Draws attention to make\n"
+ "foes attack only the user.");
+
+static const u8 MoveDescription_NaturePower[] = _(
+ "The type of attack varies\n"
+ "depending on the location.");
+
+static const u8 MoveDescription_Charge[] = _(
+ "Charges power to boost the\n"
+ "electric move used next.");
+
+static const u8 MoveDescription_Taunt[] = _(
+ "Taunts the foe into only\n"
+ "using attack moves.");
+
+static const u8 MoveDescription_HelpingHand[] = _(
+ "Boosts the power of the\n"
+ "recipient’s moves.");
+
+static const u8 MoveDescription_Trick[] = _(
+ "Tricks the foe into trading\n"
+ "held items.");
+
+static const u8 MoveDescription_RolePlay[] = _(
+ "Mimics the target and\n"
+ "copies its special ability.");
+
+static const u8 MoveDescription_Wish[] = _(
+ "A wish that restores HP.\n"
+ "It takes time to work.");
+
+static const u8 MoveDescription_Assist[] = _(
+ "Attacks randomly with one\n"
+ "of the partner’s moves.");
+
+static const u8 MoveDescription_Ingrain[] = _(
+ "Lays roots that restore HP.\n"
+ "The user can’t switch out.");
+
+static const u8 MoveDescription_Superpower[] = _(
+ "Boosts strength sharply,\n"
+ "but lowers abilities.");
+
+static const u8 MoveDescription_MagicCoat[] = _(
+ "Reflects special effects\n"
+ "back to the attacker.");
+
+static const u8 MoveDescription_Recycle[] = _(
+ "Recycles a used item for\n"
+ "one more use.");
+
+static const u8 MoveDescription_Revenge[] = _(
+ "An attack that gains power\n"
+ "if injured by the foe.");
+
+static const u8 MoveDescription_BrickBreak[] = _(
+ "Destroys barriers such as\n"
+ "REFLECT and causes damage.");
+
+static const u8 MoveDescription_Yawn[] = _(
+ "Lulls the foe into yawning,\n"
+ "then sleeping next turn.");
+
+static const u8 MoveDescription_KnockOff[] = _(
+ "Knocks down the foe’s held\n"
+ "item to prevent its use.");
+
+static const u8 MoveDescription_Endeavor[] = _(
+ "Gains power if the user’s HP\n"
+ "is lower than the foe’s HP.");
+
+static const u8 MoveDescription_Eruption[] = _(
+ "The higher the user’s HP,\n"
+ "the more damage caused.");
+
+static const u8 MoveDescription_SkillSwap[] = _(
+ "The user swaps special\n"
+ "abilities with the target.");
+
+static const u8 MoveDescription_Imprison[] = _(
+ "Prevents foes from using\n"
+ "moves known by the user.");
+
+static const u8 MoveDescription_Refresh[] = _(
+ "Heals poisoning, paralysis,\n"
+ "or a burn.");
+
+static const u8 MoveDescription_Grudge[] = _(
+ "If the user faints, deletes\n"
+ "the PP of the final move.");
+
+static const u8 MoveDescription_Snatch[] = _(
+ "Steals the effects of the\n"
+ "move the foe uses next.");
+
+static const u8 MoveDescription_SecretPower[] = _(
+ "An attack with effects\n"
+ "that vary by location.");
+
+static const u8 MoveDescription_Dive[] = _(
+ "Dives underwater the first\n"
+ "turn and strikes next turn.");
+
+static const u8 MoveDescription_ArmThrust[] = _(
+ "Straight-arm punches that\n"
+ "strike the foe 2 to 5 times.");
+
+static const u8 MoveDescription_Camouflage[] = _(
+ "Alters the POKéMON’s type\n"
+ "depending on the location.");
+
+static const u8 MoveDescription_TailGlow[] = _(
+ "Flashes a light that sharply\n"
+ "raises SP. ATK.");
+
+static const u8 MoveDescription_LusterPurge[] = _(
+ "Attacks with a burst of\n"
+ "light. May lower SP. DEF.");
+
+static const u8 MoveDescription_MistBall[] = _(
+ "Attacks with a flurry of\n"
+ "down. May lower SP. ATK.");
+
+static const u8 MoveDescription_FeatherDance[] = _(
+ "Envelops the foe with down\n"
+ "to sharply reduce ATTACK.");
+
+static const u8 MoveDescription_TeeterDance[] = _(
+ "Confuses all POKéMON on\n"
+ "the scene.");
+
+static const u8 MoveDescription_BlazeKick[] = _(
+ "A kick with a high critical-\n"
+ "hit ratio. May cause a burn.");
+
+static const u8 MoveDescription_MudSport[] = _(
+ "Covers the user in mud to\n"
+ "raise electrical resistance.");
+
+static const u8 MoveDescription_IceBall[] = _(
+ "A 5-turn attack that gains\n"
+ "power on successive hits.");
+
+static const u8 MoveDescription_NeedleArm[] = _(
+ "Attacks with thorny arms.\n"
+ "May cause flinching.");
+
+static const u8 MoveDescription_SlackOff[] = _(
+ "Slacks off and restores\n"
+ "half the maximum HP.");
+
+static const u8 MoveDescription_HyperVoice[] = _(
+ "A loud attack that uses\n"
+ "sound waves to injure.");
+
+static const u8 MoveDescription_PoisonFang[] = _(
+ "A sharp-fanged attack.\n"
+ "May badly poison the foe.");
+
+static const u8 MoveDescription_CrushClaw[] = _(
+ "Tears at the foe with sharp\n"
+ "claws. May lower DEFENSE.");
+
+static const u8 MoveDescription_BlastBurn[] = _(
+ "Powerful, but leaves the\n"
+ "user immobile the next turn.");
+
+static const u8 MoveDescription_HydroCannon[] = _(
+ "Powerful, but leaves the\n"
+ "user immobile the next turn.");
+
+static const u8 MoveDescription_MeteorMash[] = _(
+ "Fires a meteor-like punch.\n"
+ "May raise ATTACK.");
+
+static const u8 MoveDescription_Astonish[] = _(
+ "An attack that may shock\n"
+ "the foe into flinching.");
+
+static const u8 MoveDescription_WeatherBall[] = _(
+ "The move’s type and power\n"
+ "change with the weather.");
+
+static const u8 MoveDescription_Aromatherapy[] = _(
+ "Heals all status problems\n"
+ "with a soothing scent.");
+
+static const u8 MoveDescription_FakeTears[] = _(
+ "Feigns crying to sharply\n"
+ "lower the foe’s SP. DEF.");
+
+static const u8 MoveDescription_AirCutter[] = _(
+ "Hacks with razorlike wind.\n"
+ "High critical-hit ratio.");
+
+static const u8 MoveDescription_Overheat[] = _(
+ "Allows a full-power attack,\n"
+ "but sharply lowers SP. ATK.");
+
+static const u8 MoveDescription_OdorSleuth[] = _(
+ "Negates the foe’s efforts\n"
+ "to heighten evasiveness.");
+
+static const u8 MoveDescription_RockTomb[] = _(
+ "Stops the foe from moving\n"
+ "with rocks and cuts SPEED.");
+
+static const u8 MoveDescription_SilverWind[] = _(
+ "A powdery attack that may\n"
+ "raise abilities.");
+
+static const u8 MoveDescription_MetalSound[] = _(
+ "Emits a horrible screech\n"
+ "that sharply lowers SP. DEF.");
+
+static const u8 MoveDescription_GrassWhistle[] = _(
+ "Lulls the foe into sleep\n"
+ "with a pleasant melody.");
+
+static const u8 MoveDescription_Tickle[] = _(
+ "Makes the foe laugh to\n"
+ "lower ATTACK and DEFENSE.");
+
+static const u8 MoveDescription_CosmicPower[] = _(
+ "Raises DEFENSE and SP. DEF\n"
+ "with a mystic power.");
+
+static const u8 MoveDescription_WaterSpout[] = _(
+ "Inflicts more damage if the\n"
+ "user’s HP is high.");
+
+static const u8 MoveDescription_SignalBeam[] = _(
+ "A strange beam attack that\n"
+ "may confuse the foe.");
+
+static const u8 MoveDescription_ShadowPunch[] = _(
+ "An unavoidable punch that\n"
+ "is thrown from shadows.");
+
+static const u8 MoveDescription_Extrasensory[] = _(
+ "Attacks with a peculiar\n"
+ "power. May cause flinching.");
+
+static const u8 MoveDescription_SkyUppercut[] = _(
+ "An uppercut thrown as if\n"
+ "leaping into the sky.");
+
+static const u8 MoveDescription_SandTomb[] = _(
+ "Traps and hurts the foe in\n"
+ "quicksand for 2 to 5 turns.");
+
+static const u8 MoveDescription_SheerCold[] = _(
+ "A chilling attack that\n"
+ "causes fainting if it hits.");
+
+static const u8 MoveDescription_MuddyWater[] = _(
+ "Attacks with muddy water.\n"
+ "May lower accuracy.");
+
+static const u8 MoveDescription_BulletSeed[] = _(
+ "Shoots 2 to 5 seeds in a row\n"
+ "to strike the foe.");
+
+static const u8 MoveDescription_AerialAce[] = _(
+ "An extremely speedy and\n"
+ "unavoidable attack.");
+
+static const u8 MoveDescription_IcicleSpear[] = _(
+ "Attacks the foe by firing\n"
+ "2 to 5 icicles in a row.");
+
+static const u8 MoveDescription_IronDefense[] = _(
+ "Hardens the body’s surface\n"
+ "to sharply raise DEFENSE.");
+
+static const u8 MoveDescription_Block[] = _(
+ "Blocks the foe’s way to\n"
+ "prevent escape.");
+
+static const u8 MoveDescription_Howl[] = _(
+ "Howls to raise the spirit\n"
+ "and boosts ATTACK.");
+
+static const u8 MoveDescription_DragonClaw[] = _(
+ "Slashes the foe with sharp\n"
+ "claws.");
+
+static const u8 MoveDescription_FrenzyPlant[] = _(
+ "Powerful, but leaves the\n"
+ "user immobile the next turn.");
+
+static const u8 MoveDescription_BulkUp[] = _(
+ "Bulks up the body to boost\n"
+ "both ATTACK and DEFENSE.");
+
+static const u8 MoveDescription_Bounce[] = _(
+ "Bounces up, then down the\n"
+ "next turn. May paralyze.");
+
+static const u8 MoveDescription_MudShot[] = _(
+ "Hurls mud at the foe and\n"
+ "reduces SPEED.");
+
+static const u8 MoveDescription_PoisonTail[] = _(
+ "Has a high critical-hit\n"
+ "ratio. May also poison.");
+
+static const u8 MoveDescription_Covet[] = _(
+ "Cutely begs to obtain an\n"
+ "item held by the foe.");
+
+static const u8 MoveDescription_VoltTackle[] = _(
+ "A life-risking tackle that\n"
+ "slightly hurts the user.");
+
+static const u8 MoveDescription_MagicalLeaf[] = _(
+ "Attacks with a strange leaf\n"
+ "that cannot be evaded.");
+
+static const u8 MoveDescription_WaterSport[] = _(
+ "The user becomes soaked to\n"
+ "raise resistance to fire.");
+
+static const u8 MoveDescription_CalmMind[] = _(
+ "Raises SP. ATK and SP. DEF\n"
+ "by focusing the mind.");
+
+static const u8 MoveDescription_LeafBlade[] = _(
+ "Slashes with a sharp leaf.\n"
+ "High critical-hit ratio.");
+
+static const u8 MoveDescription_DragonDance[] = _(
+ "A mystical dance that ups\n"
+ "ATTACK and SPEED.");
+
+static const u8 MoveDescription_RockBlast[] = _(
+ "Hurls boulders at the foe\n"
+ "2 to 5 times in a row.");
+
+static const u8 MoveDescription_ShockWave[] = _(
+ "A fast and unavoidable\n"
+ "electric attack.");
+
+static const u8 MoveDescription_WaterPulse[] = _(
+ "Attacks with ultrasonic\n"
+ "waves. May confuse the foe");
+
+static const u8 MoveDescription_DoomDesire[] = _(
+ "Summons strong sunlight to\n"
+ "attack 2 turns later.");
+
+static const u8 MoveDescription_PsychoBoost[] = _(
+ "Allows a full-power attack,\n"
+ "but sharply lowers SP. ATK.");
+
+const u8 * const gMoveDescriptions[] = {
+ MoveDescription_Pound,
+ MoveDescription_KarateChop,
+ MoveDescription_DoubleSlap,
+ MoveDescription_CometPunch,
+ MoveDescription_MegaPunch,
+ MoveDescription_PayDay,
+ MoveDescription_FirePunch,
+ MoveDescription_IcePunch,
+ MoveDescription_ThunderPunch,
+ MoveDescription_Scratch,
+ MoveDescription_ViceGrip,
+ MoveDescription_Guillotine,
+ MoveDescription_RazorWind,
+ MoveDescription_SwordsDance,
+ MoveDescription_Cut,
+ MoveDescription_Gust,
+ MoveDescription_WingAttack,
+ MoveDescription_Whirlwind,
+ MoveDescription_Fly,
+ MoveDescription_Bind,
+ MoveDescription_Slam,
+ MoveDescription_VineWhip,
+ MoveDescription_Stomp,
+ MoveDescription_DoubleKick,
+ MoveDescription_MegaKick,
+ MoveDescription_JumpKick,
+ MoveDescription_RollingKick,
+ MoveDescription_SandAttack,
+ MoveDescription_Headbutt,
+ MoveDescription_HornAttack,
+ MoveDescription_FuryAttack,
+ MoveDescription_HornDrill,
+ MoveDescription_Tackle,
+ MoveDescription_BodySlam,
+ MoveDescription_Wrap,
+ MoveDescription_TakeDown,
+ MoveDescription_Thrash,
+ MoveDescription_DoubleEdge,
+ MoveDescription_TailWhip,
+ MoveDescription_PoisonSting,
+ MoveDescription_Twineedle,
+ MoveDescription_PinMissile,
+ MoveDescription_Leer,
+ MoveDescription_Bite,
+ MoveDescription_Growl,
+ MoveDescription_Roar,
+ MoveDescription_Sing,
+ MoveDescription_Supersonic,
+ MoveDescription_SonicBoom,
+ MoveDescription_Disable,
+ MoveDescription_Acid,
+ MoveDescription_Ember,
+ MoveDescription_Flamethrower,
+ MoveDescription_Mist,
+ MoveDescription_WaterGun,
+ MoveDescription_HydroPump,
+ MoveDescription_Surf,
+ MoveDescription_IceBeam,
+ MoveDescription_Blizzard,
+ MoveDescription_Psybeam,
+ MoveDescription_BubbleBeam,
+ MoveDescription_AuroraBeam,
+ MoveDescription_HyperBeam,
+ MoveDescription_Peck,
+ MoveDescription_DrillPeck,
+ MoveDescription_Submission,
+ MoveDescription_LowKick,
+ MoveDescription_Counter,
+ MoveDescription_SeismicToss,
+ MoveDescription_Strength,
+ MoveDescription_Absorb,
+ MoveDescription_MegaDrain,
+ MoveDescription_LeechSeed,
+ MoveDescription_Growth,
+ MoveDescription_RazorLeaf,
+ MoveDescription_SolarBeam,
+ MoveDescription_PoisonPowder,
+ MoveDescription_StunSpore,
+ MoveDescription_SleepPowder,
+ MoveDescription_PetalDance,
+ MoveDescription_StringShot,
+ MoveDescription_DragonRage,
+ MoveDescription_FireSpin,
+ MoveDescription_ThunderShock,
+ MoveDescription_Thunderbolt,
+ MoveDescription_ThunderWave,
+ MoveDescription_Thunder,
+ MoveDescription_RockThrow,
+ MoveDescription_Earthquake,
+ MoveDescription_Fissure,
+ MoveDescription_Dig,
+ MoveDescription_Toxic,
+ MoveDescription_Confusion,
+ MoveDescription_Psychic,
+ MoveDescription_Hypnosis,
+ MoveDescription_Meditate,
+ MoveDescription_Agility,
+ MoveDescription_QuickAttack,
+ MoveDescription_Rage,
+ MoveDescription_Teleport,
+ MoveDescription_NightShade,
+ MoveDescription_Mimic,
+ MoveDescription_Screech,
+ MoveDescription_DoubleTeam,
+ MoveDescription_Recover,
+ MoveDescription_Harden,
+ MoveDescription_Minimize,
+ MoveDescription_Smokescreen,
+ MoveDescription_ConfuseRay,
+ MoveDescription_Withdraw,
+ MoveDescription_DefenseCurl,
+ MoveDescription_Barrier,
+ MoveDescription_LightScreen,
+ MoveDescription_Haze,
+ MoveDescription_Reflect,
+ MoveDescription_FocusEnergy,
+ MoveDescription_Bide,
+ MoveDescription_Metronome,
+ MoveDescription_MirrorMove,
+ MoveDescription_SelfDestruct,
+ MoveDescription_EggBomb,
+ MoveDescription_Lick,
+ MoveDescription_Smog,
+ MoveDescription_Sludge,
+ MoveDescription_BoneClub,
+ MoveDescription_FireBlast,
+ MoveDescription_Waterfall,
+ MoveDescription_Clamp,
+ MoveDescription_Swift,
+ MoveDescription_SkullBash,
+ MoveDescription_SpikeCannon,
+ MoveDescription_Constrict,
+ MoveDescription_Amnesia,
+ MoveDescription_Kinesis,
+ MoveDescription_SoftBoiled,
+ MoveDescription_HiJumpKick,
+ MoveDescription_Glare,
+ MoveDescription_DreamEater,
+ MoveDescription_PoisonGas,
+ MoveDescription_Barrage,
+ MoveDescription_LeechLife,
+ MoveDescription_LovelyKiss,
+ MoveDescription_SkyAttack,
+ MoveDescription_Transform,
+ MoveDescription_Bubble,
+ MoveDescription_DizzyPunch,
+ MoveDescription_Spore,
+ MoveDescription_Flash,
+ MoveDescription_Psywave,
+ MoveDescription_Splash,
+ MoveDescription_AcidArmor,
+ MoveDescription_Crabhammer,
+ MoveDescription_Explosion,
+ MoveDescription_FurySwipes,
+ MoveDescription_Bonemerang,
+ MoveDescription_Rest,
+ MoveDescription_RockSlide,
+ MoveDescription_HyperFang,
+ MoveDescription_Sharpen,
+ MoveDescription_Conversion,
+ MoveDescription_TriAttack,
+ MoveDescription_SuperFang,
+ MoveDescription_Slash,
+ MoveDescription_Substitute,
+ MoveDescription_Struggle,
+ MoveDescription_Sketch,
+ MoveDescription_TripleKick,
+ MoveDescription_Thief,
+ MoveDescription_SpiderWeb,
+ MoveDescription_MindReader,
+ MoveDescription_Nightmare,
+ MoveDescription_FlameWheel,
+ MoveDescription_Snore,
+ MoveDescription_Curse,
+ MoveDescription_Flail,
+ MoveDescription_Conversion2,
+ MoveDescription_Aeroblast,
+ MoveDescription_CottonSpore,
+ MoveDescription_Reversal,
+ MoveDescription_Spite,
+ MoveDescription_PowderSnow,
+ MoveDescription_Protect,
+ MoveDescription_MachPunch,
+ MoveDescription_ScaryFace,
+ MoveDescription_FaintAttack,
+ MoveDescription_SweetKiss,
+ MoveDescription_BellyDrum,
+ MoveDescription_SludgeBomb,
+ MoveDescription_MudSlap,
+ MoveDescription_Octazooka,
+ MoveDescription_Spikes,
+ MoveDescription_ZapCannon,
+ MoveDescription_Foresight,
+ MoveDescription_DestinyBond,
+ MoveDescription_PerishSong,
+ MoveDescription_IcyWind,
+ MoveDescription_Detect,
+ MoveDescription_BoneRush,
+ MoveDescription_LockOn,
+ MoveDescription_Outrage,
+ MoveDescription_Sandstorm,
+ MoveDescription_GigaDrain,
+ MoveDescription_Endure,
+ MoveDescription_Charm,
+ MoveDescription_Rollout,
+ MoveDescription_FalseSwipe,
+ MoveDescription_Swagger,
+ MoveDescription_MilkDrink,
+ MoveDescription_Spark,
+ MoveDescription_FuryCutter,
+ MoveDescription_SteelWing,
+ MoveDescription_MeanLook,
+ MoveDescription_Attract,
+ MoveDescription_SleepTalk,
+ MoveDescription_HealBell,
+ MoveDescription_Return,
+ MoveDescription_Present,
+ MoveDescription_Frustration,
+ MoveDescription_Safeguard,
+ MoveDescription_PainSplit,
+ MoveDescription_SacredFire,
+ MoveDescription_Magnitude,
+ MoveDescription_DynamicPunch,
+ MoveDescription_Megahorn,
+ MoveDescription_DragonBreath,
+ MoveDescription_BatonPass,
+ MoveDescription_Encore,
+ MoveDescription_Pursuit,
+ MoveDescription_RapidSpin,
+ MoveDescription_SweetScent,
+ MoveDescription_IronTail,
+ MoveDescription_MetalClaw,
+ MoveDescription_VitalThrow,
+ MoveDescription_MorningSun,
+ MoveDescription_Synthesis,
+ MoveDescription_Moonlight,
+ MoveDescription_HiddenPower,
+ MoveDescription_CrossChop,
+ MoveDescription_Twister,
+ MoveDescription_RainDance,
+ MoveDescription_SunnyDay,
+ MoveDescription_Crunch,
+ MoveDescription_MirrorCoat,
+ MoveDescription_PsychUp,
+ MoveDescription_ExtremeSpeed,
+ MoveDescription_AncientPower,
+ MoveDescription_ShadowBall,
+ MoveDescription_FutureSight,
+ MoveDescription_RockSmash,
+ MoveDescription_Whirlpool,
+ MoveDescription_BeatUp,
+ MoveDescription_FakeOut,
+ MoveDescription_Uproar,
+ MoveDescription_Stockpile,
+ MoveDescription_SpitUp,
+ MoveDescription_Swallow,
+ MoveDescription_HeatWave,
+ MoveDescription_Hail,
+ MoveDescription_Torment,
+ MoveDescription_Flatter,
+ MoveDescription_WillOWisp,
+ MoveDescription_Memento,
+ MoveDescription_Facade,
+ MoveDescription_FocusPunch,
+ MoveDescription_SmellingSalt,
+ MoveDescription_FollowMe,
+ MoveDescription_NaturePower,
+ MoveDescription_Charge,
+ MoveDescription_Taunt,
+ MoveDescription_HelpingHand,
+ MoveDescription_Trick,
+ MoveDescription_RolePlay,
+ MoveDescription_Wish,
+ MoveDescription_Assist,
+ MoveDescription_Ingrain,
+ MoveDescription_Superpower,
+ MoveDescription_MagicCoat,
+ MoveDescription_Recycle,
+ MoveDescription_Revenge,
+ MoveDescription_BrickBreak,
+ MoveDescription_Yawn,
+ MoveDescription_KnockOff,
+ MoveDescription_Endeavor,
+ MoveDescription_Eruption,
+ MoveDescription_SkillSwap,
+ MoveDescription_Imprison,
+ MoveDescription_Refresh,
+ MoveDescription_Grudge,
+ MoveDescription_Snatch,
+ MoveDescription_SecretPower,
+ MoveDescription_Dive,
+ MoveDescription_ArmThrust,
+ MoveDescription_Camouflage,
+ MoveDescription_TailGlow,
+ MoveDescription_LusterPurge,
+ MoveDescription_MistBall,
+ MoveDescription_FeatherDance,
+ MoveDescription_TeeterDance,
+ MoveDescription_BlazeKick,
+ MoveDescription_MudSport,
+ MoveDescription_IceBall,
+ MoveDescription_NeedleArm,
+ MoveDescription_SlackOff,
+ MoveDescription_HyperVoice,
+ MoveDescription_PoisonFang,
+ MoveDescription_CrushClaw,
+ MoveDescription_BlastBurn,
+ MoveDescription_HydroCannon,
+ MoveDescription_MeteorMash,
+ MoveDescription_Astonish,
+ MoveDescription_WeatherBall,
+ MoveDescription_Aromatherapy,
+ MoveDescription_FakeTears,
+ MoveDescription_AirCutter,
+ MoveDescription_Overheat,
+ MoveDescription_OdorSleuth,
+ MoveDescription_RockTomb,
+ MoveDescription_SilverWind,
+ MoveDescription_MetalSound,
+ MoveDescription_GrassWhistle,
+ MoveDescription_Tickle,
+ MoveDescription_CosmicPower,
+ MoveDescription_WaterSpout,
+ MoveDescription_SignalBeam,
+ MoveDescription_ShadowPunch,
+ MoveDescription_Extrasensory,
+ MoveDescription_SkyUppercut,
+ MoveDescription_SandTomb,
+ MoveDescription_SheerCold,
+ MoveDescription_MuddyWater,
+ MoveDescription_BulletSeed,
+ MoveDescription_AerialAce,
+ MoveDescription_IcicleSpear,
+ MoveDescription_IronDefense,
+ MoveDescription_Block,
+ MoveDescription_Howl,
+ MoveDescription_DragonClaw,
+ MoveDescription_FrenzyPlant,
+ MoveDescription_BulkUp,
+ MoveDescription_Bounce,
+ MoveDescription_MudShot,
+ MoveDescription_PoisonTail,
+ MoveDescription_Covet,
+ MoveDescription_VoltTackle,
+ MoveDescription_MagicalLeaf,
+ MoveDescription_WaterSport,
+ MoveDescription_CalmMind,
+ MoveDescription_LeafBlade,
+ MoveDescription_DragonDance,
+ MoveDescription_RockBlast,
+ MoveDescription_ShockWave,
+ MoveDescription_WaterPulse,
+ MoveDescription_DoomDesire,
+ MoveDescription_PsychoBoost,
+};
diff --git a/src/data/text/nature_names_de.h b/src/data/text/nature_names_de.h
new file mode 100644
index 000000000..695b0b62c
--- /dev/null
+++ b/src/data/text/nature_names_de.h
@@ -0,0 +1,53 @@
+static const u8 NatureName_Hardy[] = _("ROBUST");
+static const u8 NatureName_Lonely[] = _("SOLO");
+static const u8 NatureName_Brave[] = _("MUTIG");
+static const u8 NatureName_Adamant[] = _("HART");
+static const u8 NatureName_Naughty[] = _("FRECH");
+static const u8 NatureName_Bold[] = _("KÜHN");
+static const u8 NatureName_Docile[] = _("SANFT");
+static const u8 NatureName_Relaxed[] = _("LOCKER");
+static const u8 NatureName_Impish[] = _("PFIFFIG");
+static const u8 NatureName_Lax[] = _("LASCH");
+static const u8 NatureName_Timid[] = _("SCHEU");
+static const u8 NatureName_Hasty[] = _("HASTIG");
+static const u8 NatureName_Serious[] = _("ERNST");
+static const u8 NatureName_Jolly[] = _("FROH");
+static const u8 NatureName_Naive[] = _("NAIV");
+static const u8 NatureName_Modest[] = _("MÄSSIG");
+static const u8 NatureName_Mild[] = _("MILD");
+static const u8 NatureName_Quiet[] = _("RUHIG");
+static const u8 NatureName_Bashful[] = _("ZAGHAFT");
+static const u8 NatureName_Rash[] = _("HITZIG");
+static const u8 NatureName_Calm[] = _("STILL");
+static const u8 NatureName_Gentle[] = _("ZART");
+static const u8 NatureName_Sassy[] = _("FORSCH");
+static const u8 NatureName_Careful[] = _("SACHT");
+static const u8 NatureName_Quirky[] = _("KAUZIG");
+
+const u8 * const gNatureNames[] = {
+ NatureName_Hardy,
+ NatureName_Lonely,
+ NatureName_Brave,
+ NatureName_Adamant,
+ NatureName_Naughty,
+ NatureName_Bold,
+ NatureName_Docile,
+ NatureName_Relaxed,
+ NatureName_Impish,
+ NatureName_Lax,
+ NatureName_Timid,
+ NatureName_Hasty,
+ NatureName_Serious,
+ NatureName_Jolly,
+ NatureName_Naive,
+ NatureName_Modest,
+ NatureName_Mild,
+ NatureName_Quiet,
+ NatureName_Bashful,
+ NatureName_Rash,
+ NatureName_Calm,
+ NatureName_Gentle,
+ NatureName_Sassy,
+ NatureName_Careful,
+ NatureName_Quirky,
+};
diff --git a/src/data/text/nature_names_en.h b/src/data/text/nature_names_en.h
new file mode 100644
index 000000000..305b43690
--- /dev/null
+++ b/src/data/text/nature_names_en.h
@@ -0,0 +1,53 @@
+static const u8 NatureName_Hardy[] = _("HARDY");
+static const u8 NatureName_Lonely[] = _("LONELY");
+static const u8 NatureName_Brave[] = _("BRAVE");
+static const u8 NatureName_Adamant[] = _("ADAMANT");
+static const u8 NatureName_Naughty[] = _("NAUGHTY");
+static const u8 NatureName_Bold[] = _("BOLD");
+static const u8 NatureName_Docile[] = _("DOCILE");
+static const u8 NatureName_Relaxed[] = _("RELAXED");
+static const u8 NatureName_Impish[] = _("IMPISH");
+static const u8 NatureName_Lax[] = _("LAX");
+static const u8 NatureName_Timid[] = _("TIMID");
+static const u8 NatureName_Hasty[] = _("HASTY");
+static const u8 NatureName_Serious[] = _("SERIOUS");
+static const u8 NatureName_Jolly[] = _("JOLLY");
+static const u8 NatureName_Naive[] = _("NAIVE");
+static const u8 NatureName_Modest[] = _("MODEST");
+static const u8 NatureName_Mild[] = _("MILD");
+static const u8 NatureName_Quiet[] = _("QUIET");
+static const u8 NatureName_Bashful[] = _("BASHFUL");
+static const u8 NatureName_Rash[] = _("RASH");
+static const u8 NatureName_Calm[] = _("CALM");
+static const u8 NatureName_Gentle[] = _("GENTLE");
+static const u8 NatureName_Sassy[] = _("SASSY");
+static const u8 NatureName_Careful[] = _("CAREFUL");
+static const u8 NatureName_Quirky[] = _("QUIRKY");
+
+const u8 * const gNatureNames[] = {
+ NatureName_Hardy,
+ NatureName_Lonely,
+ NatureName_Brave,
+ NatureName_Adamant,
+ NatureName_Naughty,
+ NatureName_Bold,
+ NatureName_Docile,
+ NatureName_Relaxed,
+ NatureName_Impish,
+ NatureName_Lax,
+ NatureName_Timid,
+ NatureName_Hasty,
+ NatureName_Serious,
+ NatureName_Jolly,
+ NatureName_Naive,
+ NatureName_Modest,
+ NatureName_Mild,
+ NatureName_Quiet,
+ NatureName_Bashful,
+ NatureName_Rash,
+ NatureName_Calm,
+ NatureName_Gentle,
+ NatureName_Sassy,
+ NatureName_Careful,
+ NatureName_Quirky,
+};
diff --git a/src/engine/trade.c b/src/engine/trade.c
index 729791aff..e09942589 100644
--- a/src/engine/trade.c
+++ b/src/engine/trade.c
@@ -2186,11 +2186,11 @@ static void sub_804997C(void)
{
if (gUnknown_03004824->tradeMenuCursorPosition < PARTY_SIZE)
{
- ShowPokemonSummaryScreen(gPlayerParty, gUnknown_03004824->tradeMenuCursorPosition, gUnknown_03004824->partyCounts[0] - 1, sub_80484F4, 4);
+ ShowPokemonSummaryScreen(gPlayerParty, gUnknown_03004824->tradeMenuCursorPosition, gUnknown_03004824->partyCounts[0] - 1, sub_80484F4, PSS_MODE_NO_MOVE_ORDER_EDIT);
}
else
{
- ShowPokemonSummaryScreen(gEnemyParty, gUnknown_03004824->tradeMenuCursorPosition - 6, gUnknown_03004824->partyCounts[1] - 1, sub_80484F4, 4);
+ ShowPokemonSummaryScreen(gEnemyParty, gUnknown_03004824->tradeMenuCursorPosition - 6, gUnknown_03004824->partyCounts[1] - 1, sub_80484F4, PSS_MODE_NO_MOVE_ORDER_EDIT);
}
}
}
diff --git a/src/field/choose_party.c b/src/field/choose_party.c
index c3845e48b..e16da3a58 100644
--- a/src/field/choose_party.c
+++ b/src/field/choose_party.c
@@ -32,7 +32,6 @@ EWRAM_DATA u8 gSelectedOrderFromParty[3] = {0};
extern u8 sub_806BD58(u8, u8);
extern void PartyMenuPrintMonsLevelOrStatus(void);
extern void sub_806BC3C(u8, u8);
-extern void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, void (*)(void), int);
extern u8 GetMonStatusAndPokerus();
extern void PartyMenuPrintHP();
extern bool8 sub_80F9344(void);
@@ -434,7 +433,7 @@ static void sub_81225D4(u8 taskId)
DestroyTask(taskId);
ewram1B000.unk262 = 1;
- ShowPokemonSummaryScreen(gPlayerParty, r4, gPlayerPartyCount - 1, sub_81225A4, 0);
+ ShowPokemonSummaryScreen(gPlayerParty, r4, gPlayerPartyCount - 1, sub_81225A4, PSS_MODE_NORMAL);
}
}
@@ -884,7 +883,7 @@ static void sub_8123034(u8 taskId)
DestroyTask(taskId);
ewram1B000.unk262 = 1;
- ShowPokemonSummaryScreen(gPlayerParty, r4, gPlayerPartyCount - 1, sub_8123004, 0);
+ ShowPokemonSummaryScreen(gPlayerParty, r4, gPlayerPartyCount - 1, sub_8123004, PSS_MODE_NORMAL);
}
}
diff --git a/src/field/party_menu.c b/src/field/party_menu.c
index a8620570b..bee64fb27 100644
--- a/src/field/party_menu.c
+++ b/src/field/party_menu.c
@@ -4292,7 +4292,7 @@ void sub_806F3FC(u8 taskId)
{
if (!gPaletteFade.active)
{
- sub_809D9F0(gPlayerParty, ewram1C000.unk5, gPlayerPartyCount - 1, sub_808B564, ewram1C000.unk8);
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, ewram1C000.unk5, gPlayerPartyCount - 1, sub_808B564, ewram1C000.unk8);
DestroyTask(taskId);
}
}
diff --git a/src/pokemon/learn_move.c b/src/pokemon/learn_move.c
index 55aac840f..730717965 100644
--- a/src/pokemon/learn_move.c
+++ b/src/pokemon/learn_move.c
@@ -4,8 +4,10 @@
#include "main.h"
#include "menu.h"
#include "menu_cursor.h"
+#include "learn_move.h"
#include "palette.h"
#include "pokemon.h"
+#include "pokemon_summary_screen.h"
#include "overworld.h"
#include "script.h"
#include "songs.h"
@@ -22,26 +24,11 @@ extern u16 gSpecialVar_0x8004;
extern u16 gSpecialVar_0x8005;
extern u8 gTileBuffer[];
-struct ContestMove
-{
- u8 effect;
- u8 contestCategory:3;
- u8 comboStarterId;
- u8 comboMoves[4];
-};
-
-struct ContestEffect
-{
- u8 effectType;
- u8 appeal;
- u8 jam;
-};
-
extern const struct ContestMove gContestMoves[];
extern const struct ContestEffect gContestEffects[];
extern const struct WindowConfig gWindowConfig_81E6CE4;
extern const struct WindowConfig gWindowConfig_81E7240;
-extern const u8 *const gUnknown_083CADD4[];
+extern const u8 *const gContestEffectStrings[];
extern const u8 *const gMoveDescriptions[];
extern const u8 gTypeNames[][7];
extern const u8 *const gUnknown_083CAF70[];
@@ -50,7 +37,6 @@ extern const u8 *const gUnknown_083CAF70[];
extern const u8 deuOtherText_ForgotAndLearned[];
#endif
-extern void sub_809D9F0(struct Pokemon *, u8, u8, void *, u32);
struct LearnMoveStruct
{
@@ -557,7 +543,7 @@ void LearnMoveMain(void)
case 20:
if (!gPaletteFade.active)
{
- sub_809D9F0(gPlayerParty, sLearnMoveStruct->partyMon, gPlayerPartyCount - 1, sub_81327A4, sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]);
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, sLearnMoveStruct->partyMon, gPlayerPartyCount - 1, sub_81327A4, sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]);
sLearnMoveStruct->state = 28;
}
break;
@@ -1039,7 +1025,7 @@ void sub_8133AEC(bool8 contestInfo, int unused)
gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = FALSE;
for (i = 0; i < 3; i++)
PrintMoveInfo(moveId, gUnknown_08402E24[gUnknown_08402E3D[i]]);
- sub_8072AB0(gUnknown_083CADD4[gContestMoves[moveId].effect], 0x58, 0x48, 0x90, 32, 1);
+ sub_8072AB0(gContestEffectStrings[gContestMoves[moveId].effect], 0x58, 0x48, 0x90, 32, 1);
}
else
{
diff --git a/src/pokemon/mon_markings.c b/src/pokemon/mon_markings.c
index 29e8c5127..e330fed65 100644
--- a/src/pokemon/mon_markings.c
+++ b/src/pokemon/mon_markings.c
@@ -45,11 +45,11 @@ extern const union AnimCmd *const gSpriteAnimTable_83E533C[];
static EWRAM_DATA struct PokemonMarkMenu *sMenu = NULL;
-void sub_80F761C(s16, s16, u16, u16);
-void nullsub_65(struct Sprite *);
-void sub_80F78CC(struct Sprite *);
-void sub_80F7908(struct Sprite *);
-struct Sprite *sub_80F7960(u16, u16, u16 *, u16);
+static void sub_80F761C(s16, s16, u16, u16);
+static void nullsub_65(struct Sprite *);
+static void sub_80F78CC(struct Sprite *);
+static void sub_80F7908(struct Sprite *);
+static struct Sprite *sub_80F7960(u16, u16, const u16 *, u16);
void sub_80F727C(struct PokemonMarkMenu *ptr)
{
@@ -335,21 +335,21 @@ void sub_80F7908(struct Sprite *sprite)
sprite->pos1.y = 16 * sMenu->cursorPos + sMenu->cursorBaseY;
}
-struct Sprite *sub_80F7920(u16 tileTag, u16 paletteTag, u16 *palette)
+struct Sprite *sub_80F7920(u16 tileTag, u16 paletteTag, const u16 *palette)
{
if (!palette)
palette = gUnknown_083E49F4;
return sub_80F7960(tileTag, paletteTag, palette, 16);
}
-struct Sprite *sub_80F7940(u16 tileTag, u16 paletteTag, u16 *palette)
+struct Sprite *sub_80F7940(u16 tileTag, u16 paletteTag, const u16 *palette)
{
if (!palette)
palette = gUnknown_083E49F4;
return sub_80F7960(tileTag, paletteTag, palette, 1);
}
-struct Sprite *sub_80F7960(u16 tileTag, u16 paletteTag, u16 *palette, u16 size)
+struct Sprite *sub_80F7960(u16 tileTag, u16 paletteTag, const u16 *palette, u16 size)
{
u8 spriteId;
struct SpriteTemplate sprTemplate;
diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c
index 07d7e5322..ae9fcefea 100644
--- a/src/pokemon/pokemon_menu.c
+++ b/src/pokemon/pokemon_menu.c
@@ -350,7 +350,7 @@ static void sub_8089F44(u8 taskID)
u8 spriteID = gSprites[gTasks[taskID].data[3] >> 8].data[0];
DestroyTask(taskID);
ewram1B000_alt.unk262 = 1;
- ShowPokemonSummaryScreen(gPlayerParty, spriteID, gPlayerPartyCount - 1, sub_8089F14, 0);
+ ShowPokemonSummaryScreen(gPlayerParty, spriteID, gPlayerPartyCount - 1, sub_8089F14, PSS_MODE_NORMAL);
}
}
diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c
index 70b9b7d94..c0f643818 100644
--- a/src/pokemon/pokemon_summary_screen.c
+++ b/src/pokemon/pokemon_summary_screen.c
@@ -1,13 +1,3348 @@
#include "global.h"
-#include "pokemon_summary_screen.h"
+#include "battle.h"
+#include "data2.h"
+#include "decompress.h"
+#include "event_data.h"
+#include "ewram.h"
+#include "item.h"
+#include "items.h"
+#include "learn_move.h"
#include "link.h"
+#include "m4a.h"
+#include "main.h"
#include "menu.h"
+#include "menu_helpers.h"
+#include "overworld.h"
+#include "palette.h"
+#include "party_menu.h"
+#include "pokeball.h"
#include "pokemon.h"
+#include "pokemon_summary_screen.h"
#include "region_map.h"
+#include "songs.h"
+#include "sound.h"
+#include "species.h"
+#include "sprite.h"
#include "string_util.h"
+#include "strings.h"
#include "strings2.h"
+#include "task.h"
#include "tv.h"
-#include "ewram.h"
+#include "unknown_task.h"
+
+static void sub_809FC0C(void);
+static void sub_809FEB8(void);
+static void sub_809F63C(struct Pokemon *);
+static void sub_809F650(struct Pokemon *);
+static void sub_809F664(struct Pokemon *);
+static void sub_809FE6C(struct Pokemon *);
+static void sub_80A0090(struct Pokemon *);
+static void sub_80A015C(struct Pokemon *);
+static void sub_809DE44(void);
+static void sub_809EB40(u8);
+static void sub_809EBC4(void);
+static void sub_809E044(void);
+static void sub_80A1D84(struct Pokemon *);
+static void sub_80A18C4(void);
+static bool8 LoadPokemonSummaryScreenGraphics(void);
+static bool8 MonKnowsMultipleMoves(struct Pokemon *);
+static void PrintSummaryWindowHeaderText(void);
+static void sub_80A1DCC(struct Pokemon *);
+static void sub_809FE80(void);
+static void sub_80A00A4(void);
+static void sub_80A0390(void);
+extern u8 sub_80A1808(struct Pokemon *);
+static void sub_80A1F98(s32, u8, u8, u8, u8, u16, s32);
+static void sub_80A0958(struct Pokemon *);
+static void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *, u8, u8);
+static void PokemonSummaryScreen_PrintEggTrainerMemo(struct Pokemon *, u8, u8);
+static void sub_80A1EF8(const u8 *, u8, u8, u16, s32);
+static void sub_80A1F48(const u8 *, u8, u8, u8, u16);
+static void PrintHeldItemName(u16, u8, u8);
+static void PrintNumRibbons(struct Pokemon *);
+static void DrawExperienceProgressBar(struct Pokemon *, u8, u8);
+static void sub_809E13C(u8 taskId);
+static void sub_80A1950(void);
+static void sub_809DE64(void);
+static void SummaryScreenHandleAButton(u8);
+static void SummaryScreenHandleUpDownInput(u8, s8);
+static bool8 sub_809F7D0(u8);
+static void sub_809F9D0(u8, u8);
+static void sub_809EAC8(u8);
+static void sub_809E534(u8);
+static void sub_809E83C(u8, s8);
+static void sub_80A1B40(u8);
+static void sub_80A2078(int);
+static void sub_809E3FC(u8);
+static void SummaryScreenHandleKeyInput(u8);
+static void sub_80A1B1C(u8);
+static void sub_80A16CC(u8);
+static void sub_80A1A30(u8);
+static void DrawSummaryScreenNavigationDots(void);
+static void sub_80A00F4(u8);
+static void sub_80A029C(struct Pokemon *);
+static void sub_809FBE4(void);
+static void sub_80A1500(u8);
+static void sub_80A1334(u8);
+extern void sub_809F43C(u8);
+extern s8 sub_809F284(s8);
+extern s8 sub_809F3CC(s8);
+static bool8 sub_809F5F8(void);
+static void sub_80A1DE8(struct Pokemon *);
+static u8 sub_809F6B4(struct Pokemon *, u8 *);
+static void DrawPokerusSurvivorDot(struct Pokemon *);
+static void sub_80A12D0(s8);
+static void sub_809FAC8(struct Pokemon *);
+static void SummaryScreenHandleLeftRightInput(u8, s8);
+static void sub_809E8F0();
+static void sub_80A1654(s8, u8);
+static void sub_80A1488(s8, u8);
+static void sub_809FC34(struct Pokemon *);
+static void sub_809FF64(struct Pokemon *);
+static void sub_80A1918(u8, u8);
+static void sub_80A198C(u8, u8, u8, u8);
+static u16 GetMonMove(struct Pokemon *, u8);
+static void sub_80A04CC(u16);
+static void sub_80A057C(u16);
+static void sub_80A0498(u16);
+static void sub_80A046C(u16);
+static void sub_80A20A8(u8);
+static void sub_809F678(struct Pokemon *);
+static void sub_80A1BC0(struct Sprite *sprite);
+static void sub_80A1888(struct Sprite *);
+static void sub_80A0428(struct Pokemon *, u8 *);
+static void sub_80A18E4(u8);
+static u8 *sub_80A1E58(u8 *, u8);
+static void sub_80A0A2C(struct Pokemon *, u8, u8);
+static void sub_80A1FF8(const u8 *, u8, u8, u8);
+
+extern u8 ball_number_to_ball_processing_index(u16);
+extern u8 StorageSystemGetNextMonIndex(struct BoxPokemon *, u8, u8, u8);
+
+extern struct MusicPlayerInfo gMPlay_BGM;
+extern u8 gUnknown_020384F0;
+extern u8 gUnknown_08208238[];
+extern u16 gUnknown_030041B8;
+extern u16 gUnknown_03004280;
+extern u16 gUnknown_030041B4;
+extern u16 gUnknown_030042C0;
+extern u16 gUnknown_03004288;
+extern u16 gUnknown_030041B0;
+extern TaskFunc gUnknown_03005CF0;
+extern struct Sprite *gUnknown_020384F4;
+extern struct SpriteTemplate gUnknown_02024E8C;
+
+extern const u8 gStatusPal_Icons[];
+extern const u8 gStatusGfx_Icons[];
+extern const u8 gMenuSummaryPal[];
+extern const u8 gMenuSummaryGfx[];
+extern const u8 gMoveTypes_Gfx[];
+extern const u8 gMoveTypes_Pal[];
+extern const u8 gStatusScreen_Pal[];
+extern const u8 gStatusScreen_Tilemap[];
+extern const u8 gUnknown_08E74688[];
+extern const u8 gUnknown_08E74E88[];
+extern const u8 gUnknown_08E73508[];
+extern const u8 gStatusScreen_Gfx[];
+extern const u8 gFontDefaultPalette[];
+extern const u8 gUnknownPalette_81E6692[];
+extern const u8 gAbilityNames[][13];
+extern const u8 * const gAbilityDescriptions[];
+extern const u8 * const gContestEffectStrings[];
+extern const struct ContestMove gContestMoves[];
+extern const struct ContestEffect gContestEffects[];
+extern const u16 gUnknown_08E94510[];
+extern const u16 gUnknown_08E94550[];
+extern const u16 gUnknown_08E94590[];
+extern const u8 gUnknown_08E73E88[];
+
+#if ENGLISH
+#include "../data/text/move_descriptions_en.h"
+#include "../data/text/nature_names_en.h"
+#elif GERMAN
+#include "../data/text/move_descriptions_de.h"
+#include "../data/text/nature_names_de.h"
+#endif
+
+static const u8 * const sPageHeaderTexts[] = {
+ gEmptyString_81E72B0,
+ OtherText_PokeInfo,
+ OtherText_PokeSkills,
+ OtherText_BattleMoves,
+ OtherText_ContestMoves,
+ OtherText_Switch,
+ OtherText_Info,
+ gOtherText_CancelNoTerminator,
+};
+
+static const union AffineAnimCmd sUnusedSpriteAffineAnim[] = {
+ AFFINEANIMCMD_FRAME(0xFF00, 0x100, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const sUnsuedSpriteAffineAnimTable[] = {
+ sUnusedSpriteAffineAnim,
+};
+
+static const struct OamData sOamData_83C109C = {
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_83C10A4[] = {
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C10AC[] = {
+ ANIMCMD_FRAME(8, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C10B4[] = {
+ ANIMCMD_FRAME(16, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C10BC[] = {
+ ANIMCMD_FRAME(24, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C10C4[] = {
+ ANIMCMD_FRAME(32, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C10CC[] = {
+ ANIMCMD_FRAME(40, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C10D4[] = {
+ ANIMCMD_FRAME(48, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C10DC[] = {
+ ANIMCMD_FRAME(56, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C10E4[] = {
+ ANIMCMD_FRAME(64, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C10EC[] = {
+ ANIMCMD_FRAME(72, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C10F4[] = {
+ ANIMCMD_FRAME(80, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C10FC[] = {
+ ANIMCMD_FRAME(88, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C1104[] = {
+ ANIMCMD_FRAME(96, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C110C[] = {
+ ANIMCMD_FRAME(104, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C1114[] = {
+ ANIMCMD_FRAME(112, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C111C[] = {
+ ANIMCMD_FRAME(120, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C1124[] = {
+ ANIMCMD_FRAME(128, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C112C[] = {
+ ANIMCMD_FRAME(136, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C1134[] = {
+ ANIMCMD_FRAME(144, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C113C[] = {
+ ANIMCMD_FRAME(152, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C1144[] = {
+ ANIMCMD_FRAME(160, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C114C[] = {
+ ANIMCMD_FRAME(168, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C1154[] = {
+ ANIMCMD_FRAME(176, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sSpriteAnimTable_83C115C[] = {
+ sSpriteAnim_83C10A4,
+ sSpriteAnim_83C10AC,
+ sSpriteAnim_83C10B4,
+ sSpriteAnim_83C10BC,
+ sSpriteAnim_83C10C4,
+ sSpriteAnim_83C10CC,
+ sSpriteAnim_83C10D4,
+ sSpriteAnim_83C10DC,
+ sSpriteAnim_83C10E4,
+ sSpriteAnim_83C10EC,
+ sSpriteAnim_83C10F4,
+ sSpriteAnim_83C10FC,
+ sSpriteAnim_83C1104,
+ sSpriteAnim_83C110C,
+ sSpriteAnim_83C1114,
+ sSpriteAnim_83C111C,
+ sSpriteAnim_83C1124,
+ sSpriteAnim_83C112C,
+ sSpriteAnim_83C1134,
+ sSpriteAnim_83C113C,
+ sSpriteAnim_83C1144,
+ sSpriteAnim_83C114C,
+ sSpriteAnim_83C1154,
+};
+
+static const struct CompressedSpriteSheet sUnknown_083C11B8 = { gMoveTypes_Gfx, 0x1700, 30002 };
+
+static const struct SpriteTemplate sSpriteTemplate_83C11C0 = {
+ .tileTag = 30002,
+ .paletteTag = 30002,
+ .oam = &sOamData_83C109C,
+ .anims = sSpriteAnimTable_83C115C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const u8 sUnknown_PaletteNums[] = { 0xD, 0xD, 0xE, 0xE, 0xD, 0xD, 0xF, 0xE, 0xD, 0xF, 0xD, 0xE, 0xF, 0xD, 0xE, 0xE, 0xF, 0xD, 0xD, 0xE, 0xE, 0xF, 0xD };
+
+static const struct OamData sOamData_83C11F0 = {
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_83C11F8[] = {
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C1200[] = {
+ ANIMCMD_FRAME(4, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C1208[] = {
+ ANIMCMD_FRAME(8, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C1210[] = {
+ ANIMCMD_FRAME(12, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C1218[] = {
+ ANIMCMD_FRAME(16, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C1220[] = {
+ ANIMCMD_FRAME(16, 0, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C1228[] = {
+ ANIMCMD_FRAME(20, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C1230[] = {
+ ANIMCMD_FRAME(24, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C1238[] = {
+ ANIMCMD_FRAME(24, 0, .hFlip = TRUE),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C1240[] = {
+ ANIMCMD_FRAME(28, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sSpriteAnimTable_83C1248[] = {
+ sSpriteAnim_83C11F8,
+ sSpriteAnim_83C1200,
+ sSpriteAnim_83C1208,
+ sSpriteAnim_83C1210,
+ sSpriteAnim_83C1218,
+ sSpriteAnim_83C1220,
+ sSpriteAnim_83C1228,
+ sSpriteAnim_83C1230,
+ sSpriteAnim_83C1238,
+ sSpriteAnim_83C1240,
+};
+
+static const struct CompressedSpriteSheet sUnknown_083C1270 = { gMenuSummaryGfx, 0x400, 30000 };
+static const struct CompressedSpritePalette sUnknown_083C1278 = { gMenuSummaryPal, 30000 };
+
+static const struct SpriteTemplate sSpriteTemplate_83C1280 = {
+ .tileTag = 30000,
+ .paletteTag = 30000,
+ .oam = &sOamData_83C11F0,
+ .anims = sSpriteAnimTable_83C1248,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const struct OamData sOamData_83C1298 = {
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 3,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_83C12A0[] = {
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C12A8[] = {
+ ANIMCMD_FRAME(4, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C12B0[] = {
+ ANIMCMD_FRAME(8, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C12B8[] = {
+ ANIMCMD_FRAME(12, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C12C0[] = {
+ ANIMCMD_FRAME(16, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C12C8[] = {
+ ANIMCMD_FRAME(20, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_83C12D0[] = {
+ ANIMCMD_FRAME(24, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sSpriteAnimTable_83C12D8[] = {
+ sSpriteAnim_83C12A0,
+ sSpriteAnim_83C12A8,
+ sSpriteAnim_83C12B0,
+ sSpriteAnim_83C12B8,
+ sSpriteAnim_83C12C0,
+ sSpriteAnim_83C12C8,
+ sSpriteAnim_83C12D0,
+};
+
+static const struct CompressedSpriteSheet sUnknown_083C12F4 = { gStatusGfx_Icons, 0x380, 30001 };
+static const struct CompressedSpritePalette sUnknown_083C12FC = { gStatusPal_Icons, 30001 };
+
+static const struct SpriteTemplate sSpriteTemplate_83C1304 = {
+ .tileTag = 30001,
+ .paletteTag = 30001,
+ .oam = &sOamData_83C1298,
+ .anims = sSpriteAnimTable_83C12D8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const u16 sSummaryScreenMonMarkingsPalette[] = INCBIN_U16("graphics/summary_screen/mon_markings.gbapal");
+
+#if ENGLISH
+static const u16 gSummaryScreenTextTiles[] = INCBIN_U16("graphics/summary_screen/text.4bpp");
+#elif GERMAN
+extern const u16 gSummaryScreenTextTiles[];
+#endif
+
+static const u16 sSummaryScreenButtonTiles[] = INCBIN_U16("graphics/summary_screen/buttons.4bpp");
+
+static const u16 sUnknown_083C157C[] = { RGB(26, 26, 23) };
+static const u16 sUnknown_083C157E[] = { RGB(30, 30, 27) };
+
+static void (*const sUnknown_083C1580[])(void) = {
+ sub_809FC0C,
+ sub_809FEB8,
+};
+
+static void (*const sUnknown_083C1588[])(struct Pokemon *) = {
+ sub_809F63C,
+ sub_809F650,
+ sub_809F664,
+ sub_809F664,
+};
+
+static void (*const sUnknown_083C1598[])(struct Pokemon *) = {
+ sub_809FE6C,
+ sub_80A0090,
+ sub_80A015C,
+ sub_80A015C,
+};
+
+static const u8 sDoubleBattlePartyOrder[] = { 0, 2, 3, 1, 4, 5 };
+
+static const u8 sUnknown_083C15AE[] = _("{STR_VAR_1}{CLEAR_TO 64}");
+static const u8 sUnknown_083C15B4[] = _("{STR_VAR_1}{CLEAR_TO 72}");
+
+asm(".align 2"); // TODO: this array is probably not correctly-typed
+static const u8 sUnknown_083C15BC[] = {
+ 9, 1, 0, 2,
+ 10, 3, 0, 4,
+ 8, 5, 0, 6,
+ 11, 7, 0, 8,
+ 14, 9, 0, 10,
+ 12, 11, 0, 12,
+ 13, 13, 0, 14,
+ -1, 15, 0, 10,
+};
+
+
+void sub_809D844(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void sub_809D85C(void)
+{
+ REG_BG1HOFS = gUnknown_030042C0;
+ REG_BG1VOFS = gUnknown_030041B4;
+ REG_BG2HOFS = gUnknown_03004288;
+ REG_BG2VOFS = gUnknown_03004280;
+ REG_BG3HOFS = gUnknown_030041B0;
+ REG_BG3VOFS = gUnknown_030041B8;
+
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void ShowPokemonSummaryScreen(struct Pokemon *party, u8 monIndex, u8 maxMonIndex, MainCallback callback, u8 mode)
+{
+ gPaletteFade.bufferTransferDisabled = 1;
+
+ pssData.monList.partyMons = party;
+ pssData.mode = mode;
+ pssData.monIndex = monIndex;
+ pssData.maxMonIndex = maxMonIndex;
+ pssData.callback = callback;
+ pssData.loadGfxState = 0;
+ pssData.selectedMoveIndex = 4;
+ pssData.moveToLearn = 0;
+ pssData.bgToggle = 0;
+ pssData.disableMoveOrderEditing = FALSE;
+
+ if (mode >= PSS_MODE_PC_NORMAL)
+ {
+ pssData.usingPC = TRUE;
+ }
+ else
+ {
+ pssData.usingPC = FALSE;
+ }
+
+ switch (mode)
+ {
+ case PSS_MODE_NORMAL:
+ case PSS_MODE_PC_NORMAL:
+ pssData.firstPage = PSS_PAGE_INFO;
+ pssData.lastPage = PSS_PAGE_CONTEST_MOVES;
+ pssData.unk77 = 0;
+ pssData.unk78 = 0;
+ pssData.headerTextId = 1;
+ pssData.headerActionTextId = 7;
+ break;
+ case PSS_MODE_NO_MOVE_ORDER_EDIT:
+ pssData.firstPage = PSS_PAGE_INFO;
+ pssData.lastPage = PSS_PAGE_CONTEST_MOVES;
+ pssData.unk77 = 0;
+ pssData.unk78 = 0;
+ pssData.headerTextId = 1;
+ pssData.headerActionTextId = 7;
+ pssData.disableMoveOrderEditing = TRUE;
+ break;
+ case PSS_MODE_SELECT_MOVE:
+ pssData.firstPage = PSS_PAGE_BATTLE_MOVES;
+ pssData.lastPage = PSS_PAGE_CONTEST_MOVES;
+ pssData.unk77 = 1;
+ pssData.unk78 = 1;
+ pssData.headerTextId = 3;
+ pssData.headerActionTextId = 0;
+ pssData.selectedMoveIndex = 0;
+ break;
+ case PSS_MODE_MOVES_ONLY:
+ case PSS_MODE_PC_MOVES_ONLY:
+ pssData.firstPage = PSS_PAGE_BATTLE_MOVES;
+ pssData.lastPage = PSS_PAGE_CONTEST_MOVES;
+ pssData.unk77 = 1;
+ pssData.unk78 = 1;
+ break;
+ }
+
+ pssData.page = pssData.firstPage;
+ SetMainCallback2(sub_809DE44);
+}
+
+void ShowSelectMovePokemonSummaryScreen(struct Pokemon *party, u8 monIndex, u8 maxMonIndex, MainCallback callback, u16 move)
+{
+ ShowPokemonSummaryScreen(party, monIndex, maxMonIndex, callback, PSS_MODE_SELECT_MOVE);
+ pssData.moveToLearn = move;
+}
+
+void sub_809DA1C(void)
+{
+ switch (pssData.mode)
+ {
+ case PSS_MODE_NORMAL:
+ case PSS_MODE_PC_NORMAL:
+ pssData.inputHandlingTaskId = CreateTask(SummaryScreenHandleKeyInput, 0);
+ break;
+ case PSS_MODE_NO_MOVE_ORDER_EDIT:
+ pssData.inputHandlingTaskId = CreateTask(SummaryScreenHandleKeyInput, 0);
+ break;
+ case PSS_MODE_SELECT_MOVE:
+ case PSS_MODE_UNKNOWN:
+ pssData.inputHandlingTaskId = CreateTask(sub_809EB40, 0);
+ break;
+ case PSS_MODE_MOVES_ONLY:
+ case PSS_MODE_PC_MOVES_ONLY:
+ pssData.inputHandlingTaskId = CreateTask(sub_809E3FC, 0);
+ break;
+ }
+}
+
+bool8 sub_809DA84(void)
+{
+ const u16 *src;
+ void *dest;
+
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ ResetSpriteData();
+ gMain.state++;
+ break;
+ case 1:
+ remove_some_task();
+ gMain.state++;
+ break;
+ case 2:
+ FreeAllSpritePalettes();
+ gMain.state++;
+ break;
+ case 3:
+ dest = (void *)VRAM;
+ DmaClearLarge(3, dest, 0x10000, 0x1000, 32);
+ gMain.state++;
+ break;
+ case 4:
+ sub_809DE64();
+ gMain.state++;
+ break;
+ case 5:
+ SetUpWindowConfig(&gWindowConfig_81E6E6C);
+ gMain.state++;
+ break;
+ case 6:
+ MultistepInitMenuWindowBegin(&gWindowConfig_81E6E6C);
+ gMain.state++;
+ break;
+ case 7:
+ if (MultistepInitMenuWindowContinue())
+ {
+ gMain.state++;
+ }
+ break;
+ case 8:
+ sub_809DA1C();
+ gMain.state++;
+ break;
+ case 9:
+ src = gSummaryScreenTextTiles;
+ dest = (void *)VRAM + 0xD000;
+ DmaCopy16(3, src, dest, 320);
+
+ src = sSummaryScreenButtonTiles;
+ dest = (void *)VRAM + 0xD140;
+ DmaCopy16(3, src, dest, 256);
+
+ pssData.loadGfxState = 0;
+ gMain.state++;
+ break;
+ case 10:
+ if (LoadPokemonSummaryScreenGraphics())
+ {
+ pssData.loadGfxState = 0;
+ gMain.state++;
+ }
+ break;
+ case 11:
+ sub_80A18C4();
+ gMain.state++;
+ break;
+ case 12:
+ sub_809F678(&pssData.loadedMon);
+ if (!GetMonStatusAndPokerus(&pssData.loadedMon))
+ {
+ sub_80A12D0(0);
+ }
+ else
+ {
+ sub_80A12D0(10);
+ }
+
+ DrawPokerusSurvivorDot(&pssData.loadedMon);
+ gMain.state++;
+ break;
+ case 13:
+ sub_80A1950();
+ sub_80A1D84(&pssData.loadedMon);
+ gMain.state++;
+ break;
+ case 14:
+ sub_80A1DE8(&pssData.loadedMon);
+ pssData.loadGfxState = 0;
+ gMain.state++;
+ break;
+ case 15:
+ if ((pssData.monSpriteId = sub_809F6B4(&pssData.loadedMon, &pssData.loadGfxState)) != 0xFF)
+ {
+ pssData.loadGfxState = 0;
+ gMain.state++;
+ }
+ break;
+ case 16:
+ sub_809E044();
+ DrawSummaryScreenNavigationDots();
+ gMain.state++;
+ break;
+ case 17:
+ if (pssData.page <= PSS_PAGE_SKILLS)
+ {
+ sUnknown_083C1580[pssData.page]();
+ }
+
+ gMain.state++;
+ break;
+ case 18:
+ sub_809FAC8(&pssData.loadedMon);
+ gMain.state++;
+ break;
+ case 19:
+ sUnknown_083C1598[pssData.page](&pssData.loadedMon);
+ gMain.state++;
+ break;
+ case 20:
+ if (GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG))
+ {
+ gUnknown_030041B0 = 256;
+ }
+ else
+ {
+ gUnknown_030041B0 = 0;
+ }
+
+ gMain.state++;
+ break;
+ case 21:
+ sub_809EBC4();
+ if (pssData.selectedMoveIndex != 0)
+ {
+ sub_80A1488(0, 0);
+ sub_80A1654(0, 0);
+ }
+ else
+ {
+ sub_80A1488(10, 0);
+ sub_80A1654(10, 0);
+ }
+
+ PrintSummaryWindowHeaderText();
+ gMain.state++;
+ break;
+ case 22:
+ if (sub_8055870() != TRUE)
+ {
+ gMain.state++;
+ }
+ break;
+ default:
+ SetVBlankCallback(sub_809D85C);
+ BeginHardwarePaletteFade(0xFF, 0, 16, 0, 1);
+ SetMainCallback2(sub_809D844);
+ gPaletteFade.bufferTransferDisabled = 0;
+ return TRUE;
+ break;
+ }
+
+ return FALSE;
+}
+
+static void sub_809DE44(void)
+{
+ while (sub_809DA84() != TRUE && sub_80F9344() != TRUE);
+}
+
+static void sub_809DE64(void)
+{
+ REG_BG0CNT = 0x1E08;
+ REG_BG1CNT = 0x4801;
+ REG_BG2CNT = 0x4A02;
+ REG_BG3CNT = 0x5C03;
+
+ gUnknown_030042C0 = 0;
+ gUnknown_030041B4 = 0;
+ gUnknown_03004288 = 0;
+ gUnknown_03004280 = 0;
+ gUnknown_030041B0 = 0;
+ gUnknown_030041B8 = 0;
+
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+
+ REG_BLDCNT = 0;
+ REG_DISPCNT = 0x1F40;
+}
+
+static bool8 LoadPokemonSummaryScreenGraphics(void)
+{
+ switch (pssData.loadGfxState)
+ {
+ case 0:
+ LZDecompressVram(gStatusScreen_Gfx, (void *)VRAM + 0);
+ break;
+ case 1:
+ CpuSet(gUnknown_08E73508, (void *)VRAM + 0xE000, 0x400);
+ break;
+ case 2:
+ LZDecompressVram(gUnknown_08E74E88, (void *)VRAM + 0xE800);
+ break;
+ case 3:
+ LZDecompressVram(gStatusScreen_Tilemap, (void *)VRAM + 0x4800);
+ break;
+ case 4:
+ CpuSet(gUnknown_08E73E88, (void *)VRAM + 0x5800, 0x400);
+ break;
+ case 5:
+ CpuSet(gUnknown_08E74688, (void *)VRAM + 0x6800, 0x400);
+ break;
+ case 6:
+ LoadCompressedPalette(gStatusScreen_Pal, 0, 160);
+ break;
+ case 7:
+ LoadCompressedObjectPic(&sUnknown_083C11B8);
+ break;
+ case 8:
+ LoadCompressedObjectPic(&sUnknown_083C1270);
+ break;
+ case 9:
+ LoadCompressedObjectPic(&sUnknown_083C12F4);
+ break;
+ case 10:
+ LoadCompressedObjectPalette(&sUnknown_083C12FC);
+ break;
+ case 11:
+ LoadCompressedObjectPalette(&sUnknown_083C1278);
+ break;
+ case 12:
+ LoadCompressedPalette(gMoveTypes_Pal, 464, 96);
+ pssData.loadGfxState = 0;
+ return TRUE;
+ }
+
+ pssData.loadGfxState++;
+ return FALSE;
+}
+
+static void sub_809E044(void)
+{
+ LoadPalette(&gUnknownPalette_81E6692[28], 129, 2);
+ LoadPalette(&gUnknownPalette_81E6692[30], 136, 2);
+ LoadPalette(&gUnknownPalette_81E6692[28], 143, 2);
+ LoadPalette(&gUnknownPalette_81E6692[30], 137, 2);
+ LoadPalette(&gUnknownPalette_81E6692[12], 209, 4);
+ LoadPalette(&gUnknownPalette_81E6692[20], 211, 4);
+ LoadPalette(&gUnknownPalette_81E6692[28], 213, 4);
+ LoadPalette(&gUnknownPalette_81E6692[12], 215, 4);
+ LoadPalette(&gUnknownPalette_81E6692[8], 217, 4);
+ LoadPalette(&gUnknownPalette_81E6692[16], 219, 4);
+ LoadPalette(&gUnknownPalette_81E6692[4], 221, 2);
+ LoadPalette(&gUnknownPalette_81E6692[6], 222, 2);
+ LoadPalette(&gUnknownPalette_81E6692[2], 223, 2);
+ LoadPalette(gFontDefaultPalette, 240, 32);
+ LoadPalette(&gUnknownPalette_81E6692[6], 249, 2);
+}
+
+static void SummaryScreenExit(u8 taskId)
+{
+ PlaySE(SE_SELECT);
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gTasks[taskId].func = sub_809E13C;
+}
+
+static void sub_809E13C(u8 taskId)
+{
+ if (sub_8055870() != TRUE && !gPaletteFade.active)
+ {
+ gUnknown_020384F0 = pssData.monIndex;
+
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ StopCryAndClearCrySongs();
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100);
+ SetMainCallback2(pssData.callback);
+ DestroyTask(taskId);
+ }
+}
+
+static void SummaryScreenHandleKeyInput(u8 taskId)
+{
+ if (gPaletteFade.active)
+ return;
+
+ if (gMain.newKeys & DPAD_UP)
+ {
+ SummaryScreenHandleUpDownInput(taskId, -1);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ SummaryScreenHandleUpDownInput(taskId, 1);
+ }
+ else if ((gMain.newKeys & DPAD_LEFT) || sub_80F9284() == 1)
+ {
+ SummaryScreenHandleLeftRightInput(taskId, -1);
+ }
+ else if ((gMain.newKeys & DPAD_RIGHT) || sub_80F9284() == 2)
+ {
+ SummaryScreenHandleLeftRightInput(taskId, 1);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ if (pssData.page >= PSS_PAGE_BATTLE_MOVES)
+ {
+ SummaryScreenHandleAButton(taskId);
+ }
+
+ if (pssData.page == PSS_PAGE_INFO)
+ {
+ SummaryScreenExit(taskId);
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ SummaryScreenExit(taskId);
+ }
+}
+
+static void sub_809E260(u8 taskId)
+{
+ if (gPaletteFade.active)
+ return;
+
+ if (gMain.newKeys & DPAD_UP)
+ {
+ gTasks[taskId].data[0] = 4;
+ sub_809E8F0(taskId, -1, &pssData.selectedMoveIndex);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ gTasks[taskId].data[0] = 4;
+ sub_809E8F0(taskId, 1, &pssData.selectedMoveIndex);
+ }
+ else if ((gMain.newKeys & DPAD_LEFT) || sub_80F9284() == 1)
+ {
+ if (pssData.page == PSS_PAGE_CONTEST_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0))
+ {
+ MenuZeroFillWindowRect(0, 14, 9, 18);
+ }
+
+ SummaryScreenHandleLeftRightInput(taskId, -1);
+ }
+ else if ((gMain.newKeys & DPAD_RIGHT) || sub_80F9284() == 2)
+ {
+ if (pssData.page != pssData.lastPage)
+ {
+ if (pssData.page == PSS_PAGE_BATTLE_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0))
+ {
+ MenuZeroFillWindowRect(0, 14, 9, 18);
+ }
+
+ SummaryScreenHandleLeftRightInput(taskId, 1);
+ }
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ if (sub_809F7D0(taskId) == TRUE || pssData.selectedMoveIndex == 4)
+ {
+ pssData.switchMoveIndex = pssData.selectedMoveIndex;
+ gSpecialVar_0x8005 = pssData.switchMoveIndex;
+ SummaryScreenExit(taskId);
+ }
+ else
+ {
+ PlaySE(SE_HAZURE);
+ sub_809F9D0(taskId, pssData.selectedMoveIndex);
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ pssData.switchMoveIndex = 4;
+ gSpecialVar_0x8005 = 4;
+ SummaryScreenExit(taskId);
+ }
+}
+
+static void sub_809E3FC(u8 taskId)
+{
+ if (gPaletteFade.active)
+ return;
+
+ if (gMain.newKeys & DPAD_UP)
+ {
+ gTasks[taskId].data[0] = 4;
+ sub_809E8F0(taskId, -1, &pssData.selectedMoveIndex);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ gTasks[taskId].data[0] = 4;
+ sub_809E8F0(taskId, 1, &pssData.selectedMoveIndex);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ if (pssData.selectedMoveIndex != 4 && !pssData.disableMoveOrderEditing)
+ {
+ if (!MonKnowsMultipleMoves(&pssData.loadedMon))
+ {
+ PlaySE(SE_HAZURE);
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+
+ pssData.switchMoveIndex = pssData.selectedMoveIndex;
+ sub_80A1B40(1);
+ sub_80A1A30(19);
+
+ gTasks[taskId].func = sub_809E534;
+ }
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ sub_809EAC8(taskId);
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_809EAC8(taskId);
+ }
+
+}
+
+static bool8 MonKnowsMultipleMoves(struct Pokemon *mon)
+{
+ u8 i;
+
+ for (i = 1; i < 4; i++)
+ {
+ if (GetMonMove(mon, i))
+ {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static void sub_809E534(u8 taskId)
+{
+ if (gMain.newKeys & DPAD_UP)
+ {
+ gTasks[taskId].data[0] = 3;
+ sub_809E8F0(taskId, -1, &pssData.switchMoveIndex);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ gTasks[taskId].data[0] = 3;
+ sub_809E8F0(taskId, 1, &pssData.switchMoveIndex);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ sub_809E83C(taskId, 1);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ sub_809E83C(taskId, -1);
+ }
+}
+
+static void sub_809E5C4(void)
+{
+ struct Pokemon *party = pssData.monList.partyMons;
+ struct Pokemon *pkmn = &party[pssData.monIndex];
+ u8 moveIndex1 = pssData.selectedMoveIndex;
+ u8 moveIndex2 = pssData.switchMoveIndex;
+
+ u16 move1 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex1);
+ u16 move2 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex2);
+ u8 move1pp = GetMonData(pkmn, MON_DATA_PP1 + moveIndex1);
+ u8 move2pp = GetMonData(pkmn, MON_DATA_PP1 + moveIndex2);
+ u8 ppBonuses = GetMonData(pkmn, MON_DATA_PP_BONUSES);
+
+ // Calculate PP bonuses
+ u8 r9 = gUnknown_08208238[moveIndex1];
+ u8 r2 = (ppBonuses & r9) >> (moveIndex1 * 2);
+ u8 r3 = gUnknown_08208238[moveIndex2];
+ u8 r1 = (ppBonuses & r3) >> (moveIndex2 * 2);
+ ppBonuses &= ~r9;
+ ppBonuses &= ~r3;
+ ppBonuses |= (r2 << (moveIndex2 * 2)) + (r1 << (moveIndex1 * 2));
+
+ // Swap the moves
+ SetMonData(pkmn, MON_DATA_MOVE1 + moveIndex1, &move2);
+ SetMonData(pkmn, MON_DATA_MOVE1 + moveIndex2, &move1);
+ SetMonData(pkmn, MON_DATA_PP1 + moveIndex1, &move2pp);
+ SetMonData(pkmn, MON_DATA_PP1 + moveIndex2, &move1pp);
+ SetMonData(pkmn, MON_DATA_PP_BONUSES, &ppBonuses);
+}
+
+static void sub_809E6D8(void)
+{
+ struct BoxPokemon *boxMons = pssData.monList.boxMons;
+ struct BoxPokemon *pkmn = &boxMons[pssData.monIndex];
+ u8 moveIndex1 = pssData.selectedMoveIndex;
+ u8 moveIndex2 = pssData.switchMoveIndex;
+
+ u16 move1 = GetBoxMonData(pkmn, MON_DATA_MOVE1 + moveIndex1);
+ u16 move2 = GetBoxMonData(pkmn, MON_DATA_MOVE1 + moveIndex2);
+ u8 move1pp = GetBoxMonData(pkmn, MON_DATA_PP1 + moveIndex1);
+ u8 move2pp = GetBoxMonData(pkmn, MON_DATA_PP1 + moveIndex2);
+ u8 ppBonuses = GetBoxMonData(pkmn, MON_DATA_PP_BONUSES);
+
+ // Calculate PP bonuses
+ u8 r9 = gUnknown_08208238[moveIndex1];
+ u8 r2 = (ppBonuses & r9) >> (moveIndex1 * 2);
+ u8 r3 = gUnknown_08208238[moveIndex2];
+ u8 r1 = (ppBonuses & r3) >> (moveIndex2 * 2);
+ ppBonuses &= ~r9;
+ ppBonuses &= ~r3;
+ ppBonuses |= (r2 << (moveIndex2 * 2)) + (r1 << (moveIndex1 * 2));
+
+ // Swap the moves
+ SetBoxMonData(pkmn, MON_DATA_MOVE1 + moveIndex1, &move2);
+ SetBoxMonData(pkmn, MON_DATA_MOVE1 + moveIndex2, &move1);
+ SetBoxMonData(pkmn, MON_DATA_PP1 + moveIndex1, &move2pp);
+ SetBoxMonData(pkmn, MON_DATA_PP1 + moveIndex2, &move1pp);
+ SetBoxMonData(pkmn, MON_DATA_PP_BONUSES, &ppBonuses);
+}
+
+void sub_809E7F0(u8 taskId)
+{
+ if (sub_809F5F8())
+ {
+ pssData.loadGfxState = 0;
+ sub_80A0428(&pssData.loadedMon, &pssData.selectedMoveIndex);
+ gTasks[taskId].func = sub_809E3FC;
+ sub_80A2078(taskId);
+ }
+}
+
+static void sub_809E83C(u8 taskId, s8 b)
+{
+ PlaySE(SE_SELECT);
+
+ sub_80A1B1C(19);
+ sub_80A1B40(0);
+
+ if (b == 1)
+ {
+ if (pssData.selectedMoveIndex != pssData.switchMoveIndex)
+ {
+ if (pssData.usingPC == FALSE)
+ {
+ sub_809E5C4();
+ }
+ else
+ {
+ sub_809E6D8();
+ }
+
+ pssData.selectedMoveIndex = pssData.switchMoveIndex;
+ sub_809F678(&pssData.loadedMon);
+ pssData.loadGfxState = 1;
+
+ gTasks[taskId].func = sub_809E7F0;
+ return;
+ }
+ }
+ else
+ {
+ sub_80A0428(&pssData.loadedMon, &pssData.selectedMoveIndex);
+ }
+
+ gTasks[taskId].func = sub_809E3FC;
+ sub_80A2078(taskId);
+}
+
+__attribute__((naked))
+static void sub_809E8F0(/*u8 taskId, s8 direction, u8 *c*/)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x8\n\
+ adds r4, r1, 0\n\
+ mov r9, r2\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ movs r0, 0x1\n\
+ str r0, [sp]\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ mov r1, r9\n\
+ ldrb r6, [r1]\n\
+ ldr r1, _0809E944 @ =gTasks\n\
+ mov r2, r8\n\
+ lsls r0, r2, 2\n\
+ add r0, r8\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x8]\n\
+ movs r2, 0\n\
+ lsls r4, 24\n\
+ asrs r4, 24\n\
+ mov r10, r4\n\
+ lsls r7, r0, 24\n\
+_0809E930:\n\
+ lsls r0, r6, 24\n\
+ asrs r0, 24\n\
+ add r0, r10\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ asrs r1, r0, 24\n\
+ cmp r0, r7\n\
+ ble _0809E948\n\
+ movs r6, 0\n\
+ b _0809E94E\n\
+ .align 2, 0\n\
+_0809E944: .4byte gTasks\n\
+_0809E948:\n\
+ cmp r1, 0\n\
+ bge _0809E94E\n\
+ lsrs r6, r7, 24\n\
+_0809E94E:\n\
+ lsls r4, r6, 24\n\
+ lsrs r1, r4, 24\n\
+ ldr r0, _0809EA10 @ =gSharedMem + 0x18010\n\
+ str r2, [sp, 0x4]\n\
+ bl GetMonMove\n\
+ lsls r0, 16\n\
+ adds r5, r4, 0\n\
+ ldr r2, [sp, 0x4]\n\
+ cmp r0, 0\n\
+ bne _0809E97A\n\
+ asrs r0, r5, 24\n\
+ cmp r0, 0x4\n\
+ beq _0809E97A\n\
+ lsls r0, r2, 24\n\
+ movs r3, 0x80\n\
+ lsls r3, 17\n\
+ adds r0, r3\n\
+ lsrs r2, r0, 24\n\
+ asrs r0, 24\n\
+ cmp r0, 0x3\n\
+ ble _0809E930\n\
+_0809E97A:\n\
+ mov r1, r9\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x4\n\
+ bne _0809E996\n\
+ asrs r0, r5, 24\n\
+ cmp r0, 0x4\n\
+ beq _0809E996\n\
+ ldr r0, _0809EA14 @ =gSharedMem + 0x18000\n\
+ adds r0, 0x7C\n\
+ ldrh r0, [r0]\n\
+ mov r2, r8\n\
+ lsls r7, r2, 2\n\
+ cmp r0, 0\n\
+ beq _0809E9AC\n\
+_0809E996:\n\
+ ldr r2, _0809EA18 @ =gTasks\n\
+ mov r3, r8\n\
+ lsls r1, r3, 2\n\
+ adds r0, r1, r3\n\
+ lsls r0, 3\n\
+ adds r0, r2\n\
+ movs r2, 0x22\n\
+ ldrsh r0, [r0, r2]\n\
+ adds r7, r1, 0\n\
+ cmp r0, 0x1\n\
+ bne _0809E9D0\n\
+_0809E9AC:\n\
+ lsrs r4, r5, 24\n\
+ movs r0, 0x2\n\
+ adds r1, r4, 0\n\
+ bl sub_80A1488\n\
+ movs r0, 0x2\n\
+ adds r1, r4, 0\n\
+ bl sub_80A1654\n\
+ ldr r1, _0809EA18 @ =gTasks\n\
+ mov r3, r8\n\
+ adds r0, r7, r3\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ movs r1, 0\n\
+ strh r1, [r0, 0x22]\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+_0809E9D0:\n\
+ mov r1, r9\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x4\n\
+ beq _0809E9FE\n\
+ asrs r0, r5, 24\n\
+ cmp r0, 0x4\n\
+ bne _0809E9FE\n\
+ ldr r0, _0809EA14 @ =gSharedMem + 0x18000\n\
+ adds r0, 0x7C\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _0809E9FE\n\
+ movs r4, 0x2\n\
+ negs r4, r4\n\
+ lsrs r5, 24\n\
+ adds r0, r4, 0\n\
+ adds r1, r5, 0\n\
+ bl sub_80A1488\n\
+ adds r0, r4, 0\n\
+ adds r1, r5, 0\n\
+ bl sub_80A1654\n\
+_0809E9FE:\n\
+ mov r2, r9\n\
+ strb r6, [r2]\n\
+ ldr r0, _0809EA1C @ =gSharedMem + 0x18079\n\
+ cmp r9, r0\n\
+ bne _0809EA20\n\
+ movs r0, 0\n\
+ bl sub_80A1C30\n\
+ b _0809EA26\n\
+ .align 2, 0\n\
+_0809EA10: .4byte gSharedMem + 0x18010\n\
+_0809EA14: .4byte gSharedMem + 0x18000\n\
+_0809EA18: .4byte gTasks\n\
+_0809EA1C: .4byte gSharedMem + 0x18079\n\
+_0809EA20:\n\
+ movs r0, 0x1\n\
+ bl sub_80A1C30\n\
+_0809EA26:\n\
+ ldr r3, [sp]\n\
+ cmp r3, 0\n\
+ beq _0809EA34\n\
+ ldr r0, _0809EA4C @ =gSharedMem + 0x18010\n\
+ mov r1, r9\n\
+ bl sub_80A0428\n\
+_0809EA34:\n\
+ mov r0, r8\n\
+ bl sub_80A2078\n\
+ add sp, 0x8\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0809EA4C: .4byte gSharedMem + 0x18010\n\
+ .syntax divided\n");
+}
+
+static void SummaryScreenHandleAButton(u8 taskId)
+{
+ PlaySE(SE_SELECT);
+
+ pssData.selectedMoveIndex = 0;
+ sub_80A1488(2, 0);
+ sub_80A1654(2, 0);
+
+ if (!pssData.disableMoveOrderEditing)
+ {
+ pssData.headerActionTextId = 5;
+ PrintSummaryWindowHeaderText();
+ }
+
+ sub_80A16CC(0);
+ sub_80A029C(&pssData.loadedMon);
+ sub_80A1A30(9);
+
+ gTasks[taskId].func = sub_809E3FC;
+ sub_80A2078(taskId);
+}
+
+static void sub_809EAC8(u8 taskId)
+{
+ if (pssData.selectedMoveIndex != 4)
+ {
+ sub_80A1488(-2, 0);
+ sub_80A1654(-2, 0);
+ }
+
+ sub_80A1B1C(9);
+ sub_80A16CC(1);
+
+ MenuZeroFillWindowRect(15, 12, 28, 13);
+ MenuZeroFillWindowRect(11, 15, 28, 18);
+
+ pssData.headerActionTextId = 6;
+ PrintSummaryWindowHeaderText();
+
+ gTasks[taskId].func = SummaryScreenHandleKeyInput;
+}
+
+static void sub_809EB40(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 5:
+ sub_80A1A30(9);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = sub_809E260;
+ break;
+ case 0:
+ pssData.selectedMoveIndex = 0;
+ if (pssData.moveToLearn != 0)
+ {
+ sub_80A1488(10, 0);
+ sub_80A1654(10, pssData.selectedMoveIndex);
+ }
+
+ sub_80A16CC(0);
+ sub_80A029C(&pssData.loadedMon);
+ // fall through
+ default:
+ gTasks[taskId].data[0]++;
+ break;
+ }
+}
+
+static void sub_809EBC4(void)
+{
+ if (pssData.page != PSS_PAGE_INFO)
+ {
+ DrawSummaryScreenNavigationDots();
+ gUnknown_030042C0 = 0x100;
+
+ if (pssData.page == PSS_PAGE_SKILLS)
+ REG_BG1CNT = (REG_BG1CNT & 0xE0FF) + 0x800;
+
+ if (pssData.page == PSS_PAGE_BATTLE_MOVES)
+ REG_BG1CNT = (REG_BG1CNT & 0xE0FF) + 0xA00;
+
+ if (pssData.page == PSS_PAGE_CONTEST_MOVES)
+ REG_BG1CNT = (REG_BG1CNT & 0xE0FF) + 0xC00;
+ }
+}
+
+void sub_809EC38(u8 taskId)
+{
+ u8 minus2;
+ s16 *taskData = gTasks[taskId].data;
+
+ switch (taskData[0])
+ {
+ case 0:
+ if (pssData.bgToggle == 0)
+ {
+ if (pssData.page != PSS_PAGE_INFO)
+ {
+ gUnknown_03004288 = 0x100;
+ }
+
+ if (pssData.page == PSS_PAGE_SKILLS)
+ {
+ REG_BG2CNT = (REG_BG2CNT & 0xE0FF) + 0x800;
+ }
+
+ if (pssData.page == PSS_PAGE_BATTLE_MOVES)
+ {
+ REG_BG2CNT = (REG_BG2CNT & 0xE0FF) + 0xA00;
+ }
+ }
+ else
+ {
+ if (pssData.page != PSS_PAGE_INFO)
+ {
+ gUnknown_030042C0 = 0x100;
+ }
+
+ if (pssData.page == PSS_PAGE_SKILLS)
+ {
+ REG_BG1CNT = (REG_BG1CNT & 0xE0FF) + 0x800;
+ }
+
+ if (pssData.page == PSS_PAGE_BATTLE_MOVES)
+ {
+ REG_BG1CNT = (REG_BG1CNT & 0xE0FF) + 0xA00;
+ }
+ }
+
+ taskData[0]++;
+ break;
+ case 1:
+ if (pssData.bgToggle == 0)
+ {
+ int var2 = gUnknown_030042C0 - 0x20;
+ gUnknown_030042C0 = var2;
+ if (var2 << 16 == 0)
+ {
+ REG_BG1CNT = (REG_BG1CNT & 0xFFFC) + 2;
+ REG_BG2CNT = (REG_BG2CNT & 0xFFFC) + 1;
+ taskData[0]++;
+ }
+ }
+ else
+ {
+ int var2 = gUnknown_03004288 - 0x20;
+ gUnknown_03004288 = var2;
+ if (var2 << 16 == 0)
+ {
+ REG_BG1CNT = (REG_BG1CNT & 0xFFFC) + 1;
+ REG_BG2CNT = (REG_BG2CNT & 0xFFFC) + 2;
+ taskData[0]++;
+ }
+ }
+ break;
+ case 2:
+ pssData.headerTextId = pssData.page + 1;
+ minus2 = pssData.mode - 2;
+ if (minus2 < 2)
+ {
+ pssData.headerActionTextId = 0;
+ sub_80A029C(&pssData.loadedMon);
+ sub_80A0428(&pssData.loadedMon, &pssData.selectedMoveIndex);
+ sub_80A00F4(pssData.selectedMoveIndex);
+ }
+ else
+ {
+ if (pssData.page >= PSS_PAGE_BATTLE_MOVES && (!pssData.disableMoveOrderEditing || pssData.mode == PSS_MODE_NO_MOVE_ORDER_EDIT))
+ {
+ pssData.headerActionTextId = 6;
+ }
+ else if (pssData.page == PSS_PAGE_INFO)
+ {
+ pssData.headerActionTextId = 7;
+ }
+ else
+ {
+ pssData.headerActionTextId = 0;
+ }
+ }
+
+ taskData[0]++;
+ break;
+ case 3:
+ DrawSummaryScreenNavigationDots();
+ PrintSummaryWindowHeaderText();
+ taskData[0]++;
+ break;
+ case 4:
+ sUnknown_083C1598[pssData.page](&pssData.loadedMon);
+ pssData.bgToggle ^= 1;
+ taskData[0]++;
+ break;
+ case 5:
+ if (sub_8055870() != TRUE)
+ {
+ gTasks[taskId].func = gUnknown_03005CF0;
+ }
+ break;
+ }
+}
+
+void sub_809EE74(u8 taskId)
+{
+ int var1;
+ u8 minus2;
+ s16 *taskData = gTasks[taskId].data;
+
+ switch (taskData[0])
+ {
+ case 0:
+ var1 = pssData.bgToggle;
+ if (var1 == 0)
+ {
+ gUnknown_03004288 = pssData.bgToggle;
+ taskData[0]++;
+ }
+ else
+ {
+ gUnknown_030042C0 = 0;
+ taskData[0]++;
+ }
+ break;
+ case 1:
+ if (pssData.bgToggle == 0)
+ {
+ if (pssData.page == PSS_PAGE_SKILLS)
+ REG_BG2CNT = (REG_BG2CNT & 0xE0FC) + 0x801;
+
+ if (pssData.page == PSS_PAGE_BATTLE_MOVES)
+ REG_BG2CNT = (REG_BG2CNT & 0xE0FC) + 0xA01;
+
+ if (pssData.page == PSS_PAGE_CONTEST_MOVES)
+ REG_BG2CNT = (REG_BG2CNT & 0xE0FC) + 0xC01;
+
+ REG_BG1CNT = (REG_BG1CNT & 0xFFFC) + 2;
+ }
+ else
+ {
+ if (pssData.page == PSS_PAGE_SKILLS)
+ REG_BG1CNT = (REG_BG1CNT & 0xE0FC) + 0x801;
+
+ if (pssData.page == PSS_PAGE_BATTLE_MOVES)
+ REG_BG1CNT = (REG_BG1CNT & 0xE0FC) + 0xA01;
+
+ if (pssData.page == PSS_PAGE_CONTEST_MOVES)
+ REG_BG1CNT = (REG_BG1CNT & 0xE0FC) + 0xC01;
+
+ REG_BG2CNT = (REG_BG2CNT & 0xFFFC) + 2;
+ }
+
+ taskData[0]++;
+ break;
+ case 2:
+ if (pssData.bgToggle == 0)
+ {
+ int var2 = gUnknown_03004288 + 0x20;
+ gUnknown_03004288 = var2;
+ if ((var2 << 16) == 0x1000000)
+ {
+ taskData[0]++;
+ }
+ }
+ else
+ {
+ int var2 = gUnknown_030042C0 + 0x20;
+ gUnknown_030042C0 = var2;
+ if ((var2 << 16) == 0x1000000)
+ {
+ taskData[0]++;
+ }
+ }
+ break;
+ case 3:
+ pssData.headerTextId = pssData.page + 1;
+ minus2 = pssData.mode - 2;
+ if (minus2 < 2)
+ {
+ pssData.headerActionTextId = 0;
+ sub_80A029C(&pssData.loadedMon);
+ sub_80A0428(&pssData.loadedMon, &pssData.selectedMoveIndex);
+ sub_80A00F4(pssData.selectedMoveIndex);
+ }
+ else
+ {
+ if (pssData.page >= PSS_PAGE_BATTLE_MOVES && (!pssData.disableMoveOrderEditing || pssData.mode == PSS_MODE_NO_MOVE_ORDER_EDIT))
+ {
+ pssData.headerActionTextId = 6;
+ }
+ else if (pssData.page == PSS_PAGE_INFO)
+ {
+ pssData.headerActionTextId = 7;
+ }
+ else
+ {
+ pssData.headerActionTextId = 0;
+ }
+ }
+
+ taskData[0]++;
+ break;
+ case 4:
+ DrawSummaryScreenNavigationDots();
+ PrintSummaryWindowHeaderText();
+ taskData[0]++;
+ break;
+ case 5:
+ sUnknown_083C1598[pssData.page](&pssData.loadedMon);
+ pssData.bgToggle ^= 1;
+ taskData[0]++;
+ break;
+ case 6:
+ if (sub_8055870() != TRUE)
+ {
+ gTasks[taskId].func = gUnknown_03005CF0;
+ }
+ break;
+ }
+}
+
+void sub_809F0D0(u8 taskId, s8 direction)
+{
+ pssData.page += direction;
+ gUnknown_03005CF0 = gTasks[taskId].func;
+ sub_809FBE4();
+ gTasks[taskId].data[0] = 0;
+
+ if (direction == -1)
+ {
+ gTasks[taskId].func = sub_809EC38;
+ }
+ else
+ {
+ gTasks[taskId].func = sub_809EE74;
+ gTasks[taskId].func(taskId);
+ }
+}
+
+static void SummaryScreenHandleLeftRightInput(u8 taskId, s8 direction)
+{
+ if (!GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG))
+ {
+ if (direction == -1 && pssData.page == pssData.firstPage) return;
+ if (direction == 1 && pssData.page == pssData.lastPage) return;
+
+ if (FindTaskIdByFunc(sub_80A1334) == 0xFF && FindTaskIdByFunc(sub_80A1500) == 0xFF)
+ {
+ PlaySE(SE_SELECT);
+ sub_809F0D0(taskId, direction);
+ }
+ }
+}
+
+#ifdef NONMATCHING
+static void SummaryScreenHandleUpDownInput(u8 taskId, s8 direction)
+{
+ s8 var3;
+ u8 var1 = direction;
+
+ if (pssData.usingPC == TRUE)
+ {
+ if (pssData.page != PSS_PAGE_INFO)
+ {
+ var1 = (direction == 1) ? 0 : 1;
+ }
+ else
+ {
+ var1 = (direction == 1) ? 2 : 3;
+ }
+
+ var3 = StorageSystemGetNextMonIndex(pssData.monList.boxMons, pssData.monIndex, pssData.maxMonIndex, var1);
+ }
+ else
+ {
+ if (sub_80F9344() == TRUE && IsLinkDoubleBattle() == TRUE)
+ {
+ var3 = sub_809F3CC(var1);
+ }
+ else
+ {
+ var3 = sub_809F284(var1);
+ }
+ }
+
+ if (var3 != -1)
+ {
+ PlaySE(SE_SELECT);
+ if (GetMonStatusAndPokerus(&pssData.loadedMon))
+ {
+ sub_80A12D0(-2);
+ }
+
+ pssData.monIndex = var3;
+ pssData.unk84 = gTasks[taskId].func;
+ gTasks[taskId].func = sub_809F43C;
+ }
+}
+#else
+__attribute__((naked))
+static void SummaryScreenHandleUpDownInput(u8 taskId, s8 direction)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ lsls r1, 24\n\
+ lsrs r4, r1, 24\n\
+ ldr r0, _0809F1E4 @ =gSharedMem + 0x18000\n\
+ ldrb r1, [r0, 0xE]\n\
+ adds r2, r0, 0\n\
+ cmp r1, 0x1\n\
+ bne _0809F202\n\
+ ldrb r0, [r2, 0xB]\n\
+ cmp r0, 0\n\
+ beq _0809F1E8\n\
+ lsls r1, r4, 24\n\
+ asrs r1, 24\n\
+ movs r4, 0x1\n\
+ eors r1, r4\n\
+ negs r0, r1\n\
+ orrs r0, r1\n\
+ lsrs r4, r0, 31\n\
+ b _0809F1F4\n\
+ .align 2, 0\n\
+_0809F1E4: .4byte gSharedMem + 0x18000\n\
+_0809F1E8:\n\
+ lsls r0, r4, 24\n\
+ asrs r0, 24\n\
+ movs r4, 0x3\n\
+ cmp r0, 0x1\n\
+ bne _0809F1F4\n\
+ movs r4, 0x2\n\
+_0809F1F4:\n\
+ ldr r0, [r2]\n\
+ ldrb r1, [r2, 0x9]\n\
+ ldrb r2, [r2, 0xA]\n\
+ adds r3, r4, 0\n\
+ bl StorageSystemGetNextMonIndex\n\
+ b _0809F22C\n\
+_0809F202:\n\
+ bl sub_80F9344\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0809F224\n\
+ bl IsLinkDoubleBattle\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0809F224\n\
+ lsls r0, r4, 24\n\
+ asrs r0, 24\n\
+ bl sub_809F3CC\n\
+ b _0809F22C\n\
+_0809F224:\n\
+ lsls r0, r4, 24\n\
+ asrs r0, 24\n\
+ bl sub_809F284\n\
+_0809F22C:\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ lsls r0, r4, 24\n\
+ asrs r0, 24\n\
+ movs r1, 0x1\n\
+ negs r1, r1\n\
+ cmp r0, r1\n\
+ beq _0809F270\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ ldr r5, _0809F278 @ =gSharedMem + 0x18010\n\
+ adds r0, r5, 0\n\
+ bl GetMonStatusAndPokerus\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0809F258\n\
+ movs r0, 0x2\n\
+ negs r0, r0\n\
+ bl sub_80A12D0\n\
+_0809F258:\n\
+ adds r0, r5, 0\n\
+ subs r0, 0x10\n\
+ strb r4, [r0, 0x9]\n\
+ ldr r1, _0809F27C @ =gTasks\n\
+ lsls r0, r6, 2\n\
+ adds r0, r6\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldr r1, [r0]\n\
+ str r1, [r5, 0x74]\n\
+ ldr r1, _0809F280 @ =sub_809F43C\n\
+ str r1, [r0]\n\
+_0809F270:\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0809F278: .4byte gSharedMem + 0x18010\n\
+_0809F27C: .4byte gTasks\n\
+_0809F280: .4byte sub_809F43C\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+#ifdef NONMATCHING
+s8 sub_809F284(s8 a)
+{
+ struct Pokemon *mons = pssData.monList.partyMons;
+ s8 r6 = 0;
+
+ if (pssData.page == PSS_PAGE_INFO)
+ {
+ if (a == -1 && pssData.monIndex == 0)
+ return -1;
+ if (a == 1 && pssData.monIndex >= pssData.maxMonIndex)
+ return -1;
+ return pssData.monIndex + a;
+ }
+ else
+ {
+ do
+ {
+ r6 += a;
+ if (pssData.monIndex + r6 < 0 || pssData.monIndex + r6 > pssData.maxMonIndex)
+ return -1;
+ } while (GetMonData(&mons[pssData.monIndex + r6], MON_DATA_IS_EGG) != 0);
+ return pssData.monIndex + r6;
+ }
+}
+#else
+__attribute__((naked))
+s8 sub_809F284(s8 a)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ ldr r0, _0809F2C0 @ =gSharedMem + 0x18000\n\
+ ldr r7, [r0]\n\
+ movs r6, 0\n\
+ ldrb r1, [r0, 0xB]\n\
+ adds r4, r0, 0\n\
+ cmp r1, 0\n\
+ bne _0809F2C4\n\
+ lsls r0, r3, 24\n\
+ asrs r2, r0, 24\n\
+ movs r1, 0x1\n\
+ negs r1, r1\n\
+ adds r5, r0, 0\n\
+ cmp r2, r1\n\
+ bne _0809F2AC\n\
+ ldrb r0, [r4, 0x9]\n\
+ cmp r0, 0\n\
+ beq _0809F2E4\n\
+_0809F2AC:\n\
+ asrs r0, r5, 24\n\
+ cmp r0, 0x1\n\
+ bne _0809F2BA\n\
+ ldrb r0, [r4, 0x9]\n\
+ ldrb r1, [r4, 0xA]\n\
+ cmp r0, r1\n\
+ bcs _0809F2E4\n\
+_0809F2BA:\n\
+ ldrb r0, [r4, 0x9]\n\
+ adds r0, r3\n\
+ b _0809F304\n\
+ .align 2, 0\n\
+_0809F2C0: .4byte gSharedMem + 0x18000\n\
+_0809F2C4:\n\
+ lsls r5, r3, 24\n\
+_0809F2C6:\n\
+ lsls r0, r6, 24\n\
+ asrs r0, 24\n\
+ asrs r1, r5, 24\n\
+ adds r0, r1\n\
+ lsls r0, 24\n\
+ ldr r4, _0809F2EC @ =gSharedMem + 0x18000\n\
+ lsrs r6, r0, 24\n\
+ asrs r0, 24\n\
+ ldrb r2, [r4, 0x9]\n\
+ adds r1, r0, r2\n\
+ cmp r1, 0\n\
+ blt _0809F2E4\n\
+ ldrb r0, [r4, 0xA]\n\
+ cmp r1, r0\n\
+ ble _0809F2F0\n\
+_0809F2E4:\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ b _0809F308\n\
+ .align 2, 0\n\
+_0809F2EC: .4byte gSharedMem + 0x18000\n\
+_0809F2F0:\n\
+ movs r0, 0x64\n\
+ muls r0, r1\n\
+ adds r0, r7, r0\n\
+ movs r1, 0x2D\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ bne _0809F2C6\n\
+ ldrb r0, [r4, 0x9]\n\
+ adds r0, r6\n\
+_0809F304:\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+_0809F308:\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+bool8 sub_809F310(struct Pokemon *mon)
+{
+ if (GetMonData(mon, MON_DATA_SPECIES))
+ {
+ if (pssData.page != PSS_PAGE_INFO || !GetMonData(mon, MON_DATA_IS_EGG))
+ {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+s8 sub_809F344(u8 partyIndex)
+{
+ while (1)
+ {
+ partyIndex++;
+ if (partyIndex == PARTY_SIZE)
+ {
+ return -1;
+ }
+
+ if (sub_809F310(&gPlayerParty[sDoubleBattlePartyOrder[partyIndex]]) == TRUE)
+ {
+ return sDoubleBattlePartyOrder[partyIndex];
+ }
+ }
+}
+
+s8 sub_809F388(u8 partyIndex)
+{
+ while (1)
+ {
+ if (partyIndex == 0)
+ {
+ return -1;
+ }
+
+ partyIndex--;
+ if (sub_809F310(&gPlayerParty[sDoubleBattlePartyOrder[partyIndex]]) == TRUE)
+ {
+ return sDoubleBattlePartyOrder[partyIndex];
+ }
+ }
+}
+
+s8 sub_809F3CC(s8 direction)
+{
+ u8 i;
+ u8 monIndex = 0;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (sDoubleBattlePartyOrder[i] == pssData.monIndex)
+ {
+ monIndex = i;
+ break;
+ }
+ }
+
+ if ((direction == -1 && monIndex == 0) || (direction == 1 && monIndex == 5))
+ {
+ return -1;
+ }
+
+ if (direction != 1)
+ {
+ return sub_809F388(monIndex);
+ }
+ else if (monIndex != 5)
+ {
+ return sub_809F344(monIndex);
+ }
+
+ return -1;
+}
+
+void sub_809F43C(u8 taskId)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ StopCryAndClearCrySongs();
+ gMain.state++;
+ break;
+ case 1:
+ DestroySpriteAndFreeResources(&gSprites[pssData.monSpriteId]);
+ gMain.state++;
+ break;
+ case 2:
+ DestroySpriteAndFreeResources(&gSprites[pssData.ballSpriteId]);
+ gMain.state++;
+ break;
+ case 3:
+ pssData.loadGfxState = 0;
+ pssData.selectedMoveIndex = 0;
+ gMain.state++;
+ break;
+ case 4:
+ sub_809F678(&pssData.loadedMon);
+ if (GetMonStatusAndPokerus(&pssData.loadedMon))
+ {
+ sub_80A12D0(2);
+ }
+
+ DrawPokerusSurvivorDot(&pssData.loadedMon);
+ gMain.state++;
+ break;
+ case 5:
+ if ((pssData.monSpriteId = sub_809F6B4(&pssData.loadedMon, &pssData.loadGfxState)) != 0xFF)
+ {
+ pssData.loadGfxState = 0;
+ if (GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG))
+ {
+ gUnknown_030041B0 = 256;
+ }
+ else
+ {
+ gUnknown_030041B0 = 0;
+ }
+
+ gMain.state++;
+ }
+ break;
+ case 6:
+ sub_80A1DCC(&pssData.loadedMon);
+ gMain.state++;
+ break;
+ case 7:
+ sub_80A1DE8(&pssData.loadedMon);
+ gMain.state++;
+ break;
+ case 8:
+ if (sub_809F5F8())
+ {
+ pssData.loadGfxState = 0;
+ gMain.state++;
+ }
+ break;
+ default:
+ if (sub_8055870() != TRUE)
+ {
+ gMain.state = 0;
+ gTasks[taskId].func = pssData.unk84;
+ }
+ break;
+ }
+}
+
+static bool8 sub_809F5F8(void)
+{
+ if (pssData.loadGfxState == 0)
+ {
+ sub_809FAC8(&pssData.loadedMon);
+ pssData.loadGfxState++;
+ return FALSE;
+ }
+ else
+ {
+ sUnknown_083C1588[pssData.page](&pssData.loadedMon);
+ return TRUE;
+ }
+}
+
+static void sub_809F63C(struct Pokemon *mon)
+{
+ sub_809FE80();
+ sub_809FC34(mon);
+}
+
+static void sub_809F650(struct Pokemon *mon)
+{
+ sub_80A00A4();
+ sub_809FF64(mon);
+}
+
+static void sub_809F664(struct Pokemon *mon)
+{
+ sub_80A0390();
+ sub_80A015C(mon);
+}
+
+static void sub_809F678(struct Pokemon *mon)
+{
+ if (pssData.usingPC == FALSE)
+ {
+ struct Pokemon *mons = pssData.monList.partyMons;
+ *mon = mons[pssData.monIndex];
+ }
+ else
+ {
+ struct BoxPokemon *mons = pssData.monList.boxMons;
+ sub_803B4B4(&mons[pssData.monIndex], mon);
+ }
+}
+
+static u8 sub_809F6B4(struct Pokemon *mon, u8 *b)
+{
+ u16 species;
+ u32 personality;
+ u32 otId;
+ const struct CompressedSpritePalette *palette;
+
+ switch (*b)
+ {
+ default:
+ return sub_80A1808(mon);
+ case 0:
+ species = GetMonData(mon, MON_DATA_SPECIES2);
+ personality = GetMonData(mon, MON_DATA_PERSONALITY);
+
+ HandleLoadSpecialPokePic(
+ &gMonFrontPicTable[species],
+ gMonFrontPicCoords[species].coords,
+ gMonFrontPicCoords[species].y_offset,
+ ewram_addr,
+ gUnknown_081FAF4C[1],
+ species,
+ personality);
+ *b += 1;
+ return 0xFF;
+ case 1:
+ species = GetMonData(mon, MON_DATA_SPECIES2);
+ personality = GetMonData(mon, MON_DATA_PERSONALITY);
+ otId = GetMonData(mon, MON_DATA_OT_ID);
+
+ palette = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality);
+ LoadCompressedObjectPalette(palette);
+ GetMonSpriteTemplate_803C56C(palette->tag, 1);
+ *b += 1;
+ return 0xFF;
+ }
+}
+
+static u16 GetMonMove(struct Pokemon *mon, u8 moveId)
+{
+ switch (moveId)
+ {
+ case 0:
+ return GetMonData(mon, MON_DATA_MOVE1);
+ case 1:
+ return GetMonData(mon, MON_DATA_MOVE2);
+ case 2:
+ return GetMonData(mon, MON_DATA_MOVE3);
+ default:
+ return GetMonData(mon, MON_DATA_MOVE4);
+ }
+}
+
+static u16 GetMonMovePP(struct Pokemon *mon, u8 moveId)
+{
+ switch (moveId)
+ {
+ case 0:
+ return GetMonData(mon, MON_DATA_PP1);
+ case 1:
+ return GetMonData(mon, MON_DATA_PP2);
+ case 2:
+ return GetMonData(mon, MON_DATA_PP3);
+ default:
+ return GetMonData(mon, MON_DATA_PP4);
+ }
+}
+
+static bool8 sub_809F7D0(u8 taskId)
+{
+ struct Pokemon mon;
+ u16 move;
+
+ sub_809F678(&mon);
+ move = GetMonMove(&mon, pssData.selectedMoveIndex);
+ if (IsHMMove(move) == TRUE && pssData.mode != PSS_MODE_UNKNOWN)
+ {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+#ifdef NONMATCHING // The two "pssData.selectedMoveIndex = taskData[15];" lines have small register differences.
+void sub_809F814(u8 taskId)
+{
+ u16 var1;
+
+ s16 *taskData = gTasks[taskId].data;
+
+ var1 = taskData[14];
+ if (taskData[14] < 4)
+ {
+ taskData[14] = var1 + 1;
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ gTasks[taskId].func = sub_809E260;
+ taskData[0] = 4;
+ taskData[13] = 1;
+ pssData.selectedMoveIndex = taskData[15];
+ sub_809E8F0(taskId, -1);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ gTasks[taskId].func = sub_809E260;
+ taskData[0] = 4;
+ taskData[13] = 1;
+ pssData.selectedMoveIndex = taskData[15];
+ sub_809E8F0(taskId, 1);
+ }
+ else if ((gMain.newKeys & DPAD_LEFT) || sub_80F9284() == 1)
+ {
+ if (pssData.page != PSS_PAGE_BATTLE_MOVES)
+ {
+ if (pssData.page == PSS_PAGE_CONTEST_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0))
+ {
+ MenuZeroFillWindowRect(0, 14, 9, 18);
+ }
+
+ gTasks[taskId].func = sub_809E260;
+
+ SummaryScreenHandleLeftRightInput(taskId, -1);
+ sub_80A1488(1, taskData[15]);
+ sub_80A1654(1, taskData[15]);
+ }
+ }
+ else if ((gMain.newKeys & DPAD_RIGHT) || sub_80F9284() == 2)
+ {
+ if (pssData.page != pssData.lastPage)
+ {
+ if (pssData.page == PSS_PAGE_BATTLE_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0))
+ {
+ MenuZeroFillWindowRect(0, 14, 9, 18);
+ }
+
+ gTasks[taskId].func = sub_809E260;
+
+ SummaryScreenHandleLeftRightInput(taskId, 1);
+ sub_80A1488(1, taskData[15]);
+ sub_80A1654(1, taskData[15]);
+ }
+ }
+ else if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
+ {
+ sub_80A1488(2, taskData[15]);
+ sub_80A1654(2, taskData[15]);
+
+ gTasks[taskId].func = sub_809E260;
+ }
+}
+
+#else
+__attribute__((naked))
+void sub_809F814(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r6, r0, 3\n\
+ ldr r0, _0809F83C @ =gTasks + 0x8\n\
+ mov r8, r0\n\
+ adds r4, r6, r0\n\
+ ldrh r1, [r4, 0x1C]\n\
+ movs r2, 0x1C\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r0, 0x3\n\
+ bgt _0809F840\n\
+ adds r0, r1, 0x1\n\
+ strh r0, [r4, 0x1C]\n\
+ b _0809F9C0\n\
+ .align 2, 0\n\
+_0809F83C: .4byte gTasks + 0x8\n\
+_0809F840:\n\
+ ldr r7, _0809F874 @ =gMain\n\
+ ldrh r1, [r7, 0x2E]\n\
+ movs r0, 0x40\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0809F880\n\
+ mov r0, r8\n\
+ subs r0, 0x8\n\
+ adds r0, r6, r0\n\
+ ldr r1, _0809F878 @ =sub_809E260\n\
+ str r1, [r0]\n\
+ movs r0, 0x4\n\
+ strh r0, [r4]\n\
+ movs r0, 0x1\n\
+ strh r0, [r4, 0x1A]\n\
+ ldr r2, _0809F87C @ =gSharedMem + 0x18000\n\
+ ldrh r0, [r4, 0x1E]\n\
+ adds r2, 0x79\n\
+ strb r0, [r2]\n\
+ movs r1, 0x1\n\
+ negs r1, r1\n\
+ adds r0, r5, 0\n\
+ bl sub_809E8F0\n\
+ b _0809F9C0\n\
+ .align 2, 0\n\
+_0809F874: .4byte gMain\n\
+_0809F878: .4byte sub_809E260\n\
+_0809F87C: .4byte gSharedMem + 0x18000\n\
+_0809F880:\n\
+ movs r0, 0x80\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0809F8B4\n\
+ mov r0, r8\n\
+ subs r0, 0x8\n\
+ adds r0, r6, r0\n\
+ ldr r1, _0809F8AC @ =sub_809E260\n\
+ str r1, [r0]\n\
+ movs r0, 0x4\n\
+ strh r0, [r4]\n\
+ movs r0, 0x1\n\
+ strh r0, [r4, 0x1A]\n\
+ ldr r2, _0809F8B0 @ =gSharedMem + 0x18000\n\
+ ldrh r0, [r4, 0x1E]\n\
+ adds r2, 0x79\n\
+ strb r0, [r2]\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x1\n\
+ bl sub_809E8F0\n\
+ b _0809F9C0\n\
+ .align 2, 0\n\
+_0809F8AC: .4byte sub_809E260\n\
+_0809F8B0: .4byte gSharedMem + 0x18000\n\
+_0809F8B4:\n\
+ movs r0, 0x20\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0809F8C8\n\
+ bl sub_80F9284\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0809F918\n\
+_0809F8C8:\n\
+ ldr r1, _0809F90C @ =gSharedMem + 0x18000\n\
+ ldrb r0, [r1, 0xB]\n\
+ cmp r0, 0x2\n\
+ beq _0809F9C0\n\
+ cmp r0, 0x3\n\
+ bne _0809F8F4\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x79\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x4\n\
+ bne _0809F8E8\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x7C\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _0809F8F4\n\
+_0809F8E8:\n\
+ movs r0, 0\n\
+ movs r1, 0xE\n\
+ movs r2, 0x9\n\
+ movs r3, 0x12\n\
+ bl MenuZeroFillWindowRect\n\
+_0809F8F4:\n\
+ ldr r1, _0809F910 @ =gTasks\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldr r1, _0809F914 @ =sub_809E260\n\
+ str r1, [r0]\n\
+ movs r1, 0x1\n\
+ negs r1, r1\n\
+ adds r0, r5, 0\n\
+ b _0809F972\n\
+ .align 2, 0\n\
+_0809F90C: .4byte gSharedMem + 0x18000\n\
+_0809F910: .4byte gTasks\n\
+_0809F914: .4byte sub_809E260\n\
+_0809F918:\n\
+ ldrh r1, [r7, 0x2E]\n\
+ movs r0, 0x10\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0809F92E\n\
+ bl sub_80F9284\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x2\n\
+ bne _0809F994\n\
+_0809F92E:\n\
+ ldr r1, _0809F988 @ =gSharedMem + 0x18000\n\
+ adds r2, r1, 0\n\
+ adds r2, 0x76\n\
+ ldrb r0, [r1, 0xB]\n\
+ ldrb r2, [r2]\n\
+ cmp r0, r2\n\
+ beq _0809F9C0\n\
+ cmp r0, 0x2\n\
+ bne _0809F960\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x79\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x4\n\
+ bne _0809F954\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x7C\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _0809F960\n\
+_0809F954:\n\
+ movs r0, 0\n\
+ movs r1, 0xE\n\
+ movs r2, 0x9\n\
+ movs r3, 0x12\n\
+ bl MenuZeroFillWindowRect\n\
+_0809F960:\n\
+ ldr r1, _0809F98C @ =gTasks\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldr r1, _0809F990 @ =sub_809E260\n\
+ str r1, [r0]\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x1\n\
+_0809F972:\n\
+ bl SummaryScreenHandleLeftRightInput\n\
+ ldrb r1, [r4, 0x1E]\n\
+ movs r0, 0x1\n\
+ bl sub_80A1488\n\
+ ldrb r1, [r4, 0x1E]\n\
+ movs r0, 0x1\n\
+ bl sub_80A1654\n\
+ b _0809F9C0\n\
+ .align 2, 0\n\
+_0809F988: .4byte gSharedMem + 0x18000\n\
+_0809F98C: .4byte gTasks\n\
+_0809F990: .4byte sub_809E260\n\
+_0809F994:\n\
+ ldrh r1, [r7, 0x2E]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0809F9A6\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0809F9C0\n\
+_0809F9A6:\n\
+ ldrb r1, [r4, 0x1E]\n\
+ movs r0, 0x2\n\
+ bl sub_80A1488\n\
+ ldrb r1, [r4, 0x1E]\n\
+ movs r0, 0x2\n\
+ bl sub_80A1654\n\
+ mov r0, r8\n\
+ subs r0, 0x8\n\
+ adds r0, r6, r0\n\
+ ldr r1, _0809F9CC @ =sub_809E260\n\
+ str r1, [r0]\n\
+_0809F9C0:\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0809F9CC: .4byte sub_809E260\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+static void sub_809F9D0(u8 taskId, u8 b)
+{
+ s16 *taskData = gTasks[taskId].data;
+ taskData[14] = 0;
+ taskData[15] = b;
+
+ sub_80A1488(-2, 4);
+ sub_80A1654(-2, 4);
+ MenuZeroFillWindowRect(11, 15, 28, 18);
+ MenuPrint(gOtherText_CantForgetHMs, 11, 15);
+
+ gTasks[taskId].func = sub_809F814;
+}
+
+u8 sub_809FA30(void)
+{
+ return pssData.switchMoveIndex;
+}
+
+// void GetStringCenterAlignXOffsetWithLetterSpacing(u8 a, u8 b, u8 c, u8 d)
+// {
+// u16 *vramAddr = (u16 *)(VRAM + 0xF000);
+
+// vramAddr[(d * 32) + c] = (b * 0x1000) + (a * 2) + 0x200 + 0x80;
+// vramAddr[(d * 32) + c + 32] = (b * 0x1000) + (a * 2) + 0x200 + 0x81;
+// }
+__attribute__((naked))
+void GetStringCenterAlignXOffsetWithLetterSpacing(u8 a, u8 b, u8 c, u8 d)
+{
+ asm(".syntax unified\n\
+ push {r4,lr}\n\
+ lsls r0, 24\n\
+ lsls r1, 24\n\
+ lsls r2, 24\n\
+ lsls r3, 24\n\
+ lsrs r2, 23\n\
+ lsrs r3, 18\n\
+ ldr r4, _0809FA70 @ =0x0600f000\n\
+ adds r3, r4\n\
+ adds r2, r3\n\
+ lsrs r1, 12\n\
+ lsrs r0, 23\n\
+ movs r4, 0x80\n\
+ lsls r4, 2\n\
+ adds r3, r4, 0\n\
+ adds r0, r3\n\
+ adds r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x80\n\
+ strh r0, [r2]\n\
+ adds r2, 0x40\n\
+ adds r1, 0x81\n\
+ strh r1, [r2]\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0809FA70: .4byte 0x0600f000\n\
+ .syntax divided\n");
+}
+
+void GetStringCenterAlignXOffset(u8 a, u8 b, u8 c)
+{
+ GetStringCenterAlignXOffsetWithLetterSpacing(a, 15, b, c);
+}
+
+bool8 sub_809FA94(struct Pokemon *mon)
+{
+ if (!IsShiny(mon))
+ {
+ LoadPalette(sUnknown_083C157C, 4, 2);
+ return FALSE;
+ }
+ else
+ {
+ LoadPalette(sUnknown_083C157E, 4, 2);
+ return TRUE;
+ }
+}
+
+static void sub_809FAC8(struct Pokemon *mon)
+{
+ bool8 shinyDexNum;
+ u16 dexNum;
+ u8 *buffer;
+
+ if (GetMonData(mon, MON_DATA_IS_EGG))
+ {
+ MenuZeroFillWindowRect(1, 2, 4, 3);
+ MenuZeroFillWindowRect(3, 16, 9, 17);
+ MenuZeroFillWindowRect(0, 12, 11, 15);
+ GetMonNickname(mon, gStringVar1);
+ sub_80A1FF8(gStringVar1, 13, 3, 16);
+ LoadPalette(sUnknown_083C157C, 4, 2);
+ }
+ else
+ {
+ shinyDexNum = sub_809FA94(mon);
+ dexNum = SpeciesToPokedexNum(GetMonData(mon, MON_DATA_SPECIES));
+ if (dexNum != 0xFFFF)
+ {
+ if (!shinyDexNum)
+ {
+ GetStringCenterAlignXOffset(2, 1, 2);
+ sub_80A1F98(dexNum, 13, 3, 2, 17, 16, 1);
+ }
+ else
+ {
+ GetStringCenterAlignXOffsetWithLetterSpacing(2, 8, 1, 2);
+ sub_80A1F98(dexNum, 8, 3, 2, 17, 16, 1);
+ }
+ }
+ else
+ {
+ MenuZeroFillWindowRect(1, 2, 4, 3);
+ }
+
+ buffer = gStringVar1;
+ buffer = sub_80A1E58(buffer, 13);
+ buffer = GetMonNickname(mon, buffer);
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x13;
+ buffer[2] = 0x3C;
+ buffer[3] = EOS;
+ MenuPrint(gStringVar1, 1, 12);
+
+ sub_80A0958(mon);
+ }
+}
+
+static void sub_809FBE4(void)
+{
+ u8 i;
+
+ for (i = 0; i < 28; i++)
+ {
+ sub_80A1918(i, 1);
+ }
+
+ MenuZeroFillWindowRect(11, 4, 29, 18);
+}
+
+static void sub_809FC0C(void)
+{
+ MenuPrint(gOtherText_Type2, 11, 6);
+ GetStringCenterAlignXOffset(0, 22, 4);
+ GetStringCenterAlignXOffset(2, 23, 4);
+}
+
+static void sub_809FC34(struct Pokemon *mon)
+{
+ u8 i;
+ u8 *buffer;
+ u16 friendship;
+ u8 language;
+ u16 species;
+ u8 ability;
+
+ for (i = 0; i < 5; i++)
+ {
+ sub_80A1918(i, 1);
+ }
+
+ MenuZeroFillWindowRect(11, 9, 28, 12);
+ if (GetMonData(mon, MON_DATA_IS_EGG))
+ {
+ buffer = gStringVar1;
+ buffer = sub_80A1E58(buffer, 13);
+ buffer = StringCopy(buffer, gOtherText_OriginalTrainer);
+ buffer = StringCopy(buffer, gOtherText_FiveQuestionsAndSlash);
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x13;
+ buffer[2] = 0x4E;
+ buffer[3] = EOS;
+ MenuPrint(gStringVar1, 11, 4);
+
+ sub_80A1EF8(gOtherText_FiveQuestionsAndSlash, 13, 193, 32, 1);
+ sub_80A198C(9, 120, 48, 0);
+
+ friendship = GetMonData(mon, MON_DATA_FRIENDSHIP);
+ if (friendship < 6)
+ {
+ MenuPrint(gOtherText_EggAbout, 11, 9);
+ }
+ else if (friendship < 11)
+ {
+ MenuPrint(gOtherText_EggSoon, 11, 9);
+ }
+ else if (friendship < 41)
+ {
+ MenuPrint(gOtherText_EggSomeTime, 11, 9);
+ }
+ else
+ {
+ MenuPrint(gOtherText_EggLongTime, 11, 9);
+ }
+
+ PokemonSummaryScreen_PrintEggTrainerMemo(mon, 11, 14);
+ }
+ else
+ {
+ GetMonData(mon, MON_DATA_OT_NAME, gStringVar2);
+ language = GetMonData(mon, MON_DATA_LANGUAGE);
+ ConvertInternationalString(gStringVar2, language);
+
+ buffer = gStringVar1;
+ buffer = sub_80A1E58(buffer, 13);
+ buffer = StringCopy(buffer, gOtherText_OriginalTrainer);
+
+ if (GetMonData(mon, MON_DATA_OT_GENDER) == MALE)
+ {
+ buffer = sub_80A1E58(buffer, 9);
+ }
+ else
+ {
+ buffer = sub_80A1E58(buffer, 10);
+ }
+
+ buffer = StringCopy(buffer, gStringVar2);
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x13;
+ buffer[2] = 0x4E;
+ buffer[3] = EOS;
+ MenuPrint(gStringVar1, 11, 4);
+
+ sub_80A1F98(GetMonData(mon, MON_DATA_OT_ID) & 0xFFFF, 13, 5, 2, 193, 32, 1);
+
+ species = GetMonData(mon, MON_DATA_SPECIES);
+ sub_80A198C(gBaseStats[species].type1, 120, 48, 0);
+ if (gBaseStats[species].type1 != gBaseStats[species].type2)
+ {
+ sub_80A198C(gBaseStats[species].type2, 160, 48, 1);
+ }
+
+ ability = GetAbilityBySpecies(GetMonData(mon, MON_DATA_SPECIES), GetMonData(mon, MON_DATA_ALT_ABILITY));
+ sub_80A1FF8(gAbilityNames[ability], 13, 11, 9);
+ MenuPrint(gAbilityDescriptions[ability], 11, 11);
+
+ PokemonSummaryScreen_PrintTrainerMemo(mon, 11, 14);
+ }
+}
+
+static void sub_809FE6C(struct Pokemon *mon)
+{
+ sub_809FC0C();
+ sub_809FC34(mon);
+}
+
+static void sub_809FE80(void)
+{
+ MenuZeroFillWindowRect(14, 4, 18, 5);
+ MenuZeroFillWindowRect(25, 4, 30, 5);
+ MenuZeroFillWindowRect(11, 9, 28, 12);
+ MenuZeroFillWindowRect(11, 14, 28, 17);
+}
+
+static void sub_809FEB8(void)
+{
+ sub_80A1FF8(gOtherText_ExpPoints, 13, 11, 14);
+ sub_80A1FF8(gOtherText_NextLv, 13, 11, 16);
+ MenuPrint(gOtherText_Terminator18, 21, 16);
+
+ sub_80A1F48(gOtherText_HP, 13, 11, 7, 42);
+ sub_80A1F48(gOtherText_Attack, 13, 11, 9, 42);
+ sub_80A1F48(gOtherText_Defense, 13, 11, 11, 42);
+ sub_80A1F48(gOtherText_SpAtk, 13, 22, 7, 36);
+ sub_80A1F48(gOtherText_SpDef, 13, 22, 9, 36);
+ sub_80A1F48(gOtherText_Speed, 13, 22, 11, 36);
+}
+
+static void sub_809FF64(struct Pokemon *mon)
+{
+ u8 i;
+ u16 heldItem;
+ u8 *buffer;
+
+ for (i = 0; i < 5; i++)
+ {
+ sub_80A1918(i, 1);
+ }
+
+ heldItem = GetMonData(mon, MON_DATA_HELD_ITEM);
+ PrintHeldItemName(heldItem, 11, 4);
+ PrintNumRibbons(mon);
+
+ buffer = gStringVar1;
+
+ ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_EXP));
+ MenuPrint_RightAligned(buffer, 29, 14);
+ DrawExperienceProgressBar(mon, 23, 16);
+
+ ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_ATK));
+ sub_8072BD8(buffer, 16, 9, 50);
+
+ ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_DEF));
+ sub_8072BD8(buffer, 16, 11, 50);
+
+ ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_SPATK));
+ sub_8072BD8(buffer, 27, 7, 18);
+
+ ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_SPDEF));
+ sub_8072BD8(buffer, 27, 9, 18);
+
+ ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_SPEED));
+ sub_8072BD8(buffer, 27, 11, 18);
+
+ buffer = sub_8072C14(buffer, GetMonData(mon, MON_DATA_HP), 24, 1);
+ *buffer++ = CHAR_SLASH;
+ buffer = sub_8072C14(buffer, GetMonData(mon, MON_DATA_MAX_HP), 48, 1);
+
+ MenuPrint_PixelCoords(gStringVar1, 126, 56, 1);
+}
+
+static void sub_80A0090(struct Pokemon *mon)
+{
+ sub_809FEB8();
+ sub_809FF64(mon);
+}
+
+static void sub_80A00A4(void)
+{
+ MenuZeroFillWindowRect(11, 4, 19, 5);
+ MenuZeroFillWindowRect(16, 7, 21, 8);
+ MenuZeroFillWindowRect(17, 9, 21, 12);
+ MenuZeroFillWindowRect(27, 7, 29, 12);
+ MenuZeroFillWindowRect(22, 14, 28, 15);
+ MenuZeroFillWindowRect(23, 16, 28, 17);
+}
+
+static void sub_80A00F4(u8 a)
+{
+ if (pssData.moveToLearn != 0 || a != 4)
+ {
+ if (pssData.page == PSS_PAGE_BATTLE_MOVES)
+ {
+ sub_80A1FF8(gOtherText_Power2, 13, 1, 15);
+ sub_80A1FF8(gOtherText_Accuracy2, 13, 1, 17);
+ }
+ else
+ {
+ sub_80A1FF8(gOtherText_Appeal2, 13, 1, 15);
+ sub_80A1FF8(gOtherText_Jam2, 13, 1, 17);
+ }
+ }
+}
+
+static void sub_80A015C(struct Pokemon *mon)
+{
+ u8 i;
+ u16 move;
+ u16 curPP;
+ u8 ppBonuses;
+ u8 maxPP;
+ u8 *buffer;
+
+ for (i = 0; i < 4; i++)
+ {
+ move = GetMonMove(mon, i);
+ curPP = GetMonMovePP(mon, i);
+
+ if (move == 0)
+ {
+ sub_80A1918(i, 1);
+ sub_80A1FF8(gOtherText_OneDash, 13, 15, (2 * i) + 4);
+ MenuPrint(gOtherText_TwoDashes, 26, (2 * i) + 4);
+ }
+ else
+ {
+ if (pssData.page == PSS_PAGE_BATTLE_MOVES)
+ {
+ sub_80A198C(gBattleMoves[move].type, 87, ((2 * i) + 4) * 8, i);
+ }
+ else
+ {
+ sub_80A198C(gContestMoves[move].contestCategory + 18, 87, ((2 * i) + 4) * 8, i);
+ }
+
+ sub_80A1FF8(gMoveNames[move], 13, 15, (2 * i) + 4);
+ GetStringCenterAlignXOffset(1, 24, (2 * i) + 4);
+
+ ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES);
+ maxPP = CalculatePPWithBonus(move, ppBonuses, i);
+
+ buffer = gStringVar1;
+ buffer = sub_8072C14(buffer, curPP, 14, 1);
+ *buffer++ = CHAR_SLASH;
+ sub_8072C14(buffer, maxPP, 32, 1);
+ MenuPrint(gStringVar1, 25, (2 * i) + 4);
+ }
+ }
+}
+
+static void sub_80A029C(struct Pokemon *mon)
+{
+ u8 *buffer;
+ u16 move;
+ u8 pp;
+
+ if (pssData.moveToLearn == 0)
+ {
+ sub_80A1FF8(gOtherText_CancelNoTerminator, 13, 15, 12);
+ return;
+ }
+
+ move = pssData.moveToLearn;
+
+ if (pssData.page == PSS_PAGE_BATTLE_MOVES)
+ sub_80A198C(gBattleMoves[move].type, 87, 96, 4);
+ else
+ sub_80A198C(gContestMoves[move].contestCategory + 18, 87, 96, 4);
+
+ if (pssData.page == PSS_PAGE_BATTLE_MOVES)
+ sub_80A1FF8(gMoveNames[move], 10, 15, 12);
+ else
+ sub_80A1FF8(gMoveNames[move], 9, 15, 12);
+
+ GetStringCenterAlignXOffset(1, 24, 12);
+
+ buffer = gStringVar1;
+ pp = gBattleMoves[move].pp;
+ buffer = sub_8072C14(buffer, pp, 14, 1);
+ *buffer++ = CHAR_SLASH;
+ buffer = sub_8072C14(buffer, pp, 32, 1);
+ MenuPrint(gStringVar1, 25, 12);
+}
+
+static void sub_80A0390(void)
+{
+ u8 i;
+
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ MenuZeroFillWindowRect(15, (i * 2) + 4, 28, (i * 2) + 5);
+ }
+}
+
+u16 sub_80A03BC(struct Pokemon *mon, u8 selectedMoveIndex)
+{
+ u16 move;
+
+ if (selectedMoveIndex != MAX_MON_MOVES)
+ {
+ move = GetMonMove(mon, selectedMoveIndex);
+ }
+ else
+ {
+ if (pssData.moveToLearn != 0)
+ {
+ move = pssData.moveToLearn;
+ }
+ else
+ {
+ move = 0xFFFF;
+ }
+ }
+
+ return move;
+}
+
+void sub_80A03F0(struct Pokemon *mon, u8 *selectedMoveIndex)
+{
+ u16 move = sub_80A03BC(mon, *selectedMoveIndex);
+
+ if (pssData.page == PSS_PAGE_BATTLE_MOVES)
+ {
+ sub_80A04CC(move);
+ sub_80A057C(0xFFFF);
+ }
+ else
+ {
+ sub_80A057C(move);
+ }
+}
+
+static void sub_80A0428(struct Pokemon *mon, u8 *selectedMoveIndex)
+{
+ u16 move = sub_80A03BC(mon, *selectedMoveIndex);
+ MenuZeroFillWindowRect(11, 15, 28, 18);
+
+ if (pssData.page == PSS_PAGE_BATTLE_MOVES)
+ {
+ sub_80A046C(move);
+ }
+ else
+ {
+ sub_80A0498(move);
+ }
+
+ sub_80A03F0(mon, selectedMoveIndex);
+}
+
+static void sub_80A046C(u16 move)
+{
+ if (move == 0xFFFF) return;
+
+ MenuPrint(gMoveDescriptions[move - 1], 11, 15);
+}
+
+static void sub_80A0498(u16 move)
+{
+ if (move == 0xFFFF) return;
+
+ MenuPrint(gContestEffectStrings[gContestMoves[move].effect], 11, 15);
+}
+
+static void sub_80A04CC(u16 move)
+{
+ u8 *buffer;
+
+ if (move == 0xFFFF) return;
+
+ if (gBattleMoves[move].power <= 1)
+ {
+ buffer = gStringVar1;
+ buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1);
+ MenuPrint(gStringVar1, 7, 15);
+ }
+ else
+ {
+ buffer = gStringVar1;
+ buffer = sub_8072C14(buffer, gBattleMoves[move].power, 21, 1);
+ MenuPrint(gStringVar1, 7, 15);
+ }
+
+ if (gBattleMoves[move].accuracy == 0)
+ {
+ buffer = gStringVar1;
+ buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1);
+ MenuPrint(gStringVar1, 7, 17);
+ }
+ else
+ {
+ buffer = gStringVar1;
+ buffer = sub_8072C14(buffer, gBattleMoves[move].accuracy, 21, 1);
+ MenuPrint(gStringVar1, 7, 17);
+ }
+}
+
+#ifdef NONMATCHING // The two vramAddr lines are non-matching.
+static void sub_80A057C(u16 move)
+{
+ u8 appeal;
+ u8 jam;
+ u8 i;
+ u16 *vramAddr = (u16 *)(VRAM + 0x6800);
+
+ if (move == 0xFFFF) return;
+
+ appeal = gContestEffects[gContestMoves[move].effect].appeal;
+ if (appeal != 0xFF)
+ {
+ appeal = appeal / 10;
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ u16 tile = 0x1039;
+ int and = 3;
+ int offset = 0x3CC / 2;
+ if (appeal != 0xFF && i < appeal)
+ {
+ tile = 0x103A;
+ }
+
+ *(&vramAddr[(i >> 2 << 5) + (i & and)] + offset) = tile;
+ }
+
+ if (move == 0xFFFF) return;
+
+ jam = gContestEffects[gContestMoves[move].effect].jam;
+ if (jam != 0xFF)
+ {
+ jam = jam / 10;
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ u16 tile = 0x103D;
+ int and = 3;
+ int offset = 0x226;
+ if (jam != 0xFF && i < jam)
+ {
+ tile = 0x103C;
+ }
+
+ *(&vramAddr[(i >> 2 << 5) + (i & and)] + offset) = tile;
+ }
+}
+#else
+__attribute__((naked))
+static void sub_80A057C(u16 move)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ ldr r0, _080A0648 @ =0x06006800\n\
+ mov r8, r0\n\
+ ldr r0, _080A064C @ =0x0000ffff\n\
+ cmp r5, r0\n\
+ beq _080A063A\n\
+ ldr r1, _080A0650 @ =gContestEffects\n\
+ ldr r2, _080A0654 @ =gContestMoves\n\
+ lsls r3, r5, 3\n\
+ adds r0, r3, r2\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r4, [r0, 0x1]\n\
+ mov r10, r2\n\
+ mov r9, r3\n\
+ cmp r4, 0xFF\n\
+ beq _080A05B8\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xA\n\
+ bl __udivsi3\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+_080A05B8:\n\
+ movs r2, 0\n\
+ movs r7, 0x3\n\
+ movs r6, 0xF3\n\
+ lsls r6, 2\n\
+_080A05C0:\n\
+ ldr r3, _080A0658 @ =0x00001039\n\
+ cmp r4, 0xFF\n\
+ beq _080A05CC\n\
+ cmp r2, r4\n\
+ bcs _080A05CC\n\
+ adds r3, 0x1\n\
+_080A05CC:\n\
+ lsrs r0, r2, 2\n\
+ lsls r0, 5\n\
+ adds r1, r2, 0\n\
+ ands r1, r7\n\
+ adds r1, r0\n\
+ lsls r1, 1\n\
+ add r1, r8\n\
+ adds r1, r6\n\
+ strh r3, [r1]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ cmp r2, 0x7\n\
+ bls _080A05C0\n\
+ ldr r0, _080A064C @ =0x0000ffff\n\
+ cmp r5, r0\n\
+ beq _080A063A\n\
+ mov r0, r9\n\
+ add r0, r10\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 2\n\
+ ldr r1, _080A0650 @ =gContestEffects\n\
+ adds r0, r1\n\
+ ldrb r4, [r0, 0x2]\n\
+ cmp r4, 0xFF\n\
+ beq _080A060C\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xA\n\
+ bl __udivsi3\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+_080A060C:\n\
+ movs r2, 0\n\
+ movs r6, 0x3\n\
+ ldr r5, _080A065C @ =0x0000044c\n\
+_080A0612:\n\
+ ldr r3, _080A0660 @ =0x0000103d\n\
+ cmp r4, 0xFF\n\
+ beq _080A061E\n\
+ cmp r2, r4\n\
+ bcs _080A061E\n\
+ subs r3, 0x1\n\
+_080A061E:\n\
+ lsrs r0, r2, 2\n\
+ lsls r0, 5\n\
+ adds r1, r2, 0\n\
+ ands r1, r6\n\
+ adds r1, r0\n\
+ lsls r1, 1\n\
+ add r1, r8\n\
+ adds r1, r5\n\
+ strh r3, [r1]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ cmp r2, 0x7\n\
+ bls _080A0612\n\
+_080A063A:\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080A0648: .4byte 0x06006800\n\
+_080A064C: .4byte 0x0000ffff\n\
+_080A0650: .4byte gContestEffects\n\
+_080A0654: .4byte gContestMoves\n\
+_080A0658: .4byte 0x00001039\n\
+_080A065C: .4byte 0x0000044c\n\
+_080A0660: .4byte 0x0000103d\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
bool8 PokemonSummaryScreen_CheckOT(struct Pokemon *mon)
{
@@ -37,7 +3372,7 @@ bool8 PokemonSummaryScreen_CheckOT(struct Pokemon *mon)
return FALSE;
}
-void PokemonSummaryScreen_PrintEggTrainerMemo(struct Pokemon *mon, u8 left, u8 top)
+static void PokemonSummaryScreen_PrintEggTrainerMemo(struct Pokemon *mon, u8 left, u8 top)
{
u8 locationMet;
u8 gameMet = GetMonData(mon, MON_DATA_MET_GAME);
@@ -74,12 +3409,12 @@ void PokemonSummaryScreen_PrintEggTrainerMemo(struct Pokemon *mon, u8 left, u8 t
MenuPrint(gOtherText_EggDayCare, left, top);
}
-void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8 top)
+static void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *mon, u8 left, u8 top)
{
u8 locationMet;
u8 gameMet;
u8 *ptr = gStringVar4;
- u8 nature = GetNature(pokemon);
+ u8 nature = GetNature(mon);
#if ENGLISH
ptr = sub_80A1E9C(ptr, gNatureNames[nature], 14);
@@ -96,11 +3431,11 @@ void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8
ptr = StringCopy(ptr, gOtherText_Terminator4);
#endif
- if (PokemonSummaryScreen_CheckOT(pokemon) == TRUE)
+ if (PokemonSummaryScreen_CheckOT(mon) == TRUE)
{
- locationMet = GetMonData(pokemon, MON_DATA_MET_LOCATION);
+ locationMet = GetMonData(mon, MON_DATA_MET_LOCATION);
- if (GetMonData(pokemon, MON_DATA_MET_LEVEL) == 0)
+ if (GetMonData(mon, MON_DATA_MET_LEVEL) == 0)
{
ptr = PokemonSummaryScreen_CopyPokemonLevel(ptr, 5);
*ptr = CHAR_NEWLINE;
@@ -119,7 +3454,7 @@ void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8
}
else
{
- u8 levelMet = GetMonData(pokemon, MON_DATA_MET_LEVEL);
+ u8 levelMet = GetMonData(mon, MON_DATA_MET_LEVEL);
ptr = PokemonSummaryScreen_CopyPokemonLevel(ptr, levelMet);
*ptr = CHAR_NEWLINE;
@@ -132,7 +3467,7 @@ void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8
}
else
{
- gameMet = GetMonData(pokemon, MON_DATA_MET_GAME);
+ gameMet = GetMonData(mon, MON_DATA_MET_GAME);
if (!(gameMet == VERSION_RUBY || gameMet == VERSION_SAPPHIRE || gameMet == VERSION_EMERALD))
{
@@ -143,10 +3478,10 @@ void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8
}
else
{
- locationMet = GetMonData(pokemon, MON_DATA_MET_LOCATION);
+ locationMet = GetMonData(mon, MON_DATA_MET_LOCATION);
if (locationMet == 0xFF)
{
- u8 levelMet = GetMonData(pokemon, MON_DATA_MET_LEVEL);
+ u8 levelMet = GetMonData(mon, MON_DATA_MET_LEVEL);
ptr = PokemonSummaryScreen_CopyPokemonLevel(ptr, levelMet);
*ptr = CHAR_NEWLINE;
@@ -163,7 +3498,7 @@ void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8
}
else
{
- u8 levelMet = GetMonData(pokemon, MON_DATA_MET_LEVEL);
+ u8 levelMet = GetMonData(mon, MON_DATA_MET_LEVEL);
ptr = PokemonSummaryScreen_CopyPokemonLevel(ptr, levelMet);
*ptr = CHAR_NEWLINE;
@@ -178,3 +3513,2065 @@ void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8
MenuPrint(gStringVar4, left++, top++);
}
+
+static void sub_80A0958(struct Pokemon *mon)
+{
+ u16 species;
+ u8 *buffer;
+ u8 level;
+
+ species = GetMonData(mon, MON_DATA_SPECIES);
+
+ buffer = gStringVar1;
+ buffer = sub_80A1E58(buffer, 13);
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x11;
+ buffer[2] = 0x7;
+ buffer[3] = CHAR_SLASH;
+ buffer += 4;
+ buffer = StringCopy(buffer, gSpeciesNames[species]);
+
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x13;
+ buffer[2] = 0x50;
+ buffer[3] = EOS;
+
+ MenuPrint(gStringVar1, 0, 14);
+ MenuZeroFillWindowRect(3, 16, 9, 17);
+
+ level = GetMonData(mon, MON_DATA_LEVEL);
+
+ buffer = sub_80A1E58(gStringVar1, 13);
+ buffer[0] = 0x34;
+ buffer += 1;
+ buffer = ConvertIntToDecimalString(buffer, level);
+
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x13;
+ buffer[2] = 0x20;
+ buffer[3] = EOS;
+
+ MenuPrint(gStringVar1, 3, 16);
+ sub_80A0A2C(mon, 7, 16);
+}
+
+static void sub_80A0A2C(struct Pokemon *mon, u8 left, u8 top)
+{
+ const u8 *genderSymbol;
+ u8 var1;
+ u8 bottom;
+ u16 species = GetMonData(mon, MON_DATA_SPECIES2);
+
+ if (species != SPECIES_NIDORAN_M && species != SPECIES_NIDORAN_F)
+ {
+ u8 gender = GetMonGender(mon);
+ switch (gender)
+ {
+ default:
+ bottom = top + 1;
+ MenuZeroFillWindowRect(left, top, left, bottom);
+ return;
+ case MON_MALE:
+ genderSymbol = gOtherText_MaleSymbol2;
+ var1 = 11;
+ break;
+ case MON_FEMALE:
+ genderSymbol = gOtherText_FemaleSymbolAndLv;
+ var1 = 12;
+ break;
+ }
+
+ sub_80A1FF8(genderSymbol, var1, left, top);
+ }
+}
+
+u8 GetNumRibbons(struct Pokemon *mon)
+{
+ u8 numRibbons = GetMonData(mon, MON_DATA_COOL_RIBBON);
+ numRibbons += GetMonData(mon, MON_DATA_BEAUTY_RIBBON);
+ numRibbons += GetMonData(mon, MON_DATA_CUTE_RIBBON);
+ numRibbons += GetMonData(mon, MON_DATA_SMART_RIBBON);
+ numRibbons += GetMonData(mon, MON_DATA_TOUGH_RIBBON);
+ numRibbons += GetMonData(mon, MON_DATA_CHAMPION_RIBBON);
+ numRibbons += GetMonData(mon, MON_DATA_WINNING_RIBBON);
+ numRibbons += GetMonData(mon, MON_DATA_VICTORY_RIBBON);
+ numRibbons += GetMonData(mon, MON_DATA_ARTIST_RIBBON);
+ numRibbons += GetMonData(mon, MON_DATA_EFFORT_RIBBON);
+ numRibbons += GetMonData(mon, MON_DATA_GIFT_RIBBON_1);
+ numRibbons += GetMonData(mon, MON_DATA_GIFT_RIBBON_2);
+ numRibbons += GetMonData(mon, MON_DATA_GIFT_RIBBON_3);
+ numRibbons += GetMonData(mon, MON_DATA_GIFT_RIBBON_4);
+ numRibbons += GetMonData(mon, MON_DATA_GIFT_RIBBON_5);
+ numRibbons += GetMonData(mon, MON_DATA_GIFT_RIBBON_6);
+ numRibbons += GetMonData(mon, MON_DATA_GIFT_RIBBON_7);
+
+ return numRibbons;
+}
+
+static void PrintNumRibbons(struct Pokemon *mon)
+{
+ u8 numRibbons = GetNumRibbons(mon);
+
+ if (numRibbons == 0)
+ {
+ StringCopy(gStringVar1, gOtherText_None);
+ }
+ else
+ {
+ u8 ribbonsStringLength;
+ u8 *text;
+
+ StringCopy(gStringVar1, gOtherText_Ribbons00);
+ ribbonsStringLength = StringLength(gStringVar1);
+
+ text = &gStringVar1[ribbonsStringLength - 2];
+
+ text[0] = EXT_CTRL_CODE_BEGIN;
+ text[1] = 0x14;
+ text[2] = 6;
+ ConvertIntToDecimalStringN(&text[3], numRibbons, 1, 2);
+ }
+
+ MenuPrint(sUnknown_083C15AE, 21, 4);
+}
+
+static void PrintHeldItemName(u16 itemId, u8 left, u8 top)
+{
+ if (itemId == ITEM_ENIGMA_BERRY
+ && sub_80F9344() == TRUE
+ && IsLinkDoubleBattle() == TRUE
+ && (pssData.monIndex == 1 || pssData.monIndex == 4 || pssData.monIndex == 5))
+ {
+ StringCopy(gStringVar1, ItemId_GetItem(itemId)->name);
+ }
+ else if (itemId == 0)
+ {
+ StringCopy(gStringVar1, gOtherText_None);
+ }
+ else
+ {
+ CopyItemName(itemId, gStringVar1);
+ }
+
+ MenuPrint(sUnknown_083C15B4, left, top);
+}
+
+static void DrawExperienceProgressBar(struct Pokemon *mon, u8 left, u8 top)
+{
+ u32 curExperience;
+ u8 level;
+ u16 species;
+ u8 i;
+ u16 *vramAddr;
+ u32 expToNextLevel = 0;
+ s64 numExpProgressBarTicks = 0;
+
+ curExperience = GetMonData(mon, MON_DATA_EXP);
+ level = GetMonData(mon, MON_DATA_LEVEL);
+ species = GetMonData(mon, MON_DATA_SPECIES);
+
+ // The experience progress bar is shown as empty when the Pokemon is already level 100.
+ if (level < 100)
+ {
+ u32 nextLevelExp;
+ u32 expSinceLastLevel;
+ u32 expBetweenLevels;
+ u32 curLevelExperience;
+
+ nextLevelExp = gExperienceTables[gBaseStats[species].growthRate][level + 1];
+ expToNextLevel = nextLevelExp - curExperience;
+ curLevelExperience = gExperienceTables[gBaseStats[species].growthRate][level];
+ expBetweenLevels = (nextLevelExp - curLevelExperience);
+ expSinceLastLevel = curExperience - curLevelExperience;
+
+ // Calculate the number of 1-pixel "ticks" to illuminate in the experience progress bar.
+ // There are 8 tiles that make up the bar, and each tile has 8 "ticks". Hence, the numerator
+ // is multiplied by 64.
+ numExpProgressBarTicks = (expSinceLastLevel * 64) / expBetweenLevels;
+ if (numExpProgressBarTicks == 0 && expSinceLastLevel != 0)
+ {
+ // Ensure sure some exp. gain is visible in the progress bar.
+ numExpProgressBarTicks = 1;
+ }
+ }
+
+ ConvertIntToDecimalString(gStringVar1, expToNextLevel);
+ MenuPrint_RightAligned(gStringVar1, left + 6, top);
+
+
+ // Draw each of the 8 tiles that make up the experience progress bar.
+ vramAddr = (u16 *)(VRAM + 0x4CAA);
+ for (i = 0; i < 8; i++)
+ {
+ u16 tile;
+ u16 baseTile = 0x2062;
+
+ if (numExpProgressBarTicks > 7)
+ {
+ tile = 0x206A; // full exp. bar block
+ }
+ else
+ {
+ tile = (numExpProgressBarTicks % 8) + baseTile;
+ }
+
+ vramAddr[i] = tile;
+
+ numExpProgressBarTicks -= 8;
+ if (numExpProgressBarTicks < 0)
+ {
+ numExpProgressBarTicks = 0;
+ }
+ }
+}
+
+// Prints the text displayed in the top-left or top-right of the screen.
+// Each of the 4 summary screens displays different text.
+static void PrintSummaryWindowHeaderText(void)
+{
+ u8 *buffer = gStringVar1;
+
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x12;
+ buffer[2] = 0x2;
+
+ buffer += 3;
+ buffer = sub_80A1E58(buffer, 13);
+ buffer = StringCopy(buffer, sPageHeaderTexts[pssData.headerTextId]);
+
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x13;
+ buffer[2] = 0x58;
+ buffer[3] = EOS;
+
+ MenuPrint(gStringVar1, 0, 0);
+
+ if (pssData.headerActionTextId != 0)
+ {
+ GetStringCenterAlignXOffset(5, 23, 0);
+ GetStringCenterAlignXOffset(6, 24, 0);
+ }
+ else
+ {
+ MenuZeroFillWindowRect(23, 0, 24, 1);
+ }
+
+ buffer = gStringVar1;
+ buffer = sub_80A1E58(buffer, 13);
+ buffer = StringCopy(buffer, sPageHeaderTexts[pssData.headerActionTextId]);
+
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x13;
+ buffer[2] = 0x28;
+ buffer[3] = EOS;
+
+ MenuPrint(gStringVar1, 25, 0);
+}
+
+// If the given pokemon previously had the pokerus virus, a small
+// dot will be drawn in between the pokeball and the mon's level.
+static void DrawPokerusSurvivorDot(struct Pokemon *mon)
+{
+ u16 *vram1 = (u16 *)(VRAM + 0xE444);
+ u16 *vram2 = (u16 *)(VRAM + 0xEC44);
+
+ if (!CheckPartyPokerus(mon, 0) && CheckPartyHasHadPokerus(mon, 0))
+ {
+ *vram1 = 0x2C;
+ *vram2 = 0x2C;
+ }
+ else
+ {
+ *vram1 = 0x081A;
+ *vram2 = 0x081A;
+ }
+}
+
+// Draws the 4 small navigation circles at the top of the pokemon summary screen.
+#ifdef NONMATCHING
+static void DrawSummaryScreenNavigationDots(void)
+{
+ void *dest;
+ u16 arr[8];
+ u8 i = 0;
+ struct PokemonSummaryScreenStruct *SS = (struct PokemonSummaryScreenStruct *)(gSharedMem + 0x18000);
+ u16 var1 = 0x4040;
+ u16 var2 = 0x404A;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (i < SS->unk75)
+ {
+ arr[i * 2] = var1;
+ arr[(i * 2) + 1] = var1 + 1;
+ }
+ else if (i > SS->unk76)
+ {
+ arr[i * 2] = var2;
+ arr[(i * 2) + 1] = var2 + 1;
+ }
+ else
+ {
+ if (i < SS->unkB)
+ {
+ arr[i * 2] = 0x4046;
+ arr[(i * 2) + 1] = 0x4046 + 1;
+ }
+
+ if (i == SS->unkB)
+ {
+ if (i != SS->unk76)
+ {
+ arr[i * 2] = 0x4041;
+ arr[(i * 2) + 1] = 0x4041 + 1;
+ }
+ else
+ {
+ arr[i * 2] = 0x404B;
+ arr[(i * 2) + 1] = 0x404B + 1;
+ }
+ }
+
+ if (i > SS->unkB)
+ {
+ if (i != SS->unk76)
+ {
+ arr[i * 2] = 0x4043;
+ arr[(i * 2) + 1] = 0x4043 + 1;
+ }
+ else
+ {
+ arr[i * 2] = 0x4048;
+ arr[(i * 2) + 1] = 0x4048 + 1;
+ }
+ }
+ }
+ }
+
+ dest = (void *)(VRAM + 0xE016);
+ DmaCopy16(3, arr, dest, 16);
+
+ for (i = 0; i < 8; i++)
+ {
+ arr[i] += 0x10;
+ }
+
+ dest = (void *)(VRAM + 0xE056);
+ DmaCopy16(3, arr, dest, 16);
+}
+#else
+__attribute__((naked))
+static void DrawSummaryScreenNavigationDots(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x10\n\
+ movs r3, 0\n\
+ ldr r6, _080A0F24 @ =gSharedMem + 0x18000\n\
+ adds r5, r6, 0\n\
+ ldr r1, _080A0F28 @ =0x00004040\n\
+ mov r8, r1\n\
+ ldr r2, _080A0F2C @ =0x0000404a\n\
+ mov r10, r2\n\
+_080A0F02:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x75\n\
+ ldrb r0, [r0]\n\
+ cmp r3, r0\n\
+ bcs _080A0F30\n\
+ lsls r1, r3, 1\n\
+ lsls r0, r3, 2\n\
+ add r0, sp\n\
+ mov r4, r8\n\
+ strh r4, [r0]\n\
+ adds r1, 0x1\n\
+ lsls r1, 1\n\
+ mov r7, sp\n\
+ adds r0, r7, r1\n\
+ strh r4, [r0]\n\
+ b _080A0FE2\n\
+ .align 2, 0\n\
+_080A0F24: .4byte gSharedMem + 0x18000\n\
+_080A0F28: .4byte 0x00004040\n\
+_080A0F2C: .4byte 0x0000404a\n\
+_080A0F30:\n\
+ movs r0, 0x76\n\
+ adds r0, r6\n\
+ mov r12, r0\n\
+ ldrb r1, [r0]\n\
+ cmp r3, r1\n\
+ bls _080A0F52\n\
+ lsls r1, r3, 1\n\
+ lsls r0, r3, 2\n\
+ add r0, sp\n\
+ mov r2, r10\n\
+ strh r2, [r0]\n\
+ adds r1, 0x1\n\
+ lsls r1, 1\n\
+ mov r4, sp\n\
+ adds r0, r4, r1\n\
+ strh r2, [r0]\n\
+ b _080A0FE2\n\
+_080A0F52:\n\
+ ldrb r4, [r5, 0xB]\n\
+ cmp r3, r4\n\
+ bcs _080A0F6E\n\
+ lsls r1, r3, 1\n\
+ lsls r0, r3, 2\n\
+ mov r7, sp\n\
+ adds r2, r7, r0\n\
+ ldr r0, _080A0F88 @ =0x00004046\n\
+ strh r0, [r2]\n\
+ adds r1, 0x1\n\
+ lsls r1, 1\n\
+ add r1, sp\n\
+ adds r0, 0x1\n\
+ strh r0, [r1]\n\
+_080A0F6E:\n\
+ cmp r3, r4\n\
+ bne _080A0FA6\n\
+ mov r0, r12\n\
+ ldrb r0, [r0]\n\
+ cmp r3, r0\n\
+ beq _080A0F90\n\
+ lsls r1, r3, 1\n\
+ lsls r0, r3, 2\n\
+ mov r4, sp\n\
+ adds r2, r4, r0\n\
+ ldr r0, _080A0F8C @ =0x00004041\n\
+ b _080A0F9A\n\
+ .align 2, 0\n\
+_080A0F88: .4byte 0x00004046\n\
+_080A0F8C: .4byte 0x00004041\n\
+_080A0F90:\n\
+ lsls r1, r3, 1\n\
+ lsls r0, r3, 2\n\
+ mov r7, sp\n\
+ adds r2, r7, r0\n\
+ ldr r0, _080A0FC4 @ =0x0000404b\n\
+_080A0F9A:\n\
+ strh r0, [r2]\n\
+ adds r1, 0x1\n\
+ lsls r1, 1\n\
+ add r1, sp\n\
+ adds r0, 0x1\n\
+ strh r0, [r1]\n\
+_080A0FA6:\n\
+ ldrb r0, [r5, 0xB]\n\
+ cmp r3, r0\n\
+ bls _080A0FE2\n\
+ adds r0, r6, 0\n\
+ adds r0, 0x76\n\
+ ldrb r0, [r0]\n\
+ cmp r3, r0\n\
+ beq _080A0FCC\n\
+ lsls r1, r3, 1\n\
+ lsls r0, r3, 2\n\
+ mov r4, sp\n\
+ adds r2, r4, r0\n\
+ ldr r0, _080A0FC8 @ =0x00004043\n\
+ b _080A0FD6\n\
+ .align 2, 0\n\
+_080A0FC4: .4byte 0x0000404b\n\
+_080A0FC8: .4byte 0x00004043\n\
+_080A0FCC:\n\
+ lsls r1, r3, 1\n\
+ lsls r0, r3, 2\n\
+ mov r7, sp\n\
+ adds r2, r7, r0\n\
+ ldr r0, _080A1034 @ =0x00004048\n\
+_080A0FD6:\n\
+ strh r0, [r2]\n\
+ adds r1, 0x1\n\
+ lsls r1, 1\n\
+ add r1, sp\n\
+ adds r0, 0x1\n\
+ strh r0, [r1]\n\
+_080A0FE2:\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0x3\n\
+ bls _080A0F02\n\
+ ldr r1, _080A1038 @ =0x0600e016\n\
+ ldr r0, _080A103C @ =0x040000d4\n\
+ mov r2, sp\n\
+ str r2, [r0]\n\
+ str r1, [r0, 0x4]\n\
+ ldr r1, _080A1040 @ =0x80000008\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ movs r3, 0\n\
+_080A0FFE:\n\
+ lsls r0, r3, 1\n\
+ mov r4, sp\n\
+ adds r1, r4, r0\n\
+ ldrh r0, [r1]\n\
+ adds r0, 0x10\n\
+ strh r0, [r1]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0x7\n\
+ bls _080A0FFE\n\
+ ldr r1, _080A1044 @ =0x0600e056\n\
+ ldr r0, _080A103C @ =0x040000d4\n\
+ str r4, [r0]\n\
+ str r1, [r0, 0x4]\n\
+ ldr r1, _080A1040 @ =0x80000008\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ add sp, 0x10\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080A1034: .4byte 0x00004048\n\
+_080A1038: .4byte 0x0600e016\n\
+_080A103C: .4byte 0x040000d4\n\
+_080A1040: .4byte 0x80000008\n\
+_080A1044: .4byte 0x0600e056\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+__attribute__((naked))
+void sub_80A1048(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ lsls r0, 2\n\
+ add r0, r8\n\
+ lsls r0, 3\n\
+ ldr r1, _080A10A0 @ =gTasks + 0x8\n\
+ adds r6, r0, r1\n\
+ ldrh r0, [r6]\n\
+ ldrh r1, [r6, 0x2]\n\
+ adds r0, r1\n\
+ strh r0, [r6, 0x2]\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ bne _080A106E\n\
+ b _080A1224\n\
+_080A106E:\n\
+ movs r5, 0x2\n\
+ ldrsh r2, [r6, r5]\n\
+ ldr r0, _080A10A4 @ =0x0000024a\n\
+ subs r0, r2\n\
+ lsls r0, 1\n\
+ ldr r1, _080A10A8 @ =gUnknown_08E73508\n\
+ adds r4, r0, r1\n\
+ ldr r5, _080A10AC @ =0x0600e480\n\
+ lsls r2, 1\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ adds r7, r1, 0\n\
+ cmp r2, r0\n\
+ bhi _080A10B4\n\
+ ldr r0, _080A10B0 @ =0x040000d4\n\
+ str r4, [r0]\n\
+ str r5, [r0, 0x4]\n\
+ lsrs r1, r2, 1\n\
+ movs r2, 0x80\n\
+ lsls r2, 24\n\
+ orrs r1, r2\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ b _080A10E0\n\
+ .align 2, 0\n\
+_080A10A0: .4byte gTasks + 0x8\n\
+_080A10A4: .4byte 0x0000024a\n\
+_080A10A8: .4byte gUnknown_08E73508\n\
+_080A10AC: .4byte 0x0600e480\n\
+_080A10B0: .4byte 0x040000d4\n\
+_080A10B4:\n\
+ ldr r3, _080A110C @ =0x040000d4\n\
+ str r4, [r3]\n\
+ str r5, [r3, 0x4]\n\
+ ldr r0, _080A1110 @ =0x80000800\n\
+ str r0, [r3, 0x8]\n\
+ ldr r0, [r3, 0x8]\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ adds r4, r0\n\
+ adds r5, r0\n\
+ ldr r1, _080A1114 @ =0xfffff000\n\
+ adds r2, r1\n\
+ cmp r2, r0\n\
+ bhi _080A10B4\n\
+ str r4, [r3]\n\
+ str r5, [r3, 0x4]\n\
+ lsrs r0, r2, 1\n\
+ movs r1, 0x80\n\
+ lsls r1, 24\n\
+ orrs r0, r1\n\
+ str r0, [r3, 0x8]\n\
+ ldr r0, [r3, 0x8]\n\
+_080A10E0:\n\
+ movs r5, 0x2\n\
+ ldrsh r0, [r6, r5]\n\
+ ldr r1, _080A1118 @ =0x0000026a\n\
+ subs r1, r0\n\
+ lsls r1, 1\n\
+ adds r3, r1, r7\n\
+ ldr r4, _080A111C @ =0x0600e4c0\n\
+ lsls r1, r0, 1\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ cmp r1, r0\n\
+ bhi _080A1120\n\
+ ldr r0, _080A110C @ =0x040000d4\n\
+ str r3, [r0]\n\
+ str r4, [r0, 0x4]\n\
+ lsrs r1, 1\n\
+ movs r2, 0x80\n\
+ lsls r2, 24\n\
+ orrs r1, r2\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ b _080A114C\n\
+ .align 2, 0\n\
+_080A110C: .4byte 0x040000d4\n\
+_080A1110: .4byte 0x80000800\n\
+_080A1114: .4byte 0xfffff000\n\
+_080A1118: .4byte 0x0000026a\n\
+_080A111C: .4byte 0x0600e4c0\n\
+_080A1120:\n\
+ ldr r2, _080A1178 @ =0x040000d4\n\
+ str r3, [r2]\n\
+ str r4, [r2, 0x4]\n\
+ ldr r0, _080A117C @ =0x80000800\n\
+ str r0, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ adds r3, r0\n\
+ adds r4, r0\n\
+ ldr r5, _080A1180 @ =0xfffff000\n\
+ adds r1, r5\n\
+ cmp r1, r0\n\
+ bhi _080A1120\n\
+ str r3, [r2]\n\
+ str r4, [r2, 0x4]\n\
+ lsrs r0, r1, 1\n\
+ movs r1, 0x80\n\
+ lsls r1, 24\n\
+ orrs r0, r1\n\
+ str r0, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+_080A114C:\n\
+ movs r1, 0x2\n\
+ ldrsh r0, [r6, r1]\n\
+ ldr r1, _080A1184 @ =0x0000024a\n\
+ subs r1, r0\n\
+ lsls r1, 1\n\
+ adds r3, r1, r7\n\
+ ldr r4, _080A1188 @ =0x0600ec80\n\
+ lsls r1, r0, 1\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ cmp r1, r0\n\
+ bhi _080A118C\n\
+ ldr r0, _080A1178 @ =0x040000d4\n\
+ str r3, [r0]\n\
+ str r4, [r0, 0x4]\n\
+ lsrs r1, 1\n\
+ movs r2, 0x80\n\
+ lsls r2, 24\n\
+ orrs r1, r2\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ b _080A11B8\n\
+ .align 2, 0\n\
+_080A1178: .4byte 0x040000d4\n\
+_080A117C: .4byte 0x80000800\n\
+_080A1180: .4byte 0xfffff000\n\
+_080A1184: .4byte 0x0000024a\n\
+_080A1188: .4byte 0x0600ec80\n\
+_080A118C:\n\
+ ldr r2, _080A11E4 @ =0x040000d4\n\
+ str r3, [r2]\n\
+ str r4, [r2, 0x4]\n\
+ ldr r0, _080A11E8 @ =0x80000800\n\
+ str r0, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ adds r3, r0\n\
+ adds r4, r0\n\
+ ldr r5, _080A11EC @ =0xfffff000\n\
+ adds r1, r5\n\
+ cmp r1, r0\n\
+ bhi _080A118C\n\
+ str r3, [r2]\n\
+ str r4, [r2, 0x4]\n\
+ lsrs r0, r1, 1\n\
+ movs r1, 0x80\n\
+ lsls r1, 24\n\
+ orrs r0, r1\n\
+ str r0, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+_080A11B8:\n\
+ movs r1, 0x2\n\
+ ldrsh r0, [r6, r1]\n\
+ ldr r1, _080A11F0 @ =0x0000026a\n\
+ subs r1, r0\n\
+ lsls r1, 1\n\
+ adds r3, r1, r7\n\
+ ldr r4, _080A11F4 @ =0x0600ecc0\n\
+ lsls r1, r0, 1\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ cmp r1, r0\n\
+ bhi _080A11F8\n\
+ ldr r0, _080A11E4 @ =0x040000d4\n\
+ str r3, [r0]\n\
+ str r4, [r0, 0x4]\n\
+ lsrs r1, 1\n\
+ movs r2, 0x80\n\
+ lsls r2, 24\n\
+ orrs r1, r2\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ b _080A1224\n\
+ .align 2, 0\n\
+_080A11E4: .4byte 0x040000d4\n\
+_080A11E8: .4byte 0x80000800\n\
+_080A11EC: .4byte 0xfffff000\n\
+_080A11F0: .4byte 0x0000026a\n\
+_080A11F4: .4byte 0x0600ecc0\n\
+_080A11F8:\n\
+ ldr r2, _080A12B0 @ =0x040000d4\n\
+ str r3, [r2]\n\
+ str r4, [r2, 0x4]\n\
+ ldr r0, _080A12B4 @ =0x80000800\n\
+ str r0, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ adds r3, r0\n\
+ adds r4, r0\n\
+ ldr r5, _080A12B8 @ =0xfffff000\n\
+ adds r1, r5\n\
+ cmp r1, r0\n\
+ bhi _080A11F8\n\
+ str r3, [r2]\n\
+ str r4, [r2, 0x4]\n\
+ lsrs r0, r1, 1\n\
+ movs r1, 0x80\n\
+ lsls r1, 24\n\
+ orrs r0, r1\n\
+ str r0, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+_080A1224:\n\
+ ldrb r4, [r6, 0x2]\n\
+ ldrh r7, [r6, 0x2]\n\
+ ldrh r0, [r6]\n\
+ mov r12, r0\n\
+ cmp r4, 0x9\n\
+ bhi _080A1272\n\
+ adds r3, r6, 0x4\n\
+ ldr r2, _080A12B0 @ =0x040000d4\n\
+ ldr r5, _080A12BC @ =0x80000001\n\
+_080A1236:\n\
+ lsls r1, r4, 1\n\
+ ldr r6, _080A12C0 @ =0x0600e480\n\
+ adds r0, r1, r6\n\
+ str r3, [r2]\n\
+ str r0, [r2, 0x4]\n\
+ str r5, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+ adds r6, 0x40\n\
+ adds r0, r1, r6\n\
+ str r3, [r2]\n\
+ str r0, [r2, 0x4]\n\
+ str r5, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+ ldr r6, _080A12C4 @ =0x0600ec80\n\
+ adds r0, r1, r6\n\
+ str r3, [r2]\n\
+ str r0, [r2, 0x4]\n\
+ str r5, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+ ldr r0, _080A12C8 @ =0x0600ecc0\n\
+ adds r1, r0\n\
+ str r3, [r2]\n\
+ str r1, [r2, 0x4]\n\
+ str r5, [r2, 0x8]\n\
+ ldr r0, [r2, 0x8]\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0x9\n\
+ bls _080A1236\n\
+_080A1272:\n\
+ mov r1, r12\n\
+ lsls r0, r1, 16\n\
+ cmp r0, 0\n\
+ beq _080A1286\n\
+ lsls r0, r7, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0\n\
+ ble _080A1286\n\
+ cmp r0, 0x9\n\
+ ble _080A12A4\n\
+_080A1286:\n\
+ lsls r0, r7, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x9\n\
+ ble _080A129A\n\
+ ldr r0, _080A12CC @ =gOtherText_Status\n\
+ movs r1, 0xD\n\
+ movs r2, 0x1\n\
+ movs r3, 0x12\n\
+ bl sub_80A1FF8\n\
+_080A129A:\n\
+ bl sub_80A1D18\n\
+ mov r0, r8\n\
+ bl DestroyTask\n\
+_080A12A4:\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080A12B0: .4byte 0x040000d4\n\
+_080A12B4: .4byte 0x80000800\n\
+_080A12B8: .4byte 0xfffff000\n\
+_080A12BC: .4byte 0x80000001\n\
+_080A12C0: .4byte 0x0600e480\n\
+_080A12C4: .4byte 0x0600ec80\n\
+_080A12C8: .4byte 0x0600ecc0\n\
+_080A12CC: .4byte gOtherText_Status\n\
+ .syntax divided\n");
+}
+
+static void sub_80A12D0(s8 a)
+{
+ u8 newTaskId;
+
+ MenuZeroFillWindowRect(1, 18, 5, 19);
+ sub_80A18E4(29);
+
+ newTaskId = CreateTask(sub_80A1048, 0);
+ gTasks[newTaskId].data[0] = a;
+
+ if (a < 0)
+ {
+ gTasks[newTaskId].data[1] = 10;
+ }
+ else
+ {
+ gTasks[newTaskId].data[1] = 0;
+ }
+
+ gTasks[newTaskId].data[2] = 1;
+}
+
+// void sub_80A1334(u8 taskId)
+// {
+// u8 i;
+// s16 var1;
+
+// gTasks[taskId].data[1] += gTasks[taskId].data[0];
+
+// var1 = 0;
+// if (gTasks[taskId].data[1] >= 0)
+// {
+// var1 = 10;
+// if (gTasks[taskId].data[1] < 10)
+// {
+// var1 = gTasks[taskId].data[1];
+// }
+// }
+
+// if (var1 > 0)
+// {
+// u8 *vramAddr = (u8 *)(VRAM + 0x5B40);
+// for (i = 0; i < 7; i++)
+// {
+// CpuSet(&gUnknown_08E73E88[(i + 13) * 64], vramAddr, var1 & 0x1FFFFF);
+// vramAddr += 64;
+// }
+// }
+
+// if (var1 <= 9)
+// {
+// u8 *vramAddr = (u8 *)(VRAM + 0x5B40);
+// for (i = 0; i < 64; i++)
+// {
+// u16 val = gTasks[taskId].data[2];
+// CpuSet(&val, vramAddr, ((10 - var1) & 0x1FFFFF) | 0x800000);
+// }
+// }
+// else
+// {
+// MenuZeroFillWindowRect(0, 19, 9, 19);
+// }
+
+// if (gTasks[taskId].data[0] == 0 || gTasks[taskId].data[1] < 0)
+// {
+// if (pssData.page == PSS_PAGE_BATTLE_MOVES)
+// {
+// MenuZeroFillWindowRect(0, 14, 9, 18);
+// sub_80A0958(pssData.loadedMon);
+
+// if (GetMonStatusAndPokerus(pssData.loadedMon))
+// {
+// sub_80A1FF8(gOtherText_Status, 13, 1, 18);
+// }
+
+// DestroyTask(taskId);
+// }
+// }
+
+// if (gTasks[taskId].data[1] > 9)
+// {
+// if (pssData.page == PSS_PAGE_BATTLE_MOVES)
+// {
+// sub_80A00F4(gTasks[taskId].data[3]);
+// }
+
+// sub_80A0428(pssData.loadedMon, &gTasks[taskId].data[3]);
+// DestroyTask(taskId);
+// }
+// }
+__attribute__((naked))
+static void sub_80A1334(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ lsls r0, 2\n\
+ add r0, r10\n\
+ lsls r0, 3\n\
+ ldr r1, _080A13E4 @ =gTasks + 0x8\n\
+ adds r7, r0, r1\n\
+ ldrh r0, [r7]\n\
+ ldrh r1, [r7, 0x2]\n\
+ adds r0, r1\n\
+ strh r0, [r7, 0x2]\n\
+ lsls r0, 16\n\
+ asrs r1, r0, 16\n\
+ movs r0, 0\n\
+ cmp r1, 0\n\
+ blt _080A136A\n\
+ movs r0, 0xA\n\
+ cmp r1, 0xA\n\
+ bgt _080A136A\n\
+ ldrh r0, [r7, 0x2]\n\
+_080A136A:\n\
+ lsls r0, 16\n\
+ asrs r2, r0, 16\n\
+ mov r9, r0\n\
+ cmp r2, 0\n\
+ ble _080A13A6\n\
+ movs r0, 0xA\n\
+ subs r0, r2\n\
+ lsls r0, 1\n\
+ ldr r1, _080A13E8 @ =0x06005b40\n\
+ adds r4, r0, r1\n\
+ movs r5, 0\n\
+ adds r6, r2, 0\n\
+ ldr r0, _080A13EC @ =0x001fffff\n\
+ mov r8, r0\n\
+_080A1386:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0xD\n\
+ lsls r0, 6\n\
+ ldr r1, _080A13F0 @ =gUnknown_08E73E88\n\
+ adds r0, r1\n\
+ adds r1, r4, 0\n\
+ mov r2, r8\n\
+ ands r2, r6\n\
+ bl CpuSet\n\
+ adds r4, 0x40\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x6\n\
+ bls _080A1386\n\
+_080A13A6:\n\
+ mov r1, r9\n\
+ asrs r2, r1, 16\n\
+ cmp r2, 0x9\n\
+ bgt _080A13F4\n\
+ ldr r4, _080A13E8 @ =0x06005b40\n\
+ movs r5, 0\n\
+ mov r8, sp\n\
+ movs r0, 0xA\n\
+ subs r6, r0, r2\n\
+ ldr r0, _080A13EC @ =0x001fffff\n\
+ ands r6, r0\n\
+ movs r0, 0x80\n\
+ lsls r0, 17\n\
+ mov r9, r0\n\
+_080A13C2:\n\
+ ldrh r0, [r7, 0x4]\n\
+ mov r1, r8\n\
+ strh r0, [r1]\n\
+ mov r0, sp\n\
+ adds r1, r4, 0\n\
+ mov r2, r9\n\
+ orrs r2, r6\n\
+ bl CpuSet\n\
+ adds r4, 0x40\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x6\n\
+ bls _080A13C2\n\
+ b _080A1400\n\
+ .align 2, 0\n\
+_080A13E4: .4byte gTasks + 0x8\n\
+_080A13E8: .4byte 0x06005b40\n\
+_080A13EC: .4byte 0x001fffff\n\
+_080A13F0: .4byte gUnknown_08E73E88\n\
+_080A13F4:\n\
+ movs r0, 0\n\
+ movs r1, 0x13\n\
+ movs r2, 0x9\n\
+ movs r3, 0x13\n\
+ bl MenuZeroFillWindowRect\n\
+_080A1400:\n\
+ movs r1, 0\n\
+ ldrsh r0, [r7, r1]\n\
+ cmp r0, 0\n\
+ beq _080A1410\n\
+ movs r1, 0x2\n\
+ ldrsh r0, [r7, r1]\n\
+ cmp r0, 0\n\
+ bge _080A144A\n\
+_080A1410:\n\
+ ldr r4, _080A1480 @ =gSharedMem + 0x18000\n\
+ ldrb r0, [r4, 0xB]\n\
+ cmp r0, 0x2\n\
+ bne _080A1444\n\
+ movs r0, 0\n\
+ movs r1, 0xE\n\
+ movs r2, 0x9\n\
+ movs r3, 0x12\n\
+ bl MenuZeroFillWindowRect\n\
+ adds r4, 0x10\n\
+ adds r0, r4, 0\n\
+ bl sub_80A0958\n\
+ adds r0, r4, 0\n\
+ bl GetMonStatusAndPokerus\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080A1444\n\
+ ldr r0, _080A1484 @ =gOtherText_Status\n\
+ movs r1, 0xD\n\
+ movs r2, 0x1\n\
+ movs r3, 0x12\n\
+ bl sub_80A1FF8\n\
+_080A1444:\n\
+ mov r0, r10\n\
+ bl DestroyTask\n\
+_080A144A:\n\
+ movs r1, 0x2\n\
+ ldrsh r0, [r7, r1]\n\
+ cmp r0, 0x9\n\
+ ble _080A1470\n\
+ ldr r4, _080A1480 @ =gSharedMem + 0x18000\n\
+ ldrb r0, [r4, 0xB]\n\
+ cmp r0, 0x2\n\
+ bne _080A1460\n\
+ ldrb r0, [r7, 0x6]\n\
+ bl sub_80A00F4\n\
+_080A1460:\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x10\n\
+ adds r1, r7, 0x6\n\
+ bl sub_80A0428\n\
+ mov r0, r10\n\
+ bl DestroyTask\n\
+_080A1470:\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080A1480: .4byte gSharedMem + 0x18000\n\
+_080A1484: .4byte gOtherText_Status\n\
+ .syntax divided\n");
+}
+
+// Related to re-drawing the summary area underneath the pokemon's picture
+// in all of the summary screen tabs.
+static void sub_80A1488(s8 a, u8 b)
+{
+ u8 taskId;
+
+ if (pssData.page == PSS_PAGE_BATTLE_MOVES)
+ {
+ MenuZeroFillWindowRect(0, 14, 9, 19);
+ }
+
+ taskId = FindTaskIdByFunc(sub_80A1334);
+ if (taskId == 0xFF)
+ {
+ taskId = CreateTask(sub_80A1334, 0);
+ }
+
+ gTasks[taskId].data[0] = (s8)a;
+
+ if ((s8)a < 0)
+ {
+ gTasks[taskId].data[1] = 10;
+ }
+ else
+ {
+ gTasks[taskId].data[1] = 0;
+ }
+
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = b;
+}
+
+__attribute__((naked))
+static void sub_80A1500(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ lsls r0, 2\n\
+ add r0, r10\n\
+ lsls r0, 3\n\
+ ldr r1, _080A15B0 @ =gTasks + 0x8\n\
+ adds r7, r0, r1\n\
+ ldrh r0, [r7]\n\
+ ldrh r1, [r7, 0x2]\n\
+ adds r0, r1\n\
+ strh r0, [r7, 0x2]\n\
+ lsls r0, 16\n\
+ asrs r1, r0, 16\n\
+ movs r0, 0\n\
+ cmp r1, 0\n\
+ blt _080A1536\n\
+ movs r0, 0xA\n\
+ cmp r1, 0xA\n\
+ bgt _080A1536\n\
+ ldrh r0, [r7, 0x2]\n\
+_080A1536:\n\
+ lsls r0, 16\n\
+ asrs r2, r0, 16\n\
+ mov r9, r0\n\
+ cmp r2, 0\n\
+ ble _080A1572\n\
+ movs r0, 0xA\n\
+ subs r0, r2\n\
+ lsls r0, 1\n\
+ ldr r1, _080A15B4 @ =0x06006b40\n\
+ adds r4, r0, r1\n\
+ movs r5, 0\n\
+ adds r6, r2, 0\n\
+ ldr r0, _080A15B8 @ =0x001fffff\n\
+ mov r8, r0\n\
+_080A1552:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0xD\n\
+ lsls r0, 6\n\
+ ldr r1, _080A15BC @ =gUnknown_08E74688\n\
+ adds r0, r1\n\
+ adds r1, r4, 0\n\
+ mov r2, r8\n\
+ ands r2, r6\n\
+ bl CpuSet\n\
+ adds r4, 0x40\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x6\n\
+ bls _080A1552\n\
+_080A1572:\n\
+ mov r1, r9\n\
+ asrs r2, r1, 16\n\
+ cmp r2, 0x9\n\
+ bgt _080A15C0\n\
+ ldr r4, _080A15B4 @ =0x06006b40\n\
+ movs r5, 0\n\
+ mov r8, sp\n\
+ movs r0, 0xA\n\
+ subs r6, r0, r2\n\
+ ldr r0, _080A15B8 @ =0x001fffff\n\
+ ands r6, r0\n\
+ movs r0, 0x80\n\
+ lsls r0, 17\n\
+ mov r9, r0\n\
+_080A158E:\n\
+ ldrh r0, [r7, 0x4]\n\
+ mov r1, r8\n\
+ strh r0, [r1]\n\
+ mov r0, sp\n\
+ adds r1, r4, 0\n\
+ mov r2, r9\n\
+ orrs r2, r6\n\
+ bl CpuSet\n\
+ adds r4, 0x40\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x6\n\
+ bls _080A158E\n\
+ b _080A15CC\n\
+ .align 2, 0\n\
+_080A15B0: .4byte gTasks + 0x8\n\
+_080A15B4: .4byte 0x06006b40\n\
+_080A15B8: .4byte 0x001fffff\n\
+_080A15BC: .4byte gUnknown_08E74688\n\
+_080A15C0:\n\
+ movs r0, 0\n\
+ movs r1, 0x13\n\
+ movs r2, 0x9\n\
+ movs r3, 0x13\n\
+ bl MenuZeroFillWindowRect\n\
+_080A15CC:\n\
+ movs r1, 0\n\
+ ldrsh r0, [r7, r1]\n\
+ cmp r0, 0\n\
+ beq _080A15DC\n\
+ movs r1, 0x2\n\
+ ldrsh r0, [r7, r1]\n\
+ cmp r0, 0\n\
+ bge _080A1616\n\
+_080A15DC:\n\
+ ldr r4, _080A164C @ =gSharedMem + 0x18000\n\
+ ldrb r0, [r4, 0xB]\n\
+ cmp r0, 0x3\n\
+ bne _080A1610\n\
+ movs r0, 0\n\
+ movs r1, 0xE\n\
+ movs r2, 0x9\n\
+ movs r3, 0x12\n\
+ bl MenuZeroFillWindowRect\n\
+ adds r4, 0x10\n\
+ adds r0, r4, 0\n\
+ bl sub_80A0958\n\
+ adds r0, r4, 0\n\
+ bl GetMonStatusAndPokerus\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080A1610\n\
+ ldr r0, _080A1650 @ =gOtherText_Status\n\
+ movs r1, 0xD\n\
+ movs r2, 0x1\n\
+ movs r3, 0x12\n\
+ bl sub_80A1FF8\n\
+_080A1610:\n\
+ mov r0, r10\n\
+ bl DestroyTask\n\
+_080A1616:\n\
+ movs r1, 0x2\n\
+ ldrsh r0, [r7, r1]\n\
+ cmp r0, 0x9\n\
+ ble _080A163C\n\
+ ldr r4, _080A164C @ =gSharedMem + 0x18000\n\
+ ldrb r0, [r4, 0xB]\n\
+ cmp r0, 0x3\n\
+ bne _080A162C\n\
+ ldrb r0, [r7, 0x6]\n\
+ bl sub_80A00F4\n\
+_080A162C:\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x10\n\
+ adds r1, r7, 0x6\n\
+ bl sub_80A0428\n\
+ mov r0, r10\n\
+ bl DestroyTask\n\
+_080A163C:\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080A164C: .4byte gSharedMem + 0x18000\n\
+_080A1650: .4byte gOtherText_Status\n\
+ .syntax divided\n");
+}
+
+static void sub_80A1654(s8 a, u8 b)
+{
+ u8 taskId;
+
+ if (pssData.page == PSS_PAGE_CONTEST_MOVES)
+ {
+ MenuZeroFillWindowRect(0, 14, 9, 19);
+ }
+
+ taskId = FindTaskIdByFunc(sub_80A1500);
+ if (taskId == 0xFF)
+ {
+ taskId = CreateTask(sub_80A1500, 0);
+ }
+
+ gTasks[taskId].data[0] = (s8)a;
+
+ if ((s8)a < 0)
+ {
+ gTasks[taskId].data[1] = 10;
+ }
+ else
+ {
+ gTasks[taskId].data[1] = 0;
+ }
+
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = b;
+}
+
+#ifdef NONMATCHING
+static void sub_80A16CC(u8 a)
+{
+ u8 i;
+ u16 *vramAddr = (u16 *)(VRAM + 0x6AD4);
+
+ if (a == 0)
+ {
+ for (i = 0; i < 20; i++)
+ {
+ vramAddr[i] = gUnknown_08E94510[i] + 0x1000;
+ vramAddr[i + 0x20] = gUnknown_08E94510[i] + 0x1000;
+ vramAddr[i + 0x40] = gUnknown_08E94550[i] + 0x1000;
+ }
+ }
+ else
+ {
+ i = 0;
+ for (i = 0; i < 20; i++)
+ {
+ vramAddr[i] = gUnknown_08E94550[i] + 0x1000;
+ vramAddr[i + 0x20] = gUnknown_08E94590[i] + 0x1000;
+ vramAddr[i + 0x40] = gUnknown_08E94590[i] + 0x1000;
+ }
+ }
+
+ vramAddr = (u16 *)(VRAM + 0x5AD4);
+
+ if (a == 0)
+ {
+ for (i = 0; i < 20; i++)
+ {
+ vramAddr[i] = gUnknown_08E94510[i] + 0x3000;
+ vramAddr[i + 0x20] = gUnknown_08E94510[i] + 0x3000;
+ vramAddr[i + 0x40] = gUnknown_08E94550[i] + 0x3000;
+ }
+ }
+ else
+ {
+ for (i = 0; i < 20; i++)
+ {
+ vramAddr[i] = gUnknown_08E94550[i] + 0x3000;
+ vramAddr[i + 0x20] = gUnknown_08E94590[i] + 0x3000;
+ vramAddr[i + 0x40] = gUnknown_08E94590[i] + 0x3000;
+ }
+ }
+}
+#else
+__attribute__((naked))
+static void sub_80A16CC(u8 a)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+ ldr r0, _080A1724 @ =0x06006ad4\n\
+ mov r12, r0\n\
+ mov r1, r9\n\
+ cmp r1, 0\n\
+ bne _080A172C\n\
+ movs r5, 0\n\
+ ldr r7, _080A1728 @ =gUnknown_08E94510\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ adds r6, r0, 0\n\
+ movs r1, 0x40\n\
+ adds r1, r7\n\
+ mov r8, r1\n\
+_080A16F4:\n\
+ lsls r2, r5, 1\n\
+ mov r0, r12\n\
+ adds r3, r2, r0\n\
+ adds r4, r2, r7\n\
+ ldrh r1, [r4]\n\
+ adds r0, r6, r1\n\
+ strh r0, [r3]\n\
+ adds r1, r3, 0\n\
+ adds r1, 0x40\n\
+ ldrh r4, [r4]\n\
+ adds r0, r6, r4\n\
+ strh r0, [r1]\n\
+ adds r3, 0x80\n\
+ add r2, r8\n\
+ ldrh r2, [r2]\n\
+ adds r0, r6, r2\n\
+ strh r0, [r3]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x13\n\
+ bls _080A16F4\n\
+ b _080A1768\n\
+ .align 2, 0\n\
+_080A1724: .4byte 0x06006ad4\n\
+_080A1728: .4byte gUnknown_08E94510\n\
+_080A172C:\n\
+ movs r5, 0\n\
+ ldr r6, _080A17B0 @ =gUnknown_08E94550\n\
+ movs r7, 0x80\n\
+ lsls r7, 5\n\
+ adds r4, r7, 0\n\
+ movs r0, 0x40\n\
+ adds r0, r6\n\
+ mov r8, r0\n\
+_080A173C:\n\
+ lsls r1, r5, 1\n\
+ mov r7, r12\n\
+ adds r2, r1, r7\n\
+ adds r0, r1, r6\n\
+ ldrh r0, [r0]\n\
+ adds r0, r4, r0\n\
+ strh r0, [r2]\n\
+ adds r3, r2, 0\n\
+ adds r3, 0x40\n\
+ add r1, r8\n\
+ ldrh r7, [r1]\n\
+ adds r0, r4, r7\n\
+ strh r0, [r3]\n\
+ adds r2, 0x80\n\
+ ldrh r1, [r1]\n\
+ adds r0, r4, r1\n\
+ strh r0, [r2]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x13\n\
+ bls _080A173C\n\
+_080A1768:\n\
+ ldr r0, _080A17B4 @ =0x06005ad4\n\
+ mov r12, r0\n\
+ mov r1, r9\n\
+ cmp r1, 0\n\
+ bne _080A17BC\n\
+ movs r5, 0\n\
+ ldr r7, _080A17B8 @ =gUnknown_08E94510\n\
+ movs r0, 0xC0\n\
+ lsls r0, 6\n\
+ adds r6, r0, 0\n\
+ movs r1, 0x40\n\
+ adds r1, r7\n\
+ mov r8, r1\n\
+_080A1782:\n\
+ lsls r2, r5, 1\n\
+ mov r0, r12\n\
+ adds r3, r2, r0\n\
+ adds r4, r2, r7\n\
+ ldrh r1, [r4]\n\
+ adds r0, r6, r1\n\
+ strh r0, [r3]\n\
+ adds r1, r3, 0\n\
+ adds r1, 0x40\n\
+ ldrh r4, [r4]\n\
+ adds r0, r6, r4\n\
+ strh r0, [r1]\n\
+ adds r3, 0x80\n\
+ add r2, r8\n\
+ ldrh r2, [r2]\n\
+ adds r0, r6, r2\n\
+ strh r0, [r3]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x13\n\
+ bls _080A1782\n\
+ b _080A17F8\n\
+ .align 2, 0\n\
+_080A17B0: .4byte gUnknown_08E94550\n\
+_080A17B4: .4byte 0x06005ad4\n\
+_080A17B8: .4byte gUnknown_08E94510\n\
+_080A17BC:\n\
+ movs r5, 0\n\
+ ldr r6, _080A1804 @ =gUnknown_08E94550\n\
+ movs r7, 0xC0\n\
+ lsls r7, 6\n\
+ adds r4, r7, 0\n\
+ movs r0, 0x40\n\
+ adds r0, r6\n\
+ mov r8, r0\n\
+_080A17CC:\n\
+ lsls r1, r5, 1\n\
+ mov r7, r12\n\
+ adds r2, r1, r7\n\
+ adds r0, r1, r6\n\
+ ldrh r0, [r0]\n\
+ adds r0, r4, r0\n\
+ strh r0, [r2]\n\
+ adds r3, r2, 0\n\
+ adds r3, 0x40\n\
+ add r1, r8\n\
+ ldrh r7, [r1]\n\
+ adds r0, r4, r7\n\
+ strh r0, [r3]\n\
+ adds r2, 0x80\n\
+ ldrh r1, [r1]\n\
+ adds r0, r4, r1\n\
+ strh r0, [r2]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x13\n\
+ bls _080A17CC\n\
+_080A17F8:\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080A1804: .4byte gUnknown_08E94550\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+u8 sub_80A1808(struct Pokemon *mon)
+{
+ u16 species;
+ u8 spriteId;
+
+ species = GetMonData(mon, MON_DATA_SPECIES2);
+ spriteId = CreateSprite(&gUnknown_02024E8C, 40, 64, 5);
+
+ FreeSpriteOamMatrix(&gSprites[spriteId]);
+
+ gSprites[spriteId].data[0] = species;
+ gSprites[spriteId].callback = sub_80A1888;
+
+ if (!IsPokeSpriteNotFlipped(species))
+ {
+ gSprites[spriteId].hFlip = 1;
+ }
+ else
+ {
+ gSprites[spriteId].hFlip = 0;
+ }
+
+ return spriteId;
+}
+
+static void sub_80A1888(struct Sprite *sprite)
+{
+ if (!gPaletteFade.active)
+ {
+ sprite->callback = SpriteCallbackDummy;
+
+ if (!GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG))
+ {
+ PlayCry1(sprite->data[0], 0);
+ }
+ }
+}
+
+static void sub_80A18C4(void)
+{
+ u8 i;
+
+ for (i = 0; i < 30; i++)
+ {
+ ewram1A000[i] = 0xFF;
+ }
+}
+
+static void sub_80A18E4(u8 a)
+{
+ if (ewram1A000[a] != 0xFF)
+ {
+ DestroySprite(&gSprites[ewram1A000[a]]);
+ ewram1A000[a] = 0xFF;
+ }
+}
+
+static void sub_80A1918(u8 a, u8 invisible)
+{
+ gSprites[ewram1A000[a]].invisible = invisible;
+}
+
+static void sub_80A1950(void)
+{
+ u8 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ if (ewram1A000[i] == 0xFF)
+ {
+ ewram1A000[i] = CreateSprite(&sSpriteTemplate_83C11C0, 0, 0, 2);
+ }
+
+ sub_80A1918(i, 1);
+ }
+}
+
+static void sub_80A198C(u8 animNum, u8 x, u8 y, u8 d)
+{
+ StartSpriteAnim(&gSprites[ewram1A000[d]], animNum);
+
+ gSprites[ewram1A000[d]].oam.paletteNum = sUnknown_PaletteNums[animNum];
+ gSprites[ewram1A000[d]].pos1.x = x + 16;
+ gSprites[ewram1A000[d]].pos1.y = y + 8;
+
+ sub_80A1918(d, 0);
+}
+
+static void sub_80A1A30(u8 a)
+{
+ u8 i;
+ s16 x;
+ u8 subPriority = 0;
+
+ if (pssData.page >= PSS_PAGE_BATTLE_MOVES)
+ {
+ if (a == 9)
+ {
+ subPriority = 1;
+ }
+
+ for (i = 0; i < 10; i++)
+ {
+ x = (i * 16) + 0x58;
+ ewram1A000[a + i] = CreateSprite(&sSpriteTemplate_83C1280, x, 40, subPriority);
+
+ if (i == 0)
+ {
+ StartSpriteAnim(&gSprites[ewram1A000[a]], 4);
+ }
+ else if (i == 9)
+ {
+ StartSpriteAnim(&gSprites[ewram1A000[a + i]], 5);
+ }
+ else
+ {
+ StartSpriteAnim(&gSprites[ewram1A000[a + i]], 6);
+ }
+
+ gSprites[ewram1A000[a + i]].callback = sub_80A1BC0;
+ gSprites[ewram1A000[a + i]].data[0] = a;
+ gSprites[ewram1A000[a + i]].data[1] = 0;
+ }
+ }
+}
+
+static void sub_80A1B1C(u8 a)
+{
+ u8 i;
+
+ for (i = 0; i < 10; i++)
+ {
+ sub_80A18E4(a + i);
+ }
+}
+
+static void sub_80A1B40(u8 a)
+{
+ u8 i;
+ a *= 3;
+
+ StartSpriteAnim(&gSprites[ewram1A000[9]], a + 4);
+
+ for (i = 0; i < 8; i++)
+ {
+ StartSpriteAnim(&gSprites[ewram1A000[10 + i]], a + 6);
+ }
+
+ StartSpriteAnim(&gSprites[ewram1A000[18]], a + 5);
+}
+
+static void sub_80A1BC0(struct Sprite *sprite)
+{
+ u8 animNum = sprite->animNum - 4;
+ if (animNum < 3)
+ {
+ sprite->data[1] = (sprite->data[1] + 1) & 0x1F;
+
+ if (sprite->data[1] > 24)
+ {
+ sprite->invisible = 1;
+ }
+ else
+ {
+ sprite->invisible = 0;
+ }
+ }
+ else
+ {
+ sprite->data[1] = 0;
+ sprite->invisible = 0;
+ }
+
+ if (sprite->data[0] == 9)
+ {
+ sprite->pos2.y = pssData.selectedMoveIndex * 16;
+ }
+ else
+ {
+ sprite->pos2.y = pssData.switchMoveIndex * 16;
+ }
+}
+
+__attribute__((naked))
+void sub_80A1C30(u8 a)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ lsls r0, r4, 2\n\
+ adds r0, r4\n\
+ lsls r0, 25\n\
+ lsrs r3, r0, 24\n\
+ adds r4, r3, 0\n\
+ adds r0, r3, 0\n\
+ adds r0, 0xA\n\
+ cmp r3, r0\n\
+ bge _080A1C82\n\
+ ldr r5, _080A1C88 @ =gSprites\n\
+ movs r7, 0x5\n\
+ negs r7, r7\n\
+ ldr r6, _080A1C8C @ =gSharedMem + 0x1A009\n\
+_080A1C50:\n\
+ adds r2, r3, r6\n\
+ ldrb r1, [r2]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r5\n\
+ movs r1, 0\n\
+ strh r1, [r0, 0x30]\n\
+ ldrb r0, [r2]\n\
+ lsls r1, r0, 4\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r5\n\
+ adds r1, 0x3E\n\
+ ldrb r2, [r1]\n\
+ adds r0, r7, 0\n\
+ ands r0, r2\n\
+ strb r0, [r1]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ adds r0, r4, 0\n\
+ adds r0, 0xA\n\
+ cmp r3, r0\n\
+ blt _080A1C50\n\
+_080A1C82:\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080A1C88: .4byte gSprites\n\
+_080A1C8C: .4byte gSharedMem + 0x1A009\n\
+ .syntax divided\n");
+}
+
+u8 pokemon_ailments_get_primary(u32 status)
+{
+ if (status & 0x88)
+ return 1;
+ if (status & 0x40)
+ return 2;
+ if (status & 0x7)
+ return 3;
+ if (status & 0x20)
+ return 4;
+ if (status & 0x10)
+ return 5;
+
+ return 0;
+}
+
+u8 GetMonStatusAndPokerus(struct Pokemon *mon)
+{
+ u8 statusAilment;
+
+ if (GetMonData(mon, MON_DATA_HP) == 0)
+ {
+ return 7;
+ }
+
+ statusAilment = pokemon_ailments_get_primary(GetMonData(mon, MON_DATA_STATUS));
+ if (statusAilment == 0)
+ {
+ if (!CheckPartyPokerus(mon, 0))
+ {
+ return 0;
+ }
+ else
+ {
+ return 6;
+ }
+ }
+
+ return statusAilment;
+}
+
+#ifdef NONMATCHING
+void sub_80A1D18(void)
+{
+ struct Pokemon mon;
+ u8 statusAndPkrs;
+ u8 statusAndPkrs2;
+
+ sub_809F678(&mon);
+ statusAndPkrs = GetMonStatusAndPokerus(&mon);
+
+ if (statusAndPkrs)
+ {
+ statusAndPkrs2 = statusAndPkrs - 1;
+
+ if (ewram1A000[29] == 0xFF)
+ {
+ ewram1A000[29] = CreateSprite(&sSpriteTemplate_83C1304, 64, 152, 0);
+ }
+ }
+ else
+ {
+ sub_80A18E4(29);
+ return;
+ }
+
+ StartSpriteAnim(&gSprites[ewram1A000[29]], statusAndPkrs2);
+}
+#else
+__attribute__((naked))
+void sub_80A1D18(void)
+{
+ asm(".syntax unified\n\
+ push {r4,r5,lr}\n\
+ sub sp, 0x64\n\
+ mov r0, sp\n\
+ bl sub_809F678\n\
+ mov r0, sp\n\
+ bl GetMonStatusAndPokerus\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0\n\
+ beq _080A1D58\n\
+ subs r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ ldr r4, _080A1D50 @ =gSharedMem + 0x1A01D\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0xFF\n\
+ bne _080A1D60\n\
+ ldr r0, _080A1D54 @ =sSpriteTemplate_83C1304\n\
+ movs r1, 0x40\n\
+ movs r2, 0x98\n\
+ movs r3, 0\n\
+ bl CreateSprite\n\
+ strb r0, [r4]\n\
+ b _080A1D60\n\
+ .align 2, 0\n\
+_080A1D50: .4byte gSharedMem + 0x1A01D\n\
+_080A1D54: .4byte sSpriteTemplate_83C1304\n\
+_080A1D58:\n\
+ movs r0, 0x1D\n\
+ bl sub_80A18E4\n\
+ b _080A1D74\n\
+_080A1D60:\n\
+ ldr r0, _080A1D7C @ =gSharedMem + 0x1A01D\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ ldr r1, _080A1D80 @ =gSprites\n\
+ adds r0, r1\n\
+ adds r1, r5, 0\n\
+ bl StartSpriteAnim\n\
+_080A1D74:\n\
+ add sp, 0x64\n\
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080A1D7C: .4byte gSharedMem + 0x1A01D\n\
+_080A1D80: .4byte gSprites\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+static void sub_80A1D84(struct Pokemon *mon)
+{
+ struct Sprite *sprite;
+
+ sprite = sub_80F7920(0x7533, 0x7533, sSummaryScreenMonMarkingsPalette);
+ gUnknown_020384F4 = sprite;
+
+ if (sprite != NULL)
+ {
+ u8 markings = GetMonData(mon, MON_DATA_MARKINGS);
+ StartSpriteAnim(sprite, markings);
+
+ gUnknown_020384F4->pos1.x = 60;
+ gUnknown_020384F4->pos1.y = 26;
+ }
+}
+
+static void sub_80A1DCC(struct Pokemon *mon)
+{
+ DestroySprite(gUnknown_020384F4);
+ sub_80A1D84(mon);
+}
+
+static void sub_80A1DE8(struct Pokemon *mon)
+{
+ u8 ball = ball_number_to_ball_processing_index(GetMonData(mon, MON_DATA_POKEBALL));
+ sub_80478DC(ball);
+
+ pssData.ballSpriteId = CreateSprite(&gBallSpriteTemplates[ball], 6, 136, 0);
+ gSprites[pssData.ballSpriteId].callback = SpriteCallbackDummy;
+ gSprites[pssData.ballSpriteId].oam.priority = 3;
+}
+
+static u8 *sub_80A1E58(u8 *text, u8 id)
+{
+ if (id != 0xFF)
+ {
+ const u8 *ptr = sUnknown_083C15BC;
+ while (*ptr != 0xFF && *ptr != id)
+ {
+ ptr += 4;
+ }
+
+ text[0] = EXT_CTRL_CODE_BEGIN;
+ text[1] = 4;
+ text[2] = ptr[1];
+ text[3] = ptr[2];
+ text[4] = ptr[3];
+
+ text += 5;
+ }
+
+ return text;
+}
+
+u8 *sub_80A1E9C(u8 *dest, const u8 *src, u8 id)
+{
+ u8 arr[3];
+
+ sub_8072CD4(&arr[0], &arr[1], &arr[2]);
+
+ dest = sub_80A1E58(dest, id);
+ dest = StringCopy(dest, src);
+
+ if (id != 0xFF)
+ {
+ dest[0] = EXT_CTRL_CODE_BEGIN;
+ dest[1] = 4;
+ dest[2] = arr[0];
+ dest[3] = arr[1];
+ dest[4] = arr[2];
+ dest[5] = 0xFF;
+
+ dest += 5;
+ }
+
+ return dest;
+}
+
+static void sub_80A1EF8(const u8 *text, u8 id, u8 left, u16 top, s32 e)
+{
+ sub_80A1E9C(gStringVar4, text, id);
+ MenuPrint_PixelCoords(gStringVar4, left, top, (bool8)e);
+}
+
+static void sub_80A1F48(const u8 *text, u8 id, u8 c, u8 d, u16 e)
+{
+ sub_80A1E9C(gStringVar4, text, id);
+ sub_8072BD8(gStringVar4, c, d, e);
+}
+
+static void sub_80A1F98(s32 value, u8 id, u8 n, u8 mode, u8 left, u16 top, s32 e)
+{
+ ConvertIntToDecimalStringN(gStringVar1, value, mode, n);
+ sub_80A1EF8(gStringVar1, id, left, top, e);
+}
+
+static void sub_80A1FF8(const u8 *text, u8 id, u8 left, u8 top)
+{
+ sub_80A1E9C(gStringVar4, text, id);
+ MenuPrint(gStringVar4, left, top);
+}
+
+u8 *PokemonSummaryScreen_CopyPokemonLevel(u8 *dest, u8 level)
+{
+ u8 buffer[12];
+
+ dest[0] = 0x34;
+ dest++;
+
+ if (level == 0)
+ {
+ level = 5;
+ }
+
+ ConvertIntToDecimalString(buffer, level);
+ dest = sub_80A1E9C(dest, buffer, 14);
+ dest = StringCopy(dest, gOtherText_Comma);
+
+ return dest;
+}
+
+static void sub_80A2078(int taskId)
+{
+ gUnknown_03005CF0 = gTasks[taskId].func;
+ gTasks[taskId].func = sub_80A20A8;
+ gTasks[taskId].func((u8)taskId);
+}
+
+static void sub_80A20A8(u8 taskId)
+{
+ if (sub_8055870() != TRUE)
+ {
+ gTasks[taskId].func = gUnknown_03005CF0;
+ }
+}
diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c
index 1bbb8d485..d4c6417c7 100644
--- a/src/scene/evolution_scene.c
+++ b/src/scene/evolution_scene.c
@@ -817,7 +817,7 @@ static void Task_EvolutionScene(u8 taskID)
case 5:
if (!gPaletteFade.active)
{
- sub_809D9F0(gPlayerParty, gTasks[taskID].tPartyID,
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskID].tPartyID,
gPlayerPartyCount - 1, CB2_EvolutionSceneLoadGraphics,
gMoveToLearn);
gTasks[taskID].tLearnMoveState++;
@@ -1137,7 +1137,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
case 5:
if (!gPaletteFade.active)
{
- sub_809D9F0(gPlayerParty, gTasks[taskID].tPartyID,
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskID].tPartyID,
gPlayerPartyCount - 1, CB2_TradeEvolutionSceneLoadGraphics,
gMoveToLearn);
gTasks[taskID].tLearnMoveState++;
diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c
index 21ff220d2..d95a0ed39 100644
--- a/src/script_pokemon_util_80F99CC.c
+++ b/src/script_pokemon_util_80F99CC.c
@@ -272,7 +272,7 @@ void HandleMoveTutorPartyMenu(u8 var)
void sub_80F9EEC(void)
{
- sub_809D9F0(&gPlayerParty[0], gSpecialVar_0x8004, gPlayerPartyCount - 1, c2_exit_to_overworld_2_switch, 0);
+ ShowSelectMovePokemonSummaryScreen(&gPlayerParty[0], gSpecialVar_0x8004, gPlayerPartyCount - 1, c2_exit_to_overworld_2_switch, 0);
UNK_2018000_STRUCT.unk8 = 3;
gFieldCallback = sub_8080990;
}
diff --git a/src/strings.c b/src/strings.c
index 6c8dce9d6..06bbadb8f 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -409,7 +409,7 @@ const u8 OtherText_Switch[] = _("SWITCH");
const u8 OtherText_PokeInfo[] = _("POKéMON INFO");
const u8 OtherText_PokeSkills[] = _("POKéMON SKILLS");
const u8 OtherText_BattleMoves[] = _("BATTLE MOVES");
-const u8 OtherText_ContestMoves[] = _("C0NTEST MOVES"); // why the l33t 0, that's stupid
+const u8 OtherText_ContestMoves[] = _("C0NTEST MOVES"); // The "O" in "CONTEST" is actually a 0.
const u8 OtherText_Info[] = _("INFO");
const u8 gOtherText_EggLongTime[] = _("It looks like this EGG will\ntake a long time to hatch.");