summaryrefslogtreecommitdiff
path: root/home/menu.asm
diff options
context:
space:
mode:
Diffstat (limited to 'home/menu.asm')
-rw-r--r--home/menu.asm603
1 files changed, 603 insertions, 0 deletions
diff --git a/home/menu.asm b/home/menu.asm
new file mode 100644
index 000000000..c761a927c
--- /dev/null
+++ b/home/menu.asm
@@ -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
+