split menu functions into engine/menu.asm

This commit is contained in:
yenatch 2013-09-03 18:43:15 -04:00
parent 23bb05851b
commit 340e31d839
2 changed files with 604 additions and 599 deletions

603
engine/menu.asm Normal file
View File

@ -0,0 +1,603 @@
; Functions used in displaying and handling menus.
LoadMenuDataHeader: ; 0x1d35
call Function1d3c
call Function1c00
ret
Function1d3c: ; 0x1d3c
ld de, $cf81
ld bc, $0010
call CopyBytes
ld a, [hROMBank]
ld [$cf8a], a
ret
; 0x1d4b
Function1d4b: ; 1d4b
ld [$cf88], a
ret
; 1d4f
Function1d4f: ; 1d4f
push hl
call Function1d58
pop hl
jp PrintText
; 1d57
Function1d57: ; 1d57
ret
; 1d58
Function1d58: ; 1d58
ld hl, MenuDataHeader_0x1d5f
call LoadMenuDataHeader
ret
; 1d5f
MenuDataHeader_0x1d5f: ; 1d5f
db $40 ; tile backup
db 12, 0 ; start coords
db 17, 19 ; end coords
dw VTiles0
db 0 ; default option
; 1d67
Function1d67: ; 1d67
call Function1d4f
call Function1c17
ret
; 1d6e
Function1d6e: ; 1d6e
ld hl, MenuDataHeader_0x1d75
call LoadMenuDataHeader
ret
; 1d75
MenuDataHeader_0x1d75: ; 1d75
db $40 ; tile backup
db 0, 0 ; start coords
db 17, 19 ; end coords
dw $0000
db 1 ; default option
; 1d7d
Function1d7d: ; 1d7d
call Function1c07
ret
; 1d81
Function1d81: ; 0x1d81
xor a
ld [hBGMapMode], a
call Function1cbb
call Function1ad2
call Function1c89
call Function321c
call Function1c66
ld a, [$cf91]
bit 7, a
jr z, .asm_1da7 ; 0x1d98 $d
call Function1c10
call Function1bc9
call Function1ff8
bit 1, a
jr z, .asm_1da9 ; 0x1da5 $2
.asm_1da7
scf
ret
.asm_1da9
and a
ret
; 0x1dab
Function1dab: ; 1dab
call LoadMenuDataHeader
call Function1d81
call Function1c17
ld a, [$cfa9]
ret
; 1db8
Function1db8: ; 0x1db8
push hl
push bc
push af
ld hl, $cf86
ld a, [hli]
ld h, [hl]
ld l, a
inc hl
inc hl
pop af
call GetNthString
ld d, h
ld e, l
call CopyName1
pop bc
pop hl
ret
; 0x1dcf
Function1dcf: ; 1dcf
ld bc, $0e07
Function1dd2: ; 1dd2
jr Function1dd9
Function1dd4: ; 1dd4
call LoadMenuDataHeader
jr Function1dfe
Function1dd9: ; 1dd9
push bc
ld hl, MenuDataHeader_0x1e1d
call Function1d3c
pop bc
ld a, b
cp $e
jr nz, .asm_1de9
ld a, $e
ld b, a
.asm_1de9
ld a, b
ld [$cf83], a
add $5
ld [$cf85], a
ld a, c
ld [$cf82], a
add $4
ld [$cf84], a
call Function1c00
Function1dfe: ; 1dfe
call Function1d81
push af
ld c, $f
call DelayFrames
call Function1c17
pop af
jr c, .asm_1e16
ld a, [$cfa9]
cp $2
jr z, .asm_1e16
and a
ret
.asm_1e16
ld a, $2
ld [$cfa9], a
scf
ret
; 1e1d
MenuDataHeader_0x1e1d: ; 1e1d
db $40 ; tile backup
db 5, 10 ; start coords
db 9, 15 ; end coords
dw MenuData2_0x1e25
db 1 ; default option
; 1e25
MenuData2_0x1e25: ; 1e25
db $c0 ; flags
db 2
db "YES@"
db "NO@"
; 1e2e
Function1e2e: ; 1e2e
call Function1e35
call Function1c00
ret
; 1e35
Function1e35: ; 1e35
push de
call Function1d3c
pop de
ld a, [$cf83]
ld h, a
ld a, [$cf85]
sub h
ld h, a
ld a, d
ld [$cf83], a
add h
ld [$cf85], a
ld a, [$cf82]
ld l, a
ld a, [$cf84]
sub l
ld l, a
ld a, e
ld [$cf82], a
add l
ld [$cf84], a
ret
; 1e5d
Function1e5d: ; 1e5d
call MenuFunc_1e7f
call MenuWriteText
call Function1eff
call Function1f23
call Function1bdd
call Function1ff8
ret
; 1e70
SetUpMenu: ; 1e70
call MenuFunc_1e7f ; ???
call MenuWriteText
call Function1eff ; set up selection pointer
ld hl, $cfa5
set 7, [hl]
ret
MenuFunc_1e7f: ; 0x1e7f
call Function1c66
call Function1ebd
call Function1ea6
call Function1cbb
ret
MenuWriteText: ; 0x1e8c
xor a
ld [hBGMapMode], a
call Function1ebd ; sort out the text
call Function1eda ; actually write it
call Function2e31
ld a, [hOAMUpdate]
push af
ld a, $1
ld [hOAMUpdate], a
call Function321c
pop af
ld [hOAMUpdate], a
ret
; 0x1ea6
Function1ea6: ; 1ea6
ld a, [$cf83]
ld c, a
ld a, [$cf85]
sub c
ld c, a
ld a, [$cf92]
add a
inc a
ld b, a
ld a, [$cf82]
add b
ld [$cf84], a
ret
; 1ebd
Function1ebd: ; 1ebd
ld hl, $cf93
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [$cf76]
and a
jr z, .asm_1ed3
ld b, a
ld c, $ff
.asm_1ecc
ld a, [hli]
cp c
jr nz, .asm_1ecc
dec b
jr nz, .asm_1ecc
.asm_1ed3
ld d, h
ld e, l
ld a, [hl]
ld [$cf92], a
ret
; 1eda
Function1eda: ; 1eda
call Function1cfd
ld bc, $002a
add hl, bc
.asm_1ee1
inc de
ld a, [de]
cp $ff
ret z
ld [MenuSelection], a
push de
push hl
ld d, h
ld e, l
ld hl, $cf95
call Function1efb
pop hl
ld de, $0028
add hl, de
pop de
jr .asm_1ee1
; 1efb
Function1efb: ; 1efb
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
; 1eff
Function1eff: ; 1eff
call Function1c10
ld hl, $cfa8
ld a, [$cf91]
bit 3, a
jr z, .asm_1f0e
set 3, [hl]
.asm_1f0e
ld a, [$cf91]
bit 2, a
jr z, .asm_1f19
set 5, [hl]
set 4, [hl]
.asm_1f19
ret
; 1f1a
Function1f1a: ; 1f1a
call Function1bd3
ld hl, $cfa8
and [hl]
jr Function1f2a
; 1f23
Function1f23: ; 1f23
xor a
ld [$cf73], a
call Function1bc9
; 1f2a
Function1f2a: ; 1f2a
bit 0, a
jr nz, .asm_1f52
bit 1, a
jr nz, .asm_1f6d
bit 3, a
jr nz, .asm_1f6d
bit 4, a
jr nz, .asm_1f44
bit 5, a
jr nz, .asm_1f4b
xor a
ld [$cf73], a
jr .asm_1f57
.asm_1f44
ld a, $10
ld [$cf73], a
jr .asm_1f57
.asm_1f4b
ld a, $20
ld [$cf73], a
jr .asm_1f57
.asm_1f52
ld a, $1
ld [$cf73], a
.asm_1f57
call Function1ebd
ld a, [$cfa9]
ld l, a
ld h, $0
add hl, de
ld a, [hl]
ld [MenuSelection], a
ld a, [$cfa9]
ld [$cf88], a
and a
ret
.asm_1f6d
ld a, $2
ld [$cf73], a
ld a, $ff
ld [MenuSelection], a
scf
ret
; 1f79
Function1f79: ; 1f79
push de
ld hl, $cf97
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [MenuSelection]
call GetNthString
ld d, h
ld e, l
pop hl
call PlaceString
ret
; 1f8d
Function1f8d: ; 1f8d
push de
ld a, [MenuSelection]
call Function1fb1
inc hl
inc hl
ld a, [hli]
ld d, [hl]
ld e, a
pop hl
call PlaceString
ret
; 1f9e
Function1f9e: ; 1f9e
call Function1fb1
inc hl
inc hl
ld a, [hli]
ld d, [hl]
ld e, a
ret
; 1fa7
Function1fa7: ; 1fa7
ld a, [MenuSelection]
call Function1fb1
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
; 1fb1
Function1fb1: ; 1fb1
ld e, a
ld d, $0
ld hl, $cf97
ld a, [hli]
ld h, [hl]
ld l, a
add hl, de
add hl, de
add hl, de
add hl, de
ret
; 1fbf
Function1fbf: ; 1fbf
ld hl, $cf71
call Function1ff0
ld hl, $cf81
call Function1ff0
ld hl, $cf91
call Function1ff0
ld hl, $cfa1
call Function1ff0
ld a, [rSVBK]
push af
ld a, $7
ld [rSVBK], a
xor a
ld hl, $dfff
ld [hld], a
ld [hld], a
ld a, l
ld [$cf71], a
ld a, h
ld [$cf72], a
pop af
ld [rSVBK], a
ret
; 1ff0
Function1ff0: ; 1ff0
ld bc, $0010
xor a
call ByteFill
ret
; 1ff8
Function1ff8: ; 1ff8
push af
and $3
jr z, .asm_2007
ld hl, $cf81
bit 3, [hl]
jr nz, .asm_2007
call PlayClickSFX
.asm_2007
pop af
ret
; 2009
PlayClickSFX: ; 2009
push de
ld de, SFX_READ_TEXT_2
call StartSFX
pop de
ret
; 0x2012
Function2012: ; 2012
call Function1d4f
call Functiona46
call Function1c07
ret
; 201c
Function201c: ; 201c
ld [hBuffer], a
ld a, [hROMBank]
push af
ld a, [hBuffer]
rst Bankswitch
call PlaceString
pop af
rst Bankswitch
ret
; 202a
Function202a: ; 202a
ld a, [hROMBank]
ld [$cf94], a
ld a, $9
ld hl, $400e
rst FarCall
ld a, [$cf88]
ret
; 2039
Function2039: ; 2039
ld a, [hROMBank]
ld [$cf94], a
ld a, $9
ld hl, $4022
rst FarCall
ld a, [$cf88]
ret
; 2048
Function2048: ; 2048
ld a, [hROMBank]
ld [$cf94], a
ld a, $9
ld hl, $403c
rst FarCall
ld a, [$cf88]
ret
; 2057
Function2057: ; 2057
ld a, [hROMBank]
push af
ld a, $21
rst Bankswitch
call $42db
pop af
rst Bankswitch
ret
; 2063

600
main.asm
View File

@ -473,605 +473,7 @@ Function1d19: ; 1d19
; 1d35
LoadMenuDataHeader: ; 0x1d35
call Function1d3c
call Function1c00
ret
Function1d3c: ; 0x1d3c
ld de, $cf81
ld bc, $0010
call CopyBytes
ld a, [hROMBank]
ld [$cf8a], a
ret
; 0x1d4b
Function1d4b: ; 1d4b
ld [$cf88], a
ret
; 1d4f
Function1d4f: ; 1d4f
push hl
call Function1d58
pop hl
jp PrintText
; 1d57
Function1d57: ; 1d57
ret
; 1d58
Function1d58: ; 1d58
ld hl, MenuDataHeader_0x1d5f
call LoadMenuDataHeader
ret
; 1d5f
MenuDataHeader_0x1d5f: ; 1d5f
db $40 ; tile backup
db 12, 0 ; start coords
db 17, 19 ; end coords
dw VTiles0
db 0 ; default option
; 1d67
Function1d67: ; 1d67
call Function1d4f
call Function1c17
ret
; 1d6e
Function1d6e: ; 1d6e
ld hl, MenuDataHeader_0x1d75
call LoadMenuDataHeader
ret
; 1d75
MenuDataHeader_0x1d75: ; 1d75
db $40 ; tile backup
db 0, 0 ; start coords
db 17, 19 ; end coords
dw $0000
db 1 ; default option
; 1d7d
Function1d7d: ; 1d7d
call Function1c07
ret
; 1d81
Function1d81: ; 0x1d81
xor a
ld [hBGMapMode], a
call Function1cbb
call Function1ad2
call Function1c89
call Function321c
call Function1c66
ld a, [$cf91]
bit 7, a
jr z, .asm_1da7 ; 0x1d98 $d
call Function1c10
call Function1bc9
call Function1ff8
bit 1, a
jr z, .asm_1da9 ; 0x1da5 $2
.asm_1da7
scf
ret
.asm_1da9
and a
ret
; 0x1dab
Function1dab: ; 1dab
call LoadMenuDataHeader
call Function1d81
call Function1c17
ld a, [$cfa9]
ret
; 1db8
Function1db8: ; 0x1db8
push hl
push bc
push af
ld hl, $cf86
ld a, [hli]
ld h, [hl]
ld l, a
inc hl
inc hl
pop af
call GetNthString
ld d, h
ld e, l
call CopyName1
pop bc
pop hl
ret
; 0x1dcf
Function1dcf: ; 1dcf
ld bc, $0e07
Function1dd2: ; 1dd2
jr Function1dd9
Function1dd4: ; 1dd4
call LoadMenuDataHeader
jr Function1dfe
Function1dd9: ; 1dd9
push bc
ld hl, MenuDataHeader_0x1e1d
call Function1d3c
pop bc
ld a, b
cp $e
jr nz, .asm_1de9
ld a, $e
ld b, a
.asm_1de9
ld a, b
ld [$cf83], a
add $5
ld [$cf85], a
ld a, c
ld [$cf82], a
add $4
ld [$cf84], a
call Function1c00
Function1dfe: ; 1dfe
call Function1d81
push af
ld c, $f
call DelayFrames
call Function1c17
pop af
jr c, .asm_1e16
ld a, [$cfa9]
cp $2
jr z, .asm_1e16
and a
ret
.asm_1e16
ld a, $2
ld [$cfa9], a
scf
ret
; 1e1d
MenuDataHeader_0x1e1d: ; 1e1d
db $40 ; tile backup
db 5, 10 ; start coords
db 9, 15 ; end coords
dw MenuData2_0x1e25
db 1 ; default option
; 1e25
MenuData2_0x1e25: ; 1e25
db $c0 ; flags
db 2
db "YES@"
db "NO@"
; 1e2e
Function1e2e: ; 1e2e
call Function1e35
call Function1c00
ret
; 1e35
Function1e35: ; 1e35
push de
call Function1d3c
pop de
ld a, [$cf83]
ld h, a
ld a, [$cf85]
sub h
ld h, a
ld a, d
ld [$cf83], a
add h
ld [$cf85], a
ld a, [$cf82]
ld l, a
ld a, [$cf84]
sub l
ld l, a
ld a, e
ld [$cf82], a
add l
ld [$cf84], a
ret
; 1e5d
Function1e5d: ; 1e5d
call MenuFunc_1e7f
call MenuWriteText
call Function1eff
call Function1f23
call Function1bdd
call Function1ff8
ret
; 1e70
SetUpMenu: ; 1e70
call MenuFunc_1e7f ; ???
call MenuWriteText
call Function1eff ; set up selection pointer
ld hl, $cfa5
set 7, [hl]
ret
MenuFunc_1e7f: ; 0x1e7f
call Function1c66
call Function1ebd
call Function1ea6
call Function1cbb
ret
MenuWriteText: ; 0x1e8c
xor a
ld [hBGMapMode], a
call Function1ebd ; sort out the text
call Function1eda ; actually write it
call Function2e31
ld a, [hOAMUpdate]
push af
ld a, $1
ld [hOAMUpdate], a
call Function321c
pop af
ld [hOAMUpdate], a
ret
; 0x1ea6
Function1ea6: ; 1ea6
ld a, [$cf83]
ld c, a
ld a, [$cf85]
sub c
ld c, a
ld a, [$cf92]
add a
inc a
ld b, a
ld a, [$cf82]
add b
ld [$cf84], a
ret
; 1ebd
Function1ebd: ; 1ebd
ld hl, $cf93
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [$cf76]
and a
jr z, .asm_1ed3
ld b, a
ld c, $ff
.asm_1ecc
ld a, [hli]
cp c
jr nz, .asm_1ecc
dec b
jr nz, .asm_1ecc
.asm_1ed3
ld d, h
ld e, l
ld a, [hl]
ld [$cf92], a
ret
; 1eda
Function1eda: ; 1eda
call Function1cfd
ld bc, $002a
add hl, bc
.asm_1ee1
inc de
ld a, [de]
cp $ff
ret z
ld [MenuSelection], a
push de
push hl
ld d, h
ld e, l
ld hl, $cf95
call Function1efb
pop hl
ld de, $0028
add hl, de
pop de
jr .asm_1ee1
; 1efb
Function1efb: ; 1efb
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
; 1eff
Function1eff: ; 1eff
call Function1c10
ld hl, $cfa8
ld a, [$cf91]
bit 3, a
jr z, .asm_1f0e
set 3, [hl]
.asm_1f0e
ld a, [$cf91]
bit 2, a
jr z, .asm_1f19
set 5, [hl]
set 4, [hl]
.asm_1f19
ret
; 1f1a
Function1f1a: ; 1f1a
call Function1bd3
ld hl, $cfa8
and [hl]
jr Function1f2a
; 1f23
Function1f23: ; 1f23
xor a
ld [$cf73], a
call Function1bc9
; 1f2a
Function1f2a: ; 1f2a
bit 0, a
jr nz, .asm_1f52
bit 1, a
jr nz, .asm_1f6d
bit 3, a
jr nz, .asm_1f6d
bit 4, a
jr nz, .asm_1f44
bit 5, a
jr nz, .asm_1f4b
xor a
ld [$cf73], a
jr .asm_1f57
.asm_1f44
ld a, $10
ld [$cf73], a
jr .asm_1f57
.asm_1f4b
ld a, $20
ld [$cf73], a
jr .asm_1f57
.asm_1f52
ld a, $1
ld [$cf73], a
.asm_1f57
call Function1ebd
ld a, [$cfa9]
ld l, a
ld h, $0
add hl, de
ld a, [hl]
ld [MenuSelection], a
ld a, [$cfa9]
ld [$cf88], a
and a
ret
.asm_1f6d
ld a, $2
ld [$cf73], a
ld a, $ff
ld [MenuSelection], a
scf
ret
; 1f79
Function1f79: ; 1f79
push de
ld hl, $cf97
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [MenuSelection]
call GetNthString
ld d, h
ld e, l
pop hl
call PlaceString
ret
; 1f8d
Function1f8d: ; 1f8d
push de
ld a, [MenuSelection]
call Function1fb1
inc hl
inc hl
ld a, [hli]
ld d, [hl]
ld e, a
pop hl
call PlaceString
ret
; 1f9e
Function1f9e: ; 1f9e
call Function1fb1
inc hl
inc hl
ld a, [hli]
ld d, [hl]
ld e, a
ret
; 1fa7
Function1fa7: ; 1fa7
ld a, [MenuSelection]
call Function1fb1
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
; 1fb1
Function1fb1: ; 1fb1
ld e, a
ld d, $0
ld hl, $cf97
ld a, [hli]
ld h, [hl]
ld l, a
add hl, de
add hl, de
add hl, de
add hl, de
ret
; 1fbf
Function1fbf: ; 1fbf
ld hl, $cf71
call Function1ff0
ld hl, $cf81
call Function1ff0
ld hl, $cf91
call Function1ff0
ld hl, $cfa1
call Function1ff0
ld a, [rSVBK]
push af
ld a, $7
ld [rSVBK], a
xor a
ld hl, $dfff
ld [hld], a
ld [hld], a
ld a, l
ld [$cf71], a
ld a, h
ld [$cf72], a
pop af
ld [rSVBK], a
ret
; 1ff0
Function1ff0: ; 1ff0
ld bc, $0010
xor a
call ByteFill
ret
; 1ff8
Function1ff8: ; 1ff8
push af
and $3
jr z, .asm_2007
ld hl, $cf81
bit 3, [hl]
jr nz, .asm_2007
call PlayClickSFX
.asm_2007
pop af
ret
; 2009
PlayClickSFX: ; 2009
push de
ld de, SFX_READ_TEXT_2
call StartSFX
pop de
ret
; 0x2012
Function2012: ; 2012
call Function1d4f
call Functiona46
call Function1c07
ret
; 201c
Function201c: ; 201c
ld [hBuffer], a
ld a, [hROMBank]
push af
ld a, [hBuffer]
rst Bankswitch
call PlaceString
pop af
rst Bankswitch
ret
; 202a
Function202a: ; 202a
ld a, [hROMBank]
ld [$cf94], a
ld a, $9
ld hl, $400e
rst FarCall
ld a, [$cf88]
ret
; 2039
Function2039: ; 2039
ld a, [hROMBank]
ld [$cf94], a
ld a, $9
ld hl, $4022
rst FarCall
ld a, [$cf88]
ret
; 2048
Function2048: ; 2048
ld a, [hROMBank]
ld [$cf94], a
ld a, $9
ld hl, $403c
rst FarCall
ld a, [$cf88]
ret
; 2057
Function2057: ; 2057
ld a, [hROMBank]
push af
ld a, $21
rst Bankswitch
call $42db
pop af
rst Bankswitch
ret
; 2063
INCLUDE "engine/menu.asm"
AskSerial: ; 2063