through HandleInput

This commit is contained in:
PikalaxALT 2020-03-15 10:26:42 -04:00
parent f45c229453
commit e445a42a5b
4 changed files with 461 additions and 916 deletions

View File

@ -5,901 +5,8 @@
.text
thumb_func_start InBoxInput_GrabbingMultiple
InBoxInput_GrabbingMultiple: @ 8094240
push {r4,lr}
ldr r1, _08094270 @ =gMain
ldrh r0, [r1, 0x2C]
movs r4, 0x1
ands r4, r0
cmp r4, 0
beq _080942F4
ldrh r1, [r1, 0x30]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _08094278
ldr r4, _08094274 @ =sBoxCursorPosition
movs r0, 0
ldrsb r0, [r4, r0]
movs r1, 0x6
bl __divsi3
lsls r0, 24
cmp r0, 0
beq _080942EC
ldrb r1, [r4]
subs r1, 0x6
b _080942DA
.align 2, 0
_08094270: .4byte gMain
_08094274: .4byte sBoxCursorPosition
_08094278:
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _08094298
ldr r1, _08094294 @ =sBoxCursorPosition
movs r0, 0
ldrsb r0, [r1, r0]
adds r0, 0x6
cmp r0, 0x1D
bgt _080942EC
ldrb r1, [r1]
adds r1, 0x6
b _080942DA
.align 2, 0
_08094294: .4byte sBoxCursorPosition
_08094298:
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _080942BC
ldr r4, _080942B8 @ =sBoxCursorPosition
movs r0, 0
ldrsb r0, [r4, r0]
movs r1, 0x6
bl __modsi3
lsls r0, 24
cmp r0, 0
beq _080942EC
ldrb r1, [r4]
subs r1, 0x1
b _080942DA
.align 2, 0
_080942B8: .4byte sBoxCursorPosition
_080942BC:
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080942F0
ldr r4, _080942E8 @ =sBoxCursorPosition
movs r0, 0
ldrsb r0, [r4, r0]
adds r0, 0x1
movs r1, 0x6
bl __modsi3
cmp r0, 0
beq _080942EC
ldrb r1, [r4]
adds r1, 0x1
_080942DA:
lsls r1, 24
lsrs r1, 24
movs r0, 0
bl sub_80927E8
movs r0, 0x15
b _08094364
.align 2, 0
_080942E8: .4byte sBoxCursorPosition
_080942EC:
movs r0, 0x18
b _08094364
_080942F0:
movs r0, 0
b _08094364
_080942F4:
bl sub_8095AA0
lsls r0, 24
lsrs r0, 24
ldr r1, _08094330 @ =sBoxCursorPosition
ldrb r1, [r1]
lsls r1, 24
asrs r1, 24
cmp r0, r1
beq _08094344
ldr r2, _08094334 @ =sIsMonBeingMoved
ldr r0, _08094338 @ =sPSSData
ldr r1, [r0]
movs r3, 0xCE
lsls r3, 4
adds r0, r1, r3
ldrh r0, [r0]
negs r0, r0
lsrs r0, 31
strb r0, [r2]
ldr r0, _0809433C @ =0x000021ef
adds r1, r0
movs r0, 0x2
strb r0, [r1]
bl StorageGetCurrentBox
ldr r1, _08094340 @ =sMovingMonOrigBoxId
strb r0, [r1]
movs r0, 0x17
b _08094364
.align 2, 0
_08094330: .4byte sBoxCursorPosition
_08094334: .4byte sIsMonBeingMoved
_08094338: .4byte sPSSData
_0809433C: .4byte 0x000021ef
_08094340: .4byte sMovingMonOrigBoxId
_08094344:
ldr r1, _0809436C @ =sPSSData
ldr r0, [r1]
ldr r2, _08094370 @ =0x000021ef
adds r0, r2
strb r4, [r0]
ldr r0, [r1]
ldr r3, _08094374 @ =0x00000cb4
adds r0, r3
ldr r1, [r0]
adds r1, 0x3E
ldrb r2, [r1]
movs r0, 0x5
negs r0, r0
ands r0, r2
strb r0, [r1]
movs r0, 0x16
_08094364:
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0809436C: .4byte sPSSData
_08094370: .4byte 0x000021ef
_08094374: .4byte 0x00000cb4
thumb_func_end InBoxInput_GrabbingMultiple
thumb_func_start InBoxInput_MovingMultiple
InBoxInput_MovingMultiple: @ 8094378
push {r4,lr}
ldr r2, _0809439C @ =gMain
ldrh r1, [r2, 0x30]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _080943A4
movs r0, 0
bl sub_8095474
lsls r0, 24
cmp r0, 0
beq _08094450
ldr r0, _080943A0 @ =sBoxCursorPosition
ldrb r1, [r0]
subs r1, 0x6
b _08094402
.align 2, 0
_0809439C: .4byte gMain
_080943A0: .4byte sBoxCursorPosition
_080943A4:
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _080943C4
movs r0, 0x1
bl sub_8095474
lsls r0, 24
cmp r0, 0
beq _08094450
ldr r0, _080943C0 @ =sBoxCursorPosition
ldrb r1, [r0]
adds r1, 0x6
b _08094402
.align 2, 0
_080943C0: .4byte sBoxCursorPosition
_080943C4:
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _080943E4
movs r0, 0x2
bl sub_8095474
lsls r0, 24
cmp r0, 0
beq _0809446A
ldr r0, _080943E0 @ =sBoxCursorPosition
ldrb r1, [r0]
subs r1, 0x1
b _08094402
.align 2, 0
_080943E0: .4byte sBoxCursorPosition
_080943E4:
movs r0, 0x10
ands r0, r1
lsls r0, 16
lsrs r4, r0, 16
cmp r4, 0
beq _08094414
movs r0, 0x3
bl sub_8095474
lsls r0, 24
cmp r0, 0
beq _0809447E
ldr r0, _08094410 @ =sBoxCursorPosition
ldrb r1, [r0]
adds r1, 0x1
_08094402:
lsls r1, 24
lsrs r1, 24
movs r0, 0
bl sub_80927E8
movs r0, 0x19
b _08094484
.align 2, 0
_08094410: .4byte sBoxCursorPosition
_08094414:
ldrh r1, [r2, 0x2E]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _08094448
bl sub_8095ABC
lsls r0, 24
cmp r0, 0
beq _08094450
ldr r0, _0809443C @ =sIsMonBeingMoved
strb r4, [r0]
ldr r0, _08094440 @ =sPSSData
ldr r0, [r0]
ldr r1, _08094444 @ =0x000021ef
adds r0, r1
strb r4, [r0]
movs r0, 0x1A
b _08094484
.align 2, 0
_0809443C: .4byte sIsMonBeingMoved
_08094440: .4byte sPSSData
_08094444: .4byte 0x000021ef
_08094448:
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _08094454
_08094450:
movs r0, 0x18
b _08094484
_08094454:
ldr r0, _08094470 @ =gSaveBlock2Ptr
ldr r0, [r0]
ldrb r0, [r0, 0x13]
cmp r0, 0x1
bne _08094482
ldrh r1, [r2, 0x2C]
movs r0, 0x80
lsls r0, 2
ands r0, r1
cmp r0, 0
beq _08094474
_0809446A:
movs r0, 0xA
b _08094484
.align 2, 0
_08094470: .4byte gSaveBlock2Ptr
_08094474:
movs r0, 0x80
lsls r0, 1
ands r0, r1
cmp r0, 0
beq _08094482
_0809447E:
movs r0, 0x9
b _08094484
_08094482:
movs r0, 0
_08094484:
pop {r4}
pop {r1}
bx r1
thumb_func_end InBoxInput_MovingMultiple
thumb_func_start sub_809448C
sub_809448C: @ 809448C
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r0, _080944FC @ =sBoxCursorArea
ldrb r0, [r0]
mov r9, r0
ldr r6, _08094500 @ =sBoxCursorPosition
ldrb r4, [r6]
ldr r2, _08094504 @ =sPSSData
ldr r0, [r2]
ldr r1, _08094508 @ =0x00000ccf
adds r0, r1
movs r1, 0
strb r1, [r0]
ldr r0, [r2]
ldr r3, _0809450C @ =0x00000cce
adds r0, r3
strb r1, [r0]
ldr r0, [r2]
adds r3, 0x5
adds r0, r3
strb r1, [r0]
mov r8, r1
movs r7, 0
ldr r1, _08094510 @ =gMain
ldrh r3, [r1, 0x30]
movs r0, 0x40
ands r0, r3
adds r5, r6, 0
mov r12, r1
cmp r0, 0
beq _080944D0
b _08094670
_080944D0:
movs r0, 0x80
ands r0, r3
cmp r0, 0
beq _08094514
lsls r0, r4, 24
movs r1, 0x80
lsls r1, 17
adds r0, r1
lsrs r4, r0, 24
asrs r0, 24
cmp r0, 0x6
ble _080944EA
movs r4, 0
_080944EA:
lsls r0, r4, 24
asrs r0, 24
movs r1, 0
ldrsb r1, [r5, r1]
cmp r0, r1
bne _080944F8
b _0809468E
_080944F8:
movs r7, 0x1
b _08094692
.align 2, 0
_080944FC: .4byte sBoxCursorArea
_08094500: .4byte sBoxCursorPosition
_08094504: .4byte sPSSData
_08094508: .4byte 0x00000ccf
_0809450C: .4byte 0x00000cce
_08094510: .4byte gMain
_08094514:
movs r0, 0x20
ands r0, r3
cmp r0, 0
beq _08094538
ldrb r1, [r5]
movs r0, 0
ldrsb r0, [r5, r0]
cmp r0, 0
beq _08094538
movs r7, 0x1
ldr r0, [r2]
ldr r2, _08094534 @ =0x00000cd2
adds r0, r2
strb r1, [r0]
movs r4, 0
b _0809468E
.align 2, 0
_08094534: .4byte 0x00000cd2
_08094538:
mov r3, r12
ldrh r1, [r3, 0x30]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08094566
movs r0, 0
ldrsb r0, [r5, r0]
cmp r0, 0
bne _0809455C
movs r7, 0x1
ldr r0, [r2]
ldr r1, _08094558 @ =0x00000cd2
adds r0, r1
ldrb r4, [r0]
b _0809468E
.align 2, 0
_08094558: .4byte 0x00000cd2
_0809455C:
movs r7, 0x6
movs r2, 0
mov r9, r2
movs r4, 0
b _0809468E
_08094566:
mov r3, r12
ldrh r1, [r3, 0x2E]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _08094624
movs r0, 0
ldrsb r0, [r5, r0]
cmp r0, 0x6
bne _0809458C
ldr r0, [r2]
ldrb r0, [r0, 0x1]
cmp r0, 0x1
bne _08094586
movs r0, 0x4
b _080946A0
_08094586:
movs r0, 0x1
mov r8, r0
b _08094624
_0809458C:
bl sub_8094924
lsls r0, 24
cmp r0, 0
beq _08094624
ldr r0, _080945A4 @ =sCanOnlyMove
ldrb r0, [r0]
cmp r0, 0
bne _080945A8
movs r0, 0x8
b _080946A0
.align 2, 0
_080945A4: .4byte sCanOnlyMove
_080945A8:
movs r0, 0
bl sub_8094E50
subs r0, 0x1
lsls r0, 24
asrs r0, 24
cmp r0, 0xE
bhi _08094624
lsls r0, 2
ldr r1, _080945C4 @ =_080945C8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080945C4: .4byte _080945C8
.align 2, 0
_080945C8:
.4byte _08094604
.4byte _08094608
.4byte _0809460C
.4byte _08094610
.4byte _08094614
.4byte _08094624
.4byte _08094624
.4byte _08094624
.4byte _08094624
.4byte _08094624
.4byte _08094624
.4byte _08094618
.4byte _0809461C
.4byte _08094624
.4byte _08094620
_08094604:
movs r0, 0xB
b _080946A0
_08094608:
movs r0, 0xC
b _080946A0
_0809460C:
movs r0, 0xD
b _080946A0
_08094610:
movs r0, 0xE
b _080946A0
_08094614:
movs r0, 0xF
b _080946A0
_08094618:
movs r0, 0x10
b _080946A0
_0809461C:
movs r0, 0x11
b _080946A0
_08094620:
movs r0, 0x12
b _080946A0
_08094624:
ldr r2, _08094640 @ =gMain
ldrh r1, [r2, 0x2E]
movs r0, 0x2
ands r0, r1
mov r12, r2
cmp r0, 0
beq _0809464C
ldr r0, _08094644 @ =sPSSData
ldr r0, [r0]
ldrb r0, [r0, 0x1]
cmp r0, 0x1
bne _08094648
movs r0, 0x13
b _080946A0
.align 2, 0
_08094640: .4byte gMain
_08094644: .4byte sPSSData
_08094648:
movs r1, 0x1
mov r8, r1
_0809464C:
mov r2, r8
cmp r2, 0
beq _0809465C
movs r7, 0x6
movs r3, 0
mov r9, r3
movs r4, 0
b _0809468E
_0809465C:
mov r0, r12
ldrh r1, [r0, 0x2E]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _0809468E
bl sub_8094C84
movs r0, 0
b _080946A0
_08094670:
lsls r0, r4, 24
movs r1, 0xFF
lsls r1, 24
adds r0, r1
lsrs r4, r0, 24
cmp r0, 0
bge _08094680
movs r4, 0x6
_08094680:
lsls r0, r4, 24
asrs r0, 24
movs r1, 0
ldrsb r1, [r6, r1]
cmp r0, r1
beq _0809468E
movs r7, 0x1
_0809468E:
cmp r7, 0
beq _0809469E
_08094692:
cmp r7, 0x6
beq _0809469E
mov r0, r9
adds r1, r4, 0
bl sub_80927E8
_0809469E:
adds r0, r7, 0
_080946A0:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_809448C
thumb_func_start sub_80946AC
sub_80946AC: @ 80946AC
push {r4-r6,lr}
ldr r3, _080946E8 @ =sPSSData
ldr r0, [r3]
ldr r1, _080946EC @ =0x00000ccf
adds r0, r1
movs r1, 0
strb r1, [r0]
ldr r0, [r3]
ldr r2, _080946F0 @ =0x00000cce
adds r0, r2
strb r1, [r0]
ldr r0, [r3]
ldr r5, _080946F4 @ =0x00000cd3
adds r0, r5
strb r1, [r0]
ldr r1, _080946F8 @ =gMain
ldrh r2, [r1, 0x30]
movs r0, 0x40
ands r0, r2
cmp r0, 0
bne _08094772
movs r0, 0x80
ands r0, r2
cmp r0, 0
beq _080946FC
movs r4, 0x1
movs r1, 0
movs r6, 0x2
b _0809477E
.align 2, 0
_080946E8: .4byte sPSSData
_080946EC: .4byte 0x00000ccf
_080946F0: .4byte 0x00000cce
_080946F4: .4byte 0x00000cd3
_080946F8: .4byte gMain
_080946FC:
ldrh r2, [r1, 0x2C]
movs r0, 0x20
ands r0, r2
cmp r0, 0
bne _08094722
movs r0, 0x10
ands r0, r2
cmp r0, 0
bne _08094736
ldr r0, _08094728 @ =gSaveBlock2Ptr
ldr r0, [r0]
ldrb r0, [r0, 0x13]
cmp r0, 0x1
bne _0809473A
movs r0, 0x80
lsls r0, 2
ands r0, r2
cmp r0, 0
beq _0809472C
_08094722:
movs r0, 0xA
b _0809479A
.align 2, 0
_08094728: .4byte gSaveBlock2Ptr
_0809472C:
movs r0, 0x80
lsls r0, 1
ands r0, r2
cmp r0, 0
beq _0809473A
_08094736:
movs r0, 0x9
b _0809479A
_0809473A:
ldrh r1, [r1, 0x2E]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _08094752
movs r0, 0
bl sub_80920FC
bl sub_8094900
movs r0, 0x7
b _0809479A
_08094752:
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _0809475E
movs r0, 0x13
b _0809479A
_0809475E:
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _0809476E
bl sub_8094C84
movs r0, 0
b _0809479A
_0809476E:
movs r4, 0
b _08094798
_08094772:
movs r4, 0x1
movs r1, 0x3
movs r6, 0
ldr r0, [r3]
adds r0, r5
strb r4, [r0]
_0809477E:
cmp r4, 0
beq _08094798
lsls r5, r1, 24
cmp r1, 0x2
beq _0809478E
movs r0, 0
bl sub_80920FC
_0809478E:
lsrs r0, r5, 24
lsls r1, r6, 24
lsrs r1, 24
bl sub_80927E8
_08094798:
adds r0, r4, 0
_0809479A:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_80946AC
thumb_func_start sub_80947A0
sub_80947A0: @ 80947A0
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r0, _080947F0 @ =sBoxCursorArea
ldrb r0, [r0]
mov r8, r0
ldr r0, _080947F4 @ =sBoxCursorPosition
mov r12, r0
ldrb r2, [r0]
ldr r3, _080947F8 @ =sPSSData
ldr r0, [r3]
ldr r1, _080947FC @ =0x00000ccf
adds r0, r1
movs r1, 0
strb r1, [r0]
ldr r0, [r3]
ldr r6, _08094800 @ =0x00000cce
adds r0, r6
strb r1, [r0]
ldr r0, [r3]
ldr r5, _08094804 @ =0x00000cd3
adds r0, r5
strb r1, [r0]
ldr r7, _08094808 @ =gMain
ldrh r1, [r7, 0x30]
movs r0, 0x40
ands r0, r1
adds r4, r3, 0
cmp r0, 0
bne _0809487A
movs r0, 0x88
ands r0, r1
cmp r0, 0
beq _0809480C
movs r7, 0x1
movs r0, 0x2
mov r8, r0
movs r2, 0
ldr r0, [r4]
b _08094898
.align 2, 0
_080947F0: .4byte sBoxCursorArea
_080947F4: .4byte sBoxCursorPosition
_080947F8: .4byte sPSSData
_080947FC: .4byte 0x00000ccf
_08094800: .4byte 0x00000cce
_08094804: .4byte 0x00000cd3
_08094808: .4byte gMain
_0809480C:
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _08094828
movs r7, 0x1
lsls r0, r2, 24
movs r1, 0xFF
lsls r1, 24
adds r0, r1
lsrs r2, r0, 24
cmp r0, 0
bge _0809489C
movs r2, 0x1
b _0809489C
_08094828:
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08094846
movs r7, 0x1
lsls r0, r2, 24
movs r1, 0x80
lsls r1, 17
adds r0, r1
lsrs r2, r0, 24
asrs r0, 24
cmp r0, 0x1
ble _0809489C
movs r2, 0
b _0809489C
_08094846:
ldrh r1, [r7, 0x2E]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0809485A
movs r0, 0x4
cmp r2, 0
bne _080948AA
movs r0, 0x5
b _080948AA
_0809485A:
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _08094866
movs r0, 0x13
b _080948AA
_08094866:
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _08094876
bl sub_8094C84
movs r0, 0
b _080948AA
_08094876:
movs r7, 0
b _080948A8
_0809487A:
movs r7, 0x1
movs r0, 0
mov r8, r0
ldr r0, [r3]
adds r0, r6
movs r1, 0xFF
strb r1, [r0]
mov r1, r12
movs r0, 0
ldrsb r0, [r1, r0]
movs r2, 0x1D
cmp r0, 0
bne _08094896
movs r2, 0x18
_08094896:
ldr r0, [r3]
_08094898:
adds r0, r5
strb r7, [r0]
_0809489C:
cmp r7, 0
beq _080948A8
mov r0, r8
adds r1, r2, 0
bl sub_80927E8
_080948A8:
adds r0, r7, 0
_080948AA:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80947A0
thumb_func_start HandleInput
HandleInput: @ 80948B4
push {r4,r5,lr}
movs r3, 0
ldr r0, _080948E0 @ =gUnknown_83D3478
ldr r1, [r0]
adds r4, r0, 0
cmp r1, 0
beq _080948F8
ldr r5, _080948E4 @ =sBoxCursorArea
_080948C4:
lsls r0, r3, 3
adds r2, r0, r4
movs r1, 0x4
ldrsb r1, [r2, r1]
movs r0, 0
ldrsb r0, [r5, r0]
cmp r1, r0
bne _080948E8
ldr r0, [r2]
bl _call_via_r0
lsls r0, 24
lsrs r0, 24
b _080948FA
.align 2, 0
_080948E0: .4byte gUnknown_83D3478
_080948E4: .4byte sBoxCursorArea
_080948E8:
adds r0, r3, 0x1
lsls r0, 16
lsrs r3, r0, 16
lsls r0, r3, 3
adds r0, r4
ldr r0, [r0]
cmp r0, 0
bne _080948C4
_080948F8:
movs r0, 0
_080948FA:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end HandleInput
thumb_func_start sub_8094900
sub_8094900: @ 8094900
thumb_func_start AddBoxMenu
AddBoxMenu: @ 8094900
push {lr}
bl InitMenu
movs r0, 0x9
@ -912,7 +19,7 @@ sub_8094900: @ 8094900
bl SetMenuText
pop {r0}
bx r0
thumb_func_end sub_8094900
thumb_func_end AddBoxMenu
thumb_func_start sub_8094924
sub_8094924: @ 8094924

View File

@ -6,23 +6,6 @@
.section .rodata
.align 2
gUnknown_83D3478:: @ 83D3478
.4byte HandleInput_InBox
.byte 0
.align 2
.4byte sub_809448C
.byte 1
.align 2
.4byte sub_80946AC
.byte 2
.align 2
.4byte sub_80947A0
.byte 3
.align 2
.4byte NULL
.byte 0
.align 2
gUnknown_83D34A0:: @ 83D34A0
obj_tiles gUnknown_83D2BEC, 0x0800, 0
obj_tiles gUnknown_83D33EC, 0x0080, 1

View File

@ -457,4 +457,10 @@ void sub_80910CC(void);
u8 CountPartyMons(void);
u8 CountPartyAliveNonEggMonsExcept(u8 slotToIgnore);
s8 sub_8094E50(u8 a0);
bool8 sub_8095474(u8 action);
u8 sub_8095AA0(void);
bool8 sub_8095ABC(void);
void sub_8095D44(u8 cursorArea, u8 cursorPos);
#endif //GUARD_POKEMON_STORAGE_SYSTEM_INTERNAL_H

View File

@ -37,10 +37,9 @@ void sub_8093AAC(void);
u8 InBoxInput_Normal(void);
u8 InBoxInput_GrabbingMultiple(void);
u8 InBoxInput_MovingMultiple(void);
void sub_8094AD8(void);
void sub_8095D44(u8 cursorArea, u8 cursorPos);
void AddBoxMenu(void);
bool8 sub_8094924(void);
s8 sub_8094E50(u8 a0);
void sub_8094AD8(void);
void sub_8094C84(void);
const u16 gUnknown_83D2BCC[] = INCBIN_U16("graphics/interface/pss_unk_83D2BCC.gbapal");
@ -1290,3 +1289,453 @@ u8 InBoxInput_Normal(void)
return retVal;
}
u8 InBoxInput_GrabbingMultiple(void)
{
if (JOY_HELD(A_BUTTON))
{
if (JOY_REPT(DPAD_UP))
{
if (sBoxCursorPosition / IN_BOX_ROWS != 0)
{
sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition - IN_BOX_ROWS);
return 21;
}
else
{
return 24;
}
}
else if (JOY_REPT(DPAD_DOWN))
{
if (sBoxCursorPosition + IN_BOX_ROWS < IN_BOX_COUNT)
{
sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition + IN_BOX_ROWS);
return 21;
}
else
{
return 24;
}
}
else if (JOY_REPT(DPAD_LEFT))
{
if (sBoxCursorPosition % IN_BOX_ROWS != 0)
{
sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition - 1);
return 21;
}
else
{
return 24;
}
}
else if (JOY_REPT(DPAD_RIGHT))
{
if ((sBoxCursorPosition + 1) % IN_BOX_ROWS != 0)
{
sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition + 1);
return 21;
}
else
{
return 24;
}
}
else
{
return 0;
}
}
else
{
if (sub_8095AA0() == sBoxCursorPosition)
{
sPSSData->inBoxMovingMode = 0;
sPSSData->field_CB8->invisible = FALSE;
return 22;
}
else
{
sIsMonBeingMoved = (sPSSData->cursorMonSpecies != SPECIES_NONE);
sPSSData->inBoxMovingMode = 2;
sMovingMonOrigBoxId = StorageGetCurrentBox();
return 23;
}
}
}
u8 InBoxInput_MovingMultiple(void)
{
if (JOY_REPT(DPAD_UP))
{
if (sub_8095474(0))
{
sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition - IN_BOX_ROWS);
return 25;
}
else
{
return 24;
}
}
else if (JOY_REPT(DPAD_DOWN))
{
if (sub_8095474(1))
{
sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition + IN_BOX_ROWS);
return 25;
}
else
{
return 24;
}
}
else if (JOY_REPT(DPAD_LEFT))
{
if (sub_8095474(2))
{
sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition - 1);
return 25;
}
else
{
return 10;
}
}
else if (JOY_REPT(DPAD_RIGHT))
{
if (sub_8095474(3))
{
sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition + 1);
return 25;
}
else
{
return 9;
}
}
else if (JOY_NEW(A_BUTTON))
{
if (sub_8095ABC())
{
sIsMonBeingMoved = FALSE;
sPSSData->inBoxMovingMode = 0;
return 26;
}
else
{
return 24;
}
}
else if (JOY_NEW(B_BUTTON))
{
return 24;
}
else
{
if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
{
if (JOY_HELD(L_BUTTON))
return 10;
if (JOY_HELD(R_BUTTON))
return 9;
}
return 0;
}
}
u8 HandleInput_InParty(void)
{
u8 retVal;
bool8 gotoBox;
s8 cursorArea;
s8 cursorPosition;
do
{
cursorArea = sBoxCursorArea;
cursorPosition = sBoxCursorPosition;
sPSSData->field_CD3 = 0;
sPSSData->field_CD2 = 0;
sPSSData->field_CD7 = 0;
gotoBox = FALSE;
retVal = 0;
if (JOY_REPT(DPAD_UP))
{
if (--cursorPosition < 0)
cursorPosition = PARTY_SIZE;
if (cursorPosition != sBoxCursorPosition)
retVal = 1;
break;
}
else if (JOY_REPT(DPAD_DOWN))
{
if (++cursorPosition > PARTY_SIZE)
cursorPosition = 0;
if (cursorPosition != sBoxCursorPosition)
retVal = 1;
break;
}
else if (JOY_REPT(DPAD_LEFT) && sBoxCursorPosition != 0)
{
retVal = 1;
sPSSData->field_CD6 = sBoxCursorPosition;
cursorPosition = 0;
break;
}
else if (JOY_REPT(DPAD_RIGHT))
{
if (sBoxCursorPosition == 0)
{
retVal = 1;
cursorPosition = sPSSData->field_CD6;
}
else
{
retVal = 6;
cursorArea = CURSOR_AREA_IN_BOX;
cursorPosition = 0;
}
break;
}
if (JOY_NEW(A_BUTTON))
{
if (sBoxCursorPosition == PARTY_SIZE)
{
if (sPSSData->boxOption == BOX_OPTION_DEPOSIT)
return 4;
gotoBox = TRUE;
}
else if (sub_8094924())
{
if (!sCanOnlyMove)
return 8;
switch (sub_8094E50(0))
{
case 1:
return 11;
case 2:
return 12;
case 3:
return 13;
case 4:
return 14;
case 5:
return 15;
case 12:
return 16;
case 13:
return 17;
case 15:
return 18;
}
}
}
if (JOY_NEW(B_BUTTON))
{
if (sPSSData->boxOption == BOX_OPTION_DEPOSIT)
return 19;
gotoBox = TRUE;
}
if (gotoBox)
{
retVal = 6;
cursorArea = CURSOR_AREA_IN_BOX;
cursorPosition = 0;
}
else if (JOY_NEW(SELECT_BUTTON))
{
sub_8094C84();
return 0;
}
} while (0);
if (retVal != 0)
{
if (retVal != 6)
sub_80927E8(cursorArea, cursorPosition);
}
return retVal;
}
u8 HandleInput_OnBox(void)
{
u8 retVal;
s8 cursorArea;
s8 cursorPosition;
do
{
sPSSData->field_CD3 = 0;
sPSSData->field_CD2 = 0;
sPSSData->field_CD7 = 0;
if (JOY_REPT(DPAD_UP))
{
retVal = 1;
cursorArea = CURSOR_AREA_BUTTONS;
cursorPosition = 0;
sPSSData->field_CD7 = 1;
break;
}
else if (JOY_REPT(DPAD_DOWN))
{
retVal = 1;
cursorArea = CURSOR_AREA_IN_BOX;
cursorPosition = 2;
break;
}
if (JOY_HELD(DPAD_LEFT))
return 10;
if (JOY_HELD(DPAD_RIGHT))
return 9;
if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
{
if (JOY_HELD(L_BUTTON))
return 10;
if (JOY_HELD(R_BUTTON))
return 9;
}
if (JOY_NEW(A_BUTTON))
{
sub_80920FC(FALSE);
AddBoxMenu();
return 7;
}
if (JOY_NEW(B_BUTTON))
return 19;
if (JOY_NEW(SELECT_BUTTON))
{
sub_8094C84();
return 0;
}
retVal = 0;
} while (0);
if (retVal)
{
if (cursorArea != CURSOR_AREA_BOX)
sub_80920FC(FALSE);
sub_80927E8(cursorArea, cursorPosition);
}
return retVal;
}
u8 HandleInput_OnButtons(void)
{
u8 retVal;
s8 cursorArea;
s8 cursorPosition;
s8 prevPos;
do
{
cursorArea = sBoxCursorArea;
cursorPosition = sBoxCursorPosition;
sPSSData->field_CD3 = 0;
sPSSData->field_CD2 = 0;
sPSSData->field_CD7 = 0;
if (JOY_REPT(DPAD_UP))
{
retVal = 1;
cursorArea = CURSOR_AREA_IN_BOX;
sPSSData->field_CD2 = -1;
if (sBoxCursorPosition == 0)
cursorPosition = IN_BOX_COUNT - 1 - 5;
else
cursorPosition = IN_BOX_COUNT - 1;
sPSSData->field_CD7 = 1;
break;
}
else if (JOY_REPT(DPAD_DOWN | START_BUTTON))
{
retVal = 1;
cursorArea = CURSOR_AREA_BOX;
cursorPosition = 0;
sPSSData->field_CD7 = 1;
break;
}
if (JOY_REPT(DPAD_LEFT))
{
retVal = 1;
if (--cursorPosition < 0)
cursorPosition = 1;
break;
}
else if (JOY_REPT(DPAD_RIGHT))
{
retVal = 1;
if (++cursorPosition > 1)
cursorPosition = 0;
break;
}
if (JOY_NEW(A_BUTTON))
{
return cursorPosition == 0 ? 5 : 4;
}
if (JOY_NEW(B_BUTTON))
return 19;
if (JOY_NEW(SELECT_BUTTON))
{
sub_8094C84();
return 0;
}
retVal = 0;
} while (0);
if (retVal != 0)
sub_80927E8(cursorArea, cursorPosition);
return retVal;
}
u8 HandleInput(void)
{
struct
{
u8 (*func)(void);
s8 area;
}
static const inputFuncs[] =
{
{HandleInput_InBox, CURSOR_AREA_IN_BOX},
{HandleInput_InParty, CURSOR_AREA_IN_PARTY},
{HandleInput_OnBox, CURSOR_AREA_BOX},
{HandleInput_OnButtons, CURSOR_AREA_BUTTONS},
{NULL, 0},
};
u16 i = 0;
while (inputFuncs[i].func != NULL)
{
if (inputFuncs[i].area == sBoxCursorArea)
return inputFuncs[i].func();
i++;
}
return 0;
}