diff options
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 Binary files differindex ba6830b73..ed5feb3d6 100644 --- a/graphics/unknown/unknown_E94550.bin +++ b/graphics/unknown/unknown_E94550.bin diff --git a/graphics/unknown/unknown_E94590.bin b/graphics/unknown/unknown_E94590.bin Binary files differnew file mode 100644 index 000000000..bed9142e8 --- /dev/null +++ b/graphics/unknown/unknown_E94590.bin 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."); |