mirror of
https://github.com/pret/pokeyellow.git
synced 2026-10-05 07:37:24 -04:00
sync engine code with pokered
This commit is contained in:
+16
-18
@@ -39,18 +39,18 @@ HallOfFamePC:
|
||||
jp Credits
|
||||
|
||||
FadeInCreditsText:
|
||||
ld a, $1
|
||||
ld a, 1
|
||||
ld [H_AUTOBGTRANSFERENABLED], a
|
||||
ld hl, HoFGBPalettes
|
||||
ld b, 4
|
||||
.asm_f0f91
|
||||
.loop
|
||||
ld a, [hli]
|
||||
ld [rBGP], a
|
||||
call UpdateGBCPal_BGP
|
||||
ld c, 5
|
||||
call DelayFrames
|
||||
dec b
|
||||
jr nz, .asm_f0f91
|
||||
jr nz, .loop
|
||||
ret
|
||||
|
||||
HoFGBPalettes:
|
||||
@@ -76,7 +76,7 @@ DisplayCreditsMon:
|
||||
call LoadScreenTilesFromBuffer2DisableBGTransfer
|
||||
ld hl, vBGMap0
|
||||
call CreditsCopyTileMapToVRAM
|
||||
ld a, %11111100
|
||||
ld a, %11111100 ; make the mon a black silhouette
|
||||
ld [rBGP], a
|
||||
call UpdateGBCPal_BGP
|
||||
ld hl, rLCDC
|
||||
@@ -100,14 +100,13 @@ DisplayCreditsMon:
|
||||
ret
|
||||
|
||||
ScrollCreditsMonLeft:
|
||||
.asm_f0fff
|
||||
ld a, b
|
||||
ld [hSCX], a
|
||||
add 8
|
||||
ld b, a
|
||||
call DelayFrame
|
||||
dec c
|
||||
jr nz, .asm_f0fff
|
||||
jr nz, ScrollCreditsMonLeft
|
||||
ret
|
||||
|
||||
GetNextCreditsMon:
|
||||
@@ -129,10 +128,10 @@ INCLUDE "data/credit_mons.asm"
|
||||
|
||||
CreditsCopyTileMapToVRAM:
|
||||
ld a, l
|
||||
ld [$ffbc], a
|
||||
ld [H_AUTOBGTRANSFERDEST], a
|
||||
ld a, h
|
||||
ld [$ffbd], a
|
||||
ld a, $1
|
||||
ld [H_AUTOBGTRANSFERDEST + 1], a
|
||||
ld a, 1
|
||||
ld [H_AUTOBGTRANSFERENABLED], a
|
||||
jp Delay3
|
||||
|
||||
@@ -154,24 +153,24 @@ CreditsLoadFont:
|
||||
ret
|
||||
|
||||
ZeroMemory:
|
||||
.asm_f1071
|
||||
; zero bc bytes at hl
|
||||
ld [hl], 0
|
||||
inc hl
|
||||
inc hl
|
||||
dec bc
|
||||
ld a, b
|
||||
or c
|
||||
jr nz, .asm_f1071
|
||||
jr nz, ZeroMemory
|
||||
ret
|
||||
|
||||
FillFourRowsWithBlack:
|
||||
ld bc, 4 * SCREEN_WIDTH
|
||||
ld bc, SCREEN_WIDTH * 4
|
||||
ld a, $7e
|
||||
jp FillMemory
|
||||
|
||||
FillMiddleOfScreenWithWhite:
|
||||
coord hl, 0, 4
|
||||
ld bc, 10 * SCREEN_WIDTH
|
||||
ld bc, SCREEN_WIDTH * 10
|
||||
ld a, " "
|
||||
jp FillMemory
|
||||
|
||||
@@ -193,19 +192,19 @@ FillHalfOfScreenWithWhite:
|
||||
ld b, 10
|
||||
ld c, 10
|
||||
ld a, " "
|
||||
.asm_f10a6
|
||||
.loop
|
||||
push bc
|
||||
push hl
|
||||
.asm_f10a8
|
||||
.innerLoop
|
||||
ld [hli], a
|
||||
dec c
|
||||
jr nz, .asm_f10a8
|
||||
jr nz, .innerLoop
|
||||
pop hl
|
||||
ld bc, SCREEN_WIDTH
|
||||
add hl, bc
|
||||
pop bc
|
||||
dec b
|
||||
jr nz, .asm_f10a6
|
||||
jr nz, .loop
|
||||
ret
|
||||
|
||||
Credits: ; Roll credits
|
||||
@@ -322,4 +321,3 @@ INCLUDE "text/credits_text.asm"
|
||||
TheEndGfx: ; 7473e (1d:473e) (7473f on blue)
|
||||
INCBIN "gfx/theend.interleave.2bpp"
|
||||
TheEndGfxEnd:
|
||||
|
||||
|
||||
@@ -1034,6 +1034,7 @@ TailWhipAnimationUnused:
|
||||
ld c, 20
|
||||
jp DelayFrames
|
||||
|
||||
; Format: Special Effect ID (1 byte), Address (2 bytes)
|
||||
SpecialEffectPointers:
|
||||
db SE_DARK_SCREEN_FLASH ; $FE
|
||||
dw AnimationFlashScreen
|
||||
@@ -2040,7 +2041,7 @@ _AnimationSlideMonOff:
|
||||
; functions below catch it by checking if the tile number is within the valid
|
||||
; range and if not, replacing it with a blank tile.
|
||||
|
||||
.PlayerNextTile ; 79702 (1e:5702)
|
||||
.PlayerNextTile
|
||||
ld a, [hl]
|
||||
add 7
|
||||
; bugfix: compares against the max tile + 1 as opposed to the max tile
|
||||
@@ -2049,7 +2050,7 @@ _AnimationSlideMonOff:
|
||||
ld a, " "
|
||||
ret
|
||||
|
||||
.EnemyNextTile ; 7970b (1e:570b)
|
||||
.EnemyNextTile
|
||||
ld a, [hl]
|
||||
sub 7
|
||||
; This has the same problem as above, but it has no visible effect because
|
||||
@@ -3202,7 +3203,7 @@ TossBallAnimation:
|
||||
; sequence of animations that make up the Poké Ball toss
|
||||
db POOF_ANIM, HIDEPIC_ANIM, SHAKE_ANIM, POOF_ANIM, SHOWPIC_ANIM
|
||||
|
||||
.BlockBall ; 79ff6 (1e:5ff6)
|
||||
.BlockBall
|
||||
ld a, TOSS_ANIM
|
||||
ld [wAnimationID], a
|
||||
call PlayAnimation
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
BattleTransition:
|
||||
ld a, $1
|
||||
ld a, 1
|
||||
ld [H_AUTOBGTRANSFERENABLED], a
|
||||
call Delay3
|
||||
xor a
|
||||
@@ -363,7 +363,7 @@ BattleTransition_FlashScreen_:
|
||||
jr z, .done
|
||||
ld [rBGP], a
|
||||
call UpdateGBCPal_BGP
|
||||
ld c, $2
|
||||
ld c, 2
|
||||
call DelayFrames
|
||||
jr .loop
|
||||
.done
|
||||
@@ -377,7 +377,7 @@ BattleTransition_FlashScreenPalettes:
|
||||
|
||||
; used for low level trainer dungeon battles
|
||||
BattleTransition_Shrink:
|
||||
ld c,9
|
||||
ld c, 9
|
||||
.loop
|
||||
push bc
|
||||
xor a
|
||||
@@ -411,7 +411,7 @@ BattleTransition_Shrink:
|
||||
|
||||
; used for high level trainer dungeon battles
|
||||
BattleTransition_Split:
|
||||
ld c,$9
|
||||
ld c, 9
|
||||
xor a
|
||||
ld [H_AUTOBGTRANSFERENABLED], a
|
||||
.loop
|
||||
@@ -632,7 +632,7 @@ BattleTransition_Circle_Sub1:
|
||||
ret
|
||||
|
||||
BattleTransition_TransferDelay3:
|
||||
ld a, $1
|
||||
ld a, 1
|
||||
ld [H_AUTOBGTRANSFERENABLED], a
|
||||
call Delay3
|
||||
xor a
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
PrintBeginningBattleText:
|
||||
ld a, [wIsInBattle] ; W_ISINBATTLE
|
||||
ld a, [wIsInBattle]
|
||||
dec a
|
||||
jr nz, .trainerBattle
|
||||
ld a, [wCurMap]
|
||||
@@ -80,7 +80,7 @@ PrintBeginningBattleText:
|
||||
ld [wFrequencyModifier], a
|
||||
ld a, $80
|
||||
ld [wTempoModifier], a
|
||||
ld a, $e9 ; (SFX_08_77 - SFX_Headers_08) / 3
|
||||
ld a, SFX_SILPH_SCOPE
|
||||
call PlaySound
|
||||
jp WaitForSoundToFinish
|
||||
.done
|
||||
|
||||
@@ -1227,7 +1227,7 @@ ChooseNextMon:
|
||||
ld a, [wLinkState]
|
||||
cp LINK_STATE_BATTLING
|
||||
jr nz, .notLinkBattle
|
||||
ld a, $1
|
||||
ld a, 1
|
||||
ld [wActionResultOrTookBattleTurn], a
|
||||
call LinkBattleExchangeData
|
||||
.notLinkBattle
|
||||
@@ -1956,7 +1956,7 @@ AnimateRetreatingPlayerMon:
|
||||
.clearScreenArea
|
||||
coord hl, 1, 5
|
||||
lb bc, 7, 7
|
||||
call ClearScreenArea ; jp
|
||||
call ClearScreenArea
|
||||
ret
|
||||
|
||||
; reads player's current mon's HP into wBattleMonHP
|
||||
@@ -2347,7 +2347,7 @@ DisplayBattleMenu:
|
||||
call PrintText
|
||||
jp DisplayBattleMenu
|
||||
|
||||
.RunAwayText ; 3d0df (f:50df)
|
||||
.RunAwayText
|
||||
TX_FAR _RunAwayText
|
||||
db "@"
|
||||
|
||||
@@ -2561,7 +2561,7 @@ PartyMenuOrRockOrRun:
|
||||
predef StatusScreen
|
||||
predef StatusScreen2
|
||||
; now we need to reload the enemy mon pic
|
||||
ld a, $1
|
||||
ld a, 1
|
||||
ld [H_WHOSETURN], a
|
||||
ld a, [wEnemyBattleStatus2]
|
||||
bit HasSubstituteUp, a ; does the enemy mon have a substitute?
|
||||
@@ -2961,7 +2961,7 @@ AnyMoveToSelect:
|
||||
jr .noMovesLeft
|
||||
.handleDisabledMove
|
||||
swap a
|
||||
and $f ; get move disabled
|
||||
and $f ; get disabled move
|
||||
ld b, a
|
||||
ld d, NUM_MOVES + 1
|
||||
xor a
|
||||
@@ -3379,7 +3379,7 @@ getPlayerAnimationType:
|
||||
ld a,4 ; move has no effect other than dealing damage
|
||||
jr z,playPlayerMoveAnimation
|
||||
ld a,5 ; move has effect
|
||||
playPlayerMoveAnimation ; 3d890 (f:5890)
|
||||
playPlayerMoveAnimation:
|
||||
push af
|
||||
ld a,[wPlayerBattleStatus2]
|
||||
bit HasSubstituteUp,a
|
||||
@@ -3398,7 +3398,7 @@ playPlayerMoveAnimation ; 3d890 (f:5890)
|
||||
ld b,BANK(ReshowSubstituteAnim)
|
||||
call nz,Bankswitch
|
||||
jr MirrorMoveCheck
|
||||
playerCheckIfFlyOrChargeEffect ; 3d8bd (f:58bd)
|
||||
playerCheckIfFlyOrChargeEffect:
|
||||
ld c,30
|
||||
call DelayFrames
|
||||
ld a,[wPlayerMoveEffect]
|
||||
@@ -4105,7 +4105,7 @@ PrintMoveFailureText:
|
||||
ret nz
|
||||
|
||||
; if you get here, the mon used jump kick or hi jump kick and missed
|
||||
ld hl, wDamage ; since the move missed, W_DAMAGE will always contain 0 at this point.
|
||||
ld hl, wDamage ; since the move missed, wDamage will always contain 0 at this point.
|
||||
; Thus, recoil damage will always be equal to 1
|
||||
; even if it was intended to be potential damage/8.
|
||||
ld a, [hli]
|
||||
@@ -7173,7 +7173,7 @@ FellAsleepText:
|
||||
TX_FAR _FellAsleepText
|
||||
db "@"
|
||||
|
||||
AlreadyAsleepText: ; 3f1cd (f:71cds)
|
||||
AlreadyAsleepText:
|
||||
TX_FAR _AlreadyAsleepText
|
||||
db "@"
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ DecrementPP:
|
||||
ld a, [wPlayerMonNumber] ; which mon in party is active
|
||||
ld bc, wPartyMon2 - wPartyMon1
|
||||
call AddNTimes ; calculate address of the mon to modify
|
||||
.DecrementPP ; f4301 (3d:4301)
|
||||
.DecrementPP:
|
||||
ld a, [wPlayerMoveListIndex] ; which move (0, 1, 2, 3) did we use?
|
||||
ld c, a
|
||||
ld b, 0
|
||||
|
||||
@@ -19,7 +19,6 @@ GetTrainerName_:
|
||||
call GetName
|
||||
ld hl, wcd6d
|
||||
.foundName
|
||||
.rival
|
||||
ld de, wTrainerName
|
||||
ld bc, $d
|
||||
jp CopyData
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
DisplayLinkBattleVersusTextBox:
|
||||
call LoadTextBoxTilePatterns
|
||||
coord hl, 3, 4
|
||||
ld bc, $70c
|
||||
lb bc, 7, 12
|
||||
call TextBoxBorder
|
||||
coord hl, 4, 5
|
||||
ld de, wPlayerName
|
||||
|
||||
@@ -740,8 +740,7 @@ AICureStatus:
|
||||
res 0,[hl]
|
||||
ret
|
||||
|
||||
AIUseXAccuracy:
|
||||
; unused
|
||||
AIUseXAccuracy: ; unused
|
||||
call AIPlayRestoringSFX
|
||||
ld hl,wEnemyBattleStatus2
|
||||
set 0,[hl]
|
||||
@@ -755,8 +754,7 @@ AIUseGuardSpec:
|
||||
ld a,GUARD_SPEC
|
||||
jp AIPrintItemUse
|
||||
|
||||
AIUseDireHit:
|
||||
; unused
|
||||
AIUseDireHit: ; unused
|
||||
call AIPlayRestoringSFX
|
||||
ld hl,wEnemyBattleStatus2
|
||||
set 2,[hl]
|
||||
|
||||
@@ -253,7 +253,7 @@ CableClub_DoBattleOrTradeAgain:
|
||||
ld hl, wEnemyMons + (SERIAL_PREAMBLE_BYTE - 1)
|
||||
dec c
|
||||
jr nz, .unpatchEnemyMonsLoop
|
||||
ld a, wEnemyMonOT & $ff
|
||||
ld a, wEnemyMonOT % $100
|
||||
ld [wUnusedCF8D], a
|
||||
ld a, wEnemyMonOT / $100
|
||||
ld [wUnusedCF8D + 1], a
|
||||
@@ -268,7 +268,7 @@ CableClub_DoBattleOrTradeAgain:
|
||||
cp LINK_STATE_START_BATTLE
|
||||
ld a, LINK_STATE_TRADING
|
||||
ld [wLinkState], a
|
||||
jr nz, .asm_55a0
|
||||
jr nz, .trading
|
||||
ld a, LINK_STATE_BATTLING
|
||||
ld [wLinkState], a
|
||||
ld a, OPP_SONY1
|
||||
@@ -288,7 +288,7 @@ CableClub_DoBattleOrTradeAgain:
|
||||
ld [wLetterPrintingDelayFlags], a
|
||||
predef HealParty
|
||||
jp ReturnToCableClubRoom
|
||||
.asm_55a0
|
||||
.trading
|
||||
ld c, BANK(Music_GameCorner)
|
||||
ld a, MUSIC_GAME_CORNER
|
||||
call PlayMusic
|
||||
@@ -446,7 +446,6 @@ TradeCenter_SelectMon:
|
||||
ld a, [wEnemyPartyCount]
|
||||
dec a
|
||||
cp b
|
||||
; continue
|
||||
jr nc, .notPastLastEnemyMon
|
||||
; when switching to the enemy mon menu, if the menu selection would be past the last enemy mon, select the last enemy mon
|
||||
ld [wCurrentMenuItem], a
|
||||
@@ -851,7 +850,6 @@ TradeCenter_Trade:
|
||||
.usingExternalClock
|
||||
predef ExternalClockTradeAnim
|
||||
.tradeCompleted
|
||||
; continue
|
||||
callab TryEvolvingMon
|
||||
call ClearScreen
|
||||
call LoadTrainerInfoTextBoxTiles
|
||||
@@ -973,10 +971,10 @@ CableClub_TextBoxBorder:
|
||||
; c = width
|
||||
CableClub_DrawHorizontalLine:
|
||||
ld d, c
|
||||
.drawHorizontalLineLoop
|
||||
.loop
|
||||
ld [hli], a
|
||||
dec d
|
||||
jr nz, .drawHorizontalLineLoop
|
||||
jr nz, .loop
|
||||
ret
|
||||
|
||||
LoadTrainerInfoTextBoxTiles:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
DoClearSaveDialogue: ; DoClearSaveDialogue:
|
||||
DoClearSaveDialogue:
|
||||
call ClearScreen
|
||||
call RunDefaultPaletteCommand
|
||||
call LoadFontTilePatterns
|
||||
|
||||
@@ -24,8 +24,7 @@ EvolutionAfterBattle:
|
||||
ld hl, wPartyCount
|
||||
push hl
|
||||
|
||||
Evolution_PartyMonLoop:
|
||||
; loop over party mons
|
||||
Evolution_PartyMonLoop: ; loop over party mons
|
||||
ld hl, wWhichPokemon
|
||||
inc [hl]
|
||||
pop hl
|
||||
@@ -313,7 +312,7 @@ StoppedEvolvingText:
|
||||
TX_FAR _StoppedEvolvingText
|
||||
db "@"
|
||||
|
||||
IsEvolvingText: ; 3affe (e:6ffes)
|
||||
IsEvolvingText:
|
||||
TX_FAR _IsEvolvingText
|
||||
db "@"
|
||||
|
||||
|
||||
+14
-13
@@ -2,14 +2,14 @@ LoadShootingStarGraphics:
|
||||
ld a, $f9
|
||||
ld [rOBP0], a
|
||||
ld a, $a4
|
||||
ld [rOBP1], a ; $ff49
|
||||
ld [rOBP1], a
|
||||
call UpdateGBCPal_OBP0
|
||||
call UpdateGBCPal_OBP1
|
||||
ld de, AnimationTileset2 + $30 ; $4757 ; star tile (top left quadrant)
|
||||
ld de, AnimationTileset2 + $30 ; star tile (top left quadrant)
|
||||
ld hl, vChars1 + $200
|
||||
lb bc, BANK(AnimationTileset2), $01
|
||||
call CopyVideoData
|
||||
ld de, AnimationTileset2 + $130 ; $481e ; star tile (bottom left quadrant)
|
||||
ld de, AnimationTileset2 + $130 ; star tile (bottom left quadrant)
|
||||
ld hl, vChars1 + $210
|
||||
lb bc, BANK(AnimationTileset2), $01
|
||||
call CopyVideoData
|
||||
@@ -39,7 +39,7 @@ AnimateShootingStar:
|
||||
push bc
|
||||
.bigStarInnerLoop
|
||||
ld a, [hl] ; Y
|
||||
add 4 ; y
|
||||
add 4
|
||||
ld [hli], a
|
||||
ld a, [hl] ; X
|
||||
add -4
|
||||
@@ -60,11 +60,11 @@ AnimateShootingStar:
|
||||
.next
|
||||
cp b
|
||||
jr nz, .bigStarLoop
|
||||
|
||||
; Clear big star OAM.
|
||||
ld hl, wOAMBuffer
|
||||
ld c, 4
|
||||
ld de, 4
|
||||
|
||||
; Clear big star OAM.
|
||||
.clearOAMLoop
|
||||
ld [hl], 160
|
||||
add hl, de
|
||||
@@ -74,7 +74,7 @@ AnimateShootingStar:
|
||||
; Make Gamefreak logo flash.
|
||||
ld b, 3
|
||||
.flashLogoLoop
|
||||
ld hl, rOBP0 ; $ff48
|
||||
ld hl, rOBP0
|
||||
rrc [hl]
|
||||
rrc [hl]
|
||||
call UpdateGBCPal_OBP0
|
||||
@@ -83,13 +83,14 @@ AnimateShootingStar:
|
||||
ret c
|
||||
dec b
|
||||
jr nz, .flashLogoLoop
|
||||
|
||||
; Copy 24 instances of the small stars OAM data.
|
||||
; Note that their coordinates put them off-screen.
|
||||
ld de, wOAMBuffer
|
||||
ld a, 24
|
||||
.initSmallStarsOAMLoop
|
||||
push af
|
||||
ld hl, SmallStarsOAM ; $40ee
|
||||
ld hl, SmallStarsOAM
|
||||
ld bc, SmallStarsOAMEnd - SmallStarsOAM
|
||||
call CopyData
|
||||
pop af
|
||||
@@ -98,8 +99,8 @@ AnimateShootingStar:
|
||||
|
||||
; Animate the small stars falling from the Gamefreak logo.
|
||||
xor a
|
||||
ld [wMoveDownSmallStarsOAMCount], a ; wWhichTrade
|
||||
ld hl, SmallStarsWaveCoordsPointerTable ; 1c:4105
|
||||
ld [wMoveDownSmallStarsOAMCount], a
|
||||
ld hl, SmallStarsWaveCoordsPointerTable
|
||||
ld c, 6
|
||||
.smallStarsLoop
|
||||
ld a, [hli]
|
||||
@@ -214,15 +215,15 @@ MoveDownSmallStars:
|
||||
ld de, -4
|
||||
ld c, a
|
||||
.innerLoop
|
||||
inc [hl]
|
||||
inc [hl] ; Y
|
||||
add hl, de
|
||||
dec c
|
||||
jr nz, .innerLoop
|
||||
; Toggle the palette so that the lower star in the small stars tile blinks in
|
||||
; and out.
|
||||
ld a, [rOBP1] ; $ff49
|
||||
ld a, [rOBP1]
|
||||
xor %10100000
|
||||
ld [rOBP1], a ; $ff49
|
||||
ld [rOBP1], a
|
||||
call UpdateGBCPal_OBP1
|
||||
ld c, 3
|
||||
call CheckForUserInterruption
|
||||
|
||||
@@ -33,8 +33,8 @@ AnimateHallOfFame:
|
||||
.skipInc
|
||||
ld a, $90
|
||||
ld [hWY], a
|
||||
ld c, $1f ; BANK(Music_HallOfFame)
|
||||
ld a, $ca ; MUSIC_HALL_OF_FAME
|
||||
ld c, BANK(Music_HallOfFame)
|
||||
ld a, MUSIC_HALL_OF_FAME
|
||||
call PlayMusic
|
||||
ld hl, wPartySpecies
|
||||
ld c, $ff
|
||||
@@ -151,7 +151,7 @@ HoFShowMonOrPlayer:
|
||||
|
||||
HoFDisplayAndRecordMonInfo:
|
||||
ld a, [wHoFPartyMonIndex]
|
||||
ld hl, wPartyMonNicks ; wPartyMonNicks
|
||||
ld hl, wPartyMonNicks
|
||||
call GetPartyMonName
|
||||
call HoFDisplayMonInfo
|
||||
ld a, [wHoFPartyMonIndex]
|
||||
@@ -197,7 +197,7 @@ HoFMonInfoText:
|
||||
next "TYPE2/@"
|
||||
|
||||
HoFLoadPlayerPics:
|
||||
ld de, RedPicFront ; $6ede
|
||||
ld de, RedPicFront
|
||||
ld a, BANK(RedPicFront)
|
||||
call UncompressSpriteFromDE
|
||||
ld a,$0
|
||||
@@ -218,7 +218,8 @@ HoFLoadPlayerPics:
|
||||
ld c, $1
|
||||
|
||||
HoFLoadMonPlayerPicTileIDs:
|
||||
ld b, $0
|
||||
; c = base tile ID
|
||||
ld b, 0
|
||||
coord hl, 12, 5
|
||||
predef_jump CopyTileIDsFromList
|
||||
|
||||
|
||||
@@ -122,22 +122,22 @@ LinkCableHelp:
|
||||
ld hl, LinkCableHelpText1
|
||||
call PrintText
|
||||
xor a
|
||||
ld [wMenuItemOffset], a
|
||||
ld [wMenuItemOffset], a ; not used
|
||||
ld [wCurrentMenuItem], a
|
||||
ld [wLastMenuItem], a
|
||||
ld a, A_BUTTON | B_BUTTON
|
||||
ld [wMenuWatchedKeys], a
|
||||
ld a, $3
|
||||
ld a, 3
|
||||
ld [wMaxMenuItem], a
|
||||
ld a, $2
|
||||
ld a, 2
|
||||
ld [wTopMenuItemY], a
|
||||
ld a, $1
|
||||
ld a, 1
|
||||
ld [wTopMenuItemX], a
|
||||
.linkHelpLoop
|
||||
ld hl, wd730
|
||||
set 6, [hl]
|
||||
coord hl, 0, 0
|
||||
lb bc, $8, $d
|
||||
lb bc, 8, 13
|
||||
call TextBoxBorder
|
||||
coord hl, 2, 2
|
||||
ld de, HowToLinkText
|
||||
@@ -148,13 +148,13 @@ LinkCableHelp:
|
||||
bit 1, a ; pressed b
|
||||
jr nz, .exit
|
||||
ld a, [wCurrentMenuItem]
|
||||
cp $3 ; pressed a on "STOP READING"
|
||||
cp 3 ; pressed a on "STOP READING"
|
||||
jr z, .exit
|
||||
ld hl, wd730
|
||||
res 6, [hl]
|
||||
ld hl, LinkCableInfoTexts
|
||||
add a
|
||||
ld d, $0
|
||||
ld d, 0
|
||||
ld e, a
|
||||
add hl, de
|
||||
ld a, [hli]
|
||||
@@ -210,11 +210,11 @@ ViridianSchoolBlackboard:
|
||||
ld [wLastMenuItem], a
|
||||
ld a, D_LEFT | D_RIGHT | A_BUTTON | B_BUTTON
|
||||
ld [wMenuWatchedKeys], a
|
||||
ld a, $2
|
||||
ld a, 2
|
||||
ld [wMaxMenuItem], a
|
||||
ld a, $2
|
||||
ld a, 2
|
||||
ld [wTopMenuItemY], a
|
||||
ld a, $1
|
||||
ld a, 1
|
||||
ld [wTopMenuItemX], a
|
||||
.blackboardLoop
|
||||
ld hl, wd730
|
||||
@@ -236,24 +236,24 @@ ViridianSchoolBlackboard:
|
||||
bit 4, a ; pressed right
|
||||
jr z, .didNotPressRight
|
||||
; move cursor to right column
|
||||
ld a, $2
|
||||
ld a, 2
|
||||
ld [wMaxMenuItem], a
|
||||
ld a, $2
|
||||
ld a, 2
|
||||
ld [wTopMenuItemY], a
|
||||
ld a, $6
|
||||
ld a, 6
|
||||
ld [wTopMenuItemX], a
|
||||
ld a, $3 ; in the the right column, use an offset to prevent overlap
|
||||
ld a, 3 ; in the the right column, use an offset to prevent overlap
|
||||
ld [wMenuItemOffset], a
|
||||
jr .blackboardLoop
|
||||
.didNotPressRight
|
||||
bit 5, a ; pressed left
|
||||
jr z, .didNotPressLeftOrRight
|
||||
; move cursor to left column
|
||||
ld a, $2
|
||||
ld a, 2
|
||||
ld [wMaxMenuItem], a
|
||||
ld a, $2
|
||||
ld a, 2
|
||||
ld [wTopMenuItemY], a
|
||||
ld a, $1
|
||||
ld a, 1
|
||||
ld [wTopMenuItemX], a
|
||||
xor a
|
||||
ld [wMenuItemOffset], a
|
||||
@@ -261,9 +261,9 @@ ViridianSchoolBlackboard:
|
||||
.didNotPressLeftOrRight
|
||||
ld a, [wCurrentMenuItem]
|
||||
ld b, a
|
||||
ld a, [wAnimationID]
|
||||
ld a, [wMenuItemOffset]
|
||||
add b
|
||||
cp $5 ; cursor is pointing to "QUIT"
|
||||
cp 5 ; cursor is pointing to "QUIT"
|
||||
jr z, .exitBlackboard
|
||||
; we must have pressed a on a status condition
|
||||
; so print the text
|
||||
@@ -271,7 +271,7 @@ ViridianSchoolBlackboard:
|
||||
res 6, [hl]
|
||||
ld hl, ViridianBlackboardStatusPointers
|
||||
add a
|
||||
ld d, $0
|
||||
ld d, 0
|
||||
ld e, a
|
||||
add hl, de
|
||||
ld a, [hli]
|
||||
|
||||
@@ -81,9 +81,9 @@ IndigoPlateauStatues:
|
||||
ld a, [wXCoord]
|
||||
bit 0, a
|
||||
ld hl, IndigoPlateauStatuesText2
|
||||
jr nz, .asm_fa61
|
||||
jr nz, .ok
|
||||
ld hl, IndigoPlateauStatuesText3
|
||||
.asm_fa61
|
||||
.ok
|
||||
call PrintText
|
||||
jp TextScriptEnd
|
||||
|
||||
@@ -104,12 +104,12 @@ BookOrSculptureText:
|
||||
ld hl, PokemonBooksText
|
||||
ld a, [wCurMapTileset]
|
||||
cp MANSION ; Celadon Mansion tileset
|
||||
jr nz, .asm_fa8b
|
||||
jr nz, .ok
|
||||
aCoord 8, 6
|
||||
cp $38
|
||||
jr nz, .asm_fa8b
|
||||
jr nz, .ok
|
||||
ld hl, DiglettSculptureText
|
||||
.asm_fa8b
|
||||
.ok
|
||||
call PrintText
|
||||
jp TextScriptEnd
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ SafariZoneGameOver:
|
||||
ld a, $5
|
||||
ld [wSafariZoneEntranceCurScript], a
|
||||
SetEvent EVENT_SAFARI_GAME_OVER
|
||||
ld a, $1
|
||||
ld a, 1
|
||||
ld [wSafariZoneGameOver], a
|
||||
ret
|
||||
|
||||
@@ -138,7 +138,7 @@ CinnabarGymQuiz:
|
||||
ld [$ffdc], a
|
||||
ld a, [hGymGateIndex]
|
||||
ld hl, CinnabarGymQuizIntroText
|
||||
cp $1
|
||||
cp 1
|
||||
jr z, .onFirstQuestion
|
||||
ld hl, CinnabarGymQuizShortIntroText
|
||||
.onFirstQuestion
|
||||
@@ -154,7 +154,7 @@ CinnabarGymQuiz:
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
call PrintText
|
||||
ld a, $1
|
||||
ld a, 1
|
||||
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
||||
call CinnabarGymQuiz_1ea92
|
||||
jp TextScriptEnd
|
||||
@@ -435,16 +435,16 @@ BillsHousePokemonList:
|
||||
ld hl, BillsHousePokemonListText1
|
||||
call PrintText
|
||||
xor a
|
||||
ld [wMenuItemOffset], a
|
||||
ld [wMenuItemOffset], a ; not used
|
||||
ld [wCurrentMenuItem], a
|
||||
ld [wLastMenuItem], a
|
||||
ld a, A_BUTTON | B_BUTTON
|
||||
ld [wMenuWatchedKeys], a
|
||||
ld a, $4
|
||||
ld a, 4
|
||||
ld [wMaxMenuItem], a
|
||||
ld a, $2
|
||||
ld a, 2
|
||||
ld [wTopMenuItemY], a
|
||||
ld a, $1
|
||||
ld a, 1
|
||||
ld [wTopMenuItemX], a
|
||||
.billsPokemonLoop
|
||||
ld hl, wd730
|
||||
|
||||
+3
-2
@@ -87,6 +87,7 @@ UpdateHPBar2:
|
||||
call UpdateHPBar_CompareNewHPToOldHP
|
||||
jr z, .animateHPBarDone
|
||||
jr nc, .HPIncrease
|
||||
; HP decrease
|
||||
dec bc ; subtract 1 HP
|
||||
ld a, c
|
||||
ld [wHPBarNewHP], a
|
||||
@@ -95,7 +96,7 @@ UpdateHPBar2:
|
||||
call UpdateHPBar_CalcOldNewHPBarPixels
|
||||
ld a, e
|
||||
sub d ; calc pixel difference
|
||||
jr .asm_f90e
|
||||
jr .ok
|
||||
.HPIncrease
|
||||
inc bc ; add 1 HP
|
||||
ld a, c
|
||||
@@ -105,7 +106,7 @@ UpdateHPBar2:
|
||||
call UpdateHPBar_CalcOldNewHPBarPixels
|
||||
ld a, d
|
||||
sub e ; calc pixel difference
|
||||
.asm_f90e
|
||||
.ok
|
||||
call UpdateHPBar_PrintHPNumber
|
||||
and a
|
||||
jr z, .noPixelDifference
|
||||
|
||||
@@ -133,7 +133,7 @@ InGameTrade_DoTrade:
|
||||
and a
|
||||
ld a,$3
|
||||
jr .tradeSucceeded
|
||||
.tradeFailed ; never jumped to
|
||||
.tradeFailed
|
||||
scf
|
||||
.tradeSucceeded
|
||||
ld [wInGameTradeTextPointerTableIndex],a
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ PlayIntro:
|
||||
inc a
|
||||
ld [H_AUTOBGTRANSFERENABLED], a
|
||||
call PlayShootingStar
|
||||
callab PlayIntroScene ; 3e:582d
|
||||
callab PlayIntroScene
|
||||
xor a
|
||||
ld [hSCX], a
|
||||
ld [H_AUTOBGTRANSFERENABLED], a
|
||||
|
||||
@@ -3211,7 +3211,6 @@ FindWildLocationsOfMon:
|
||||
inc hl
|
||||
inc c
|
||||
jr .loop
|
||||
|
||||
.done
|
||||
ld a, $ff ; list terminator
|
||||
ld [de], a
|
||||
|
||||
@@ -254,7 +254,7 @@ BillsPCDeposit:
|
||||
call WaitForSoundToFinish
|
||||
ld hl, wBoxNumString
|
||||
ld a, [wCurrentBoxNum]
|
||||
and " "
|
||||
and $7f
|
||||
cp 9
|
||||
jr c, .singleDigitBoxNum
|
||||
sub 9
|
||||
@@ -423,7 +423,7 @@ HMMoveArray:
|
||||
db SURF
|
||||
db STRENGTH
|
||||
db FLASH
|
||||
db $ff
|
||||
db -1
|
||||
|
||||
DisplayDepositWithdrawMenu:
|
||||
coord hl, 9, 10
|
||||
@@ -595,3 +595,4 @@ JustAMomentText::
|
||||
|
||||
OpenBillsPCText::
|
||||
db $FD ; FuncTX_BillsPC
|
||||
|
||||
|
||||
+3
-3
@@ -123,10 +123,10 @@ RemoveItemByID:
|
||||
ld [hItemToRemoveIndex], a
|
||||
.loop
|
||||
ld a, [hli]
|
||||
cp $ff ; have we reached the cancel button (terminator)
|
||||
cp -1 ; reached terminator?
|
||||
ret z
|
||||
cp b ; is the current item the item we want?
|
||||
jr z, .foundItem ; if so, remove it from the inventory
|
||||
cp b
|
||||
jr z, .foundItem
|
||||
inc hl
|
||||
ld a, [hItemToRemoveIndex]
|
||||
inc a
|
||||
|
||||
@@ -393,7 +393,6 @@ Pokedex_PlacePokemonList:
|
||||
jr nz, .getPokemonName ; if the player has seen the pokemon
|
||||
ld de, .dashedLine ; print a dashed line in place of the name if the player hasn't seen the pokemon
|
||||
jr .skipGettingName
|
||||
|
||||
.dashedLine ; for unseen pokemon in the list
|
||||
db "----------@"
|
||||
.getPokemonName
|
||||
@@ -519,10 +518,9 @@ DrawDexEntryOnScreen:
|
||||
ld a, $6c ; lower left corner tile
|
||||
Coorda 0, 17
|
||||
ld a, $6e ; lower right corner tile
|
||||
|
||||
Coorda 19, 17
|
||||
coord hl, 0, 9
|
||||
|
||||
coord hl, 0, 9
|
||||
ld de, PokedexDataDividerLine
|
||||
call PlaceString ; draw horizontal divider line
|
||||
|
||||
|
||||
+12
-12
@@ -33,7 +33,7 @@ CeladonPrizeMenu:
|
||||
bit 1,a ; keypress = B (Cancel)
|
||||
jr nz, .noChoice
|
||||
ld a,[wCurrentMenuItem]
|
||||
cp $03 ; "NO,THANKS" choice
|
||||
cp 3 ; "NO,THANKS" choice
|
||||
jr z, .noChoice
|
||||
call HandlePrizeChoice
|
||||
.noChoice
|
||||
@@ -68,7 +68,7 @@ GetPrizeMenuId:
|
||||
ld [wWhichPrizeWindow], a ; prize-texts' id (relative, i.e. 0, 1 or 2)
|
||||
add a
|
||||
add a
|
||||
ld d, $0
|
||||
ld d, 0
|
||||
ld e, a
|
||||
ld hl, PrizeDifferentMenuPtrs
|
||||
add hl, de
|
||||
@@ -84,10 +84,10 @@ GetPrizeMenuId:
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
ld de, wPrize1Price
|
||||
ld bc, $6
|
||||
ld bc, 6
|
||||
call CopyData
|
||||
ld a, [wWhichPrizeWindow]
|
||||
cp $02 ;is TM_menu?
|
||||
cp 2 ;is TM_menu?
|
||||
jr nz, .putMonName
|
||||
ld a, [wPrize1]
|
||||
ld [wd11e], a
|
||||
@@ -155,10 +155,10 @@ PrintPrizePrice:
|
||||
call TextBoxBorder
|
||||
call UpdateSprites
|
||||
coord hl, 12, 0
|
||||
ld de, CoinString
|
||||
ld de, .CoinString
|
||||
call PlaceString
|
||||
coord hl, 13, 1
|
||||
ld de, SixSpacesString
|
||||
ld de, .SixSpacesString
|
||||
call PlaceString
|
||||
coord hl, 13, 1
|
||||
ld de,wPlayerCoins
|
||||
@@ -166,16 +166,16 @@ PrintPrizePrice:
|
||||
call PrintBCDNumber
|
||||
ret
|
||||
|
||||
CoinString:
|
||||
.CoinString:
|
||||
db "COIN@"
|
||||
|
||||
SixSpacesString:
|
||||
.SixSpacesString:
|
||||
db " @"
|
||||
|
||||
LoadCoinsToSubtract:
|
||||
ld a,[wWhichPrize]
|
||||
add a
|
||||
ld d, $0
|
||||
ld d, 0
|
||||
ld e, a
|
||||
ld hl, wPrize1Price
|
||||
add hl, de ; get selected prize's price
|
||||
@@ -190,14 +190,14 @@ LoadCoinsToSubtract:
|
||||
HandlePrizeChoice:
|
||||
ld a, [wCurrentMenuItem]
|
||||
ld [wWhichPrize], a
|
||||
ld d, $0
|
||||
ld d, 0
|
||||
ld e, a
|
||||
ld hl, wPrize1
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
ld [wd11e], a
|
||||
ld a, [wWhichPrizeWindow]
|
||||
cp $02 ; is prize a TM?
|
||||
cp 2 ; is prize a TM?
|
||||
jr nz, .getMonName
|
||||
call GetItemName
|
||||
jr .givePrize
|
||||
@@ -261,7 +261,7 @@ HandlePrizeChoice:
|
||||
ld hl,OhFineThenTextPtr
|
||||
jp PrintText
|
||||
|
||||
UnknownData528b1:
|
||||
UnknownPrizeData:
|
||||
; XXX what's this?
|
||||
db $00,$01,$00,$01,$00,$01,$00,$00,$01
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ DisplayStartMenu::
|
||||
switchbank StartMenu_Pokedex ; also bank for other functions
|
||||
ld a, [wWalkBikeSurfState] ; walking/biking/surfing
|
||||
ld [wWalkBikeSurfStateCopy], a
|
||||
ld a, $8f ; (SFX_02_3f - SFX_Headers_02) / 3 ; Start menu sound
|
||||
ld a, SFX_START_MENU
|
||||
call PlaySound
|
||||
|
||||
RedisplayStartMenu::
|
||||
@@ -23,7 +23,7 @@ RedisplayStartMenu_DoNotDrawStartMenu:
|
||||
and a
|
||||
jr nz, .loop
|
||||
; if the player pressed tried to go past the top item, wrap around to the bottom
|
||||
CheckEvent EVENT_GOT_POKEDEX ; does the player have the pokedex?
|
||||
CheckEvent EVENT_GOT_POKEDEX
|
||||
ld a, 6 ; there are 7 menu items with the pokedex, so the max index is 6
|
||||
jr nz, .wrapMenuItemId
|
||||
dec a ; there are only 6 menu items without the pokedex
|
||||
@@ -35,7 +35,7 @@ RedisplayStartMenu_DoNotDrawStartMenu:
|
||||
bit 7, a
|
||||
jr z, .buttonPressed
|
||||
; if the player pressed tried to go past the bottom item, wrap around to the top
|
||||
CheckEvent EVENT_GOT_POKEDEX ; does the player have the pokedex?
|
||||
CheckEvent EVENT_GOT_POKEDEX
|
||||
ld a, [wCurrentMenuItem]
|
||||
ld c, 7 ; there are 7 menu items with the pokedex
|
||||
jr nz, .checkIfPastBottom
|
||||
@@ -56,7 +56,7 @@ RedisplayStartMenu_DoNotDrawStartMenu:
|
||||
and a, %00001010 ; was the Start button or B button pressed?
|
||||
jp nz, CloseStartMenu
|
||||
call SaveScreenTilesToBuffer2 ; copy background from wTileMap to wTileMapBackup2
|
||||
CheckEvent EVENT_GOT_POKEDEX ; does the player have the pokedex?
|
||||
CheckEvent EVENT_GOT_POKEDEX
|
||||
ld a, [wCurrentMenuItem]
|
||||
jr nz, .displayMenuItem
|
||||
inc a ; adjust position to account for missing pokedex menu item
|
||||
|
||||
@@ -129,7 +129,7 @@ StartMenu_Pokemon:
|
||||
dw .dig
|
||||
dw .teleport
|
||||
dw .softboiled
|
||||
.fly ; 11d1b (4:5d1b)
|
||||
.fly
|
||||
bit 2,a ; does the player have the Thunder Badge?
|
||||
jp z,.newBadgeRequired
|
||||
call CheckIfInOutsideMap
|
||||
@@ -160,7 +160,7 @@ StartMenu_Pokemon:
|
||||
and a
|
||||
jp z,.loop
|
||||
jp CloseTextDisplay
|
||||
.surf ; 11d66 (4:5d66)
|
||||
.surf
|
||||
bit 4,a ; does the player have the Soul Badge?
|
||||
jp z,.newBadgeRequired
|
||||
callba IsSurfingAllowed
|
||||
@@ -190,13 +190,13 @@ StartMenu_Pokemon:
|
||||
xor a
|
||||
ld [wd473], a
|
||||
jp .loop
|
||||
.strength ; 11dab (4:5dab)
|
||||
.strength
|
||||
bit 3,a ; does the player have the Rainbow Badge?
|
||||
jp z,.newBadgeRequired
|
||||
predef PrintStrengthTxt
|
||||
call GBPalWhiteOutWithDelay3
|
||||
jp .goBackToMap
|
||||
.flash ; 11dbb (4:5dbb)
|
||||
.flash
|
||||
bit 0,a ; does the player have the Boulder Badge?
|
||||
jp z,.newBadgeRequired
|
||||
xor a
|
||||
@@ -208,7 +208,7 @@ StartMenu_Pokemon:
|
||||
.flashLightsAreaText
|
||||
TX_FAR _FlashLightsAreaText
|
||||
db "@"
|
||||
.dig ; 11dd5 (4:5dd5)
|
||||
.dig
|
||||
ld a,ESCAPE_ROPE
|
||||
ld [wcf91],a
|
||||
ld [wPseudoItemID],a
|
||||
@@ -218,7 +218,7 @@ StartMenu_Pokemon:
|
||||
jp z,.loop
|
||||
call GBPalWhiteOutWithDelay3
|
||||
jp .goBackToMap
|
||||
.teleport ; 11ded (4:5ded)
|
||||
.teleport
|
||||
call CheckIfInOutsideMap
|
||||
jr z,.canTeleport
|
||||
ld a,[wWhichPokemon]
|
||||
@@ -239,7 +239,7 @@ StartMenu_Pokemon:
|
||||
res 4,[hl]
|
||||
ld c,60
|
||||
call DelayFrames
|
||||
call GBPalWhiteOutWithDelay3 ; zero all three palettes and wait 3 frames
|
||||
call GBPalWhiteOutWithDelay3
|
||||
jp .goBackToMap
|
||||
.warpToLastPokemonCenterText
|
||||
TX_FAR _WarpToLastPokemonCenterText
|
||||
@@ -250,7 +250,7 @@ StartMenu_Pokemon:
|
||||
.cannotFlyHereText
|
||||
TX_FAR _CannotFlyHereText
|
||||
db "@"
|
||||
.softboiled ; 11e35 (4:5e35)
|
||||
.softboiled
|
||||
ld hl,wPartyMon1MaxHP
|
||||
ld a,[wWhichPokemon]
|
||||
ld bc,wPartyMon2 - wPartyMon1
|
||||
|
||||
@@ -257,7 +257,7 @@ DrawLineBox:
|
||||
ld [hl], $6f ; ← (halfarrow ending)
|
||||
ret
|
||||
|
||||
PTile: ; 11682 (4:5682) ; This is a single 1bpp "P" tile
|
||||
PTile: ; This is a single 1bpp "P" tile
|
||||
INCBIN "gfx/p_tile.1bpp"
|
||||
PTileEnd:
|
||||
|
||||
@@ -349,11 +349,11 @@ StatusScreen2:
|
||||
ld c, a
|
||||
ld a, "-"
|
||||
call StatusScreen_PrintPP ; Fill the rest with --
|
||||
.InitPP ; 1175e
|
||||
.InitPP
|
||||
ld hl, wLoadedMonMoves
|
||||
coord de, 14, 10
|
||||
ld b, 0
|
||||
.PrintPP ; 11766
|
||||
.PrintPP
|
||||
ld a, [hli]
|
||||
and a
|
||||
jr z, .PPDone
|
||||
|
||||
@@ -372,7 +372,7 @@ UnusedPartyMonSpriteFunction:
|
||||
ld [wMonPartySpriteSpecies], a
|
||||
jr WriteMonPartySpriteOAMBySpecies
|
||||
|
||||
.LoadTilePatterns ; 71959 (1c:5959)
|
||||
.LoadTilePatterns
|
||||
push hl
|
||||
add a
|
||||
ld c, a
|
||||
|
||||
@@ -184,7 +184,7 @@ DisplayIntroNameTextBox:
|
||||
ld [wMaxMenuItem], a
|
||||
jp HandleMenuInput
|
||||
|
||||
.namestring ; 6822 (1:6822)
|
||||
.namestring
|
||||
db "NAME@"
|
||||
|
||||
DefaultNamesPlayer:
|
||||
|
||||
@@ -3,7 +3,7 @@ EmotionBubble:
|
||||
and $f
|
||||
swap a
|
||||
ld c, a
|
||||
ld b, $0
|
||||
ld b, 0
|
||||
ld hl, EmotionBubbles
|
||||
add hl, bc ; each emotion bubble is 16 bytes, so calculate the offset directly instead of with a pointer table
|
||||
add hl, bc
|
||||
@@ -64,7 +64,7 @@ EmotionBubble:
|
||||
call DelayFrame
|
||||
call UpdateSprites
|
||||
ret
|
||||
; jp UpdateSprites
|
||||
|
||||
|
||||
EmotionBubblesOAM:
|
||||
db $F8,$00,$F9,$00
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
AnimateHealingMachine:
|
||||
ld de, PokeCenterFlashingMonitorAndHealBall ; $44b7
|
||||
ld de, PokeCenterFlashingMonitorAndHealBall
|
||||
ld hl, vChars0 + $7c0
|
||||
lb bc, BANK(PokeCenterFlashingMonitorAndHealBall), $03 ; loads one too many tiles
|
||||
call CopyVideoData
|
||||
@@ -11,23 +11,23 @@ AnimateHealingMachine:
|
||||
ld a, [rOBP1]
|
||||
push af
|
||||
ld a, $e0
|
||||
ld [rOBP1], a ; $ff49
|
||||
ld [rOBP1], a
|
||||
call UpdateGBCPal_OBP1
|
||||
ld hl, wOAMBuffer + $84
|
||||
ld de, PokeCenterOAMData ; $44d7
|
||||
ld de, PokeCenterOAMData
|
||||
call CopyHealingMachineOAM
|
||||
ld a, 4
|
||||
ld [wAudioFadeOutControl], a
|
||||
call StopAllMusic
|
||||
.waitLoop
|
||||
ld a, [wAudioFadeOutControl]
|
||||
and a
|
||||
jr nz, .waitLoop
|
||||
ld a, [wPartyCount] ; wPartyCount
|
||||
and a ; is fade-out finished?
|
||||
jr nz, .waitLoop ; if not, check again
|
||||
ld a, [wPartyCount]
|
||||
ld b, a
|
||||
.partyLoop
|
||||
call CopyHealingMachineOAM
|
||||
ld a, $9e ; (SFX_02_4a - SFX_Headers_02) / 3
|
||||
ld a, SFX_HEALING_MACHINE
|
||||
call PlaySound
|
||||
ld c, 30
|
||||
call DelayFrames
|
||||
@@ -38,22 +38,22 @@ AnimateHealingMachine:
|
||||
ld [wAudioSavedROMBank], a
|
||||
jr nz, .next
|
||||
call StopAllMusic
|
||||
ld a, $2 ; BANK(Music_PkmnHealed)
|
||||
ld a, BANK(Music_PkmnHealed)
|
||||
ld [wAudioROMBank], a
|
||||
.next
|
||||
ld a, $e8 ; MUSIC_PKMN_HEALED
|
||||
ld a, MUSIC_PKMN_HEALED
|
||||
ld [wNewSoundID], a
|
||||
call PlaySound
|
||||
ld d, $28
|
||||
call FlashSprite8Times
|
||||
.waitLoop2
|
||||
ld a, [wChannelSoundIDs]
|
||||
cp $e8 ; MUSIC_PKMN_HEALED
|
||||
jr z, .waitLoop2
|
||||
cp MUSIC_PKMN_HEALED ; is the healed music still playing?
|
||||
jr z, .waitLoop2 ; if so, check gain
|
||||
ld c, 32
|
||||
call DelayFrames
|
||||
pop af
|
||||
ld [rOBP1], a ; $ff49
|
||||
ld [rOBP1], a
|
||||
call UpdateGBCPal_OBP1
|
||||
pop hl
|
||||
pop af
|
||||
|
||||
@@ -328,7 +328,6 @@ GetSplitMapSpriteSetID:
|
||||
.northSouthDivide
|
||||
ld a, [wYCoord]
|
||||
jr .compareCoord
|
||||
|
||||
.eastWestDivide
|
||||
ld a, [wXCoord]
|
||||
.compareCoord
|
||||
|
||||
@@ -8,7 +8,7 @@ PrepareOAMData:
|
||||
dec a
|
||||
jr z, .updateEnabled
|
||||
|
||||
cp $ff
|
||||
cp -1
|
||||
ret nz
|
||||
ld [wUpdateSpritesEnabled], a
|
||||
jp HideSprites
|
||||
|
||||
@@ -9,7 +9,7 @@ EnterMapAnim:
|
||||
bit 7, [hl] ; used fly out of battle?
|
||||
res 7, [hl]
|
||||
jr nz, .flyAnimation
|
||||
ld a, $a0 ; (SFX_02_4c - SFX_Headers_02) / 3
|
||||
ld a, SFX_TELEPORT_ENTER_1
|
||||
call PlaySound
|
||||
ld hl, wd732
|
||||
bit 4, [hl] ; used dungeon warp?
|
||||
@@ -17,7 +17,7 @@ EnterMapAnim:
|
||||
;res 4, [hl]
|
||||
jr nz, .dungeonWarpAnimation
|
||||
call PlayerSpinWhileMovingDown
|
||||
ld a, $a3 ; (SFX_02_4f - SFX_Headers_02) / 3
|
||||
ld a, SFX_TELEPORT_ENTER_2
|
||||
call PlaySound
|
||||
call IsPlayerStandingOnWarpPadOrHole
|
||||
ld a, b
|
||||
@@ -51,7 +51,7 @@ EnterMapAnim:
|
||||
.flyAnimation
|
||||
pop hl
|
||||
call LoadBirdSpriteGraphics
|
||||
ld a, $a4 ; SFX_BIRD_FLY
|
||||
ld a, SFX_FLY
|
||||
call PlaySound
|
||||
ld hl, wFlyAnimUsingCoordList
|
||||
xor a ; is using coord list
|
||||
@@ -104,7 +104,7 @@ _LeaveMapAnim:
|
||||
dec a
|
||||
jp nz, LeaveMapThroughHoleAnim
|
||||
.spinWhileMovingUp
|
||||
ld a, $9f ; (SFX_02_4b - SFX_Headers_02) / 3
|
||||
ld a, SFX_TELEPORT_EXIT_1
|
||||
call PlaySound
|
||||
ld hl, wPlayerSpinWhileMovingUpOrDownAnimDeltaY
|
||||
ld a, -$10
|
||||
@@ -138,7 +138,7 @@ _LeaveMapAnim:
|
||||
ld [hli], a ; wPlayerSpinInPlaceAnimFrameDelayDelta
|
||||
xor a
|
||||
ld [hli], a ; wPlayerSpinInPlaceAnimFrameDelayEndValue
|
||||
ld [hl], $a1 ; SFX_TELEPORT_EXIT_2
|
||||
ld [hl], SFX_TELEPORT_EXIT_2 ; wPlayerSpinInPlaceAnimSoundID
|
||||
ld hl, wFacingDirectionList
|
||||
call PlayerSpinInPlace
|
||||
jr .spinWhileMovingUp
|
||||
@@ -151,7 +151,7 @@ _LeaveMapAnim:
|
||||
ld [hli], a ; wFlyAnimCounter
|
||||
ld [hl], $c ; wFlyAnimBirdSpriteImageIndex
|
||||
call DoFlyAnimation
|
||||
ld a, $a4 ; SFX_FLY
|
||||
ld a, SFX_FLY
|
||||
call PlaySound
|
||||
ld hl, wFlyAnimUsingCoordList
|
||||
xor a ; is using coord list
|
||||
@@ -253,12 +253,12 @@ DoFlyAnimation:
|
||||
ret
|
||||
|
||||
LoadBirdSpriteGraphics:
|
||||
ld de, BirdSprite ; $4d80
|
||||
ld de, BirdSprite
|
||||
ld b, BANK(BirdSprite)
|
||||
ld c, $c
|
||||
ld hl, vNPCSprites
|
||||
call CopyVideoData
|
||||
ld de, BirdSprite + $c0 ; $4e40 ; moving amination sprite
|
||||
ld de, BirdSprite + $c0 ; moving animation sprite
|
||||
ld b, BANK(BirdSprite)
|
||||
ld c, $0c
|
||||
ld hl, vNPCSprites2
|
||||
@@ -392,9 +392,9 @@ FishingAnim:
|
||||
ld c, 10
|
||||
call DelayFrames
|
||||
ld hl, wd736
|
||||
set 6, [hl]
|
||||
set 6, [hl] ; reserve the last 4 OAM entries
|
||||
ld hl, vNPCSprites
|
||||
ld de, RedSprite ; $4180
|
||||
ld de, RedSprite
|
||||
ld b, BANK(RedSprite)
|
||||
ld c, $c
|
||||
call CopyVideoData
|
||||
@@ -422,7 +422,6 @@ FishingAnim:
|
||||
; there was a bite
|
||||
|
||||
; shake the player's sprite vertically
|
||||
|
||||
ld b, 10
|
||||
.loop
|
||||
ld hl, wSpriteStateData1 + 4 ; player's sprite Y screen position
|
||||
@@ -435,17 +434,19 @@ FishingAnim:
|
||||
|
||||
; If the player is facing up, hide the fishing rod so it doesn't overlap with
|
||||
; the exclamation bubble that will be shown next.
|
||||
ld a, [wSpriteStateData1 + 2]
|
||||
ld a, [wSpriteStateData1 + 2] ; player's sprite facing direction
|
||||
cp SPRITE_FACING_UP
|
||||
jr nz, .skipHidingFishingRod
|
||||
ld a, $a0
|
||||
ld [wOAMBuffer + $9c], a
|
||||
|
||||
.skipHidingFishingRod
|
||||
ld hl, wEmotionBubbleSpriteIndex
|
||||
xor a
|
||||
ld [hli], a ; player's sprite
|
||||
ld [hl], a ; EXCLAMATION_BUBBLE
|
||||
predef EmotionBubble
|
||||
|
||||
; If the player is facing up, unhide the fishing rod.
|
||||
ld a, [wSpriteStateData1 + 2] ; player's sprite facing direction
|
||||
cp SPRITE_FACING_UP
|
||||
@@ -463,7 +464,7 @@ FishingAnim:
|
||||
call LoadFontTilePatterns
|
||||
ret
|
||||
|
||||
.ShakePlayerSprite ; 708a3 (1c:48a3)
|
||||
.ShakePlayerSprite
|
||||
ld a, [hl]
|
||||
xor $1
|
||||
ld [hl], a
|
||||
|
||||
@@ -57,7 +57,7 @@ _SetSpritePosition1:
|
||||
|
||||
_SetSpritePosition2:
|
||||
ld hl, wSpriteStateData1
|
||||
ld de, $4
|
||||
ld de, 4
|
||||
ld a, [wSpriteIndex]
|
||||
ld [H_SPRITEINDEX], a
|
||||
call GetSpriteDataPointer
|
||||
@@ -262,13 +262,13 @@ CheckSpriteCanSeePlayer:
|
||||
jr .notInLine ; player too far away
|
||||
.checkIfLinedUp
|
||||
ld a, [wTrainerFacingDirection] ; sprite facing direction
|
||||
cp SPRITE_FACING_DOWN ; down
|
||||
cp SPRITE_FACING_DOWN
|
||||
jr z, .checkXCoord
|
||||
cp SPRITE_FACING_UP ; up
|
||||
cp SPRITE_FACING_UP
|
||||
jr z, .checkXCoord
|
||||
cp SPRITE_FACING_LEFT ; left
|
||||
cp SPRITE_FACING_LEFT
|
||||
jr z, .checkYCoord
|
||||
cp SPRITE_FACING_RIGHT ; right
|
||||
cp SPRITE_FACING_RIGHT
|
||||
jr z, .checkYCoord
|
||||
jr .notInLine
|
||||
.checkXCoord
|
||||
|
||||
+2
-6
@@ -181,19 +181,15 @@ SetPal_Overworld:
|
||||
ld a, SET_PAL_OVERWORLD
|
||||
ld [wDefaultPaletteCommand], a
|
||||
ret
|
||||
|
||||
.PokemonTowerOrAgatha
|
||||
ld a, PAL_GREYMON - 1
|
||||
jr .town
|
||||
|
||||
.caveOrBruno
|
||||
ld a, PAL_CAVE - 1
|
||||
jr .town
|
||||
|
||||
.Lorelei
|
||||
xor a
|
||||
jr .town
|
||||
|
||||
.trade_center_colosseum
|
||||
ld a, PAL_GREYMON - 1
|
||||
jr .town
|
||||
@@ -535,9 +531,8 @@ _SendSGBPacket:
|
||||
; set P14=HIGH, P15=HIGH
|
||||
ld a, $30
|
||||
ld [rJOYP], a
|
||||
call Wait7000
|
||||
; wait for about 70000 cycles
|
||||
; call Wait7000
|
||||
call Wait7000
|
||||
; restore (previously pushed) number of packets
|
||||
pop bc
|
||||
dec b
|
||||
@@ -613,6 +608,7 @@ PrepareSuperNintendoVRAMTransfer:
|
||||
dw DataSnd_72911
|
||||
|
||||
CheckSGB:
|
||||
; Returns whether the game is running on an SGB in carry.
|
||||
ld hl, MltReq2Packet
|
||||
call SendSGBPacket
|
||||
call Wait7000
|
||||
|
||||
+7
-8
@@ -61,7 +61,7 @@ PredefPointers::
|
||||
add_predef CopyDownscaledMonTiles
|
||||
add_predef Func_f0a7
|
||||
add_predef HealParty
|
||||
add_predef MoveAnimation ; 08 play move animation (1e:4d97)
|
||||
add_predef MoveAnimation
|
||||
add_predef DivideBCDPredef
|
||||
add_predef DivideBCDPredef2
|
||||
add_predef AddBCDPredef
|
||||
@@ -116,7 +116,7 @@ PredefPointers::
|
||||
add_predef InternalClockTradeAnim
|
||||
add_predef TrainerEngage
|
||||
add_predef IndexToPokedex
|
||||
add_predef DisplayPicCenteredOrUpperRight ; 3B display pic? (01:600d)
|
||||
add_predef DisplayPicCenteredOrUpperRight
|
||||
add_predef UsedCut
|
||||
add_predef ShowPokedexData
|
||||
add_predef WriteMonMoves
|
||||
@@ -127,21 +127,21 @@ PredefPointers::
|
||||
add_predef CanLearnTM
|
||||
add_predef TMToMove
|
||||
add_predef _RunPaletteCommand
|
||||
add_predef StarterDex ; 46 (17:40d4)
|
||||
add_predef StarterDex
|
||||
add_predef _AddPartyMon
|
||||
add_predef UpdateHPBar2
|
||||
add_predef DrawEnemyHUDAndHPBar
|
||||
add_predef LoadTownMap_Nest
|
||||
add_predef PrintMonType
|
||||
add_predef EmotionBubble ; 4C player exclamation (10:516f)
|
||||
add_predef EmptyFunc3 ; return immediately (01:5b63)
|
||||
add_predef EmotionBubble
|
||||
add_predef EmptyFunc3 ; return immediately
|
||||
add_predef AskName
|
||||
add_predef PewterGuys
|
||||
add_predef SaveSAVtoSRAM2
|
||||
add_predef LoadSAV2
|
||||
add_predef LoadSAV
|
||||
add_predef SaveSAVtoSRAM1
|
||||
add_predef DoInGameTradeDialogue ; 54 initiate trade (1c:5b86)
|
||||
add_predef DoInGameTradeDialogue
|
||||
add_predef HallOfFamePC
|
||||
add_predef DisplayDexRating
|
||||
|
||||
@@ -149,14 +149,13 @@ PredefPointers::
|
||||
predef_const EnterMapAnim
|
||||
dbw $1E, _LeaveMapAnim ; wrong bank
|
||||
dbw $1E, EnterMapAnim ; wrong bank
|
||||
|
||||
add_predef GetTileTwoStepsInFrontOfPlayer
|
||||
add_predef CheckForCollisionWhenPushingBoulder
|
||||
add_predef PrintStrengthTxt
|
||||
add_predef PickUpItem
|
||||
add_predef PrintMoveType
|
||||
add_predef LoadMovePPs
|
||||
add_predef DrawHP ; 5F (04:5468)
|
||||
add_predef DrawHP
|
||||
add_predef DrawHP2
|
||||
add_predef DisplayElevatorFloorMenu
|
||||
add_predef OaksAideScript
|
||||
|
||||
+1
-1
@@ -261,7 +261,7 @@ SaveSAVtoSRAM2:
|
||||
ld [sMainDataCheckSum], a
|
||||
call DisableSRAMAndPrepareClockData
|
||||
ret
|
||||
;;;
|
||||
|
||||
SaveSAVtoSRAM:
|
||||
ld a, $2
|
||||
ld [wSaveFileStatus], a
|
||||
|
||||
@@ -31,7 +31,7 @@ DisplayTitleScreen:
|
||||
call DisableLCD
|
||||
call LoadFontTilePatterns
|
||||
; todo: fix hl pointers
|
||||
ld hl, NintendoCopyrightLogoGraphics ; 4:4c48
|
||||
ld hl, NintendoCopyrightLogoGraphics
|
||||
ld de, vTitleLogo + $600
|
||||
ld bc, $50
|
||||
ld a, BANK(NintendoCopyrightLogoGraphics)
|
||||
@@ -91,7 +91,7 @@ DisplayTitleScreen:
|
||||
call .ScrollTitleScreenPokemonLogo
|
||||
jr .bouncePokemonLogoLoop
|
||||
|
||||
.TitleScreenPokemonLogoYScrolls ; 4228 (1:4228)
|
||||
.TitleScreenPokemonLogoYScrolls:
|
||||
; Controls the bouncing effect of the Pokemon logo on the title screen
|
||||
db -4,16 ; y scroll amount, number of times to scroll
|
||||
db 3,4
|
||||
@@ -102,7 +102,7 @@ DisplayTitleScreen:
|
||||
db -1,2
|
||||
db 0 ; terminate list with 0
|
||||
|
||||
.ScrollTitleScreenPokemonLogo ; 4237 (1:4237)
|
||||
.ScrollTitleScreenPokemonLogo:
|
||||
; Scrolls the Pokemon logo on the title screen to create the bouncing effect
|
||||
; Scrolls d pixels e times
|
||||
call DelayFrame
|
||||
|
||||
@@ -69,7 +69,7 @@ _TitleScroll:
|
||||
pop bc
|
||||
jr _TitleScroll
|
||||
|
||||
.ScrollBetween ; 374ec (d:74ec)
|
||||
.ScrollBetween:
|
||||
.wait
|
||||
ld a, [rLY] ; rLY
|
||||
cp l
|
||||
|
||||
+13
-19
@@ -27,7 +27,7 @@ DisplayTownMap:
|
||||
pop af
|
||||
jr .enterLoop
|
||||
|
||||
.townMapLoop ; 70ef4 (1c:4ef4)
|
||||
.townMapLoop
|
||||
coord hl, 0, 0
|
||||
lb bc, 1, 20
|
||||
call ClearScreenArea
|
||||
@@ -37,7 +37,7 @@ DisplayTownMap:
|
||||
ld b, 0
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
.enterLoop ; 70f08 (1c:4f08)
|
||||
.enterLoop
|
||||
ld de, wTownMapCoords
|
||||
call LoadTownMapEntry
|
||||
ld a, [de]
|
||||
@@ -69,7 +69,7 @@ DisplayTownMap:
|
||||
ld b, a
|
||||
and A_BUTTON | B_BUTTON | D_UP | D_DOWN
|
||||
jr z, .inputLoop
|
||||
ld a, $8c
|
||||
ld a, SFX_TINK
|
||||
call PlaySound
|
||||
bit 6, b
|
||||
jr nz, .pressedUp
|
||||
@@ -84,7 +84,6 @@ DisplayTownMap:
|
||||
pop af
|
||||
ld [hl], a
|
||||
ret
|
||||
|
||||
.pressedUp
|
||||
ld a, [wWhichTownMapLocation]
|
||||
inc a
|
||||
@@ -149,7 +148,7 @@ LoadTownMap_Fly:
|
||||
ld [hJoy7], a
|
||||
call LoadPlayerSpriteGraphics
|
||||
call LoadFontTilePatterns
|
||||
ld de, BirdSprite ; $4d80
|
||||
ld de, BirdSprite
|
||||
ld b, BANK(BirdSprite)
|
||||
ld c, $c
|
||||
ld hl, vSprites + $40
|
||||
@@ -205,7 +204,7 @@ LoadTownMap_Fly:
|
||||
jr z, .inputLoop
|
||||
bit 0, b
|
||||
jr nz, .pressedA
|
||||
ld a, $8c ; SFX_TINK
|
||||
ld a, SFX_TINK
|
||||
call PlaySound
|
||||
bit 6, b
|
||||
jr nz, .pressedUp
|
||||
@@ -213,7 +212,7 @@ LoadTownMap_Fly:
|
||||
jr nz, .pressedDown
|
||||
jr .pressedB
|
||||
.pressedA
|
||||
ld a, $8e ; SFX_HEAL_AILMENT
|
||||
ld a, SFX_HEAL_AILMENT
|
||||
call PlaySound
|
||||
ld a, [hl]
|
||||
ld [wDestinationMap], a
|
||||
@@ -299,7 +298,7 @@ LoadTownMap:
|
||||
ld bc, WorldMapTileGraphicsEnd - WorldMapTileGraphics
|
||||
ld a, BANK(WorldMapTileGraphics)
|
||||
call FarCopyData
|
||||
ld hl, MonNestIcon ; $574b
|
||||
ld hl, MonNestIcon
|
||||
ld de, vSprites + $40
|
||||
ld bc, MonNestIconEnd - MonNestIcon
|
||||
ld a, BANK(MonNestIcon)
|
||||
@@ -366,12 +365,12 @@ DrawPlayerOrBirdSprite:
|
||||
call WritePlayerOrBirdSpriteOAM
|
||||
pop hl
|
||||
ld de, wcd6d
|
||||
.asm_71266
|
||||
.loop
|
||||
ld a, [hli]
|
||||
ld [de], a
|
||||
inc de
|
||||
cp "@"
|
||||
jr nz, .asm_71266
|
||||
jr nz, .loop
|
||||
ld hl, wOAMBuffer
|
||||
ld de, wTileMapBackup
|
||||
ld bc, $a0
|
||||
@@ -465,7 +464,7 @@ WriteTownMapSpriteOAM:
|
||||
pop hl
|
||||
|
||||
WriteAsymmetricMonPartySpriteOAM:
|
||||
; Writes 4 OAM blocks for a helix mon party sprite, since is does not have
|
||||
; Writes 4 OAM blocks for a helix mon party sprite, since it does not have
|
||||
; a vertical line of symmetry.
|
||||
lb de, 2, 2
|
||||
.loop
|
||||
@@ -483,14 +482,14 @@ WriteAsymmetricMonPartySpriteOAM:
|
||||
xor a
|
||||
ld [hli], a
|
||||
inc d
|
||||
ld a, $8
|
||||
ld a, 8
|
||||
add c
|
||||
ld c, a
|
||||
dec e
|
||||
jr nz, .innerLoop
|
||||
pop bc
|
||||
pop de
|
||||
ld a, $8
|
||||
ld a, 8
|
||||
add b
|
||||
ld b, a
|
||||
dec d
|
||||
@@ -592,14 +591,9 @@ LoadTownMapEntry:
|
||||
ld l, a
|
||||
ret
|
||||
|
||||
; ExternalMapEntries:
|
||||
; dr $7139c,$7140b
|
||||
; InternalMapEntries:
|
||||
; dr $7140b,$7174b
|
||||
|
||||
INCLUDE "data/town_map_entries.asm"
|
||||
|
||||
INCLUDE "text/map_names.asm" ; TODO: relabel addresses
|
||||
INCLUDE "text/map_names.asm"
|
||||
|
||||
MonNestIcon:
|
||||
INCBIN "gfx/mon_nest_icon.1bpp"
|
||||
|
||||
+1
-1
@@ -253,7 +253,7 @@ Trade_ShowPlayerMon:
|
||||
ld [hSCX], a
|
||||
dec a
|
||||
dec a
|
||||
and a ; useless since flags are updated with dec a
|
||||
and a
|
||||
jr nz, .slideScreenLoop
|
||||
call Trade_Delay80
|
||||
ld a, TRADE_BALL_POOF_ANIM
|
||||
|
||||
Reference in New Issue
Block a user