summaryrefslogtreecommitdiff
path: root/event
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2015-11-28 20:15:35 -0500
committeryenatch <yenatch@gmail.com>2015-11-28 20:15:35 -0500
commit794410352fd92ccf06974763e4b3be0b807641ab (patch)
tree05f5dd861966762db9556082229cee82e8b5eed9 /event
parent9c5473e965520f672640daf4ee76622640e0de15 (diff)
parent4bcd71e3227181baa536357af3d87a8d02af3890 (diff)
Merge pull request #328 from PikalaxALT/master
Split out most of main.asm
Diffstat (limited to 'event')
-rw-r--r--event/buena.asm8
-rwxr-xr-xevent/bug_contest_judging.asm117
-rwxr-xr-xevent/celebi.asm354
-rwxr-xr-xevent/daycare.asm768
-rwxr-xr-xevent/elevator.asm4
-rwxr-xr-xevent/field_moves.asm312
-rwxr-xr-xevent/forced_movement.asm24
-rwxr-xr-xevent/halloffame.asm628
-rw-r--r--event/kurt.asm6
-rwxr-xr-xevent/magnet_train.asm485
-rw-r--r--event/mom.asm20
-rwxr-xr-xevent/mom_phone.asm285
-rwxr-xr-xevent/photo.asm299
-rw-r--r--event/poke_seer.asm120
-rw-r--r--event/unown.asm2
-rwxr-xr-xevent/whiteout.asm4
16 files changed, 3283 insertions, 153 deletions
diff --git a/event/buena.asm b/event/buena.asm
index 3662f110d..76a378549 100644
--- a/event/buena.asm
+++ b/event/buena.asm
@@ -11,8 +11,8 @@ SpecialBuenasPassword: ; 8af6b
add $2
ld [wMenuBorderRightCoord], a
call BackUpTiles
- call Function1e5d ; menu
- callba Function4ae5e
+ call DoNthMenu ; menu
+ callba Buena_ExitMenu
ld b, $0
ld a, [MenuSelection]
ld c, a
@@ -66,7 +66,7 @@ SpecialBuenasPassword: ; 8af6b
SpecialBuenaPrize: ; 8afd4
xor a
- ld [wd0e4], a
+ ld [wMenuScrollPosition], a
ld a, $1
ld [MenuSelection], a
call Function8b0d6
@@ -250,7 +250,7 @@ Function8b0e2: ; 8b0e2
xor a
ld [wcf76], a
ld [hBGMapMode], a
- call Function352f
+ call InitScrollingMenu
call UpdateSprites
call HandleScrollingMenu
ld a, [MenuSelection]
diff --git a/event/bug_contest_judging.asm b/event/bug_contest_judging.asm
index 25b3805ee..4180391e1 100755
--- a/event/bug_contest_judging.asm
+++ b/event/bug_contest_judging.asm
@@ -2,24 +2,24 @@ _BugContestJudging: ; 1369d
call ContestScore
callba MobileFn_105f79
call Function13819
- ld a, [wd00a]
+ ld a, [wBugContestThirdPlacePersonID]
call LoadContestantName
- ld a, [wd00b]
- ld [wd265], a
+ ld a, [wBugContestThirdPlaceMon]
+ ld [wNamedObjectIndexBuffer], a
call GetPokemonName
ld hl, BugContest_ThirdPlaceText
call PrintText
- ld a, [EndFlypoint]
+ ld a, [wBugContestSecondPlacePersonID]
call LoadContestantName
- ld a, [MovementBuffer]
- ld [wd265], a
+ ld a, [wBugContestSecondPlaceMon]
+ ld [wNamedObjectIndexBuffer], a
call GetPokemonName
ld hl, BugContest_SecondPlaceText
call PrintText
- ld a, [wd002]
+ ld a, [wBugContestFirstPlacePersonID]
call LoadContestantName
- ld a, [wd003]
- ld [wd265], a
+ ld a, [wBugContestFirstPlaceMon]
+ ld [wNamedObjectIndexBuffer], a
call GetPokemonName
ld hl, BugContest_FirstPlaceText
call PrintText
@@ -85,7 +85,7 @@ LoadContestantName: ; 13730
; If a = 0, get your name.
dec a
- jr z, .done
+ jr z, .player
; Find the pointer for the trainer class of the Bug Catching Contestant whose ID is in a.
ld c, a
ld b, 0
@@ -102,13 +102,13 @@ endr
; Save hl and bc for later.
push hl
push bc
-; Get the Trainer Class name and copy it into wd016.
+; Get the Trainer Class name and copy it into wBugContestWinnerName.
callab GetTrainerClassName
ld hl, StringBuffer1
- ld de, wd016
+ ld de, wBugContestWinnerName
ld bc, TRAINER_CLASS_NAME_LENGTH
call CopyBytes
- ld hl, wd016
+ ld hl, wBugContestWinnerName
; Delete the trailing terminator and replace it with a space.
.next
ld a, [hli]
@@ -127,15 +127,15 @@ endr
ld a, [hl]
ld b, a
callab GetTrainerName
-; Append the name to wd016.
+; Append the name to wBugContestWinnerName.
ld hl, StringBuffer1
pop de
ld bc, NAME_LENGTH - 1
jp CopyBytes
-.done
+.player
ld hl, PlayerName
- ld de, wd016
+ ld de, wBugContestWinnerName
ld bc, NAME_LENGTH
jp CopyBytes
; 13783
@@ -216,7 +216,7 @@ BugContestant_SchoolboyKipp:
; 13807
Function13807: ; 13807
- ld hl, wd00a
+ ld hl, wBugContestThirdPlacePersonID
ld de, -4
ld b, 3
.loop
@@ -232,9 +232,9 @@ Function13807: ; 13807
; 13819
Function13819: ; 13819
- call Function13833
- call Function138b0
- ld hl, wd00e
+ call ClearContestResults
+ call ComputeAIContestantScores
+ ld hl, wBugContestTempPersonID
ld a, 1
ld [hli], a
ld a, [wContestMon]
@@ -243,12 +243,12 @@ Function13819: ; 13819
ld [hli], a
ld a, [hMultiplicand]
ld [hl], a
- call Function1383e
+ call DetermineContestWinners
ret
; 13833
-Function13833: ; 13833
- ld hl, wd002
+ClearContestResults: ; 13833
+ ld hl, wBugContestFirstPlacePersonID
ld b, 12
xor a
.loop
@@ -258,69 +258,66 @@ Function13833: ; 13833
ret
; 1383e
-Function1383e: ; 1383e
- ld de, wd010
- ld hl, wd004
+DetermineContestWinners: ; 1383e
+ ld de, wBugContestTempScore
+ ld hl, wBugContestFirstPlaceScore
ld c, 2
call StringCmp
- jr c, .next
- ld hl, EndFlypoint
- ld de, wd00a
+ jr c, .not_first_place
+ ld hl, wBugContestSecondPlacePersonID
+ ld de, wBugContestThirdPlacePersonID
ld bc, 4
call CopyBytes
- ld hl, wd002
- ld de, EndFlypoint
+ ld hl, wBugContestFirstPlacePersonID
+ ld de, wBugContestSecondPlacePersonID
ld bc, 4
call CopyBytes
- ld hl, wd002
- call Function138a0
+ ld hl, wBugContestFirstPlacePersonID
+ call CopyTempContestant
jr .done
-.next
- ld de, wd010
- ld hl, wd008
+.not_first_place
+ ld de, wBugContestTempScore
+ ld hl, wBugContestSecondPlaceScore
ld c, 2
call StringCmp
- jr c, .next2
- ld hl, EndFlypoint
- ld de, wd00a
+ jr c, .not_second_place
+ ld hl, wBugContestSecondPlacePersonID
+ ld de, wBugContestThirdPlacePersonID
ld bc, 4
call CopyBytes
- ld hl, EndFlypoint
- call Function138a0
+ ld hl, wBugContestSecondPlacePersonID
+ call CopyTempContestant
jr .done
-.next2
- ld de, wd010
- ld hl, wd00c
+.not_second_place
+ ld de, wBugContestTempScore
+ ld hl, wBugContestThirdPlaceScore
ld c, 2
call StringCmp
jr c, .done
- ld hl, wd00a
- call Function138a0
+ ld hl, wBugContestThirdPlacePersonID
+ call CopyTempContestant
.done
ret
; 138a0
-Function138a0: ; 138a0
- ld de, wd00e
- ld a, [de]
- inc de
- ld [hli], a
- ld a, [de]
- inc de
- ld [hli], a
+CopyTempContestant: ; 138a0
+; Could've just called CopyBytes.
+ ld de, wBugContestTempPersonID
+rept 3
ld a, [de]
inc de
ld [hli], a
+endr
ld a, [de]
inc de
ld [hl], a
ret
; 138b0
-Function138b0: ; 138b0
+ComputeAIContestantScores: ; 138b0
ld e, 0
.loop
push de
@@ -331,7 +328,7 @@ Function138b0: ; 138b0
rept 2
inc a
endr
- ld [wd00e], a
+ ld [wBugContestTempPersonID], a
dec a
ld c, a
ld b, 0
@@ -356,7 +353,7 @@ rept 3
add hl, bc
endr
ld a, [hli]
- ld [wd00f], a
+ ld [wBugContestTempMon], a
ld a, [hli]
ld h, [hl]
ld l, a
@@ -366,11 +363,11 @@ endr
ld b, 0
add hl, bc
ld a, h
- ld [wd010], a
+ ld [wBugContestTempScore], a
ld a, l
- ld [wd011], a
+ ld [wBugContestTempScore + 1], a
push de
- call Function1383e
+ call DetermineContestWinners
pop de
.done
diff --git a/event/celebi.asm b/event/celebi.asm
new file mode 100755
index 000000000..46c78ed91
--- /dev/null
+++ b/event/celebi.asm
@@ -0,0 +1,354 @@
+Special_CelebiShrineEvent: ; 4989a
+ call DelayFrame
+ ld a, [VramState]
+ push af
+ xor a
+ ld [VramState], a
+ call LoadCelebiGFX
+ depixel 0, 10, 7, 0
+ ld a, SPRITE_ANIM_INDEX_2C
+ call _InitSpriteAnimStruct
+ ld hl, $3
+ add hl, bc
+ ld [hl], $84
+ ld hl, $2
+ add hl, bc
+ ld [hl], $1f
+ ld hl, $f
+ add hl, bc
+ ld a, $80
+ ld [hl], a
+ ld a, $a0
+ ld [wcf64], a
+ ld d, $0
+.loop
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .done
+ push bc
+ call Function49bae
+ inc d
+ push de
+ ld a, $90
+ ld [wc3b5], a
+ callba Function8cf7a
+ call Function49935
+ ld c, 2
+ call DelayFrames
+ pop de
+ pop bc
+ jr .loop
+
+.done
+ pop af
+ ld [VramState], a
+ call Function498f9
+ call Function49bf3
+ ret
+; 498f9
+
+Function498f9: ; 498f9
+ ld hl, Sprites + 2
+ xor a
+ ld c, $4
+.loop
+ ld [hli], a
+rept 3
+ inc hl
+endr
+ inc a
+ dec c
+ jr nz, .loop
+ ld hl, Sprites + $10
+ ld bc, $90
+ xor a
+ call ByteFill
+ ret
+; 49912
+
+LoadCelebiGFX: ; 49912
+ callba Function8cf53
+ ld de, SpecialCelebiLeafGFX
+ ld hl, VTiles1
+ lb bc, BANK(SpecialCelebiLeafGFX), 4
+ call Request2bpp
+ ld de, SpecialCelebiGFX
+ ld hl, VTiles1 tile $04
+ lb bc, BANK(SpecialCelebiGFX), $10
+ call Request2bpp
+ xor a
+ ld [wJumptableIndex], a
+ ret
+; 49935
+
+Function49935: ; 49935
+ ld hl, wcf64
+ ld a, [hl]
+ and a
+ jr z, .asm_4993e
+ dec [hl]
+ ret
+
+.asm_4993e
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+; 49944
+
+Function49944: ; 49944
+ ld hl, wcf65
+ ld a, [hl]
+ inc [hl]
+ and $7
+ ret nz
+ ld a, [hl]
+ and $18
+ sla a
+ add $40
+ ld d, a
+ ld e, $0
+ ld a, SPRITE_ANIM_INDEX_18 ; fly land
+ call _InitSpriteAnimStruct
+ ld hl, $3
+ add hl, bc
+ ld [hl], $80
+ ret
+; 49962
+
+SpecialCelebiLeafGFX: ; 49962
+INCBIN "gfx/special/celebi/leaf.2bpp"
+SpecialCelebiGFX: ; 499a2
+INCBIN "gfx/special/celebi/1.2bpp"
+INCBIN "gfx/special/celebi/2.2bpp"
+INCBIN "gfx/special/celebi/3.2bpp"
+INCBIN "gfx/special/celebi/4.2bpp"
+
+
+Function49aa2: ; 49aa2 (12:5aa2)
+ ld hl, $6
+ add hl, bc
+ ld a, [hl]
+ push af
+ ld hl, $5
+ add hl, bc
+ ld a, [hl]
+ cp $52
+ jp nc, Function49b30
+ ld hl, $5
+ add hl, bc
+ inc [hl]
+ ld hl, $f
+ add hl, bc
+ ld a, [hl]
+ ld d, a
+ cp $3a
+ jr c, .asm_49ac6
+ jr z, .asm_49ac6
+ sub $3
+ ld [hl], a
+.asm_49ac6
+ ld hl, $e
+ add hl, bc
+ ld a, [hl]
+ inc [hl]
+ call Function49b3b
+ ld hl, $6
+ add hl, bc
+ ld [hl], a
+ ld d, a
+ ld hl, $4
+ add hl, bc
+ add [hl]
+ cp $5c
+ jr nc, .asm_49ae2
+ cp $44
+ jr nc, .asm_49b0d
+.asm_49ae2
+ pop af
+ push af
+ cp d
+ jr nc, .asm_49af2
+ ld hl, $4
+ add hl, bc
+ add [hl]
+ cp $50
+ jr c, .asm_49b05
+ jr .asm_49afb
+.asm_49af2
+ ld hl, $4
+ add hl, bc
+ add [hl]
+ cp $50
+ jr nc, .asm_49b05
+.asm_49afb
+ ld hl, $5
+ add hl, bc
+ ld a, [hl]
+ sub $2
+ ld [hl], a
+ jr .asm_49b0d
+.asm_49b05
+ ld hl, $5
+ add hl, bc
+ ld a, [hl]
+ add $1
+ ld [hl], a
+.asm_49b0d
+ pop af
+ ld hl, $4
+ add hl, bc
+ add [hl]
+ cp $50
+ jr c, .asm_49b26
+ cp $e6
+ jr nc, .asm_49b26
+ ld hl, $1
+ add hl, bc
+ ld a, $41
+ call Function3b3c
+ jr .asm_49b2f
+.asm_49b26
+ ld hl, $1
+ add hl, bc
+ ld a, $40
+ call Function3b3c
+.asm_49b2f
+ ret
+
+Function49b30: ; 49b30 (12:5b30)
+ pop af
+ ld hl, $1
+ add hl, bc
+ ld a, $40
+ call Function3b3c
+ ret
+
+Function49b3b: ; 49b3b (12:5b3b)
+ add $10
+ and $3f
+ cp $20
+ jr nc, .asm_49b48
+ call Function49b52
+ ld a, h
+ ret
+.asm_49b48
+ and $1f
+ call Function49b52
+ ld a, h
+ xor $ff
+ inc a
+ ret
+
+Function49b52: ; 49b52 (12:5b52)
+ ld e, a
+ ld a, d
+ ld d, $0
+ ld hl, Unknown_49b6e
+rept 2
+ add hl, de
+endr
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, 0
+.asm_49b61
+ srl a
+ jr nc, .asm_49b66
+ add hl, de
+.asm_49b66
+ sla e
+ rl d
+ and a
+ jr nz, .asm_49b61
+ ret
+; 49b6e (12:5b6e)
+
+Unknown_49b6e: ; 49b6e
+ sine_wave $100
+; 49bae
+
+Function49bae: ; 49bae
+ push hl
+ push bc
+ push de
+ ld a, d
+ ld d, $3
+ ld e, d
+ cp $0
+ jr z, .asm_49bd0
+ cp d
+ jr z, .asm_49bd4
+ call Function49bed
+ cp d
+ jr z, .asm_49bd8
+ call Function49bed
+ cp d
+ jr z, .asm_49bdc
+ call Function49bed
+ cp d
+ jr c, .asm_49be9
+ jr .asm_49be5
+
+.asm_49bd0
+ ld a, $84
+ jr .asm_49bde
+
+.asm_49bd4
+ ld a, $88
+ jr .asm_49bde
+
+.asm_49bd8
+ ld a, $8c
+ jr .asm_49bde
+
+.asm_49bdc
+ ld a, $90
+
+.asm_49bde
+ ld hl, $3
+ add hl, bc
+ ld [hl], a
+ jr .asm_49be9
+
+.asm_49be5
+ pop de
+ ld d, $ff
+ push de
+
+.asm_49be9
+ pop de
+ pop bc
+ pop hl
+ ret
+; 49bed
+
+Function49bed: ; 49bed
+ push af
+ ld a, d
+ add e
+ ld d, a
+ pop af
+ ret
+; 49bf3
+
+Function49bf3: ; 49bf3
+ ld a, BATTLETYPE_CELEBI
+ ld [BattleType], a
+ ret
+; 49bf9
+
+CheckCaughtCelebi: ; 49bf9
+ ld a, [wBattleResult]
+ bit 6, a
+ jr z, .false
+ ld a, $1
+ ld [ScriptVar], a
+ jr .done
+
+.false
+ xor a
+ ld [ScriptVar], a
+
+.done
+ ret
+; 49c0c
diff --git a/event/daycare.asm b/event/daycare.asm
new file mode 100755
index 000000000..3ea64d38c
--- /dev/null
+++ b/event/daycare.asm
@@ -0,0 +1,768 @@
+Special_DayCareMan: ; 166d6
+ ld hl, wDaycareMan
+ bit 0, [hl]
+ jr nz, .asm_166fe
+ ld hl, wDaycareMan
+ ld a, $0
+ call Function1678f
+ jr c, .asm_16724
+ call Function16798
+ jr c, .asm_16721
+ callba Functionde2a
+ ld hl, wDaycareMan
+ set 0, [hl]
+ call Function167f6
+ call Function16a3b
+ ret
+
+.asm_166fe
+ callba Functione698
+ ld hl, wBreedMon1Nick
+ call Function1686d
+ call Function16807
+ jr c, .asm_16721
+ callba Functiondd21
+ call Function16850
+ ld hl, wDaycareMan
+ res 0, [hl]
+ res 5, [hl]
+ jr .asm_16724
+
+.asm_16721
+ call Function1689b
+
+.asm_16724
+ ld a, $13
+ call Function1689b
+ ret
+; 1672a
+
+Special_DayCareLady: ; 1672a
+ ld hl, wDaycareLady
+ bit 0, [hl]
+ jr nz, .asm_16752
+ ld hl, wDaycareLady
+ ld a, $2
+ call Function16781
+ jr c, .asm_1677b
+ call Function16798
+ jr c, .asm_16778
+ callba Functionde37
+ ld hl, wDaycareLady
+ set 0, [hl]
+ call Function167f6
+ call Function16a3b
+ ret
+
+.asm_16752
+ callba Functione6b3
+ ld hl, wBreedMon2Nick
+ call Function1686d
+ call Function16807
+ jr c, .asm_16778
+ callba Functiondd42
+ call Function16850
+ ld hl, wDaycareLady
+ res 0, [hl]
+ ld hl, wDaycareMan
+ res 5, [hl]
+ jr .asm_1677b
+
+.asm_16778
+ call Function1689b
+
+.asm_1677b
+ ld a, $13
+ call Function1689b
+ ret
+; 16781
+
+Function16781: ; 16781
+ bit 7, [hl]
+ jr nz, .asm_16788
+ set 7, [hl]
+ inc a
+
+.asm_16788
+ call Function1689b
+ call YesNoBox
+ ret
+; 1678f
+
+Function1678f: ; 1678f
+ set 7, [hl]
+ call Function1689b
+ call YesNoBox
+ ret
+; 16798
+
+Function16798: ; 16798
+ ld a, [PartyCount]
+ cp 2
+ jr c, .asm_167e5
+ ld a, 4
+ call Function1689b
+ ld b, 6
+ callba Function5001d
+ jr c, .asm_167dd
+ ld a, [CurPartySpecies]
+ cp EGG
+ jr z, .asm_167e1
+ callba CheckCurPartyMonFainted
+ jr c, .asm_167e9
+ ld hl, PartyMon1Item
+ ld bc, PARTYMON_STRUCT_LENGTH
+ ld a, [CurPartyMon]
+ call AddNTimes
+ ld d, [hl]
+ callba ItemIsMail
+ jr c, .asm_167ed
+ ld hl, PartyMonNicknames
+ ld a, [CurPartyMon]
+ call GetNick
+ and a
+ ret
+
+.asm_167dd
+ ld a, $12
+ scf
+ ret
+
+.asm_167e1
+ ld a, $6
+ scf
+ ret
+
+.asm_167e5
+ ld a, $7
+ scf
+ ret
+
+.asm_167e9
+ ld a, $8
+ scf
+ ret
+
+.asm_167ed
+ ld a, $a
+ scf
+ ret
+; 167f1
+
+UnknownText_0x167f1: ; 0x167f1
+ ;
+ text_jump UnknownText_0x1bdaa7
+ db "@"
+; 0x167f6
+
+Function167f6: ; 167f6
+ ld a, $5
+ call Function1689b
+ ld a, [CurPartySpecies]
+ call PlayCry
+ ld a, $9
+ call Function1689b
+ ret
+; 16807
+
+Function16807: ; 16807
+ ld a, [StringBuffer2 + 1]
+ and a
+ jr nz, .asm_16819
+ ld a, $f
+ call Function1689b
+ call YesNoBox
+ jr c, .asm_16844
+ jr .asm_1682d
+
+.asm_16819
+ ld a, $b
+ call Function1689b
+ call YesNoBox
+ jr c, .asm_16844
+ ld a, $c
+ call Function1689b
+ call YesNoBox
+ jr c, .asm_16844
+
+.asm_1682d
+ ld de, Money
+ ld bc, StringBuffer2 + 2
+ callba CompareMoney
+ jr c, .asm_16848
+ ld a, [PartyCount]
+ cp $6
+ jr nc, .asm_1684c
+ and a
+ ret
+
+.asm_16844
+ ld a, $12
+ scf
+ ret
+
+.asm_16848
+ ld a, $11
+ scf
+ ret
+
+.asm_1684c
+ ld a, $10
+ scf
+ ret
+; 16850
+
+Function16850: ; 16850
+ ld bc, StringBuffer2 + 2
+ ld de, Money
+ callba TakeMoney
+ ld a, $d
+ call Function1689b
+ ld a, [CurPartySpecies]
+ call PlayCry
+ ld a, $e
+ call Function1689b
+ ret
+; 1686d
+
+Function1686d: ; 1686d
+ ld a, b
+ ld [StringBuffer2], a
+ ld a, d
+ ld [StringBuffer2 + 1], a
+ ld de, StringBuffer1
+ ld bc, NAME_LENGTH
+ call CopyBytes
+ ld hl, 0
+ ld bc, $64
+ ld a, [StringBuffer2 + 1]
+ call AddNTimes
+ ld de, $64
+ add hl, de
+ xor a
+ ld [StringBuffer2 + 2], a
+ ld a, h
+ ld [StringBuffer2 + 3], a
+ ld a, l
+ ld [StringBuffer2 + 4], a
+ ret
+; 1689b
+
+Function1689b: ; 1689b
+ ld e, a
+ ld d, 0
+ ld hl, TextTable_168aa
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call PrintText
+ ret
+; 168aa
+
+TextTable_168aa: ; 168aa
+ dw UnknownText_0x168d2
+ dw UnknownText_0x168d7
+ dw UnknownText_0x168dc
+ dw UnknownText_0x168e1
+ dw UnknownText_0x168e6
+ dw UnknownText_0x168ff
+ dw UnknownText_0x168f0
+ dw UnknownText_0x168eb
+ dw UnknownText_0x168fa
+ dw UnknownText_0x16904
+ dw UnknownText_0x168f5
+ dw UnknownText_0x16909
+ dw UnknownText_0x1690e
+ dw UnknownText_0x16913
+ dw UnknownText_0x16918
+ dw UnknownText_0x1691d
+ dw UnknownText_0x16922
+ dw UnknownText_0x16927
+ dw UnknownText_0x1692c
+ dw UnknownText_0x16931
+; 168d2
+
+UnknownText_0x168d2: ; 0x168d2
+ ; I'm the DAY-CARE MAN. Want me to raise a #MON?
+ text_jump UnknownText_0x1bdaa9
+ db "@"
+; 0x168d7
+
+UnknownText_0x168d7: ; 0x168d7
+ ; I'm the DAY-CARE MAN. Do you know about EGGS? I was raising #MON with my wife, you see. We were shocked to find an EGG! How incredible is that? So, want me to raise a #MON?
+ text_jump UnknownText_0x1bdad8
+ db "@"
+; 0x168dc
+
+UnknownText_0x168dc: ; 0x168dc
+ ; I'm the DAY-CARE LADY. Should I raise a #MON for you?
+ text_jump UnknownText_0x1bdb85
+ db "@"
+; 0x168e1
+
+UnknownText_0x168e1: ; 0x168e1
+ ; I'm the DAY-CARE LADY. Do you know about EGGS? My husband and I were raising some #MON, you see. We were shocked to find an EGG! How incredible could that be? Should I raise a #MON for you?
+ text_jump UnknownText_0x1bdbbb
+ db "@"
+; 0x168e6
+
+UnknownText_0x168e6: ; 0x168e6
+ ; What should I raise for you?
+ text_jump UnknownText_0x1bdc79
+ db "@"
+; 0x168eb
+
+UnknownText_0x168eb: ; 0x168eb
+ ; Oh? But you have just one #MON.
+ text_jump UnknownText_0x1bdc97
+ db "@"
+; 0x168f0
+
+UnknownText_0x168f0: ; 0x168f0
+ ; Sorry, but I can't accept an EGG.
+ text_jump UnknownText_0x1bdcb8
+ db "@"
+; 0x168f5
+
+UnknownText_0x168f5: ; 0x168f5
+ ; Remove MAIL before you come see me.
+ text_jump UnknownText_0x1bdcda
+ db "@"
+; 0x168fa
+
+UnknownText_0x168fa: ; 0x168fa
+ ; If you give me that, what will you battle with?
+ text_jump UnknownText_0x1bdcff
+ db "@"
+; 0x168ff
+
+UnknownText_0x168ff: ; 0x168ff
+ ; OK. I'll raise your @ .
+ text_jump UnknownText_0x1bdd30
+ db "@"
+; 0x16904
+
+UnknownText_0x16904: ; 0x16904
+ ; Come back for it later.
+ text_jump UnknownText_0x1bdd4b
+ db "@"
+; 0x16909
+
+UnknownText_0x16909: ; 0x16909
+ ; Are we geniuses or what? Want to see your @ ?
+ text_jump UnknownText_0x1bdd64
+ db "@"
+; 0x1690e
+
+UnknownText_0x1690e: ; 0x1690e
+ ; Your @ has grown a lot. By level, it's grown by @ . If you want your #MON back, it will cost ¥@ .
+ text_jump UnknownText_0x1bdd96
+ db "@"
+; 0x16913
+
+UnknownText_0x16913: ; 0x16913
+ ; Perfect! Here's your #MON.
+ text_jump UnknownText_0x1bde04
+ db "@"
+; 0x16918
+
+UnknownText_0x16918: ; 0x16918
+ ; got back @ .
+ text_jump UnknownText_0x1bde1f
+ db "@"
+; 0x1691d
+
+UnknownText_0x1691d: ; 0x1691d
+ ; Huh? Back already? Your @ needs a little more time with us. If you want your #MON back, it will cost ¥100.
+ text_jump UnknownText_0x1bde32
+ db "@"
+; 0x16922
+
+UnknownText_0x16922: ; 0x16922
+ ; You have no room for it.
+ text_jump UnknownText_0x1bdea2
+ db "@"
+; 0x16927
+
+UnknownText_0x16927: ; 0x16927
+ ; You don't have enough money.
+ text_jump UnknownText_0x1bdebc
+ db "@"
+; 0x1692c
+
+UnknownText_0x1692c: ; 0x1692c
+ ; Oh, fine then.
+ text_jump UnknownText_0x1bded9
+ db "@"
+; 0x16931
+
+UnknownText_0x16931: ; 0x16931
+ ; Come again.
+ text_jump UnknownText_0x1bdee9
+ db "@"
+; 0x16936
+
+Special_DayCareManOutside: ; 16936
+ ld hl, wDaycareMan
+ bit 6, [hl]
+ jr nz, Function16949
+ ld hl, UnknownText_0x16944
+ call PrintText
+ ret
+
+UnknownText_0x16944: ; 0x16944
+ ; Not yet…
+ text_jump UnknownText_0x1bdef6
+ db "@"
+; 0x16949
+
+Function16949: ; 16949
+ ld hl, UnknownText_0x16993
+ call PrintText
+ call YesNoBox
+ jr c, .asm_1697c
+ ld a, [PartyCount]
+ cp PARTY_LENGTH
+ jr nc, .asm_16987
+ call Function169ac
+ ld hl, wDaycareMan
+ res 6, [hl]
+ call Function16a3b
+ ld hl, UnknownText_0x16998
+ call PrintText
+ ld de, SFX_GET_EGG_FROM_DAYCARE_LADY
+ call PlaySFX
+ ld c, 120
+ call DelayFrames
+ ld hl, UnknownText_0x1699d
+ jr .asm_1697f
+
+.asm_1697c
+ ld hl, UnknownText_0x169a2
+
+.asm_1697f
+ call PrintText
+ xor a
+ ld [ScriptVar], a
+ ret
+
+.asm_16987
+ ld hl, UnknownText_0x169a7
+ call PrintText
+ ld a, $1
+ ld [ScriptVar], a
+ ret
+; 16993
+
+UnknownText_0x16993: ; 0x16993
+ ; Ah, it's you! We were raising your #MON, and my goodness, were we surprised! Your #MON had an EGG! We don't know how it got there, but your #MON had it. You want it?
+ text_jump UnknownText_0x1bdf00
+ db "@"
+; 0x16998
+
+UnknownText_0x16998: ; 0x16998
+ ; received the EGG!
+ text_jump UnknownText_0x1bdfa5
+ db "@"
+; 0x1699d
+
+UnknownText_0x1699d: ; 0x1699d
+ ; Take good care of it.
+ text_jump UnknownText_0x1bdfba
+ db "@"
+; 0x169a2
+
+UnknownText_0x169a2: ; 0x169a2
+ ; Well then, I'll keep it. Thanks!
+ text_jump UnknownText_0x1bdfd1
+ db "@"
+; 0x169a7
+
+UnknownText_0x169a7: ; 0x169a7
+ ; You have no room in your party. Come back later.
+ text_jump UnknownText_0x1bdff2
+ db "@"
+; 0x169ac
+
+Function169ac: ; 169ac
+ ld a, [wEggMonLevel]
+ ld [CurPartyLevel], a
+ ld hl, PartyCount
+ ld a, [hl]
+ cp PARTY_LENGTH
+ jr nc, .asm_16a2f
+ inc a
+ ld [hl], a
+ ld c, a
+ ld b, 0
+ add hl, bc
+ ld a, EGG
+ ld [hli], a
+ ld a, [wEggMonSpecies]
+ ld [CurSpecies], a
+ ld [CurPartySpecies], a
+ ld a, $ff
+ ld [hl], a
+ ld hl, PartyMonNicknames
+ ld bc, PKMN_NAME_LENGTH
+ call Function16a31
+ ld hl, wEggNick
+ call CopyBytes
+ ld hl, PartyMonOT
+ ld bc, NAME_LENGTH
+ call Function16a31
+ ld hl, wEggOT
+ call CopyBytes
+ ld hl, PartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call Function16a31
+ ld hl, wEggMon
+ ld bc, wEggMonEnd - wEggMon
+ call CopyBytes
+ call GetBaseData
+ ld a, [PartyCount]
+ dec a
+ ld hl, PartyMon1
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call AddNTimes
+ ld b, h
+ ld c, l
+ ld hl, MON_ID + 1
+ add hl, bc
+ push hl
+ ld hl, MON_MAXHP
+ add hl, bc
+ ld d, h
+ ld e, l
+ pop hl
+ push bc
+ ld b, $0
+ predef CalcPkmnStats
+ pop bc
+ ld hl, MON_HP
+ add hl, bc
+ xor a
+ ld [hli], a
+ ld [hl], a
+ and a
+ ret
+
+.asm_16a2f
+ scf
+ ret
+; 16a31
+
+Function16a31: ; 16a31
+ ld a, [PartyCount]
+ dec a
+ call AddNTimes
+ ld d, h
+ ld e, l
+ ret
+; 16a3b
+
+Function16a3b: ; 16a3b
+ ld a, [wDaycareLady]
+ bit 0, a
+ ret z
+ ld a, [wDaycareMan]
+ bit 0, a
+ ret z
+ callab Function16e1d
+ ld a, [wd265]
+ and a
+ ret z
+ inc a
+ ret z
+ ld hl, wDaycareMan
+ set 5, [hl]
+.asm_16a59
+ call Random
+ cp 150
+ jr c, .asm_16a59
+ ld [wStepsToEgg], a
+ jp Function16a66
+; 16a66
+
+Function16a66: ; 16a66
+ xor a
+ ld hl, wEggMon
+ ld bc, wEggMonEnd - wEggMon
+ call ByteFill
+ ld hl, wEggNick
+ ld bc, PKMN_NAME_LENGTH
+ call ByteFill
+ ld hl, wEggOT
+ ld bc, NAME_LENGTH
+ call ByteFill
+ ld a, [wBreedMon1DVs]
+ ld [TempMonDVs], a
+ ld a, [wBreedMon1DVs + 1]
+ ld [TempMonDVs + 1], a
+ ld a, [wBreedMon1Species]
+ ld [CurPartySpecies], a
+ ld a, $3
+ ld [MonType], a
+ ld a, [wBreedMon1Species]
+ cp DITTO
+ ld a, $1
+ jr z, .asm_16ab6
+ ld a, [wBreedMon2Species]
+ cp DITTO
+ ld a, $0
+ jr z, .asm_16ab6
+ callba GetGender
+ ld a, $0
+ jr z, .asm_16ab6
+ inc a
+
+.asm_16ab6
+ ld [wDittoInDaycare], a
+ and a
+ ld a, [wBreedMon1Species]
+ jr z, .asm_16ac2
+ ld a, [wBreedMon2Species]
+
+.asm_16ac2
+ ld [CurPartySpecies], a
+ callab GetPreEvolution
+ callab GetPreEvolution
+ ld a, EGG_LEVEL
+ ld [CurPartyLevel], a
+
+ ld a, [CurPartySpecies]
+ cp NIDORAN_F
+ jr nz, .asm_16ae8
+ call Random
+ cp $80
+ ld a, NIDORAN_F
+ jr c, .asm_16ae8
+ ld a, NIDORAN_M
+.asm_16ae8
+ ld [CurPartySpecies], a
+ ld [CurSpecies], a
+ ld [wEggMonSpecies], a
+
+ call GetBaseData
+ ld hl, wEggNick
+ ld de, String_16be0
+ call CopyName2
+ ld hl, PlayerName
+ ld de, wEggOT
+ ld bc, NAME_LENGTH
+ call CopyBytes
+ xor a
+ ld [wEggMonItem], a
+ ld de, wEggMonMoves
+ xor a
+ ld [Buffer1], a
+ predef FillMoves
+ callba Function170bf
+ ld hl, wEggMonID
+ ld a, [PlayerID]
+ ld [hli], a
+ ld a, [PlayerID + 1]
+ ld [hl], a
+ ld a, [CurPartyLevel]
+ ld d, a
+ callab CalcExpAtLevel
+ ld hl, wEggMonExp
+ ld a, [hMultiplicand]
+ ld [hli], a
+ ld a, [$ffb5]
+ ld [hli], a
+ ld a, [$ffb6]
+ ld [hl], a
+ xor a
+ ld b, $a
+ ld hl, wEggMonStatExp
+.asm_16b46
+ ld [hli], a
+ dec b
+ jr nz, .asm_16b46
+ ld hl, wEggMonDVs
+ call Random
+ ld [hli], a
+ ld [TempMonDVs], a
+ call Random
+ ld [hld], a
+ ld [TempMonDVs + 1], a
+ ld de, wBreedMon1DVs
+ ld a, [wBreedMon1Species]
+ cp DITTO
+ jr z, .asm_16b98
+ ld de, wBreedMon2DVs
+ ld a, [wBreedMon2Species]
+ cp DITTO
+ jr z, .asm_16b98
+ ld a, $3
+ ld [MonType], a
+ push hl
+ callba GetGender
+ pop hl
+ ld de, wBreedMon1DVs
+ ld bc, wBreedMon2DVs
+ jr c, .asm_16bab
+ jr z, .asm_16b90
+ ld a, [wDittoInDaycare]
+ and a
+ jr z, .asm_16b98
+ ld d, b
+ ld e, c
+ jr .asm_16b98
+
+.asm_16b90
+ ld a, [wDittoInDaycare]
+ and a
+ jr nz, .asm_16b98
+ ld d, b
+ ld e, c
+
+.asm_16b98
+ ld a, [de]
+ inc de
+ and $f
+ ld b, a
+ ld a, [hl]
+ and $f0
+ add b
+ ld [hli], a
+ ld a, [de]
+ and $7
+ ld b, a
+ ld a, [hl]
+ and $f8
+ add b
+ ld [hl], a
+
+.asm_16bab
+ ld hl, StringBuffer1
+ ld de, wd050
+ ld bc, NAME_LENGTH
+ call CopyBytes
+ ld hl, wEggMonMoves
+ ld de, wEggMonPP
+ predef FillPP
+ ld hl, wd050
+ ld de, StringBuffer1
+ ld bc, NAME_LENGTH
+ call CopyBytes
+ ld a, [BaseEggSteps]
+ ld hl, wEggMonHappiness
+ ld [hli], a
+ xor a
+rept 2
+ ld [hli], a
+endr
+ ld [hl], a
+ ld a, [CurPartyLevel]
+ ld [wEggMonLevel], a
+ ret
+; 16be0
+
+String_16be0: ; 16be0
+ db "EGG@"
+; 16be4
diff --git a/event/elevator.asm b/event/elevator.asm
index d43bc9d54..0aa5c1f05 100755
--- a/event/elevator.asm
+++ b/event/elevator.asm
@@ -127,10 +127,10 @@ Function134dd: ; 134dd
call Elevator_GetCurrentFloorText
ld hl, Elevator_MenuDataHeader
call CopyMenuDataHeader
- call Function352f
+ call InitScrollingMenu
call UpdateSprites
xor a
- ld [wd0e4], a
+ ld [wMenuScrollPosition], a
call HandleScrollingMenu
call WriteBackup
ld a, [wcf73]
diff --git a/event/field_moves.asm b/event/field_moves.asm
new file mode 100755
index 000000000..d6fa4a0bb
--- /dev/null
+++ b/event/field_moves.asm
@@ -0,0 +1,312 @@
+PlayWhirlpoolSound: ; 8c7d4
+ call WaitSFX
+ ld de, SFX_SURF
+ call PlaySFX
+ call WaitSFX
+ ret
+; 8c7e1
+
+BlindingFlash: ; 8c7e1
+ callba FadeOutPalettes
+ ld hl, StatusFlags
+ set 2, [hl]
+ callba Function8c0e5
+ callba Function8c001
+ ld b, SCGB_09
+ call GetSGBLayout
+ callba Function49409
+ callba FadeInPalettes
+ ret
+; 8c80a
+
+ShakeHeadbuttTree: ; 8c80a
+ callba Function8cf53
+ ld de, CutGrassGFX
+ ld hl, VTiles1
+ lb bc, BANK(CutGrassGFX), 4
+ call Request2bpp
+ ld de, HeadbuttTreeGFX
+ ld hl, VTiles1 tile $04
+ lb bc, BANK(HeadbuttTreeGFX), 8
+ call Request2bpp
+ call Function8cad3
+ ld a, SPRITE_ANIM_INDEX_1B
+ call _InitSpriteAnimStruct
+ ld hl, $3
+ add hl, bc
+ ld [hl], $84
+ ld a, $90
+ ld [wc3b5], a
+ callba Function8cf7a
+ call GetHeadbuttTreeRelativeLocation
+ ld a, $20
+ ld [wcf64], a
+ call WaitSFX
+ ld de, SFX_SANDSTORM
+ call PlaySFX
+.loop
+ ld hl, wcf64
+ ld a, [hl]
+ and a
+ jr z, .done
+ dec [hl]
+ ld a, $90
+ ld [wc3b5], a
+ callba Function8cf7a
+ call DelayFrame
+ jr .loop
+
+.done
+ call OverworldTextModeSwitch
+ call WaitBGMap
+ xor a
+ ld [hBGMapMode], a
+ callba Function8cf53
+ ld hl, Sprites + $90
+ ld bc, $10
+ xor a
+ call ByteFill
+ ld de, Font
+ ld hl, VTiles1
+ lb bc, BANK(Font), $c
+ call Get1bpp
+ call ReplaceKrisSprite
+ ret
+; 8c893
+
+HeadbuttTreeGFX: ; 8c893
+INCBIN "gfx/unknown/08c893.2bpp"
+; 8c913
+
+GetHeadbuttTreeRelativeLocation: ; 8c913
+ xor a
+ ld [hBGMapMode], a
+ ld a, [PlayerDirection]
+ and %00001100
+ srl a
+ ld e, a
+ ld d, 0
+ ld hl, TreeRelativeLocationTable
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+
+ ld a, $5
+ ld [hli], a
+ ld [hld], a
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ ld [hli], a
+ ld [hld], a
+ call WaitBGMap
+ xor a
+ ld [hBGMapMode], a
+ ret
+; 8c938
+
+TreeRelativeLocationTable: ; 8c938
+ dwcoord 8, 8 + 2 ; RIGHT
+ dwcoord 8, 8 - 2 ; LEFT
+ dwcoord 8 - 2, 8 ; DOWN
+ dwcoord 8 + 2, 8 ; UP
+; 8c940
+
+OWCutAnimation: ; 8c940
+ ld a, e
+ and $1
+ ld [wJumptableIndex], a
+ call .LoadCutGFX
+ call WaitSFX
+ ld de, SFX_PLACE_PUZZLE_PIECE_DOWN
+ call PlaySFX
+.loop
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .finish
+ ld a, $90
+ ld [wc3b5], a
+ callab Function8cf7a
+ call OWCutJumptable
+ call DelayFrame
+ jr .loop
+
+.finish
+ ret
+; 8c96d
+
+.LoadCutGFX: ; 8c96d
+ callab Function8cf53 ; pointless to farcall
+ ld de, CutGrassGFX
+ ld hl, VTiles1
+ lb bc, BANK(CutGrassGFX), 4
+ call Request2bpp
+ ld de, CutTreeGFX
+ ld hl, VTiles1 tile $4
+ lb bc, BANK(CutTreeGFX), 4
+ call Request2bpp
+ ret
+; 8c98c
+
+CutTreeGFX: ; c898c
+INCBIN "gfx/misc/cut_tree.2bpp"
+; c89cc
+
+CutGrassGFX: ; 8c9cc
+INCBIN "gfx/misc/cut_grass.2bpp"
+; 8ca0c
+
+OWCutJumptable: ; 8ca0c
+ ld a, [wJumptableIndex]
+ ld e, a
+ ld d, 0
+ ld hl, .jumptable
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 8ca1b
+
+
+.jumptable: ; 8ca1b (23:4a1b)
+ dw Function8ca23
+ dw Function8ca3c
+ dw Function8ca5c
+ dw Function8ca64
+
+
+Function8ca23: ; 8ca23 (23:4a23)
+ call Function8cad3
+ ld a, SPRITE_ANIM_INDEX_17 ; leaf
+ call _InitSpriteAnimStruct
+ ld hl, $3
+ add hl, bc
+ ld [hl], $84
+ ld a, $20
+ ld [wcf64], a
+ ld hl, wJumptableIndex
+rept 2
+ inc [hl]
+endr
+ ret
+
+Function8ca3c: ; 8ca3c (23:4a3c)
+ call Function8ca8e
+ xor a
+ call Function8ca73
+ ld a, $10
+ call Function8ca73
+ ld a, $20
+ call Function8ca73
+ ld a, $30
+ call Function8ca73
+ ld a, $20
+ ld [wcf64], a
+ ld hl, wJumptableIndex
+ inc [hl]
+ ret
+
+Function8ca5c: ; 8ca5c (23:4a5c)
+ ld a, $1
+ ld [hBGMapMode], a
+ ld hl, wJumptableIndex
+ inc [hl]
+
+Function8ca64: ; 8ca64 (23:4a64)
+ ld hl, wcf64
+ ld a, [hl]
+ and a
+ jr z, .asm_8ca6d
+ dec [hl]
+ ret
+.asm_8ca6d
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+
+Function8ca73: ; 8ca73 (23:4a73)
+ push de
+ push af
+ ld a, SPRITE_ANIM_INDEX_16 ; fly takeoff
+ call _InitSpriteAnimStruct
+ ld hl, $3
+ add hl, bc
+ ld [hl], $80
+ ld hl, $e
+ add hl, bc
+ ld [hl], $4
+ pop af
+ ld hl, $c
+ add hl, bc
+ ld [hl], a
+ pop de
+ ret
+
+Function8ca8e: ; 8ca8e (23:4a8e)
+ ld de, 0
+ ld a, [wd197]
+ bit 0, a
+ jr z, .asm_8ca9a
+ set 0, e
+.asm_8ca9a
+ ld a, [wd196]
+ bit 0, a
+ jr z, .asm_8caa3
+ set 1, e
+.asm_8caa3
+ ld a, [PlayerDirection]
+ and $c
+ add e
+ ld e, a
+ ld hl, Unknown_8cab3
+rept 2
+ add hl, de
+endr
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ret
+; 8cab3 (23:4ab3)
+
+Unknown_8cab3: ; 8cab3
+ db $58, $60
+ db $48, $60
+ db $58, $70
+ db $48, $70
+ db $58, $40
+ db $48, $40
+ db $58, $50
+ db $48, $50
+ db $38, $60
+ db $48, $60
+ db $38, $50
+ db $48, $50
+ db $58, $60
+ db $68, $60
+ db $58, $50
+ db $68, $50
+; 8cad3
+
+Function8cad3: ; 8cad3 (23:4ad3)
+ ld a, [PlayerDirection]
+ and $c
+ srl a
+ ld e, a
+ ld d, 0
+ ld hl, Unknown_8cae5
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ret
+; 8cae5 (23:4ae5)
+
+Unknown_8cae5: ; 8cae5
+ db $50, $68
+ db $50, $48
+ db $40, $58
+ db $60, $58
+; 8caed
diff --git a/event/forced_movement.asm b/event/forced_movement.asm
index 89a776d60..b6e6091ff 100755
--- a/event/forced_movement.asm
+++ b/event/forced_movement.asm
@@ -28,41 +28,33 @@ Script_ForcedMovement:: ; 0x1253d
; 0x12564
.MovementData_up: ; 0x12564
- step_wait5
- big_step_down
+ step_dig 16
turn_in_down
- step_wait5
- big_step_down
+ step_dig 16
turn_head_down
step_end
; 0x1256b
.MovementData_down: ; 0x1256b
- step_wait5
- big_step_down
+ step_dig 16
turn_in_up
- step_wait5
- big_step_down
+ step_dig 16
turn_head_up
step_end
; 0x12572
.MovementData_right: ; 0x12572
- step_wait5
- big_step_down
+ step_dig 16
turn_in_left
- step_wait5
- big_step_down
+ step_dig 16
turn_head_left
step_end
; 0x12579
.MovementData_left: ; 0x12579
- step_wait5
- big_step_down
+ step_dig 16
turn_in_right
- step_wait5
- big_step_down
+ step_dig 16
turn_head_right
step_end
; 0x12580
diff --git a/event/halloffame.asm b/event/halloffame.asm
new file mode 100755
index 000000000..d4b86286d
--- /dev/null
+++ b/event/halloffame.asm
@@ -0,0 +1,628 @@
+HallOfFame:: ; 0x8640e
+ call Function8648e
+ ld a, [StatusFlags]
+ push af
+ ld a, 1
+ ld [wc2cd], a
+ call DisableSpriteUpdates
+ ld a, SPAWN_LANCE
+ ld [wSpawnAfterChampion], a
+
+ ; Enable the Pokégear map to cycle through all of Kanto
+ ld hl, StatusFlags
+ set 6, [hl] ; hall of fame
+
+ callba Function14da0
+
+ ld hl, wHallOfFameCount
+ ld a, [hl]
+ cp 200
+ jr nc, .ok
+ inc [hl]
+.ok
+ callba SaveGameData
+ call GetHallOfFameParty
+ callba AddHallOfFameEntry
+
+ xor a
+ ld [wc2cd], a
+ call Function864c3
+ pop af
+ ld b, a
+ callba Function109847
+ ret
+; 0x86455
+
+RedCredits:: ; 86455
+ ld a, MUSIC_NONE % $100
+ ld [MusicFadeIDLo], a
+ ld a, MUSIC_NONE / $100
+ ld [MusicFadeIDHi], a
+ ld a, $a
+ ld [MusicFade], a
+ callba FadeOutPalettes
+ xor a
+ ld [VramState], a
+ ld [hMapAnims], a
+ callba Function4e8c2
+ ld c, 8
+ call DelayFrames
+ call DisableSpriteUpdates
+ ld a, SPAWN_RED
+ ld [wSpawnAfterChampion], a
+ ld a, [StatusFlags]
+ ld b, a
+ callba Function109847
+ ret
+; 8648e
+
+Function8648e: ; 8648e
+ ld a, MUSIC_NONE % $100
+ ld [MusicFadeIDLo], a
+ ld a, MUSIC_NONE / $100
+ ld [MusicFadeIDHi], a
+ ld a, 10
+ ld [MusicFade], a
+ callba FadeOutPalettes
+ xor a
+ ld [VramState], a
+ ld [hMapAnims], a
+ callba Function4e881
+ ld c, 100
+ jp DelayFrames
+; 864b4
+
+Function864b4: ; 864b4
+ push de
+ ld de, MUSIC_NONE
+ call PlayMusic
+ call DelayFrame
+ pop de
+ call PlayMusic
+ ret
+; 864c3
+
+Function864c3: ; 864c3
+ xor a
+ ld [wJumptableIndex], a
+ call Function8671c
+ jr c, .done
+ ld de, SCREEN_WIDTH
+ call Function864b4
+ xor a
+ ld [wcf64], a
+.loop
+ ld a, [wcf64]
+ cp 6
+ jr nc, .done
+ ld hl, wc608 + 1
+ ld bc, $10
+ call AddNTimes
+ ld a, [hl]
+ cp -1
+ jr z, .done
+ push hl
+ call Function865b5
+ pop hl
+ call Function8650c
+ jr c, .done
+ ld hl, wcf64
+ inc [hl]
+ jr .loop
+
+.done
+ call Function86810
+ ld a, $4
+ ld [MusicFade], a
+ call RotateThreePalettesRight
+ ld c, 8
+ call DelayFrames
+ ret
+; 8650c
+
+Function8650c: ; 8650c
+ call Function86748
+ ld de, String_8652c
+ hlcoord 1, 2
+ call PlaceString
+ call WaitBGMap
+ decoord 6, 5
+ ld c, $6
+ predef Functiond066e
+ ld c, 60
+ call DelayFrames
+ and a
+ ret
+; 8652c
+
+String_8652c:
+ db "New Hall of Famer!@"
+; 8653f
+
+
+GetHallOfFameParty: ; 8653f
+ ld hl, OverworldMap
+ ld bc, HOF_LENGTH
+ xor a
+ call ByteFill
+ ld a, [wHallOfFameCount]
+ ld de, OverworldMap
+ ld [de], a
+ inc de
+ ld hl, PartySpecies
+ ld c, 0
+.next
+ ld a, [hli]
+ cp -1
+ jr z, .done
+ cp EGG
+ jr nz, .mon
+ inc c
+ jr .next
+
+.mon
+ push hl
+ push de
+ push bc
+
+ ld a, c
+ ld hl, PartyMons
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call AddNTimes
+ ld c, l
+ ld b, h
+
+ ld hl, MON_SPECIES
+ add hl, bc
+ ld a, [hl]
+ ld [de], a
+ inc de
+
+ ld hl, MON_ID
+ add hl, bc
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ inc de
+
+ ld hl, MON_DVS
+ add hl, bc
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ inc de
+
+ ld hl, MON_LEVEL
+ add hl, bc
+ ld a, [hl]
+ ld [de], a
+ inc de
+
+ pop bc
+ push bc
+ ld a, c
+ ld hl, PartyMonNicknames
+ ld bc, PKMN_NAME_LENGTH
+ call AddNTimes
+ ld bc, PKMN_NAME_LENGTH - 1
+ call CopyBytes
+
+ pop bc
+ inc c
+ pop de
+ ld hl, HOF_MON_LENGTH
+ add hl, de
+ ld e, l
+ ld d, h
+ pop hl
+ jr .next
+
+.done
+ ld a, $ff
+ ld [de], a
+ ret
+; 865b5
+
+Function865b5: ; 865b5
+ push hl
+ call ClearBGPalettes
+ callba Function4e906
+ pop hl
+ ld a, [hli]
+ ld [TempMonSpecies], a
+ ld [CurPartySpecies], a
+rept 2
+ inc hl
+endr
+ ld a, [hli]
+ ld [TempMonDVs], a
+ ld a, [hli]
+ ld [TempMonDVs + 1], a
+ ld hl, TempMonDVs
+ predef GetUnownLetter
+ hlcoord 0, 0
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ ld a, " "
+ call ByteFill
+ ld de, VTiles2 tile $31
+ predef GetBackpic
+ ld a, $31
+ ld [hFillBox], a
+ hlcoord 6, 6
+ lb bc, 6, 6
+ predef FillBox
+ ld a, $d0
+ ld [hSCY], a
+ ld a, $90
+ ld [hSCX], a
+ call WaitBGMap
+ xor a
+ ld [hBGMapMode], a
+ ld b, SCGB_1A
+ call GetSGBLayout
+ call SetPalettes
+ call Function86635
+ xor a
+ ld [wc2c6], a
+ hlcoord 0, 0
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ ld a, " "
+ call ByteFill
+ hlcoord 6, 5
+ call _PrepMonFrontpic
+ call WaitBGMap
+ xor a
+ ld [hBGMapMode], a
+ ld [hSCY], a
+ call Function86643
+ ret
+; 86635
+
+Function86635: ; 86635
+.loop
+ ld a, [hSCX]
+ cp $70
+ ret z
+ add $4
+ ld [hSCX], a
+ call DelayFrame
+ jr .loop
+; 86643
+
+Function86643: ; 86643
+.loop
+ ld a, [hSCX]
+ and a
+ ret z
+rept 2
+ dec a
+endr
+ ld [hSCX], a
+ call DelayFrame
+ jr .loop
+; 86650
+
+_HallOfFamePC: ; 86650
+ call LoadFontsBattleExtra
+ xor a
+ ld [wJumptableIndex], a
+.loop
+ call Function8671c
+ ret c
+ call Function86665
+ ret c
+ ld hl, wJumptableIndex
+ inc [hl]
+ jr .loop
+; 86665
+
+Function86665: ; 86665
+ xor a
+ ld [wcf64], a
+.next
+ call Function86692
+ jr c, .start_button
+.loop
+ call JoyTextDelay
+ ld hl, hJoyLast
+ ld a, [hl]
+ and B_BUTTON
+ jr nz, .b_button
+ ld a, [hl]
+ and A_BUTTON
+ jr nz, .a_button
+ ld a, [hl]
+ and START
+ jr nz, .start_button
+ call DelayFrame
+ jr .loop
+
+.a_button
+ ld hl, wcf64
+ inc [hl]
+ jr .next
+
+.b_button
+ scf
+ ret
+
+.start_button
+ and a
+ ret
+; 86692
+
+Function86692: ; 86692
+; Print the number of times the player has entered the Hall of Fame.
+; If that number is above 200, print "HOF Master!" instead.
+ ld a, [wcf64]
+ cp $6
+ jr nc, .fail
+ ld hl, wc608 + 1
+ ld bc, $10
+ call AddNTimes
+ ld a, [hl]
+ cp $ff
+ jr nz, .okay
+
+.fail
+ scf
+ ret
+
+.okay
+ push hl
+ call ClearBGPalettes
+ pop hl
+ call Function86748
+ ld a, [wc608]
+ cp 200 + 1
+ jr c, .print_num_hof
+ ld de, String_866fc
+ hlcoord 1, 2
+ call PlaceString
+ hlcoord 13, 2
+ jr .finish
+
+.print_num_hof
+ ld de, String_8670c
+ hlcoord 1, 2
+ call PlaceString
+ hlcoord 2, 2
+ ld de, wc608
+ lb bc, 1, 3
+ call PrintNum
+ hlcoord 11, 2
+
+.finish
+ ld de, String_866fb
+ call PlaceString
+ call WaitBGMap
+ ld b, SCGB_1A
+ call GetSGBLayout
+ call SetPalettes
+ decoord 6, 5
+ ld c, $6
+ predef Functiond066e
+ and a
+ ret
+; 866fb
+
+String_866fb:
+ db "@"
+; 866fc
+
+String_866fc:
+ db " HOF Master!@"
+; 8670c
+
+String_8670c:
+ db " -Time Famer@"
+; 8671c
+
+
+Function8671c: ; 8671c
+ ld a, [wJumptableIndex]
+ cp NUM_HOF_TEAMS
+ jr nc, .full
+ ld hl, sHallOfFame
+ ld bc, HOF_LENGTH
+ call AddNTimes
+ ld a, BANK(sHallOfFame)
+ call GetSRAMBank
+ ld a, [hl]
+ and a
+ jr z, .fail
+ ld de, wc608
+ ld bc, HOF_LENGTH
+ call CopyBytes
+ call CloseSRAM
+ and a
+ ret
+
+.fail
+ call CloseSRAM
+
+.full
+ scf
+ ret
+; 86748
+
+Function86748: ; 86748
+ xor a
+ ld [hBGMapMode], a
+ ld a, [hli]
+ ld [TempMonSpecies], a
+ ld a, [hli]
+ ld [TempMonID], a
+ ld a, [hli]
+ ld [TempMonID + 1], a
+ ld a, [hli]
+ ld [TempMonDVs], a
+ ld a, [hli]
+ ld [TempMonDVs + 1], a
+ ld a, [hli]
+ ld [TempMonLevel], a
+ ld de, StringBuffer2
+ ld bc, 10
+ call CopyBytes
+ ld a, "@"
+ ld [StringBuffer2 + 10], a
+ hlcoord 0, 0
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ ld a, " "
+ call ByteFill
+ hlcoord 0, 0
+ lb bc, 3, SCREEN_WIDTH - 2
+ call TextBox
+ hlcoord 0, 12
+ lb bc, 4, SCREEN_WIDTH - 2
+ call TextBox
+ ld a, [TempMonSpecies]
+ ld [CurPartySpecies], a
+ ld [wd265], a
+ ld hl, TempMonDVs
+ predef GetUnownLetter
+ xor a
+ ld [wc2c6], a
+ hlcoord 6, 5
+ call _PrepMonFrontpic
+ ld a, [CurPartySpecies]
+ cp EGG
+ jr z, .print_id_no
+ hlcoord 1, 13
+ ld a, "№"
+ ld [hli], a
+ ld [hl], "·"
+ hlcoord 3, 13
+ ld de, wd265
+ lb bc, PRINTNUM_LEADINGZEROS | 1, 3
+ call PrintNum
+ call GetBasePokemonName
+ hlcoord 7, 13
+ call PlaceString
+ ld a, BREEDMON
+ ld [MonType], a
+ callba GetGender
+ ld a, " "
+ jr c, .got_gender
+ ld a, "♂"
+ jr nz, .got_gender
+ ld a, "♀"
+
+.got_gender
+ hlcoord 18, 13
+ ld [hli], a
+ hlcoord 8, 14
+ ld a, "/"
+ ld [hli], a
+ ld de, StringBuffer2
+ call PlaceString
+ hlcoord 1, 16
+ call PrintLevel
+
+.print_id_no
+ hlcoord 7, 16
+ ld a, "<ID>"
+ ld [hli], a
+ ld a, "№"
+ ld [hli], a
+ ld [hl], "/"
+ hlcoord 10, 16
+ ld de, TempMonID
+ lb bc, PRINTNUM_LEADINGZEROS | 2, 5
+ call PrintNum
+ ret
+; 86810
+
+Function86810: ; 86810
+ call ClearBGPalettes
+ ld hl, VTiles2 tile $63
+ ld de, FontExtra + $d0
+ lb bc, BANK(FontExtra), 1
+ call Request2bpp
+ hlcoord 0, 0
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ ld a, " "
+ call ByteFill
+ callba GetPlayerBackpic
+ ld a, $31
+ ld [hFillBox], a
+ hlcoord 6, 6
+ lb bc, 6, 6
+ predef FillBox
+ ld a, $d0
+ ld [hSCY], a
+ ld a, $90
+ ld [hSCX], a
+ call WaitBGMap
+ xor a
+ ld [hBGMapMode], a
+ ld [CurPartySpecies], a
+ ld b, SCGB_1A
+ call GetSGBLayout
+ call SetPalettes
+ call Function86635
+ xor a
+ ld [wc2c6], a
+ hlcoord 0, 0
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ ld a, " "
+ call ByteFill
+ callba Function88840
+ xor a
+ ld [hFillBox], a
+ hlcoord 12, 5
+ lb bc, 7, 7
+ predef FillBox
+ ld a, $c0
+ ld [hSCX], a
+ call WaitBGMap
+ xor a
+ ld [hBGMapMode], a
+ ld [hSCY], a
+ call Function86643
+ xor a
+ ld [hBGMapMode], a
+ hlcoord 0, 2
+ lb bc, 8, 9
+ call TextBox
+ hlcoord 0, 12
+ lb bc, 4, 18
+ call TextBox
+ hlcoord 2, 4
+ ld de, PlayerName
+ call PlaceString
+ hlcoord 1, 6
+ ld a, "<ID>"
+ ld [hli], a
+ ld a, "№"
+ ld [hli], a
+ ld [hl], "/"
+ hlcoord 4, 6
+ ld de, PlayerID
+ lb bc, PRINTNUM_LEADINGZEROS | 2, 5
+ call PrintNum
+ hlcoord 1, 8
+ ld de, .PlayTime
+ call PlaceString
+ hlcoord 3, 9
+ ld de, GameTimeHours
+ lb bc, 2, 3
+ call PrintNum
+ ld [hl], 99
+ inc hl
+ ld de, GameTimeMinutes
+ lb bc, PRINTNUM_LEADINGZEROS | 1, 2
+ call PrintNum
+ call WaitBGMap
+ callba Function26601
+ ret
+; 868ed
+
+.PlayTime
+ db "PLAY TIME@"
+; 868f7
+
diff --git a/event/kurt.asm b/event/kurt.asm
index 8f9dd4fd6..bb24f26ab 100644
--- a/event/kurt.asm
+++ b/event/kurt.asm
@@ -26,7 +26,7 @@ Special_SelectApricornForKurt: ; 88018
call LoadStandardMenuDataHeader
ld c, $1
xor a
- ld [wd0e4], a
+ ld [wMenuScrollPosition], a
ld [wKurtApricornQuantity], a
.loop
push bc
@@ -65,7 +65,7 @@ Kurt_SelectApricorn: ; 88055
ld [wMenuCursorBuffer], a
xor a
ld [hBGMapMode], a
- call Function352f
+ call InitScrollingMenu
call UpdateSprites
call HandleScrollingMenu
ld a, [wcf73]
@@ -139,7 +139,7 @@ Kurt_SelectQuantity: ; 880c2
call UpdateSprites
call .PlaceApricornName
call PlaceApricornQuantity
- call Function321c
+ call ApplyTilemap
callba Function27a28
jr nc, .loop
diff --git a/event/magnet_train.asm b/event/magnet_train.asm
new file mode 100755
index 000000000..d9c1a3ae9
--- /dev/null
+++ b/event/magnet_train.asm
@@ -0,0 +1,485 @@
+Special_MagnetTrain: ; 8cc04
+ ld a, [ScriptVar]
+ and a
+ jr nz, .ToGoldenrod
+ ld a, 1 ; forwards
+ lb bc, $40, $60
+ ld de, $fca0
+ jr .continue
+
+.ToGoldenrod
+ ld a, -1 ; backwards
+ lb bc, $c0, $a0
+ ld de, $b460
+
+.continue
+ ld h, a
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld a, h
+ ld [w5_d191], a
+ ld a, c
+ ld [w5_d192], a
+ ld a, b
+ ld [w5_d193], a
+ ld a, e
+ ld [w5_d194], a
+ ld a, d
+ ld [w5_d195], a
+ ld a, [hSCX]
+ push af
+ ld a, [hSCY]
+ push af
+ call Function8ccc9
+ ld hl, hVBlank
+ ld a, [hl]
+ push af
+ ld [hl], $1
+.loop
+ ld a, [wJumptableIndex]
+ and a
+ jr z, .initialize
+ bit 7, a
+ jr nz, .done
+ callab Function8cf69
+ call Function8cdf7
+ call Function8cc99
+ call Function3b0c
+ call DelayFrame
+ jr .loop
+
+.initialize
+ call Function8ceae
+ jr .loop
+
+.done
+ pop af
+ ld [hVBlank], a
+ call ClearBGPalettes
+ xor a
+ ld [hLCDStatCustom], a
+ ld [hLCDStatCustom + 1], a
+ ld [hLCDStatCustom + 2], a
+ ld [hSCX], a
+ ld [Requested2bppSource], a
+ ld [Requested2bppSource + 1], a
+ ld [Requested2bppDest], a
+ ld [Requested2bppDest + 1], a
+ ld [Requested2bpp], a
+ call ClearTileMap
+ pop af
+ ld [hSCY], a
+ pop af
+ ld [hSCX], a
+ xor a
+ ld [hBGMapMode], a
+ pop af
+ ld [rSVBK], a
+ ret
+; 8cc99
+
+Function8cc99: ; 8cc99
+ ld hl, LYOverridesBackup
+ ld c, $2f
+ ld a, [wcf64]
+ add a
+ ld [hSCX], a
+ call Function8ccc4
+ ld c, $30
+ ld a, [wcf65]
+ call Function8ccc4
+ ld c, $31
+ ld a, [wcf64]
+ add a
+ call Function8ccc4
+ ld a, [wd191]
+ ld d, a
+ ld hl, wcf64
+ ld a, [hl]
+rept 2
+ add d
+endr
+ ld [hl], a
+ ret
+; 8ccc4
+
+Function8ccc4: ; 8ccc4
+.asm_8ccc4
+ ld [hli], a
+ dec c
+ jr nz, .asm_8ccc4
+ ret
+; 8ccc9
+
+Function8ccc9: ; 8ccc9
+ call ClearBGPalettes
+ call ClearSprites
+ call DisableLCD
+ callab Function8cf53
+ call SetMagnetTrainPals
+ call DrawMagnetTrain
+ ld a, $90
+ ld [hWY], a
+ call EnableLCD
+ xor a
+ ld [hBGMapMode], a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ callba GetPlayerIcon
+ pop af
+ ld [rSVBK], a
+ ld hl, VTiles0
+ ld c, $4
+ call Request2bpp
+ ld hl, $c0
+ add hl, de
+ ld d, h
+ ld e, l
+ ld hl, VTiles0 tile $04
+ ld c, $4
+ call Request2bpp
+ call Function8cda6
+ ld hl, wJumptableIndex
+ xor a
+ ld [hli], a
+ ld a, [wd192]
+rept 3
+ ld [hli], a
+endr
+ ld de, MUSIC_MAGNET_TRAIN
+ call PlayMusic2
+ ret
+; 8cd27
+
+DrawMagnetTrain: ; 8cd27
+ hlbgcoord 0, 0
+ xor a
+.asm_8cd2b
+ call GetMagnetTrainBGTiles
+ ld b, 32 / 2
+ call .FillAlt
+ inc a
+ cp $12
+ jr c, .asm_8cd2b
+ hlbgcoord 0, 6
+ ld de, MagnetTrainTilemap1
+ ld c, 20
+ call .FillLine
+ hlbgcoord 0, 7
+ ld de, MagnetTrainTilemap2
+ ld c, 20
+ call .FillLine
+ hlbgcoord 0, 8
+ ld de, MagnetTrainTilemap3
+ ld c, 20
+ call .FillLine
+ hlbgcoord 0, 9
+ ld de, MagnetTrainTilemap4
+ ld c, 20
+ call .FillLine
+ ret
+; 8cd65
+
+.FillLine ; 8cd65
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec c
+ jr nz, .FillLine
+ ret
+; 8cd6c
+
+.FillAlt ; 8cd6c
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ inc hl
+ dec b
+ jr nz, .FillAlt
+ ret
+; 8cd74
+
+GetMagnetTrainBGTiles: ; 8cd74
+ push hl
+ ld e, a
+ ld d, 0
+ ld hl, MagnetTrainBGTiles
+rept 2
+ add hl, de
+endr
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ pop hl
+ ret
+; 8cd82
+
+MagnetTrainBGTiles: ; 8cd82
+; Alternating tiles for each line
+; of the Magnet Train tilemap.
+ db $4c, $4d ; bush
+ db $5c, $5d ; bush
+ db $4c, $4d ; bush
+ db $5c, $5d ; bush
+ db $08, $08 ; fence
+ db $18, $18 ; fence
+ db $1f, $1f ; track
+ db $31, $31 ; track
+ db $11, $11 ; track
+ db $11, $11 ; track
+ db $0d, $0d ; track
+ db $31, $31 ; track
+ db $04, $04 ; fence
+ db $18, $18 ; fence
+ db $4c, $4d ; bush
+ db $5c, $5d ; bush
+ db $4c, $4d ; bush
+ db $5c, $5d ; bush
+; 8cda6
+
+Function8cda6: ; 8cda6
+ ld hl, LYOverrides
+ ld bc, $90
+ ld a, [wd192]
+ call ByteFill
+ ld hl, LYOverridesBackup
+ ld bc, $90
+ ld a, [wd192]
+ call ByteFill
+ ld a, $43
+ ld [hLCDStatCustom], a
+ ret
+; 8cdc3
+
+SetMagnetTrainPals: ; 8cdc3
+ ld a, $1
+ ld [rVBK], a
+
+ ; bushes
+ hlbgcoord 0, 0
+ ld bc, 4 bgrows
+ ld a, $2
+ call ByteFill
+
+ ; train
+ hlbgcoord 0, 4
+ ld bc, 10 bgrows
+ xor a
+ call ByteFill
+
+ ; more bushes
+ hlbgcoord 0, 14
+ ld bc, 4 bgrows
+ ld a, $2
+ call ByteFill
+
+ ; train window
+ hlbgcoord 7, 8
+ ld bc, 6
+ ld a, $4
+ call ByteFill
+
+ ld a, $0
+ ld [rVBK], a
+ ret
+; 8cdf7
+
+Function8cdf7: ; 8cdf7
+ ld a, [wJumptableIndex]
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable_8ce06
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 8ce06
+
+Jumptable_8ce06: ; 8ce06
+ dw Function8ce19
+ dw Function8ce6d
+ dw Function8ce47
+ dw Function8ce6d
+ dw Function8ce7a
+ dw Function8ce6d
+ dw Function8cea2
+; 8ce14
+
+Function8ce14: ; 8ce14
+ ld hl, wJumptableIndex
+ inc [hl]
+ ret
+; 8ce19
+
+Function8ce19: ; 8ce19
+ ld d, $55
+ ld a, [wd194 + 1]
+ ld e, a
+ ld b, SPRITE_ANIM_INDEX_15
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld a, [PlayerGender]
+ bit 0, a
+ jr z, .asm_8ce31
+ ld b, SPRITE_ANIM_INDEX_1F
+
+.asm_8ce31
+ pop af
+ ld [rSVBK], a
+ ld a, b
+ call _InitSpriteAnimStruct
+ ld hl, $3
+ add hl, bc
+ ld [hl], $0
+ call Function8ce14
+ ld a, $80
+ ld [wcf66], a
+ ret
+; 8ce47
+
+Function8ce47: ; 8ce47
+ ld hl, wd193
+ ld a, [wcf65]
+ cp [hl]
+ jr z, .asm_8ce64
+ ld e, a
+ ld a, [wd191]
+ xor $ff
+ inc a
+ add e
+ ld [wcf65], a
+ ld hl, wc3c0
+ ld a, [wd191]
+ add [hl]
+ ld [hl], a
+ ret
+
+.asm_8ce64
+ call Function8ce14
+ ld a, $80
+ ld [wcf66], a
+ ret
+; 8ce6d
+
+Function8ce6d: ; 8ce6d
+ ld hl, wcf66
+ ld a, [hl]
+ and a
+ jr z, .asm_8ce76
+ dec [hl]
+ ret
+
+.asm_8ce76
+ call Function8ce14
+ ret
+; 8ce7a
+
+Function8ce7a: ; 8ce7a
+ ld hl, wd194
+ ld a, [wcf65]
+ cp [hl]
+ jr z, .asm_8ce9e
+ ld e, a
+ ld a, [wd191]
+ xor $ff
+ inc a
+ ld d, a
+ ld a, e
+rept 2
+ add d
+endr
+ ld [wcf65], a
+ ld hl, wc3c0
+ ld a, [wd191]
+ ld d, a
+ ld a, [hl]
+rept 2
+ add d
+endr
+ ld [hl], a
+ ret
+
+ ret
+
+.asm_8ce9e
+ call Function8ce14
+ ret
+; 8cea2
+
+Function8cea2: ; 8cea2
+ ld a, $80
+ ld [wJumptableIndex], a
+ ld de, SFX_TRAIN_ARRIVED
+ call PlaySFX
+ ret
+; 8ceae
+
+Function8ceae: ; 8ceae
+ callba Function8cf69
+ call Function8cdf7
+ call Function8cc99
+ call Function3b0c
+ call DelayFrame
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld a, [TimeOfDayPal]
+ push af
+ ld a, [wPermission]
+ push af
+ ld a, [TimeOfDay]
+ and $3
+ ld [TimeOfDayPal], a
+ ld a, $1
+ ld [wPermission], a
+ ld b, SCGB_09
+ call GetSGBLayout
+ call UpdateTimePals
+ ld a, [rBGP]
+ ld [wcfc7], a
+ ld a, [rOBP0]
+ ld [wcfc8], a
+ ld a, [rOBP1]
+ ld [wcfc9], a
+ pop af
+ ld [wPermission], a
+ pop af
+ ld [TimeOfDayPal], a
+ pop af
+ ld [rSVBK], a
+ ret
+; 8ceff
+
+MagnetTrainTilemap1:
+ db $1f, $05, $06, $0a, $0a
+ db $0a, $09, $0a, $0a, $0a
+ db $0a, $0a, $0a, $09, $0a
+ db $0a, $0a, $0b, $0c, $1f
+MagnetTrainTilemap2:
+ db $14, $15, $16, $1a, $1a
+ db $1a, $19, $1a, $1a, $1a
+ db $1a, $1a, $1a, $19, $1a
+ db $1a, $1a, $1b, $1c, $1d
+MagnetTrainTilemap3:
+ db $24, $25, $26, $27, $07
+ db $2f, $29, $28, $28, $28
+ db $28, $28, $28, $29, $07
+ db $2f, $2a, $2b, $2c, $2d
+MagnetTrainTilemap4:
+ db $20, $1f, $2e, $1f, $17
+ db $00, $2e, $1f, $1f, $1f
+ db $1f, $1f, $1f, $2e, $17
+ db $00, $1f, $2e, $1f, $0f
+; 8cf4f
diff --git a/event/mom.asm b/event/mom.asm
index 987f4bf0c..61d374de9 100644
--- a/event/mom.asm
+++ b/event/mom.asm
@@ -45,11 +45,11 @@ endr
; 16254
.CheckIfBankInitialized: ; 16254
- ld a, [wBankOfMomMode]
+ ld a, [wMomSavingMoney]
bit 7, a
jr nz, .savingmoneyalready
set 7, a
- ld [wBankOfMomMode], a
+ ld [wMomSavingMoney], a
ld a, $1
jr .done_0
@@ -75,7 +75,7 @@ endr
ld a, %10000000
.done_1
- ld [wBankOfMomMode], a
+ ld [wMomSavingMoney], a
ld hl, UnknownText_0x16653
call PrintText
ld a, $8
@@ -168,7 +168,7 @@ endr
ld de, StringBuffer2 + 3
ld bc, 3
call CopyBytes
- ld bc, wd851
+ ld bc, wMomsMoney
ld de, StringBuffer2
callba GiveMoney
jr c, .CantDepositThatMuch
@@ -176,7 +176,7 @@ endr
ld de, Money
callba TakeMoney
ld hl, StringBuffer2
- ld de, wd851
+ ld de, wMomsMoney
ld bc, 3
call CopyBytes
ld de, SFX_TRANSACTION
@@ -232,7 +232,7 @@ endr
ld de, StringBuffer2 + 3
ld bc, 3
call CopyBytes
- ld de, wd851
+ ld de, wMomsMoney
ld bc, StringBuffer2
callba CompareMoney
jr c, .InsufficientFundsInBank
@@ -241,7 +241,7 @@ endr
callba GiveMoney
jr c, .NotEnoughRoomInWallet
ld bc, StringBuffer2 + 3
- ld de, wd851
+ ld de, wMomsMoney
callba TakeMoney
ld hl, StringBuffer2
ld de, Money
@@ -279,7 +279,7 @@ endr
call YesNoBox
jr c, .StopSavingMoney
ld a, $81
- ld [wBankOfMomMode], a
+ ld [wMomSavingMoney], a
ld hl, UnknownText_0x16685
call PrintText
ld a, $8
@@ -288,7 +288,7 @@ endr
.StopSavingMoney
ld a, $80
- ld [wBankOfMomMode], a
+ ld [wMomSavingMoney], a
ld a, $7
ld [wJumptableIndex], a
ret
@@ -461,7 +461,7 @@ Function1651a: ; 1651a
ld de, String_16699
call PlaceString
hlcoord 12, 2
- ld de, wd851
+ ld de, wMomsMoney
lb bc, PRINTNUM_MONEY | 3, 6
call PrintNum
hlcoord 1, 4
diff --git a/event/mom_phone.asm b/event/mom_phone.asm
new file mode 100755
index 000000000..b2bf0d2fd
--- /dev/null
+++ b/event/mom_phone.asm
@@ -0,0 +1,285 @@
+MomTriesToBuySomething:: ; fcfec
+ ld a, [wMapReentryScriptQueueFlag]
+ and a
+ ret nz
+ call GetMapHeaderPhoneServiceNybble
+ and a
+ ret nz
+ xor a
+ ld [wdc18], a
+ call CheckBalance_MomItem2
+ ret nc
+ call Functionfd0c3
+ ret nc
+ ld b, BANK(UnknownScript_0xfd00f)
+ ld de, UnknownScript_0xfd00f
+ callba LoadScriptBDE
+ scf
+ ret
+; fd00f
+
+UnknownScript_0xfd00f: ; 0xfd00f
+ callasm Functionfd017
+ farjump Script_ReceivePhoneCall
+; 0xfd017
+
+Functionfd017: ; fd017
+ call MomBuysItem_DeductFunds
+ call Functionfd0eb
+ ld a, [wdc18]
+ and a
+ jr nz, .ok
+ ld hl, wdc17
+ inc [hl]
+.ok
+ ld a, 1
+ ld [wCurrentCaller], a
+ ld bc, wd03f
+ ld hl, 0
+ add hl, bc
+ ld [hl], 0
+ inc hl
+ ld [hl], 1
+ ld hl, 9
+ add hl, bc
+ ld a, $3f
+ ld [hli], a
+ ld a, e
+ ld [hli], a
+ ld a, d
+ ld [hl], a
+ ret
+; fd044
+
+CheckBalance_MomItem2: ; fd044
+ ld a, [wdc17]
+ cp 10
+ jr nc, .nope
+ call GetItemFromMom
+ ld a, [hli]
+ ld [hMoneyTemp], a
+ ld a, [hli]
+ ld [hMoneyTemp + 1], a
+ ld a, [hli]
+ ld [hMoneyTemp + 2], a
+ ld de, wMomsMoney
+ ld bc, hMoneyTemp
+ callba CompareMoney
+ jr nc, .have_enough_money
+
+.nope
+ jr .check_have_2300
+
+.have_enough_money
+ scf
+ ret
+
+.check_have_2300
+ ld hl, hMoneyTemp
+ ld [hl], (2300 / $10000) ; $00
+ inc hl
+ ld [hl], ((2300 % $10000) / $100) ; $08
+ inc hl
+ ld [hl], (2300 % $100) ; $fc
+.loop
+ ld de, wdc19
+ ld bc, wMomsMoney
+ callba CompareMoney
+ jr z, .exact
+ jr nc, .less_than
+ call Functionfd099
+ jr .loop
+
+.less_than
+ xor a
+ ret
+
+.exact
+ call Functionfd099
+ ld a, 5
+ call RandomRange
+ inc a
+ ld [wdc18], a
+ scf
+ ret
+; fd099
+
+Functionfd099: ; fd099
+ ld de, wdc19
+ ld bc, hMoneyTemp
+ callba AddMoney
+ ret
+; fd0a6
+
+
+MomBuysItem_DeductFunds: ; fd0a6 (3f:50a6)
+ call GetItemFromMom
+ ld de, 3
+ add hl, de
+ ld a, [hli]
+ ld [hMoneyTemp], a
+ ld a, [hli]
+ ld [hMoneyTemp + 1], a
+ ld a, [hli]
+ ld [hMoneyTemp + 2], a
+ ld de, wMomsMoney
+ ld bc, hMoneyTemp
+ callba TakeMoney
+ ret
+
+
+Functionfd0c3: ; fd0c3
+ call GetItemFromMom
+ ld de, 6
+ add hl, de
+ ld a, [hli]
+ cp 1
+ jr z, .not_doll
+ ld a, [hl]
+ ld c, a
+ ld b, 1
+ callba DecorationFlagAction_c
+ scf
+ ret
+
+.not_doll
+ ld a, [hl]
+ ld [CurItem], a
+ ld a, $1
+ ld [wItemQuantityChangeBuffer], a
+ ld hl, PCItems
+ call ReceiveItem
+ ret
+; fd0eb
+
+
+Functionfd0eb: ; fd0eb (3f:50eb)
+ call GetItemFromMom
+ ld de, 6 ; field
+ add hl, de
+ ld a, [hli]
+ ld de, Script_MomBoughtItem
+ cp 1
+ ret z
+ ld de, Script_MomBoughtDoll
+ ret
+; fd0fd (3f:50fd)
+
+Script_MomBoughtItem: ; 0xfd0fd
+ writetext _MomText_HiHowAreYou
+ writetext _MomText_FoundAnItem
+ writetext _MomText_BoughtWithYourMoney
+ writetext _MomText_ItsInPC
+ end
+; 0xfd10a
+
+Script_MomBoughtDoll: ; 0xfd10a
+ writetext _MomText_HiHowAreYou
+ writetext _MomText_FoundADoll
+ writetext _MomText_BoughtWithYourMoney
+ writetext _MomText_ItsInRoom
+ end
+; 0xfd117
+
+
+GetItemFromMom: ; fd117
+ ld a, [wdc18]
+ and a
+ jr z, .zero
+ dec a
+ ld de, MomItems_1
+ jr .incave
+
+.zero
+ ld a, [wdc17]
+ cp 10 ; length of MomItems_2
+ jr c, .ok
+ xor a
+
+.ok
+ ld de, MomItems_2
+
+.incave
+ ld l, a
+ ld h, 0
+rept 3 ; multiply hl by 8
+ add hl, hl
+endr
+ add hl, de
+ ret
+; fd136
+
+momitem: macro
+; money to trigger, cost, kind, item
+ dt \1
+ dt \2
+ db \3, \4
+ENDM
+
+
+MomItems_1: ; fd136
+ momitem 0, 600, MOM_ITEM, SUPER_POTION
+ momitem 0, 90, MOM_ITEM, ANTIDOTE
+ momitem 0, 180, MOM_ITEM, POKE_BALL
+ momitem 0, 450, MOM_ITEM, ESCAPE_ROPE
+ momitem 0, 500, MOM_ITEM, GREAT_BALL
+; fd15e
+
+MomItems_2: ; fd15e
+ momitem 900, 600, MOM_ITEM, SUPER_POTION
+ momitem 4000, 270, MOM_ITEM, REPEL
+ momitem 7000, 600, MOM_ITEM, SUPER_POTION
+ momitem 10000, 1800, MOM_DOLL, DECO_CHARMANDER_DOLL
+ momitem 15000, 3000, MOM_ITEM, MOON_STONE
+ momitem 19000, 600, MOM_ITEM, SUPER_POTION
+ momitem 30000, 4800, MOM_DOLL, DECO_CLEFAIRY_DOLL
+ momitem 40000, 900, MOM_ITEM, HYPER_POTION
+ momitem 50000, 8000, MOM_DOLL, DECO_PIKACHU_DOLL
+ momitem 100000, 22800, MOM_DOLL, DECO_BIG_SNORLAX_DOLL
+; fd1ae
+
+ db 0, 0, 0 ; XXX
+
+_MomText_HiHowAreYou: ; 0xfd1b1
+ ; Hi, ! How are you?
+ text_jump UnknownText_0x1bc615
+ db "@"
+; 0xfd1b6
+
+_MomText_FoundAnItem: ; 0xfd1b6
+ ; I found a useful item shopping, so
+ text_jump UnknownText_0x1bc62a
+ db "@"
+; 0xfd1bb
+
+_MomText_BoughtWithYourMoney: ; 0xfd1bb
+ ; I bought it with your money. Sorry!
+ text_jump UnknownText_0x1bc64e
+ db "@"
+; 0xfd1c0
+
+_MomText_ItsInPC: ; 0xfd1c0
+ ; It's in your PC. You'll like it!
+ text_jump UnknownText_0x1bc673
+ db "@"
+; 0xfd1c5
+
+_MomText_FoundADoll: ; 0xfd1c5
+ ; While shopping today, I saw this adorable doll, so
+ text_jump UnknownText_0x1bc693
+ db "@"
+; 0xfd1ca
+
+_MomText_ItsInRoom: ; 0xfd1ca
+ ; It's in your room. You'll love it!
+ text_jump UnknownText_0x1bc6c7
+ db "@"
+; 0xfd1cf
+
+ db 0 ; XXX
+
+Functionfd1d0: ; fd1d0
+ ret
+; fd1d1
+
+ ret ; XXX
diff --git a/event/photo.asm b/event/photo.asm
new file mode 100755
index 000000000..712107ed0
--- /dev/null
+++ b/event/photo.asm
@@ -0,0 +1,299 @@
+UnownPrinter: ; 16be4
+ ld a, [UnownDex]
+ and a
+ ret z
+
+ ld a, [hInMenu]
+ push af
+ ld a, $1
+ ld [hInMenu], a
+ ld a, [Options]
+ push af
+ set NO_TEXT_SCROLL, a
+ ld [Options], a
+ call ClearBGPalettes
+ call ClearTileMap
+
+ ld de, UnownDexATile
+ ld hl, VTiles1 tile $6f
+ lb bc, BANK(UnownDexBTile), 1
+ call Request1bpp
+
+ ld de, UnownDexBTile
+ ld hl, VTiles1 tile $75
+ lb bc, BANK(UnownDexBTile), 1
+ call Request1bpp
+
+ hlcoord 0, 0
+ lb bc, 3, 18
+ call TextBox
+
+ hlcoord 0, 5
+ lb bc, 7, 7
+ call TextBox
+
+ hlcoord 0, 14
+ lb bc, 2, 18
+ call TextBox
+
+ hlcoord 1, 2
+ ld de, AlphRuinsStampString
+ call PlaceString
+
+ hlcoord 1, 16
+ ld de, UnownDexDoWhatString
+ call PlaceString
+
+ hlcoord 10, 6
+ ld de, UnownDexMenuString
+ call PlaceString
+
+ xor a
+ ld [wJumptableIndex], a
+ call Function16cc8
+ call WaitBGMap
+
+ ld a, UNOWN
+ ld [CurPartySpecies], a
+ xor a
+ ld [TempMonDVs], a
+ ld [TempMonDVs + 1], a
+
+ ld b, SCGB_1C
+ call GetSGBLayout
+ call SetPalettes
+
+.joy_loop
+ call JoyTextDelay
+
+ ld a, [hJoyPressed]
+ and B_BUTTON
+ jr nz, .pressed_b
+
+ ld a, [hJoyPressed]
+ and A_BUTTON
+ jr nz, .pressed_a
+
+ call Function16ca0
+ call DelayFrame
+ jr .joy_loop
+
+.pressed_a
+ ld a, [wJumptableIndex]
+ push af
+ callba PrintUnownStamp
+ call RestartMapMusic
+ pop af
+ ld [wJumptableIndex], a
+ jr .joy_loop
+
+.pressed_b
+ pop af
+ ld [Options], a
+ pop af
+ ld [hInMenu], a
+ call ReturnToMapFromSubmenu
+ ret
+; 16ca0
+
+Function16ca0: ; 16ca0
+ ld a, [hJoyLast]
+ and D_RIGHT
+ jr nz, .press_right
+ ld a, [hJoyLast]
+ and D_LEFT
+ jr nz, .press_left
+ ret
+
+.press_left
+ ld hl, wJumptableIndex
+ ld a, [hl]
+ and a
+ jr nz, .wrap_around_left
+ ld [hl], $1b
+
+.wrap_around_left
+ dec [hl]
+ jr .return
+
+.press_right
+ ld hl, wJumptableIndex
+ ld a, [hl]
+ cp $1a
+ jr c, .wrap_around_right
+ ld [hl], $ff
+
+.wrap_around_right
+ inc [hl]
+
+.return
+ call Function16cc8
+ ret
+; 16cc8
+
+Function16cc8: ; 16cc8
+ ld a, [wJumptableIndex]
+ cp 26
+ jr z, Function16d20
+ inc a
+ ld [UnownLetter], a
+ ld a, UNOWN
+ ld [CurPartySpecies], a
+ xor a
+ ld [wc2c6], a
+ ld de, VTiles2
+ predef GetFrontpic
+ call Function16cff
+ hlcoord 1, 6
+ xor a
+ ld [hFillBox], a
+ lb bc, 7, 7
+ predef FillBox
+ ld de, VTiles2 tile $31
+ callba Functione0000
+ ret
+; 16cff
+
+Function16cff: ; 16cff
+ ld a, [rSVBK]
+ push af
+ ld a, $6
+ ld [rSVBK], a
+
+ ld a, BANK(sScratch)
+ call GetSRAMBank
+ ld de, w6_d000
+ ld hl, sScratch
+ ld a, [hROMBank]
+ ld b, a
+ ld c, $31
+ call Get2bpp
+ call CloseSRAM
+
+ pop af
+ ld [rSVBK], a
+ ret
+; 16d20
+
+Function16d20: ; 16d20
+ hlcoord 1, 6
+ lb bc, 7, 7
+ call ClearBox
+ hlcoord 1, 9
+ ld de, UnownDexVacantString
+ call PlaceString
+ xor a
+ call GetSRAMBank
+ ld hl, sScratch
+ ld bc, $31 tiles
+ xor a
+ call ByteFill
+ ld hl, VTiles2 tile $31
+ ld de, sScratch
+ ld c, $31
+ ld a, [hROMBank]
+ ld b, a
+ call Get2bpp
+ call CloseSRAM
+ ld c, 20
+ call DelayFrames
+ ret
+; 16d57
+
+AlphRuinsStampString:
+ db " ALPH RUINS STAMP@"
+
+UnownDexDoWhatString:
+ db "Do what?@"
+
+UnownDexMenuString:
+ db "♂ PRINT"
+ next "♀ CANCEL"
+ next "← PREVIOUS"
+ next "→ NEXT"
+ db "@"
+
+UnownDexVacantString:
+ db "VACANT@"
+; 16d9c
+
+UnownDexATile: ; 16d9c
+INCBIN "gfx/unknown/016d9c.1bpp"
+UnownDexBTile: ; 16da4
+INCBIN "gfx/unknown/016da4.1bpp"
+; 16dac
+
+Function16dac: ; 16dac
+ hlcoord 0, 0
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ ld a, " "
+ call ByteFill
+ hlcoord 7, 11
+ ld a, $31
+ ld [hFillBox], a
+ lb bc, 7, 7
+ predef FillBox
+ ret
+; 16dc7
+
+PhotoStudio: ; 16dc7
+ ld hl, .Text_AskWhichMon
+ call PrintText
+ callba SelectMonFromParty
+ jr c, .cancel
+ ld a, [CurPartySpecies]
+ cp EGG
+ jr z, .egg
+
+ ld hl, .Text_HoldStill
+ call PrintText
+ call DisableSpriteUpdates
+ callba PrintPartymon
+ call Function2b74
+ ld a, [hPrinter]
+ and a
+ jr nz, .cancel
+ ld hl, .Text_Presto
+ jr .print_text
+
+.cancel
+ ld hl, .Text_NoPicture
+ jr .print_text
+
+.egg
+ ld hl, .Text_Egg
+
+.print_text
+ call PrintText
+ ret
+; 16e04
+
+.Text_AskWhichMon: ; 0x16e04
+ ; Which #MON should I photo- graph?
+ text_jump UnknownText_0x1be024
+ db "@"
+; 0x16e09
+
+.Text_HoldStill: ; 0x16e09
+ ; All righty. Hold still for a bit.
+ text_jump UnknownText_0x1be047
+ db "@"
+; 0x16e0e
+
+.Text_Presto: ; 0x16e0e
+ ; Presto! All done. Come again, OK?
+ text_jump UnknownText_0x1be06a
+ db "@"
+; 0x16e13
+
+.Text_NoPicture: ; 0x16e13
+ ; Oh, no picture? Come again, OK?
+ text_jump UnknownText_0x1c0000
+ db "@"
+; 0x16e18
+
+.Text_Egg: ; 0x16e18
+ ; An EGG? My talent is worth more…
+ text_jump UnknownText_0x1c0021
+ db "@"
+; 0x16e1d
diff --git a/event/poke_seer.asm b/event/poke_seer.asm
index b5364e67f..5f1a5d1ab 100644
--- a/event/poke_seer.asm
+++ b/event/poke_seer.asm
@@ -1,12 +1,19 @@
-SEER_INTRO EQU 0
-SEER_CANT_TELL EQU 1
-SEER_MET_AT EQU 2
-SEER_TIME_LEVEL EQU 3
-SEER_TRADED EQU 4
-SEER_CANCEL EQU 5
-SEER_EGG EQU 6
-SEER_LEVEL_ONLY EQU 7
-
+ const_def
+ const SEER_INTRO
+ const SEER_CANT_TELL
+ const SEER_MET_AT
+ const SEER_TIME_LEVEL
+ const SEER_TRADED
+ const SEER_CANCEL
+ const SEER_EGG
+ const SEER_LEVEL_ONLY
+
+ const_def
+ const SEERACTION_MET
+ const SEERACTION_TRADED
+ const SEERACTION_CANT_TELL_1
+ const SEERACTION_CANT_TELL_2
+ const SEERACTION_LEVEL_ONLY
SpecialPokeSeer: ; 4f0bc
ld a, SEER_INTRO
@@ -44,7 +51,7 @@ SpecialPokeSeer: ; 4f0bc
SeerAction: ; 4f0ee
- ld a, [wd002]
+ ld a, [wSeerAction]
ld hl, SeerActions
rst JumpTable
ret
@@ -100,29 +107,30 @@ ReadCaughtData: ; 4f134
ld a, MON_CAUGHTDATA
call GetPartyParamLocation
ld a, [hli]
- ld [wd03b], a
+ ld [wSeerCaughtData], a
ld a, [hld]
- ld [wd03b + 1], a
+ ld [wSeerCaughtGender], a
or [hl]
- jr z, .asm_4f170
+ jr z, .error
- ld a, 1
- ld [wd002], a
+ ld a, SEERACTION_TRADED
+ ld [wSeerAction], a
ld a, MON_ID
call GetPartyParamLocation
ld a, [PlayerID]
cp [hl]
- jr nz, .asm_4f15f
+ jr nz, .traded
inc hl
ld a, [PlayerID + 1]
- jr nz, .asm_4f15f
+ ; cp [hl]
+ jr nz, .traded
- ld a, 0
- ld [wd002], a
+ ld a, SEERACTION_MET
+ ld [wSeerAction], a
-.asm_4f15f
+.traded
call GetCaughtLevel
call GetCaughtOT
call GetCaughtName
@@ -131,9 +139,9 @@ ReadCaughtData: ; 4f134
and a
ret
-.asm_4f170
- ld a, 2
- ld [wd002], a
+.error
+ ld a, SEERACTION_CANT_TELL_1
+ ld [wSeerAction], a
ret
; 4f176
@@ -142,7 +150,7 @@ GetCaughtName: ; 4f176
ld hl, PartyMonNicknames
ld bc, PKMN_NAME_LENGTH
call AddNTimes
- ld de, wd003
+ ld de, wSeerNickname
ld bc, PKMN_NAME_LENGTH
call CopyBytes
ret
@@ -150,12 +158,12 @@ GetCaughtName: ; 4f176
GetCaughtLevel: ; 4f18c
ld a, "@"
- ld hl, wd036
+ ld hl, wSeerCaughtLevelString
ld bc, 4
call ByteFill
; caught level
- ld a, [wd03b]
+ ld a, [wSeerCaughtData]
and $3f
jr z, .unknown
cp 1 ; hatched from an egg
@@ -163,15 +171,15 @@ GetCaughtLevel: ; 4f18c
ld a, 5 ; egg hatch level
.print
- ld [wd038 + 2], a
- ld hl, wd036
- ld de, wd038 + 2
+ ld [wSeerCaughtLevel], a
+ ld hl, wSeerCaughtLevelString
+ ld de, wSeerCaughtLevel
lb bc, PRINTNUM_RIGHTALIGN | 1, 3
call PrintNum
ret
.unknown
- ld de, wd036
+ ld de, wSeerCaughtLevelString
ld hl, .unknown_level
ld bc, 4
call CopyBytes
@@ -183,7 +191,7 @@ GetCaughtLevel: ; 4f18c
; 4f1c5
GetCaughtTime: ; 4f1c5
- ld a, [wd03b]
+ ld a, [wSeerCaughtData]
and $c0
jr z, .none
@@ -194,13 +202,13 @@ GetCaughtTime: ; 4f1c5
call GetNthString
ld d, h
ld e, l
- ld hl, wd01f
+ ld hl, wSeerTimeOfDay
call CopyName2
and a
ret
.none
- ld de, wd01f
+ ld de, wSeerTimeOfDay
call UnknownCaughtData
ret
; 4f1e6
@@ -213,7 +221,7 @@ GetCaughtTime: ; 4f1c5
UnknownCaughtData: ; 4f1f8
ld hl, .unknown
- ld bc, $000b
+ ld bc, NAME_LENGTH
call CopyBytes
ret
; 4f202
@@ -223,35 +231,35 @@ UnknownCaughtData: ; 4f1f8
; 4f20a
GetCaughtLocation: ; 4f20a
- ld a, [wd03b + 1]
+ ld a, [wSeerCaughtGender]
and $7f
- jr z, .asm_4f22e
+ jr z, .Unknown
cp $7f
- jr z, .asm_4f234
+ jr z, .event
cp $7e
- jr z, .asm_4f23b
+ jr z, .fail
ld e, a
callba GetLandmarkName
ld hl, StringBuffer1
- ld de, wd00e
- ld bc, $0011
+ ld de, wSeerCaughtLocation
+ ld bc, 17
call CopyBytes
and a
ret
-.asm_4f22e
- ld de, wd00e
+.Unknown
+ ld de, wSeerCaughtLocation
jp UnknownCaughtData
-.asm_4f234
- ld a, $4
- ld [wd002], a
+.event
+ ld a, SEERACTION_LEVEL_ONLY
+ ld [wSeerAction], a
scf
ret
-.asm_4f23b
- ld a, $3
- ld [wd002], a
+.fail
+ ld a, SEERACTION_CANT_TELL_2
+ ld [wSeerAction], a
scf
ret
; 4f242
@@ -261,17 +269,19 @@ GetCaughtOT: ; 4f242
ld hl, PartyMonOT
ld bc, NAME_LENGTH
call AddNTimes
- ld de, wd02a
- ld bc, $000b
+ ld de, wSeerOTName
+ ld bc, NAME_LENGTH
call CopyBytes
+
+; this routine is useless in Western localizations
ld hl, .male
- ld a, [wd03b + 1]
+ ld a, [wSeerCaughtGender]
bit 7, a
- jr z, .asm_4f264
+ jr z, .got_grammar
ld hl, .female
-.asm_4f264
- ld de, wd034 + 1
+.got_grammar
+ ld de, wSeerOTNameGrammar
ld a, "@"
ld [de], a
ret
@@ -360,7 +370,7 @@ SeerCancelText: ; 0x4f2af
SeerAdvice: ; 4f2b4
ld a, MON_LEVEL
call GetPartyParamLocation
- ld a, [wd038 + 2]
+ ld a, [wSeerCaughtLevel]
ld c, a
ld a, [hl]
sub c
diff --git a/event/unown.asm b/event/unown.asm
index 2d48dc695..789629ae0 100644
--- a/event/unown.asm
+++ b/event/unown.asm
@@ -124,7 +124,7 @@ Special_DisplayUnownWords: ; 8ae68
ld [hBGMapMode], a
call MenuBox
call UpdateSprites
- call Function321c
+ call ApplyTilemap
call MenuBoxCoord2Tile
inc hl
ld d, $0
diff --git a/event/whiteout.asm b/event/whiteout.asm
index 5cc0a07f9..2e8774b8f 100755
--- a/event/whiteout.asm
+++ b/event/whiteout.asm
@@ -37,12 +37,12 @@ OverworldBGMap: ; 124fa
call ClearScreen
call Function3200
call HideSprites
- call Function4f0
+ call RotateThreePalettesLeft
ret
; 1250a
BattleBGMap: ; 1250a
- ld b, $0
+ ld b, SCGB_00
call GetSGBLayout
call SetPalettes
ret