diff options
Diffstat (limited to 'home/menu.asm')
-rw-r--r-- | home/menu.asm | 603 |
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 + |