summaryrefslogtreecommitdiff
path: root/asm/trader.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/trader.s')
-rw-r--r--asm/trader.s656
1 files changed, 656 insertions, 0 deletions
diff --git a/asm/trader.s b/asm/trader.s
new file mode 100644
index 000000000..784bd6071
--- /dev/null
+++ b/asm/trader.s
@@ -0,0 +1,656 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_810993C
+sub_810993C: @ 810993C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x10
+ ldr r0, _081099C8
+ mov r9, r0
+ movs r2, 0
+_0810994E:
+ adds r1, r2, 0x1
+ lsls r0, r1, 24
+ lsrs r5, r0, 24
+ str r1, [sp, 0xC]
+ cmp r5, 0x3
+ bhi _081099AC
+ movs r1, 0x1
+ add r1, r9
+ mov r8, r1
+ adds r6, r1, r2
+ movs r0, 0xB
+ mov r10, r0
+ mov r0, r10
+ muls r0, r2
+ adds r0, 0x5
+ mov r1, r9
+ adds r7, r1, r0
+_08109970:
+ ldrb r0, [r6]
+ cmp r0, 0
+ bne _081099A2
+ adds r2, r0, 0
+ mov r0, r8
+ adds r1, r0, r5
+ ldrb r0, [r1]
+ strb r0, [r6]
+ strb r2, [r1]
+ mov r0, sp
+ adds r1, r7, 0
+ bl StringCopy
+ mov r4, r10
+ muls r4, r5
+ adds r4, 0x5
+ add r4, r9
+ adds r0, r7, 0
+ adds r1, r4, 0
+ bl StringCopy
+ adds r0, r4, 0
+ mov r1, sp
+ bl StringCopy
+_081099A2:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x3
+ bls _08109970
+_081099AC:
+ ldr r1, [sp, 0xC]
+ lsls r0, r1, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x2
+ bls _0810994E
+ 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
+_081099C8: .4byte gSaveBlock1 + 0x2D94
+ thumb_func_end sub_810993C
+
+ thumb_func_start sub_81099CC
+sub_81099CC: @ 81099CC
+ push {r4-r6,lr}
+ ldr r5, _08109A14
+ movs r1, 0
+ movs r0, 0x2
+ strb r0, [r5]
+ adds r0, r5, 0
+ adds r0, 0x31
+ strb r1, [r0]
+ movs r4, 0
+ ldr r6, _08109A18
+_081099E0:
+ movs r0, 0xB
+ muls r0, r4
+ adds r0, 0x5
+ adds r0, r5, r0
+ lsls r1, r4, 2
+ adds r1, r6
+ ldr r1, [r1]
+ bl StringCopy
+ adds r1, r5, 0x1
+ adds r1, r4
+ ldr r0, _08109A1C
+ adds r0, r4, r0
+ ldrb r0, [r0]
+ strb r0, [r1]
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x3
+ bls _081099E0
+ bl sub_810993C
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08109A14: .4byte gSaveBlock1 + 0x2D94
+_08109A18: .4byte gUnknown_083F62D8
+_08109A1C: .4byte gTraderDecorations
+ thumb_func_end sub_81099CC
+
+ thumb_func_start sub_8109A20
+sub_8109A20: @ 8109A20
+ ldr r0, _08109A2C
+ adds r0, 0x31
+ movs r1, 0
+ strb r1, [r0]
+ bx lr
+ .align 2, 0
+_08109A2C: .4byte gSaveBlock1 + 0x2D94
+ thumb_func_end sub_8109A20
+
+ thumb_func_start sub_8109A30
+sub_8109A30: @ 8109A30
+ push {lr}
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r0, _08109A44
+ bl VarSet
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08109A44: .4byte 0x00004020
+ thumb_func_end sub_8109A30
+
+ thumb_func_start sub_8109A48
+sub_8109A48: @ 8109A48
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ movs r6, 0x1
+ movs r5, 0
+ ldr r0, _08109AB8
+ movs r4, 0
+ adds r7, r0, 0x1
+ adds r1, r7, 0
+_08109A64:
+ adds r0, r1, r4
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08109A72
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+_08109A72:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x3
+ bls _08109A64
+ lsls r3, r6, 25
+ movs r0, 0x80
+ lsls r0, 18
+ adds r3, r0
+ lsrs r3, 24
+ movs r0, 0
+ movs r1, 0x1
+ movs r2, 0xC
+ bl MenuDrawTextWindow
+ movs r4, 0
+ mov r1, r9
+ lsls r1, 2
+ mov r8, r1
+_08109A98:
+ adds r1, r7, r4
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _08109ADE
+ cmp r0, 0x78
+ bls _08109AC0
+ lsls r2, r5, 25
+ movs r0, 0x80
+ lsls r0, 18
+ adds r2, r0
+ lsrs r2, 24
+ ldr r0, _08109ABC
+ movs r1, 0x1
+ bl MenuPrint
+ b _08109AD8
+ .align 2, 0
+_08109AB8: .4byte gSaveBlock1 + 0x2D94
+_08109ABC: .4byte gOtherText_FiveQuestionsAndSlash
+_08109AC0:
+ ldrb r0, [r1]
+ lsls r0, 5
+ ldr r1, _08109B28
+ adds r0, r1
+ lsls r2, r5, 25
+ movs r1, 0x80
+ lsls r1, 18
+ adds r2, r1
+ lsrs r2, 24
+ movs r1, 0x1
+ bl MenuPrint
+_08109AD8:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+_08109ADE:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x3
+ bls _08109A98
+ ldr r0, _08109B2C
+ lsls r2, r5, 25
+ movs r1, 0x80
+ lsls r1, 18
+ adds r2, r1
+ lsrs r2, 24
+ movs r1, 0x1
+ bl MenuPrint
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0xB
+ str r0, [sp, 0x4]
+ movs r0, 0
+ movs r1, 0x1
+ movs r2, 0x2
+ adds r3, r6, 0
+ bl InitMenu
+ ldr r1, _08109B30
+ mov r0, r8
+ add r0, r9
+ lsls r0, 3
+ adds r0, r1
+ strh r5, [r0, 0xA]
+ add sp, 0x8
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08109B28: .4byte gDecorations + 0x1
+_08109B2C: .4byte gOtherText_CancelNoTerminator
+_08109B30: .4byte gTasks
+ thumb_func_end sub_8109A48
+
+ thumb_func_start sub_8109B34
+sub_8109B34: @ 8109B34
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ cmp r1, 0x78
+ bls _08109B54
+ ldr r1, _08109B4C
+ ldr r2, _08109B50
+ adds r0, r2, 0
+ strh r0, [r1]
+ b _08109B58
+ .align 2, 0
+_08109B4C: .4byte gUnknown_0202E8CC
+_08109B50: .4byte 0x0000ffff
+_08109B54:
+ ldr r0, _08109B78
+ strh r1, [r0]
+_08109B58:
+ bl sub_8072DEC
+ movs r0, 0
+ movs r1, 0x1
+ movs r2, 0xC
+ movs r3, 0xC
+ bl MenuZeroFillWindowRect
+ adds r0, r4, 0
+ bl DestroyTask
+ bl EnableBothScriptContexts
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08109B78: .4byte gUnknown_0202E8CC
+ thumb_func_end sub_8109B34
+
+ thumb_func_start sub_8109B7C
+sub_8109B7C: @ 8109B7C
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r5, r4, 0
+ ldr r6, _08109BA4
+ ldr r0, _08109BA8
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _08109BAC
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0x1
+ negs r0, r0
+ bl MoveMenuCursor
+ b _08109C3E
+ .align 2, 0
+_08109BA4: .4byte gSaveBlock1 + 0x2D94
+_08109BA8: .4byte gMain
+_08109BAC:
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _08109BC2
+ movs r0, 0x5
+ bl PlaySE
+ movs r0, 0x1
+ bl MoveMenuCursor
+ b _08109C3E
+_08109BC2:
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08109C28
+ movs r0, 0x5
+ bl PlaySE
+ ldr r5, _08109BFC
+ bl GetMenuCursorPos
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5]
+ ldr r1, _08109C00
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ movs r1, 0xA
+ ldrsh r0, [r0, r1]
+ ldrh r2, [r5]
+ cmp r0, r2
+ bne _08109C04
+ adds r0, r4, 0
+ movs r1, 0
+ bl sub_8109B34
+ b _08109C3E
+ .align 2, 0
+_08109BFC: .4byte gUnknown_0202E8CE
+_08109C00: .4byte gTasks
+_08109C04:
+ ldr r0, _08109C24
+ movs r1, 0xB
+ muls r1, r2
+ adds r1, 0x5
+ adds r1, r6
+ bl StringCopy
+ adds r0, r6, 0x1
+ ldrh r5, [r5]
+ adds r0, r5
+ ldrb r1, [r0]
+ adds r0, r4, 0
+ bl sub_8109B34
+ b _08109C3E
+ .align 2, 0
+_08109C24: .4byte gStringVar1
+_08109C28:
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _08109C3E
+ movs r0, 0x5
+ bl PlaySE
+ adds r0, r5, 0
+ movs r1, 0
+ bl sub_8109B34
+_08109C3E:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8109B7C
+
+ thumb_func_start sub_8109C44
+sub_8109C44: @ 8109C44
+ ldr r0, _08109C50
+ ldr r1, _08109C54
+ adds r0, 0x31
+ ldrb r0, [r0]
+ strh r0, [r1]
+ bx lr
+ .align 2, 0
+_08109C50: .4byte gSaveBlock1 + 0x2D94
+_08109C54: .4byte gScriptResult
+ thumb_func_end sub_8109C44
+
+ thumb_func_start sub_8109C58
+sub_8109C58: @ 8109C58
+ push {r4,r5,lr}
+ movs r4, 0
+ ldr r5, _08109C70
+_08109C5E:
+ adds r0, r4, 0
+ bl sub_8134194
+ lsls r0, 24
+ cmp r0, 0
+ beq _08109C74
+ movs r0, 0
+ strh r0, [r5]
+ b _08109C84
+ .align 2, 0
+_08109C70: .4byte gScriptResult
+_08109C74:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x7
+ bls _08109C5E
+ ldr r1, _08109C8C
+ movs r0, 0x1
+ strh r0, [r1]
+_08109C84:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08109C8C: .4byte gScriptResult
+ thumb_func_end sub_8109C58
+
+ thumb_func_start sub_8109C90
+sub_8109C90: @ 8109C90
+ push {r4-r6,lr}
+ ldr r6, _08109CDC
+ movs r0, 0
+ strh r0, [r6]
+ ldr r4, _08109CE0
+ ldr r5, _08109CE4
+ ldrh r0, [r5]
+ lsls r0, 5
+ adds r2, r0, r4
+ ldr r0, _08109CE8
+ ldrh r0, [r0]
+ lsls r0, 5
+ adds r0, r4
+ ldrb r1, [r2, 0x13]
+ ldrb r0, [r0, 0x13]
+ cmp r1, r0
+ beq _08109CD6
+ adds r0, r1, 0
+ bl sub_8133F9C
+ lsls r0, 24
+ asrs r0, 24
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _08109CD6
+ ldr r0, _08109CEC
+ ldrh r1, [r5]
+ lsls r1, 5
+ adds r1, r4
+ ldrb r1, [r1, 0x13]
+ bl sub_80FE7D4
+ movs r0, 0x1
+ strh r0, [r6]
+_08109CD6:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08109CDC: .4byte gScriptResult
+_08109CE0: .4byte gDecorations
+_08109CE4: .4byte gUnknown_0202E8CC
+_08109CE8: .4byte gUnknown_0202E8D0
+_08109CEC: .4byte gStringVar2
+ thumb_func_end sub_8109C90
+
+ thumb_func_start sub_8109CF0
+sub_8109CF0: @ 8109CF0
+ push {lr}
+ ldr r0, _08109D00
+ movs r1, 0
+ bl CreateTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08109D00: .4byte sub_80FE7A8
+ thumb_func_end sub_8109CF0
+
+ thumb_func_start sub_8109D04
+sub_8109D04: @ 8109D04
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ bl sub_8072DEC
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0x1D
+ movs r3, 0x13
+ bl MenuZeroFillWindowRect
+ movs r0, 0
+ bl SetBgTilemapBuffer
+ movs r0, 0x1
+ bl SetBgTilemapBuffer
+ ldr r0, _08109D6C
+ movs r1, 0x8
+ bl sub_80F9520
+ bl BuyMenuFreeMemory
+ bl sub_80FEFA4
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _08109D8C
+ ldr r5, _08109D70
+ ldr r0, _08109D74
+ ldrb r1, [r0]
+ ldr r0, _08109D78
+ ldr r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ strh r0, [r5]
+ ldr r0, _08109D7C
+ ldr r1, _08109D80
+ ldrh r1, [r1]
+ lsls r1, 5
+ ldr r4, _08109D84
+ adds r1, r4
+ bl StringCopy
+ ldr r0, _08109D88
+ ldrh r1, [r5]
+ lsls r1, 5
+ adds r1, r4
+ bl StringCopy
+ b _08109D94
+ .align 2, 0
+_08109D6C: .4byte gUnknown_020388F7
+_08109D70: .4byte gUnknown_0202E8D0
+_08109D74: .4byte gUnknown_020388F5
+_08109D78: .4byte gUnknown_020388D0
+_08109D7C: .4byte gStringVar3
+_08109D80: .4byte gUnknown_0202E8CC
+_08109D84: .4byte gDecorations + 0x1
+_08109D88: .4byte gStringVar2
+_08109D8C:
+ ldr r1, _08109DA4
+ ldr r2, _08109DA8
+ adds r0, r2, 0
+ strh r0, [r1]
+_08109D94:
+ adds r0, r6, 0
+ bl DestroyTask
+ bl EnableBothScriptContexts
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08109DA4: .4byte gUnknown_0202E8D0
+_08109DA8: .4byte 0x0000ffff
+ thumb_func_end sub_8109D04
+
+ thumb_func_start sub_8109DAC
+sub_8109DAC: @ 8109DAC
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ bl sub_8072DEC
+ movs r0, 0
+ movs r1, 0
+ movs r2, 0x1D
+ movs r3, 0x13
+ bl MenuZeroFillWindowRect
+ ldr r1, _08109DDC
+ movs r0, 0
+ strh r0, [r1]
+ adds r0, r4, 0
+ bl DestroyTask
+ bl EnableBothScriptContexts
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08109DDC: .4byte gUnknown_0202E8D0
+ thumb_func_end sub_8109DAC
+
+ thumb_func_start sub_8109DE0
+sub_8109DE0: @ 8109DE0
+ push {r4-r6,lr}
+ ldr r4, _08109E20
+ ldr r6, _08109E24
+ ldrb r0, [r6]
+ bl sub_81340A8
+ ldr r0, _08109E28
+ ldrb r0, [r0]
+ bl IsThereStorageSpaceForDecoration
+ ldr r5, _08109E2C
+ ldrh r1, [r5]
+ movs r0, 0xB
+ muls r0, r1
+ adds r0, 0x5
+ adds r0, r4
+ ldr r1, _08109E30
+ bl StringCopy
+ adds r0, r4, 0x1
+ ldrh r5, [r5]
+ adds r0, r5
+ ldrh r1, [r6]
+ strb r1, [r0]
+ bl sub_810993C
+ adds r4, 0x31
+ movs r0, 0x1
+ strb r0, [r4]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08109E20: .4byte gSaveBlock1 + 0x2D94
+_08109E24: .4byte gUnknown_0202E8D0
+_08109E28: .4byte gUnknown_0202E8CC
+_08109E2C: .4byte gUnknown_0202E8CE
+_08109E30: .4byte gSaveBlock2
+ thumb_func_end sub_8109DE0
+
+ thumb_func_start sub_8109E34
+sub_8109E34: @ 8109E34
+ push {lr}
+ ldr r0, _08109E4C
+ movs r1, 0
+ bl CreateTask
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_8109A48
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08109E4C: .4byte sub_8109B7C
+ thumb_func_end sub_8109E34
+
+ .align 2, 0 @ Don't pad with nop.