summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcamthesaxman <cameronghall@cox.net>2017-06-17 21:38:01 -0500
committercamthesaxman <cameronghall@cox.net>2017-06-17 21:38:01 -0500
commit14b1a94d7266cc24447d34145decf818e930e747 (patch)
tree0cd469cceec8cf0d11bae36f2a35564ba280b9cf
parent82ddae9db42f45abf876e68dc9b0b69a00b44070 (diff)
finish decompiling choose_party
-rw-r--r--asm/choose_party.s953
-rw-r--r--include/battle_party_menu.h18
-rw-r--r--include/pokemon_summary_screen.h2
-rw-r--r--include/songs.h20
-rwxr-xr-xld_script.txt1
-rw-r--r--src/battle_party_menu.c1
-rw-r--r--src/choose_party.c337
7 files changed, 346 insertions, 986 deletions
diff --git a/asm/choose_party.s b/asm/choose_party.s
deleted file mode 100644
index 322b1b34a..000000000
--- a/asm/choose_party.s
+++ /dev/null
@@ -1,953 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8122A48
-sub_8122A48: @ 8122A48
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _08122AA0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08122A98
- ldr r0, _08122AA4 @ =gTasks
- lsls r4, r6, 2
- adds r4, r6
- lsls r4, 3
- adds r4, r0
- movs r0, 0x1E
- strh r0, [r4, 0x8]
- ldr r5, _08122AA8 @ =gUnknown_02023A00
- ldrh r1, [r5]
- adds r0, r6, 0
- movs r2, 0
- bl sub_806D4AC
- ldrh r1, [r5, 0x20]
- adds r0, r6, 0
- movs r2, 0x1
- bl sub_806D4AC
- adds r5, 0x40
- ldrh r1, [r5]
- adds r0, r6, 0
- movs r2, 0x2
- bl sub_806D4AC
- ldr r0, _08122AAC @ =sub_8122AB8
- str r0, [r4]
- ldr r0, _08122AB0 @ =0x0201b000
- ldr r1, _08122AB4 @ =0x00000261
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
-_08122A98:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08122AA0: .4byte gPaletteFade
-_08122AA4: .4byte gTasks
-_08122AA8: .4byte gUnknown_02023A00
-_08122AAC: .4byte sub_8122AB8
-_08122AB0: .4byte 0x0201b000
-_08122AB4: .4byte 0x00000261
- thumb_func_end sub_8122A48
-
- thumb_func_start sub_8122AB8
-sub_8122AB8: @ 8122AB8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08122AFC @ =gUnknown_02023A00
- ldrh r1, [r0, 0x20]
- adds r0, 0x40
- ldrh r2, [r0]
- adds r0, r4, 0
- bl sub_806D3B4
- ldr r1, _08122B00 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r1
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _08122AF4
- ldr r0, _08122B04 @ =sub_8122B10
- str r0, [r1]
- ldr r0, _08122B08 @ =0x0201b000
- ldr r1, _08122B0C @ =0x00000261
- adds r0, r1
- movs r1, 0x2
- strb r1, [r0]
- movs r0, 0x78
- bl PlaySE
-_08122AF4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08122AFC: .4byte gUnknown_02023A00
-_08122B00: .4byte gTasks
-_08122B04: .4byte sub_8122B10
-_08122B08: .4byte 0x0201b000
-_08122B0C: .4byte 0x00000261
- thumb_func_end sub_8122AB8
-
- thumb_func_start sub_8122B10
-sub_8122B10: @ 8122B10
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- movs r0, 0
- mov r8, r0
- ldr r1, _08122B5C @ =gUnknown_02023A00
- mov r10, r1
- ldr r2, _08122B60 @ =gStringVar1
- mov r9, r2
-_08122B2E:
- mov r1, r8
- lsls r0, r1, 5
- mov r2, r10
- adds r6, r0, r2
- ldrh r1, [r6]
- adds r7, r0, 0
- cmp r1, 0
- beq _08122BDA
- mov r4, r8
- adds r4, 0x3
- lsls r0, r4, 24
- lsrs r5, r0, 24
- ldrh r2, [r6, 0x10]
- ldrh r3, [r6, 0x12]
- adds r0, r5, 0
- movs r1, 0x3
- bl PartyMenuDoPrintHP
- ldrh r0, [r6, 0x10]
- cmp r0, 0
- bne _08122B64
- movs r2, 0x7
- b _08122B76
- .align 2, 0
-_08122B5C: .4byte gUnknown_02023A00
-_08122B60: .4byte gStringVar1
-_08122B64:
- ldr r1, _08122B88 @ =gUnknown_02023A14
- adds r0, r7, r1
- ldr r0, [r0]
- bl pokemon_ailments_get_primary
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _08122B8C
-_08122B76:
- lsls r0, r4, 24
- lsrs r0, 24
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0x3
- bl PartyMenuPutStatusTilemap
- b _08122B96
- .align 2, 0
-_08122B88: .4byte gUnknown_02023A14
-_08122B8C:
- ldrb r2, [r6, 0xF]
- adds r0, r5, 0
- movs r1, 0x3
- bl PartyMenuDoPrintLevel
-_08122B96:
- mov r2, r10
- adds r6, r7, r2
- ldrh r0, [r6]
- ldrb r1, [r6, 0x1C]
- lsls r4, 24
- lsrs r4, 24
- ldr r2, _08122C0C @ =gUnknown_02023A04
- adds r5, r7, r2
- str r5, [sp]
- movs r2, 0x3
- adds r3, r4, 0
- bl PartyMenuDoPutNicknameTilemap
- mov r0, r9
- adds r1, r5, 0
- bl StringCopy
- mov r0, r9
- bl StringGetEnd10
- mov r0, r9
- bl SanitizeNameString
- adds r0, r4, 0
- movs r1, 0x3
- mov r2, r9
- bl box_print
- ldrh r2, [r6, 0x10]
- ldrh r3, [r6, 0x12]
- adds r0, r4, 0
- movs r1, 0x3
- bl PartyMenuDoDrawHPBar
-_08122BDA:
- mov r0, r8
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0x2
- bls _08122B2E
- ldr r1, _08122C10 @ =gTasks
- ldr r2, [sp, 0x4]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- ldr r1, _08122C14 @ =sub_8122C18
- str r1, [r0]
- movs r1, 0
- strh r1, [r0, 0x8]
- 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
-_08122C0C: .4byte gUnknown_02023A04
-_08122C10: .4byte gTasks
-_08122C14: .4byte sub_8122C18
- thumb_func_end sub_8122B10
-
- thumb_func_start sub_8122C18
-sub_8122C18: @ 8122C18
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08122C58 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- movs r1, 0x80
- lsls r1, 17
- cmp r0, r1
- bne _08122C4E
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _08122C5C @ =sub_8122450
- str r0, [r4]
-_08122C4E:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08122C58: .4byte gTasks
-_08122C5C: .4byte sub_8122450
- thumb_func_end sub_8122C18
-
- thumb_func_start unref_sub_8122C60
-unref_sub_8122C60: @ 8122C60
- push {r4,r5,lr}
- ldr r1, _08122C80 @ =0x0201b000
- movs r2, 0x99
- lsls r2, 2
- adds r0, r1, r2
- movs r2, 0
- ldrsh r0, [r0, r2]
- adds r4, r1, 0
- cmp r0, 0x7
- bls _08122C76
- b _08122D8A
-_08122C76:
- lsls r0, 2
- ldr r1, _08122C84 @ =_08122C88
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08122C80: .4byte 0x0201b000
-_08122C84: .4byte _08122C88
- .align 2, 0
-_08122C88:
- .4byte _08122CA8
- .4byte _08122CE8
- .4byte _08122CEE
- .4byte _08122D02
- .4byte _08122D2C
- .4byte _08122D32
- .4byte _08122D44
- .4byte _08122D5C
-_08122CA8:
- ldr r0, _08122CD0 @ =0x00000266
- adds r5, r4, r0
- movs r1, 0
- ldrsh r3, [r5, r1]
- ldr r0, _08122CD4 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r3, r0
- bge _08122CDC
- movs r2, 0x98
- lsls r2, 2
- adds r0, r4, r2
- ldrb r0, [r0]
- ldrb r1, [r5]
- movs r2, 0x64
- muls r2, r3
- ldr r3, _08122CD8 @ =gPlayerParty
- adds r2, r3
- bl TryCreatePartyMenuMonIcon
- b _08122D84
- .align 2, 0
-_08122CD0: .4byte 0x00000266
-_08122CD4: .4byte gPlayerPartyCount
-_08122CD8: .4byte gPlayerParty
-_08122CDC:
- movs r0, 0
- strh r0, [r5]
- movs r0, 0x99
- lsls r0, 2
- adds r1, r4, r0
- b _08122D50
-_08122CE8:
- bl LoadHeldItemIconGraphics
- b _08122D48
-_08122CEE:
- movs r1, 0x98
- lsls r1, 2
- adds r0, r4, r1
- ldrb r0, [r0]
- bl CreateHeldItemIcons_806DC34
- movs r2, 0x99
- lsls r2, 2
- adds r1, r4, r2
- b _08122D50
-_08122D02:
- movs r1, 0x98
- lsls r1, 2
- adds r0, r4, r1
- ldrb r0, [r0]
- ldr r2, _08122D28 @ =0x00000266
- adds r5, r4, r2
- ldrb r1, [r5]
- bl sub_806BD58
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08122D84
- movs r0, 0
- strh r0, [r5]
- movs r0, 0x99
- lsls r0, 2
- adds r1, r4, r0
- b _08122D50
- .align 2, 0
-_08122D28: .4byte 0x00000266
-_08122D2C:
- bl PartyMenuPrintMonsLevelOrStatus
- b _08122D48
-_08122D32:
- bl PrintPartyMenuMonNicknames
- ldr r1, _08122D40 @ =0x0201b000
- movs r0, 0x99
- lsls r0, 2
- adds r1, r0
- b _08122D50
- .align 2, 0
-_08122D40: .4byte 0x0201b000
-_08122D44:
- bl sub_806BCE8
-_08122D48:
- ldr r1, _08122D58 @ =0x0201b000
- movs r2, 0x99
- lsls r2, 2
- adds r1, r2
-_08122D50:
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _08122D8A
- .align 2, 0
-_08122D58: .4byte 0x0201b000
-_08122D5C:
- ldr r0, _08122D80 @ =0x00000266
- adds r5, r4, r0
- ldrb r0, [r5]
- bl sub_806B58C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08122D84
- movs r1, 0
- strh r1, [r5]
- movs r2, 0x99
- lsls r2, 2
- adds r0, r4, r2
- strh r1, [r0]
- movs r0, 0x1
- b _08122D8C
- .align 2, 0
-_08122D80: .4byte 0x00000266
-_08122D84:
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
-_08122D8A:
- movs r0, 0
-_08122D8C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end unref_sub_8122C60
-
- thumb_func_start sub_8122D94
-sub_8122D94: @ 8122D94
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08122DCC @ =gLastFieldPokeMenuOpened
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08122DD0 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2D
- bl GetMonData
- adds r2, r0, 0
- cmp r2, 0
- bne _08122DE0
- ldr r1, _08122DD4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- strh r2, [r0, 0x10]
- ldr r1, _08122DD8 @ =gUnknown_08401810
- ldr r2, _08122DDC @ =gUnknown_084017F0
- movs r0, 0
- movs r3, 0
- bl sub_806E750
- b _08122DFA
- .align 2, 0
-_08122DCC: .4byte gLastFieldPokeMenuOpened
-_08122DD0: .4byte gPlayerParty
-_08122DD4: .4byte gTasks
-_08122DD8: .4byte gUnknown_08401810
-_08122DDC: .4byte gUnknown_084017F0
-_08122DE0:
- ldr r1, _08122E00 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0x1
- strh r1, [r0, 0x10]
- ldr r1, _08122E04 @ =gUnknown_08401810
- ldr r2, _08122E08 @ =gUnknown_084017F0
- movs r0, 0x1
- movs r3, 0
- bl sub_806E750
-_08122DFA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08122E00: .4byte gTasks
-_08122E04: .4byte gUnknown_08401810
-_08122E08: .4byte gUnknown_084017F0
- thumb_func_end sub_8122D94
-
- thumb_func_start sub_8122E0C
-sub_8122E0C: @ 8122E0C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08122E34 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08122E9C
- adds r0, r4, 0
- bl sub_806BD80
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- beq _08122E38
- cmp r0, 0x2
- beq _08122E84
- b _08122E9C
- .align 2, 0
-_08122E34: .4byte gPaletteFade
-_08122E38:
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_806CA38
- ldr r1, _08122E70 @ =gLastFieldPokeMenuOpened
- strb r0, [r1]
- ldrb r1, [r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08122E74 @ =gPlayerParty
- adds r0, r1
- ldr r1, _08122E78 @ =gStringVar1
- bl GetMonNickname
- adds r0, r4, 0
- bl sub_8122D94
- ldr r1, _08122E7C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08122E80 @ =sub_8122EAC
- str r1, [r0]
- b _08122E9C
- .align 2, 0
-_08122E70: .4byte gLastFieldPokeMenuOpened
-_08122E74: .4byte gPlayerParty
-_08122E78: .4byte gStringVar1
-_08122E7C: .4byte gTasks
-_08122E80: .4byte sub_8122EAC
-_08122E84:
- movs r0, 0x5
- bl PlaySE
- ldr r1, _08122EA4 @ =gLastFieldPokeMenuOpened
- movs r0, 0xFF
- strb r0, [r1]
- ldr r1, _08122EA8 @ =gSpecialVar_0x8004
- movs r0, 0xFF
- strh r0, [r1]
- adds r0, r4, 0
- bl sub_8123138
-_08122E9C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08122EA4: .4byte gLastFieldPokeMenuOpened
-_08122EA8: .4byte gSpecialVar_0x8004
- thumb_func_end sub_8122E0C
-
- thumb_func_start sub_8122EAC
-sub_8122EAC: @ 8122EAC
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- adds r4, r7, 0
- ldr r0, _08122EE8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r3, 0x80
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _08122F6A
- ldr r2, _08122EEC @ =gMain
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08122EF0
- bl GetMenuCursorPos
- lsls r0, 24
- cmp r0, 0
- beq _08122F6A
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursor
- b _08122F6A
- .align 2, 0
-_08122EE8: .4byte gPaletteFade
-_08122EEC: .4byte gMain
-_08122EF0:
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _08122F12
- bl GetMenuCursorPos
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _08122F6A
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- bl MoveMenuCursor
- b _08122F6A
-_08122F12:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08122F5C
- movs r0, 0x5
- bl PlaySE
- ldr r1, _08122F50 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldrb r4, [r0, 0x10]
- ldr r5, _08122F54 @ =gUnknown_08401810
- ldr r6, _08122F58 @ =gUnknown_084017F0
- bl GetMenuCursorPos
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- bl PartyMenuGetPopupMenuFunc
- adds r1, r0, 0
- adds r0, r7, 0
- bl _call_via_r1
- b _08122F6A
- .align 2, 0
-_08122F50: .4byte gTasks
-_08122F54: .4byte gUnknown_08401810
-_08122F58: .4byte gUnknown_084017F0
-_08122F5C:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08122F6A
- adds r0, r4, 0
- bl sub_81230F4
-_08122F6A:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8122EAC
-
- thumb_func_start sub_8122F70
-sub_8122F70: @ 8122F70
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08122F88 @ =gSpecialVar_0x8004
- ldr r1, _08122F8C @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- strh r1, [r2]
- bl sub_8123138
- pop {r0}
- bx r0
- .align 2, 0
-_08122F88: .4byte gSpecialVar_0x8004
-_08122F8C: .4byte gLastFieldPokeMenuOpened
- thumb_func_end sub_8122F70
-
- thumb_func_start sub_8122F90
-sub_8122F90: @ 8122F90
- push {r4,r5,lr}
- ldr r5, _08122FD8 @ =0x0201b260
- ldr r4, _08122FDC @ =gUnknown_020384F0
-_08122F96:
- bl sub_806B124
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08122FF0
- ldrb r0, [r5]
- ldrb r1, [r4]
- bl sub_806C994
- ldrb r0, [r5]
- movs r1, 0
- bl sub_806BF74
- ldrb r1, [r4]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08122FE0 @ =gPlayerParty
- adds r0, r1
- ldr r1, _08122FE4 @ =gStringVar1
- bl GetMonNickname
- ldr r1, _08122FE8 @ =gLastFieldPokeMenuOpened
- ldrb r0, [r4]
- strb r0, [r1]
- ldrb r0, [r5]
- bl sub_8122D94
- ldr r0, _08122FEC @ =sub_806AEDC
- bl SetMainCallback2
- b _08122FFC
- .align 2, 0
-_08122FD8: .4byte 0x0201b260
-_08122FDC: .4byte gUnknown_020384F0
-_08122FE0: .4byte gPlayerParty
-_08122FE4: .4byte gStringVar1
-_08122FE8: .4byte gLastFieldPokeMenuOpened
-_08122FEC: .4byte sub_806AEDC
-_08122FF0:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08122F96
-_08122FFC:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8122F90
-
- thumb_func_start sub_8123004
-sub_8123004: @ 8123004
- push {lr}
- ldr r2, _08123028 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r2, _0812302C @ =sub_8122EAC
- movs r0, 0x6
- movs r1, 0xFF
- movs r3, 0x5
- bl sub_806AF4C
- ldr r0, _08123030 @ =sub_8122F90
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_08123028: .4byte gPaletteFade
-_0812302C: .4byte sub_8122EAC
-_08123030: .4byte sub_8122F90
- thumb_func_end sub_8123004
-
- thumb_func_start sub_8123034
-sub_8123034: @ 8123034
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, _0812309C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _08123092
- ldr r2, _081230A0 @ =gSprites
- ldr r1, _081230A4 @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0xE]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r4, [r0, 0x2E]
- lsls r4, 24
- lsrs r4, 24
- adds r0, r3, 0
- bl DestroyTask
- ldr r0, _081230A8 @ =0x0201b000
- ldr r1, _081230AC @ =0x00000262
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, _081230B0 @ =gPlayerParty
- ldr r1, _081230B4 @ =gPlayerPartyCount
- ldrb r2, [r1]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _081230B8 @ =sub_8123004
- str r5, [sp]
- adds r1, r4, 0
- bl ShowPokemonSummaryScreen
-_08123092:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812309C: .4byte gPaletteFade
-_081230A0: .4byte gSprites
-_081230A4: .4byte gTasks
-_081230A8: .4byte 0x0201b000
-_081230AC: .4byte 0x00000262
-_081230B0: .4byte gPlayerParty
-_081230B4: .4byte gPlayerPartyCount
-_081230B8: .4byte sub_8123004
- thumb_func_end sub_8123034
-
- thumb_func_start sub_81230BC
-sub_81230BC: @ 81230BC
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _081230EC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _081230F0 @ =sub_8123034
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081230EC: .4byte gTasks
-_081230F0: .4byte sub_8123034
- thumb_func_end sub_81230BC
-
- thumb_func_start sub_81230F4
-sub_81230F4: @ 81230F4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x14
- movs r1, 0xA
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- bl HandleDestroyMenuCursors
- movs r0, 0xF
- movs r1, 0
- bl sub_806D538
- ldr r1, _08123130 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08123134 @ =sub_8122E0C
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08123130: .4byte gTasks
-_08123134: .4byte sub_8122E0C
- thumb_func_end sub_81230F4
-
- thumb_func_start sub_8123138
-sub_8123138: @ 8123138
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _08123168 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0812316C @ =sub_8123170
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08123168: .4byte gTasks
-_0812316C: .4byte sub_8123170
- thumb_func_end sub_8123138
-
- thumb_func_start sub_8123170
-sub_8123170: @ 8123170
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0812319C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08123194
- ldr r0, _081231A0 @ =gFieldCallback
- ldr r1, _081231A4 @ =sub_81231AC
- str r1, [r0]
- ldr r0, _081231A8 @ =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_08123194:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812319C: .4byte gPaletteFade
-_081231A0: .4byte gFieldCallback
-_081231A4: .4byte sub_81231AC
-_081231A8: .4byte c2_exit_to_overworld_2_switch
- thumb_func_end sub_8123170
-
- thumb_func_start sub_81231AC
-sub_81231AC: @ 81231AC
- push {lr}
- bl pal_fill_black
- ldr r0, _081231C0 @ =sub_81231C4
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_081231C0: .4byte sub_81231C4
- thumb_func_end sub_81231AC
-
- thumb_func_start sub_81231C4
-sub_81231C4: @ 81231C4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_807D770
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081231E4
- adds r0, r4, 0
- bl DestroyTask
- bl ScriptContext2_Disable
- bl EnableBothScriptContexts
-_081231E4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81231C4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/include/battle_party_menu.h b/include/battle_party_menu.h
index a7d46a462..71bd2cf51 100644
--- a/include/battle_party_menu.h
+++ b/include/battle_party_menu.h
@@ -1,25 +1,9 @@
#ifndef GUARD_BATTLE_PARTY_MENU_H
#define GUARD_BATTLE_PARTY_MENU_H
-#include "task.h"
-
-struct PartyMenuItem
-{
- const u8 *text;
- TaskFunc func;
-};
-
-struct PartyPopupMenu
-{
- u8 unk0;
- u8 unk1;
- const u8 *unk4;
-};
-
extern u8 unk_2000000[];
+#define EWRAM_1609D unk_2000000[0x1609D]
void SetUpBattlePokemonMenu(u8);
-#define EWRAM_1609D unk_2000000[0x1609D]
-
#endif
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index 3f7ed8fad..71259c887 100644
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -3,7 +3,7 @@
extern const u8 *const gNatureNames[];
-void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, void (*)(u8), int);
+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);
u8 sub_809FA30(void);
diff --git a/include/songs.h b/include/songs.h
index 72d28a355..ab055becf 100644
--- a/include/songs.h
+++ b/include/songs.h
@@ -121,16 +121,16 @@ enum
/*0x73*/ SE_TB_KON,
/*0x74*/ SE_TB_KARA,
/*0x75*/ SE_BIDORO,
- SE_W085,
- SE_W085B,
- SE_W231,
- SE_W171,
- SE_W233,
- SE_W233B,
- SE_W145,
- SE_W145B,
- SE_W145C,
- SE_W240,
+ /*0x76*/ SE_W085,
+ /*0x77*/ SE_W085B,
+ /*0x78*/ SE_W231,
+ /*0x79*/ SE_W171,
+ /*0x7A*/ SE_W233,
+ /*0x7B*/ SE_W233B,
+ /*0x7C*/ SE_W145,
+ /*0x7D*/ SE_W145B,
+ /*0x7E*/ SE_W145C,
+ /*0x7F*/ SE_W240,
SE_W015,
SE_W081,
SE_W081B,
diff --git a/ld_script.txt b/ld_script.txt
index 8614e7fa1..bb1878069 100755
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -232,7 +232,6 @@ SECTIONS {
src/battle_811DA74.o(.text);
asm/battle_message.o(.text);
src/choose_party.o(.text);
- asm/choose_party.o(.text);
asm/cable_car.o(.text);
asm/roulette_util.o(.text);
asm/cable_car_util.o(.text);
diff --git a/src/battle_party_menu.c b/src/battle_party_menu.c
index 074ebbce0..0fbe2b0e3 100644
--- a/src/battle_party_menu.c
+++ b/src/battle_party_menu.c
@@ -46,7 +46,6 @@ extern void sub_806C994();
extern void sub_806BF74();
extern void sub_806AEDC(void);
extern TaskFunc PartyMenuGetPopupMenuFunc(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, u8);
-extern void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, void (*)(void), int);
extern void sub_806E7D0(u8, const struct PartyPopupMenu *);
extern u8 *sub_8040D08();
extern void sub_8040B8C(void);
diff --git a/src/choose_party.c b/src/choose_party.c
index e5005ca63..f8ee61d66 100644
--- a/src/choose_party.c
+++ b/src/choose_party.c
@@ -1,12 +1,19 @@
#include "global.h"
-#include "asm.h"
+#include "decoration.h"
+#include "field_fadetransition.h"
+#include "main.h"
#include "menu.h"
+#include "name_string_util.h"
#include "palette.h"
#include "party_menu.h"
#include "pokemon.h"
+#include "pokemon_summary_screen.h"
+#include "rom4.h"
+#include "script.h"
#include "songs.h"
#include "sound.h"
#include "strings.h"
+#include "string_util.h"
#include "task.h"
#include "text.h"
@@ -35,6 +42,8 @@ extern struct Pokemon gUnknown_030042FC[];
extern const u16 gBattleTowerBanlist[];
extern const struct PartyMenuItem gUnknown_084017B0[];
extern const struct PartyPopupMenu gUnknown_084017D8[];
+extern const struct PartyMenuItem gUnknown_084017F0[];
+extern const struct PartyPopupMenu gUnknown_08401810[];
extern void OpenPartyMenu();
extern void TryCreatePartyMenuMonIcon(u8, u8, struct Pokemon *);
@@ -46,7 +55,6 @@ extern void PrintPartyMenuMonNicknames(void);
extern void sub_806BC3C(u8, u8);
extern u8 sub_806B58C(u8);
extern void sub_806D538();
-extern void sub_806E750(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, int);
extern u16 sub_806BE38();
extern u8 sub_806CA38();
extern void sub_808B5B4();
@@ -66,11 +74,22 @@ extern void CreatePartyMenuMonIcon();
extern void CreateHeldItemIcon_806DCD4(int, u8, int);
extern u8 GetMonStatusAndPokerus();
extern void PartyMenuPrintHP();
-extern void PartyMenuPutStatusTilemap(int, int, u8);
+extern void PartyMenuPutStatusTilemap(u8, int, u8);
extern void PartyMenuPrintLevel();
extern void PartyMenuPutNicknameTilemap();
extern void PrintPartyMenuMonNickname();
extern void PartyMenuDrawHPBar();
+extern bool8 sub_80F9344(void);
+extern void sub_806D4AC();
+extern void sub_806D3B4();
+extern void PartyMenuDoPrintLevel(u8, u8, u8);
+extern void PartyMenuDoDrawHPBar(u8, u8, u16, u16);
+extern void PartyMenuDoPutNicknameTilemap(u16, u8, u8, u8, const u8 *);
+extern void box_print(u8, int, const u8 *);
+extern void sub_806BCE8(void);
+extern void sub_806E750(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, int);
+extern u16 sub_806BD80();
+extern void sub_806BF74();
void sub_8121E58(void);
bool8 sub_8122030(struct Pokemon *);
@@ -82,6 +101,14 @@ void sub_8122838(u8);
void sub_81228E8(u8);
void sub_8122950(u8);
void sub_81229B8(void);
+void sub_8122AB8(u8);
+void sub_8122B10(u8);
+void sub_8122C18(u8);
+void sub_8122EAC(u8);
+void sub_81230F4(u8);
+void sub_8123138(u8);
+void sub_8123170(u8);
+void sub_81231AC(void);
void sub_8121E10(void)
{
@@ -691,3 +718,307 @@ void sub_81229B8(void)
}
}
}
+
+void sub_8122A48(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ gTasks[taskId].data[0] = 30;
+ sub_806D4AC(taskId, gUnknown_02023A00[0].species, 0);
+ sub_806D4AC(taskId, gUnknown_02023A00[1].species, 1);
+ sub_806D4AC(taskId, gUnknown_02023A00[2].species, 2);
+ gTasks[taskId].func = sub_8122AB8;
+ ewram1B000.unk261 = 1;
+ }
+}
+
+void sub_8122AB8(u8 taskId)
+{
+ sub_806D3B4(taskId, gUnknown_02023A00[1].species, gUnknown_02023A00[2].species);
+ if (gTasks[taskId].data[0] == 0)
+ {
+ gTasks[taskId].func = sub_8122B10;
+ ewram1B000.unk261 = 2;
+ PlaySE(SE_W231);
+ }
+}
+
+void sub_8122B10(u8 taskId)
+{
+ u8 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (gUnknown_02023A00[i].species != 0)
+ {
+ u8 r2;
+
+ PartyMenuDoPrintHP(i + 3, 3, gUnknown_02023A00[i].hp, gUnknown_02023A00[i].maxhp);
+ if (gUnknown_02023A00[i].hp == 0)
+ r2 = 7;
+ else
+ r2 = pokemon_ailments_get_primary(gUnknown_02023A00[i].status);
+ if (r2 != 0)
+ PartyMenuPutStatusTilemap(i + 3, 3, r2 - 1);
+ else
+ PartyMenuDoPrintLevel(i + 3, 3, gUnknown_02023A00[i].level);
+ PartyMenuDoPutNicknameTilemap(gUnknown_02023A00[i].species, gUnknown_02023A00[i].gender, 3, i + 3, gUnknown_02023A00[i].nickname);
+ StringCopy(gStringVar1, gUnknown_02023A00[i].nickname);
+ StringGetEnd10(gStringVar1);
+ SanitizeNameString(gStringVar1);
+ box_print(i + 3, 3, gStringVar1);
+ PartyMenuDoDrawHPBar(i + 3, 3, gUnknown_02023A00[i].hp, gUnknown_02023A00[i].maxhp);
+ }
+ }
+ gTasks[taskId].func = sub_8122C18;
+ gTasks[taskId].data[0] = 0;
+}
+
+void sub_8122C18(u8 taskId)
+{
+ gTasks[taskId].data[0]++;
+ if (gTasks[taskId].data[0] == 256)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gTasks[taskId].func = sub_8122450;
+ }
+}
+
+// Exactly the same as sub_8121E78 except for case 6
+bool8 unref_sub_8122C60(void)
+{
+ switch (ewram1B000_alt.unk264)
+ {
+ case 0:
+ if (ewram1B000_alt.unk266 < gPlayerPartyCount)
+ {
+ TryCreatePartyMenuMonIcon(ewram1B000_alt.unk260, ewram1B000_alt.unk266, &gPlayerParty[ewram1B000_alt.unk266]);
+ ewram1B000_alt.unk266++;
+ }
+ else
+ {
+ ewram1B000_alt.unk266 = 0;
+ ewram1B000_alt.unk264++;
+ }
+ break;
+ case 1:
+ LoadHeldItemIconGraphics();
+ ewram1B000_alt.unk264++;
+ break;
+ case 2:
+ CreateHeldItemIcons_806DC34(ewram1B000_alt.unk260);
+ ewram1B000_alt.unk264++;
+ break;
+ case 3:
+ if (sub_806BD58(ewram1B000_alt.unk260, ewram1B000_alt.unk266) == 1)
+ {
+ ewram1B000_alt.unk266 = 0;
+ ewram1B000_alt.unk264++;
+ }
+ else
+ {
+ ewram1B000_alt.unk266++;
+ }
+ break;
+ case 4:
+ PartyMenuPrintMonsLevelOrStatus();
+ ewram1B000_alt.unk264++;
+ break;
+ case 5:
+ PrintPartyMenuMonNicknames();
+ ewram1B000_alt.unk264++;
+ break;
+ case 6:
+ sub_806BCE8();
+ ewram1B000_alt.unk264++;
+ break;
+ case 7:
+ if (sub_806B58C(ewram1B000_alt.unk266) == 1)
+ {
+ ewram1B000_alt.unk266 = 0;
+ ewram1B000_alt.unk264 = 0;
+ return TRUE;
+ }
+ else
+ {
+ ewram1B000_alt.unk266++;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+void sub_8122D94(u8 taskId)
+{
+ if (!GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_IS_EGG))
+ {
+ gTasks[taskId].data[4] = 0;
+ sub_806E750(0, gUnknown_08401810, gUnknown_084017F0, 0);
+ }
+ else
+ {
+ gTasks[taskId].data[4] = 1;
+ sub_806E750(1, gUnknown_08401810, gUnknown_084017F0, 0);
+ }
+}
+
+void sub_8122E0C(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ switch (sub_806BD80(taskId))
+ {
+ case 1:
+ PlaySE(SE_SELECT);
+ gLastFieldPokeMenuOpened = sub_806CA38(taskId);
+ GetMonNickname(&gPlayerParty[gLastFieldPokeMenuOpened], gStringVar1);
+ sub_8122D94(taskId);
+ gTasks[taskId].func = sub_8122EAC;
+ break;
+ case 2:
+ PlaySE(SE_SELECT);
+ gLastFieldPokeMenuOpened = 0xFF;
+ gSpecialVar_0x8004 = 0xFF;
+ sub_8123138(taskId);
+ break;
+ }
+ }
+}
+
+void sub_8122EAC(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ if (gMain.newAndRepeatedKeys & 0x40)
+ {
+ if (GetMenuCursorPos() != 0)
+ {
+ PlaySE(SE_SELECT);
+ MoveMenuCursor(-1);
+ }
+ return;
+ }
+ if (gMain.newAndRepeatedKeys & 0x80)
+ {
+ if (GetMenuCursorPos() != 3)
+ {
+ PlaySE(SE_SELECT);
+ MoveMenuCursor(1);
+ }
+ return;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ TaskFunc popupMenuFunc;
+
+ PlaySE(SE_SELECT);
+ popupMenuFunc = PartyMenuGetPopupMenuFunc(
+ gTasks[taskId].data[4],
+ gUnknown_08401810,
+ gUnknown_084017F0,
+ GetMenuCursorPos());
+ popupMenuFunc(taskId);
+ return;
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ sub_81230F4(taskId);
+ return;
+ }
+ }
+}
+
+void sub_8122F70(u8 taskId)
+{
+ gSpecialVar_0x8004 = gLastFieldPokeMenuOpened;
+ sub_8123138(taskId);
+}
+
+void sub_8122F90(void)
+{
+ while (1)
+ {
+ if (sub_806B124() == 1)
+ {
+ sub_806C994(ewram1B000.unk260, gUnknown_020384F0);
+ sub_806BF74(ewram1B000.unk260, 0);
+ GetMonNickname(&gPlayerParty[gUnknown_020384F0], gStringVar1);
+ gLastFieldPokeMenuOpened = gUnknown_020384F0;
+ sub_8122D94(ewram1B000.unk260);
+ SetMainCallback2(sub_806AEDC);
+ break;
+ }
+ if (sub_80F9344() == 1)
+ break;
+ }
+}
+
+void sub_8123004(void)
+{
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ sub_806AF4C(6, 0xFF, sub_8122EAC, 5);
+ SetMainCallback2(sub_8122F90);
+}
+
+void sub_8123034(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ u8 r4 = gSprites[gTasks[taskId].data[3] >> 8].data0;
+
+ DestroyTask(taskId);
+ ewram1B000.unk262 = 1;
+ ShowPokemonSummaryScreen(gPlayerParty, r4, gPlayerPartyCount - 1, sub_8123004, 0);
+ }
+}
+
+void sub_81230BC(u8 taskId)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gTasks[taskId].func = sub_8123034;
+}
+
+void sub_81230F4(u8 taskId)
+{
+ PlaySE(SE_SELECT);
+ MenuZeroFillWindowRect(20, 10, 29, 19);
+ HandleDestroyMenuCursors();
+ sub_806D538(15, 0);
+ gTasks[taskId].func = sub_8122E0C;
+}
+
+void sub_8123138(u8 taskId)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gTasks[taskId].func = sub_8123170;
+}
+
+void sub_8123170(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ gFieldCallback = sub_81231AC;
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+ DestroyTask(taskId);
+ }
+}
+
+// Do these last two functions really belong in here?
+
+void sub_81231C4(u8);
+
+void sub_81231AC(void)
+{
+ pal_fill_black();
+ CreateTask(sub_81231C4, 10);
+}
+
+void sub_81231C4(u8 taskId)
+{
+ if (sub_807D770() == TRUE)
+ {
+ DestroyTask(taskId);
+ ScriptContext2_Disable();
+ EnableBothScriptContexts();
+ }
+}