shithub: pokecrystal

ref: 3a2dbb5289e745dfb5f26844148c0981f14e8fcf
dir: /common/menu.asm/

View raw version
; 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