diff options
Diffstat (limited to 'engine')
44 files changed, 454 insertions, 24 deletions
diff --git a/engine/card_flip.asm b/engine/card_flip.asm index cfcd949e6..c0c4639ad 100755 --- a/engine/card_flip.asm +++ b/engine/card_flip.asm @@ -1185,14 +1185,14 @@ CardFlip_CheckWinCondition: ; e0637 .IsCoinCaseFull: ; e0833 ld a, [Coins] - cp 9999 / $100 + cp MAX_COINS / $100 jr c, .less jr z, .check_low jr .more .check_low ld a, [Coins + 1] - cp 9999 % $100 + cp MAX_COINS % $100 jr c, .less .more diff --git a/engine/diploma.asm b/engine/diploma.asm index 582d0cd1c..f1c67ea37 100644 --- a/engine/diploma.asm +++ b/engine/diploma.asm @@ -1,4 +1,3 @@ - _Diploma: ; 1dd702 call PlaceDiplomaOnScreen call WaitPressAorB_BlinkCursor diff --git a/engine/item_effects.asm b/engine/item_effects.asm index 2d7aa4c69..7fd2b7196 100644 --- a/engine/item_effects.asm +++ b/engine/item_effects.asm @@ -3314,5 +3314,3 @@ GetMthMoveOfCurrentMon: ; f969 add hl, bc ret ; f971 - -INCLUDE "engine/pokeball_wobble.asm" diff --git a/engine/link_2.asm b/engine/link_2.asm new file mode 100644 index 000000000..72e5262b3 --- /dev/null +++ b/engine/link_2.asm @@ -0,0 +1,91 @@ +LinkMonStatsScreen: ; 4d319 + ld a, [wMenuCursorY] + dec a + ld [CurPartyMon], a + call LowVolume + predef StatsScreenInit + ld a, [CurPartyMon] + inc a + ld [wMenuCursorY], a + call ClearScreen + call ClearBGPalettes + call MaxVolume + farcall LoadTradeScreenBorder + farcall Link_WaitBGMap + farcall InitTradeSpeciesList + farcall SetTradeRoomBGPals + call WaitBGMap2 + ret + +Link_WaitBGMap: ; 4d354 + call WaitBGMap + call WaitBGMap2 + ret + +LinkTextbox2: ; 4d35b + ld h, d + ld l, e + push bc + push hl + call .PlaceBorder + pop hl + pop bc + ld de, AttrMap - TileMap + add hl, de + inc b + inc b + inc c + inc c + ld a, $7 +.row + push bc + push hl +.col + ld [hli], a + dec c + jr nz, .col + pop hl + ld de, SCREEN_WIDTH + add hl, de + pop bc + dec b + jr nz, .row + ret + +.PlaceBorder: ; 4d37e + push hl + ld a, $76 + ld [hli], a + inc a + call .PlaceRow + inc a + ld [hl], a + pop hl + ld de, SCREEN_WIDTH + add hl, de +.loop + push hl + ld a, "┌" + ld [hli], a + ld a, " " + call .PlaceRow + ld [hl], "─" + pop hl + ld de, SCREEN_WIDTH + add hl, de + dec b + jr nz, .loop + ld a, "┐" + ld [hli], a + ld a, "│" + call .PlaceRow + ld [hl], "└" + ret + +.PlaceRow: ; 4d3ab + ld d, c +.row_loop + ld [hli], a + dec d + jr nz, .row_loop + ret diff --git a/engine/money.asm b/engine/money.asm index 874821814..60de97568 100755 --- a/engine/money.asm +++ b/engine/money.asm @@ -24,7 +24,7 @@ GiveMoney:: ; 15fd7 ; 15ff7 MaxMoney: ; 15ff7 - dt 999999 + dt MAX_MONEY ; 15ffa @@ -192,7 +192,7 @@ GiveCoins:: ; 1606f ; 1608d .maxcoins ; 1608d - bigdw 9999 + bigdw MAX_COINS ; 1608f diff --git a/engine/player_gfx_2.asm b/engine/player_gfx_2.asm deleted file mode 100644 index d6e7791a3..000000000 --- a/engine/player_gfx_2.asm +++ /dev/null @@ -1,5 +0,0 @@ -ChrisBackpic: ; 2ba1a -INCBIN "gfx/player/chris_back.2bpp.lz" - -DudeBackpic: ; 2bbaa -INCBIN "gfx/battle/dude.2bpp.lz" diff --git a/engine/pokerus_tick.asm b/engine/routines/applypokerustick.asm index 3c97fdc5e..3c97fdc5e 100644 --- a/engine/pokerus_tick.asm +++ b/engine/routines/applypokerustick.asm diff --git a/engine/routines/battlestart_copytilemapatonce.asm b/engine/routines/battlestart_copytilemapatonce.asm new file mode 100644 index 000000000..2952e833b --- /dev/null +++ b/engine/routines/battlestart_copytilemapatonce.asm @@ -0,0 +1,3 @@ +BattleStart_CopyTilemapAtOnce: ; 8cf4f + call CGBOnly_CopyTilemapAtOnce + ret diff --git a/engine/check_battle_scene.asm b/engine/routines/checkbattlescene.asm index b63f00907..b63f00907 100644 --- a/engine/check_battle_scene.asm +++ b/engine/routines/checkbattlescene.asm diff --git a/engine/check_nick_errors.asm b/engine/routines/checknickerrors.asm index 1cedca420..1cedca420 100644 --- a/engine/check_nick_errors.asm +++ b/engine/routines/checknickerrors.asm diff --git a/engine/routines/checkpokerus.asm b/engine/routines/checkpokerus.asm new file mode 100644 index 000000000..285024754 --- /dev/null +++ b/engine/routines/checkpokerus.asm @@ -0,0 +1,25 @@ +CheckPokerus: ; 4d860 +; Return carry if a monster in your party has Pokerus + +; Get number of monsters to iterate over + ld a, [PartyCount] + and a + jr z, .NoPokerus + ld b, a +; Check each monster in the party for Pokerus + ld hl, PartyMon1PokerusStatus + ld de, PARTYMON_STRUCT_LENGTH +.Check: + ld a, [hl] + and $0f ; only the bottom nybble is used + jr nz, .HasPokerus +; Next PartyMon + add hl, de + dec b + jr nz, .Check +.NoPokerus: + and a + ret +.HasPokerus: + scf + ret diff --git a/engine/routines/checksave.asm b/engine/routines/checksave.asm new file mode 100644 index 000000000..2280f0e53 --- /dev/null +++ b/engine/routines/checksave.asm @@ -0,0 +1,20 @@ +CheckSave:: ; 4cffe + ld a, BANK(sCheckValue1) ; BANK(sCheckValue2) + call GetSRAMBank + ld a, [sCheckValue1] + ld b, a + ld a, [sCheckValue2] + ld c, a + call CloseSRAM + ld a, b + cp SAVE_CHECK_VALUE_1 + jr nz, .ok + ld a, c + cp SAVE_CHECK_VALUE_2 + jr nz, .ok + ld c, $1 + ret + +.ok + ld c, $0 + ret diff --git a/engine/check_time.asm b/engine/routines/checktime.asm index 615b51d29..ada151dbf 100644 --- a/engine/check_time.asm +++ b/engine/routines/checktime.asm @@ -1,6 +1,6 @@ CheckTime:: ; c000 ld a, [TimeOfDay] - ld hl, TimeOfDayTable + ld hl, .TimeOfDayTable ld de, 2 call IsInArray inc hl @@ -11,7 +11,7 @@ CheckTime:: ; c000 ld c, a ret -TimeOfDayTable: ; c012 +.TimeOfDayTable: ; c012 db MORN_F, MORN db DAY_F, DAY db NITE_F, NITE diff --git a/engine/consume_held_item.asm b/engine/routines/consumehelditem.asm index a6f7766fb..a6f7766fb 100644 --- a/engine/consume_held_item.asm +++ b/engine/routines/consumehelditem.asm diff --git a/engine/unused_correct_party.asm b/engine/routines/correcterrorsinplayerparty.asm index 2fa98a545..2fa98a545 100644 --- a/engine/unused_correct_party.asm +++ b/engine/routines/correcterrorsinplayerparty.asm diff --git a/engine/pack_f.asm b/engine/routines/drawkrispackgfx.asm index f71e43db8..f71e43db8 100644 --- a/engine/pack_f.asm +++ b/engine/routines/drawkrispackgfx.asm diff --git a/engine/empty_sram.asm b/engine/routines/emptyallsrambanks.asm index aa4b28e0d..aa4b28e0d 100644 --- a/engine/empty_sram.asm +++ b/engine/routines/emptyallsrambanks.asm diff --git a/engine/flag_predef.asm b/engine/routines/flagpredef.asm index bd4f37882..bd4f37882 100644 --- a/engine/flag_predef.asm +++ b/engine/routines/flagpredef.asm diff --git a/engine/get_breedmon_growth.asm b/engine/routines/getbreedmonlevelgrowth.asm index b029043d6..b029043d6 100644 --- a/engine/get_breedmon_growth.asm +++ b/engine/routines/getbreedmonlevelgrowth.asm diff --git a/engine/pokeball_wobble.asm b/engine/routines/getpokeballwobble.asm index 7fb4d3e38..7fb4d3e38 100755 --- a/engine/pokeball_wobble.asm +++ b/engine/routines/getpokeballwobble.asm diff --git a/engine/square_root.asm b/engine/routines/getsquareroot.asm index 496f66c83..009d9f4fe 100644 --- a/engine/square_root.asm +++ b/engine/routines/getsquareroot.asm @@ -4,7 +4,7 @@ GetSquareRoot: ; 13b87 ; Rather than calculating the result, we take the index of the ; first value in a table of squares that isn't lower than de. - ld hl, Squares + ld hl, .Squares ld b, 0 .loop ; Make sure we don't go past the end of the table. @@ -22,7 +22,7 @@ GetSquareRoot: ; 13b87 jr c, .loop ret -Squares: ; 13b98 +.Squares: ; 13b98 root set 1 rept $ff dw root*root diff --git a/engine/init_list.asm b/engine/routines/initlist.asm index e2b7235ab..e2b7235ab 100644 --- a/engine/init_list.asm +++ b/engine/routines/initlist.asm diff --git a/engine/knows_move.asm b/engine/routines/knowsmove.asm index 4ec3da347..4ec3da347 100644 --- a/engine/knows_move.asm +++ b/engine/routines/knowsmove.asm diff --git a/engine/routines/kurt_selectquantity_interpretjoypad.asm b/engine/routines/kurt_selectquantity_interpretjoypad.asm new file mode 100644 index 000000000..12a43e325 --- /dev/null +++ b/engine/routines/kurt_selectquantity_interpretjoypad.asm @@ -0,0 +1,4 @@ +Kurt_SelectQuantity_InterpretJoypad: ; 27a28 + call BuySellToss_InterpretJoypad + ld b, a + ret diff --git a/engine/routines/leveluphappinessmod.asm b/engine/routines/leveluphappinessmod.asm new file mode 100644 index 000000000..c253e8872 --- /dev/null +++ b/engine/routines/leveluphappinessmod.asm @@ -0,0 +1,20 @@ +LevelUpHappinessMod: ; 2709e + ld a, [CurPartyMon] + ld hl, PartyMon1CaughtLocation + call GetPartyLocation + ld a, [hl] + and $7f + ld d, a + ld a, [MapGroup] + ld b, a + ld a, [MapNumber] + ld c, a + call GetWorldMapLocation + cp d + ld c, HAPPINESS_GAINLEVEL + jr nz, .ok + ld c, HAPPINESS_GAINLEVELATHOME + +.ok + callfar ChangeHappiness + ret diff --git a/engine/routines/loadmappart.asm b/engine/routines/loadmappart.asm new file mode 100644 index 000000000..2184ebf7e --- /dev/null +++ b/engine/routines/loadmappart.asm @@ -0,0 +1,36 @@ +_LoadMapPart:: ; 4d15b + ld hl, wMisc + ld a, [wMetatileStandingY] + and a + jr z, .top_row + ld bc, WMISC_WIDTH * 2 + add hl, bc + +.top_row + ld a, [wMetatileStandingX] + and a + jr z, .left_column + inc hl + inc hl + +.left_column + decoord 0, 0 + ld b, SCREEN_HEIGHT +.loop + ld c, SCREEN_WIDTH +.loop2 + ld a, [hli] + ld [de], a + inc de + dec c + jr nz, .loop2 + ld a, l + add 4 + ld l, a + jr nc, .carry + inc h + +.carry + dec b + jr nz, .loop + ret diff --git a/engine/routines/loadpushoam.asm b/engine/routines/loadpushoam.asm new file mode 100644 index 000000000..6fcccbcae --- /dev/null +++ b/engine/routines/loadpushoam.asm @@ -0,0 +1,21 @@ +LoadPushOAM:: ; 4031 + ld c, hPushOAM - $ff00 + ld b, .PushOAMEnd - .PushOAM + ld hl, .PushOAM +.loop + ld a, [hli] + ld [$ff00+c], a + inc c + dec b + jr nz, .loop + ret + +.PushOAM: ; 403f + ld a, Sprites / $100 + ld [rDMA], a + ld a, (SpritesEnd - Sprites) / 4 ; 40 +.pushoam_loop + dec a + jr nz, .pushoam_loop + ret +.PushOAMEnd diff --git a/engine/new_pokedex_entry.asm b/engine/routines/newpokedexentry.asm index acf9fca7b..acf9fca7b 100644 --- a/engine/new_pokedex_entry.asm +++ b/engine/routines/newpokedexentry.asm diff --git a/engine/routines/phonering_copytilemapatonce.asm b/engine/routines/phonering_copytilemapatonce.asm new file mode 100644 index 000000000..2ffa688a9 --- /dev/null +++ b/engine/routines/phonering_copytilemapatonce.asm @@ -0,0 +1,80 @@ +PhoneRing_CopyTilemapAtOnce: ; 4d188 + ld a, [hCGB] + and a + jp z, WaitBGMap + ld a, [wSpriteUpdatesEnabled] + cp $0 + jp z, WaitBGMap + +; What follows is a modified version of CopyTilemapAtOnce. + ld a, [hBGMapMode] + push af + xor a + ld [hBGMapMode], a + ld a, [hMapAnims] + push af + xor a + ld [hMapAnims], a +.wait + ld a, [rLY] + cp $8f + jr c, .wait + + di + ld a, BANK(VBGMap2) + ld [rVBK], a + hlcoord 0, 0, AttrMap + call .CopyTilemapAtOnce + ld a, BANK(VBGMap0) + ld [rVBK], a + hlcoord 0, 0 + call .CopyTilemapAtOnce +.wait2 + ld a, [rLY] + cp $8f + jr c, .wait2 + ei + + pop af + ld [hMapAnims], a + pop af + ld [hBGMapMode], a + ret + +.CopyTilemapAtOnce: ; 4d1cb + ld [hSPBuffer], sp + ld sp, hl + ld a, [hBGMapAddress + 1] + ld h, a + ld l, 0 + ld a, SCREEN_HEIGHT + ld [hTilesPerCycle], a + ld b, 1 << 1 ; not in v/hblank + ld c, rSTAT % $100 + +.loop +rept SCREEN_WIDTH / 2 + pop de +.loop\@ + ld a, [$ff00+c] + and b + jr nz, .loop\@ + ld [hl], e + inc l + ld [hl], d + inc l +endr + + ld de, BG_MAP_WIDTH - SCREEN_WIDTH + add hl, de + ld a, [hTilesPerCycle] + dec a + ld [hTilesPerCycle], a + jr nz, .loop + + ld a, [hSPBuffer] + ld l, a + ld a, [hSPBuffer + 1] + ld h, a + ld sp, hl + ret diff --git a/engine/place_graphics.asm b/engine/routines/placegraphic.asm index d72364776..d72364776 100644 --- a/engine/place_graphics.asm +++ b/engine/routines/placegraphic.asm diff --git a/engine/routines/placewaitingtext.asm b/engine/routines/placewaitingtext.asm new file mode 100644 index 000000000..37fc2a056 --- /dev/null +++ b/engine/routines/placewaitingtext.asm @@ -0,0 +1,24 @@ +PlaceWaitingText:: ; 4000 + hlcoord 3, 10 + ld b, 1 + ld c, 11 + + ld a, [wBattleMode] + and a + jr z, .notinbattle + + call TextBox + jr .proceed + +.notinbattle + predef Predef_LinkTextbox + +.proceed + hlcoord 4, 11 + ld de, .Waiting + call PlaceString + ld c, 50 + jp DelayFrames + +.Waiting: ; 4025 + db "Waiting...!@" diff --git a/engine/play_slow_cry.asm b/engine/routines/playslowcry.asm index 3cc347a55..3cc347a55 100644 --- a/engine/play_slow_cry.asm +++ b/engine/routines/playslowcry.asm diff --git a/engine/printhoursmins.asm b/engine/routines/printhoursmins.asm index 711ff89b6..50117188c 100644 --- a/engine/printhoursmins.asm +++ b/engine/routines/printhoursmins.asm @@ -14,7 +14,7 @@ Function1dd6a9: ; 1dd6a9 pop bc ret -PrintHoursMins ; 1dd6bb (77:56bb) +PrintHoursMins: ; 1dd6bb (77:56bb) ; Hours in b, minutes in c ld a, b cp 12 diff --git a/engine/routines/returntobattle_useball.asm b/engine/routines/returntobattle_useball.asm new file mode 100644 index 000000000..e6e33f900 --- /dev/null +++ b/engine/routines/returntobattle_useball.asm @@ -0,0 +1,19 @@ +_ReturnToBattle_UseBall: ; 2715c + call ClearBGPalettes + call ClearTileMap + ld a, [BattleType] + cp BATTLETYPE_TUTORIAL + jr z, .gettutorialbackpic + farcall GetBattleMonBackpic + jr .continue + +.gettutorialbackpic + farcall GetTrainerBackpic +.continue + farcall GetEnemyMonFrontpic + farcall _LoadBattleFontsHPBar + call GetMemSGBLayout + call CloseWindow + call LoadStandardMenuDataHeader + call WaitBGMap + jp SetPalettes diff --git a/engine/routines/savemenu_copytilemapatonce.asm b/engine/routines/savemenu_copytilemapatonce.asm new file mode 100644 index 000000000..de7cbaa8f --- /dev/null +++ b/engine/routines/savemenu_copytilemapatonce.asm @@ -0,0 +1,77 @@ +SaveMenu_CopyTilemapAtOnce: ; 4cf45 (13:4f45) + ld a, [hCGB] + and a + jp z, WaitBGMap + +; The following is a modified version of CopyTilemapAtOnce. + ld a, [hBGMapMode] + push af + xor a + ld [hBGMapMode], a + ld a, [hMapAnims] + push af + xor a + ld [hMapAnims], a +.WaitLY: + ld a, [rLY] + cp $60 + jr c, .WaitLY + + di + ld a, BANK(VBGMap2) + ld [rVBK], a + hlcoord 0, 0, AttrMap + call .CopyTilemapAtOnce + ld a, BANK(VBGMap0) + ld [rVBK], a + hlcoord 0, 0 + call .CopyTilemapAtOnce +.WaitLY2: + ld a, [rLY] + cp $60 + jr c, .WaitLY2 + ei + + pop af + ld [hMapAnims], a + pop af + ld [hBGMapMode], a + ret + +.CopyTilemapAtOnce: ; 4cf80 (13:4f80) + ld [hSPBuffer], sp ; $ffd9 + ld sp, hl + ld a, [hBGMapAddress + 1] + ld h, a + ld l, 0 + ld a, SCREEN_HEIGHT + ld [hTilesPerCycle], a + ld b, 1 << 1 + ld c, rSTAT % $100 + +.loop +rept SCREEN_WIDTH / 2 + pop de +.loop\@ + ld a, [$ff00+c] + and b + jr nz, .loop\@ + ld [hl], e + inc l + ld [hl], d + inc l +endr + + ld de, BG_MAP_WIDTH - SCREEN_WIDTH + add hl, de + ld a, [hTilesPerCycle] + dec a + ld [hTilesPerCycle], a + jr nz, .loop + + ld a, [hSPBuffer] + ld l, a + ld a, [hSPBuffer + 1] + ld h, a + ld sp, hl + ret diff --git a/engine/sine.asm b/engine/routines/sine.asm index 89a905d2e..89a905d2e 100755 --- a/engine/sine.asm +++ b/engine/routines/sine.asm diff --git a/engine/switch_party_mons.asm b/engine/routines/switchpartymons.asm index cde9c82b2..cde9c82b2 100644 --- a/engine/switch_party_mons.asm +++ b/engine/routines/switchpartymons.asm diff --git a/engine/pokegear_2.asm b/engine/routines/townmap_convertlinebreakcharacters.asm index a5cceecfd..f08b436c9 100644 --- a/engine/pokegear_2.asm +++ b/engine/routines/townmap_convertlinebreakcharacters.asm @@ -19,7 +19,3 @@ TownMap_ConvertLineBreakCharacters: ; 1de2c5 hlcoord 9, 0 call PlaceString ret - - -PokegearGFX: ; 1de2e4 -INCBIN "gfx/pokegear/pokegear.2bpp.lz" diff --git a/engine/trademon_frontpic.asm b/engine/routines/trademonfrontpic.asm index 3a38688d7..3a38688d7 100644 --- a/engine/trademon_frontpic.asm +++ b/engine/routines/trademonfrontpic.asm diff --git a/engine/routines/updatebattlehuds.asm b/engine/routines/updatebattlehuds.asm new file mode 100644 index 000000000..ec7f662e8 --- /dev/null +++ b/engine/routines/updatebattlehuds.asm @@ -0,0 +1,9 @@ +_UpdateBattleHUDs: + farcall DrawPlayerHUD + ld hl, PlayerHPPal + call SetHPPal + farcall DrawEnemyHUD + ld hl, EnemyHPPal + call SetHPPal + farcall FinishBattleAnim + ret diff --git a/engine/routines/updateitemdescription.asm b/engine/routines/updateitemdescription.asm new file mode 100644 index 000000000..b684dd4d8 --- /dev/null +++ b/engine/routines/updateitemdescription.asm @@ -0,0 +1,13 @@ +UpdateItemDescription: ; 0x244c3 + ld a, [MenuSelection] + ld [CurSpecies], a + hlcoord 0, 12 + ld b, 4 + ld c, SCREEN_WIDTH - 2 + call TextBox + ld a, [MenuSelection] + cp -1 + ret z + decoord 1, 14 + farcall PrintItemDescription + ret diff --git a/engine/slot_machine.asm b/engine/slot_machine.asm index 383573c03..037340413 100755 --- a/engine/slot_machine.asm +++ b/engine/slot_machine.asm @@ -471,10 +471,10 @@ Slots_LoadReelState: ; 929f6 (24:69f6) Slot_CheckCoinCaseFull: ; 92a04 (24:6a04) ld a, d - cp 9999 / $100 + cp MAX_COINS / $100 jr c, .not_full ld a, e - cp 9999 % $100 + cp MAX_COINS % $100 jr c, .not_full scf ret diff --git a/engine/spawn_points.asm b/engine/spawn_points.asm index b8637da17..daebb6159 100644 --- a/engine/spawn_points.asm +++ b/engine/spawn_points.asm @@ -1,4 +1,3 @@ - INCLUDE "data/maps/spawn_points.asm" diff --git a/engine/unown_dex.asm b/engine/unown_dex.asm index 6d14f8b3c..dc6db9dc6 100755 --- a/engine/unown_dex.asm +++ b/engine/unown_dex.asm @@ -48,4 +48,5 @@ PrintUnownWord: ; fba2e (3e:7a2e) jr .loop ; fba5a (3e:7a5a) + INCLUDE "data/unown_words.asm" |