summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiKevin83 <38826675+TiKevin83@users.noreply.github.com>2019-01-22 14:30:41 -0500
committerGitHub <noreply@github.com>2019-01-22 14:30:41 -0500
commit43ec9ae7f74e745b7ccac7c34a253deeb9291c15 (patch)
treec32df94302d36e2918f04e88b20b134243451e29
parent3ea6f22c48ef9ba053757dbbde65ce059726e229 (diff)
Label functions, note cause of fast options
Some of the functions in here are unlabeled despite having decent labels in pokecrystal (GSC reused yellow's options code). Updated the most relevant ones. This code has a bug/feature called "fast options" that reappears due to its reuse in GSC, added some explanation of it in comments
-rw-r--r--engine/menu/options.asm34
1 files changed, 18 insertions, 16 deletions
diff --git a/engine/menu/options.asm b/engine/menu/options.asm
index 7bed30ae..b6042ab9 100644
--- a/engine/menu/options.asm
+++ b/engine/menu/options.asm
@@ -1,16 +1,18 @@
DisplayOptionMenu_:
- call Func_41f06
+; executes each menu option's update function via GetOptionPointer, but the joypad isn't cleared until the ret back to optionMenuLoop
+; this results in the options each being shifted left or right if the respective button is pressed along with A while opening options
+ call InitOptions
.optionMenuLoop
call JoypadLowSensitivity
ld a, [hJoy5]
and START | B_BUTTON
jr nz, .exitOptionMenu
- call Func_41eb7
- jr c, .asm_41c86
- call Func_41c95
+ call OptionsControl
+ jr c, .dpadDelay
+ call GetOptionPointer
jr c, .exitOptionMenu
-.asm_41c86
- call Func_41ee9
+.dpadDelay
+ call OptionsMenu_UpdateCursorPosition
call DelayFrame
call DelayFrame
call DelayFrame
@@ -18,7 +20,7 @@ DisplayOptionMenu_:
.exitOptionMenu
ret
-Func_41c95:
+GetOptionPointer:
ld a, [wOptionsCursorLocation]
ld e, a
ld d, $0
@@ -28,7 +30,7 @@ Func_41c95:
ld a, [hli]
ld h, [hl]
ld l, a
- jp hl
+ jp hl ; jump to the function for the current highlighted option
OptionMenuJumpTable:
dw OptionsMenu_TextSpeed
@@ -41,7 +43,7 @@ OptionMenuJumpTable:
dw OptionsMenu_Cancel
OptionsMenu_TextSpeed:
- call Func_41d07
+ call GetTextSpeed
ld a, [hJoy5]
bit 4, a ; right
jr nz, .pressedRight
@@ -96,7 +98,7 @@ MidText:
SlowText:
db "SLOW@"
-Func_41d07:
+GetTextSpeed:
ld a, [wOptions]
and $f
cp $5
@@ -348,7 +350,7 @@ OptionsMenu_Cancel:
scf
ret
-Func_41eb7:
+OptionsControl:
ld hl, wOptionsCursorLocation
ld a, [hJoy5]
cp D_DOWN
@@ -388,7 +390,7 @@ Func_41eb7:
scf
ret
-Func_41ee9:
+OptionsMenu_UpdateCursorPosition:
coord hl, 1, 1
ld de, SCREEN_WIDTH
ld c, 16
@@ -404,7 +406,7 @@ Func_41ee9:
ld [hl], "▶"
ret
-Func_41f06:
+InitOptions:
coord hl, 0, 0
lb bc, SCREEN_HEIGHT - 2, SCREEN_WIDTH - 2
call TextBoxBorder
@@ -416,13 +418,13 @@ Func_41f06:
call PlaceString
xor a
ld [wOptionsCursorLocation], a
- ld c, 5
+ ld c, 5 ; the number of options to loop through
.loop
push bc
- call Func_41c95
+ call GetOptionPointer ; updates the next option
pop bc
ld hl, wOptionsCursorLocation
- inc [hl]
+ inc [hl] ; moves the options cursor
dec c
jr nz, .loop
xor a