Sync more with pokeyellow

This commit is contained in:
Rangi 2020-11-05 16:55:39 -05:00
parent 2a4b8b5a24
commit e16dec874a
18 changed files with 102 additions and 79 deletions

View File

@ -133,7 +133,7 @@ DrawFrameBlock:
.afterDrawingTiles
ld a, [wFBMode]
cp FRAMEBLOCKMODE_02
jr z, .advanceFrameBlockDestAddr; skip delay and don't clean OAM buffer
jr z, .advanceFrameBlockDestAddr ; skip delay and don't clean OAM buffer
ld a, [wSubAnimFrameDelay]
ld c, a
call DelayFrames
@ -2410,7 +2410,7 @@ FallingObjects_InitXCoords:
ret
FallingObjects_InitialXCoords:
db $38,$40,$50,$60,$70,$88,$90,$56,$67,$4A,$77,$84,$98,$32,$22,$5C,$6C,$7D,$8E,$99
db $38, $40, $50, $60, $70, $88, $90, $56, $67, $4A, $77, $84, $98, $32, $22, $5C, $6C, $7D, $8E, $99
FallingObjects_InitMovementData:
ld hl, wFallingObjectsMovementData
@ -2426,7 +2426,7 @@ FallingObjects_InitMovementData:
ret
FallingObjects_InitialMovementData:
db $00,$84,$06,$81,$02,$88,$01,$83,$05,$89,$09,$80,$07,$87,$03,$82,$04,$85,$08,$86
db $00, $84, $06, $81, $02, $88, $01, $83, $05, $89, $09, $80, $07, $87, $03, $82, $04, $85, $08, $86
AnimationShakeEnemyHUD:
; Shakes the enemy HUD.
@ -2583,7 +2583,7 @@ TossBallAnimation:
.PokeBallAnimations:
; sequence of animations that make up the Poké Ball toss
db POOF_ANIM,HIDEPIC_ANIM,SHAKE_ANIM,POOF_ANIM,SHOWPIC_ANIM
db POOF_ANIM, HIDEPIC_ANIM, SHAKE_ANIM, POOF_ANIM, SHOWPIC_ANIM
.BlockBall
ld a, TOSS_ANIM

View File

@ -1098,7 +1098,7 @@ ChooseNextMon:
ld a, [wLinkState]
cp LINK_STATE_BATTLING
jr nz, .notLinkBattle
inc a
inc a ; 1
ld [wActionResultOrTookBattleTurn], a
call LinkBattleExchangeData
.notLinkBattle
@ -1724,7 +1724,7 @@ SendOutMon:
ld hl, wEnemyMonHP
ld a, [hli]
or [hl] ; is enemy mon HP zero?
jp z, .skipDrawingEnemyHUDAndHPBar; if HP is zero, skip drawing the HUD and HP bar
jp z, .skipDrawingEnemyHUDAndHPBar ; if HP is zero, skip drawing the HUD and HP bar
call DrawEnemyHUDAndHPBar
.skipDrawingEnemyHUDAndHPBar
call DrawPlayerHUDAndHPBar
@ -2017,14 +2017,16 @@ DisplayBattleMenu::
dec a
jp nz, .handleBattleMenuInput ; handle menu input if it's not the old man tutorial
; the following happens for the old man tutorial
; Temporarily save the player name in wGrassRate,
; which is supposed to get overwritten when entering a
; map with wild Pokémon.
; Due to an oversight, the data may not get
; overwritten (on Cinnabar and Route 21) and the infamous
; Missingno. glitch can show up.
ld hl, wPlayerName
ld de, wGrassRate
ld bc, NAME_LENGTH
call CopyData ; temporarily save the player name in unused space,
; which is supposed to get overwritten when entering a
; map with wild Pokémon. Due to an oversight, the data
; may not get overwritten (cinnabar) and the infamous
; Missingno. glitch can show up.
call CopyData
ld hl, .oldManName
ld de, wPlayerName
ld bc, NAME_LENGTH
@ -2206,7 +2208,7 @@ BagWasSelected:
OldManItemList:
db 1 ; # items
db POKE_BALL, 50
db -1
db -1 ; end
DisplayPlayerBag:
; get the pointer to player's bag when in a normal battle
@ -4101,7 +4103,7 @@ CheckForDisobedience:
call GetCurrentMove
.canUseMove
ld a, $1
and a; clear Z flag
and a ; clear Z flag
ret
.cannotUseMove
xor a ; set Z flag
@ -4574,7 +4576,7 @@ JumpToOHKOMoveEffect:
INCLUDE "data/battle/unused_critical_hit_moves.asm"
; determines if attack is a critical hit
; azure heights claims "the fastest pokémon (who are,not coincidentally,
; Azure Heights claims "the fastest pokémon (who are, not coincidentally,
; among the most popular) tend to CH about 20 to 25% of the time."
CriticalHitTest:
xor a

View File

@ -37,7 +37,7 @@ DecrementPP:
ld a, [wPlayerMoveListIndex] ; which move (0, 1, 2, 3) did we use?
ld c, a
ld b, 0
add hl ,bc ; calculate the address in memory of the PP we need to decrement
add hl, bc ; calculate the address in memory of the PP we need to decrement
; based on the move chosen.
dec [hl] ; Decrement PP
ret

View File

@ -198,7 +198,7 @@ FreezeBurnParalyzeEffect:
ret nz ; return if they have a substitute, can't effect them
ldh a, [hWhoseTurn]
and a
jp nz, opponentAttacker
jp nz, .opponentAttacker
ld a, [wEnemyMonStatus]
and a
jp nz, CheckDefrost ; can't inflict status if opponent is already statused
@ -224,17 +224,17 @@ FreezeBurnParalyzeEffect:
ret nc ; do nothing if random value is >= 1A or 4D [no status applied]
ld a, b ; what type of effect is this?
cp BURN_SIDE_EFFECT1
jr z, .burn
jr z, .burn1
cp FREEZE_SIDE_EFFECT
jr z, .freeze
; .paralyze
jr z, .freeze1
; .paralyze1
ld a, 1 << PAR
ld [wEnemyMonStatus], a
call QuarterSpeedDueToParalysis ; quarter speed of affected mon
ld a, ANIM_A9
call PlayBattleAnimation
jp PrintMayNotAttackText ; print paralysis text
.burn
.burn1
ld a, 1 << BRN
ld [wEnemyMonStatus], a
call HalveAttackDueToBurn ; halve attack of affected mon
@ -242,7 +242,7 @@ FreezeBurnParalyzeEffect:
call PlayBattleAnimation
ld hl, BurnedText
jp PrintText
.freeze
.freeze1
call ClearHyperBeam ; resets hyper beam (recharge) condition from target
ld a, 1 << FRZ
ld [wEnemyMonStatus], a
@ -250,7 +250,7 @@ FreezeBurnParalyzeEffect:
call PlayBattleAnimation
ld hl, FrozenText
jp PrintText
opponentAttacker:
.opponentAttacker
ld a, [wBattleMonStatus] ; mostly same as above with addresses swapped for opponent
and a
jp nz, CheckDefrost
@ -265,10 +265,10 @@ opponentAttacker:
ld a, [wEnemyMoveEffect]
cp PARALYZE_SIDE_EFFECT1 + 1
ld b, $1a
jr c, .next1
jr c, .next2
ld b, $4d
sub $1e
.next1
.next2
push af
call BattleRandom
cp b
@ -276,20 +276,21 @@ opponentAttacker:
ret nc
ld a, b
cp BURN_SIDE_EFFECT1
jr z, .burn
jr z, .burn2
cp FREEZE_SIDE_EFFECT
jr z, .freeze
jr z, .freeze2
; .paralyze2
ld a, 1 << PAR
ld [wBattleMonStatus], a
call QuarterSpeedDueToParalysis
jp PrintMayNotAttackText
.burn
.burn2
ld a, 1 << BRN
ld [wBattleMonStatus], a
call HalveAttackDueToBurn
ld hl, BurnedText
jp PrintText
.freeze
.freeze2
; hyper beam bits aren't reseted for opponent's side
ld a, 1 << FRZ
ld [wBattleMonStatus], a
@ -458,14 +459,14 @@ UpdateStatDone:
ld bc, wPlayerMonMinimized
ldh a, [hWhoseTurn]
and a
jr z, .asm_3f4e6
jr z, .playerTurn
ld hl, wEnemyBattleStatus2
ld de, wEnemyMoveNum
ld bc, wEnemyMonMinimized
.asm_3f4e6
.playerTurn
ld a, [de]
cp MINIMIZE
jr nz, .asm_3f4f9
jr nz, .notMinimize
; if a substitute is up, slide off the substitute and show the mon pic before
; playing the minimize animation
bit HAS_SUBSTITUTE_UP, [hl]
@ -476,7 +477,7 @@ UpdateStatDone:
push de
call nz, Bankswitch
pop de
.asm_3f4f9
.notMinimize
call PlayCurrentMoveAnimation
ld a, [de]
cp MINIMIZE

View File

@ -74,7 +74,7 @@ CopyMonPicFromBGToSpriteVRAM:
ld [hli], a
ld a, d
ld [hli], a
ld a, $10 ; use OBP1
ld a, OAM_OBP1
ld [hli], a
inc d
dec c

View File

@ -86,7 +86,7 @@ HealEffect_:
ld [wHPBarNewHP], a
.playAnim
ld hl, PlayCurrentMoveAnimation
call BankswitchEtoF
call EffectCallBattleCore
ldh a, [hWhoseTurn]
and a
hlcoord 10, 9
@ -98,14 +98,14 @@ HealEffect_:
ld [wHPBarType], a
predef UpdateHPBar2
ld hl, DrawHUDsAndHPBars
call BankswitchEtoF
call EffectCallBattleCore
ld hl, RegainedHealthText
jp PrintText
.failed
ld c, 50
call DelayFrames
ld hl, PrintButItFailedText_
jp BankswitchEtoF
jp EffectCallBattleCore
StartedSleepingEffect:
text_far _StartedSleepingEffect

View File

@ -23,14 +23,14 @@ ReflectLightScreenEffect_:
.playAnim
push hl
ld hl, PlayCurrentMoveAnimation
call BankswitchEtoF
call EffectCallBattleCore
pop hl
jp PrintText
.moveFailed
ld c, 50
call DelayFrames
ld hl, PrintButItFailedText_
jp BankswitchEtoF
jp EffectCallBattleCore
LightScreenProtectedText:
text_far _LightScreenProtectedText
@ -40,6 +40,6 @@ ReflectGainedArmorText:
text_far _ReflectGainedArmorText
text_end
BankswitchEtoF:
EffectCallBattleCore:
ld b, BANK(BattleCore)
jp Bankswitch

View File

@ -141,7 +141,7 @@ TransformEffect_:
.failed
ld hl, PrintButItFailedText_
jp BankswitchEtoF
jp EffectCallBattleCore
TransformedText:
text_far _TransformedText

View File

@ -16,7 +16,7 @@ ReadTrainer:
; get the pointer to trainer data for this class
ld a, [wCurOpponent]
sub $C9 ; convert value from pokemon to trainer
sub OPP_ID_OFFSET + 1 ; convert value from pokemon to trainer
add a
ld hl, TrainerDataPointers
ld c, a
@ -79,7 +79,7 @@ ReadTrainer:
pop hl
jr .SpecialTrainer
.AddLoneMove
; does the trainer have a single monster with a different move
; does the trainer have a single monster with a different move?
ld a, [wLoneAttackNo] ; Brock is 01, Misty is 02, Erika is 04, etc
and a
jr z, .AddTeamMove

View File

@ -2,18 +2,18 @@ PrintSafariZoneBattleText:
ld hl, wSafariBaitFactor
ld a, [hl]
and a
jr z, .asm_4284
jr z, .no_bait
dec [hl]
ld hl, SafariZoneEatingText
jr .asm_429f
.asm_4284
jr .done
.no_bait
dec hl
ld a, [hl]
and a
ret z
dec [hl]
ld hl, SafariZoneAngryText
jr nz, .asm_429f
jr nz, .done
push hl
ld a, [wEnemyMonSpecies]
ld [wd0b5], a
@ -21,7 +21,7 @@ PrintSafariZoneBattleText:
ld a, [wMonHCatchRate]
ld [wEnemyMonActualCatchRate], a
pop hl
.asm_429f
.done
push hl
call LoadScreenTilesFromBuffer1
pop hl

View File

@ -4,11 +4,11 @@
ScaleSpriteByTwo:
ld de, sSpriteBuffer1 + (4*4*8) - 5 ; last byte of input data, last 4 rows already skipped
ld hl, sSpriteBuffer0 + SPRITEBUFFERSIZE - 1 ; end of destination buffer
call ScaleLastSpriteColumnByTwo ; last tile column is special case
call ScaleFirstThreeSpriteColumnsByTwo ; scale first 3 tile columns
call ScaleLastSpriteColumnByTwo ; last tile column is special case
call ScaleFirstThreeSpriteColumnsByTwo ; scale first 3 tile columns
ld de, sSpriteBuffer2 + (4*4*8) - 5 ; last byte of input data, last 4 rows already skipped
ld hl, sSpriteBuffer1 + SPRITEBUFFERSIZE - 1 ; end of destination buffer
call ScaleLastSpriteColumnByTwo ; last tile column is special case
call ScaleLastSpriteColumnByTwo ; last tile column is special case
ScaleFirstThreeSpriteColumnsByTwo:
ld b, $3 ; 3 tile columns

View File

@ -294,7 +294,7 @@ TrainerAI:
ret z ; if not a trainer, we're done here
ld a, [wLinkState]
cp LINK_STATE_BATTLING
ret z
ret z ; if in a link battle, we're done as well
ld a, [wTrainerClass] ; what trainer class is this?
dec a
ld c, a

View File

@ -353,10 +353,10 @@ SendSGBPacket:
ld d, a
.nextBit0
bit 0, d
; if 0th bit is not zero set P14=HIGH,P15=LOW (send bit 1)
; if 0th bit is not zero set P14=HIGH, P15=LOW (send bit 1)
ld a, $10
jr nz, .next0
; else (if 0th bit is zero) set P14=LOW,P15=HIGH (send bit 0)
; else (if 0th bit is zero) set P14=LOW, P15=HIGH (send bit 0)
ld a, $20
.next0
ldh [rJOYP], a
@ -364,7 +364,7 @@ SendSGBPacket:
ld a, $30
ldh [rJOYP], a
; rotation will put next bit in 0th position (so we can always use command
; "bit 0,d" to fetch the bit that has to be sent)
; "bit 0, d" to fetch the bit that has to be sent)
rr d
; decrease bit counter so we know when we have sent all 8 bits of current byte
dec e
@ -608,9 +608,7 @@ CopySGBBorderTiles:
; This function converts 2BPP planar data into this format by mapping
; 2BPP colors 0-3 to 4BPP colors 0-3. 4BPP colors 4-15 are not used.
ld b, 128
.tileLoop
; Copy bit planes 1 and 2 of the tile data.
ld c, 16
.copyLoop

View File

@ -1,4 +1,4 @@
; b = new colour for BG colour 0 (usually white) for 4 frames
; b = new color for BG color 0 (usually white) for 4 frames
ChangeBGPalColor0_4Frames:
call GetPredefRegisters
ldh a, [rBGP]

View File

@ -1,7 +1,7 @@
ClearSprites::
xor a
ld hl, wOAMBuffer
ld b, 40 * 4
ld b, wOAMBufferEnd - wOAMBuffer
.loop
ld [hli], a
dec b

View File

@ -561,7 +561,7 @@ ResetSpriteBufferPointers::
; maps each nybble to its reverse
NybbleReverseTable::
db $0, $8, $4, $c, $2, $a, $6 ,$e, $1, $9, $5, $d, $3, $b, $7 ,$f
db $0, $8, $4, $c, $2, $a, $6, $e, $1, $9, $5, $d, $3, $b, $7, $f
; combines the two loaded chunks with xor (the chunk loaded second is the destination). Both chunks are differeintial decoded beforehand.
UnpackSpriteMode2::

View File

@ -96,8 +96,8 @@ hTilePlayerStandingOn:: db
hSpritePriority:: db
UNION
;; Multiplication and division variables are meant
;; to overlap for back-to-back usage. Big endian.
; Multiplication and division variables are meant
; to overlap for back-to-back usage. Big endian.
UNION
ds 1
hMultiplicand:: ds 3

View File

@ -239,32 +239,40 @@ SECTION "OAM Buffer", WRAM0
wOAMBuffer::
; buffer for OAM data. Copied to OAM by DMA
ds 4 * 40
wOAMBufferEnd::
wTileMap::
; buffer for tiles that are visible on screen (20 columns by 18 rows)
ds 20 * 18
wSerialPartyMonsPatchList::
; list of indexes to patch with SERIAL_NO_DATA_BYTE after transfer
ds SCREEN_WIDTH * SCREEN_HEIGHT
UNION
wTileMapBackup::
; buffer for temporarily saving and restoring current screen's tiles
; (e.g. if menus are drawn on top)
; ds 20 * 18
ds SCREEN_WIDTH * SCREEN_HEIGHT
NEXTU
wSerialPartyMonsPatchList::
; list of indexes to patch with SERIAL_NO_DATA_BYTE after transfer
ds 200
wSerialEnemyMonsPatchList::
; list of indexes to patch with SERIAL_NO_DATA_BYTE after transfer
ds 200
ENDU
ds 80
wTempPic::
UNION
wOverworldMap::
ds 1300
wOverworldMapEnd::
NEXTU
wTempPic::
ds 7 * 7 tiles
ENDU
wRedrawRowOrColumnSrcTiles::
; the tiles of the row or column to be redrawn by RedrawRowOrColumn
ds SCREEN_WIDTH * 2
@ -399,9 +407,8 @@ wUnknownSerialCounter::
; 2 bytes
wEnteringCableClub::
ds 1
ds 1
; 1 byte
ds 2
wWhichTradeMonSelectionMenu::
; $00 = player mons
@ -509,15 +516,24 @@ wAnimPalette::
ds 29
UNION
wNPCMovementDirections2::
ds 10
NEXTU
wSwitchPartyMonTempBuffer::
; temporary buffer when swapping party mon data
ds 49
NEXTU
ds 10
wNumStepsToTake::
; used in Pallet Town scripted movement
ds 49
ds 1
ENDU
ds 10
wRLEByteCount::
ds 1
@ -595,7 +611,7 @@ wTotalPayDayMoney::
wSafariEscapeFactor::
ds 1
wSafariBaitFactor::
ds 1;
ds 1
ds 1
@ -823,8 +839,6 @@ wCoordIndex::
wOptionsTextSpeedCursorX::
wBoxNumString::
wTrainerInfoTextBoxWidthPlus1::
wSwappedMenuItem::
@ -861,6 +875,8 @@ wPlayerSpinInPlaceAnimFrameDelay::
wPlayerSpinWhileMovingUpOrDownAnimDeltaY::
wBoxNumString::
wHiddenObjectFunctionArgument::
wWhichTrade::
@ -1350,7 +1366,9 @@ wExpAmountGained::
; 2-byte big-endian number
; the total amount of exp a mon gained
wcf4b:: ds 2 ; storage buffer for various strings
wcf4b::
; storage buffer for various strings
ds 2
wGainBoostedExp::
ds 1
@ -1987,7 +2005,6 @@ wSavedTilesetType::
ds 2
wDamage::
ds 2
@ -2725,7 +2742,8 @@ wPokemonMansionB1FCurScript::
wVictoryRoad2FCurScript::
ds 1
wVictoryRoad3FCurScript::
ds 2
ds 1
ds 1
wFightingDojoCurScript::
ds 1
wSilphCo2FCurScript::
@ -2972,7 +2990,9 @@ wFlags_D733::
wBeatLorelei::
; bit 1: set when you beat Lorelei and reset in Indigo Plateau lobby
; the game uses this to tell when Elite 4 events need to be reset
ds 2
ds 1
ds 1
wd736::
; bit 0: check if the player is standing on a door and make him walk down a step if so
@ -3010,6 +3030,7 @@ wSecondLockTrashCanIndex::
ds 1
ds 2
wEventFlags::
flag_array NUM_EVENTS
@ -3020,7 +3041,7 @@ wGrassRate::
ds 1
wGrassMons::
;ds 20
; ds 20
ds 11
; Overload wGrassMons
@ -3119,6 +3140,7 @@ wBoxDataEnd::
SECTION "Stack", WRAM0
wStack::