summaryrefslogtreecommitdiff
path: root/main.asm
diff options
context:
space:
mode:
Diffstat (limited to 'main.asm')
-rw-r--r--main.asm1114
1 files changed, 563 insertions, 551 deletions
diff --git a/main.asm b/main.asm
index 945797507..65d5182f5 100644
--- a/main.asm
+++ b/main.asm
@@ -4763,7 +4763,7 @@ Function6219: ; 6219
ld [rSVBK], a
ld hl, rLCDC
res 2, [hl]
- call Functionfdb
+ call ClearScreen
call Function3200
xor a
ld [hLCDStatCustom], a
@@ -8635,7 +8635,7 @@ _PrintNum:: ; c4c7
.two
dec e
jr nz, .asm_c583
- ld a, $f6
+ ld a, "0"
ld [$ffb3], a
.asm_c583
@@ -8701,10 +8701,10 @@ _PrintNum:: ; c4c7
.PrintDigit: ; c5cb (3:45cb)
dec e
jr nz, .ok
- ld a, $f6
+ ld a, "0"
ld [$ffb3], a
.ok
- ld c, $0
+ ld c, 0
.asm_c5d4
ld a, [$ffb7]
ld b, a
@@ -8721,7 +8721,7 @@ _PrintNum:: ; c4c7
cp b
jr nc, .asm_c5f6
ld a, [$ffb4]
- or $0
+ or 0
jr z, .asm_c620
dec a
ld [$ffb4], a
@@ -8772,7 +8772,7 @@ _PrintNum:: ; c4c7
ld [hli], a
res 5, d
.asm_c637
- ld a, $f6
+ ld a, "0"
add c
ld [hl], a
ld [$ffb3], a
@@ -10332,6 +10332,7 @@ UnknownText_0xce78: ; 0xce78
db "@"
; 0xce7d
+
Functionce7d: ; ce7d
call Functionce86
and $7f
@@ -10342,13 +10343,14 @@ Functionce7d: ; ce7d
Functionce86: ; ce86
call GetFacingTileCoord
call CheckHeadbuttTreeTile
- jr nz, .asm_ce97
- ld hl, UnknownScript_0xcea7
+ jr nz, .no_tree
+
+ ld hl, HeadbuttFromMenuScript
call Function31cd
ld a, $81
ret
-.asm_ce97
+.no_tree
call Functionc779
ld a, $80
ret
@@ -10366,25 +10368,26 @@ UnknownText_0xcea2: ; 0xcea2
db "@"
; 0xcea7
-UnknownScript_0xcea7: ; 0xcea7
+HeadbuttFromMenuScript: ; 0xcea7
reloadmappart
special $0035
-UnknownScript_0xceab: ; 0xceab
+HeadbuttScript: ; 0xceab
3callasm GetPartyNick
2writetext UnknownText_0xce9d
+
reloadmappart
- 3callasm Function8c80a
- 3callasm Functionb81ea
- iffalse UnknownScript_0xcec3
+ 3callasm ShakeHeadbuttTree
+
+ 3callasm TreeMonEncounter
+ iffalse .no_battle
loadmovesprites
battlecheck
startbattle
returnafterbattle
end
-; 0xcec3
-UnknownScript_0xcec3: ; 0xcec3
+.no_battle
2writetext UnknownText_0xcea2
closetext
loadmovesprites
@@ -10394,23 +10397,24 @@ UnknownScript_0xcec3: ; 0xcec3
TryHeadbuttOW:: ; cec9
ld d, HEADBUTT
call CheckPartyMove
- jr c, .asm_ceda
- ld a, BANK(UnknownScript_0xcedc)
- ld hl, UnknownScript_0xcedc
+ jr c, .no
+
+ ld a, BANK(AskHeadbuttScript)
+ ld hl, AskHeadbuttScript
call CallScript
scf
ret
-.asm_ceda
+.no
xor a
ret
; cedc
-UnknownScript_0xcedc: ; 0xcedc
+AskHeadbuttScript: ; 0xcedc
loadfont
2writetext UnknownText_0xcee6
yesorno
- iftrue UnknownScript_0xceab
+ iftrue HeadbuttScript
loadmovesprites
end
; 0xcee6
@@ -10421,6 +10425,7 @@ UnknownText_0xcee6: ; 0xcee6
db "@"
; 0xceeb
+
Functionceeb: ; ceeb
call Functioncef4
and $7f
@@ -10430,16 +10435,17 @@ Functionceeb: ; ceeb
Functioncef4: ; cef4
call Functioncf0d
- jr c, .asm_cf07
+ jr c, .no_rock
ld a, d
cp $18
- jr nz, .asm_cf07
- ld hl, UnknownScript_0xcf2e
+ jr nz, .no_rock
+
+ ld hl, RockSmashFromMenuScript
call Function31cd
ld a, $81
ret
-.asm_cf07
+.no_rock
call Functionc779
ld a, $80
ret
@@ -10448,6 +10454,7 @@ Functioncef4: ; cef4
Functioncf0d: ; cf0d
callba CheckFacingObject
jr nc, .asm_cf2c
+
ld a, [$ffb0]
call Function1ae5
ld hl, $0001
@@ -10467,11 +10474,11 @@ Functioncf0d: ; cf0d
ret
; cf2e
-UnknownScript_0xcf2e: ; 0xcf2e
+RockSmashFromMenuScript: ; 0xcf2e
reloadmappart
special $0035
-UnknownScript_0xcf32: ; cf32
+RockSmashScript: ; cf32
3callasm GetPartyNick
2writetext UnknownText_0xcf58
loadmovesprites
@@ -10480,7 +10487,8 @@ UnknownScript_0xcf32: ; cf32
earthquake 84
applymovement2 MovementData_0xcf55
disappear $fe
- 3callasm Functionb8219
+
+ 3callasm RockMonEncounter
copybytetovar $d22e
iffalse .done
battlecheck
@@ -10496,21 +10504,20 @@ MovementData_0xcf55: ; 0xcf55
UnknownText_0xcf58: ; 0xcf58
text_jump UnknownText_0x1c08f0
- db $50
+ db "@"
; 0xcf5d
-UnknownScript_0xcf5d: ; 0xcf5d
- 3callasm Functioncf7c
- if_equal $1, UnknownScript_0xcf6f
+AskRockSmashScript: ; 0xcf5d
+ 3callasm HasRockSmash
+ if_equal 1, .no
+
loadfont
2writetext UnknownText_0xcf77
yesorno
- iftrue UnknownScript_0xcf32
+ iftrue RockSmashScript
loadmovesprites
end
-; 0xcf6f
-
-UnknownScript_0xcf6f: ; 0xcf6f
+.no
jumptext UnknownText_0xcf72
; 0xcf72
@@ -10526,17 +10533,18 @@ UnknownText_0xcf77: ; 0xcf77
db "@"
; 0xcf7c
-Functioncf7c: ; cf7c
+HasRockSmash: ; cf7c
ld d, ROCK_SMASH
call CheckPartyMove
- jr nc, .asm_cf87
- ld a, $1
- jr .asm_cf8a
-.asm_cf87
+ jr nc, .yes
+.no
+ ld a, 1
+ jr .done
+.yes
xor a
- jr .asm_cf8a
-.asm_cf8a
- ld [ScriptVar], a ; $c2dd
+ jr .done
+.done
+ ld [ScriptVar], a
ret
@@ -10565,9 +10573,9 @@ Jumptable_cfa5: ; cfa5
Functioncfaf: ; cfaf
ld a, [PlayerState]
- cp $4
+ cp PLAYER_SURF
jr z, .asm_cfc4
- cp $8
+ cp PLAYER_SURF_PIKA
jr z, .asm_cfc4
call GetFacingTileCoord
call GetTileCollision
@@ -10772,9 +10780,9 @@ Functiond0bc: ; d0bc
call Functiond121
jr c, .asm_d110
ld a, [PlayerState]
- cp $0
+ cp PLAYER_NORMAL
jr z, .asm_d0ce
- cp $1
+ cp PLAYER_BIKE
jr z, .asm_d0f7
jr .asm_d110
@@ -10877,7 +10885,8 @@ UnknownScript_0xd158: ; 0xd158
writecode $8, $0
2writetext UnknownText_0xd181
closetext
-UnknownScript_0xd163
+
+UnknownScript_0xd163:
loadmovesprites
special $0038
special $003c
@@ -10914,28 +10923,31 @@ UnknownText_0xd181: ; 0xd181
db "@"
; 0xd186
+
TryCutOW:: ; d186
ld d, CUT
call CheckPartyMove
- jr c, .asm_d19f
+ jr c, .cant_cut
+
ld de, ENGINE_HIVEBADGE
call CheckEngineFlag
- jr c, .asm_d19f
- ld a, BANK(UnknownScript_0xd1a9)
- ld hl, UnknownScript_0xd1a9
+ jr c, .cant_cut
+
+ ld a, BANK(AskCutScript)
+ ld hl, AskCutScript
call CallScript
scf
ret
-.asm_d19f
- ld a, BANK(UnknownScript_0xd1cd)
- ld hl, UnknownScript_0xd1cd
+.cant_cut
+ ld a, BANK(CantCutScript)
+ ld hl, CantCutScript
call CallScript
scf
ret
; d1a9
-UnknownScript_0xd1a9: ; 0xd1a9
+AskCutScript: ; 0xd1a9
loadfont
2writetext UnknownText_0xd1c8
yesorno
@@ -10952,7 +10964,7 @@ Functiond1ba: ; d1ba
ld [ScriptVar], a
call Functionc7ce
ret c
- ld a, $1
+ ld a, 1
ld [ScriptVar], a
ret
; d1c8
@@ -10962,7 +10974,7 @@ UnknownText_0xd1c8: ; 0xd1c8
db "@"
; 0xd1cd
-UnknownScript_0xd1cd: ; 0xd1cd
+CantCutScript: ; 0xd1cd
jumptext UnknownText_0xd1d0
; 0xd1d0
@@ -18353,7 +18365,7 @@ String_121dd: ; 122dd
String_1224f: ; 1224f
db "a b c d e f g h i j"
- db "k l m n o p q r s t
+ db "k l m n o p q r s t"
db "u v w x y z . - /"
db "'d 'l 'm 'r 's 't 'v & ( )"
db $72, " ", $73, " [ ] ' : ; "
@@ -18719,7 +18731,7 @@ UnknownText_0x124f5: ; 0x124f5
Function124fa: ; 124fa
call ClearPalettes
- call Functionfdb
+ call ClearScreen
call Function3200
call HideSprites
call Function4f0
@@ -31158,7 +31170,7 @@ Function241d5: ; 241d5
call Function24329
.asm_241d8
call Function2431a
- call $402d ; This call jumps to the middle of an instruction.
+ call Function10402d ; BUG: This function is in a different bank.
call Function241fa
jr nc, .asm_241f9
call Function24270
@@ -35987,13 +35999,13 @@ Unknown_271de: ; 271de
db HELD_HEAL_PARALYZE
db HELD_HEAL_STATUS
db $1e
- db $1f
- db $20
- db $21
- db $22
- db $23
- db $24
- db $25
+ db HELD_ATTACK_UP
+ db HELD_DEFENSE_UP
+ db HELD_SPEED_UP
+ db HELD_SP_ATTACK_UP
+ db HELD_SP_DEFENSE_UP
+ db HELD_ACCURACY_UP
+ db HELD_EVASION_UP
db $26
db $47
db HELD_ESCAPE
@@ -36020,7 +36032,7 @@ Function28000: ; 28000
call WhiteBGMap
ld c, $50
call DelayFrames
- call Functionfdb
+ call ClearScreen
call ClearSprites
call Function1ad2
xor a
@@ -36028,7 +36040,7 @@ Function28000: ; 28000
ld [hSCY], a
ld c, $50
call DelayFrames
- call Functionfdb
+ call ClearScreen
call Function1ad2
call Functione51
call Functione58
@@ -36437,7 +36449,7 @@ Function28177: ; 28177
jr nz, .asm_283a9
ld a, CAL
ld [OtherTrainerClass], a
- call Functionfdb
+ call ClearScreen
callba Function4d354
ld hl, Options
ld a, [hl]
@@ -36512,7 +36524,7 @@ Function283b2: ; 283b2
bccoord 1, 14
call Function13e5
call Function4b6
- call Functionfdb
+ call ClearScreen
ld b, $8
call GetSGBLayout
call Function3200
@@ -37209,7 +37221,7 @@ Function287d8: ; 287d8
; 287e3
Function287e3: ; 287e3
- call Functionfdb
+ call ClearScreen
call Function28ef8
callba Function16d673
xor a
@@ -37599,7 +37611,7 @@ Function28ade: ; 28ade
Function28b22: ; 28b22
call Function4b6
- call Functionfdb
+ call ClearScreen
ld b, $8
call GetSGBLayout
call Function3200
@@ -37936,7 +37948,7 @@ Function28b87: ; 28b87
dec a
ld [CurPartyMon], a
callab Function421d8
- call Functionfdb
+ call ClearScreen
call Function28ef8
call Function28eff
callba Function4d354
@@ -38649,7 +38661,7 @@ Function292f6: ; 292f6
ld de, $c736
call PlaceString
ld hl, $c741
- ld de, NULL
+ ld de, 0
.asm_2931e
ld a, [hli]
cp $50
@@ -41681,204 +41693,206 @@ TrainerClassNames:: ; 2c1ef
-AISpecialEffects: ; 2c41a (b:441a)
-; Specific AI for certain move effects.
+AI_Redundant: ; 2c41a
+; Check if move effect c will fail because it's already been used.
; Return z if the move is a good choice.
; Return nz if the move is a bad choice.
ld a, c
ld de, 3
- ld hl, SpecialEffectMoves
+ ld hl, .Moves
call IsInArray
- jp nc, Function2c545
+ jp nc, .NotRedundant
inc hl
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
-; 2c42c (b:442c)
-
-SpecialEffectMoves: ; 2c42c
- dbw EFFECT_DREAM_EATER, Function2c524
- dbw EFFECT_HEAL, Function2c539
- dbw EFFECT_LIGHT_SCREEN, Function2c487
- dbw EFFECT_MIST, Function2c48d
- dbw EFFECT_FOCUS_ENERGY, Function2c493
- dbw EFFECT_CONFUSE, Function2c499
- dbw EFFECT_TRANSFORM, Function2c4a5
- dbw EFFECT_REFLECT, Function2c4ab
- dbw EFFECT_SUBSTITUTE, Function2c4b1
- dbw EFFECT_LEECH_SEED, Function2c4b7
- dbw EFFECT_DISABLE, Function2c4bd
- dbw EFFECT_ENCORE, Function2c4c2
- dbw EFFECT_SNORE, Function2c4c8
- dbw EFFECT_SLEEP_TALK, Function2c4c8
- dbw EFFECT_MEAN_LOOK, Function2c4d1
- dbw EFFECT_NIGHTMARE, Function2c4d7
- dbw EFFECT_SPIKES, Function2c4e3
- dbw EFFECT_FORESIGHT, Function2c4e9
- dbw EFFECT_PERISH_SONG, Function2c4ef
- dbw EFFECT_SANDSTORM, Function2c4f5
- dbw EFFECT_ATTRACT, Function2c4fe
- dbw EFFECT_SAFEGUARD, Function2c50c
- dbw EFFECT_RAIN_DANCE, Function2c512
- dbw EFFECT_SUNNY_DAY, Function2c51b
- dbw EFFECT_TELEPORT, Function2c541
- dbw EFFECT_MORNING_SUN, Function2c539
- dbw EFFECT_SYNTHESIS, Function2c539
- dbw EFFECT_MOONLIGHT, Function2c539
- dbw EFFECT_SWAGGER, Function2c52d
- dbw EFFECT_FUTURE_SIGHT, Function2c533
- db $ff
-; 2c487
-Function2c487: ; 2c487
- ld a, [EnemyScreens] ; $c700
- bit 3, a
+.Moves: ; 2c42c
+ dbw EFFECT_DREAM_EATER, .DreamEater
+ dbw EFFECT_HEAL, .Heal
+ dbw EFFECT_LIGHT_SCREEN, .LightScreen
+ dbw EFFECT_MIST, .Mist
+ dbw EFFECT_FOCUS_ENERGY, .FocusEnergy
+ dbw EFFECT_CONFUSE, .Confuse
+ dbw EFFECT_TRANSFORM, .Transform
+ dbw EFFECT_REFLECT, .Reflect
+ dbw EFFECT_SUBSTITUTE, .Substitute
+ dbw EFFECT_LEECH_SEED, .LeechSeed
+ dbw EFFECT_DISABLE, .Disable
+ dbw EFFECT_ENCORE, .Encore
+ dbw EFFECT_SNORE, .Snore
+ dbw EFFECT_SLEEP_TALK, .SleepTalk
+ dbw EFFECT_MEAN_LOOK, .MeanLook
+ dbw EFFECT_NIGHTMARE, .Nightmare
+ dbw EFFECT_SPIKES, .Spikes
+ dbw EFFECT_FORESIGHT, .Foresight
+ dbw EFFECT_PERISH_SONG, .PerishSong
+ dbw EFFECT_SANDSTORM, .Sandstorm
+ dbw EFFECT_ATTRACT, .Attract
+ dbw EFFECT_SAFEGUARD, .Safeguard
+ dbw EFFECT_RAIN_DANCE, .RainDance
+ dbw EFFECT_SUNNY_DAY, .SunnyDay
+ dbw EFFECT_TELEPORT, .Teleport
+ dbw EFFECT_MORNING_SUN, .MorningSun
+ dbw EFFECT_SYNTHESIS, .Synthesis
+ dbw EFFECT_MOONLIGHT, .Moonlight
+ dbw EFFECT_SWAGGER, .Swagger
+ dbw EFFECT_FUTURE_SIGHT, .FutureSight
+ db -1
+
+.LightScreen: ; 2c487
+ ld a, [EnemyScreens]
+ bit SCREENS_LIGHT_SCREEN, a
ret
-Function2c48d: ; 2c48d
- ld a, [EnemySubStatus4] ; $c670
- bit 1, a
+.Mist: ; 2c48d
+ ld a, [EnemySubStatus4]
+ bit SUBSTATUS_MIST, a
ret
-Function2c493: ; 2c493
- ld a, [EnemySubStatus4] ; $c670
- bit 2, a
+.FocusEnergy: ; 2c493
+ ld a, [EnemySubStatus4]
+ bit SUBSTATUS_FOCUS_ENERGY, a
ret
-Function2c499: ; 2c499
- ld a, [PlayerSubStatus3] ; $c66a
- bit 7, a
+.Confuse: ; 2c499
+ ld a, [PlayerSubStatus3]
+ bit SUBSTATUS_CONFUSED, a
ret nz
- ld a, [PlayerScreens] ; $c6ff
- bit 2, a
+ ld a, [PlayerScreens]
+ bit SCREENS_SAFEGUARD, a
ret
-Function2c4a5: ; 2c4a5
- ld a, [EnemySubStatus5] ; $c671
- bit 3, a
+.Transform: ; 2c4a5
+ ld a, [EnemySubStatus5]
+ bit SUBSTATUS_TRANSFORMED, a
ret
-Function2c4ab: ; 2c4ab
- ld a, [EnemyScreens] ; $c700
- bit 4, a
+.Reflect: ; 2c4ab
+ ld a, [EnemyScreens]
+ bit SCREENS_REFLECT, a
ret
-; 2c4b1 (b:44b1)
-Function2c4b1: ; 2c4b1
+.Substitute: ; 2c4b1
ld a, [EnemySubStatus4]
- bit 4, a
+ bit SUBSTATUS_SUBSTITUTE, a
ret
-Function2c4b7: ; 2c4b7
- ld a, [PlayerSubStatus4] ; $c66b
- bit 7, a
+.LeechSeed: ; 2c4b7
+ ld a, [PlayerSubStatus4]
+ bit SUBSTATUS_LEECH_SEED, a
ret
-Function2c4bd: ; 2c4bd
- ld a, [PlayerDisableCount] ; $c675
+.Disable: ; 2c4bd
+ ld a, [PlayerDisableCount]
and a
ret
-Function2c4c2: ; 2c4c2
- ld a, [PlayerSubStatus5] ; $c66c
- bit 4, a
+.Encore: ; 2c4c2
+ ld a, [PlayerSubStatus5]
+ bit SUBSTATUS_ENCORED, a
ret
-Function2c4c8: ; 2c4c8
- ld a, [EnemyMonStatus] ; $d214
- and $7
- jr z, Function2c541
- jr Function2c545
+.Snore:
+.SleepTalk: ; 2c4c8
+ ld a, [EnemyMonStatus]
+ and SLP
+ jr z, .Redundant
+ jr .NotRedundant
-Function2c4d1: ; 2c4d1
- ld a, [EnemySubStatus5] ; $c671
- bit 7, a
+.MeanLook: ; 2c4d1
+ ld a, [EnemySubStatus5]
+ bit SUBSTATUS_CANT_RUN, a
ret
-; 2c4d7 (b:44d7)
-Function2c4d7: ; 2c4d7
+.Nightmare: ; 2c4d7
ld a, [BattleMonStatus]
and a
- jr z, Function2c541
+ jr z, .Redundant
ld a, [PlayerSubStatus1]
- bit 0, a
+ bit SUBSTATUS_NIGHTMARE, a
ret
-Function2c4e3: ; 2c4e3
- ld a, [PlayerScreens] ; $c6ff
- bit 0, a
+.Spikes: ; 2c4e3
+ ld a, [PlayerScreens]
+ bit SCREENS_SPIKES, a
ret
-Function2c4e9: ; 2c4e9
- ld a, [PlayerSubStatus1] ; $c668
- bit 3, a
+.Foresight: ; 2c4e9
+ ld a, [PlayerSubStatus1]
+ bit SUBSTATUS_IDENTIFIED, a
ret
-Function2c4ef: ; 2c4ef
- ld a, [PlayerSubStatus1] ; $c668
- bit 4, a
+.PerishSong: ; 2c4ef
+ ld a, [PlayerSubStatus1]
+ bit SUBSTATUS_PERISH, a
ret
-Function2c4f5: ; 2c4f5
- ld a, [Weather] ; $c70a
- cp $3
- jr z, Function2c541
- jr Function2c545
+.Sandstorm: ; 2c4f5
+ ld a, [Weather]
+ cp WEATHER_SANDSTORM
+ jr z, .Redundant
+ jr .NotRedundant
-Function2c4fe: ; 2c4fe
+.Attract: ; 2c4fe
callba Function377f5
- jr c, Function2c541
- ld a, [PlayerSubStatus1] ; $c668
- bit 7, a
+ jr c, .Redundant
+ ld a, [PlayerSubStatus1]
+ bit SUBSTATUS_IN_LOVE, a
ret
-Function2c50c: ; 2c50c
- ld a, [EnemyScreens] ; $c700
- bit 2, a
+.Safeguard: ; 2c50c
+ ld a, [EnemyScreens]
+ bit SCREENS_SAFEGUARD, a
ret
-Function2c512: ; 2c512
- ld a, [Weather] ; $c70a
- cp $1
- jr z, Function2c541
- jr Function2c545
+.RainDance: ; 2c512
+ ld a, [Weather]
+ cp WEATHER_RAIN
+ jr z, .Redundant
+ jr .NotRedundant
-Function2c51b: ; 2c51b
- ld a, [Weather] ; $c70a
- cp $2
- jr z, Function2c541
- jr Function2c545
+.SunnyDay: ; 2c51b
+ ld a, [Weather]
+ cp WEATHER_SUN
+ jr z, .Redundant
+ jr .NotRedundant
-Function2c524: ; 2c524
- ld a, [BattleMonStatus] ; $c63a
- and $7
- jr z, Function2c541
- jr Function2c545
+.DreamEater: ; 2c524
+ ld a, [BattleMonStatus]
+ and SLP
+ jr z, .Redundant
+ jr .NotRedundant
-Function2c52d: ; 2c52d
- ld a, [PlayerSubStatus3] ; $c66a
- bit 7, a
+.Swagger: ; 2c52d
+ ld a, [PlayerSubStatus3]
+ bit SUBSTATUS_CONFUSED, a
ret
-Function2c533: ; 2c533
- ld a, [EnemyScreens] ; $c700
+.FutureSight: ; 2c533
+ ld a, [EnemyScreens]
bit 5, a
ret
-Function2c539: ; 2c539
+.Heal:
+.MorningSun:
+.Synthesis:
+.Moonlight: ; 2c539
callba AICheckEnemyMaxHP
- jr nc, Function2c545
+ jr nc, .NotRedundant
-Function2c541: ; 2c541
- ld a, $1
+.Teleport:
+.Redundant: ; 2c541
+ ld a, 1
and a
ret
-Function2c545: ; 2c545 (b:4545)
+.NotRedundant: ; 2c545
xor a
ret
+
Function2c547: ; 2c547
ld hl, UnknownText_0x2c5ef
call PrintText
@@ -47153,7 +47167,7 @@ AIChooseMove: ; 440ce
jr z, .DecrementScores
push bc
- ld d, $e ; BANK(TrainerAI)
+ ld d, BANK(TrainerClassAttributes)
predef FlagPredef
ld d, c
pop bc
@@ -47180,13 +47194,13 @@ AIChooseMove: ; 440ce
jr .CheckLayer
; Decrement the scores of all moves one by one until one reaches 0.
-; If the Pokemon has no moves, the game goes into an endless loop.
.DecrementScores
ld hl, Buffer1
ld de, EnemyMonMoves
ld c, EnemyMonMovesEnd - EnemyMonMoves
.DecrementNextScore
+ ; If the enemy has no moves, this will infinite.
ld a, [de]
inc de
and a
@@ -47264,22 +47278,22 @@ AIChooseMove: ; 440ce
AIScoringPointers: ; 441af
- dw AIScoring_RedStatus
- dw AIScoring_RedStatMods
- dw AIScoring_RedSuperEffective
- dw AIScoring_Offensive
- dw AIScoring_Smart
- dw AIScoring_Opportunist
- dw AIScoring_Aggressive
- dw AIScoring_Cautious
- dw AIScoring_StatusImmunity
- dw AIScoring_Risky
- dw AIScoring_None
- dw AIScoring_None
- dw AIScoring_None
- dw AIScoring_None
- dw AIScoring_None
- dw AIScoring_None
+ dw AI_Basic
+ dw AI_Setup
+ dw AI_Types
+ dw AI_Offensive
+ dw AI_Smart
+ dw AI_Opportunist
+ dw AI_Aggressive
+ dw AI_Cautious
+ dw AI_Status
+ dw AI_Risky
+ dw AI_None
+ dw AI_None
+ dw AI_None
+ dw AI_None
+ dw AI_None
+ dw AI_None
; 441cf
@@ -47375,7 +47389,7 @@ Function4424d: ; 4424d
ld a, b
push af
hlcoord 9, 5
- call Function13d4
+ call FarString
ld h, b
ld l, c
push de
@@ -47463,7 +47477,7 @@ Function4424d: ; 4424d
pop af
hlcoord 2, 11
push af
- call Function13d4
+ call FarString
pop bc
ld a, [$cf65]
or a
@@ -47489,7 +47503,7 @@ Function4424d: ; 4424d
inc de
pop af
hlcoord 2, 11
- call Function13d4
+ call FarString
ret
; 44331
@@ -49849,7 +49863,7 @@ Function48cdc: ; 48cdc (12:4cdc)
call Function48cfd
pop hl
pop bc
- ld de, $939
+ ld de, AttrMap - TileMap
add hl, de
inc b
inc b
@@ -50125,7 +50139,7 @@ INCBIN "gfx/misc/pack_f.w40.2bpp"
Function4925b: ; 4925b
call FadeToMenu
call WhiteBGMap
- call Functionfdb
+ call ClearScreen
call DelayFrame
ld b, $14
call GetSGBLayout
@@ -54551,7 +54565,7 @@ Function4d319: ; 4d319
ld a, [CurPartyMon]
inc a
ld [$cfa9], a
- call Functionfdb
+ call ClearScreen
call WhiteBGMap
call MaxVolume
callba Function28ef8
@@ -54577,7 +54591,7 @@ Function4d35b: ; 4d35b
call Function4d37e
pop hl
pop bc
- ld de, $0939
+ ld de, AttrMap - TileMap
add hl, de
inc b
inc b
@@ -64604,7 +64618,7 @@ Function84785: ; 84785
ld d, [hl]
hlcoord 1, 7
ld a, $77
- call Function13d4
+ call FarString
hlcoord 2, 15
ld de, String_847f5
call PlaceString
@@ -64636,7 +64650,7 @@ Function847bd: ; 847bd
ld d, [hl]
hlcoord 4, 7
ld a, BANK(GBPrinterStrings)
- call Function13d4
+ call FarString
hlcoord 4, 15
ld de, String_847f5
call PlaceString
@@ -66435,7 +66449,7 @@ Function8920f: ; 8920f
Function89215: ; 89215
push hl
push bc
- ld bc, $0939
+ ld bc, AttrMap - TileMap
add hl, bc
ld [hl], a
pop bc
@@ -68961,7 +68975,7 @@ Function8a0a1: ; 8a0a1 (22:60a1)
Function8a0c1: ; 8a0c1 (22:60c1)
push hl
- ld bc, $939
+ ld bc, AttrMap - TileMap
add hl, bc
ld a, [hl]
pop hl
@@ -68987,7 +69001,7 @@ Function8a0c9: ; 8a0c9 (22:60c9)
Function8a0de: ; 8a0de (22:60de)
call Function8a0c9
- ld de, $939
+ ld de, AttrMap - TileMap
add hl, de
ret
@@ -70839,7 +70853,7 @@ Function8ae68: ; 8ae68
.asm_8aea5
call Function8af09
- ld bc, $0939
+ ld bc, AttrMap - TileMap
add hl, bc
call Function8aee9
call Function3200
@@ -72369,7 +72383,7 @@ Function8b73e: ; 8b73e
; 8b744
Function8b744: ; 8b744
- ld de, $0939
+ ld de, AttrMap - TileMap
add hl, de
inc b
inc b
@@ -74073,7 +74087,7 @@ Function8c7e1: ; 8c7e1
ret
; 8c80a
-Function8c80a: ; 8c80a
+ShakeHeadbuttTree: ; 8c80a
callba Function8cf53
ld de, GFX_8c9cc
ld hl, VTiles1
@@ -74159,10 +74173,10 @@ Function8c913: ; 8c913
; 8c938
Unknown_8c938: ; 8c938
- dw $c570 ; ( 8, 10)
- dw $c520 ; ( 8, 6)
- dw $c546 ; ( 6, 8)
- dw $c54a ; (10, 8)
+ dw TileMap + 8 + 10 * SCREEN_WIDTH
+ dw TileMap + 8 + 6 * SCREEN_WIDTH
+ dw TileMap + 6 + 8 * SCREEN_WIDTH
+ dw TileMap + 10 + 8 * SCREEN_WIDTH
; 8c940
Function8c940: ; 8c940
@@ -74195,7 +74209,7 @@ Function8c96d: ; 8c96d
lb bc, BANK(GFX_8c9cc), 4
call Request2bpp
ld de, CutTreeGFX
- ld hl, $8840
+ ld hl, VTiles1 + $40
lb bc, BANK(CutTreeGFX), 4
call Request2bpp
ret
@@ -81538,8 +81552,8 @@ Function91753: ; 91753 (24:5753)
xor a ; OAKS_POKEMON_TALK
ld [$d002], a
ld [$d005], a
- ld a, BANK(Functionb8612)
- ld hl, Functionb8612
+ ld a, BANK(PlayRadioShow)
+ ld hl, PlayRadioShow
call Function9187c
ld de, OaksPkmnTalkName
ret
@@ -81549,8 +81563,8 @@ Function91766: ; 91766 (24:5766)
ld [$d002], a
xor a
ld [$d005], a
- ld a, BANK(Functionb8612)
- ld hl, Functionb8612
+ ld a, BANK(PlayRadioShow)
+ ld hl, PlayRadioShow
call Function9187c
ld de, PokedexShowName
ret
@@ -81560,8 +81574,8 @@ Function9177b: ; 9177b (24:577b)
ld [$d002], a
xor a
ld [$d005], a
- ld a, BANK(Functionb8612)
- ld hl, Functionb8612
+ ld a, BANK(PlayRadioShow)
+ ld hl, PlayRadioShow
call Function9187c
ld de, PokemonMusicName
ret
@@ -81571,8 +81585,8 @@ Function91790: ; 91790 (24:5790)
ld [$d002], a
xor a
ld [$d005], a
- ld a, BANK(Functionb8612)
- ld hl, Functionb8612
+ ld a, BANK(PlayRadioShow)
+ ld hl, PlayRadioShow
call Function9187c
ld de, LuckyChannelName
ret
@@ -81582,8 +81596,8 @@ Function917a5: ; 917a5 (24:57a5)
ld [$d002], a
xor a
ld [$d005], a
- ld a, BANK(Functionb8612)
- ld hl, Functionb8612
+ ld a, BANK(PlayRadioShow)
+ ld hl, PlayRadioShow
call Function9187c
ld de, NotBuenasPasswordName
ld a, [StatusFlags2] ; $d84d
@@ -81601,8 +81615,8 @@ Function917d5: ; 917d5 (24:57d5)
ld [$d002], a
xor a
ld [$d005], a
- ld a, BANK(Functionb8612)
- ld hl, Functionb8612
+ ld a, BANK(PlayRadioShow)
+ ld hl, PlayRadioShow
call Function9187c
ld de, UnknownStationName
ret
@@ -81612,8 +81626,8 @@ Function917ea: ; 917ea (24:57ea)
ld [$d002], a
xor a
ld [$d005], a
- ld a, BANK(Functionb8612)
- ld hl, Functionb8612
+ ld a, BANK(PlayRadioShow)
+ ld hl, PlayRadioShow
call Function9187c
ld de, PlacesAndPeopleName
ret
@@ -81623,8 +81637,8 @@ Function917ff: ; 917ff (24:57ff)
ld [$d002], a
xor a
ld [$d005], a
- ld a, BANK(Functionb8612)
- ld hl, Functionb8612
+ ld a, BANK(PlayRadioShow)
+ ld hl, PlayRadioShow
call Function9187c
ld de, LetsAllSingName
ret
@@ -81635,8 +81649,8 @@ Function91814: ; 91814
ld [$d002], a
xor a
ld [$d005], a
- ld a, BANK(Functionb8612)
- ld hl, Functionb8612
+ ld a, BANK(PlayRadioShow)
+ ld hl, PlayRadioShow
call Function9187c
ld de, LetsAllSingName
ret
@@ -81647,8 +81661,8 @@ Function91829: ; 91829 (24:5829)
ld [$d002], a
xor a
ld [$d005], a
- ld a, BANK(Functionb8612)
- ld hl, Functionb8612
+ ld a, BANK(PlayRadioShow)
+ ld hl, PlayRadioShow
call Function9187c
ld de, PokeFluteStationName
ret
@@ -81658,8 +81672,8 @@ Function9183e: ; 9183e (24:583e)
ld [$d002], a
xor a
ld [$d005], a
- ld a, BANK(Functionb8612)
- ld hl, Functionb8612
+ ld a, BANK(PlayRadioShow)
+ ld hl, PlayRadioShow
call Function9187c
ld de, UnknownStationName
ret
@@ -85371,7 +85385,7 @@ Functionb8101: ; b8101 (2e:4101)
Functionb8115: ; b8115
- ld de, $0939
+ ld de, AttrMap - TileMap
add hl, de
inc b
inc b
@@ -85522,143 +85536,157 @@ Functionb81e2: ; b81e2
ret
; b81ea
-Functionb81ea: ; b81ea
+
+TreeMonEncounter: ; b81ea
callba Function1060ef
+
xor a
ld [$d22e], a
ld [CurPartyLevel], a
+
ld hl, TreeMonMaps
- call GetTreeMonEncounterTable
- jr nc, .asm_b8214
- call LoadTreeMonData
- jr nc, .asm_b8214
- call Functionb83e5
- jr nc, .asm_b8214
+ call GetTreeMonSet
+ jr nc, .no_battle
+
+ call GetTreeMons
+ jr nc, .no_battle
+
+ call GetTreeMon
+ jr nc, .no_battle
+
ld a, BATTLETYPE_TREE
ld [BattleType], a
- ld a, $1
+ ld a, 1
ld [ScriptVar], a
ret
-.asm_b8214
+.no_battle
xor a
ld [ScriptVar], a
ret
; b8219
-Functionb8219: ; b8219
-; get a RockMon encounter
+RockMonEncounter: ; b8219
xor a
ld [$d22e], a
ld [CurPartyLevel], a
ld hl, RockMonMaps
- call GetTreeMonEncounterTable
- jr nc, .quit
+ call GetTreeMonSet
+ jr nc, .no_battle
- call LoadTreeMonData
- jr nc, .quit
+ call GetTreeMons
+ jr nc, .no_battle
ld a, 10
call RandomRange
cp 4
- jr nc, .quit
+ jr nc, .no_battle
- call Functionb841f
- jr nc, .quit
+ call SelectTreeMon
+ jr nc, .no_battle
ret
-.quit
+.no_battle
xor a
ret
; b823e
db $05 ; ????
-GetTreeMonEncounterTable: ; b823f
-; Return carry and table id in a
-; if MapGroup and MapNumber are in table hl
+GetTreeMonSet: ; b823f
+; Return carry and treemon set in a
+; if the current map is in table hl.
ld a, [MapNumber]
ld e, a
ld a, [MapGroup]
ld d, a
.loop
ld a, [hli]
- cp $ff
- jr z, .quit
+ cp -1
+ jr z, .not_in_table
+
cp d
jr nz, .skip2
+
ld a, [hli]
cp e
jr nz, .skip1
- jr .end
+
+ jr .in_table
+
.skip2
inc hl
.skip1
inc hl
jr .loop
-.quit
+
+.not_in_table
xor a
ret
-.end
+
+.in_table
ld a, [hl]
scf
ret
; b825e
TreeMonMaps: ; b825e
- db GROUP_ROUTE_26, MAP_ROUTE_26, 4
- db GROUP_ROUTE_27, MAP_ROUTE_27, 4
- db GROUP_ROUTE_28, MAP_ROUTE_28, 0
- db GROUP_ROUTE_29, MAP_ROUTE_29, 3
- db GROUP_ROUTE_30, MAP_ROUTE_30, 3
- db GROUP_ROUTE_31, MAP_ROUTE_31, 3
- db GROUP_ROUTE_32, MAP_ROUTE_32, 4
- db GROUP_ROUTE_33, MAP_ROUTE_33, 2
- db GROUP_ROUTE_34, MAP_ROUTE_34, 3
- db GROUP_ROUTE_35, MAP_ROUTE_35, 3
- db GROUP_ROUTE_36, MAP_ROUTE_36, 3
- db GROUP_ROUTE_37, MAP_ROUTE_37, 3
- db GROUP_ROUTE_38, MAP_ROUTE_38, 3
- db GROUP_ROUTE_39, MAP_ROUTE_39, 3
- db GROUP_ROUTE_40, MAP_ROUTE_40, 0
- db GROUP_ROUTE_41, MAP_ROUTE_41, 0
- db GROUP_ROUTE_42, MAP_ROUTE_42, 2
- db GROUP_ROUTE_43, MAP_ROUTE_43, 5
- db GROUP_ROUTE_44, MAP_ROUTE_44, 1
- db GROUP_ROUTE_45, MAP_ROUTE_45, 1
- db GROUP_ROUTE_46, MAP_ROUTE_46, 1
- db GROUP_NEW_BARK_TOWN, MAP_NEW_BARK_TOWN, 0
- db GROUP_CHERRYGROVE_CITY, MAP_CHERRYGROVE_CITY, 0
- db GROUP_VIOLET_CITY, MAP_VIOLET_CITY, 0
- db GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN, 2
- db GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY, 0
- db GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY, 0
- db GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY, 0
- db GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY, 0
- db GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN, 0
- db GROUP_LAKE_OF_RAGE, MAP_LAKE_OF_RAGE, 5
- db GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY, 0
- db GROUP_SILVER_CAVE_OUTSIDE, MAP_SILVER_CAVE_OUTSIDE, 0
- db GROUP_ILEX_FOREST, MAP_ILEX_FOREST, 6
+treemon_map: macro
+ map \1
+ db \2 ; treemon set
+endm
+ treemon_map ROUTE_26, 4
+ treemon_map ROUTE_27, 4
+ treemon_map ROUTE_28, 0
+ treemon_map ROUTE_29, 3
+ treemon_map ROUTE_30, 3
+ treemon_map ROUTE_31, 3
+ treemon_map ROUTE_32, 4
+ treemon_map ROUTE_33, 2
+ treemon_map ROUTE_34, 3
+ treemon_map ROUTE_35, 3
+ treemon_map ROUTE_36, 3
+ treemon_map ROUTE_37, 3
+ treemon_map ROUTE_38, 3
+ treemon_map ROUTE_39, 3
+ treemon_map ROUTE_40, 0
+ treemon_map ROUTE_41, 0
+ treemon_map ROUTE_42, 2
+ treemon_map ROUTE_43, 5
+ treemon_map ROUTE_44, 1
+ treemon_map ROUTE_45, 1
+ treemon_map ROUTE_46, 1
+ treemon_map NEW_BARK_TOWN, 0
+ treemon_map CHERRYGROVE_CITY, 0
+ treemon_map VIOLET_CITY, 0
+ treemon_map AZALEA_TOWN, 2
+ treemon_map CIANWOOD_CITY, 0
+ treemon_map GOLDENROD_CITY, 0
+ treemon_map OLIVINE_CITY, 0
+ treemon_map ECRUTEAK_CITY, 0
+ treemon_map MAHOGANY_TOWN, 0
+ treemon_map LAKE_OF_RAGE, 5
+ treemon_map BLACKTHORN_CITY, 0
+ treemon_map SILVER_CAVE_OUTSIDE, 0
+ treemon_map ILEX_FOREST, 6
db -1
; b82c5
RockMonMaps: ; b82c5
- db GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY, 7
- db GROUP_ROUTE_40, MAP_ROUTE_40, 7
- db GROUP_DARK_CAVE_VIOLET_ENTRANCE, MAP_DARK_CAVE_VIOLET_ENTRANCE, 7
- db GROUP_SLOWPOKE_WELL_B1F, MAP_SLOWPOKE_WELL_B1F, 7
+ treemon_map CIANWOOD_CITY, 7
+ treemon_map ROUTE_40, 7
+ treemon_map DARK_CAVE_VIOLET_ENTRANCE, 7
+ treemon_map SLOWPOKE_WELL_B1F, 7
db -1
; b82d2
-LoadTreeMonData: ; b82d2
-; Return TreeMon pointer a in hl
-; Return carry on success
+GetTreeMons: ; b82d2
+; Return the address of TreeMon table a in hl.
+; Return nc if table a doesn't exist.
-; only 7 tables
cp 8
jr nc, .quit
@@ -85667,7 +85695,7 @@ LoadTreeMonData: ; b82d2
ld e, a
ld d, 0
- ld hl, TreeMonPointers
+ ld hl, TreeMons
add hl, de
add hl, de
@@ -85683,212 +85711,186 @@ LoadTreeMonData: ; b82d2
ret
; b82e8
-TreeMonPointers: ; b82e8
-; seems to point to "normal" tree encounter data
-; so only odd-numbered tables are used
- dw TreeMons1 ; 0
- dw TreeMons1 ; 1
- dw TreeMons3 ; 2
- dw TreeMons5 ; 3
- dw TreeMons7 ; 4
- dw TreeMons9 ; 5
- dw TreeMons11 ; 6
- dw RockMons ; 7
- dw TreeMons1 ; filler
-; b82fa
-
-; structure: % species level
+TreeMons: ; b82e8
+ dw TreeMons1
+ dw TreeMons1
+ dw TreeMons2
+ dw TreeMons3
+ dw TreeMons4
+ dw TreeMons5
+ dw TreeMons6
+ dw RockMons
+ dw TreeMons1
+
+; Two tables each (normal, rare).
+; Structure:
+; db %, species, level
TreeMons1: ; b82fa
- db 50, SPEAROW, 10
- db 15, SPEAROW, 10
- db 15, SPEAROW, 10
- db 10, AIPOM, 10
- db 5, AIPOM, 10
- db 5, AIPOM, 10
- db $ff ; end
-; b830d
-
-TreeMons2 ; b830d
-; unused
- db 50, SPEAROW, 10
- db 15, HERACROSS, 10
- db 15, HERACROSS, 10
- db 10, AIPOM, 10
- db 5, AIPOM, 10
- db 5, AIPOM, 10
- db $ff ; end
-; b8320
-
-TreeMons3: ; b8320
- db 50, SPEAROW, 10
- db 15, EKANS, 10
- db 15, SPEAROW, 10
- db 10, AIPOM, 10
- db 5, AIPOM, 10
- db 5, AIPOM, 10
- db $ff ; end
-; b8333
-
-TreeMons4: ; b8333
-; unused
- db 50, SPEAROW, 10
- db 15, HERACROSS, 10
- db 15, HERACROSS, 10
- db 10, AIPOM, 10
- db 5, AIPOM, 10
- db 5, AIPOM, 10
- db $ff ; end
-; b8346
-
-TreeMons5: ; b8346
- db 50, HOOTHOOT, 10
- db 15, SPINARAK, 10
- db 15, LEDYBA, 10
- db 10, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db $ff ; end
-; b8359
-
-TreeMons6: ; b8359
-; unused
- db 50, HOOTHOOT, 10
- db 15, PINECO, 10
- db 15, PINECO, 10
- db 10, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db $ff ; end
-; b836c
-
-TreeMons7: ; b836c
- db 50, HOOTHOOT, 10
- db 15, EKANS, 10
- db 15, HOOTHOOT, 10
- db 10, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db $ff ; end
-; b837f
-
-TreeMons8: ; b837f
-; unused
- db 50, HOOTHOOT, 10
- db 15, PINECO, 10
- db 15, PINECO, 10
- db 10, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db $ff ; end
-; b8392
-
-TreeMons9: ; b8392
- db 50, HOOTHOOT, 10
- db 15, VENONAT, 10
- db 15, HOOTHOOT, 10
- db 10, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db $ff ; end
-; b83a5
-
-TreeMons10: ; b83a5
-; unused
- db 50, HOOTHOOT, 10
- db 15, PINECO, 10
- db 15, PINECO, 10
- db 10, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db 5, EXEGGCUTE, 10
- db $ff ; end
-; b83b8
-
-TreeMons11: ; b83b8
- db 50, HOOTHOOT, 10
- db 15, PINECO, 10
- db 15, PINECO, 10
- db 10, NOCTOWL, 10
- db 5, BUTTERFREE, 10
- db 5, BEEDRILL, 10
- db $ff ; end
-; b83cb
-
-TreeMons12; b83cb
-; unused
- db 50, HOOTHOOT, 10
- db 15, CATERPIE, 10
- db 15, WEEDLE, 10
- db 10, HOOTHOOT, 10
- db 5, METAPOD, 10
- db 5, KAKUNA, 10
- db $ff ; end
-; b83de
+ db 50, SPEAROW, 10
+ db 15, SPEAROW, 10
+ db 15, SPEAROW, 10
+ db 10, AIPOM, 10
+ db 5, AIPOM, 10
+ db 5, AIPOM, 10
+ db -1
+
+ db 50, SPEAROW, 10
+ db 15, HERACROSS, 10
+ db 15, HERACROSS, 10
+ db 10, AIPOM, 10
+ db 5, AIPOM, 10
+ db 5, AIPOM, 10
+ db -1
+
+TreeMons2: ; b8320
+ db 50, SPEAROW, 10
+ db 15, EKANS, 10
+ db 15, SPEAROW, 10
+ db 10, AIPOM, 10
+ db 5, AIPOM, 10
+ db 5, AIPOM, 10
+ db -1
+
+ db 50, SPEAROW, 10
+ db 15, HERACROSS, 10
+ db 15, HERACROSS, 10
+ db 10, AIPOM, 10
+ db 5, AIPOM, 10
+ db 5, AIPOM, 10
+ db -1
+
+TreeMons3: ; b8346
+ db 50, HOOTHOOT, 10
+ db 15, SPINARAK, 10
+ db 15, LEDYBA, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db -1
+
+ db 50, HOOTHOOT, 10
+ db 15, PINECO, 10
+ db 15, PINECO, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db -1
+
+TreeMons4: ; b836c
+ db 50, HOOTHOOT, 10
+ db 15, EKANS, 10
+ db 15, HOOTHOOT, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db -1
+
+ db 50, HOOTHOOT, 10
+ db 15, PINECO, 10
+ db 15, PINECO, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db -1
+
+TreeMons5: ; b8392
+ db 50, HOOTHOOT, 10
+ db 15, VENONAT, 10
+ db 15, HOOTHOOT, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db -1
+
+ db 50, HOOTHOOT, 10
+ db 15, PINECO, 10
+ db 15, PINECO, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db -1
+
+TreeMons6: ; b83b8
+ db 50, HOOTHOOT, 10
+ db 15, PINECO, 10
+ db 15, PINECO, 10
+ db 10, NOCTOWL, 10
+ db 5, BUTTERFREE, 10
+ db 5, BEEDRILL, 10
+ db -1
+
+ db 50, HOOTHOOT, 10
+ db 15, CATERPIE, 10
+ db 15, WEEDLE, 10
+ db 10, HOOTHOOT, 10
+ db 5, METAPOD, 10
+ db 5, KAKUNA, 10
+ db -1
RockMons: ; b83de
- db 90, KRABBY, 15
- db 10, SHUCKLE, 15
- db $ff ; end
+ db 90, KRABBY, 15
+ db 10, SHUCKLE, 15
+ db -1
; b83e5
-Functionb83e5: ; b83e5
+GetTreeMon: ; b83e5
push hl
- call Functionb8443
+ call GetTreeScore
pop hl
and a
- jr z, .asm_b83f6
- cp $1
- jr z, .asm_b8400
- cp $2
- jr z, .asm_b840b
+ jr z, .bad
+ cp 1
+ jr z, .good
+ cp 2
+ jr z, .rare
ret
-.asm_b83f6
+.bad
ld a, 10
call RandomRange
and a
- jr nz, Functionb843b
- jr Functionb841f
+ jr nz, NoTreeMon
+ jr SelectTreeMon
-.asm_b8400
+.good
ld a, 10
call RandomRange
cp 5
- jr nc, Functionb843b
- jr Functionb841f
+ jr nc, NoTreeMon
+ jr SelectTreeMon
-.asm_b840b
+.rare
ld a, 10
call RandomRange
cp 8
- jr nc, Functionb843b
- jr .asm_b8416
-
-.asm_b8416
+ jr nc, NoTreeMon
+ jr .skip
+.skip
ld a, [hli]
- cp $ff
- jr nz, .asm_b8416
- call Functionb841f
+ cp -1
+ jr nz, .skip
+ call SelectTreeMon
ret
; b841f
-Functionb841f: ; b841f
-; Read a TreeMons table.
+SelectTreeMon: ; b841f
+; Read a TreeMons table and pick one monster at random.
ld a, 100
call RandomRange
-.asm_b8424
+.loop
sub [hl]
- jr c, .asm_b842c
+ jr c, .ok
inc hl
inc hl
inc hl
- jr .asm_b8424
+ jr .loop
-.asm_b842c
+.ok
ld a, [hli]
cp $ff
- jr z, Functionb843b
+ jr z, NoTreeMon
ld a, [hli]
ld [$d22e], a
@@ -85897,58 +85899,60 @@ Functionb841f: ; b841f
scf
ret
-Functionb843b: ; b843b
+NoTreeMon: ; b843b
xor a
ld [$d22e], a
ld [CurPartyLevel], a
ret
; b8443
-Functionb8443: ; b8443
- call Functionb8466
+GetTreeScore: ; b8443
+ call .CoordScore
ld [Buffer1], a
- call Functionb849d
+ call .OTIDScore
ld [Buffer2], a
ld c, a
ld a, [Buffer1]
sub c
- jr z, .asm_b8463
- jr nc, .asm_b845a
- add $a
+ jr z, .rare
+ jr nc, .ok
+ add 10
+.ok
+ cp 5
+ jr c, .good
-.asm_b845a
- cp $5
- jr c, .asm_b8460
+.bad
xor a
ret
-.asm_b8460
- ld a, $1
+.good
+ ld a, 1
ret
-.asm_b8463
- ld a, $2
+.rare
+ ld a, 2
ret
; b8466
-Functionb8466: ; b8466
+.CoordScore: ; b8466
call GetFacingTileCoord
- ld hl, $0000
+ ld hl, 0
ld c, e
- ld b, $0
+ ld b, 0
ld a, d
- and a
- jr z, .asm_b8477
-.asm_b8473
+ and a
+ jr z, .next
+.loop
add hl, bc
dec a
- jr nz, .asm_b8473
+ jr nz, .loop
+.next
-.asm_b8477
add hl, bc
ld c, d
add hl, bc
+
ld a, h
ld [hDividend], a
ld a, l
@@ -85957,6 +85961,7 @@ Functionb8466: ; b8466
ld [hDivisor], a
ld b, 2
call Divide
+
ld a, [hQuotient + 1]
ld [hDividend], a
ld a, [hQuotient + 2]
@@ -85965,11 +85970,12 @@ Functionb8466: ; b8466
ld [hDivisor], a
ld b, 2
call Divide
+
ld a, [hQuotient + 3]
ret
; b849d
-Functionb849d: ; b849d
+.OTIDScore: ; b849d
ld a, [PlayerID]
ld [hDividend], a
ld a, [PlayerID + 1]
@@ -85982,26 +85988,29 @@ Functionb849d: ; b849d
ret
; b84b3
+
Functionb84b3: ; b84b3
ld a, [rVBK]
push af
ld a, $1
ld [rVBK], a
+
ld de, FishingGFX
ld a, [PlayerGender]
bit 0, a
jr z, .asm_b84c7
ld de, KrisFishingGFX
-
.asm_b84c7
+
ld hl, $8020
call Functionb84e3
ld hl, $8060
call Functionb84e3
ld hl, $80a0
call Functionb84e3
- ld hl, $8fc0
+ ld hl, $9000 - $40
call Functionb84e3
+
pop af
ld [rVBK], a
ret
@@ -86012,7 +86021,7 @@ Functionb84e3: ; b84e3
push de
call Get2bpp
pop de
- ld hl, $0020
+ ld hl, $20
add hl, de
ld d, h
ld e, l
@@ -86027,7 +86036,8 @@ KrisFishingGFX: ; b8582
INCBIN "baserom.gbc",$b8582,$b8612 - $b8582
; b8612
-Functionb8612: ; b8612
+
+PlayRadioShow: ; b8612
ld a, [$d002]
cp 8
jr nc, .ok
@@ -90064,7 +90074,7 @@ Functione03ec: ; e03ec
ld a, [hCGB]
and a
ret z
- ld de, $0939
+ ld de, AttrMap - TileMap
add hl, de
ld a, [CurEnemyMoveNum]
and 3
@@ -94692,7 +94702,7 @@ Functione31e7: ; e31e7
pop hl
ld a, [wCurBox]
push af
- ld bc, NULL
+ ld bc, 0
ld a, [$cb31]
and a
jr nz, .asm_e3215
@@ -107791,7 +107801,7 @@ Function1176ee: ; 1176ee (45:76ee)
.asm_117709
callba Function8cf53
call WhiteBGMap
- call Functionfdb
+ call ClearScreen
call ClearSprites
ret
@@ -111090,7 +111100,7 @@ Function11c1ca: ; 11c1ca
call Function11c254
call WhiteBGMap
call ClearSprites
- call Functionfdb
+ call ClearScreen
call Function11d323
call Function32f9
call DisableLCD
@@ -113467,7 +113477,7 @@ Function16d61d: ; 16d61d
call Function16d640
pop hl
pop bc
- ld de, $0939
+ ld de, AttrMap - TileMap
add hl, de
inc b
inc b
@@ -113875,7 +113885,7 @@ Function1704e1: ; 1704e1
Function1704f1: ; 1704f1
call WhiteBGMap
call ClearSprites
- call Functionfdb
+ call ClearScreen
.asm_1704fa
call Functiona57
ld a, [$cf63]
@@ -115490,7 +115500,7 @@ Function17d370: ; 17d370
ld [$cd6c], a
call WhiteBGMap
call ClearSprites
- call Functionfdb
+ call ClearScreen
callba Function104061
call DisableLCD
ld hl, $8ee0
@@ -116360,16 +116370,16 @@ Function17f41d: ; 17f41d
push af
ld l, c
ld h, b
- ld bc, $3b60
+ ld bc, -TileMap + $10000
add hl, bc
- ld de, $ffec
+ ld de, -SCREEN_WIDTH
ld c, $1
.asm_17f42c
ld a, h
and a
jr nz, .asm_17f435
ld a, l
- cp $14
+ cp SCREEN_WIDTH
jr c, .asm_17f439
.asm_17f435
@@ -116379,7 +116389,7 @@ Function17f41d: ; 17f41d
.asm_17f439
ld hl, TileMap
- ld de, $0014
+ ld de, SCREEN_WIDTH
ld a, c
.asm_17f440
and a
@@ -116391,7 +116401,7 @@ Function17f41d: ; 17f41d
.asm_17f447
pop af
ld e, a
- ld d, $0
+ ld d, 0
add hl, de
pop de
and a
@@ -116412,7 +116422,7 @@ Function17f44f: ; 17f44f
ld l, c
ld h, b
ld c, a
- ld b, $0
+ ld b, 0
add hl, bc
ld a, [de]
cp $50
@@ -116961,7 +116971,7 @@ Function1dc1b0: ; 1dc1b0
pop af
ld a, b
ld hl, $cb6d
- call nz, Function13d4
+ call nz, FarString
ld hl, $caa3
ld [hl], $35
ld de, $0014
@@ -117011,7 +117021,7 @@ Function1dc213: ; 1dc213
pop af
ld hl, $caa5
ld a, b
- call nz, Function13d4
+ call nz, FarString
ret
; 1dc26a
@@ -117793,7 +117803,7 @@ INCBIN "baserom.gbc",$1f4000,$1f4003 - $1f4000
Function1f4003: ; 1f4003
ld a, $6
call GetSRAMBank
- ld hl, $4018
+ ld hl, MobileSave
ld de, $a000
ld bc, $1000
call CopyBytes
@@ -117801,7 +117811,9 @@ Function1f4003: ; 1f4003
ret
; 1f4018
-INCBIN "baserom.gbc",$1f4018,$1f636a - $1f4018
+MobileSave: INCBIN "misc/mobile_save.bin"
+
+INCBIN "baserom.gbc",$1f5018,$1f636a - $1f5018
SECTION "bank7E", ROMX, BANK[$7E]