mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-24 15:07:09 -05:00
decomp more menu_input
This commit is contained in:
parent
d18b00758b
commit
27fade4e9c
628
asm/menu_input.s
628
asm/menu_input.s
|
|
@ -582,632 +582,4 @@ _08013658: .4byte 0x000001ff
|
|||
_0801365C: .4byte 0x000003f3
|
||||
thumb_func_end sub_8013470
|
||||
|
||||
thumb_func_start sub_8013660
|
||||
sub_8013660:
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
movs r1, 0x1A
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, 0
|
||||
ble _0801367A
|
||||
adds r0, r4, 0
|
||||
bl UpdateMenuCursorSpriteCoords
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x8
|
||||
bl sub_801332C
|
||||
_0801367A:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8013660
|
||||
|
||||
thumb_func_start UpdateMenuCursorSpriteCoords
|
||||
UpdateMenuCursorSpriteCoords:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
ldr r0, [r5]
|
||||
lsls r4, r0, 3
|
||||
adds r4, r0
|
||||
lsls r4, 3
|
||||
ldr r0, _080136B8
|
||||
adds r4, r0
|
||||
movs r1, 0
|
||||
ldrsh r0, [r4, r1]
|
||||
lsls r0, 3
|
||||
ldrh r2, [r5, 0x4]
|
||||
adds r0, r2
|
||||
strh r0, [r5, 0x8]
|
||||
movs r0, 0x18
|
||||
ldrsh r1, [r5, r0]
|
||||
adds r0, r5, 0
|
||||
bl sub_8013800
|
||||
movs r2, 0x2
|
||||
ldrsh r1, [r4, r2]
|
||||
lsls r1, 3
|
||||
adds r1, r0
|
||||
strh r1, [r5, 0xA]
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080136B8: .4byte gUnknown_2027370
|
||||
thumb_func_end UpdateMenuCursorSpriteCoords
|
||||
|
||||
thumb_func_start MoveMenuCursorDown
|
||||
MoveMenuCursorDown:
|
||||
push {lr}
|
||||
adds r1, r0, 0
|
||||
movs r3, 0
|
||||
strh r3, [r1, 0x24]
|
||||
movs r0, 0x1A
|
||||
ldrsh r2, [r1, r0]
|
||||
cmp r2, 0
|
||||
ble _080136DA
|
||||
ldrh r0, [r1, 0x18]
|
||||
adds r0, 0x1
|
||||
strh r0, [r1, 0x18]
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, r2
|
||||
blt _080136DC
|
||||
_080136DA:
|
||||
strh r3, [r1, 0x18]
|
||||
_080136DC:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end MoveMenuCursorDown
|
||||
|
||||
thumb_func_start sub_80136E0
|
||||
sub_80136E0:
|
||||
push {r4,r5,lr}
|
||||
adds r2, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r5, r1, 24
|
||||
movs r1, 0
|
||||
strh r1, [r2, 0x24]
|
||||
ldrh r4, [r2, 0x1A]
|
||||
movs r0, 0x1A
|
||||
ldrsh r3, [r2, r0]
|
||||
cmp r3, 0
|
||||
ble _08013708
|
||||
ldrh r0, [r2, 0x18]
|
||||
adds r0, 0x1
|
||||
strh r0, [r2, 0x18]
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, r3
|
||||
blt _08013710
|
||||
cmp r5, 0
|
||||
beq _0801370C
|
||||
_08013708:
|
||||
strh r1, [r2, 0x18]
|
||||
b _08013710
|
||||
_0801370C:
|
||||
subs r0, r4, 0x1
|
||||
strh r0, [r2, 0x18]
|
||||
_08013710:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80136E0
|
||||
|
||||
thumb_func_start MoveMenuCursorUp
|
||||
MoveMenuCursorUp:
|
||||
push {r4,lr}
|
||||
adds r1, r0, 0
|
||||
movs r2, 0
|
||||
strh r2, [r1, 0x24]
|
||||
ldrh r3, [r1, 0x1A]
|
||||
movs r4, 0x1A
|
||||
ldrsh r0, [r1, r4]
|
||||
cmp r0, 0
|
||||
bgt _0801372E
|
||||
strh r2, [r1, 0x18]
|
||||
b _0801373E
|
||||
_0801372E:
|
||||
ldrh r0, [r1, 0x18]
|
||||
subs r0, 0x1
|
||||
strh r0, [r1, 0x18]
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
bge _0801373E
|
||||
subs r0, r3, 0x1
|
||||
strh r0, [r1, 0x18]
|
||||
_0801373E:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end MoveMenuCursorUp
|
||||
|
||||
thumb_func_start sub_8013744
|
||||
sub_8013744:
|
||||
push {r4-r6,lr}
|
||||
adds r2, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
adds r5, r1, 0
|
||||
movs r3, 0
|
||||
strh r3, [r2, 0x24]
|
||||
ldrh r4, [r2, 0x1A]
|
||||
movs r6, 0x1A
|
||||
ldrsh r0, [r2, r6]
|
||||
cmp r0, 0
|
||||
bgt _08013760
|
||||
strh r3, [r2, 0x18]
|
||||
b _08013778
|
||||
_08013760:
|
||||
ldrh r0, [r2, 0x18]
|
||||
subs r0, 0x1
|
||||
strh r0, [r2, 0x18]
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
bge _08013778
|
||||
cmp r1, 0
|
||||
beq _08013776
|
||||
subs r0, r4, 0x1
|
||||
strh r0, [r2, 0x18]
|
||||
b _08013778
|
||||
_08013776:
|
||||
strh r5, [r2, 0x18]
|
||||
_08013778:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8013744
|
||||
|
||||
thumb_func_start sub_8013780
|
||||
sub_8013780:
|
||||
push {lr}
|
||||
adds r2, r0, 0
|
||||
cmp r1, 0
|
||||
bge _0801378E
|
||||
movs r0, 0
|
||||
strh r0, [r2, 0x18]
|
||||
b _080137A0
|
||||
_0801378E:
|
||||
movs r3, 0x1A
|
||||
ldrsh r0, [r2, r3]
|
||||
cmp r1, r0
|
||||
blt _0801379E
|
||||
ldrh r0, [r2, 0x1A]
|
||||
subs r0, 0x1
|
||||
strh r0, [r2, 0x18]
|
||||
b _080137A0
|
||||
_0801379E:
|
||||
strh r1, [r2, 0x18]
|
||||
_080137A0:
|
||||
movs r0, 0
|
||||
strh r0, [r2, 0x24]
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8013780
|
||||
|
||||
thumb_func_start sub_80137A8
|
||||
sub_80137A8:
|
||||
movs r1, 0x18
|
||||
ldrsh r0, [r0, r1]
|
||||
bx lr
|
||||
thumb_func_end sub_80137A8
|
||||
|
||||
thumb_func_start sub_80137B0
|
||||
sub_80137B0:
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
cmp r1, 0
|
||||
ble _080137BC
|
||||
lsls r0, r1, 8
|
||||
b _080137E2
|
||||
_080137BC:
|
||||
ldr r3, _080137F4
|
||||
ldr r1, [r4]
|
||||
lsls r0, r1, 3
|
||||
adds r0, r1
|
||||
lsls r1, r0, 3
|
||||
adds r0, r3, 0
|
||||
adds r0, 0xC
|
||||
adds r0, r1, r0
|
||||
ldr r0, [r0]
|
||||
movs r2, 0
|
||||
cmp r0, 0x6
|
||||
bne _080137D6
|
||||
movs r2, 0x10
|
||||
_080137D6:
|
||||
adds r0, r1, r3
|
||||
movs r1, 0x6
|
||||
ldrsh r0, [r0, r1]
|
||||
lsls r0, 3
|
||||
subs r0, r2
|
||||
lsls r0, 8
|
||||
_080137E2:
|
||||
movs r2, 0x1C
|
||||
ldrsh r1, [r4, r2]
|
||||
bl __divsi3
|
||||
str r0, [r4, 0x10]
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080137F4: .4byte gUnknown_2027370
|
||||
thumb_func_end sub_80137B0
|
||||
|
||||
thumb_func_start sub_80137F8
|
||||
sub_80137F8:
|
||||
lsls r1, 8
|
||||
str r1, [r0, 0x10]
|
||||
bx lr
|
||||
thumb_func_end sub_80137F8
|
||||
|
||||
thumb_func_start sub_8013800
|
||||
sub_8013800:
|
||||
push {lr}
|
||||
movs r3, 0x6
|
||||
ldrsh r2, [r0, r3]
|
||||
ldr r0, [r0, 0x10]
|
||||
muls r0, r1
|
||||
cmp r0, 0
|
||||
bge _08013810
|
||||
adds r0, 0xFF
|
||||
_08013810:
|
||||
asrs r0, 8
|
||||
adds r0, r2, r0
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8013800
|
||||
|
||||
thumb_func_start sub_8013818
|
||||
sub_8013818:
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
str r3, [r4]
|
||||
movs r0, 0
|
||||
strh r1, [r4, 0x22]
|
||||
strh r2, [r4, 0x1C]
|
||||
strh r0, [r4, 0x14]
|
||||
strh r0, [r4, 0x24]
|
||||
strh r0, [r4, 0x18]
|
||||
strh r0, [r4, 0x1E]
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x28
|
||||
bl sub_801317C
|
||||
adds r0, r4, 0
|
||||
bl sub_8013984
|
||||
adds r0, r4, 0
|
||||
movs r1, 0xC
|
||||
bl sub_80137F8
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8013818
|
||||
|
||||
thumb_func_start sub_8013848
|
||||
sub_8013848:
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
str r3, [r4]
|
||||
movs r0, 0
|
||||
strh r1, [r4, 0x22]
|
||||
strh r2, [r4, 0x1C]
|
||||
strh r0, [r4, 0x14]
|
||||
strh r0, [r4, 0x24]
|
||||
strh r0, [r4, 0x18]
|
||||
strh r0, [r4, 0x1E]
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x28
|
||||
bl sub_801317C
|
||||
adds r0, r4, 0
|
||||
bl sub_8013984
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x18
|
||||
bl sub_80137F8
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8013848
|
||||
|
||||
thumb_func_start sub_8013878
|
||||
sub_8013878:
|
||||
push {r4-r6,lr}
|
||||
adds r5, r0, 0
|
||||
adds r6, r1, 0
|
||||
cmp r6, 0
|
||||
bge _08013886
|
||||
movs r6, 0
|
||||
b _08013890
|
||||
_08013886:
|
||||
movs r1, 0x22
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r6, r0
|
||||
blt _08013890
|
||||
subs r6, r0, 0x1
|
||||
_08013890:
|
||||
movs r0, 0x1C
|
||||
ldrsh r1, [r5, r0]
|
||||
adds r0, r6, 0
|
||||
bl __divsi3
|
||||
movs r4, 0
|
||||
strh r0, [r5, 0x1E]
|
||||
movs r0, 0x1C
|
||||
ldrsh r1, [r5, r0]
|
||||
adds r0, r6, 0
|
||||
bl __modsi3
|
||||
strh r0, [r5, 0x18]
|
||||
strh r4, [r5, 0x24]
|
||||
adds r0, r5, 0
|
||||
bl sub_8013984
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8013878
|
||||
|
||||
thumb_func_start sub_80138B8
|
||||
sub_80138B8:
|
||||
push {r4-r7,lr}
|
||||
adds r5, r0, 0
|
||||
lsls r4, r1, 24
|
||||
lsrs r4, 24
|
||||
movs r0, 0x1E
|
||||
ldrsh r7, [r5, r0]
|
||||
movs r1, 0x18
|
||||
ldrsh r6, [r5, r1]
|
||||
adds r0, r5, 0
|
||||
bl AddMenuCursorSprite
|
||||
cmp r4, 0
|
||||
beq _0801391C
|
||||
adds r0, r5, 0
|
||||
bl GetKeyPress
|
||||
cmp r0, 0x8
|
||||
beq _080138F8
|
||||
cmp r0, 0x8
|
||||
bgt _080138E6
|
||||
cmp r0, 0x7
|
||||
beq _080138F0
|
||||
b _0801391C
|
||||
_080138E6:
|
||||
cmp r0, 0x9
|
||||
beq _0801390E
|
||||
cmp r0, 0xA
|
||||
beq _08013916
|
||||
b _0801391C
|
||||
_080138F0:
|
||||
adds r0, r5, 0
|
||||
bl MoveMenuCursorUp
|
||||
b _080138FE
|
||||
_080138F8:
|
||||
adds r0, r5, 0
|
||||
bl MoveMenuCursorDown
|
||||
_080138FE:
|
||||
movs r1, 0x18
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r6, r0
|
||||
beq _0801391C
|
||||
movs r0, 0x3
|
||||
bl PlayMenuSoundEffect
|
||||
b _0801391C
|
||||
_0801390E:
|
||||
adds r0, r5, 0
|
||||
bl sub_8013A7C
|
||||
b _0801391C
|
||||
_08013916:
|
||||
adds r0, r5, 0
|
||||
bl sub_8013A54
|
||||
_0801391C:
|
||||
movs r1, 0x1E
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r7, r0
|
||||
bne _08013928
|
||||
movs r0, 0
|
||||
b _08013930
|
||||
_08013928:
|
||||
movs r0, 0x4
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x1
|
||||
_08013930:
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80138B8
|
||||
|
||||
thumb_func_start sub_8013938
|
||||
sub_8013938:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
movs r0, 0x1E
|
||||
ldrsh r5, [r4, r0]
|
||||
movs r0, 0
|
||||
strh r0, [r4, 0x1A]
|
||||
strh r0, [r4, 0x14]
|
||||
adds r0, r4, 0
|
||||
bl AddMenuCursorSprite
|
||||
adds r0, r4, 0
|
||||
bl GetKeyPress
|
||||
cmp r0, 0x9
|
||||
beq _0801395C
|
||||
cmp r0, 0xA
|
||||
beq _08013964
|
||||
b _0801396A
|
||||
_0801395C:
|
||||
adds r0, r4, 0
|
||||
bl sub_8013A7C
|
||||
b _0801396A
|
||||
_08013964:
|
||||
adds r0, r4, 0
|
||||
bl sub_8013A54
|
||||
_0801396A:
|
||||
movs r1, 0x1E
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r5, r0
|
||||
bne _08013976
|
||||
movs r0, 0
|
||||
b _0801397E
|
||||
_08013976:
|
||||
movs r0, 0x4
|
||||
bl PlayMenuSoundEffect
|
||||
movs r0, 0x1
|
||||
_0801397E:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8013938
|
||||
|
||||
thumb_func_start sub_8013984
|
||||
sub_8013984:
|
||||
push {r4-r6,lr}
|
||||
adds r4, r0, 0
|
||||
ldr r1, [r4]
|
||||
lsls r0, r1, 3
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
ldr r1, _08013A20
|
||||
adds r6, r0, r1
|
||||
ldrh r1, [r4, 0x1C]
|
||||
movs r2, 0x1C
|
||||
ldrsh r0, [r4, r2]
|
||||
cmp r0, 0
|
||||
bne _080139A2
|
||||
adds r0, r1, 0x1
|
||||
strh r0, [r4, 0x1C]
|
||||
_080139A2:
|
||||
movs r1, 0x22
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, 0x1C
|
||||
ldrsh r1, [r4, r2]
|
||||
bl __divsi3
|
||||
adds r5, r0, 0
|
||||
strh r5, [r4, 0x20]
|
||||
movs r1, 0x22
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, 0x1C
|
||||
ldrsh r1, [r4, r2]
|
||||
bl __modsi3
|
||||
cmp r0, 0
|
||||
beq _080139C6
|
||||
adds r0, r5, 0x1
|
||||
strh r0, [r4, 0x20]
|
||||
_080139C6:
|
||||
movs r0, 0x1E
|
||||
ldrsh r1, [r4, r0]
|
||||
movs r2, 0x20
|
||||
ldrsh r0, [r4, r2]
|
||||
subs r0, 0x1
|
||||
ldrh r5, [r4, 0x20]
|
||||
cmp r1, r0
|
||||
ble _080139DA
|
||||
subs r0, r5, 0x1
|
||||
strh r0, [r4, 0x1E]
|
||||
_080139DA:
|
||||
movs r0, 0x1E
|
||||
ldrsh r1, [r4, r0]
|
||||
movs r2, 0x20
|
||||
ldrsh r0, [r4, r2]
|
||||
subs r0, 0x1
|
||||
cmp r1, r0
|
||||
bne _080139F8
|
||||
movs r1, 0x22
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, 0x1C
|
||||
ldrsh r1, [r4, r2]
|
||||
bl __modsi3
|
||||
cmp r0, 0
|
||||
bne _080139FA
|
||||
_080139F8:
|
||||
ldrh r0, [r4, 0x1C]
|
||||
_080139FA:
|
||||
strh r0, [r4, 0x1A]
|
||||
movs r0, 0x18
|
||||
ldrsh r1, [r4, r0]
|
||||
movs r2, 0x1A
|
||||
ldrsh r0, [r4, r2]
|
||||
subs r0, 0x1
|
||||
cmp r1, r0
|
||||
ble _08013A10
|
||||
ldrh r0, [r4, 0x1A]
|
||||
subs r0, 0x1
|
||||
strh r0, [r4, 0x18]
|
||||
_08013A10:
|
||||
movs r1, 0
|
||||
strh r1, [r4, 0x4]
|
||||
ldr r0, [r6, 0xC]
|
||||
cmp r0, 0x6
|
||||
bne _08013A24
|
||||
movs r0, 0x10
|
||||
strh r0, [r4, 0x6]
|
||||
b _08013A26
|
||||
.align 2, 0
|
||||
_08013A20: .4byte gUnknown_2027370
|
||||
_08013A24:
|
||||
strh r1, [r4, 0x6]
|
||||
_08013A26:
|
||||
lsls r0, r5, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0x1
|
||||
bgt _08013A32
|
||||
movs r0, 0
|
||||
b _08013A40
|
||||
_08013A32:
|
||||
movs r1, 0
|
||||
ldrsh r0, [r6, r1]
|
||||
movs r2, 0x4
|
||||
ldrsh r1, [r6, r2]
|
||||
adds r0, r1
|
||||
subs r0, 0x2
|
||||
lsls r0, 3
|
||||
_08013A40:
|
||||
strh r0, [r4, 0xC]
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r6, r1]
|
||||
adds r0, 0x1
|
||||
lsls r0, 3
|
||||
subs r0, 0x2
|
||||
strh r0, [r4, 0xE]
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8013984
|
||||
|
||||
thumb_func_start sub_8013A54
|
||||
sub_8013A54:
|
||||
push {lr}
|
||||
adds r2, r0, 0
|
||||
movs r0, 0x1E
|
||||
ldrsh r1, [r2, r0]
|
||||
movs r3, 0x20
|
||||
ldrsh r0, [r2, r3]
|
||||
subs r0, 0x1
|
||||
cmp r1, r0
|
||||
bge _08013A6C
|
||||
ldrh r0, [r2, 0x1E]
|
||||
adds r0, 0x1
|
||||
b _08013A6E
|
||||
_08013A6C:
|
||||
movs r0, 0
|
||||
_08013A6E:
|
||||
strh r0, [r2, 0x1E]
|
||||
adds r0, r2, 0
|
||||
bl sub_8013984
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8013A54
|
||||
|
||||
thumb_func_start sub_8013A7C
|
||||
sub_8013A7C:
|
||||
push {lr}
|
||||
adds r1, r0, 0
|
||||
ldrh r2, [r1, 0x1E]
|
||||
movs r3, 0x1E
|
||||
ldrsh r0, [r1, r3]
|
||||
cmp r0, 0
|
||||
bgt _08013A90
|
||||
ldrh r0, [r1, 0x20]
|
||||
subs r0, 0x1
|
||||
b _08013A92
|
||||
_08013A90:
|
||||
subs r0, r2, 0x1
|
||||
_08013A92:
|
||||
strh r0, [r1, 0x1E]
|
||||
adds r0, r1, 0
|
||||
bl sub_8013984
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8013A7C
|
||||
|
||||
.align 2,0
|
||||
|
|
|
|||
|
|
@ -64,13 +64,13 @@ struct MenuInputStruct
|
|||
{
|
||||
s32 unk0;
|
||||
/* 0x4 */ u16 unk4;
|
||||
/* 0x6 */ u16 unk6;
|
||||
/* 0x6 */ s16 unk6;
|
||||
/* 0x8 */ u16 unk8;
|
||||
/* 0x8 */ u16 unkA;
|
||||
/* 0xC */ u16 unkC;
|
||||
/* 0xE */ u16 unkE;
|
||||
/* 0x10 */ u32 unk10;
|
||||
/* 0x14 */ u16 unk14;
|
||||
/* 0x14 */ s16 unk14;
|
||||
/* 0x16 */ u16 unk16;
|
||||
/* 0x18 */ s16 menuIndex;
|
||||
/* 0x1A */ s16 unk1A;
|
||||
|
|
|
|||
|
|
@ -2,9 +2,10 @@
|
|||
#define GUARD_TEXT_H
|
||||
|
||||
struct UnkTextStruct1 {
|
||||
u8 fill00[4];
|
||||
u16 unk04;
|
||||
u8 fill06[2];
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
s16 unk04;
|
||||
s16 unk6;
|
||||
u16 unk08;
|
||||
u16 fillA;
|
||||
u32 unkC;
|
||||
|
|
|
|||
|
|
@ -95,6 +95,7 @@ SECTIONS {
|
|||
src/more_input.o(.text);
|
||||
src/menu_input.o(.text);
|
||||
asm/menu_input.o(.text);
|
||||
src/menu_input_1.o(.text);
|
||||
asm/code_80130A8.o(.text);
|
||||
src/code_8012A18_1.o(.text);
|
||||
src/felicity_bank.o(.text);
|
||||
|
|
|
|||
350
src/menu_input_1.c
Normal file
350
src/menu_input_1.c
Normal file
|
|
@ -0,0 +1,350 @@
|
|||
#include "global.h"
|
||||
#include "constants/input.h"
|
||||
#include "input.h"
|
||||
#include "text.h"
|
||||
|
||||
extern struct UnkTextStruct1 gUnknown_2027370[4];
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
extern void AddMenuCursorSprite(struct MenuInputStruct *);
|
||||
extern void sub_8013A7C(struct MenuInputStruct *);
|
||||
extern void sub_8013A54(struct MenuInputStruct *);
|
||||
extern s32 GetKeyPress(struct MenuInputStruct *);
|
||||
extern void MoveMenuCursorUp(struct MenuInputStruct *);
|
||||
extern void MoveMenuCursorDown(struct MenuInputStruct *);
|
||||
void sub_8013984(struct MenuInputStruct *);
|
||||
void sub_801317C(struct MenuInputStructSub *);
|
||||
void sub_80137F8(struct MenuInputStruct *, u32);
|
||||
s32 sub_8013800(struct MenuInputStruct *param_1, s32 param_2);
|
||||
void UpdateMenuCursorSpriteCoords(struct MenuInputStruct *param_1);
|
||||
void sub_801332C(u16 *);
|
||||
|
||||
void sub_8013660(struct MenuInputStruct *param_1)
|
||||
{
|
||||
if (0 < param_1->unk1A)
|
||||
{
|
||||
UpdateMenuCursorSpriteCoords(param_1);
|
||||
sub_801332C(¶m_1->unk8);
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateMenuCursorSpriteCoords(struct MenuInputStruct *param_1)
|
||||
{
|
||||
s32 index;
|
||||
struct UnkTextStruct1 *temp;
|
||||
|
||||
index = param_1->unk0;
|
||||
temp = &gUnknown_2027370[index];
|
||||
param_1->unk8 = temp->unk0 * 8 + param_1->unk4;
|
||||
param_1->unkA = temp->unk2 * 8 + sub_8013800(param_1, param_1->menuIndex);
|
||||
}
|
||||
|
||||
void MoveMenuCursorDown(struct MenuInputStruct *param_1)
|
||||
{
|
||||
param_1->unk24 = 0;
|
||||
if (param_1->unk1A < 1) {
|
||||
param_1->menuIndex = 0;
|
||||
}
|
||||
else {
|
||||
param_1->menuIndex++;
|
||||
if (param_1->menuIndex >= param_1->unk1A) {
|
||||
param_1->menuIndex = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80136E0(struct MenuInputStruct *param_1, u8 param_2)
|
||||
{
|
||||
param_1->unk24 = 0;
|
||||
if (param_1->unk1A < 1) {
|
||||
param_1->menuIndex = 0;
|
||||
}
|
||||
else {
|
||||
param_1->menuIndex++;
|
||||
if (param_1->menuIndex >= param_1->unk1A) {
|
||||
if (param_2 != 0) {
|
||||
param_1->menuIndex = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
param_1->menuIndex = param_1->unk1A - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MoveMenuCursorUp(struct MenuInputStruct *param_1)
|
||||
{
|
||||
param_1->unk24 = 0;
|
||||
if (param_1->unk1A < 1) {
|
||||
param_1->menuIndex = 0;
|
||||
}
|
||||
else {
|
||||
param_1->menuIndex--;
|
||||
if (param_1->menuIndex < 0) {
|
||||
param_1->menuIndex = param_1->unk1A + -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8013744(struct MenuInputStruct *param_1, u8 param_2)
|
||||
{
|
||||
param_1->unk24 = 0;
|
||||
if (param_1->unk1A < 1) {
|
||||
param_1->menuIndex = 0;
|
||||
}
|
||||
else {
|
||||
param_1->menuIndex--;
|
||||
if (param_1->menuIndex < 0) {
|
||||
if (param_2 != 0) {
|
||||
param_1->menuIndex = param_1->unk1A + -1;
|
||||
}
|
||||
else {
|
||||
param_1->menuIndex = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8013780(struct MenuInputStruct *param_1, s32 param_2)
|
||||
{
|
||||
if (param_2 < 0) {
|
||||
param_1->menuIndex = 0;
|
||||
}
|
||||
else if (param_2 >= param_1->unk1A) {
|
||||
param_1->menuIndex = param_1->unk1A - 1;
|
||||
}
|
||||
else {
|
||||
param_1->menuIndex = param_2;
|
||||
}
|
||||
param_1->unk24 = 0;
|
||||
}
|
||||
|
||||
s32 sub_80137A8(struct MenuInputStruct *param_1)
|
||||
{
|
||||
return param_1->menuIndex;
|
||||
}
|
||||
|
||||
void sub_80137B0(struct MenuInputStruct *param_1, s32 param_2)
|
||||
{
|
||||
s32 iVar1;
|
||||
#ifndef NONMATCHING
|
||||
register s32 iVar2 asm("r0");
|
||||
#else
|
||||
s32 iVar2;
|
||||
#endif
|
||||
|
||||
if (param_2 >= 1) {
|
||||
iVar2 = param_2 << 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gUnknown_2027370[param_1->unk0].unkC == 6)
|
||||
{
|
||||
iVar1 = 0x10;
|
||||
}
|
||||
else
|
||||
{
|
||||
iVar1 = 0;
|
||||
}
|
||||
iVar2 = (gUnknown_2027370[param_1->unk0].unk6 * 8 - iVar1);
|
||||
iVar2 <<= 8;
|
||||
}
|
||||
param_1->unk10 = iVar2 / param_1->unk1C;
|
||||
}
|
||||
|
||||
void sub_80137F8(struct MenuInputStruct *param_1, u32 param_2)
|
||||
{
|
||||
param_1->unk10 = param_2 << 8;
|
||||
}
|
||||
|
||||
s32 sub_8013800(struct MenuInputStruct *param_1, s32 param_2)
|
||||
{
|
||||
s32 iVar1;
|
||||
s32 iVar2;
|
||||
|
||||
iVar2 = param_1->unk6;
|
||||
iVar1 = param_2 * param_1->unk10;
|
||||
if (iVar1 < 0) {
|
||||
iVar1 = iVar1 + 0xff;
|
||||
}
|
||||
return (iVar2 + (iVar1 >> 8));
|
||||
}
|
||||
|
||||
void sub_8013818(struct MenuInputStruct *param_1, short param_2, u16 param_3, s32 param_4)
|
||||
{
|
||||
param_1->unk0 = param_4;
|
||||
param_1->unk22 = param_2;
|
||||
param_1->unk1C = param_3;
|
||||
param_1->unk14 = 0;
|
||||
param_1->unk24 = 0;
|
||||
param_1->menuIndex = 0;
|
||||
param_1->unk1E = 0;
|
||||
sub_801317C(¶m_1->unk28);
|
||||
sub_8013984(param_1);
|
||||
sub_80137F8(param_1,0xC);
|
||||
}
|
||||
|
||||
|
||||
void sub_8013848(struct MenuInputStruct *param_1, short param_2, u16 param_3, s32 param_4)
|
||||
{
|
||||
param_1->unk0 = param_4;
|
||||
param_1->unk22 = param_2;
|
||||
param_1->unk1C = param_3;
|
||||
param_1->unk14 = 0;
|
||||
param_1->unk24 = 0;
|
||||
param_1->menuIndex = 0;
|
||||
param_1->unk1E = 0;
|
||||
sub_801317C(¶m_1->unk28);
|
||||
sub_8013984(param_1);
|
||||
sub_80137F8(param_1,0x18);
|
||||
}
|
||||
|
||||
void sub_8013878(struct MenuInputStruct *param_1, int param_2)
|
||||
{
|
||||
if (param_2 < 0) {
|
||||
param_2 = 0;
|
||||
}
|
||||
else if (param_2 >= param_1->unk22) {
|
||||
param_2 = param_1->unk22 + -1;
|
||||
}
|
||||
param_1->unk1E = param_2 / param_1->unk1C;
|
||||
param_1->menuIndex = param_2 % param_1->unk1C;
|
||||
param_1->unk24 = 0;
|
||||
sub_8013984(param_1);
|
||||
}
|
||||
|
||||
bool8 sub_80138B8(struct MenuInputStruct *param_1, bool8 param_2)
|
||||
{
|
||||
s32 sVar1;
|
||||
s32 oldIndex;
|
||||
|
||||
sVar1 = param_1->unk1E;
|
||||
oldIndex = param_1->menuIndex;
|
||||
AddMenuCursorSprite(param_1);
|
||||
if(param_2)
|
||||
{
|
||||
switch(GetKeyPress(param_1))
|
||||
{
|
||||
case INPUT_DPAD_UP:
|
||||
MoveMenuCursorUp(param_1);
|
||||
if(oldIndex != param_1->menuIndex)
|
||||
PlayMenuSoundEffect(3);
|
||||
break;
|
||||
case INPUT_DPAD_DOWN:
|
||||
MoveMenuCursorDown(param_1);
|
||||
if(oldIndex != param_1->menuIndex)
|
||||
PlayMenuSoundEffect(3);
|
||||
break;
|
||||
case INPUT_DPAD_LEFT:
|
||||
sub_8013A7C(param_1);
|
||||
break;
|
||||
case INPUT_DPAD_RIGHT:
|
||||
sub_8013A54(param_1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (sVar1 != param_1->unk1E) {
|
||||
PlayMenuSoundEffect(4);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_8013938(struct MenuInputStruct *param_1)
|
||||
{
|
||||
s32 sVar1;
|
||||
|
||||
sVar1 = param_1->unk1E;
|
||||
param_1->unk1A = 0;
|
||||
param_1->unk14 = 0;
|
||||
AddMenuCursorSprite(param_1);
|
||||
switch(GetKeyPress(param_1))
|
||||
{
|
||||
case INPUT_DPAD_LEFT:
|
||||
sub_8013A7C(param_1);
|
||||
break;
|
||||
case INPUT_DPAD_RIGHT:
|
||||
sub_8013A54(param_1);
|
||||
break;
|
||||
}
|
||||
if (sVar1 != param_1->unk1E) {
|
||||
PlayMenuSoundEffect(4);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8013984(struct MenuInputStruct * param_1) {
|
||||
s32 iVar2;
|
||||
s32 iVar4;
|
||||
struct UnkTextStruct1 *ptr;
|
||||
|
||||
iVar4 = param_1->unk0;
|
||||
ptr = &gUnknown_2027370[iVar4];
|
||||
if (param_1->unk1C == 0) {
|
||||
param_1->unk1C++;
|
||||
}
|
||||
param_1->unk20 = param_1->unk22 / param_1->unk1C;
|
||||
iVar2 = (param_1->unk22 % param_1->unk1C);
|
||||
if (iVar2 != 0) {
|
||||
param_1->unk20++;
|
||||
}
|
||||
if (param_1->unk1E > param_1->unk20 - 1) {
|
||||
param_1->unk1E = param_1->unk20 - 1;
|
||||
}
|
||||
if ((param_1->unk1E != param_1->unk20 - 1) || (param_1->unk22 % param_1->unk1C == 0))
|
||||
{
|
||||
param_1->unk1A = param_1->unk1C;
|
||||
}
|
||||
else
|
||||
{
|
||||
param_1->unk1A = param_1->unk22 % param_1->unk1C;
|
||||
}
|
||||
if (param_1->menuIndex > param_1->unk1A - 1) {
|
||||
param_1->menuIndex = param_1->unk1A - 1;
|
||||
}
|
||||
param_1->unk4 = 0;
|
||||
if (ptr->unkC == 6) {
|
||||
param_1->unk6 = 0x10;
|
||||
}
|
||||
else {
|
||||
param_1->unk6 = 0;
|
||||
}
|
||||
if (param_1->unk20 < 2) {
|
||||
param_1->unkC = 0;
|
||||
}
|
||||
else {
|
||||
param_1->unkC = (ptr->unk0 + ptr->unk04 + -2) * 8;
|
||||
}
|
||||
param_1->unkE = ((ptr->unk2) + 1) * 8 + -2;
|
||||
}
|
||||
|
||||
void sub_8013A54(struct MenuInputStruct *param_1)
|
||||
{
|
||||
if (param_1->unk1E < param_1->unk20 - 1) {
|
||||
param_1->unk1E++;
|
||||
}
|
||||
else
|
||||
{
|
||||
param_1->unk1E = 0;
|
||||
}
|
||||
sub_8013984(param_1);
|
||||
}
|
||||
|
||||
void sub_8013A7C(struct MenuInputStruct *param_1)
|
||||
{
|
||||
if (param_1->unk1E < 1) {
|
||||
param_1->unk1E = param_1->unk20 - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
param_1->unk1E--;
|
||||
}
|
||||
sub_8013984(param_1);
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user