ref: 2afb247caa266c27ffb0160da41ec84e77a46138
dir: /home/menu.asm/
; 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