mirror of
https://github.com/thornAvery/kep-hack.git
synced 2026-04-04 10:31:45 +13:00
Pull a lot of engine out of main.asm
This commit is contained in:
parent
ea3ba4cde3
commit
15427f5320
110 changed files with 39093 additions and 38990 deletions
726
engine/menu/main_menu.asm
Executable file
726
engine/menu/main_menu.asm
Executable file
|
|
@ -0,0 +1,726 @@
|
|||
MainMenu: ; 5af2 (1:5af2)
|
||||
; Check save file
|
||||
call Func_5bff
|
||||
xor a
|
||||
ld [$D08A],a
|
||||
inc a
|
||||
ld [$D088],a
|
||||
call Func_609e
|
||||
jr nc,.next0
|
||||
|
||||
; Predef 52 loads the save from SRAM to RAM
|
||||
ld a,$52
|
||||
call Predef
|
||||
|
||||
.next0
|
||||
ld c,20
|
||||
call DelayFrames
|
||||
xor a
|
||||
ld [$D12B],a
|
||||
ld hl,$CC2B
|
||||
ld [hli],a
|
||||
ld [hli],a
|
||||
ld [hli],a
|
||||
ld [hl],a
|
||||
ld [$D07C],a
|
||||
ld hl,$D72E
|
||||
res 6,[hl]
|
||||
call ClearScreen
|
||||
call GoPAL_SET_CF1C
|
||||
call LoadTextBoxTilePatterns
|
||||
call LoadFontTilePatterns
|
||||
ld hl,$D730
|
||||
set 6,[hl]
|
||||
ld a,[$D088]
|
||||
cp a,1
|
||||
jr z,.next1
|
||||
FuncCoord 0,0
|
||||
ld hl,Coord
|
||||
ld b,6
|
||||
ld c,13
|
||||
call TextBoxBorder
|
||||
FuncCoord 2,2
|
||||
ld hl,Coord
|
||||
ld de,ContinueText
|
||||
call PlaceString
|
||||
jr .next2
|
||||
.next1
|
||||
FuncCoord 0,0
|
||||
ld hl,Coord
|
||||
ld b,4
|
||||
ld c,13
|
||||
call TextBoxBorder
|
||||
FuncCoord 2,2
|
||||
ld hl,Coord
|
||||
ld de,NewGameText
|
||||
call PlaceString
|
||||
.next2
|
||||
ld hl,$D730
|
||||
res 6,[hl]
|
||||
call UpdateSprites ; OAM?
|
||||
xor a
|
||||
ld [$CC26],a
|
||||
ld [$CC2A],a
|
||||
ld [$CC34],a
|
||||
inc a
|
||||
ld [$CC25],a
|
||||
inc a
|
||||
ld [$CC24],a
|
||||
ld a,$B
|
||||
ld [$CC29],a
|
||||
ld a,[$D088]
|
||||
ld [$CC28],a
|
||||
call HandleMenuInput
|
||||
bit 1,a
|
||||
jp nz,LoadTitlescreenGraphics ; load title screen (gfx and arrangement)
|
||||
ld c,20
|
||||
call DelayFrames
|
||||
ld a,[$CC26]
|
||||
ld b,a
|
||||
ld a,[$D088]
|
||||
cp a,2
|
||||
jp z,.next3
|
||||
inc b ; adjust MenuArrow_Counter
|
||||
.next3
|
||||
ld a,b
|
||||
and a
|
||||
jr z,.next4 ; if press_A on Continue
|
||||
cp a,1
|
||||
jp z,Func_5d52 ; if press_A on NewGame
|
||||
call DisplayOptionMenu ; if press_a on Options
|
||||
ld a,1
|
||||
ld [$D08A],a
|
||||
jp .next0
|
||||
.next4
|
||||
call ContinueGame
|
||||
ld hl,$D126
|
||||
set 5,[hl]
|
||||
.next6
|
||||
xor a
|
||||
ld [H_NEWLYPRESSEDBUTTONS],a
|
||||
ld [H_NEWLYRELEASEDBUTTONS],a
|
||||
ld [H_CURRENTPRESSEDBUTTONS],a
|
||||
call GetJoypadState
|
||||
ld a,[H_CURRENTPRESSEDBUTTONS]
|
||||
bit 0,a
|
||||
jr nz,.next5
|
||||
bit 1,a
|
||||
jp nz,.next0
|
||||
jr .next6
|
||||
.next5
|
||||
call GBPalWhiteOutWithDelay3
|
||||
call ClearScreen
|
||||
ld a,4
|
||||
ld [$D52A],a
|
||||
ld c,10
|
||||
call DelayFrames
|
||||
ld a,[$D5A2]
|
||||
and a
|
||||
jp z,Func_5d5f
|
||||
ld a,[W_CURMAP] ; map ID
|
||||
cp a,HALL_OF_FAME
|
||||
jp nz,Func_5d5f
|
||||
xor a
|
||||
ld [$D71A],a
|
||||
ld hl,$D732
|
||||
set 2,[hl]
|
||||
call Func_62ce
|
||||
jp Func_5d5f
|
||||
Func_5bff: ; 5bff (1:5bff)
|
||||
ld a,1
|
||||
ld [$D358],a
|
||||
ld a,3
|
||||
ld [$D355],a
|
||||
ret
|
||||
|
||||
LinkMenu: ; 5c0a (1:5c0a)
|
||||
xor a
|
||||
ld [$d358], a
|
||||
ld hl, $d72e
|
||||
set 6, [hl]
|
||||
ld hl, TextTerminator_6b20 ; $6b20
|
||||
call PrintText
|
||||
call SaveScreenTilesToBuffer1
|
||||
ld hl, WhereWouldYouLikeText
|
||||
call PrintText
|
||||
FuncCoord 5, 5 ; $c409
|
||||
ld hl, Coord
|
||||
ld b, $6
|
||||
ld c, $d
|
||||
call TextBoxBorder
|
||||
call UpdateSprites
|
||||
FuncCoord 7, 7 ; $c433
|
||||
ld hl, Coord
|
||||
ld de, TradeCenterText
|
||||
call PlaceString
|
||||
xor a
|
||||
ld [$cd37], a
|
||||
ld [$d72d], a
|
||||
ld hl, wTopMenuItemY ; $cc24
|
||||
ld a, $7
|
||||
ld [hli], a
|
||||
ld a, $6
|
||||
ld [hli], a
|
||||
xor a
|
||||
ld [hli], a
|
||||
inc hl
|
||||
ld a, $2
|
||||
ld [hli], a
|
||||
inc a
|
||||
ld [hli], a
|
||||
xor a
|
||||
ld [hl], a
|
||||
.asm_5c52
|
||||
call HandleMenuInput
|
||||
and $3
|
||||
add a
|
||||
add a
|
||||
ld b, a
|
||||
ld a, [wCurrentMenuItem] ; $cc26
|
||||
add b
|
||||
add $d0
|
||||
ld [$cc42], a
|
||||
ld [$cc43], a
|
||||
.asm_5c66
|
||||
call Func_2247
|
||||
ld a, [$cc3d]
|
||||
ld b, a
|
||||
and $f0
|
||||
cp $d0
|
||||
jr z, .asm_5c7d
|
||||
ld a, [$cc3e]
|
||||
ld b, a
|
||||
and $f0
|
||||
cp $d0
|
||||
jr nz, .asm_5c66
|
||||
.asm_5c7d
|
||||
ld a, b
|
||||
and $c
|
||||
jr nz, .asm_5c8b
|
||||
ld a, [$cc42]
|
||||
and $c
|
||||
jr z, .asm_5c52
|
||||
jr .asm_5ca1
|
||||
.asm_5c8b
|
||||
ld a, [$cc42]
|
||||
and $c
|
||||
jr z, .asm_5c98
|
||||
ld a, [$ffaa]
|
||||
cp $2
|
||||
jr z, .asm_5ca1
|
||||
.asm_5c98
|
||||
ld a, b
|
||||
ld [$cc42], a
|
||||
and $3
|
||||
ld [wCurrentMenuItem], a ; $cc26
|
||||
.asm_5ca1
|
||||
ld a, [$ffaa]
|
||||
cp $2
|
||||
jr nz, .asm_5cb1
|
||||
call DelayFrame
|
||||
call DelayFrame
|
||||
ld a, $81
|
||||
ld [$ff02], a
|
||||
.asm_5cb1
|
||||
ld b, $7f
|
||||
ld c, $7f
|
||||
ld d, $ec
|
||||
ld a, [$cc42]
|
||||
and $8
|
||||
jr nz, .asm_5ccc
|
||||
ld a, [wCurrentMenuItem] ; $cc26
|
||||
cp $2
|
||||
jr z, .asm_5ccc
|
||||
ld c, d
|
||||
ld d, b
|
||||
dec a
|
||||
jr z, .asm_5ccc
|
||||
ld b, c
|
||||
ld c, d
|
||||
.asm_5ccc
|
||||
ld a, b
|
||||
FuncCoord 6, 7 ; $c432
|
||||
ld [Coord], a
|
||||
ld a, c
|
||||
FuncCoord 6, 9 ; $c45a
|
||||
ld [Coord], a
|
||||
ld a, d
|
||||
FuncCoord 6, 11 ; $c482
|
||||
ld [Coord], a
|
||||
ld c, $28
|
||||
call DelayFrames
|
||||
call LoadScreenTilesFromBuffer1
|
||||
ld a, [$cc42]
|
||||
and $8
|
||||
jr nz, .asm_5d2d
|
||||
ld a, [wCurrentMenuItem] ; $cc26
|
||||
cp $2
|
||||
jr z, .asm_5d2d
|
||||
xor a
|
||||
ld [$d700], a
|
||||
ld a, [wCurrentMenuItem] ; $cc26
|
||||
and a
|
||||
ld a, TRADE_CENTER
|
||||
jr nz, .asm_5cfc
|
||||
ld a, BATTLE_CENTER
|
||||
.asm_5cfc
|
||||
ld [$d72d], a
|
||||
ld hl, PleaseWaitText
|
||||
call PrintText
|
||||
ld c, $32
|
||||
call DelayFrames
|
||||
ld hl, $d732
|
||||
res 1, [hl]
|
||||
ld a, [W_ANIMATIONID] ; $d07c
|
||||
ld [$d71a], a
|
||||
call Func_62ce
|
||||
ld c, $14
|
||||
call DelayFrames
|
||||
xor a
|
||||
ld [wMenuJoypadPollCount], a ; $cc34
|
||||
ld [$cc42], a
|
||||
inc a
|
||||
ld [W_ISLINKBATTLE], a ; $d12b
|
||||
ld [$cc47], a
|
||||
jr Func_5d5f
|
||||
.asm_5d2d
|
||||
xor a
|
||||
ld [wMenuJoypadPollCount], a ; $cc34
|
||||
call Delay3
|
||||
call Func_72d7
|
||||
ld hl, LinkCanceledText
|
||||
call PrintText
|
||||
ld hl, $d72e
|
||||
res 6, [hl]
|
||||
ret
|
||||
|
||||
WhereWouldYouLikeText: ; 5d43 (1:5d43)
|
||||
TX_FAR _WhereWouldYouLikeText
|
||||
db "@"
|
||||
|
||||
PleaseWaitText: ; 5d48 (1:5d48)
|
||||
TX_FAR _PleaseWaitText
|
||||
db "@"
|
||||
|
||||
LinkCanceledText: ; 5d4d (1:5d4d)
|
||||
TX_FAR _LinkCanceledText
|
||||
db "@"
|
||||
|
||||
Func_5d52: ; 5d52 (1:5d52)
|
||||
ld hl, $d732
|
||||
res 1, [hl]
|
||||
call OakSpeech
|
||||
ld c, $14
|
||||
call DelayFrames
|
||||
|
||||
Func_5d5f: ; 5d5f (1:5d5f)
|
||||
xor a
|
||||
ld [H_NEWLYPRESSEDBUTTONS], a
|
||||
ld [H_CURRENTPRESSEDBUTTONS], a
|
||||
ld [$ffb5], a
|
||||
ld [$d72d], a
|
||||
ld hl, $d732
|
||||
set 0, [hl]
|
||||
call ResetPlayerSpriteData
|
||||
ld c, $14
|
||||
call DelayFrames
|
||||
ld a, [$cc47]
|
||||
and a
|
||||
ret nz
|
||||
jp EnterMap
|
||||
|
||||
ContinueText: ; 5d7e (1:5d7e)
|
||||
db "CONTINUE", $4e
|
||||
|
||||
NewGameText: ; 5d87 (1:5d87)
|
||||
db "NEW GAME", $4e
|
||||
db "OPTION@"
|
||||
|
||||
TradeCenterText: ; 5d97 (1:5d97)
|
||||
db "TRADE CENTER", $4e
|
||||
db "COLOSSEUM", $4e
|
||||
db "CANCEL@"
|
||||
|
||||
ContinueGame: ; 5db5 (1:5db5)
|
||||
xor a
|
||||
ld [H_AUTOBGTRANSFERENABLED], a ; $ffba
|
||||
FuncCoord 4, 7 ; $c430
|
||||
ld hl, Coord
|
||||
ld b, $8
|
||||
ld c, $e
|
||||
call TextBoxBorder
|
||||
FuncCoord 5, 9 ; $c459
|
||||
ld hl, Coord
|
||||
ld de, SaveScreenInfoText
|
||||
call PlaceString
|
||||
FuncCoord 12, 9 ; $c460
|
||||
ld hl, Coord
|
||||
ld de, W_PLAYERNAME ; $d158
|
||||
call PlaceString
|
||||
FuncCoord 17, 11 ; $c48d
|
||||
ld hl, Coord
|
||||
call Func_5e2f
|
||||
FuncCoord 16, 13 ; $c4b4
|
||||
ld hl, Coord
|
||||
call Func_5e42
|
||||
FuncCoord 13, 15 ; $c4d9
|
||||
ld hl, Coord
|
||||
call Func_5e55
|
||||
ld a, $1
|
||||
ld [H_AUTOBGTRANSFERENABLED], a ; $ffba
|
||||
ld c, $1e
|
||||
jp DelayFrames
|
||||
|
||||
PrintSaveScreenText: ; 5def (1:5def)
|
||||
xor a
|
||||
ld [H_AUTOBGTRANSFERENABLED], a
|
||||
ld hl, $c3a4
|
||||
ld b, $8
|
||||
ld c, $e
|
||||
call TextBoxBorder
|
||||
call LoadTextBoxTilePatterns
|
||||
call UpdateSprites
|
||||
ld hl, $c3cd
|
||||
ld de, SaveScreenInfoText
|
||||
call PlaceString
|
||||
ld hl, $c3d4
|
||||
ld de, W_PLAYERNAME
|
||||
call PlaceString
|
||||
ld hl, $c401
|
||||
call Func_5e2f
|
||||
ld hl, $c428
|
||||
call Func_5e42
|
||||
ld hl, $c44d
|
||||
call Func_5e55
|
||||
ld a, $1
|
||||
ld [H_AUTOBGTRANSFERENABLED], a
|
||||
ld c, $1e
|
||||
jp DelayFrames
|
||||
|
||||
Func_5e2f: ; 5e2f (1:5e2f)
|
||||
push hl
|
||||
ld hl, W_OBTAINEDBADGES
|
||||
ld b, $1
|
||||
call CountSetBits
|
||||
pop hl
|
||||
ld de, $d11e
|
||||
ld bc, $102
|
||||
jp PrintNumber
|
||||
|
||||
Func_5e42: ; 5e42 (1:5e42)
|
||||
push hl
|
||||
ld hl, wPokedexOwned ; $d2f7
|
||||
ld b, wPokedexOwnedEnd - wPokedexOwned
|
||||
call CountSetBits
|
||||
pop hl
|
||||
ld de, $d11e
|
||||
ld bc, $103
|
||||
jp PrintNumber
|
||||
|
||||
Func_5e55: ; 5e55 (1:5e55)
|
||||
ld de, $da41
|
||||
ld bc, $103
|
||||
call PrintNumber
|
||||
ld [hl], $6d
|
||||
inc hl
|
||||
ld de, $da43
|
||||
ld bc, $8102
|
||||
jp PrintNumber
|
||||
|
||||
SaveScreenInfoText: ; 5e6a (1:5e6a)
|
||||
db "PLAYER"
|
||||
next "BADGES "
|
||||
next "#DEX "
|
||||
next "TIME@"
|
||||
|
||||
DisplayOptionMenu: ; 5e8a (1:5e8a)
|
||||
FuncCoord 0,0
|
||||
ld hl,Coord
|
||||
ld b,3
|
||||
ld c,18
|
||||
call TextBoxBorder
|
||||
FuncCoord 0,5
|
||||
ld hl,Coord
|
||||
ld b,3
|
||||
ld c,18
|
||||
call TextBoxBorder
|
||||
FuncCoord 0,10
|
||||
ld hl,Coord
|
||||
ld b,3
|
||||
ld c,18
|
||||
call TextBoxBorder
|
||||
FuncCoord 1,1
|
||||
ld hl,Coord
|
||||
ld de,TextSpeedOptionText
|
||||
call PlaceString
|
||||
FuncCoord 1,6
|
||||
ld hl,Coord
|
||||
ld de,BattleAnimationOptionText
|
||||
call PlaceString
|
||||
FuncCoord 1,11
|
||||
ld hl,Coord
|
||||
ld de,BattleStyleOptionText
|
||||
call PlaceString
|
||||
FuncCoord 2,16
|
||||
ld hl,Coord
|
||||
ld de,OptionMenuCancelText
|
||||
call PlaceString
|
||||
xor a
|
||||
ld [wCurrentMenuItem],a
|
||||
ld [wLastMenuItem],a
|
||||
inc a
|
||||
ld [$d358],a
|
||||
ld [$cd40],a
|
||||
ld a,3 ; text speed cursor Y coordinate
|
||||
ld [wTopMenuItemY],a
|
||||
call SetCursorPositionsFromOptions
|
||||
ld a,[$cd3d] ; text speed cursor X coordinate
|
||||
ld [wTopMenuItemX],a
|
||||
ld a,$01
|
||||
ld [H_AUTOBGTRANSFERENABLED],a ; enable auto background transfer
|
||||
call Delay3
|
||||
.loop
|
||||
call PlaceMenuCursor
|
||||
call SetOptionsFromCursorPositions
|
||||
.getJoypadStateLoop
|
||||
call GetJoypadStateLowSensitivity
|
||||
ld a,[$ffb5]
|
||||
ld b,a
|
||||
and a,%11111011 ; any key besides select pressed?
|
||||
jr z,.getJoypadStateLoop
|
||||
bit 1,b ; B button pressed?
|
||||
jr nz,.exitMenu
|
||||
bit 3,b ; Start button pressed?
|
||||
jr nz,.exitMenu
|
||||
bit 0,b ; A button pressed?
|
||||
jr z,.checkDirectionKeys
|
||||
ld a,[wTopMenuItemY]
|
||||
cp a,16 ; is the cursor on Cancel?
|
||||
jr nz,.loop
|
||||
.exitMenu
|
||||
ld a,(SFX_02_40 - SFX_Headers_02) / 3
|
||||
call PlaySound ; play sound
|
||||
ret
|
||||
.eraseOldMenuCursor
|
||||
ld [wTopMenuItemX],a
|
||||
call EraseMenuCursor
|
||||
jp .loop
|
||||
.checkDirectionKeys
|
||||
ld a,[wTopMenuItemY]
|
||||
bit 7,b ; Down pressed?
|
||||
jr nz,.downPressed
|
||||
bit 6,b ; Up pressed?
|
||||
jr nz,.upPressed
|
||||
cp a,8 ; cursor in Battle Animation section?
|
||||
jr z,.cursorInBattleAnimation
|
||||
cp a,13 ; cursor in Battle Style section?
|
||||
jr z,.cursorInBattleStyle
|
||||
cp a,16 ; cursor on Cancel?
|
||||
jr z,.loop
|
||||
.cursorInTextSpeed
|
||||
bit 5,b ; Left pressed?
|
||||
jp nz,.pressedLeftInTextSpeed
|
||||
jp .pressedRightInTextSpeed
|
||||
.downPressed
|
||||
cp a,16
|
||||
ld b,-13
|
||||
ld hl,$cd3d
|
||||
jr z,.updateMenuVariables
|
||||
ld b,5
|
||||
cp a,3
|
||||
inc hl
|
||||
jr z,.updateMenuVariables
|
||||
cp a,8
|
||||
inc hl
|
||||
jr z,.updateMenuVariables
|
||||
ld b,3
|
||||
inc hl
|
||||
jr .updateMenuVariables
|
||||
.upPressed
|
||||
cp a,8
|
||||
ld b,-5
|
||||
ld hl,$cd3d
|
||||
jr z,.updateMenuVariables
|
||||
cp a,13
|
||||
inc hl
|
||||
jr z,.updateMenuVariables
|
||||
cp a,16
|
||||
ld b,-3
|
||||
inc hl
|
||||
jr z,.updateMenuVariables
|
||||
ld b,13
|
||||
inc hl
|
||||
.updateMenuVariables
|
||||
add b
|
||||
ld [wTopMenuItemY],a
|
||||
ld a,[hl]
|
||||
ld [wTopMenuItemX],a
|
||||
call PlaceUnfilledArrowMenuCursor
|
||||
jp .loop
|
||||
.cursorInBattleAnimation
|
||||
ld a,[$cd3e] ; battle animation cursor X coordinate
|
||||
xor a,$0b ; toggle between 1 and 10
|
||||
ld [$cd3e],a
|
||||
jp .eraseOldMenuCursor
|
||||
.cursorInBattleStyle
|
||||
ld a,[$cd3f] ; battle style cursor X coordinate
|
||||
xor a,$0b ; toggle between 1 and 10
|
||||
ld [$cd3f],a
|
||||
jp .eraseOldMenuCursor
|
||||
.pressedLeftInTextSpeed
|
||||
ld a,[$cd3d] ; text speed cursor X coordinate
|
||||
cp a,1
|
||||
jr z,.updateTextSpeedXCoord
|
||||
cp a,7
|
||||
jr nz,.fromSlowToMedium
|
||||
sub a,6
|
||||
jr .updateTextSpeedXCoord
|
||||
.fromSlowToMedium
|
||||
sub a,7
|
||||
jr .updateTextSpeedXCoord
|
||||
.pressedRightInTextSpeed
|
||||
ld a,[$cd3d] ; text speed cursor X coordinate
|
||||
cp a,14
|
||||
jr z,.updateTextSpeedXCoord
|
||||
cp a,7
|
||||
jr nz,.fromFastToMedium
|
||||
add a,7
|
||||
jr .updateTextSpeedXCoord
|
||||
.fromFastToMedium
|
||||
add a,6
|
||||
.updateTextSpeedXCoord
|
||||
ld [$cd3d],a ; text speed cursor X coordinate
|
||||
jp .eraseOldMenuCursor
|
||||
|
||||
TextSpeedOptionText: ; 5fc0 (1:5fc0)
|
||||
db "TEXT SPEED"
|
||||
next " FAST MEDIUM SLOW@"
|
||||
|
||||
BattleAnimationOptionText: ; 5fde (1:5fde)
|
||||
db "BATTLE ANIMATION"
|
||||
next " ON OFF@"
|
||||
|
||||
BattleStyleOptionText: ; 5ffd (1:5ffd)
|
||||
db "BATTLE STYLE"
|
||||
next " SHIFT SET@"
|
||||
|
||||
OptionMenuCancelText: ; 6018 (1:6018)
|
||||
db "CANCEL@"
|
||||
|
||||
; sets the options variable according to the current placement of the menu cursors in the options menu
|
||||
SetOptionsFromCursorPositions: ; 601f (1:601f)
|
||||
ld hl,TextSpeedOptionData
|
||||
ld a,[$cd3d] ; text speed cursor X coordinate
|
||||
ld c,a
|
||||
.loop
|
||||
ld a,[hli]
|
||||
cp c
|
||||
jr z,.textSpeedMatchFound
|
||||
inc hl
|
||||
jr .loop
|
||||
.textSpeedMatchFound
|
||||
ld a,[hl]
|
||||
ld d,a
|
||||
ld a,[$cd3e] ; battle animation cursor X coordinate
|
||||
dec a
|
||||
jr z,.battleAnimationOn
|
||||
.battleAnimationOff
|
||||
set 7,d
|
||||
jr .checkBattleStyle
|
||||
.battleAnimationOn
|
||||
res 7,d
|
||||
.checkBattleStyle
|
||||
ld a,[$cd3f] ; battle style cursor X coordinate
|
||||
dec a
|
||||
jr z,.battleStyleShift
|
||||
.battleStyleSet
|
||||
set 6,d
|
||||
jr .storeOptions
|
||||
.battleStyleShift
|
||||
res 6,d
|
||||
.storeOptions
|
||||
ld a,d
|
||||
ld [W_OPTIONS],a
|
||||
ret
|
||||
|
||||
; reads the options variable and places menu cursors in the correct positions within the options menu
|
||||
SetCursorPositionsFromOptions: ; 604c (1:604c)
|
||||
ld hl,TextSpeedOptionData + 1
|
||||
ld a,[W_OPTIONS]
|
||||
ld c,a
|
||||
and a,$3f
|
||||
push bc
|
||||
ld de,2
|
||||
call IsInArray
|
||||
pop bc
|
||||
dec hl
|
||||
ld a,[hl]
|
||||
ld [$cd3d],a ; text speed cursor X coordinate
|
||||
FuncCoord 0,3
|
||||
ld hl,Coord
|
||||
call .placeUnfilledRightArrow
|
||||
sla c
|
||||
ld a,1 ; On
|
||||
jr nc,.storeBattleAnimationCursorX
|
||||
ld a,10 ; Off
|
||||
.storeBattleAnimationCursorX
|
||||
ld [$cd3e],a ; battle animation cursor X coordinate
|
||||
FuncCoord 0,8
|
||||
ld hl,Coord
|
||||
call .placeUnfilledRightArrow
|
||||
sla c
|
||||
ld a,1
|
||||
jr nc,.storeBattleStyleCursorX
|
||||
ld a,10
|
||||
.storeBattleStyleCursorX
|
||||
ld [$cd3f],a ; battle style cursor X coordinate
|
||||
FuncCoord 0,13
|
||||
ld hl,Coord
|
||||
call .placeUnfilledRightArrow
|
||||
; cursor in front of Cancel
|
||||
FuncCoord 0,16
|
||||
ld hl,Coord
|
||||
ld a,1
|
||||
.placeUnfilledRightArrow
|
||||
ld e,a
|
||||
ld d,0
|
||||
add hl,de
|
||||
ld [hl],$ec ; unfilled right arrow menu cursor
|
||||
ret
|
||||
|
||||
; table that indicates how the 3 text speed options affect frame delays
|
||||
; Format:
|
||||
; 00: X coordinate of menu cursor
|
||||
; 01: delay after printing a letter (in frames)
|
||||
TextSpeedOptionData: ; 6096 (1:6096)
|
||||
db 14,5 ; Slow
|
||||
db 7,3 ; Medium
|
||||
db 1,1 ; Fast
|
||||
db 7 ; default X coordinate (Medium)
|
||||
db $ff ; terminator
|
||||
|
||||
Func_609e: ; 609e (1:609e)
|
||||
ld a, $a
|
||||
ld [$0], a
|
||||
ld a, $1
|
||||
ld [$6000], a
|
||||
ld [$4000], a
|
||||
ld b, $b
|
||||
ld hl, $a598
|
||||
.asm_60b0
|
||||
ld a, [hli]
|
||||
cp $50
|
||||
jr z, .asm_60c1
|
||||
dec b
|
||||
jr nz, .asm_60b0
|
||||
xor a
|
||||
ld [$0], a
|
||||
ld [$6000], a
|
||||
and a
|
||||
ret
|
||||
.asm_60c1
|
||||
xor a
|
||||
ld [$0], a
|
||||
ld [$6000], a
|
||||
scf
|
||||
ret
|
||||
Loading…
Add table
Add a link
Reference in a new issue