summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/trade.s746
-rw-r--r--data/trade.s4
-rw-r--r--src/trade.c206
3 files changed, 210 insertions, 746 deletions
diff --git a/asm/trade.s b/asm/trade.s
index fe750b735..b77be0074 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -5,748 +5,6 @@
.text
- thumb_func_start sub_804E9C0
-sub_804E9C0: @ 804E9C0
- push {lr}
- movs r0, 0
- bl sub_80FA484
- lsls r0, 24
- cmp r0, 0
- bne _0804E9DC
- bl sub_800AB9C
- ldr r0, _0804E9E0 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0xD
- strb r1, [r0]
-_0804E9DC:
- pop {r0}
- bx r0
- .align 2, 0
-_0804E9E0: .4byte gUnknown_2031DA8
- thumb_func_end sub_804E9C0
-
- thumb_func_start sub_804E9E4
-sub_804E9E4: @ 804E9E4
- push {lr}
- ldr r0, _0804E9FC @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- ldrb r0, [r0]
- cmp r0, 0x10
- bhi _0804EAA6
- lsls r0, 2
- ldr r1, _0804EA00 @ =_0804EA04
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804E9FC: .4byte gUnknown_2031DA8
-_0804EA00: .4byte _0804EA04
- .align 2, 0
-_0804EA04:
- .4byte _0804EA48
- .4byte _0804EA4E
- .4byte _0804EA54
- .4byte _0804EA5A
- .4byte _0804EA60
- .4byte _0804EAA6
- .4byte _0804EA66
- .4byte _0804EA6C
- .4byte _0804EA72
- .4byte _0804EA78
- .4byte _0804EA7E
- .4byte _0804EA84
- .4byte _0804EA8A
- .4byte _0804EA90
- .4byte _0804EA96
- .4byte _0804EA9C
- .4byte _0804EAA2
-_0804EA48:
- bl sub_804E194
- b _0804EAA6
-_0804EA4E:
- bl sub_804E388
- b _0804EAA6
-_0804EA54:
- bl sub_804E494
- b _0804EAA6
-_0804EA5A:
- bl sub_804E674
- b _0804EAA6
-_0804EA60:
- bl sub_804E744
- b _0804EAA6
-_0804EA66:
- bl sub_804E7C8
- b _0804EAA6
-_0804EA6C:
- bl sub_804E804
- b _0804EAA6
-_0804EA72:
- bl sub_804E880
- b _0804EAA6
-_0804EA78:
- bl sub_804D50C
- b _0804EAA6
-_0804EA7E:
- bl sub_804D548
- b _0804EAA6
-_0804EA84:
- bl sub_804E908
- b _0804EAA6
-_0804EA8A:
- bl sub_804E944
- b _0804EAA6
-_0804EA90:
- bl sub_804D5A4
- b _0804EAA6
-_0804EA96:
- bl sub_804E830
- b _0804EAA6
-_0804EA9C:
- bl sub_804E46C
- b _0804EAA6
-_0804EAA2:
- bl sub_804E9C0
-_0804EAA6:
- pop {r0}
- bx r0
- thumb_func_end sub_804E9E4
-
- thumb_func_start sub_804EAAC
-sub_804EAAC: @ 804EAAC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- movs r1, 0x6
- bl __udivsi3
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r3, _0804EAE0 @ =gUnknown_2031DA8
- ldr r0, [r3]
- adds r0, 0x74
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0
- bne _0804EAD8
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, [r3]
- adds r0, 0x76
- adds r0, r2
- strb r4, [r0]
-_0804EAD8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804EAE0: .4byte gUnknown_2031DA8
- thumb_func_end sub_804EAAC
-
- thumb_func_start sub_804EAE4
-sub_804EAE4: @ 804EAE4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x68
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _0804EB34 @ =gUnknown_2031DA8
- ldr r4, [r0]
- adds r0, r4, 0
- adds r0, 0x76
- adds r0, r7
- ldrb r0, [r0]
- movs r1, 0x1
- str r1, [sp, 0x60]
- cmp r0, 0x5
- bhi _0804EB0C
- movs r2, 0
- str r2, [sp, 0x60]
-_0804EB0C:
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- movs r0, 0
- mov r8, r0
- adds r0, r4, 0
- adds r0, 0x74
- adds r3, r0, r7
- ldrb r0, [r3]
- cmp r0, 0x2
- bne _0804EB2A
- b _0804ECB4
-_0804EB2A:
- cmp r0, 0x2
- bgt _0804EB38
- cmp r0, 0x1
- beq _0804EB46
- b _0804EE54
- .align 2, 0
-_0804EB34: .4byte gUnknown_2031DA8
-_0804EB38:
- cmp r0, 0x3
- bne _0804EB3E
- b _0804ECEC
-_0804EB3E:
- cmp r0, 0x4
- bne _0804EB44
- b _0804EE1C
-_0804EB44:
- b _0804EE54
-_0804EB46:
- movs r5, 0
- adds r0, r4, 0
- adds r0, 0x36
- adds r0, r7
- ldr r1, [sp, 0x60]
- lsls r1, 1
- mov r9, r1
- lsls r6, r7, 1
- lsls r2, r7, 4
- str r2, [sp, 0x64]
- ldrb r0, [r0]
- cmp r8, r0
- bcs _0804EB9A
- ldr r0, _0804ECA0 @ =gSprites
- mov r8, r0
- ldr r4, _0804ECA4 @ =gUnknown_2031DA8
- ldr r0, [sp, 0x60]
- add r0, r9
- lsls r2, r0, 1
- movs r3, 0x4
-_0804EB6E:
- ldr r0, [r4]
- adds r1, r5, r2
- adds r0, 0x28
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r3
- strb r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, [r4]
- adds r0, 0x36
- adds r0, r7
- ldrb r0, [r0]
- cmp r5, r0
- bcc _0804EB6E
-_0804EB9A:
- movs r5, 0
- adds r0, r6, r7
- lsls r0, 1
- adds r4, r0, 0x2
-_0804EBA2:
- lsls r0, r5, 24
- asrs r0, 24
- adds r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl ClearWindowTilemap
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _0804EBA2
- ldr r1, _0804ECA0 @ =gSprites
- mov r8, r1
- ldr r2, _0804ECA4 @ =gUnknown_2031DA8
- ldr r0, [r2]
- ldr r6, [sp, 0x60]
- add r6, r9
- lsls r3, r6, 1
- add r10, r3
- adds r0, 0x28
- add r0, r10
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldr r0, _0804ECA4 @ =gUnknown_2031DA8
- ldr r4, [r0]
- adds r4, 0x28
- add r4, r10
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- movs r1, 0x14
- strh r1, [r0, 0x2E]
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- add r2, r8
- ldr r5, _0804ECA8 @ =gTradeMonSpriteCoords
- lsls r6, 2
- adds r0, r6, r5
- ldrb r0, [r0]
- adds r3, 0x1
- lsls r3, 1
- adds r3, r5
- ldrb r1, [r3]
- adds r0, r1
- asrs r0, 1
- lsls r0, 3
- adds r0, 0xE
- strh r0, [r2, 0x32]
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r8
- adds r5, 0x1
- adds r6, r5
- ldrb r0, [r6]
- lsls r0, 3
- subs r0, 0xC
- strh r0, [r1, 0x36]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- ldr r1, _0804ECAC @ =SpriteCB_MonIcon
- bl StoreSpriteCallbackInData6
- ldr r2, _0804ECA4 @ =gUnknown_2031DA8
- ldr r1, [r2]
- adds r1, 0x74
- adds r1, r7
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- adds r0, 0x28
- add r0, r10
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- bl sub_8075490
- ldr r1, _0804ECB0 @ =gUnknown_8260A32
- ldr r0, [sp, 0x64]
- subs r2, r0, r7
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0xF
- str r0, [sp]
- movs r0, 0x11
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r3, 0
- bl CopyToBgTilemapBufferRect_ChangePalette
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r1, [sp, 0x60]
- cmp r1, 0
- beq _0804EC98
- b _0804EE54
-_0804EC98:
- bl sub_804F3B4
- b _0804EE54
- .align 2, 0
-_0804ECA0: .4byte gSprites
-_0804ECA4: .4byte gUnknown_2031DA8
-_0804ECA8: .4byte gTradeMonSpriteCoords
-_0804ECAC: .4byte SpriteCB_MonIcon
-_0804ECB0: .4byte gUnknown_8260A32
-_0804ECB4:
- ldr r2, _0804ECE4 @ =gSprites
- ldr r1, [sp, 0x60]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 1
- add r0, r10
- adds r1, r4, 0
- adds r1, 0x28
- adds r1, r0
- ldrb r1, [r1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _0804ECE8 @ =SpriteCB_MonIcon
- cmp r1, r0
- beq _0804ECDC
- b _0804EE54
-_0804ECDC:
- movs r0, 0x3
- strb r0, [r3]
- b _0804EE54
- .align 2, 0
-_0804ECE4: .4byte gSprites
-_0804ECE8: .4byte SpriteCB_MonIcon
-_0804ECEC:
- ldr r1, _0804EE08 @ =gUnknown_8260834
- ldr r0, [sp, 0x60]
- lsls r2, r0, 4
- subs r2, r0
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0xF
- str r0, [sp]
- movs r0, 0x11
- str r0, [sp, 0x4]
- mov r0, r8
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r3, 0
- bl CopyToBgTilemapBufferRect_ChangePalette
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- ldr r6, _0804EE0C @ =gSprites
- ldr r1, _0804EE10 @ =gUnknown_2031DA8
- ldr r4, [r1]
- ldr r2, [sp, 0x60]
- lsls r3, r2, 1
- adds r3, r2
- lsls r1, r3, 1
- mov r2, r10
- adds r0, r2, r1
- adds r4, 0x28
- adds r4, r0
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r6
- ldr r5, _0804EE14 @ =gTradeMonSpriteCoords
- lsls r3, 2
- adds r0, r3, r5
- ldrb r0, [r0]
- adds r1, 0x1
- lsls r1, 1
- adds r1, r5
- ldrb r1, [r1]
- adds r0, r1
- asrs r0, 1
- lsls r0, 3
- adds r0, 0xE
- strh r0, [r2, 0x20]
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- adds r5, 0x1
- adds r3, r5
- ldrb r0, [r3]
- lsls r0, 3
- subs r0, 0xC
- strh r0, [r1, 0x22]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- mov r1, r8
- strh r1, [r0, 0x24]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- mov r2, r8
- strh r2, [r0, 0x26]
- add r0, sp, 0x14
- ldr r1, [sp, 0x60]
- mov r2, r10
- bl sub_804EE6C
- lsls r4, r7, 1
- adds r5, r4, 0
- adds r5, 0xE
- lsls r5, 24
- lsrs r5, 24
- lsls r0, 24
- asrs r0, 24
- movs r2, 0x50
- subs r2, r0
- lsrs r0, r2, 31
- adds r2, r0
- asrs r2, 1
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _0804EE18 @ =gUnknown_8261F18
- mov r8, r0
- str r0, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- add r0, sp, 0x14
- str r0, [sp, 0x8]
- adds r0, r5, 0
- movs r3, 0x4
- bl AddTextPrinterParameterized3
- add r6, sp, 0x28
- adds r0, r6, 0
- ldr r1, [sp, 0x60]
- mov r2, r10
- bl sub_804EED4
- adds r4, 0xF
- lsls r4, 24
- lsrs r4, 24
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- mov r2, r8
- str r2, [sp, 0x8]
- str r1, [sp, 0xC]
- str r6, [sp, 0x10]
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0
- movs r3, 0
- bl AddTextPrinterParameterized4
- adds r0, r5, 0
- bl PutWindowTilemap
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
- adds r0, r4, 0
- bl PutWindowTilemap
- adds r0, r4, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, _0804EE10 @ =gUnknown_2031DA8
- ldr r1, [r0]
- b _0804EE4A
- .align 2, 0
-_0804EE08: .4byte gUnknown_8260834
-_0804EE0C: .4byte gSprites
-_0804EE10: .4byte gUnknown_2031DA8
-_0804EE14: .4byte gTradeMonSpriteCoords
-_0804EE18: .4byte gUnknown_8261F18
-_0804EE1C:
- ldr r0, _0804EE64 @ =gUnknown_8262055
- lsls r1, r7, 1
- adds r4, r1, r0
- ldrb r2, [r4]
- adds r2, 0x4
- lsls r2, 24
- lsrs r2, 24
- adds r0, 0x1
- adds r1, r0
- ldrb r3, [r1]
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- ldrb r0, [r4]
- str r0, [sp]
- ldrb r0, [r1]
- str r0, [sp, 0x4]
- adds r0, r7, 0
- mov r1, r10
- bl sub_804F08C
- ldr r2, _0804EE68 @ =gUnknown_2031DA8
- ldr r1, [r2]
-_0804EE4A:
- adds r1, 0x74
- adds r1, r7
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0804EE54:
- add sp, 0x68
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804EE64: .4byte gUnknown_8262055
-_0804EE68: .4byte gUnknown_2031DA8
- thumb_func_end sub_804EAE4
-
- thumb_func_start sub_804EE6C
-sub_804EE6C: @ 804EE6C
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r1, 24
- lsls r2, 24
- lsrs r2, 24
- cmp r1, 0
- bne _0804EE94
- movs r0, 0x64
- muls r0, r2
- ldr r1, _0804EE90 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0804EEA4
- .align 2, 0
-_0804EE90: .4byte gPlayerParty
-_0804EE94:
- movs r0, 0x64
- muls r0, r2
- ldr r1, _0804EED0 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0804EEA4:
- adds r0, r4, 0
- mov r1, sp
- bl StringCopy10
- movs r0, 0
- movs r1, 0x2
- bl GetFontAttribute
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0
- adds r1, r4, 0
- bl GetStringWidth
- lsls r0, 24
- lsrs r0, 24
- add sp, 0xC
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0804EED0: .4byte gEnemyParty
- thumb_func_end sub_804EE6C
-
- thumb_func_start sub_804EED4
-sub_804EED4: @ 804EED4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- adds r6, r0, 0
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _0804EF1C @ =gUnknown_2031DA8
- ldr r1, [r0]
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 1
- adds r0, r2, r0
- adds r1, 0x51
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- bne _0804EF8C
- movs r4, 0
- movs r0, 0x64
- adds r5, r2, 0
- muls r5, r0
- ldr r0, _0804EF20 @ =gPlayerParty
- mov r9, r0
- ldr r2, _0804EF24 @ =gEnemyParty
- mov r8, r2
-_0804EF0E:
- cmp r7, 0
- bne _0804EF28
- adds r1, r4, 0
- adds r1, 0xD
- mov r2, r9
- b _0804EF2E
- .align 2, 0
-_0804EF1C: .4byte gUnknown_2031DA8
-_0804EF20: .4byte gPlayerParty
-_0804EF24: .4byte gEnemyParty
-_0804EF28:
- adds r1, r4, 0
- adds r1, 0xD
- mov r2, r8
-_0804EF2E:
- adds r0, r5, r2
- movs r2, 0
- bl GetMonData
- lsls r1, r4, 1
- add r1, sp
- strh r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _0804EF0E
- ldr r1, _0804EF80 @ =gUnknown_8261EB6
- adds r0, r6, 0
- bl StringCopy
- movs r4, 0
-_0804EF50:
- lsls r0, r4, 1
- mov r2, sp
- adds r1, r2, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _0804EF6C
- adds r1, r0, 0
- movs r0, 0xD
- muls r1, r0
- ldr r0, _0804EF84 @ =gMoveNames
- adds r1, r0
- adds r0, r6, 0
- bl StringAppend
-_0804EF6C:
- adds r0, r6, 0
- ldr r1, _0804EF88 @ =gUnknown_8261EC7
- bl StringAppend
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _0804EF50
- b _0804EF9C
- .align 2, 0
-_0804EF80: .4byte gUnknown_8261EB6
-_0804EF84: .4byte gMoveNames
-_0804EF88: .4byte gUnknown_8261EC7
-_0804EF8C:
- ldr r1, _0804EFAC @ =gUnknown_8261EB6
- adds r0, r6, 0
- bl StringCopy
- ldr r1, _0804EFB0 @ =gUnknown_841E09F
- adds r0, r6, 0
- bl StringAppend
-_0804EF9C:
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804EFAC: .4byte gUnknown_8261EB6
-_0804EFB0: .4byte gUnknown_841E09F
- thumb_func_end sub_804EED4
-
thumb_func_start sub_804EFB4
sub_804EFB4: @ 804EFB4
push {r4-r6,lr}
@@ -1282,7 +540,7 @@ sub_804F3C8: @ 804F3C8
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r1, _0804F430 @ =gUnknown_8260A32
+ ldr r1, _0804F430 @ =gTradePartyBoxTilemap
lsls r2, r4, 4
subs r2, r4
lsls r2, 24
@@ -1324,7 +582,7 @@ sub_804F3C8: @ 804F3C8
pop {r0}
bx r0
.align 2, 0
-_0804F430: .4byte gUnknown_8260A32
+_0804F430: .4byte gTradePartyBoxTilemap
_0804F434: .4byte gUnknown_8261ECC
_0804F438: .4byte gUnknown_2031DA8
_0804F43C: .4byte 0x06010000
diff --git a/data/trade.s b/data/trade.s
index fb1c509d1..763b94e96 100644
--- a/data/trade.s
+++ b/data/trade.s
@@ -19,10 +19,10 @@ gUnknown_8260814:: @ 8260814
.4byte 0x00000064 @ sizeof(struct Pokemon)
.4byte 0x00000528
-gUnknown_8260834:: @ 8260834
+gTradeMovesBoxTilemap:: @ 8260834
.incbin "data/trade/unk_8260834.bin"
-gUnknown_8260A32:: @ 8260A32
+gTradePartyBoxTilemap:: @ 8260A32
.incbin "data/trade/unk_8260A32.bin"
gUnknown_8260C30:: @ 8260C30
diff --git a/src/trade.c b/src/trade.c
index 7c77556db..b0f3b0e90 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -19,6 +19,7 @@
#include "strings.h"
#include "menu.h"
#include "overworld.h"
+#include "battle_anim.h"
#include "party_menu.h"
#include "pokemon_summary_screen.h"
#include "pokemon_storage_system.h"
@@ -27,6 +28,7 @@
#include "constants/items.h"
#include "constants/easy_chat.h"
#include "constants/songs.h"
+#include "constants/moves.h"
struct TradeResources
{
@@ -87,7 +89,10 @@ void sub_804DFF0(void);
void sub_804E9E4(void);
void sub_804EAAC(u8 a0);
void sub_804EAE4(u8 side);
+u8 sub_804EE6C(u8 *str, u8 whichParty, u8 partyIdx);
+void sub_804EED4(u8 *str, u8 whichParty, u8 partyIdx);
void sub_804F020(u8 side);
+void sub_804F08C(u8 a0, u8 partyIdx, u8 a2, u8 a3, u8 a4, u8 a5);
void sub_804F284(u8 side);
void sub_804F3B4(void);
void sub_804F3C8(u8 a0);
@@ -115,6 +120,13 @@ extern const struct SpriteTemplate gUnknown_8261CB0;
extern const struct SpriteTemplate gUnknown_8261CC8;
extern const u8 gJPText_Shedinja[];
extern const u8 gUnknown_8261D08[][4][6];
+extern const u16 gTradePartyBoxTilemap[];
+extern const u16 gTradeMovesBoxTilemap[];
+extern const u8 gUnknown_8262055[][2];
+extern const u8 gUnknown_8261F18[];
+extern const u8 gUnknown_8261EB6[];
+extern const u8 gUnknown_8261EC7[];
+extern const u8 gUnknown_841E09F[];
void sub_804C600(void)
{
@@ -3082,3 +3094,197 @@ void sub_804E944(void)
}
}
+void sub_804E9C0(void)
+{
+ if (!sub_80FA484(FALSE))
+ {
+ sub_800AB9C();
+ gUnknown_2031DA8->unk_6F = 13;
+ }
+}
+
+void sub_804E9E4(void)
+{
+ switch (gUnknown_2031DA8->unk_6F)
+ {
+ case 0:
+ sub_804E194();
+ break;
+ case 1:
+ sub_804E388();
+ break;
+ case 2:
+ sub_804E494();
+ break;
+ case 3:
+ sub_804E674();
+ break;
+ case 4:
+ sub_804E744();
+ break;
+ case 6:
+ sub_804E7C8();
+ break;
+ case 7:
+ sub_804E804();
+ break;
+ case 8:
+ sub_804E880();
+ break;
+ case 9:
+ sub_804D50C();
+ break;
+ case 10:
+ sub_804D548();
+ break;
+ case 11:
+ sub_804E908();
+ break;
+ case 12:
+ sub_804E944();
+ break;
+ case 13:
+ sub_804D5A4();
+ break;
+ case 14:
+ sub_804E830();
+ break;
+ case 15:
+ sub_804E46C();
+ break;
+ case 16:
+ sub_804E9C0();
+ break;
+ }
+}
+
+void sub_804EAAC(u8 a0)
+{
+ u8 whichParty = a0 / PARTY_SIZE;
+
+ if (gUnknown_2031DA8->unk_74[whichParty] == 0)
+ {
+ gUnknown_2031DA8->unk_74[whichParty] = 1;
+ gUnknown_2031DA8->unk_76[whichParty] = a0;
+ }
+}
+
+void sub_804EAE4(u8 a0)
+{
+ s8 nameStringWidth;
+ u8 nickname[20];
+ u8 movesString[56];
+ u8 i;
+ u8 partyIdx;
+ u8 whichParty;
+ u8 monIdx = gUnknown_2031DA8->unk_76[a0];
+
+ whichParty = 1;
+ if (gUnknown_2031DA8->unk_76[a0] < PARTY_SIZE)
+ whichParty = 0;
+ partyIdx = monIdx % PARTY_SIZE;
+ nameStringWidth = 0;
+
+ switch (gUnknown_2031DA8->unk_74[a0])
+ {
+ case 1:
+ for (i = 0; i < gUnknown_2031DA8->partyCounts[a0]; i++)
+ {
+ gSprites[gUnknown_2031DA8->partyIcons[0][i + (whichParty * PARTY_SIZE)]].invisible = TRUE;
+ }
+
+ for (i = 0; i < 6; i++)
+ {
+ ClearWindowTilemap(i + (a0 * 6 + 2));
+ }
+
+ gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].invisible = FALSE;
+ gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].data[0] = 20;
+ gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].data[2] = (gTradeMonSpriteCoords[whichParty * PARTY_SIZE][0] + gTradeMonSpriteCoords[whichParty * PARTY_SIZE + 1][0]) / 2 * 8 + 14;
+ gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].data[4] = (gTradeMonSpriteCoords[whichParty * PARTY_SIZE][1] * 8) - 12;
+ StoreSpriteCallbackInData6(&gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]], SpriteCB_MonIcon);
+ gUnknown_2031DA8->unk_74[a0]++;
+ sub_8075490(&gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]]);
+ CopyToBgTilemapBufferRect_ChangePalette(1, gTradePartyBoxTilemap, a0 * 15, 0, 15, 17, 0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(0);
+
+ if (whichParty == 0)
+ sub_804F3B4();
+ break;
+ case 2:
+ if (gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].callback == SpriteCB_MonIcon)
+ gUnknown_2031DA8->unk_74[a0] = 3;
+ break;
+ case 3:
+ CopyToBgTilemapBufferRect_ChangePalette(1, gTradeMovesBoxTilemap, whichParty * 15, 0, 15, 17, 0);
+ CopyBgTilemapBufferToVram(1);
+ gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].pos1.x = (gTradeMonSpriteCoords[whichParty * PARTY_SIZE][0] + gTradeMonSpriteCoords[whichParty * PARTY_SIZE + 1][0]) / 2 * 8 + 14;
+ gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].pos1.y = (gTradeMonSpriteCoords[whichParty * PARTY_SIZE][1] * 8) - 12;
+ gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].pos2.x = 0;
+ gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].pos2.y = 0;
+ nameStringWidth = sub_804EE6C(nickname, whichParty, partyIdx);
+ AddTextPrinterParameterized3((a0 * 2) + 14, 0, (80 - nameStringWidth) / 2, 4, gUnknown_8261F18, 0, nickname);
+ sub_804EED4(movesString, whichParty, partyIdx);
+ AddTextPrinterParameterized4((a0 * 2) + 15, 1, 0, 0, 0, 0, gUnknown_8261F18, 0, movesString);
+ PutWindowTilemap((a0 * 2) + 14);
+ CopyWindowToVram((a0 * 2) + 14, 3);
+ PutWindowTilemap((a0 * 2) + 15);
+ CopyWindowToVram((a0 * 2) + 15, 3);
+ gUnknown_2031DA8->unk_74[a0]++;
+ break;
+ case 4:
+ sub_804F08C(a0, partyIdx, gUnknown_8262055[a0][0] + 4, gUnknown_8262055[a0][1] + 1, gUnknown_8262055[a0][0], gUnknown_8262055[a0][1]);
+ gUnknown_2031DA8->unk_74[a0]++;
+ break;
+ }
+}
+
+u8 sub_804EE6C(u8 *dest, u8 whichParty, u8 partyIdx)
+{
+ u8 nickname[11];
+ if (whichParty == 0)
+ GetMonData(&gPlayerParty[partyIdx], MON_DATA_NICKNAME, nickname);
+ else
+ GetMonData(&gEnemyParty[partyIdx], MON_DATA_NICKNAME, nickname);
+ StringCopy10(dest, nickname);
+ return GetStringWidth(0, dest, GetFontAttribute(0, FONTATTR_LETTER_SPACING));
+}
+
+void sub_804EED4(u8 *a0, u8 a1, u8 a2)
+{
+ u16 moves[MAX_MON_MOVES];
+ u16 i;
+
+ if (!gUnknown_2031DA8->unk_51[a1][a2])
+ {
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ if (!a1)
+ {
+ moves[i] = GetMonData(&gPlayerParty[a2], i + MON_DATA_MOVE1, NULL);
+ }
+ else
+ {
+ moves[i] = GetMonData(&gEnemyParty[a2], i + MON_DATA_MOVE1, NULL);
+ }
+ }
+
+ StringCopy(a0, gUnknown_8261EB6);
+
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ if (moves[i] != MOVE_NONE)
+ {
+ StringAppend(a0, gMoveNames[moves[i]]);
+ }
+
+ StringAppend(a0, gUnknown_8261EC7);
+ }
+ }
+ else
+ {
+ StringCopy(a0, gUnknown_8261EB6);
+ StringAppend(a0, gUnknown_841E09F);
+ }
+}