diff options
author | TiKevin83 <38826675+TiKevin83@users.noreply.github.com> | 2019-01-22 14:30:41 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-22 14:30:41 -0500 |
commit | 43ec9ae7f74e745b7ccac7c34a253deeb9291c15 (patch) | |
tree | c32df94302d36e2918f04e88b20b134243451e29 | |
parent | 3ea6f22c48ef9ba053757dbbde65ce059726e229 (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.asm | 34 |
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 |