mirror of
https://github.com/pret/pokeruby.git
synced 2026-08-08 18:45:06 -05:00
commit
67ced1d77e
656
asm/trader.s
656
asm/trader.s
|
|
@ -1,656 +0,0 @@
|
|||
.include "constants/gba_constants.inc"
|
||||
.include "constants/species_constants.inc"
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.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 @ =gSaveBlock1 + 0x2D94
|
||||
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 @ =gSaveBlock1 + 0x2D94
|
||||
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 @ =gUnknown_083F62D8
|
||||
_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 @ =gTraderDecorations
|
||||
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 @ =gSaveBlock1 + 0x2D94
|
||||
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 @ =0x00004020
|
||||
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 @ =gSaveBlock1 + 0x2D94
|
||||
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 @ =gOtherText_FiveQuestionsAndSlash
|
||||
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 @ =gDecorations + 0x1
|
||||
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 @ =gOtherText_CancelNoTerminator
|
||||
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 @ =gTasks
|
||||
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 @ =gSpecialVar_0x8004
|
||||
ldr r2, _08109B50 @ =0x0000ffff
|
||||
adds r0, r2, 0
|
||||
strh r0, [r1]
|
||||
b _08109B58
|
||||
.align 2, 0
|
||||
_08109B4C: .4byte gSpecialVar_0x8004
|
||||
_08109B50: .4byte 0x0000ffff
|
||||
_08109B54:
|
||||
ldr r0, _08109B78 @ =gSpecialVar_0x8004
|
||||
strh r1, [r0]
|
||||
_08109B58:
|
||||
bl HandleDestroyMenuCursors
|
||||
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 gSpecialVar_0x8004
|
||||
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 @ =gSaveBlock1 + 0x2D94
|
||||
ldr r0, _08109BA8 @ =gMain
|
||||
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 @ =gSpecialVar_0x8005
|
||||
bl GetMenuCursorPos
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
strh r0, [r5]
|
||||
ldr r1, _08109C00 @ =gTasks
|
||||
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 gSpecialVar_0x8005
|
||||
_08109C00: .4byte gTasks
|
||||
_08109C04:
|
||||
ldr r0, _08109C24 @ =gStringVar1
|
||||
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 @ =gSaveBlock1 + 0x2D94
|
||||
ldr r1, _08109C54 @ =gScriptResult
|
||||
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 @ =gScriptResult
|
||||
_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 @ =gScriptResult
|
||||
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 @ =gScriptResult
|
||||
movs r0, 0
|
||||
strh r0, [r6]
|
||||
ldr r4, _08109CE0 @ =gDecorations
|
||||
ldr r5, _08109CE4 @ =gSpecialVar_0x8004
|
||||
ldrh r0, [r5]
|
||||
lsls r0, 5
|
||||
adds r2, r0, r4
|
||||
ldr r0, _08109CE8 @ =gSpecialVar_0x8006
|
||||
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 @ =gStringVar2
|
||||
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 gSpecialVar_0x8004
|
||||
_08109CE8: .4byte gSpecialVar_0x8006
|
||||
_08109CEC: .4byte gStringVar2
|
||||
thumb_func_end sub_8109C90
|
||||
|
||||
thumb_func_start sub_8109CF0
|
||||
sub_8109CF0: @ 8109CF0
|
||||
push {lr}
|
||||
ldr r0, _08109D00 @ =sub_80FE7A8
|
||||
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 HandleDestroyMenuCursors
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
movs r2, 0x1D
|
||||
movs r3, 0x13
|
||||
bl MenuZeroFillWindowRect
|
||||
movs r0, 0
|
||||
bl DestroyVerticalScrollIndicator
|
||||
movs r0, 0x1
|
||||
bl DestroyVerticalScrollIndicator
|
||||
ldr r0, _08109D6C @ =gUnknown_020388F7
|
||||
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 @ =gSpecialVar_0x8006
|
||||
ldr r0, _08109D74 @ =gUnknown_020388F5
|
||||
ldrb r1, [r0]
|
||||
ldr r0, _08109D78 @ =gUnknown_020388D0
|
||||
ldr r0, [r0]
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
strh r0, [r5]
|
||||
ldr r0, _08109D7C @ =gStringVar3
|
||||
ldr r1, _08109D80 @ =gSpecialVar_0x8004
|
||||
ldrh r1, [r1]
|
||||
lsls r1, 5
|
||||
ldr r4, _08109D84 @ =gDecorations + 0x1
|
||||
adds r1, r4
|
||||
bl StringCopy
|
||||
ldr r0, _08109D88 @ =gStringVar2
|
||||
ldrh r1, [r5]
|
||||
lsls r1, 5
|
||||
adds r1, r4
|
||||
bl StringCopy
|
||||
b _08109D94
|
||||
.align 2, 0
|
||||
_08109D6C: .4byte gUnknown_020388F7
|
||||
_08109D70: .4byte gSpecialVar_0x8006
|
||||
_08109D74: .4byte gUnknown_020388F5
|
||||
_08109D78: .4byte gUnknown_020388D0
|
||||
_08109D7C: .4byte gStringVar3
|
||||
_08109D80: .4byte gSpecialVar_0x8004
|
||||
_08109D84: .4byte gDecorations + 0x1
|
||||
_08109D88: .4byte gStringVar2
|
||||
_08109D8C:
|
||||
ldr r1, _08109DA4 @ =gSpecialVar_0x8006
|
||||
ldr r2, _08109DA8 @ =0x0000ffff
|
||||
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 gSpecialVar_0x8006
|
||||
_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 HandleDestroyMenuCursors
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
movs r2, 0x1D
|
||||
movs r3, 0x13
|
||||
bl MenuZeroFillWindowRect
|
||||
ldr r1, _08109DDC @ =gSpecialVar_0x8006
|
||||
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 gSpecialVar_0x8006
|
||||
thumb_func_end sub_8109DAC
|
||||
|
||||
thumb_func_start sub_8109DE0
|
||||
sub_8109DE0: @ 8109DE0
|
||||
push {r4-r6,lr}
|
||||
ldr r4, _08109E20 @ =gSaveBlock1 + 0x2D94
|
||||
ldr r6, _08109E24 @ =gSpecialVar_0x8006
|
||||
ldrb r0, [r6]
|
||||
bl sub_81340A8
|
||||
ldr r0, _08109E28 @ =gSpecialVar_0x8004
|
||||
ldrb r0, [r0]
|
||||
bl IsThereStorageSpaceForDecoration
|
||||
ldr r5, _08109E2C @ =gSpecialVar_0x8005
|
||||
ldrh r1, [r5]
|
||||
movs r0, 0xB
|
||||
muls r0, r1
|
||||
adds r0, 0x5
|
||||
adds r0, r4
|
||||
ldr r1, _08109E30 @ =gSaveBlock2
|
||||
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 gSpecialVar_0x8006
|
||||
_08109E28: .4byte gSpecialVar_0x8004
|
||||
_08109E2C: .4byte gSpecialVar_0x8005
|
||||
_08109E30: .4byte gSaveBlock2
|
||||
thumb_func_end sub_8109DE0
|
||||
|
||||
thumb_func_start sub_8109E34
|
||||
sub_8109E34: @ 8109E34
|
||||
push {lr}
|
||||
ldr r0, _08109E4C @ =sub_8109B7C
|
||||
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.
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
|
||||
.align 2
|
||||
gUnknown_083F62D8:: @ 83F62D8
|
||||
.4byte SecretBaseText_Tristan
|
||||
.4byte SecretBaseText_Philip
|
||||
.4byte SecretBaseText_Dennis
|
||||
.4byte SecretBaseText_Roberto
|
||||
|
||||
gTraderDecorations:: @ 83F62E8
|
||||
.byte DECOR_DUSKULL_DOLL
|
||||
.byte DECOR_BALL_CUSHION
|
||||
.byte DECOR_TIRE
|
||||
.byte DECOR_PRETTY_FLOWERS
|
||||
|
|
@ -300,6 +300,8 @@ void sub_80FE5AC(u8);
|
|||
void sub_80FE604(u8);
|
||||
void sub_80FE728(u8);
|
||||
void sub_80FE758(u8);
|
||||
void sub_80FE7A8(u8);
|
||||
void sub_80FE7D4(u8 *, u8);
|
||||
void sub_80FE868(u8);
|
||||
void sub_80FE948(u8);
|
||||
void sub_80FEABC(u8, u8);
|
||||
|
|
@ -307,6 +309,7 @@ void sub_80FEC94(u8);
|
|||
void sub_80FECB8(u8);
|
||||
void sub_80FECE0(u8);
|
||||
void sub_80FEF50(u8);
|
||||
bool8 sub_80FEFA4(void);
|
||||
void sub_80FF394(u16, u16, u16);
|
||||
void sub_80FF6AC(u8);
|
||||
void sub_80FF960(u8);
|
||||
|
|
|
|||
|
|
@ -2,9 +2,11 @@
|
|||
#define GUARD_DECORATION_INVENTORY_H
|
||||
|
||||
void ClearDecorationInventories(void);
|
||||
s8 sub_8133F9C(u8);
|
||||
u8 sub_8133FE4(u8);
|
||||
u8 IsThereStorageSpaceForDecoration(u8);
|
||||
u8 sub_8134074(u8);
|
||||
s8 sub_81340A8(u8);
|
||||
u8 sub_8134194(u8);
|
||||
|
||||
#endif // GUARD_DECORATION_INVENTORY_H
|
||||
|
|
|
|||
|
|
@ -469,10 +469,20 @@ struct UnkMauvilleOldManStruct2
|
|||
u8 fillerF[0x2];
|
||||
}; /*size = 0x2C*/
|
||||
|
||||
struct MauvilleOldManTrader
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1[4];
|
||||
u8 unk5[4][11];
|
||||
u8 unk31;
|
||||
};
|
||||
|
||||
typedef union OldMan
|
||||
{
|
||||
struct UnkMauvilleOldManStruct oldMan1;
|
||||
struct UnkMauvilleOldManStruct2 oldMan2;
|
||||
struct MauvilleOldManTrader trader;
|
||||
u8 filler[0x40];
|
||||
} OldMan;
|
||||
|
||||
struct Unk_SB_Access_Struct1
|
||||
|
|
@ -606,7 +616,6 @@ struct SaveBlock1 /* 0x02025734 */
|
|||
/*0x2D8C*/ u8 unk2D8C[4];
|
||||
/*0x2D90*/ u8 filler_2D90[0x4];
|
||||
/*0x2D94*/ OldMan oldMan;
|
||||
/*0x2DC0*/ u8 unk_2DC0[0x14];
|
||||
/*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff
|
||||
/*0x2DFC*/ u8 filler_2DFC[0x8];
|
||||
/*0x2E04*/ SB_Struct sbStruct;
|
||||
|
|
|
|||
|
|
@ -208,7 +208,7 @@ SECTIONS {
|
|||
src/slot_machine.o(.text_b);
|
||||
src/contest_painting.o(.text);
|
||||
src/battle_ai.o(.text);
|
||||
asm/trader.o(.text);
|
||||
src/trader.o(.text);
|
||||
src/starter_choose.o(.text);
|
||||
src/wallclock.o(.text);
|
||||
src/rom6.o(.text);
|
||||
|
|
@ -434,7 +434,7 @@ SECTIONS {
|
|||
data/slot_machine.o(.rodata);
|
||||
src/contest_painting.o(.rodata);
|
||||
src/battle_ai.o(.rodata);
|
||||
data/trader.o(.rodata);
|
||||
src/trader.o(.rodata);
|
||||
src/starter_choose.o(.rodata);
|
||||
src/wallclock.o(.rodata);
|
||||
src/pokeblock.o(.rodata);
|
||||
|
|
|
|||
261
src/trader.c
Normal file
261
src/trader.c
Normal file
|
|
@ -0,0 +1,261 @@
|
|||
#include "global.h"
|
||||
#include "decoration.h"
|
||||
#include "decoration_inventory.h"
|
||||
#include "event_data.h"
|
||||
#include "main.h"
|
||||
#include "menu.h"
|
||||
#include "menu_helpers.h"
|
||||
#include "script.h"
|
||||
#include "songs.h"
|
||||
#include "sound.h"
|
||||
#include "string_util.h"
|
||||
#include "strings.h"
|
||||
#include "task.h"
|
||||
|
||||
extern u16 gSpecialVar_0x8004;
|
||||
extern u16 gSpecialVar_0x8005;
|
||||
extern u16 gSpecialVar_0x8006;
|
||||
|
||||
static const u8 * const gUnknown_083F62D8[] =
|
||||
{
|
||||
SecretBaseText_Tristan,
|
||||
SecretBaseText_Philip,
|
||||
SecretBaseText_Dennis,
|
||||
SecretBaseText_Roberto,
|
||||
};
|
||||
|
||||
static const u8 gTraderDecorations[] =
|
||||
{
|
||||
DECOR_DUSKULL_DOLL,
|
||||
DECOR_BALL_CUSHION,
|
||||
DECOR_TIRE,
|
||||
DECOR_PRETTY_FLOWERS,
|
||||
};
|
||||
|
||||
void sub_810993C(void)
|
||||
{
|
||||
u8 i, j;
|
||||
u8 buffer[12];
|
||||
struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
for (j = i + 1; j < 4; j++)
|
||||
{
|
||||
if (trader->unk1[i] == 0)
|
||||
{
|
||||
u8 temp = trader->unk1[i];
|
||||
trader->unk1[i] = trader->unk1[j];
|
||||
trader->unk1[j] = temp;
|
||||
StringCopy(buffer, trader->unk5[i]);
|
||||
StringCopy(trader->unk5[i], trader->unk5[j]);
|
||||
StringCopy(trader->unk5[j], buffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81099CC(void)
|
||||
{
|
||||
u8 i;
|
||||
struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
|
||||
|
||||
trader->unk0 = 2;
|
||||
trader->unk31 = 0;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
StringCopy(trader->unk5[i], gUnknown_083F62D8[i]);
|
||||
trader->unk1[i] = gTraderDecorations[i];
|
||||
}
|
||||
|
||||
sub_810993C();
|
||||
}
|
||||
|
||||
void sub_8109A20(void)
|
||||
{
|
||||
struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
|
||||
trader->unk31 = 0;
|
||||
}
|
||||
|
||||
void sub_8109A30(u8 value)
|
||||
{
|
||||
VarSet(VAR_RECYCLE_GOODS, value);
|
||||
}
|
||||
|
||||
void sub_8109A48(u8 taskId)
|
||||
{
|
||||
u8 i;
|
||||
u8 numChoices = 1;
|
||||
u8 numDecorations = 0;
|
||||
struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (trader->unk1[i])
|
||||
{
|
||||
numChoices++;
|
||||
}
|
||||
}
|
||||
|
||||
MenuDrawTextWindow(0, 1, 12, numChoices * 2 + 2);
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (trader->unk1[i])
|
||||
{
|
||||
if (trader->unk1[i] > DECOR_REGISTEEL_DOLL)
|
||||
{
|
||||
MenuPrint(gOtherText_FiveQuestionsAndSlash, 1, numDecorations * 2 + 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
MenuPrint(gDecorations[trader->unk1[i]].name, 1, numDecorations * 2 + 2);
|
||||
}
|
||||
|
||||
numDecorations++;
|
||||
}
|
||||
}
|
||||
|
||||
MenuPrint(gOtherText_CancelNoTerminator, 1, numDecorations * 2 + 2);
|
||||
InitMenu(0, 1, 2, numChoices, 0, 11);
|
||||
gTasks[taskId].data[1] = numDecorations;
|
||||
}
|
||||
|
||||
void sub_8109B34(u8 taskId, u8 decorationId)
|
||||
{
|
||||
if (decorationId > DECOR_REGISTEEL_DOLL)
|
||||
{
|
||||
gSpecialVar_0x8004 = 0xFFFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSpecialVar_0x8004 = decorationId;
|
||||
}
|
||||
|
||||
HandleDestroyMenuCursors();
|
||||
MenuZeroFillWindowRect(0, 1, 12, 12);
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
}
|
||||
|
||||
void sub_8109B7C(u8 taskId)
|
||||
{
|
||||
struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
|
||||
|
||||
if (gMain.newKeys & DPAD_UP)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
MoveMenuCursor(-1);
|
||||
}
|
||||
else if (gMain.newKeys & DPAD_DOWN)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
MoveMenuCursor(1);
|
||||
}
|
||||
else if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
gSpecialVar_0x8005 = GetMenuCursorPos();
|
||||
if (gTasks[taskId].data[1] == gSpecialVar_0x8005)
|
||||
{
|
||||
sub_8109B34(taskId, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
StringCopy(gStringVar1, trader->unk5[gSpecialVar_0x8005]);
|
||||
sub_8109B34(taskId, trader->unk1[gSpecialVar_0x8005]);
|
||||
}
|
||||
}
|
||||
else if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
sub_8109B34(taskId, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8109C44(void)
|
||||
{
|
||||
struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
|
||||
gScriptResult = trader->unk31;
|
||||
}
|
||||
|
||||
void sub_8109C58(void)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (sub_8134194(i))
|
||||
{
|
||||
gScriptResult = FALSE;
|
||||
return;
|
||||
}
|
||||
}
|
||||
gScriptResult = TRUE;
|
||||
}
|
||||
|
||||
void sub_8109C90(void)
|
||||
{
|
||||
gScriptResult = FALSE;
|
||||
if (gDecorations[gSpecialVar_0x8004].category != gDecorations[gSpecialVar_0x8006].category
|
||||
&& sub_8133F9C(gDecorations[gSpecialVar_0x8004].category) == -1)
|
||||
{
|
||||
sub_80FE7D4(gStringVar2, gDecorations[gSpecialVar_0x8004].category);
|
||||
gScriptResult = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8109CF0(void)
|
||||
{
|
||||
CreateTask(sub_80FE7A8, 0);
|
||||
}
|
||||
|
||||
void sub_8109D04(u8 taskId)
|
||||
{
|
||||
HandleDestroyMenuCursors();
|
||||
MenuZeroFillWindowRect(0, 0, 29, 19);
|
||||
DestroyVerticalScrollIndicator(0);
|
||||
DestroyVerticalScrollIndicator(1);
|
||||
sub_80F9520(gUnknown_020388F7, 8);
|
||||
BuyMenuFreeMemory();
|
||||
if (sub_80FEFA4() == TRUE)
|
||||
{
|
||||
gSpecialVar_0x8006 = gUnknown_020388D0[gUnknown_020388F5];
|
||||
StringCopy(gStringVar3, gDecorations[gSpecialVar_0x8004].name);
|
||||
StringCopy(gStringVar2, gDecorations[gSpecialVar_0x8006].name);
|
||||
}
|
||||
else
|
||||
{
|
||||
gSpecialVar_0x8006 = 0xFFFF;
|
||||
}
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
}
|
||||
|
||||
void sub_8109DAC(u8 taskId)
|
||||
{
|
||||
HandleDestroyMenuCursors();
|
||||
MenuZeroFillWindowRect(0, 0, 29, 19);
|
||||
gSpecialVar_0x8006 = 0;
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
}
|
||||
|
||||
void sub_8109DE0(void)
|
||||
{
|
||||
struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
|
||||
|
||||
sub_81340A8(gSpecialVar_0x8006);
|
||||
IsThereStorageSpaceForDecoration(gSpecialVar_0x8004);
|
||||
StringCopy(trader->unk5[gSpecialVar_0x8005], gSaveBlock2.playerName);
|
||||
trader->unk1[gSpecialVar_0x8005] = gSpecialVar_0x8006;
|
||||
sub_810993C();
|
||||
trader->unk31 = 1;
|
||||
}
|
||||
|
||||
void sub_8109E34(void)
|
||||
{
|
||||
u8 taskId = CreateTask(sub_8109B7C, 0);
|
||||
sub_8109A48(taskId);
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user