diff options
Diffstat (limited to 'main.asm')
-rw-r--r-- | main.asm | 1114 |
1 files changed, 563 insertions, 551 deletions
@@ -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] |