diff options
Diffstat (limited to 'asm/trader.s')
-rw-r--r-- | asm/trader.s | 656 |
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. |