shithub: pokecrystal

Download patch

ref: 266e401b7d0f382da92ac8cbc97030ec4dc9a07c
parent: 67dd49967d6b8f7e7c5abc333f3da3f8f9acf0ce
author: yenatch <[email protected]>
date: Fri Sep 6 14:31:40 EDT 2013

the bomb 2

remaining predef asm

--- a/main.asm
+++ b/main.asm
@@ -15250,8 +15250,61 @@
 	ret
 ; 8b2f
 
-INCBIN "baserom.gbc", $8b2f, $8cb4 - $8b2f
+INCBIN "baserom.gbc", $8b2f, $8c43 - $8b2f
 
+Function8c43: ; 8c43
+	ld a, [$d10a]
+	and a
+	jr z, .asm_8c52
+	cp $1
+	jr z, .asm_8c57
+	cp $2
+	jr z, .asm_8c70
+	ret
+
+.asm_8c52
+	ld de, $d092
+	jr .asm_8c5a
+
+.asm_8c57
+	ld de, $d09a
+
+.asm_8c5a
+	ld l, c
+	ld h, $0
+	add hl, hl
+	add hl, hl
+	ld bc, $68be
+	add hl, bc
+	ld bc, $0004
+	ld a, $5
+	call Function306b
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	ret
+
+.asm_8c70
+	ld e, c
+	inc e
+	ld hl, $cdf8
+	ld bc, $0028
+	ld a, [CurPartyMon]
+.asm_8c7b
+	and a
+	jr z, .asm_8c82
+	add hl, bc
+	dec a
+	jr .asm_8c7b
+
+.asm_8c82
+	ld bc, $0208
+	ld a, e
+	call Function9663
+	ret
+; 8c8a
+
+INCBIN "baserom.gbc", $8c8a, $8cb4 - $8c8a
+
 Function8cb4: ; 8cb4
 	ld l, e
 	ld h, $0
@@ -15881,9 +15934,39 @@
 	ret
 ; 9853
 
-INCBIN "baserom.gbc", $9853, $9890 - $9853
+Function9853: ; 9853
+	call Function8d55
+	ret nz
+	di
+	ld a, [$cfbe]
+	push af
+	set 7, a
+	ld [$cfbe], a
+	xor a
+	ld [rJOYP], a
+	ld [hSGB], a
+	call Function994a
+	jr nc, .asm_988a
+	ld a, $1
+	ld [hSGB], a
+	call Function98eb
+	call Function99b4
+	call Function9a7a
+	call Function993f
+	call Function992c
+	call Function9a7a
+	call Function993f
+	ld hl, $5d66
+	call Function981a
 
+.asm_988a
+	pop af
+	ld [$cfbe], a
+	ei
+	ret
+; 9890
 
+
 Function9890: ; 9890
 	call Function8d55
 	ret z
@@ -15940,8 +16023,182 @@
 	ret
 ; 98eb
 
-INCBIN "baserom.gbc", $98eb, $9a52 - $98eb
+Function98eb: ; 98eb
+	ld hl, $58ff
+	ld c, $9
+.asm_98f0
+	push bc
+	ld a, [hli]
+	push hl
+	ld h, [hl]
+	ld l, a
+	call Function981a
+	pop hl
+	inc hl
+	pop bc
+	dec c
+	jr nz, .asm_98f0
+	ret
+; 98ff
 
+INCBIN "baserom.gbc", $98ff, $992c - $98ff
+
+Function992c: ; 992c
+	call Function9938
+	push de
+	call Function9a24
+	pop hl
+	call Function99d8
+	ret
+; 9938
+
+Function9938: ; 9938
+	ld hl, $651e
+	ld de, $606e
+	ret
+; 993f
+
+Function993f: ; 993f
+	ld hl, VTiles0
+	ld bc, $2000
+	xor a
+	call ByteFill
+	ret
+; 994a
+
+Function994a: ; 994a
+	ld hl, $5d26
+	call Function981a
+	call Function9a7a
+	ld a, [rJOYP]
+	and $3
+	cp $3
+	jr nz, .asm_99a6
+	ld a, $20
+	ld [rJOYP], a
+	ld a, [rJOYP]
+	ld a, [rJOYP]
+	call Function9a7a
+	call Function9a7a
+	ld a, $30
+	ld [rJOYP], a
+	call Function9a7a
+	call Function9a7a
+	ld a, $10
+	ld [rJOYP], a
+	ld a, [rJOYP]
+	ld a, [rJOYP]
+	ld a, [rJOYP]
+	ld a, [rJOYP]
+	ld a, [rJOYP]
+	ld a, [rJOYP]
+	call Function9a7a
+	call Function9a7a
+	ld a, $30
+	ld [rJOYP], a
+	ld a, [rJOYP]
+	ld a, [rJOYP]
+	ld a, [rJOYP]
+	call Function9a7a
+	call Function9a7a
+	ld a, [rJOYP]
+	and $3
+	cp $3
+	jr nz, .asm_99a6
+	call Function99ab
+	and a
+	ret
+
+.asm_99a6
+	call Function99ab
+	scf
+	ret
+; 99ab
+
+Function99ab: ; 99ab
+	ld hl, $5d16
+	call Function981a
+	jp Function9a7a
+; 99b4
+
+Function99b4: ; 99b4
+	call DisableLCD
+	ld a, $e4
+	ld [rBGP], a
+	ld hl, $5df6
+	ld de, VTiles1
+	ld bc, $1000
+	call CopyData
+	call DrawDefaultTiles
+	ld a, $e3
+	ld [rLCDC], a
+	ld hl, $5d06
+	call Function981a
+	xor a
+	ld [rBGP], a
+	ret
+; 99d8
+
+Function99d8: ; 99d8
+	call DisableLCD
+	ld a, $e4
+	ld [rBGP], a
+	ld de, VTiles1
+	ld bc, $0140
+	call CopyData
+	ld b, $12
+.asm_99ea
+	push bc
+	ld bc, $000c
+	call CopyData
+	ld bc, $0028
+	call ClearBytes
+	ld bc, $000c
+	call CopyData
+	pop bc
+	dec b
+	jr nz, .asm_99ea
+	ld bc, $0140
+	call CopyData
+	ld bc, Start
+	call ClearBytes
+	ld bc, $0080
+	call CopyData
+	call DrawDefaultTiles
+	ld a, $e3
+	ld [rLCDC], a
+	ld hl, $5d46
+	call Function981a
+	xor a
+	ld [rBGP], a
+	ret
+; 9a24
+
+Function9a24: ; 9a24
+	call DisableLCD
+	ld a, $e4
+	ld [rBGP], a
+	ld de, VTiles1
+	ld b, $80
+.asm_9a30
+	push bc
+	ld bc, $0010
+	call CopyData
+	ld bc, $0010
+	call ClearBytes
+	pop bc
+	dec b
+	jr nz, .asm_9a30
+	call DrawDefaultTiles
+	ld a, $e3
+	ld [rLCDC], a
+	ld hl, $5d36
+	call Function981a
+	xor a
+	ld [rBGP], a
+	ret
+; 9a52
+
 CopyData: ; 0x9a52
 ; copy bc bytes of data from hl to de
 	ld a, [hli]
@@ -16951,9 +17208,64 @@
 	ret
 ; c699
 
-INCBIN "baserom.gbc", $c699, $c6ea - $c699
+Functionc699: ; c699
+	ld a, b
+	or c
+	jr z, .asm_c6dd
+	push hl
+	xor a
+	ld [hMultiplicand], a
+	ld a, b
+	ld [$ffb5], a
+	ld a, c
+	ld [$ffb6], a
+	ld a, $30
+	ld [hMultiplier], a
+	call Multiply
+	ld a, d
+	and a
+	jr z, .asm_c6cc
+	srl d
+	rr e
+	srl d
+	rr e
+	ld a, [$ffb5]
+	ld b, a
+	ld a, [$ffb6]
+	srl b
+	rr a
+	srl b
+	rr a
+	ld [$ffb6], a
+	ld a, b
+	ld [$ffb5], a
 
+.asm_c6cc
+	ld a, e
+	ld [hMultiplier], a
+	ld b, $4
+	call Divide
+	ld a, [$ffb6]
+	ld e, a
+	pop hl
+	and a
+	ret nz
+	ld e, $1
+	ret
 
+.asm_c6dd
+	ld e, $0
+	ret
+; c6e0
+
+Functionc6e0: ; c6e0
+	call WaitBGMap
+	call Functiond627
+	call WaitBGMap
+	ret
+; c6ea
+
+
 Functionc6ea: ; c6ea
 	xor a
 	ld hl, MagikarpLength
@@ -19022,9 +19334,442 @@
 	ret
 ; d497
 
-INCBIN "baserom.gbc", $d497, $d88c - $d497
+INCBIN "baserom.gbc", $d497, $d627 - $d497
 
+Functiond627: ; d627
+	call Functiond65f
+	jr c, .asm_d645
+	call Functiond670
+.asm_d62f
+	push bc
+	push hl
+	call Functiond6e2
+	pop hl
+	pop bc
+	push af
+	push bc
+	push hl
+	call Functiond730
+	call Functiond7c9
+	pop hl
+	pop bc
+	pop af
+	jr nc, .asm_d62f
+	ret
 
+.asm_d645
+	call Functiond670
+.asm_d648
+	push bc
+	push hl
+	call Functiond6f5
+	pop hl
+	pop bc
+	ret c
+	push af
+	push bc
+	push hl
+	call Functiond749
+	call Functiond7c9
+	pop hl
+	pop bc
+	pop af
+	jr nc, .asm_d648
+	ret
+; d65f
+
+Functiond65f: ; d65f
+	ld a, [Buffer2]
+	and a
+	jr nz, .asm_d66e
+	ld a, [Buffer1]
+	cp $30
+	jr nc, .asm_d66e
+	and a
+	ret
+
+.asm_d66e
+	scf
+	ret
+; d670
+
+Functiond670: ; d670
+	push hl
+	ld hl, Buffer1
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld b, a
+	pop hl
+	call Functionc699
+	ld a, e
+	ld [$d1f1], a
+	ld a, [$d1ee]
+	ld c, a
+	ld a, [$d1ef]
+	ld b, a
+	ld a, [Buffer1]
+	ld e, a
+	ld a, [Buffer2]
+	ld d, a
+	call Functionc699
+	ld a, e
+	ld [$d1f2], a
+	push hl
+	ld hl, $d1ec
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld b, a
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	pop hl
+	ld a, e
+	sub c
+	ld e, a
+	ld a, d
+	sbc b
+	ld d, a
+	jr c, .asm_d6c1
+	ld a, [$d1ec]
+	ld [$d1f5], a
+	ld a, [$d1ee]
+	ld [$d1f6], a
+	ld bc, $0001
+	jr .asm_d6d9
+
+.asm_d6c1
+	ld a, [$d1ec]
+	ld [$d1f6], a
+	ld a, [$d1ee]
+	ld [$d1f5], a
+	ld a, e
+	xor $ff
+	inc a
+	ld e, a
+	ld a, d
+	xor $ff
+	ld d, a
+	ld bc, rIE
+
+.asm_d6d9
+	ld a, d
+	ld [$d1f3], a
+	ld a, e
+	ld [$d1f4], a
+	ret
+; d6e2
+
+Functiond6e2: ; d6e2
+	ld hl, $d1f1
+	ld a, [$d1f2]
+	cp [hl]
+	jr nz, .asm_d6ed
+	scf
+	ret
+
+.asm_d6ed
+	ld a, c
+	add [hl]
+	ld [hl], a
+	call Functiond839
+	and a
+	ret
+; d6f5
+
+Functiond6f5: ; d6f5
+.asm_d6f5
+	ld hl, $d1ec
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld a, e
+	cp [hl]
+	jr nz, .asm_d707
+	inc hl
+	ld a, d
+	cp [hl]
+	jr nz, .asm_d707
+	scf
+	ret
+
+.asm_d707
+	ld l, e
+	ld h, d
+	add hl, bc
+	ld a, l
+	ld [$d1ec], a
+	ld a, h
+	ld [$d1ed], a
+	push hl
+	push de
+	push bc
+	ld hl, Buffer1
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld b, a
+	call Functionc699
+	pop bc
+	pop de
+	pop hl
+	ld a, e
+	ld hl, $d1f1
+	cp [hl]
+	jr z, .asm_d6f5
+	ld [hl], a
+	and a
+	ret
+; d730
+
+Functiond730: ; d730
+	call Functiond784
+	ld d, $6
+	ld a, [$d10a]
+	and $1
+	ld b, a
+	ld a, [$d1f1]
+	ld e, a
+	ld c, a
+	push de
+	call Functiond771
+	pop de
+	call Functiond7b4
+	ret
+; d749
+
+Functiond749: ; d749
+	call Functiond784
+	ld a, [$d1ec]
+	ld c, a
+	ld a, [$d1ed]
+	ld b, a
+	ld a, [Buffer1]
+	ld e, a
+	ld a, [Buffer2]
+	ld d, a
+	call Functionc699
+	ld c, e
+	ld d, $6
+	ld a, [$d10a]
+	and $1
+	ld b, a
+	push de
+	call Functiond771
+	pop de
+	call Functiond7b4
+	ret
+; d771
+
+Functiond771: ; d771
+	ld a, [$d10a]
+	cp $2
+	jr nz, .asm_d780
+	ld a, $28
+	add l
+	ld l, a
+	ld a, $0
+	adc h
+	ld h, a
+
+.asm_d780
+	call DrawHPBar
+	ret
+; d784
+
+Functiond784: ; d784
+	ld a, [$d10a]
+	and a
+	ret z
+	cp $1
+	jr z, .asm_d792
+	ld de, $0016
+	jr .asm_d795
+
+.asm_d792
+	ld de, $0015
+
+.asm_d795
+	push hl
+	add hl, de
+	ld a, $7f
+	ld [hli], a
+	ld [hli], a
+	ld [hld], a
+	dec hl
+	ld a, [$d1ec]
+	ld [$d087], a
+	ld a, [$d1ed]
+	ld [StringBuffer2], a
+	ld de, StringBuffer2
+	ld bc, $0203
+	call PrintNum
+	pop hl
+	ret
+; d7b4
+
+Functiond7b4: ; d7b4
+	ld a, [hCGB]
+	and a
+	ret z
+	ld hl, $d1f0
+	call SetHPPal
+	ld a, [$d1f0]
+	ld c, a
+	callba Function8c43
+	ret
+; d7c9
+
+Functiond7c9: ; d7c9
+	ld a, [hCGB]
+	and a
+	jr nz, .asm_d7d5
+	call DelayFrame
+	call DelayFrame
+	ret
+
+.asm_d7d5
+	ld a, [$d10a]
+	and a
+	jr z, .asm_d829
+	cp $1
+	jr z, .asm_d82d
+	ld a, [CurPartyMon]
+	cp $3
+	jr nc, .asm_d7ea
+	ld c, $0
+	jr .asm_d7ec
+
+.asm_d7ea
+	ld c, $1
+
+.asm_d7ec
+	push af
+	cp $2
+	jr z, .asm_d7ff
+	cp $5
+	jr z, .asm_d7ff
+	ld a, $2
+	ld [hBGMapMode], a
+	ld a, c
+	ld [hBGMapThird], a
+	call DelayFrame
+
+.asm_d7ff
+	ld a, $1
+	ld [hBGMapMode], a
+	ld a, c
+	ld [hBGMapThird], a
+	call DelayFrame
+	pop af
+	cp $2
+	jr z, .asm_d813
+	cp $5
+	jr z, .asm_d813
+	ret
+
+.asm_d813
+	inc c
+	ld a, $2
+	ld [hBGMapMode], a
+	ld a, c
+	ld [hBGMapThird], a
+	call DelayFrame
+	ld a, $1
+	ld [hBGMapMode], a
+	ld a, c
+	ld [hBGMapThird], a
+	call DelayFrame
+	ret
+
+.asm_d829
+	ld c, $0
+	jr .asm_d82f
+
+.asm_d82d
+	ld c, $1
+
+.asm_d82f
+	call DelayFrame
+	ld a, c
+	ld [hBGMapThird], a
+	call DelayFrame
+	ret
+; d839
+
+Functiond839: ; d839
+	ld a, [Buffer1]
+	ld c, a
+	ld b, $0
+	ld hl, $0000
+	ld a, [$d1f1]
+	cp $30
+	jr nc, .asm_d885
+	and a
+	jr z, .asm_d880
+	call AddNTimes
+	ld b, $0
+.asm_d851
+	ld a, l
+	sub $30
+	ld l, a
+	ld a, h
+	sbc $0
+	ld h, a
+	jr c, .asm_d85e
+	inc b
+	jr .asm_d851
+
+.asm_d85e
+	push bc
+	ld bc, $0080
+	add hl, bc
+	pop bc
+	ld a, l
+	sub $30
+	ld l, a
+	ld a, h
+	sbc $0
+	ld h, a
+	jr c, .asm_d86f
+	inc b
+
+.asm_d86f
+	ld a, [$d1f5]
+	cp b
+	jr nc, .asm_d87c
+	ld a, [$d1f6]
+	cp b
+	jr c, .asm_d87c
+	ld a, b
+
+.asm_d87c
+	ld [$d1ec], a
+	ret
+
+.asm_d880
+	xor a
+	ld [$d1ec], a
+	ret
+
+.asm_d885
+	ld a, [Buffer1]
+	ld [$d1ec], a
+	ret
+; d88c
+
+
 Functiond88c: ; d88c
 	ld de, PartyCount
 	ld a, [MonType]
@@ -19375,9 +20120,309 @@
 	ret
 ; da96
 
-INCBIN "baserom.gbc", $da96, $dcb6 - $da96
+Functionda96: ; da96
+	ld hl, PartyCount
+	ld a, [hl]
+	cp $6
+	scf
+	ret z
+	inc a
+	ld [hl], a
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [CurPartySpecies]
+	ld [hli], a
+	ld [hl], $ff
+	ld hl, PartyMon1Species
+	ld a, [PartyCount]
+	dec a
+	ld bc, $0030
+	call AddNTimes
+	ld e, l
+	ld d, h
+	ld hl, TempMonSpecies
+	call CopyBytes
+	ld hl, PartyMon1OT
+	ld a, [PartyCount]
+	dec a
+	call SkipNames
+	ld d, h
+	ld e, l
+	ld hl, OTPartyMon1OT
+	ld a, [CurPartyMon]
+	call SkipNames
+	ld bc, $000b
+	call CopyBytes
+	ld hl, PartyMon1Nickname
+	ld a, [PartyCount]
+	dec a
+	call SkipNames
+	ld d, h
+	ld e, l
+	ld hl, OTPartyMon1Nickname
+	ld a, [CurPartyMon]
+	call SkipNames
+	ld bc, $000b
+	call CopyBytes
+	ld a, [CurPartySpecies]
+	ld [$d265], a
+	cp $fd
+	jr z, .asm_db12
+	dec a
+	call SetSeenAndCaughtMon
+	ld hl, PartyMon1Happiness
+	ld a, [PartyCount]
+	dec a
+	ld bc, $0030
+	call AddNTimes
+	ld [hl], $46
 
+.asm_db12
+	ld a, [CurPartySpecies]
+	cp $c9
+	jr nz, .asm_db3d
+	ld hl, PartyMon1DVs
+	ld a, [PartyCount]
+	dec a
+	ld bc, $0030
+	call AddNTimes
+	ld a, $2d
+	call Predef
+	callab Functionfba18
+	ld a, [$def4]
+	and a
+	jr nz, .asm_db3d
+	ld a, [UnownLetter]
+	ld [$def4], a
 
+.asm_db3d
+	and a
+	ret
+; db3f
+
+Functiondb3f: ; db3f
+	ld a, $1
+	call GetSRAMBank
+	ld a, [$d10b]
+	and a
+	jr z, .asm_db60
+	cp $2
+	jr z, .asm_db60
+	cp $3
+	ld hl, BreedMon1Species
+	jr z, .asm_db9b
+	ld hl, BoxCount
+	ld a, [hl]
+	cp $14
+	jr nz, .asm_db69
+	jp Functiondcb1
+
+.asm_db60
+	ld hl, PartyCount
+	ld a, [hl]
+	cp $6
+	jp z, Functiondcb1
+
+.asm_db69
+	inc a
+	ld [hl], a
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [$d10b]
+	cp $2
+	ld a, [BreedMon1Species]
+	jr z, .asm_db7c
+	ld a, [CurPartySpecies]
+
+.asm_db7c
+	ld [hli], a
+	ld [hl], $ff
+	ld a, [$d10b]
+	dec a
+	ld hl, PartyMon1Species
+	ld bc, $0030
+	ld a, [PartyCount]
+	jr nz, .asm_db97
+	ld hl, BoxMon1Species
+	ld bc, $0020
+	ld a, [BoxCount]
+
+.asm_db97
+	dec a
+	call AddNTimes
+
+.asm_db9b
+	push hl
+	ld e, l
+	ld d, h
+	ld a, [$d10b]
+	and a
+	ld hl, BoxMon1Species
+	ld bc, $0020
+	jr z, .asm_dbb7
+	cp $2
+	ld hl, BreedMon1Species
+	jr z, .asm_dbbd
+	ld hl, PartyMon1Species
+	ld bc, $0030
+
+.asm_dbb7
+	ld a, [CurPartyMon]
+	call AddNTimes
+
+.asm_dbbd
+	ld bc, $0020
+	call CopyBytes
+	ld a, [$d10b]
+	cp $3
+	ld de, BreedMon1OT
+	jr z, .asm_dbe2
+	dec a
+	ld hl, PartyMon1OT
+	ld a, [PartyCount]
+	jr nz, .asm_dbdc
+	ld hl, BoxMon1OT
+	ld a, [BoxCount]
+
+.asm_dbdc
+	dec a
+	call SkipNames
+	ld d, h
+	ld e, l
+
+.asm_dbe2
+	ld hl, BoxMon1OT
+	ld a, [$d10b]
+	and a
+	jr z, .asm_dbf5
+	ld hl, BreedMon1OT
+	cp $2
+	jr z, .asm_dbfb
+	ld hl, PartyMon1OT
+
+.asm_dbf5
+	ld a, [CurPartyMon]
+	call SkipNames
+
+.asm_dbfb
+	ld bc, $000b
+	call CopyBytes
+	ld a, [$d10b]
+	cp $3
+	ld de, BreedMon1Nick
+	jr z, .asm_dc20
+	dec a
+	ld hl, PartyMon1Nickname
+	ld a, [PartyCount]
+	jr nz, .asm_dc1a
+	ld hl, BoxMon1Nickname
+	ld a, [BoxCount]
+
+.asm_dc1a
+	dec a
+	call SkipNames
+	ld d, h
+	ld e, l
+
+.asm_dc20
+	ld hl, BoxMon1Nickname
+	ld a, [$d10b]
+	and a
+	jr z, .asm_dc33
+	ld hl, BreedMon1Nick
+	cp $2
+	jr z, .asm_dc39
+	ld hl, PartyMon1Nickname
+
+.asm_dc33
+	ld a, [CurPartyMon]
+	call SkipNames
+
+.asm_dc39
+	ld bc, $000b
+	call CopyBytes
+	pop hl
+	ld a, [$d10b]
+	cp $1
+	jr z, .asm_dca4
+	cp $3
+	jp z, .asm_dcac
+	push hl
+	srl a
+	add $2
+	ld [MonType], a
+	ld a, $1f
+	call Predef
+	callab Function50e1b
+	ld a, d
+	ld [CurPartyLevel], a
+	pop hl
+	ld b, h
+	ld c, l
+	ld hl, $001f
+	add hl, bc
+	ld [hl], a
+	ld hl, $0024
+	add hl, bc
+	ld d, h
+	ld e, l
+	ld hl, $000a
+	add hl, bc
+	push bc
+	ld b, $1
+	call Functione167
+	pop bc
+	ld a, [$d10b]
+	and a
+	jr nz, .asm_dcac
+	ld hl, $0020
+	add hl, bc
+	xor a
+	ld [hl], a
+	ld hl, $0022
+	add hl, bc
+	ld d, h
+	ld e, l
+	ld a, [CurPartySpecies]
+	cp $fd
+	jr z, .asm_dc9e
+	inc hl
+	inc hl
+	ld a, [hli]
+	ld [de], a
+	ld a, [hl]
+	inc de
+	ld [de], a
+	jr .asm_dcac
+
+.asm_dc9e
+	xor a
+	ld [de], a
+	inc de
+	ld [de], a
+	jr .asm_dcac
+
+.asm_dca4
+	ld a, [BoxCount]
+	dec a
+	ld b, a
+	call Functiondcb6
+
+.asm_dcac
+	call CloseSRAM
+	and a
+	ret
+; dcb1
+
+Functiondcb1: ; dcb1
+	call CloseSRAM
+	scf
+	ret
+; dcb6
+
+
 Functiondcb6: ; dcb6
 
 	ld a, b
@@ -36204,8 +37249,280 @@
 	ret
 ; 28f09
 
-INCBIN "baserom.gbc", $28f09, $29bfb - $28f09
+INCBIN "baserom.gbc", $28f09, $28f63 - $28f09
 
+Function28f63: ; 28f63
+	xor a
+	ld [$cf66], a
+	ld hl, $c719
+	ld de, $c6e7
+	call Function297ff
+	ld hl, PlayerLightScreenCount
+	ld de, PlayerSDefLevel
+	call Function29814
+	ld de, .data_28f7e
+	jr .asm_28fa1
+
+.data_28f7e
+	db $1a
+	db $17
+	db $22
+	db $1f
+	db $2a
+	db $6
+	db $3
+	db $24
+	db $5
+	db $25
+	db $2
+	db $27
+	db $25
+	db $1d
+	db $2c
+	db $2f
+	db $1e
+	db $18
+	db $1f
+	db $1b
+	db $1
+	db $1c
+	db $22
+	db $27
+	db $23
+	db $3
+	db $25
+	db $28
+	db $25
+	db $1e
+	db $29
+	db $e
+	db $16
+	db $1f
+	db $2b
+
+.asm_28fa1
+	ld hl, BattleEnded
+	ld [hl], e
+	inc hl
+	ld [hl], d
+	ld a, [$ffde]
+	push af
+	xor a
+	ld [$ffde], a
+	ld hl, VramState
+	ld a, [hl]
+	push af
+	res 0, [hl]
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set 4, [hl]
+	call Function28fdb
+	ld a, [$cf66]
+	and a
+	jr nz, .asm_28fca
+	ld de, $0022
+	call StartMusic2
+
+.asm_28fca
+	call Function29082
+	jr nc, .asm_28fca
+	pop af
+	ld [Options], a
+	pop af
+	ld [VramState], a
+	pop af
+	ld [$ffde], a
+	ret
+; 28fdb
+
+Function28fdb: ; 28fdb
+	xor a
+	ld [$cf63], a
+	call WhiteBGMap
+	call ClearSprites
+	call ClearTileMap
+	call DisableLCD
+	call Functione58
+	callab Function8cf53
+	ld a, [hCGB]
+	and a
+	jr z, .asm_2900b
+	ld a, $1
+	ld [rVBK], a
+	ld hl, VTiles0
+	ld bc, $2000
+	xor a
+	call ByteFill
+	ld a, $0
+	ld [rVBK], a
+
+.asm_2900b
+	ld hl, VBGMap0
+	ld bc, $0800
+	ld a, $7f
+	call ByteFill
+	ld hl, $599b
+	ld de, $9310
+	call Decompress
+	ld hl, $591b
+	ld de, $8ed0
+	ld bc, $0010
+	ld a, $a
+	call FarCopyBytes
+	ld hl, $592b
+	ld de, $8ee0
+	ld bc, $0010
+	ld a, $a
+	call FarCopyBytes
+	xor a
+	ld [hSCX], a
+	ld [hSCY], a
+	ld a, $7
+	ld [hWX], a
+	ld a, $90
+	ld [hWY], a
+	callba Function4d7fd
+	call EnableLCD
+	call Function2982b
+	ld a, [PlayerSDefLevel]
+	ld hl, $c6fd
+	ld de, VTiles0
+	call Function29491
+	ld a, [PlayerLightScreenCount]
+	ld hl, $c72f
+	ld de, $8310
+	call Function29491
+	ld a, [PlayerSDefLevel]
+	ld de, PlayerAccLevel
+	call Function294a9
+	ld a, [PlayerLightScreenCount]
+	ld de, PlayerReflectCount
+	call Function294a9
+	call Function297ed
+	ret
+; 29082
+
+Function29082: ; 29082
+	ld a, [$cf63]
+	bit 7, a
+	jr nz, .asm_2909b
+	call Function290a0
+	callab Function8cf69
+	ld hl, $cf65
+	inc [hl]
+	call DelayFrame
+	and a
+	ret
+
+.asm_2909b
+	call Functione51
+	scf
+	ret
+; 290a0
+
+Function290a0: ; 290a0
+	ld a, [$cf63]
+	ld e, a
+	ld d, $0
+	ld hl, $50af
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+; 290af
+
+INCBIN "baserom.gbc", $290af, $29491 - $290af
+
+Function29491: ; 29491
+	push de
+	push af
+	ld a, $2d
+	call Predef
+	pop af
+	ld [CurPartySpecies], a
+	ld [CurSpecies], a
+	call GetBaseData
+	pop de
+	ld a, $3c
+	call Predef
+	ret
+; 294a9
+
+Function294a9: ; 294a9
+	push de
+	ld [$d265], a
+	call GetPokemonName
+	ld hl, StringBuffer1
+	pop de
+	ld bc, $000b
+	call CopyBytes
+	ret
+; 294bb
+
+INCBIN "baserom.gbc", $294bb, $297ed - $294bb
+
+Function297ed: ; 297ed
+	ld a, [hSGB]
+	and a
+	ld a, $e4
+	jr z, .asm_297f6
+	ld a, $f0
+
+.asm_297f6
+	call Functioncf8
+	ld a, $e4
+	call DmgToCgbBGPals
+	ret
+; 297ff
+
+Function297ff: ; 297ff
+	push de
+	ld de, $c736
+	ld bc, $000b
+	call CopyBytes
+	pop hl
+	ld de, $c741
+	ld bc, $000b
+	call CopyBytes
+	ret
+; 29814
+
+Function29814: ; 29814
+	ld a, [hl]
+	ld [$c74c], a
+	ld a, [de]
+	ld [$c74d], a
+	ret
+; 2981d
+
+INCBIN "baserom.gbc", $2981d, $2982b - $2981d
+
+Function2982b: ; 2982b
+	call DelayFrame
+	ld de, $5adb
+	ld hl, $8620
+	ld bc, $0a06
+	call Request2bpp
+	ld de, $5b3b
+	ld hl, $8680
+	ld bc, $0a0c
+	call Request2bpp
+	ld de, $593b
+	ld hl, $8740
+	ld bc, $0a04
+	call Request2bpp
+	xor a
+	ld hl, $c300
+	ld [hli], a
+	ld [hl], $62
+	ret
+; 2985a
+
+INCBIN "baserom.gbc", $2985a, $29bfb - $2985a
+
 Function29bfb: ; 29bfb
 	ld hl, PartySpecies
 	ld b, $6
@@ -36736,8 +38053,162 @@
 	ret
 ; 29f54
 
-INCBIN "baserom.gbc", $29f54, $2a0e7 - $29f54
+INCBIN "baserom.gbc", $29f54, $2a01f - $29f54
 
+Function2a01f: ; 2a01f
+	ld hl, TileMap
+	ld bc, $0168
+	xor a
+	call ByteFill
+	ld a, e
+	and a
+	jr nz, .asm_2a043
+	ld de, TileMap
+	ld hl, WildMons1
+	call Function2a052
+	ld hl, WildMons2
+	call Function2a06e
+	call Function2a0b7
+	call Function2a0cf
+	ret
+
+.asm_2a043
+	ld de, TileMap
+	ld hl, WildMons3
+	call Function2a052
+	ld hl, WildMons4
+	jp Function2a06e
+; 2a052
+
+Function2a052: ; 2a052
+.asm_2a052
+	ld a, [hl]
+	cp $ff
+	ret z
+	push hl
+	ld a, [hli]
+	ld b, a
+	ld a, [hli]
+	ld c, a
+	inc hl
+	inc hl
+	inc hl
+	ld a, $15
+	call Function2a088
+	jr nc, .asm_2a067
+	ld [de], a
+	inc de
+
+.asm_2a067
+	pop hl
+	ld bc, $002f
+	add hl, bc
+	jr .asm_2a052
+; 2a06e
+
+Function2a06e: ; 2a06e
+.asm_2a06e
+	ld a, [hl]
+	cp $ff
+	ret z
+	push hl
+	ld a, [hli]
+	ld b, a
+	ld a, [hli]
+	ld c, a
+	inc hl
+	ld a, $3
+	call Function2a088
+	jr nc, .asm_2a081
+	ld [de], a
+	inc de
+
+.asm_2a081
+	pop hl
+	ld bc, $0009
+	add hl, bc
+	jr .asm_2a06e
+; 2a088
+
+Function2a088: ; 2a088
+	inc hl
+.asm_2a089
+	push af
+	ld a, [$d265]
+	cp [hl]
+	jr z, .asm_2a098
+	inc hl
+	inc hl
+	pop af
+	dec a
+	jr nz, .asm_2a089
+	and a
+	ret
+
+.asm_2a098
+	pop af
+	jp Function2a09c
+; 2a09c
+
+Function2a09c: ; 2a09c
+	push de
+	call GetWorldMapLocation
+	ld c, a
+	ld hl, TileMap
+	ld de, $0168
+.asm_2a0a7
+	ld a, [hli]
+	cp c
+	jr z, .asm_2a0b4
+	dec de
+	ld a, e
+	or d
+	jr nz, .asm_2a0a7
+	ld a, c
+	pop de
+	scf
+	ret
+
+.asm_2a0b4
+	pop de
+	and a
+	ret
+; 2a0b7
+
+Function2a0b7: ; 2a0b7
+	ld a, [RoamMon1Species]
+	ld b, a
+	ld a, [$d265]
+	cp b
+	ret nz
+	ld a, [RoamMon1MapGroup]
+	ld b, a
+	ld a, [RoamMon1MapNumber]
+	ld c, a
+	call Function2a09c
+	ret nc
+	ld [de], a
+	inc de
+	ret
+; 2a0cf
+
+Function2a0cf: ; 2a0cf
+	ld a, [RoamMon2Species]
+	ld b, a
+	ld a, [$d265]
+	cp b
+	ret nz
+	ld a, [RoamMon2MapGroup]
+	ld b, a
+	ld a, [RoamMon2MapNumber]
+	ld c, a
+	call Function2a09c
+	ret nc
+	ld [de], a
+	inc de
+	ret
+; 2a0e7
+
 Function2a0e7: ; 2a0e7
 ; Try to trigger a wild encounter.
 	call Function2a103
@@ -54200,8 +55671,83 @@
 Tilesets:
 INCLUDE "tilesets/tileset_headers.asm"
 
-INCBIN "baserom.gbc", $4d7c1, $4d860 - $4d7c1
+Function4d7c1: ; 4d7c1
+	push hl
+	push bc
+	push bc
+	srl c
+	srl c
+	srl c
+	ld b, $0
+	add hl, bc
+	pop bc
+	ld a, c
+	and $7
+	ld c, a
+	ld a, $1
+	jr z, .asm_4d7da
+.asm_4d7d6
+	add a
+	dec c
+	jr nz, .asm_4d7d6
 
+.asm_4d7da
+	ld c, a
+	dec b
+	jr z, .asm_4d7e7
+	dec b
+	jr z, .asm_4d7ec
+	ld a, c
+	cpl
+	and [hl]
+	ld [hl], a
+	jr .asm_4d7f9
+
+.asm_4d7e7
+	ld a, [hl]
+	or c
+	ld [hl], a
+	jr .asm_4d7f9
+
+.asm_4d7ec
+	ld a, d
+	cp $0
+	jr nz, .asm_4d7f5
+	ld a, [hl]
+	and c
+	jr .asm_4d7f9
+
+.asm_4d7f5
+	call GetFarByte
+	and c
+
+.asm_4d7f9
+	pop bc
+	pop hl
+	ld c, a
+	ret
+; 4d7fd
+
+Function4d7fd: ; 4d7fd
+	ld a, [PlayerLightScreenCount]
+	ld hl, $c72f
+	ld de, VTiles2
+	push de
+	push af
+	ld a, $2d
+	call Predef
+	pop af
+	ld [CurPartySpecies], a
+	ld [CurSpecies], a
+	call GetBaseData
+	pop de
+	ld a, $3e
+	call Predef
+	ret
+; 4d81e
+
+INCBIN "baserom.gbc", $4d81e, $4d860 - $4d81e
+
 CheckPokerus: ; 4d860
 ; Return carry if a monster in your party has Pokerus
 
@@ -57714,9 +59260,41 @@
 ; 50b7b
 
 
-INCBIN "baserom.gbc", $50b7b, $50bdd - $50b7b
+Function50b7b: ; 50b7b
+	push bc
+	push hl
+	ld de, $4bb5
+	call PlaceString
+	pop hl
+	pop bc
+	add hl, bc
+	ld bc, $0014
+	add hl, bc
+	ld de, TempMonAtk
+	ld bc, $0203
+	call Function50bab
+	ld de, TempMonDef
+	call Function50bab
+	ld de, TempMonSpclAtk
+	call Function50bab
+	ld de, TempMonSpclDef
+	call Function50bab
+	ld de, TempMonSpd
+	jp PrintNum
+; 50bab
 
+Function50bab: ; 50bab
+	push hl
+	call PrintNum
+	pop hl
+	ld de, $0028
+	add hl, de
+	ret
+; 50bb5
 
+INCBIN "baserom.gbc", $50bb5, $50bdd - $50bb5
+
+
 GetGender: ; 50bdd
 ; Return the gender of a given monster in a.
 
@@ -57835,9 +59413,130 @@
 	ret
 ; 50c50
 
-INCBIN "baserom.gbc", $50c50, $50d0a - $50c50
+Function50c50: ; 50c50
+	ld a, [$d0eb]
+	inc a
+	ld c, a
+	ld a, $4
+	sub c
+	ld b, a
+	push hl
+	ld a, [Buffer1]
+	ld e, a
+	ld d, $0
+	ld a, $3e
+	call Function50cc9
+	ld a, b
+	and a
+	jr z, .asm_50c6f
+	ld c, a
+	ld a, $e3
+	call Function50cc9
 
+.asm_50c6f
+	pop hl
+	inc hl
+	inc hl
+	inc hl
+	ld d, h
+	ld e, l
+	ld hl, TempMonMove1
+	ld b, $0
+.asm_50c7a
+	ld a, [hli]
+	and a
+	jr z, .asm_50cc8
+	push bc
+	push hl
+	push de
+	ld hl, $cfa9
+	ld a, [hl]
+	push af
+	ld [hl], b
+	push hl
+	callab Functionf8ec
+	pop hl
+	pop af
+	ld [hl], a
+	pop de
+	pop hl
+	push hl
+	ld bc, $0014
+	add hl, bc
+	ld a, [hl]
+	and $3f
+	ld [$d077], a
+	ld h, d
+	ld l, e
+	push hl
+	ld de, $d077
+	ld bc, $0102
+	call PrintNum
+	ld a, $f3
+	ld [hli], a
+	ld de, $d265
+	ld bc, $0102
+	call PrintNum
+	pop hl
+	ld a, [Buffer1]
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld d, h
+	ld e, l
+	pop hl
+	pop bc
+	inc b
+	ld a, b
+	cp $4
+	jr nz, .asm_50c7a
 
+.asm_50cc8
+	ret
+; 50cc9
+
+Function50cc9: ; 50cc9
+.asm_50cc9
+	ld [hli], a
+	ld [hld], a
+	add hl, de
+	dec c
+	jr nz, .asm_50cc9
+	ret
+; 50cd0
+
+INCBIN "baserom.gbc", $50cd0, $50cdb - $50cd0
+
+Function50cdb: ; 50cdb
+	push hl
+	push hl
+	ld hl, PartyMon1Nickname
+	ld a, [CurPartyMon]
+	call GetNick
+	pop hl
+	call PlaceString
+	call Function5084a
+	pop hl
+	ld a, [CurPartySpecies]
+	cp $fd
+	jr z, .asm_50d09
+	push hl
+	ld bc, $fff4
+	add hl, bc
+	ld b, $0
+	call DrawEnemyHP
+	pop hl
+	ld bc, $0005
+	add hl, bc
+	push de
+	call PrintLevel
+	pop de
+
+.asm_50d09
+	ret
+; 50d0a
+
+
 Function50d0a: ; 50d0a
 	push de
 	inc de
@@ -57901,8 +59600,62 @@
 	ret
 ; 50d5b
 
-INCBIN "baserom.gbc", $50d5b, $50db9 - $50d5b
+INCBIN "baserom.gbc", $50d5b, $50d6f - $50d5b
 
+Function50d6f: ; 50d6f
+	ld de, $d25e
+	ld b, $0
+.asm_50d74
+	ld a, [de]
+	inc de
+	and a
+	jr z, .asm_50da7
+	push de
+	push hl
+	push hl
+	ld [CurSpecies], a
+	ld a, $2
+	ld [$cf61], a
+	call GetName
+	ld de, StringBuffer1
+	pop hl
+	push bc
+	call PlaceString
+	pop bc
+	ld a, b
+	ld [$d0eb], a
+	inc b
+	pop hl
+	push bc
+	ld a, [Buffer1]
+	ld c, a
+	ld b, $0
+	add hl, bc
+	pop bc
+	pop de
+	ld a, b
+	cp $4
+	jr z, .asm_50db8
+	jr .asm_50d74
+
+.asm_50da7
+	ld a, b
+.asm_50da8
+	push af
+	ld [hl], $e3
+	ld a, [Buffer1]
+	ld c, a
+	ld b, $0
+	add hl, bc
+	pop af
+	inc a
+	cp $4
+	jr nz, .asm_50da8
+
+.asm_50db8
+	ret
+; 50db9
+
 Function50db9: ; 50db9
 	ld a, [$d263]
 	cp $1
@@ -58168,9 +59921,208 @@
 ; 51077
 
 
-INCBIN "baserom.gbc", $51077, $511c5 - $51077
+Function51077: ; 51077
+	ld a, [CurPartySpecies]
+	ld [CurSpecies], a
+	call IsAPokemon
+	ret c
+	ld a, [rSVBK]
+	push af
+	call Function510a5
+	pop af
+	ld [rSVBK], a
+	ret
+; 5108b
 
+Function5108b: ; 5108b
+	ld a, [CurPartySpecies]
+	ld [CurSpecies], a
+	call IsAPokemon
+	ret c
+	ld a, [rSVBK]
+	push af
+	xor a
+	ld [hBGMapMode], a
+	call Function510a5
+	call Function51103
+	pop af
+	ld [rSVBK], a
+	ret
+; 510a5
 
+Function510a5: ; 510a5
+	push de
+	call GetBaseData
+	ld a, [BasePicSize]
+	and $f
+	ld b, a
+	push bc
+	call Function510d7
+	ld a, $6
+	ld [rSVBK], a
+	ld a, b
+	ld de, $d800
+	call FarDecompress
+	pop bc
+	ld hl, Unkn1Pals
+	ld de, $d800
+	call Function512ab
+	pop hl
+	push hl
+	ld de, Unkn1Pals
+	ld c, $31
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	pop hl
+	ret
+; 510d7
+
+Function510d7: ; 510d7
+	ld a, [CurPartySpecies]
+	cp $c9
+	jr z, .asm_510e5
+	ld a, [CurPartySpecies]
+	ld d, $48
+	jr .asm_510ea
+
+.asm_510e5
+	ld a, [UnownLetter]
+	ld d, $49
+
+.asm_510ea
+	ld hl, Function50000
+	dec a
+	ld bc, $0006
+	call AddNTimes
+	ld a, d
+	call GetFarByte
+	call Function511c5
+	push af
+	inc hl
+	ld a, d
+	call GetFarHalfword
+	pop bc
+	ret
+; 51103
+
+Function51103: ; 51103
+	ld a, $1
+	ld [rVBK], a
+	push hl
+	ld de, Unkn1Pals
+	ld c, $31
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	pop hl
+	ld de, $0310
+	add hl, de
+	push hl
+	ld a, $1
+	ld hl, BasePicSize
+	call Function307b
+	pop hl
+	and $f
+	ld de, $d990
+	ld c, $19
+	cp $5
+	jr z, .asm_5113b
+	ld de, $da40
+	ld c, $24
+	cp $6
+	jr z, .asm_5113b
+	ld de, $db10
+	ld c, $31
+
+.asm_5113b
+	push hl
+	push bc
+	call Function5114f
+	pop bc
+	pop hl
+	ld de, Unkn1Pals
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	xor a
+	ld [rVBK], a
+	ret
+; 5114f
+
+Function5114f: ; 5114f
+	ld hl, Unkn1Pals
+	swap c
+	ld a, c
+	and $f
+	ld b, a
+	ld a, c
+	and $f0
+	ld c, a
+	push bc
+	call Function512f2
+	pop bc
+.asm_51161
+	push bc
+	ld c, $0
+	call Function512f2
+	pop bc
+	dec b
+	jr nz, .asm_51161
+	ret
+; 5116c
+
+Function5116c: ; 5116c
+	ld a, [CurPartySpecies]
+	call IsAPokemon
+	ret c
+	ld a, [CurPartySpecies]
+	ld b, a
+	ld a, [UnownLetter]
+	ld c, a
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	push de
+	ld hl, Function50000
+	ld a, b
+	ld d, $48
+	cp $c9
+	jr nz, .asm_51190
+	ld a, c
+	ld d, $49
+
+.asm_51190
+	dec a
+	ld bc, $0006
+	call AddNTimes
+	ld bc, $0003
+	add hl, bc
+	ld a, d
+	call GetFarByte
+	call Function511c5
+	push af
+	inc hl
+	ld a, d
+	call GetFarHalfword
+	ld de, Unkn1Pals
+	pop af
+	call FarDecompress
+	ld hl, Unkn1Pals
+	ld c, $24
+	call Function5127c
+	pop hl
+	ld de, Unkn1Pals
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	pop af
+	ld [rSVBK], a
+	ret
+; 511c5
+
+
 Function511c5: ; 511c5
 	push hl
 	push bc
@@ -58259,8 +60211,138 @@
 ; 5127c
 
 
-INCBIN "baserom.gbc", $5127c, $51322 - $5127c
+Function5127c: ; 5127c
+	push de
+	push bc
+	ld a, [$c2c6]
+	and a
+	jr z, .asm_512a8
+	ld a, c
+	cp $31
+	ld de, $0310
+	jr z, .asm_51296
+	cp $24
+	ld de, $0240
+	jr z, .asm_51296
+	ld de, $0190
 
+.asm_51296
+	ld a, [hl]
+	ld b, $0
+	ld c, $8
+.asm_5129b
+	rra
+	rl b
+	dec c
+	jr nz, .asm_5129b
+	ld a, b
+	ld [hli], a
+	dec de
+	ld a, e
+	or d
+	jr nz, .asm_51296
+
+.asm_512a8
+	pop bc
+	pop de
+	ret
+; 512ab
+
+Function512ab: ; 512ab
+	ld a, b
+	cp $6
+	jr z, .asm_512bd
+	cp $5
+	jr z, .asm_512d2
+.asm_512b4
+	ld c, $70
+	call Function512f2
+	dec b
+	jr nz, .asm_512b4
+	ret
+
+.asm_512bd
+	ld c, $70
+	xor a
+	call Function512ed
+.asm_512c3
+	ld c, $10
+	xor a
+	call Function512ed
+	ld c, $60
+	call Function512f2
+	dec b
+	jr nz, .asm_512c3
+	ret
+
+.asm_512d2
+	ld c, $70
+	xor a
+	call Function512ed
+.asm_512d8
+	ld c, $20
+	xor a
+	call Function512ed
+	ld c, $50
+	call Function512f2
+	dec b
+	jr nz, .asm_512d8
+	ld c, $70
+	xor a
+	call Function512ed
+	ret
+; 512ed
+
+Function512ed: ; 512ed
+.asm_512ed
+	ld [hli], a
+	dec c
+	jr nz, .asm_512ed
+	ret
+; 512f2
+
+Function512f2: ; 512f2
+	ld a, [$c2c6]
+	and a
+	jr nz, .asm_512ff
+.asm_512f8
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec c
+	jr nz, .asm_512f8
+	ret
+
+.asm_512ff
+	push bc
+.asm_51300
+	ld a, [de]
+	inc de
+	ld b, a
+	xor a
+	rr b
+	rla
+	rr b
+	rla
+	rr b
+	rla
+	rr b
+	rla
+	rr b
+	rla
+	rr b
+	rla
+	rr b
+	rla
+	rr b
+	rla
+	ld [hli], a
+	dec c
+	jr nz, .asm_51300
+	pop bc
+	ret
+; 51322
+
 Function51322: ; 51322
 	ld a, $1
 	call GetSRAMBank
@@ -64021,7 +66103,9 @@
 
 SECTION "bank23",ROMX,BANK[$23]
 
-INCBIN "baserom.gbc", $8c000, $8c001 - $8c000
+Function8c000: ; 8c000
+	ret
+; 8c001
 
 
 Function8c001: ; 8c001
@@ -67474,8 +69558,278 @@
 	ret
 ; 91d11
 
-INCBIN "baserom.gbc", $91d11, $91ee4 - $91d11
+Function91d11: ; 91d11
+	ld a, [DefaultFlypoint]
+	push af
+	ld a, [$d003]
+	push af
+	ld a, e
+	ld [DefaultFlypoint], a
+	call ClearSprites
+	xor a
+	ld [hBGMapMode], a
+	ld a, $1
+	ld [$ffaa], a
+	ld de, $62d1
+	ld hl, $87f0
+	ld bc, $2401
+	call Request2bpp
+	call Function91ed0
+	ld hl, $8780
+	ld c, $4
+	call Request2bpp
+	call Function91ff2
+	call FillKantoMap
+	call Function91de9
+	call TownMapPals
+	ld hl, VBGMap1
+	call TownMapBGUpdate
+	call FillJohtoMap
+	call Function91de9
+	call TownMapPals
+	ld hl, VBGMap0
+	call TownMapBGUpdate
+	ld b, $2
+	call GetSGBLayout
+	call Function32f9
+	xor a
+	ld [hBGMapMode], a
+	xor a
+	call Function91e1e
+.asm_91d6e
+	call Functiona57
+	ld hl, hJoyPressed
+	ld a, [hl]
+	and $3
+	jr nz, .asm_91d8f
+	ld a, [hJoypadDown]
+	and $4
+	jr nz, .asm_91d87
+	call Function91d9b
+	call Function91dcd
+	jr .asm_91d8a
 
+.asm_91d87
+	call Function91e5a
+
+.asm_91d8a
+	call DelayFrame
+	jr .asm_91d6e
+
+.asm_91d8f
+	call ClearSprites
+	pop af
+	ld [$d003], a
+	pop af
+	ld [DefaultFlypoint], a
+	ret
+; 91d9b
+
+Function91d9b: ; 91d9b
+	ld a, [hl]
+	and $20
+	jr nz, .asm_91da6
+	ld a, [hl]
+	and $10
+	jr nz, .asm_91db7
+	ret
+
+.asm_91da6
+	ld a, [hWY]
+	cp $90
+	ret z
+	call ClearSprites
+	ld a, $90
+	ld [hWY], a
+	xor a
+	call Function91e1e
+	ret
+
+.asm_91db7
+	ld a, [StatusFlags]
+	bit 6, a
+	ret z
+	ld a, [hWY]
+	and a
+	ret z
+	call ClearSprites
+	xor a
+	ld [hWY], a
+	ld a, $1
+	call Function91e1e
+	ret
+; 91dcd
+
+Function91dcd: ; 91dcd
+	ld a, [$ff9b]
+	ld e, a
+	and $f
+	ret nz
+	ld a, e
+	and $10
+	jr nz, .asm_91ddc
+	call ClearSprites
+	ret
+
+.asm_91ddc
+	ld hl, TileMap
+	ld de, Sprites
+	ld bc, $00a0
+	call CopyBytes
+	ret
+; 91de9
+
+Function91de9: ; 91de9
+	ld hl, TileMap
+	ld bc, $0014
+	ld a, $7f
+	call ByteFill
+	ld hl, $c4b4
+	ld a, $6
+	ld [hli], a
+	ld bc, $0012
+	ld a, $7
+	call ByteFill
+	ld [hl], $17
+	call GetPokemonName
+	ld hl, $c4a2
+	call PlaceString
+	ld h, b
+	ld l, c
+	ld de, $5e16
+	call PlaceString
+	ret
+; 91e16
+
+INCBIN "baserom.gbc", $91e16, $91e1e - $91e16
+
+Function91e1e: ; 91e1e
+	ld [$d003], a
+	ld e, a
+	callba Function2a01f
+	ld de, TileMap
+	ld hl, Sprites
+.asm_91e2e
+	ld a, [de]
+	and a
+	jr z, .asm_91e4d
+	push de
+	ld e, a
+	push hl
+	callba GetLandmarkCoords
+	pop hl
+	ld a, d
+	sub $4
+	ld [hli], a
+	ld a, e
+	sub $4
+	ld [hli], a
+	ld a, $7f
+	ld [hli], a
+	xor a
+	ld [hli], a
+	pop de
+	inc de
+	jr .asm_91e2e
+
+.asm_91e4d
+	ld hl, Sprites
+	ld de, TileMap
+	ld bc, $00a0
+	call CopyBytes
+	ret
+; 91e5a
+
+Function91e5a: ; 91e5a
+	call Function91ea9
+	ret c
+	ld a, [DefaultFlypoint]
+	ld e, a
+	callba GetLandmarkCoords
+	ld c, e
+	ld b, d
+	ld de, $5e9c
+	ld hl, Sprites
+.asm_91e70
+	ld a, [de]
+	cp $80
+	jr z, .asm_91e91
+	add b
+	ld [hli], a
+	inc de
+	ld a, [de]
+	add c
+	ld [hli], a
+	inc de
+	ld a, [de]
+	add $78
+	ld [hli], a
+	inc de
+	push bc
+	ld c, $0
+	ld a, [PlayerGender]
+	bit 0, a
+	jr z, .asm_91e8c
+	inc c
+
+.asm_91e8c
+	ld a, c
+	ld [hli], a
+	pop bc
+	jr .asm_91e70
+
+.asm_91e91
+	ld hl, $c410
+	ld bc, $0090
+	xor a
+	call ByteFill
+	ret
+; 91e9c
+
+INCBIN "baserom.gbc", $91e9c, $91ea9 - $91e9c
+
+Function91ea9: ; 91ea9
+	ld a, [DefaultFlypoint]
+	cp $5f
+	jr z, .asm_91ebc
+	cp $2f
+	jr c, .asm_91ebc
+	ld a, [$d003]
+	and a
+	jr z, .asm_91ec4
+	jr .asm_91ec2
+
+.asm_91ebc
+	ld a, [$d003]
+	and a
+	jr nz, .asm_91ec4
+
+.asm_91ec2
+	and a
+	ret
+
+.asm_91ec4
+	ld hl, Sprites
+	ld bc, $00a0
+	xor a
+	call ByteFill
+	scf
+	ret
+; 91ed0
+
+Function91ed0: ; 91ed0
+	ld a, [DefaultFlypoint]
+	cp $5f
+	jr z, .asm_91ede
+	callba GetPlayerIcon
+	ret
+
+.asm_91ede
+	ld de, $4cb2
+	ld b, $24
+	ret
+; 91ee4
+
 TownMapBGUpdate: ; 91ee4
 ; Update BG Map tiles and attributes
 
@@ -70795,9 +73149,61 @@
 
 SECTION "bank32",ROMX,BANK[$32]
 
-INCBIN "baserom.gbc", $c8000, $cbe2b - $c8000
+INCBIN "baserom.gbc", $c8000, $cbcdd - $c8000
 
+Functioncbcdd: ; cbcdd
+	call Functioncbce5
+	ld a, [hCGB]
+	and a
+	ret nz
+	ret
+; cbce5
 
+Functioncbce5: ; cbce5
+	ld a, [hCGB]
+	and a
+	jr nz, .asm_cbd06
+	ld a, [TimeOfDayPal]
+	and $3
+	cp $3
+	ld a, $0
+	jr z, .asm_cbcf7
+	ld a, $aa
+
+.asm_cbcf7
+	call DmgToCgbBGPals
+	ld c, $4
+	call DelayFrames
+	callba _UpdateTimePals
+	ret
+
+.asm_cbd06
+	ld a, [rSVBK]
+	push af
+	ld a, $5
+	ld [rSVBK], a
+	ld hl, BGPals
+	ld c, $20
+.asm_cbd12
+	ld a, $bc
+	ld [hli], a
+	ld a, $7e
+	ld [hli], a
+	dec c
+	jr nz, .asm_cbd12
+	pop af
+	ld [rSVBK], a
+	ld a, $1
+	ld [hCGBPalUpdate], a
+	ld c, $4
+	call DelayFrames
+	callba _UpdateTimePals
+	ret
+; cbd2e
+
+INCBIN "baserom.gbc", $cbd2e, $cbe2b - $cbd2e
+
+
 SECTION "bank33",ROMX,BANK[$33]
 
 Functioncc000: ; cc000
@@ -70875,9 +73281,13 @@
 	jp PrintText
 ; cc0d0
 
-INCBIN "baserom.gbc", $cc0d0, $cc0d6 - $cc0d0
+INCBIN "baserom.gbc", $cc0d0, $cc0d5 - $cc0d0
 
+Functioncc0d5: ; cc0d5
+	ret
+; cc0d6
 
+
 Functioncc0d6: ; cc0d6
 	ld a, [rSVBK]
 	push af
@@ -71690,8 +74100,1029 @@
 SECTION "bank34",ROMX,BANK[$34]
 
 ; Pic animations asm
-INCBIN "baserom.gbc", $d0000, $d0695 - $d0000
+Functiond0000: ; d0000
+	ld hl, $c4ac
+	ld a, [IsInBattle]
+	cp $1
+	jr z, .asm_d0012
+	ld e, $0
+	ld d, $0
+	call Functiond008e
+	ret
 
+.asm_d0012
+	ld e, $1
+	ld d, $0
+	call Functiond008e
+	ret
+; d001a
+
+INCBIN "baserom.gbc", $d001a, $d008e - $d001a
+
+Functiond008e: ; d008e
+	call Functiond01c6
+	ret c
+	call Functiond00a3
+.asm_d0095
+	call Functiond00b4
+	push af
+	callba Function10402d
+	pop af
+	jr nc, .asm_d0095
+	ret
+; d00a3
+
+Functiond00a3: ; d00a3
+	push hl
+	ld c, e
+	ld b, $0
+	ld hl, $4042
+	add hl, bc
+	add hl, bc
+	ld a, [hli]
+	ld b, [hl]
+	ld c, a
+	pop hl
+	call Functiond01d6
+	ret
+; d00b4
+
+Functiond00b4: ; d00b4
+	ld a, [rSVBK]
+	push af
+	ld a, $2
+	ld [rSVBK], a
+	ld a, [$d168]
+	ld c, a
+	ld b, $0
+	ld hl, $d169
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	add hl, bc
+	ld a, [hl]
+	ld hl, $40da
+	rst JumpTable
+	ld a, [$d168]
+	ld c, a
+	pop af
+	ld [rSVBK], a
+	ld a, c
+	and $80
+	ret z
+	scf
+	ret
+; d00da
+
+Tabled00da: ; d00da
+	dw Functiond0171
+	dw Functiond0166
+	dw Functiond00f2
+	dw Functiond00fe
+	dw Functiond010b
+	dw Functiond011d
+	dw Functiond012f
+	dw Functiond0141
+	dw Functiond0155
+	dw Functiond017a
+	dw Functiond0188
+	dw Functiond0196
+; d00f2
+
+Functiond00f2: ; d00f2
+	ld a, $12
+	ld [$d181], a
+	ld a, [$d168]
+	inc a
+	ld [$d168], a
+
+Functiond00fe: ; d00fe
+	ld hl, $d181
+	dec [hl]
+	ret nz
+	ld a, [$d168]
+	inc a
+	ld [$d168], a
+	ret
+; d010b
+
+Functiond010b: ; d010b
+	ld c, $0
+	ld b, $0
+	call Functiond0228
+	call Functiond0504
+	ld a, [$d168]
+	inc a
+	ld [$d168], a
+	ret
+; d011d
+
+Functiond011d: ; d011d
+	ld c, $0
+	ld b, $4
+	call Functiond0228
+	call Functiond0504
+	ld a, [$d168]
+	inc a
+	ld [$d168], a
+	ret
+; d012f
+
+Functiond012f: ; d012f
+	ld c, $1
+	ld b, $0
+	call Functiond0228
+	call Functiond0504
+	ld a, [$d168]
+	inc a
+	ld [$d168], a
+	ret
+; d0141
+
+Functiond0141: ; d0141
+	call Functiond0250
+	ld a, [$d17e]
+	bit 7, a
+	ret z
+	call Functiond04bd
+	ld a, [$d168]
+	inc a
+	ld [$d168], a
+	ret
+; d0155
+
+Functiond0155: ; d0155
+	call Functiond0250
+	ld a, [$d17e]
+	bit 7, a
+	ret z
+	ld a, [$d168]
+	inc a
+	ld [$d168], a
+	ret
+; d0166
+
+Functiond0166: ; d0166
+	call Functiond01a9
+	ld a, [$d168]
+	inc a
+	ld [$d168], a
+	ret
+; d0171
+
+Functiond0171: ; d0171
+	call Functiond01a9
+	ld hl, $d168
+	set 7, [hl]
+	ret
+; d017a
+
+Functiond017a: ; d017a
+	ld a, [$d16b]
+	call Function37e2
+	ld a, [$d168]
+	inc a
+	ld [$d168], a
+	ret
+; d0188
+
+Functiond0188: ; d0188
+	ld a, [$d16b]
+	call Function37d5
+	ld a, [$d168]
+	inc a
+	ld [$d168], a
+	ret
+; d0196
+
+Functiond0196: ; d0196
+	ld a, $f
+	ld [CryTracks], a
+	ld a, [$d16b]
+	call Function37c4
+	ld a, [$d168]
+	inc a
+	ld [$d168], a
+	ret
+; d01a9
+
+Functiond01a9: ; d01a9
+	ld a, [rSVBK]
+	push af
+	ld a, $2
+	ld [rSVBK], a
+	call Functiond04bd
+	callba Function10402d
+	call Functiond0536
+	callba Function104047
+	pop af
+	ld [rSVBK], a
+	ret
+; d01c6
+
+Functiond01c6: ; d01c6
+	ld a, [CurPartySpecies]
+	cp $fd
+	jr z, .asm_d01d4
+	call IsAPokemon
+	jr c, .asm_d01d4
+	and a
+	ret
+
+.asm_d01d4
+	scf
+	ret
+; d01d6
+
+Functiond01d6: ; d01d6
+	ld a, [rSVBK]
+	push af
+	ld a, $2
+	ld [rSVBK], a
+	push bc
+	push de
+	push hl
+	ld hl, $d168
+	ld bc, $0029
+	xor a
+	call ByteFill
+	pop hl
+	pop de
+	pop bc
+	ld a, c
+	ld [$d169], a
+	ld a, b
+	ld [$d16a], a
+	ld a, l
+	ld [$d16f], a
+	ld a, h
+	ld [$d170], a
+	ld a, d
+	ld [$d16e], a
+	ld a, $1
+	ld hl, CurPartySpecies
+	call Function307b
+	ld [$d16b], a
+	ld a, $1
+	ld hl, UnownLetter
+	call Function307b
+	ld [$d16c], a
+	call Functiond065c
+	ld [$d16d], a
+	call Functiond05b4
+	ld a, c
+	ld [$d171], a
+	pop af
+	ld [rSVBK], a
+	ret
+; d0228
+
+Functiond0228: ; d0228
+	ld a, [rSVBK]
+	push af
+	ld a, $2
+	ld [rSVBK], a
+	push bc
+	ld hl, $d172
+	ld bc, $001f
+	xor a
+	call ByteFill
+	pop bc
+	ld a, b
+	ld [$d173], a
+	ld a, c
+	ld [$d172], a
+	call Functiond055c
+	call Functiond05ce
+	call Functiond061b
+	pop af
+	ld [rSVBK], a
+	ret
+; d0250
+
+Functiond0250: ; d0250
+	xor a
+	ld [hBGMapMode], a
+
+Functiond0253: ; d0253
+	ld a, [$d17e]
+	and $7f
+	ld hl, Tabled025d
+	rst JumpTable
+	ret
+; d025d
+
+Tabled025d: ; d025d
+	dw Functiond0261
+	dw Functiond0282
+; d0261
+
+Functiond0261: ; d0261
+	call Functiond02f8
+	ld a, [$d182]
+	cp $ff
+	jr z, Functiond02a8
+	cp $fe
+	jr z, Functiond028e
+	cp $fd
+	jr z, Functiond0296
+	call Functiond02c8
+	ld a, [$d183]
+	call Functiond02ae
+	ld [$d181], a
+	call Functiond02dc
+
+Functiond0282: ; d0282
+	ld a, [$d181]
+	dec a
+	ld [$d181], a
+	ret nz
+	call Functiond02e4
+	ret
+; d028e
+
+Functiond028e: ; d028e
+	ld a, [$d183]
+	ld [$d17f], a
+	jr Functiond0253
+; d0296
+
+Functiond0296: ; d0296
+	ld a, [$d17f]
+	and a
+	ret z
+	dec a
+	ld [$d17f], a
+	ret z
+	ld a, [$d183]
+	ld [$d17d], a
+	jr Functiond0253
+; d02a8
+
+Functiond02a8: ; d02a8
+	ld hl, $d17e
+	set 7, [hl]
+	ret
+; d02ae
+
+Functiond02ae: ; d02ae
+	ld c, a
+	ld b, $0
+	ld hl, $0000
+	ld a, [$d173]
+	call AddNTimes
+	ld a, h
+	swap a
+	and $f0
+	ld h, a
+	ld a, l
+	swap a
+	and $f
+	or h
+	add c
+	ret
+; d02c8
+
+Functiond02c8: ; d02c8
+	call Functiond04bd
+	ld a, [$d182]
+	and a
+	ret z
+	call Functiond031b
+	push hl
+	call Functiond033b
+	pop hl
+	call Functiond036b
+	ret
+; d02dc
+
+Functiond02dc: ; d02dc
+	ld a, [$d17e]
+	inc a
+	ld [$d17e], a
+	ret
+; d02e4
+
+Functiond02e4: ; d02e4
+	ld a, [$d17e]
+	dec a
+	ld [$d17e], a
+	ret
+; d02ec
+
+Functiond02ec: ; d02ec
+	ld a, [$d16b]
+	cp $c9
+	ret
+; d02f2
+
+Functiond02f2: ; d02f2
+	ld a, [$d16b]
+	cp $fd
+	ret
+; d02f8
+
+Functiond02f8: ; d02f8
+	push hl
+	ld a, [$d17d]
+	ld e, a
+	ld d, $0
+	ld hl, $d175
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	add hl, de
+	add hl, de
+	ld a, [$d174]
+	call GetFarHalfword
+	ld a, l
+	ld [$d182], a
+	ld a, h
+	ld [$d183], a
+	ld hl, $d17d
+	inc [hl]
+	pop hl
+	ret
+; d031b
+
+Functiond031b: ; d031b
+	ld a, [$d182]
+	dec a
+	ld c, a
+	ld b, $0
+	ld hl, $d178
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	add hl, bc
+	add hl, bc
+	ld a, [$d177]
+	call GetFarHalfword
+	ld a, [$d177]
+	call GetFarByte
+	ld [$d180], a
+	inc hl
+	ret
+; d033b
+
+Functiond033b: ; d033b
+	call Functiond0356
+	push bc
+	ld hl, $d17b
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [$d180]
+	call AddNTimes
+	pop bc
+	ld de, $d188
+	ld a, [$d17a]
+	call FarCopyBytes
+	ret
+; d0356
+
+Functiond0356: ; d0356
+	push hl
+	ld a, [$d171]
+	sub $5
+	ld c, a
+	ld b, $0
+	ld hl, $4368
+	add hl, bc
+	ld c, [hl]
+	ld b, $0
+	pop hl
+	ret
+; d0368
+
+INCBIN "baserom.gbc", $d0368, $d036b - $d0368
+
+Functiond036b: ; d036b
+	xor a
+	ld [$d187], a
+	ld [$d186], a
+	ld [$d185], a
+.asm_d0375
+	push hl
+	call Functiond0392
+	pop hl
+	ld a, b
+	and a
+	jr z, .asm_d038a
+	ld a, [$d177]
+	call GetFarByte
+	inc hl
+	push hl
+	call Functiond03bd
+	pop hl
+
+.asm_d038a
+	push hl
+	call Functiond0499
+	pop hl
+	jr nc, .asm_d0375
+	ret
+; d0392
+
+Functiond0392: ; d0392
+	ld a, [$d187]
+	and $f8
+	rrca
+	rrca
+	rrca
+	ld e, a
+	ld d, $0
+	ld hl, $d188
+	add hl, de
+	ld b, [hl]
+	ld a, [$d187]
+	and $7
+	jr z, .asm_d03b0
+	ld c, a
+	ld a, b
+.asm_d03ab
+	rrca
+	dec c
+	jr nz, .asm_d03ab
+	ld b, a
+
+.asm_d03b0
+	xor a
+	bit 0, b
+	jr z, .asm_d03b7
+	ld a, $1
+
+.asm_d03b7
+	ld b, a
+	ld hl, $d187
+	inc [hl]
+	ret
+; d03bd
+
+Functiond03bd: ; d03bd
+	push af
+	call Functiond03cd
+	pop af
+	push hl
+	call Functiond03f7
+	ld hl, $d16e
+	add [hl]
+	pop hl
+	ld [hl], a
+	ret
+; d03cd
+
+Functiond03cd: ; d03cd
+	call Functiond046c
+	ld a, [$d186]
+	ld bc, $0014
+	call AddNTimes
+	ld a, [$c2c6]
+	and a
+	jr nz, .asm_d03e8
+	ld a, [$d185]
+	ld e, a
+	ld d, $0
+	add hl, de
+	jr .asm_d03f3
+
+.asm_d03e8
+	ld a, [$d185]
+	ld e, a
+	ld a, l
+	sub e
+	ld l, a
+	ld a, h
+	sbc $0
+	ld h, a
+
+.asm_d03f3
+	ret
+; d03f4
+
+INCBIN "baserom.gbc", $d03f4, $d03f7 - $d03f4
+
+Functiond03f7: ; d03f7
+	push af
+	ld a, [$d171]
+	cp $5
+	jr z, .asm_d0405
+	cp $6
+	jr z, .asm_d041a
+	pop af
+	ret
+
+.asm_d0405
+	pop af
+	cp $19
+	jr nc, .asm_d0417
+	push hl
+	push de
+	ld hl, $442f
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld a, [hl]
+	pop de
+	pop hl
+	ret
+
+.asm_d0417
+	add $18
+	ret
+
+.asm_d041a
+	pop af
+	cp $24
+	jr nc, .asm_d042c
+	push hl
+	push de
+	ld hl, $4448
+	ld e, a
+	ld d, $0
+	add hl, de
+	ld a, [hl]
+	pop de
+	pop hl
+	ret
+
+.asm_d042c
+	add $d
+	ret
+; d042f
+
+INCBIN "baserom.gbc", $d042f, $d046c - $d042f
+
+Functiond046c: ; d046c
+	ld hl, $d16f
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld a, [$d171]
+	ld de, $0000
+	ld bc, $0006
+	cp $7
+	jr z, .asm_d048f
+	ld de, $0015
+	ld bc, $0019
+	cp $6
+	jr z, .asm_d048f
+	ld de, $0029
+	ld bc, $002d
+
+.asm_d048f
+	ld a, [$c2c6]
+	and a
+	jr nz, .asm_d0497
+	add hl, de
+	ret
+
+.asm_d0497
+	add hl, bc
+	ret
+; d0499
+
+Functiond0499: ; d0499
+	ld a, [$d186]
+	inc a
+	ld [$d186], a
+	ld c, a
+	ld a, [$d171]
+	cp c
+	jr nz, .asm_d04bb
+	xor a
+	ld [$d186], a
+	ld a, [$d185]
+	inc a
+	ld [$d185], a
+	ld c, a
+	ld a, [$d171]
+	cp c
+	jr nz, .asm_d04bb
+	scf
+	ret
+
+.asm_d04bb
+	xor a
+	ret
+; d04bd
+
+Functiond04bd: ; d04bd
+	call Functiond04f6
+	ld a, [$c2c6]
+	and a
+	jr nz, .asm_d04ce
+	ld de, $0001
+	ld bc, $0000
+	jr .asm_d04d4
+
+.asm_d04ce
+	ld de, rIE
+	ld bc, $0006
+
+.asm_d04d4
+	ld hl, $d16f
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	add hl, bc
+	ld c, $7
+	ld b, $7
+	ld a, [$d16e]
+.asm_d04e2
+	push bc
+	push hl
+	push de
+	ld de, $0014
+.asm_d04e8
+	ld [hl], a
+	inc a
+	add hl, de
+	dec b
+	jr nz, .asm_d04e8
+	pop de
+	pop hl
+	add hl, de
+	pop bc
+	dec c
+	jr nz, .asm_d04e2
+	ret
+; d04f6
+
+Functiond04f6: ; d04f6
+	ld hl, $d16f
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld b, $7
+	ld c, $7
+	call ClearBox
+	ret
+; d0504
+
+Functiond0504: ; d0504
+	ld a, [rSVBK]
+	push af
+	ld a, $2
+	ld [rSVBK], a
+	xor a
+	ld [hBGMapMode], a
+	call Functiond051b
+	callba Function104047
+	pop af
+	ld [rSVBK], a
+	ret
+; d051b
+
+Functiond051b: ; d051b
+	call Functiond0551
+	ld b, $7
+	ld c, $7
+	ld de, $0014
+.asm_d0525
+	push bc
+	push hl
+.asm_d0527
+	ld a, [hl]
+	or $8
+	ld [hl], a
+	add hl, de
+	dec c
+	jr nz, .asm_d0527
+	pop hl
+	inc hl
+	pop bc
+	dec b
+	jr nz, .asm_d0525
+	ret
+; d0536
+
+Functiond0536: ; d0536
+	call Functiond0551
+	ld b, $7
+	ld c, $7
+	ld de, $0014
+.asm_d0540
+	push bc
+	push hl
+.asm_d0542
+	ld a, [hl]
+	and $f7
+	ld [hl], a
+	add hl, de
+	dec c
+	jr nz, .asm_d0542
+	pop hl
+	inc hl
+	pop bc
+	dec b
+	jr nz, .asm_d0540
+	ret
+; d0551
+
+Functiond0551: ; d0551
+	ld hl, $d16f
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	ld de, $0939
+	add hl, de
+	ret
+; d055c
+
+Functiond055c: ; d055c
+	call Functiond02f2
+	jr z, .asm_d0597
+	ld c, $34
+	ld hl, UnownAnimationPointers
+	ld de, UnownAnimationExtraPointers
+	call Functiond02ec
+	jr z, .asm_d0576
+	ld c, $34
+	ld hl, AnimationPointers
+	ld de, AnimationExtraPointers
+
+.asm_d0576
+	ld a, [$d172]
+	and a
+	jr z, .asm_d057e
+	ld h, d
+	ld l, e
+
+.asm_d057e
+	ld a, [$d16d]
+	dec a
+	ld e, a
+	ld d, $0
+	add hl, de
+	add hl, de
+	ld a, c
+	ld [$d174], a
+	call GetFarHalfword
+	ld a, l
+	ld [$d175], a
+	ld a, h
+	ld [$d176], a
+	ret
+
+.asm_d0597
+	ld hl, EggAnimation
+	ld c, $34
+	ld a, [$d172]
+	and a
+	jr z, .asm_d05a7
+	ld hl, EggAnimationExtra
+	ld c, $34
+
+.asm_d05a7
+	ld a, c
+	ld [$d174], a
+	ld a, l
+	ld [$d175], a
+	ld a, h
+	ld [$d176], a
+	ret
+; d05b4
+
+Functiond05b4: ; d05b4
+	ld a, [rSVBK]
+	push af
+	ld a, $1
+	ld [rSVBK], a
+	ld a, [CurPartySpecies]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld a, [BasePicSize]
+	and $f
+	ld c, a
+	pop af
+	ld [rSVBK], a
+	ret
+; d05ce
+
+Functiond05ce: ; d05ce
+	call Functiond02f2
+	jr z, .asm_d0609
+	call Functiond02ec
+	ld b, $36
+	ld c, $36
+	ld hl, PikachuAnimationExtra
+	jr z, .asm_d05ef
+	ld a, [$d16b]
+	cp $98
+	ld b, $35
+	ld c, $35
+	ld hl, $4000
+	jr c, .asm_d05ef
+	ld c, $36
+
+.asm_d05ef
+	ld a, c
+	ld [$d177], a
+	ld a, [$d16d]
+	dec a
+	ld e, a
+	ld d, $0
+	add hl, de
+	add hl, de
+	ld a, b
+	call GetFarHalfword
+	ld a, l
+	ld [$d178], a
+	ld a, h
+	ld [$d179], a
+	ret
+
+.asm_d0609
+	ld hl, $598b
+	ld c, $36
+	ld a, c
+	ld [$d177], a
+	ld a, l
+	ld [$d178], a
+	ld a, h
+	ld [$d179], a
+	ret
+; d061b
+
+Functiond061b: ; d061b
+	call Functiond02f2
+	jr z, .asm_d064a
+	call Functiond02ec
+	ld a, $34
+	ld hl, UnownBitmasksPointers
+	jr z, .asm_d062f
+	ld a, $34
+	ld hl, BitmasksPointers
+
+.asm_d062f
+	ld [$d17a], a
+	ld a, [$d16d]
+	dec a
+	ld e, a
+	ld d, $0
+	add hl, de
+	add hl, de
+	ld a, [$d17a]
+	call GetFarHalfword
+	ld a, l
+	ld [$d17b], a
+	ld a, h
+	ld [$d17c], a
+	ret
+
+.asm_d064a
+	ld c, $34
+	ld hl, EggBitmasks
+	ld a, c
+	ld [$d17a], a
+	ld a, l
+	ld [$d17b], a
+	ld a, h
+	ld [$d17c], a
+	ret
+; d065c
+
+Functiond065c: ; d065c
+	call Functiond02ec
+	jr z, .asm_d0665
+	ld a, [$d16b]
+	ret
+
+.asm_d0665
+	ld a, [$d16c]
+	ret
+; d0669
+
+Functiond0669: ; d0669
+	ld a, $1
+	ld [$c2c6], a
+	call Functiond01c6
+	jr c, .asm_d068c
+	ld h, d
+	ld l, e
+	push bc
+	push hl
+	ld de, VTiles2
+	ld a, $3e
+	call Predef
+	pop hl
+	pop bc
+	ld d, $0
+	ld e, c
+	call Functiond008e
+	xor a
+	ld [$c2c6], a
+	ret
+
+.asm_d068c
+	xor a
+	ld [$c2c6], a
+	inc a
+	ld [CurPartySpecies], a
+	ret
+; d0695
+
 ; Pic animations are assembled in 3 parts:
 
 ; Top-level animations:
@@ -76104,9 +79535,15 @@
 	ret
 ; fd136
 
-INCBIN "baserom.gbc", $fd136, $fd1d2 - $fd136
+INCBIN "baserom.gbc", $fd136, $fd1d0 - $fd136
 
+Functionfd1d0: ; fd1d0
+	ret
+; fd1d1
 
+INCBIN "baserom.gbc", $fd1d1, $fd1d2 - $fd1d1
+
+
 SECTION "bank40",ROMX,BANK[$40]
 
 Function100000: ; 100000
@@ -78714,7 +82151,14 @@
 	jp Function104177
 ; 104033
 
-INCBIN "baserom.gbc", $104033, $104061 - $104033
+INCBIN "baserom.gbc", $104033, $104047 - $104033
+
+Function104047: ; 104047
+	ld hl, $404d
+	jp Function104177
+; 10404d
+
+INCBIN "baserom.gbc", $10404d, $104061 - $10404d
 
 
 Function104061: ; 104061