mirror of
https://github.com/pret/pokeyellow.git
synced 2026-05-11 05:05:21 -05:00
444 lines
6.1 KiB
NASM
444 lines
6.1 KiB
NASM
DisplayOptionMenu_:
|
|
call Func_41f06
|
|
.optionMenuLoop
|
|
call JoypadLowSensitivity
|
|
ld a, [hJoy5]
|
|
and START | B_BUTTON
|
|
jr nz, .exitOptionMenu
|
|
call Func_41eb7
|
|
jr c, .asm_41c86
|
|
call Func_41c95
|
|
jr c, .exitOptionMenu
|
|
.asm_41c86
|
|
call Func_41ee9
|
|
call DelayFrame
|
|
call DelayFrame
|
|
call DelayFrame
|
|
jr .optionMenuLoop
|
|
.exitOptionMenu
|
|
ret
|
|
|
|
Func_41c95:
|
|
ld a, [wOptionsCursorLocation]
|
|
ld e, a
|
|
ld d, $0
|
|
ld hl, OptionMenuJumpTable
|
|
add hl, de
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
jp hl
|
|
|
|
OptionMenuJumpTable:
|
|
dw OptionsMenu_TextSpeed
|
|
dw OptionsMenu_BattleAnimations
|
|
dw OptionsMenu_BattleStyle
|
|
dw OptionsMenu_SpeakerSettings
|
|
dw OptionsMenu_GBPrinterBrightness
|
|
dw OptionsMenu_Dummy
|
|
dw OptionsMenu_Dummy
|
|
dw OptionsMenu_Cancel
|
|
|
|
OptionsMenu_TextSpeed:
|
|
call Func_41d07
|
|
ld a, [hJoy5]
|
|
bit 4, a ; right
|
|
jr nz, .pressedRight
|
|
bit 5, a
|
|
jr nz, .pressedLeft
|
|
jr .asm_41ce0
|
|
.pressedRight
|
|
ld a, c
|
|
cp $2
|
|
jr c, .asm_41cca
|
|
ld c, $ff
|
|
.asm_41cca
|
|
inc c
|
|
ld a, e
|
|
jr .asm_41cd6
|
|
.pressedLeft
|
|
ld a, c
|
|
and a
|
|
jr nz, .asm_41cd4
|
|
ld c, $3
|
|
.asm_41cd4
|
|
dec c
|
|
ld a, d
|
|
.asm_41cd6
|
|
ld b, a
|
|
ld a, [wOptions]
|
|
and $f0
|
|
or b
|
|
ld [wOptions], a
|
|
.asm_41ce0
|
|
ld b, $0
|
|
ld hl, TextSpeedStringsPointerTable
|
|
add hl, bc
|
|
add hl, bc
|
|
ld e, [hl]
|
|
inc hl
|
|
ld d, [hl]
|
|
coord hl, 14, 2
|
|
call PlaceString
|
|
and a
|
|
ret
|
|
|
|
TextSpeedStringsPointerTable:
|
|
dw FastText
|
|
dw MidText
|
|
dw SlowText
|
|
|
|
FastText:
|
|
db "FAST@"
|
|
MidText:
|
|
db "MID @"
|
|
SlowText:
|
|
db "SLOW@"
|
|
|
|
Func_41d07:
|
|
ld a, [wOptions]
|
|
and $f
|
|
cp $5
|
|
jr z, .slowTextOption
|
|
cp $1
|
|
jr z, .fastTextOption
|
|
; mid text option
|
|
ld c, $1
|
|
lb de, 1, 5
|
|
ret
|
|
.slowTextOption
|
|
ld c, $2
|
|
lb de, 3, 1
|
|
ret
|
|
.fastTextOption
|
|
ld c, $0
|
|
lb de, 5, 3
|
|
ret
|
|
|
|
OptionsMenu_BattleAnimations:
|
|
ld a, [hJoy5]
|
|
and D_RIGHT | D_LEFT
|
|
jr nz, .asm_41d33
|
|
ld a, [wOptions]
|
|
and $80 ; mask other bits
|
|
jr .asm_41d3b
|
|
.asm_41d33
|
|
ld a, [wOptions]
|
|
xor $80
|
|
ld [wOptions], a
|
|
.asm_41d3b
|
|
ld bc, $0
|
|
sla a
|
|
rl c
|
|
ld hl, AnimationOptionStringsPointerTable
|
|
add hl, bc
|
|
add hl, bc
|
|
ld e, [hl]
|
|
inc hl
|
|
ld d, [hl]
|
|
coord hl, 14, 4
|
|
call PlaceString
|
|
and a
|
|
ret
|
|
|
|
AnimationOptionStringsPointerTable:
|
|
dw AnimationOnText
|
|
dw AnimationOffText
|
|
|
|
AnimationOnText:
|
|
db "ON @"
|
|
AnimationOffText:
|
|
db "OFF@"
|
|
|
|
OptionsMenu_BattleStyle:
|
|
ld a, [hJoy5]
|
|
and D_LEFT | D_RIGHT
|
|
jr nz, .asm_41d6b
|
|
ld a, [wOptions]
|
|
and $40 ; mask other bits
|
|
jr .asm_41d73
|
|
.asm_41d6b
|
|
ld a, [wOptions]
|
|
xor $40
|
|
ld [wOptions], a
|
|
.asm_41d73
|
|
ld bc, $0
|
|
sla a
|
|
sla a
|
|
rl c
|
|
ld hl, BattleStyleOptionStringsPointerTable
|
|
add hl, bc
|
|
add hl, bc
|
|
ld e, [hl]
|
|
inc hl
|
|
ld d, [hl]
|
|
coord hl, 14, 6
|
|
call PlaceString
|
|
and a
|
|
ret
|
|
|
|
BattleStyleOptionStringsPointerTable:
|
|
dw BattleStyleShiftText
|
|
dw BattleStyleSetText
|
|
|
|
BattleStyleShiftText:
|
|
db "SHIFT@"
|
|
BattleStyleSetText:
|
|
db "SET @"
|
|
|
|
OptionsMenu_SpeakerSettings:
|
|
ld a, [wOptions]
|
|
and $30
|
|
swap a
|
|
ld c, a
|
|
ld a, [hJoy5]
|
|
bit 4, a
|
|
jr nz, .pressedRight
|
|
bit 5, a
|
|
jr nz, .pressedLeft
|
|
jr .asm_41dca
|
|
.pressedRight
|
|
ld a, c
|
|
inc a
|
|
and $3
|
|
jr .asm_41dba
|
|
.pressedLeft
|
|
ld a, c
|
|
dec a
|
|
and $3
|
|
.asm_41dba
|
|
ld c, a
|
|
swap a
|
|
ld b, a
|
|
xor a
|
|
ld [rNR51], a
|
|
ld a, [wOptions]
|
|
and $cf
|
|
or b
|
|
ld [wOptions], a
|
|
.asm_41dca
|
|
ld b, $0
|
|
ld hl, SpeakerOptionStringsPointerTable
|
|
add hl, bc
|
|
add hl, bc
|
|
ld e, [hl]
|
|
inc hl
|
|
ld d, [hl]
|
|
coord hl, 8, 8
|
|
call PlaceString
|
|
and a
|
|
ret
|
|
|
|
SpeakerOptionStringsPointerTable:
|
|
dw MonoSoundText
|
|
dw Earphone1SoundText
|
|
dw Earphone2SoundText
|
|
dw Earphone3SoundText
|
|
|
|
MonoSoundText:
|
|
db "MONO @"
|
|
Earphone1SoundText:
|
|
db "EARPHONE1@"
|
|
Earphone2SoundText:
|
|
db "EARPHONE2@"
|
|
Earphone3SoundText:
|
|
db "EARPHONE3@"
|
|
|
|
OptionsMenu_GBPrinterBrightness:
|
|
call Func_41e7b
|
|
ld a, [hJoy5]
|
|
bit 4, a
|
|
jr nz, .pressedRight
|
|
bit 5, a
|
|
jr nz, .pressedLeft
|
|
jr .asm_41e32
|
|
.pressedRight
|
|
ld a, c
|
|
cp $4
|
|
jr c, .asm_41e22
|
|
ld c, $ff
|
|
.asm_41e22
|
|
inc c
|
|
ld a, e
|
|
jr .asm_41e2e
|
|
.pressedLeft
|
|
ld a, c
|
|
and a
|
|
jr nz, .asm_41e2c
|
|
ld c, $5
|
|
.asm_41e2c
|
|
dec c
|
|
ld a, d
|
|
.asm_41e2e
|
|
ld b, a
|
|
ld [wPrinterSettings], a
|
|
.asm_41e32
|
|
ld b, $0
|
|
ld hl, GBPrinterOptionStringsPointerTable
|
|
add hl, bc
|
|
add hl, bc
|
|
ld e, [hl]
|
|
inc hl
|
|
ld d, [hl]
|
|
coord hl, 8, 10
|
|
call PlaceString
|
|
and a
|
|
ret
|
|
|
|
GBPrinterOptionStringsPointerTable:
|
|
dw LightestPrintText
|
|
dw LighterPrintText
|
|
dw NormalPrintText
|
|
dw DarkerPrintText
|
|
dw DarkestPrintText
|
|
|
|
LightestPrintText:
|
|
db "LIGHTEST@"
|
|
LighterPrintText:
|
|
db "LIGHTER @"
|
|
NormalPrintText:
|
|
db "NORMAL @"
|
|
DarkerPrintText:
|
|
db "DARKER @"
|
|
DarkestPrintText:
|
|
db "DARKEST @"
|
|
|
|
Func_41e7b:
|
|
ld a, [wPrinterSettings]
|
|
and a
|
|
jr z, .asm_41e93
|
|
cp $20
|
|
jr z, .asm_41e99
|
|
cp $60
|
|
jr z, .asm_41e9f
|
|
cp $7f
|
|
jr z, .asm_41ea5
|
|
ld c, $2
|
|
lb de, $20, $60
|
|
ret
|
|
.asm_41e93
|
|
ld c, $0
|
|
lb de, $7f, $20
|
|
ret
|
|
.asm_41e99
|
|
ld c, $1
|
|
lb de, $0, $40
|
|
ret
|
|
.asm_41e9f
|
|
ld c, $3
|
|
lb de, $40, $7f
|
|
ret
|
|
.asm_41ea5
|
|
ld c, $4
|
|
lb de, $60, $0
|
|
ret
|
|
|
|
OptionsMenu_Dummy:
|
|
and a
|
|
ret
|
|
|
|
OptionsMenu_Cancel:
|
|
ld a, [hJoy5]
|
|
and A_BUTTON
|
|
jr nz, .pressedCancel
|
|
and a
|
|
ret
|
|
.pressedCancel
|
|
scf
|
|
ret
|
|
|
|
Func_41eb7:
|
|
ld hl, wOptionsCursorLocation
|
|
ld a, [hJoy5]
|
|
cp D_DOWN
|
|
jr z, .pressedDown
|
|
cp D_UP
|
|
jr z, .pressedUp
|
|
and a
|
|
ret
|
|
.pressedDown
|
|
ld a, [hl]
|
|
cp $7
|
|
jr nz, .doNotWrapAround
|
|
ld [hl], $0
|
|
scf
|
|
ret
|
|
.doNotWrapAround
|
|
cp $4
|
|
jr c, .regularIncrement
|
|
ld [hl], $6
|
|
.regularIncrement
|
|
inc [hl]
|
|
scf
|
|
ret
|
|
.pressedUp
|
|
ld a, [hl]
|
|
cp $7
|
|
jr nz, .doNotMoveCursorToPrintOption
|
|
ld [hl], $4
|
|
scf
|
|
ret
|
|
.doNotMoveCursorToPrintOption
|
|
and a
|
|
jr nz, .regularDecrement
|
|
ld [hl], $8
|
|
.regularDecrement
|
|
dec [hl]
|
|
scf
|
|
ret
|
|
|
|
Func_41ee9:
|
|
coord hl, 1, 1
|
|
ld de, SCREEN_WIDTH
|
|
ld c, 16
|
|
.loop
|
|
ld [hl], " "
|
|
add hl, de
|
|
dec c
|
|
jr nz, .loop
|
|
coord hl, 1, 2
|
|
ld bc, SCREEN_WIDTH * 2
|
|
ld a, [wOptionsCursorLocation]
|
|
call AddNTimes
|
|
ld [hl], "▶"
|
|
ret
|
|
|
|
Func_41f06:
|
|
coord hl, 0, 0
|
|
lb bc, SCREEN_HEIGHT - 2, SCREEN_WIDTH - 2
|
|
call TextBoxBorder
|
|
coord hl, 2, 2
|
|
ld de, AllOptionsText
|
|
call PlaceString
|
|
coord hl, 2, 16
|
|
ld de, OptionMenuCancelText
|
|
call PlaceString
|
|
xor a
|
|
ld [wOptionsCursorLocation], a
|
|
ld c, 5
|
|
.loop
|
|
push bc
|
|
call Func_41c95
|
|
pop bc
|
|
ld hl, wOptionsCursorLocation
|
|
inc [hl]
|
|
dec c
|
|
jr nz, .loop
|
|
xor a
|
|
ld [wOptionsCursorLocation], a
|
|
inc a
|
|
ld [H_AUTOBGTRANSFERENABLED], a
|
|
call Delay3
|
|
ret
|
|
|
|
AllOptionsText:
|
|
db "TEXT SPEED :"
|
|
next "ANIMATION :"
|
|
next "BATTLESTYLE:"
|
|
next "SOUND:"
|
|
next "PRINT:@"
|
|
|
|
OptionMenuCancelText:
|
|
db "CANCEL@"
|