summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2021-05-21 14:01:31 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2021-05-21 14:01:31 -0400
commitc49b55a8f94b6b74fe35b8e6994551dc33a4ff6f (patch)
treecba00b5e1a4dd1f0f1737f99c032fdd957d85166
parentbcc2b21b1db3a0a54c5d5c446644b288064e14d9 (diff)
ListMenuScroll
-rw-r--r--arm9/asm/unk_020010A8.s136
-rw-r--r--arm9/asm/unk_020023C0.s8
-rw-r--r--arm9/asm/unk_0200CABC.s34
-rw-r--r--arm9/asm/unk_02016B94.s12
-rw-r--r--arm9/asm/unk_0207D5BC.s6
-rw-r--r--arm9/global.inc6
-rw-r--r--arm9/modules/06/asm/module_06.s2
-rw-r--r--arm9/modules/09/asm/module_09.s48
-rw-r--r--arm9/modules/14/asm/module_14.s2
-rw-r--r--arm9/modules/18/asm/module_18.s2
-rw-r--r--arm9/modules/65/asm/module_65.s10
-rw-r--r--arm9/modules/68/asm/module_68.s2
-rw-r--r--arm9/modules/76/asm/module_76.s4
-rw-r--r--arm9/modules/83/asm/module_83.s20
-rw-r--r--arm9/src/list_menu.c43
-rw-r--r--arm9/src/text.c4
16 files changed, 125 insertions, 214 deletions
diff --git a/arm9/asm/unk_020010A8.s b/arm9/asm/unk_020010A8.s
index e814dda2..37faa5e7 100644
--- a/arm9/asm/unk_020010A8.s
+++ b/arm9/asm/unk_020010A8.s
@@ -7,142 +7,10 @@
.extern ListMenuDrawCursor
.extern ListMenuErasePrintedCursor
.extern ListMenuUpdateSelectedRowIndexAndScrollOffset
+ .extern ListMenuScroll
.text
- thumb_func_start FUN_0200198C
-FUN_0200198C: ; 0x0200198C
- push {r3-r7, lr}
- sub sp, #0x8
- add r5, r0, #0x0
- ldrh r0, [r5, #0x12]
- add r4, r1, #0x0
- add r7, r2, #0x0
- cmp r4, r0
- blt _020019B8
- ldrb r1, [r5, #0x18]
- ldr r0, [r5, #0xc]
- lsl r1, r1, #0x1c
- lsr r1, r1, #0x1c
- bl FillWindowPixelBuffer
- ldrh r1, [r5, #0x2c]
- ldrh r3, [r5, #0x12]
- add r0, r5, #0x0
- mov r2, #0x0
- bl ListMenuPrintEntries
- add sp, #0x8
- pop {r3-r7, pc}
-_020019B8:
- ldrh r0, [r5, #0x1a]
- mov r1, #0x1
- lsl r0, r0, #0x11
- lsr r0, r0, #0x1a
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- bl GetFontAttribute
- ldrh r1, [r5, #0x1a]
- lsl r1, r1, #0x19
- lsr r1, r1, #0x1c
- add r0, r1, r0
- lsl r0, r0, #0x18
- lsr r6, r0, #0x18
- cmp r7, #0x0
- ldrb r0, [r5, #0x18]
- bne _02001A46
- lsl r0, r0, #0x1c
- lsr r7, r0, #0x1c
- add r2, r4, #0x0
- lsl r3, r7, #0x4
- mul r2, r6
- orr r3, r7
- lsl r2, r2, #0x18
- lsl r3, r3, #0x18
- ldr r0, [r5, #0xc]
- mov r1, #0x1
- lsr r2, r2, #0x18
- lsr r3, r3, #0x18
- bl FUN_0201A8C8
- ldrh r1, [r5, #0x2c]
- add r0, r5, #0x0
- mov r2, #0x0
- add r3, r4, #0x0
- bl ListMenuPrintEntries
- ldrb r0, [r5, #0x17]
- lsl r0, r0, #0x1c
- lsr r2, r0, #0x1c
- ldrh r0, [r5, #0x12]
- add r1, r0, #0x0
- mul r1, r6
- add r0, r2, r1
- lsl r0, r0, #0x10
- lsr r4, r0, #0x10
- ldr r0, [r5, #0xc]
- bl FUN_0201AB0C
- add r6, r0, #0x0
- ldr r0, [r5, #0xc]
- bl FUN_0201AB10
- lsl r0, r0, #0x3
- lsl r1, r6, #0x13
- sub r0, r0, r4
- lsr r1, r1, #0x10
- lsl r0, r0, #0x10
- str r1, [sp, #0x0]
- lsr r0, r0, #0x10
- str r0, [sp, #0x4]
- ldrb r1, [r5, #0x18]
- ldr r0, [r5, #0xc]
- mov r2, #0x0
- lsl r1, r1, #0x1c
- lsr r1, r1, #0x1c
- add r3, r4, #0x0
- bl FillWindowPixelRect
- add sp, #0x8
- pop {r3-r7, pc}
-_02001A46:
- lsl r0, r0, #0x1c
- lsr r3, r0, #0x1c
- add r2, r4, #0x0
- mul r2, r6
- lsl r6, r3, #0x4
- orr r3, r6
- lsl r2, r2, #0x18
- lsl r3, r3, #0x18
- ldr r0, [r5, #0xc]
- mov r1, #0x0
- lsr r2, r2, #0x18
- lsr r3, r3, #0x18
- bl FUN_0201A8C8
- ldrh r0, [r5, #0x12]
- ldrh r1, [r5, #0x2c]
- add r3, r4, #0x0
- sub r2, r0, r4
- add r1, r1, r2
- lsl r1, r1, #0x10
- lsl r2, r2, #0x10
- add r0, r5, #0x0
- lsr r1, r1, #0x10
- lsr r2, r2, #0x10
- bl ListMenuPrintEntries
- ldr r0, [r5, #0xc]
- bl FUN_0201AB0C
- lsl r0, r0, #0x13
- lsr r0, r0, #0x10
- str r0, [sp, #0x0]
- ldrb r0, [r5, #0x17]
- mov r2, #0x0
- add r3, r2, #0x0
- lsl r0, r0, #0x1c
- lsr r0, r0, #0x1c
- str r0, [sp, #0x4]
- ldrb r1, [r5, #0x18]
- ldr r0, [r5, #0xc]
- lsl r1, r1, #0x1c
- lsr r1, r1, #0x1c
- bl FillWindowPixelRect
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-
thumb_func_start ListMenuChangeSelection
ListMenuChangeSelection: ; 0x02001AA4
push {r3-r7, lr}
@@ -227,7 +95,7 @@ _02001B38:
ldr r2, [sp, #0x8]
add r0, r4, #0x0
add r1, r6, #0x0
- bl FUN_0200198C
+ bl ListMenuScroll
add r0, r4, #0x0
bl ListMenuDrawCursor
add r0, r4, #0x0
diff --git a/arm9/asm/unk_020023C0.s b/arm9/asm/unk_020023C0.s
index 5b9bf77a..a4223e53 100644
--- a/arm9/asm/unk_020023C0.s
+++ b/arm9/asm/unk_020023C0.s
@@ -549,7 +549,7 @@ _020027B6:
ldr r0, [r4, #0x4]
mov r1, #0x0
lsr r3, r3, #0x18
- bl FUN_0201A8C8
+ bl ScrollWindow
mov r1, #0x0
b _020027F2
_020027D8:
@@ -560,7 +560,7 @@ _020027D8:
mov r1, #0x0
mov r2, #0x4
lsr r3, r3, #0x18
- bl FUN_0201A8C8
+ bl ScrollWindow
add r0, r4, #0x0
add r0, #0x27
ldrb r0, [r0, #0x0]
@@ -686,7 +686,7 @@ _020028AC:
bl FUN_0201AB18
str r0, [sp, #0x28]
ldr r0, [r5, #0x4]
- bl FUN_0201AB0C
+ bl GetWindowWidth
ldr r1, _020029F8 ; =gTextFlags
ldrh r6, [r1, #0x2]
ldr r1, [sp, #0x28]
@@ -853,7 +853,7 @@ FUN_02002A00: ; 0x02002A00
bl FUN_0201AB18
add r6, r0, #0x0
ldr r0, [r5, #0x4]
- bl FUN_0201AB0C
+ bl GetWindowWidth
ldr r1, _02002A90 ; =gTextFlags
add r7, r6, #0x2
ldrh r4, [r1, #0x2]
diff --git a/arm9/asm/unk_0200CABC.s b/arm9/asm/unk_0200CABC.s
index 6d593845..57462727 100644
--- a/arm9/asm/unk_0200CABC.s
+++ b/arm9/asm/unk_0200CABC.s
@@ -291,10 +291,10 @@ FUN_0200CCA4: ; 0x0200CCA4
bl FUN_0201AB18
str r0, [sp, #0x18]
add r0, r5, #0x0
- bl FUN_0201AB0C
+ bl GetWindowWidth
str r0, [sp, #0x1c]
add r0, r5, #0x0
- bl FUN_0201AB10
+ bl GetWindowHeight
ldr r1, [sp, #0x1c]
ldr r2, [sp, #0x14]
str r1, [sp, #0x0]
@@ -328,10 +328,10 @@ FUN_0200CCF8: ; 0x0200CCF8
bl FUN_0201AB18
add r7, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB0C
+ bl GetWindowWidth
str r0, [sp, #0x14]
add r0, r5, #0x0
- bl FUN_0201AB10
+ bl GetWindowHeight
sub r1, r7, #0x1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
@@ -758,10 +758,10 @@ FUN_0200D06C: ; 0x0200D06C
bl FUN_0201AB18
str r0, [sp, #0x18]
add r0, r5, #0x0
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r7, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB10
+ bl GetWindowHeight
str r7, [sp, #0x0]
str r0, [sp, #0x4]
lsl r0, r6, #0x18
@@ -813,10 +813,10 @@ FUN_0200D0E0: ; 0x0200D0E0
bl FUN_0201AB18
add r7, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB0C
+ bl GetWindowWidth
str r0, [sp, #0x14]
add r0, r5, #0x0
- bl FUN_0201AB10
+ bl GetWindowHeight
sub r1, r7, #0x1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
@@ -1575,10 +1575,10 @@ FUN_0200D6F8: ; 0x0200D6F8
bl FUN_0201AB18
str r0, [sp, #0x1c]
add r0, r5, #0x0
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r7, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB10
+ bl GetWindowHeight
str r7, [sp, #0x0]
str r0, [sp, #0x4]
str r6, [sp, #0x8]
@@ -1604,10 +1604,10 @@ _0200D756:
bl FUN_0201AB18
str r0, [sp, #0x24]
add r0, r5, #0x0
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r7, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB10
+ bl GetWindowHeight
str r7, [sp, #0x0]
str r0, [sp, #0x4]
str r6, [sp, #0x8]
@@ -1648,10 +1648,10 @@ FUN_0200D7A0: ; 0x0200D7A0
bl FUN_0201AB18
add r7, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r6, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB10
+ bl GetWindowHeight
sub r1, r7, #0x1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
@@ -1681,10 +1681,10 @@ _0200D7FE:
bl FUN_0201AB18
add r6, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r7, r0, #0x0
add r0, r5, #0x0
- bl FUN_0201AB10
+ bl GetWindowHeight
sub r1, r6, #0x1
lsl r1, r1, #0x18
lsr r1, r1, #0x18
@@ -1863,7 +1863,7 @@ FUN_0200D980: ; 0x0200D980
bl FUN_0201AB18
str r0, [sp, #0x1c]
ldr r0, [r5, #0x0]
- bl FUN_0201AB0C
+ bl GetWindowWidth
str r0, [sp, #0x20]
cmp r6, #0x2
bne _0200DA8A
diff --git a/arm9/asm/unk_02016B94.s b/arm9/asm/unk_02016B94.s
index 9a6e152f..6f46943c 100644
--- a/arm9/asm/unk_02016B94.s
+++ b/arm9/asm/unk_02016B94.s
@@ -8422,8 +8422,8 @@ FUN_0201A8BC: ; 0x0201A8BC
nop
_0201A8C4: .word 0x00007FC0
- thumb_func_start FUN_0201A8C8
-FUN_0201A8C8: ; 0x0201A8C8
+ thumb_func_start ScrollWindow
+ScrollWindow: ; 0x0201A8C8
push {r4-r6, lr}
ldrb r6, [r0, #0x4]
mov r5, #0x2c
@@ -8752,13 +8752,13 @@ FUN_0201AB08: ; 0x0201AB08
ldrb r0, [r0, #0x4]
bx lr
- thumb_func_start FUN_0201AB0C
-FUN_0201AB0C: ; 0x0201AB0C
+ thumb_func_start GetWindowWidth
+GetWindowWidth: ; 0x0201AB0C
ldrb r0, [r0, #0x7]
bx lr
- thumb_func_start FUN_0201AB10
-FUN_0201AB10: ; 0x0201AB10
+ thumb_func_start GetWindowHeight
+GetWindowHeight: ; 0x0201AB10
ldrb r0, [r0, #0x8]
bx lr
diff --git a/arm9/asm/unk_0207D5BC.s b/arm9/asm/unk_0207D5BC.s
index 0fab5e2c..0aa84bfc 100644
--- a/arm9/asm/unk_0207D5BC.s
+++ b/arm9/asm/unk_0207D5BC.s
@@ -581,7 +581,7 @@ _0207D9B4:
lsl r0, r0, #0x18
lsr r5, r0, #0x18
add r0, r6, #0x0
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #0x1b
lsr r0, r0, #0x18
sub r0, r0, r5
@@ -598,7 +598,7 @@ _0207D9D8:
lsl r0, r0, #0x18
lsr r5, r0, #0x18
add r0, r6, #0x0
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #0x1b
lsr r0, r0, #0x18
sub r1, r0, r5
@@ -1647,7 +1647,7 @@ FUN_0207E200: ; 0x0207E200
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r4, r0]
- bl FUN_0201AB0C
+ bl GetWindowWidth
mov r1, #0x76
str r1, [sp, #0x0]
mov r1, #0x9d
diff --git a/arm9/global.inc b/arm9/global.inc
index 1debdc23..684b5163 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -1103,10 +1103,10 @@
.extern FUN_02019684
.extern FillWindowPixelRect
.extern FUN_0201974C
-.extern FUN_0201A8C8
+.extern ScrollWindow
.extern FUN_0201AB08
-.extern FUN_0201AB0C
-.extern FUN_0201AB10
+.extern GetWindowWidth
+.extern GetWindowHeight
.extern FUN_0201AB14
.extern FUN_0201AB18
.extern FUN_0201AB1C
diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s
index fcf63fe5..2c8e92bf 100644
--- a/arm9/modules/06/asm/module_06.s
+++ b/arm9/modules/06/asm/module_06.s
@@ -11665,7 +11665,7 @@ _0223F11A:
lsl r5, r5, #4
ldr r0, [r0]
add r0, #0x20
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, #8
lsl r0, r0, #0x10
diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s
index 9b2367ba..c6ad3fc0 100644
--- a/arm9/modules/09/asm/module_09.s
+++ b/arm9/modules/09/asm/module_09.s
@@ -4150,7 +4150,7 @@ _02213F22:
bl NewString_ReadMsgData
add r6, r0, #0
add r0, r5, r4
- bl FUN_0201AB0C
+ bl GetWindowWidth
str r0, [sp, #0x28]
mov r0, #0
add r1, r6, #0
@@ -4196,7 +4196,7 @@ _02213FA6:
bl NewString_ReadMsgData
add r6, r0, #0
add r0, r5, r4
- bl FUN_0201AB0C
+ bl GetWindowWidth
str r0, [sp, #0x2c]
mov r0, #0
add r1, r6, #0
@@ -4623,7 +4623,7 @@ MOD09_022142FC: ; 0x022142FC
cmp r0, #2
bne _02214360
add r0, r4, r6
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r5, r0, #0
add r0, sp, #0x20
ldrh r0, [r0, #0x10]
@@ -4766,7 +4766,7 @@ MOD09_0221445C: ; 0x0221445C
bl FUN_02002E14
add r6, r0, #0
add r0, r5, r4
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r3, r0, #0
mov r0, #6
str r0, [sp]
@@ -4944,7 +4944,7 @@ _022145F4:
ldr r0, [r5, r0]
lsl r4, r6, #4
add r0, r0, r4
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r6, r0, #0
mov r0, #0
ldr r1, [sp, #0x10]
@@ -5070,7 +5070,7 @@ MOD09_02214694: ; 0x02214694
ldr r0, _02214780 ; =0x00002070
ldr r0, [r5, r0]
add r0, r0, r4
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r7
lsl r0, r0, #0x18
@@ -5179,7 +5179,7 @@ MOD09_02214790: ; 0x02214790
ldr r0, _0221487C ; =0x00002070
ldr r0, [r5, r0]
add r0, r0, r4
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r7
lsl r0, r0, #0x18
@@ -5289,7 +5289,7 @@ MOD09_0221488C: ; 0x0221488C
ldr r0, _0221497C ; =0x00002070
ldr r0, [r5, r0]
add r0, r0, r4
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r7
lsl r0, r0, #0x18
@@ -5401,7 +5401,7 @@ MOD09_0221498C: ; 0x0221498C
ldr r0, [r4, r0]
lsl r5, r5, #4
add r0, r0, r5
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r7
lsl r0, r0, #0x18
@@ -5513,7 +5513,7 @@ MOD09_02214A8C: ; 0x02214A8C
ldr r0, [r4, r0]
lsl r5, r5, #4
add r0, r0, r5
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r7
lsl r0, r0, #0x18
@@ -5602,7 +5602,7 @@ MOD09_02214B8C: ; 0x02214B8C
ldr r0, _02214D14 ; =0x00002070
ldr r0, [r5, r0]
add r0, #0x40
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r1, r0, #3
ldr r0, [sp, #0x14]
ldr r2, [sp, #0x10]
@@ -5843,7 +5843,7 @@ MOD09_02214DE8: ; 0x02214DE8
lsl r0, r0, #0x10
lsr r5, r0, #0x10
add r0, r4, r6
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r5
lsl r0, r0, #0x10
@@ -5893,7 +5893,7 @@ _02214E42:
lsl r0, r0, #0x10
lsr r5, r0, #0x10
add r0, r4, r6
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r5
lsl r0, r0, #0x10
@@ -5979,7 +5979,7 @@ MOD09_02214F18: ; 0x02214F18
lsl r0, r0, #0x10
lsr r5, r0, #0x10
add r0, r4, r6
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r5
lsl r0, r0, #0x10
@@ -6029,7 +6029,7 @@ _02214F72:
lsl r0, r0, #0x10
lsr r5, r0, #0x10
add r0, r4, r6
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r5
lsl r0, r0, #0x10
@@ -6166,7 +6166,7 @@ MOD09_022150C8: ; 0x022150C8
lsl r0, r0, #0x10
lsr r6, r0, #0x10
add r0, r5, r4
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r1, r0, r6
lsr r0, r1, #0x1f
@@ -6275,7 +6275,7 @@ MOD09_022151A8: ; 0x022151A8
bl FUN_02002E14
str r0, [sp, #0x1c]
add r0, r4, r6
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r1, r0, #3
ldr r0, [sp, #0x1c]
ldr r2, [sp, #0x18]
@@ -7030,7 +7030,7 @@ _02215830:
mov r4, #8
_02215840:
ldr r0, [sp, #0x18]
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r6
sub r0, r0, r7
@@ -11816,7 +11816,7 @@ _0221803C:
lsl r1, r1, #4
add r0, r0, r1
add r1, r7, #0
- bl FUN_0201A8C8
+ bl ScrollWindow
ldr r1, _022180B0 ; =0x00002070
ldr r0, [r5, r1]
add r1, r1, #5
@@ -11839,7 +11839,7 @@ _02218072:
add r0, r1, r0
ldr r2, [sp]
add r1, r7, #0
- bl FUN_0201A8C8
+ bl ScrollWindow
ldr r0, _022180B0 ; =0x00002070
ldr r1, [r5, r0]
ldrb r0, [r6, r4]
@@ -14450,7 +14450,7 @@ MOD09_02219560: ; 0x02219560
bl FUN_02002E14
add r7, r0, #0
add r0, r5, r4
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r7
lsr r3, r0, #1
@@ -14626,7 +14626,7 @@ MOD09_02219694: ; 0x02219694
bl FUN_02002E14
add r7, r0, #0
add r0, r4, r6
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r7
lsr r3, r0, #1
@@ -14841,7 +14841,7 @@ MOD09_02219884: ; 0x02219884
mov r0, #0x19
lsl r0, r0, #4
add r0, r4, r0
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r0, r0, r7
lsr r6, r0, #1
@@ -16913,7 +16913,7 @@ _0221A93C:
ldr r1, [sp]
add r2, r7, #0
mov r3, #0
- bl FUN_0201A8C8
+ bl ScrollWindow
ldrb r0, [r4, r5]
ldr r1, [r6, #0x2c]
lsl r0, r0, #4
diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s
index 8f54eb98..e51aee69 100644
--- a/arm9/modules/14/asm/module_14.s
+++ b/arm9/modules/14/asm/module_14.s
@@ -19965,7 +19965,7 @@ _021E11CE:
add r0, #0x30
mov r2, #4
add r3, r1, #0
- bl FUN_0201A8C8
+ bl ScrollWindow
ldr r0, [r5, #4]
add r0, #0x30
bl FUN_02019548
diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s
index 7810113c..76c91cca 100644
--- a/arm9/modules/18/asm/module_18.s
+++ b/arm9/modules/18/asm/module_18.s
@@ -23388,7 +23388,7 @@ _02244AF8:
ldr r0, [sp, #0xc]
mov r2, #2
add r3, r1, #0
- bl FUN_0201A8C8
+ bl ScrollWindow
ldr r0, [sp, #0xc]
bl CopyWindowToVram
ldr r0, [r5]
diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s
index dca4005b..e74ab236 100644
--- a/arm9/modules/65/asm/module_65.s
+++ b/arm9/modules/65/asm/module_65.s
@@ -1792,7 +1792,7 @@ _021D82A2:
mov r1, #1
mov r2, #2
mov r3, #0
- bl FUN_0201A8C8
+ bl ScrollWindow
b _021D8392
_021D82D2:
mov r0, #0x1e
@@ -1812,7 +1812,7 @@ _021D82D2:
mov r1, #0
mov r2, #4
add r3, r1, #0
- bl FUN_0201A8C8
+ bl ScrollWindow
mov r0, #1
strh r0, [r4, #0x14]
b _021D8392
@@ -1834,7 +1834,7 @@ _021D8302:
mov r1, #1
mov r2, #2
mov r3, #0
- bl FUN_0201A8C8
+ bl ScrollWindow
mov r0, #0
strh r0, [r4, #0x14]
b _021D8392
@@ -1856,7 +1856,7 @@ _021D8330:
mov r1, #0
mov r2, #2
add r3, r1, #0
- bl FUN_0201A8C8
+ bl ScrollWindow
mov r0, #1
strh r0, [r4, #0x14]
b _021D8392
@@ -1881,7 +1881,7 @@ _021D835E:
mov r1, #0
mov r2, #2
add r3, r1, #0
- bl FUN_0201A8C8
+ bl ScrollWindow
mov r0, #0
strh r0, [r4, #0x14]
_021D8392:
diff --git a/arm9/modules/68/asm/module_68.s b/arm9/modules/68/asm/module_68.s
index e80e78c9..9f0a99ee 100644
--- a/arm9/modules/68/asm/module_68.s
+++ b/arm9/modules/68/asm/module_68.s
@@ -527,7 +527,7 @@ MOD68_021D7904: ; 0x021D7904
bl FUN_02002E14
add r7, r0, #0
add r0, r5, r4
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r3, r0, #0
mov r1, #0
lsl r3, r3, #3
diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s
index ddc3bcd3..86989ca3 100644
--- a/arm9/modules/76/asm/module_76.s
+++ b/arm9/modules/76/asm/module_76.s
@@ -1021,7 +1021,7 @@ _021D7CE8:
add r1, #8
lsl r0, r4, #4
add r0, r1, r0
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #0x1b
lsr r0, r0, #0x18
sub r0, r0, r6
@@ -1041,7 +1041,7 @@ _021D7D12:
add r1, #8
lsl r0, r4, #4
add r0, r1, r0
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #0x1b
lsr r0, r0, #0x18
sub r1, r0, r6
diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s
index 36b862f4..a36fe53c 100644
--- a/arm9/modules/83/asm/module_83.s
+++ b/arm9/modules/83/asm/module_83.s
@@ -434,10 +434,10 @@ _0222D8B2:
bl FUN_0201AB18
add r7, r0, #0
ldr r0, [sp, #0x1c]
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r5, r0, #0
ldr r0, [sp, #0x1c]
- bl FUN_0201AB10
+ bl GetWindowHeight
str r5, [sp]
str r0, [sp, #4]
mov r0, #0
@@ -908,7 +908,7 @@ MOD83_0222DCA0: ; 0x0222DCA0
bl FUN_02002E14
add r4, r0, #0
add r0, r6, #0
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
add r4, #0x20
sub r3, r0, r4
@@ -1601,10 +1601,10 @@ _0222E206:
bl FUN_0201AB18
str r0, [sp, #0x14]
add r0, r5, #0
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r7, r0, #0
add r0, r5, #0
- bl FUN_0201AB10
+ bl GetWindowHeight
str r7, [sp]
str r0, [sp, #4]
mov r0, #0
@@ -1628,10 +1628,10 @@ _0222E256:
bl FUN_0201AB18
str r0, [sp, #0x1c]
add r0, r5, #0
- bl FUN_0201AB0C
+ bl GetWindowWidth
add r7, r0, #0
add r0, r5, #0
- bl FUN_0201AB10
+ bl GetWindowHeight
str r7, [sp]
str r0, [sp, #4]
mov r0, #1
@@ -1707,7 +1707,7 @@ MOD83_0222E2E4: ; 0x0222E2E4
add r1, #0x5c
lsl r0, r0, #4
add r0, r1, r0
- bl FUN_0201AB10
+ bl GetWindowHeight
add r0, r0, #2
lsl r3, r0, #3
mov r0, #0x42
@@ -1769,7 +1769,7 @@ _0222E362:
sub r0, r0, #1
lsl r4, r0, #3
add r0, r5, #0
- bl FUN_0201AB10
+ bl GetWindowHeight
cmp r7, r4
ble _0222E384
mov r0, #1
@@ -23140,7 +23140,7 @@ _022389D0:
bl FUN_02002E14
add r7, r0, #0
ldr r0, [r5, #0x10]
- bl FUN_0201AB0C
+ bl GetWindowWidth
lsl r0, r0, #3
sub r3, r0, r7
ldr r0, [r5, #0x24]
diff --git a/arm9/src/list_menu.c b/arm9/src/list_menu.c
index f54db302..59de2813 100644
--- a/arm9/src/list_menu.c
+++ b/arm9/src/list_menu.c
@@ -15,6 +15,9 @@ void ListMenuCallSelectionChangedCallback(struct ListMenu *, BOOL);
extern void CopyWindowToVram(struct Window *);
extern s32 GetFontAttribute(u8 fontId, s32 attr);
extern void FillWindowPixelRect(struct Window *, u32 fillValue, u16 x, u16 y, u16 width, u16 height);
+extern void ScrollWindow(struct Window *, u8, u8, u8);
+extern u16 GetWindowWidth(struct Window *);
+extern u16 GetWindowHeight(struct Window *);
static inline u32 MakeFontColor(u32 fgPal, u32 shdwPal, u32 bgPal)
{
@@ -476,3 +479,43 @@ THUMB_FUNC u8 ListMenuUpdateSelectedRowIndexAndScrollOffset(struct ListMenu *lis
}
return 2;
}
+
+THUMB_FUNC void ListMenuScroll(struct ListMenu * list, u8 count, u8 movingDown)
+{
+ if (count >= list->template.maxShowed)
+ {
+ FillWindowPixelBuffer(list->template.window, list->template.fillValue);
+ ListMenuPrintEntries(list, list->cursorPos, 0, list->template.maxShowed);
+ }
+ else
+ {
+ u8 yMultiplier = GetFontAttribute(list->template.fontId, 1) + list->template.itemVerticalPadding;
+
+ if (!movingDown)
+ {
+ u16 y, width, height;
+
+ ScrollWindow(list->template.window, 1, count * yMultiplier, (list->template.fillValue << 4) | list->template.fillValue);
+ ListMenuPrintEntries(list, list->cursorPos, 0, count);
+
+ y = (list->template.maxShowed * yMultiplier) + list->template.upText_Y;
+ width = GetWindowWidth(list->template.window);
+ height = GetWindowHeight(list->template.window);
+ FillWindowPixelRect(list->template.window,
+ list->template.fillValue,
+ 0, y, width * 8, height * 8 - y);
+ }
+ else
+ {
+ u32 width;
+
+ ScrollWindow(list->template.window, 0, count * yMultiplier, (list->template.fillValue << 4) | list->template.fillValue);
+ ListMenuPrintEntries(list, list->cursorPos + (list->template.maxShowed - count), list->template.maxShowed - count, count);
+
+ width = GetWindowWidth(list->template.window);
+ FillWindowPixelRect(list->template.window,
+ list->template.fillValue,
+ 0, 0, width * 8, list->template.upText_Y);
+ }
+ }
+}
diff --git a/arm9/src/text.c b/arm9/src/text.c
index 23e6ca67..926fa29f 100644
--- a/arm9/src/text.c
+++ b/arm9/src/text.c
@@ -24,7 +24,7 @@ extern u32 FontFunc(u8 fontId, struct TextPrinter *printer);
extern void *FUN_02006BB0(u32 param0, u32 param1, u32 param2, struct TextPrinter **param3, u32 param4);
-extern u32 FUN_0201AB0C(struct Window * window);
+extern u32 GetWindowWidth(struct Window * window);
extern void FUN_02019658(struct Window * param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7, u32 param8, u32 param9);
@@ -349,7 +349,7 @@ THUMB_FUNC void FUN_0201C1EC(struct TextPrinter *printer, u32 param1, u32 param2
printer->Unk2C = FUN_0201C1B0();
}
u32 r6 = (u32)printer->Unk2C + param3 * (sizeof(struct TextPrinter) * 8);
- u32 r2 = ((FUN_0201AB0C(window) - 3) << 0x13) >> 0x10;
+ u32 r2 = ((GetWindowWidth(window) - 3) << 0x13) >> 0x10;
FUN_02019658(window, r6, 0, 0, 24, 32, r2, 0, 24, 32);
}