diff options
Diffstat (limited to 'engine/menus/options_menu.asm')
-rw-r--r-- | engine/menus/options_menu.asm | 64 |
1 files changed, 40 insertions, 24 deletions
diff --git a/engine/menus/options_menu.asm b/engine/menus/options_menu.asm index 9a6b0fdc7..07f71be26 100644 --- a/engine/menus/options_menu.asm +++ b/engine/menus/options_menu.asm @@ -1,21 +1,34 @@ +; GetOptionPointer.Pointers indexes + const_def + const OPT_TEXT_SPEED ; 0 + const OPT_BATTLE_SCENE ; 1 + const OPT_BATTLE_STYLE ; 2 + const OPT_SOUND ; 3 + const OPT_PRINT ; 4 + const OPT_MENU_ACCOUNT ; 5 + const OPT_FRAME ; 6 + const OPT_CANCEL ; 7 +NUM_OPTIONS EQU const_value ; 8 + _OptionsMenu: ld hl, hInMenu ld a, [hl] push af - ld [hl], $1 + ld [hl], TRUE call ClearBGPalettes hlcoord 0, 0 - ld b, 16 - ld c, 18 + ld b, SCREEN_HEIGHT - 2 + ld c, SCREEN_WIDTH - 2 call Textbox hlcoord 2, 2 ld de, StringOptions call PlaceString xor a ld [wJumptableIndex], a - ld c, $6 ; number of items on the menu minus 1 (for cancel) -.print_text_loop ; this next will display the settings of each option when the menu is opened +; display the settings of each option when the menu is opened + ld c, NUM_OPTIONS - 2 ; omit frame type, the last option +.print_text_loop push bc xor a ldh [hJoyLast], a @@ -25,8 +38,8 @@ _OptionsMenu: inc [hl] dec c jr nz, .print_text_loop + call UpdateFrame ; display the frame type - call UpdateFrame xor a ld [wJumptableIndex], a inc a @@ -78,8 +91,8 @@ StringOptions: db "CANCEL@" GetOptionPointer: - ld a, [wJumptableIndex] ; load the cursor position to a - ld e, a ; copy it to de + ld a, [wJumptableIndex] + ld e, a ld d, 0 ld hl, .Pointers add hl, de @@ -87,9 +100,10 @@ GetOptionPointer: ld a, [hli] ld h, [hl] ld l, a - jp hl ; jump to the code of the current highlighted item + jp hl .Pointers: +; entries correspond to OPT_* constants dw Options_TextSpeed dw Options_BattleScene dw Options_BattleStyle @@ -346,7 +360,7 @@ Options_Print: ld [wGBPrinterBrightness], a .NonePressed: - ld b, $0 + ld b, 0 ld hl, .Strings add hl, bc add hl, bc @@ -500,17 +514,17 @@ OptionsControl: ret .DownPressed: - ld a, [hl] ; load the cursor position to a - cp $7 ; maximum number of items in option menu - jr nz, .CheckFive - ld [hl], $0 + ld a, [hl] + cp OPT_CANCEL ; maximum option index + jr nz, .CheckMenuAccount + ld [hl], OPT_TEXT_SPEED ; first option scf ret -.CheckFive: ; I have no idea why this exists... - cp $5 +.CheckMenuAccount: ; I have no idea why this exists... + cp OPT_MENU_ACCOUNT jr nz, .Increase - ld [hl], $5 + ld [hl], OPT_MENU_ACCOUNT .Increase: inc [hl] @@ -519,16 +533,18 @@ OptionsControl: .UpPressed: ld a, [hl] - cp $6 - jr nz, .NotSix - ld [hl], $5 ; Another thing where I'm not sure why it exists + +; Another thing where I'm not sure why it exists + cp OPT_FRAME + jr nz, .NotFrame + ld [hl], OPT_MENU_ACCOUNT scf ret -.NotSix: - and a +.NotFrame: + and a ; OPT_TEXT_SPEED, minimum option index jr nz, .Decrease - ld [hl], $8 ; number of option items +1 + ld [hl], NUM_OPTIONS ; decrements to OPT_CANCEL, maximum option index .Decrease: dec [hl] @@ -538,7 +554,7 @@ OptionsControl: Options_UpdateCursorPosition: hlcoord 1, 1 ld de, SCREEN_WIDTH - ld c, $10 + ld c, SCREEN_HEIGHT - 2 .loop ld [hl], " " add hl, de |