commented battle stuff

This commit is contained in:
YamaArashi 2015-02-07 16:24:16 -08:00
parent 72265ab92a
commit 4fd7a42b23
26 changed files with 272 additions and 253 deletions

View file

@ -1,4 +1,4 @@
Func_525af: ; 525af (14:65af)
InitBattleVariables: ; 525af (14:65af)
ld a, [hTilesetType]
ld [wd0d4], a
xor a
@ -9,7 +9,7 @@ Func_525af: ; 525af (14:65af)
ld [hli], a
ld [hli], a
ld [hl], a
ld [wListScrollOffset], a ; wcc36
ld [wListScrollOffset], a
ld [wCriticalHitOrOHKO], a
ld [wBattleMonSpecies], a
ld [wPartyGainExpFlags], a
@ -21,73 +21,73 @@ Func_525af: ; 525af (14:65af)
ld [hl], a
ld hl, wccd3
ld b, $3c
.asm_525e1
.loop
ld [hli], a
dec b
jr nz, .asm_525e1
jr nz, .loop
inc a
ld [wccd9], a
ld a, [W_CURMAP]
cp SAFARI_ZONE_EAST
jr c, .asm_525f9
jr c, .notSafariBattle
cp SAFARI_ZONE_REST_HOUSE_1
jr nc, .asm_525f9
ld a, $2
ld [W_BATTLETYPE], a ; wd05a
.asm_525f9
jr nc, .notSafariBattle
ld a, $2 ; safari battle
ld [W_BATTLETYPE], a
.notSafariBattle
ld hl, PlayBattleMusic
ld b, BANK(PlayBattleMusic)
jp Bankswitch
ParalyzeEffect_: ; 52601 (14:6601)
ld hl, wEnemyMonStatus ; wcfe9
ld de, W_PLAYERMOVETYPE ; wcfd5
ld a, [H_WHOSETURN] ; $fff3
ld hl, wEnemyMonStatus
ld de, W_PLAYERMOVETYPE
ld a, [H_WHOSETURN]
and a
jp z, .asm_52613
jp z, .next
ld hl, wBattleMonStatus
ld de, W_ENEMYMOVETYPE ; wcfcf
.asm_52613
ld de, W_ENEMYMOVETYPE
.next
ld a, [hl]
and a
jr nz, .asm_52659
and a ; does the target already have a status ailment?
jr nz, .didntAffect
; check if the target is immune due to types
ld a, [de]
cp EVASION_DOWN1_EFFECT
jr nz, .asm_5262a
cp ELECTRIC
jr nz, .hitTest
ld b, h
ld c, l
inc bc
ld a, [bc]
cp $4
jr z, .asm_52666
cp GROUND
jr z, .doesntAffect
inc bc
ld a, [bc]
cp $4
jr z, .asm_52666
.asm_5262a
cp GROUND
jr z, .doesntAffect
.hitTest
push hl
callab MoveHitTest
pop hl
ld a, [W_MOVEMISSED]
and a
jr nz, .asm_52659
jr nz, .didntAffect
set PAR, [hl]
callab QuarterSpeedDueToParalysis
ld c, $1e
ld c, 30
call DelayFrames
callab Func_3fba8
callab PlayCurrentMoveAnimation
ld hl, PrintMayNotAttackText
ld b, BANK(PrintMayNotAttackText)
jp Bankswitch
.asm_52659
ld c, $32
.didntAffect
ld c, 50
call DelayFrames
ld hl, PrintDidntAffectText
ld b, BANK(PrintDidntAffectText)
jp Bankswitch
.asm_52666
ld c, $32
.doesntAffect
ld c, 50
call DelayFrames
ld hl, PrintDoesntAffectText
ld b, BANK(PrintDoesntAffectText)

View file

@ -55,7 +55,7 @@ PrintBeginningBattleText: ; 58d99 (16:4d99)
ld hl, UnveiledGhostText
call PrintText
callab LoadEnemyMonData
callab Func_708ca
callab DoGhostMarowakRevelationAnimation
ld hl, WildMonAppearedText
call PrintText

View file

@ -1,85 +1,90 @@
Func_708ca: ; 708ca (1c:48ca)
DoGhostMarowakRevelationAnimation: ; 708ca (1c:48ca)
ld a, $e4
ld [rOBP1], a ; $ff49
call Func_7092a
ld [rOBP1], a
call CopyMonPicFromBGToSpriteVRAM ; cover the BG ghost pic with a sprite ghost pic that looks the same
; now that the ghost pic is being displayed using sprites, clear the ghost pic from the BG tilemap
hlCoord 12, 0
ld bc, $707
call ClearScreenArea
call Delay3
xor a
ld [H_AUTOBGTRANSFERENABLED], a ; $ffba
ld a, $91
ld [H_AUTOBGTRANSFERENABLED], a ; disable BG transfer so we don't see the Marowak too soon
; replace ghost pic with Marowak in BG
ld a, MAROWAK
ld [wHPBarMaxHP], a
ld a, $1
ld [H_WHOSETURN], a ; $fff3
ld [H_WHOSETURN], a
callab Func_79793
; alternate between black and light grey 8 times.
; this makes the ghost's body appear to flash
ld d, $80
call Func_704f3
.asm_708f6
ld c, $a
call FlashSprite8Times
.fadeOutGhostLoop
ld c, 10
call DelayFrames
ld a, [rOBP1] ; $ff49
ld a, [rOBP1]
sla a
sla a
ld [rOBP1], a ; $ff49
jr nz, .asm_708f6
ld [rOBP1], a
jr nz, .fadeOutGhostLoop
call ClearSprites
call Func_7092a
call CopyMonPicFromBGToSpriteVRAM ; copy Marowak pic from BG to sprite VRAM
ld b, $e4
.asm_7090d
ld c, $a
.fadeInMarowakLoop
ld c, 10
call DelayFrames
ld a, [rOBP1] ; $ff49
ld a, [rOBP1]
srl b
rra
srl b
rra
ld [rOBP1], a ; $ff49
ld [rOBP1], a
ld a, b
and a
jr nz, .asm_7090d
jr nz, .fadeInMarowakLoop
ld a, $1
ld [H_AUTOBGTRANSFERENABLED], a ; $ffba
ld [H_AUTOBGTRANSFERENABLED], a ; enable BG transfer so the BG Marowak pic will be visible after the sprite one is cleared
call Delay3
jp ClearSprites
Func_7092a: ; 7092a (1c:492a)
; copies a mon pic's from background VRAM to sprite VRAM and sets up OAM
CopyMonPicFromBGToSpriteVRAM: ; 7092a (1c:492a)
ld de, vFrontPic
ld hl, vSprites
ld bc, 7 * 7
call CopyVideoData
ld a, $10
ld [W_BASECOORDY], a ; wd082
ld [W_BASECOORDY], a
ld a, $70
ld [W_BASECOORDX], a ; wd081
ld [W_BASECOORDX], a
ld hl, wOAMBuffer
ld bc, $606
ld d, $8
.asm_70948
.oamLoop
push bc
ld a, [W_BASECOORDY] ; wd082
ld a, [W_BASECOORDY]
ld e, a
.asm_7094d
.oamInnerLoop
ld a, e
add $8
ld e, a
ld [hli], a
ld a, [W_BASECOORDX] ; wd081
ld a, [W_BASECOORDX]
ld [hli], a
ld a, d
ld [hli], a
ld a, $10
ld a, $10 ; use OBP1
ld [hli], a
inc d
dec c
jr nz, .asm_7094d
jr nz, .oamInnerLoop
inc d
ld a, [W_BASECOORDX] ; wd081
ld a, [W_BASECOORDX]
add $8
ld [W_BASECOORDX], a ; wd081
ld [W_BASECOORDX], a
pop bc
dec b
jr nz, .asm_70948
jr nz, .oamLoop
ret
BattleTransition: ; 7096d (1c:496d)
@ -270,9 +275,9 @@ BattleTransitionTile: ; 70a59 (1c:4a59)
BattleTransition_BlackScreen: ; 70a69 (1c:4a69)
ld a, $ff
ld [rBGP], a ; $ff47
ld [rOBP0], a ; $ff48
ld [rOBP1], a ; $ff49
ld [rBGP], a
ld [rOBP0], a
ld [rOBP1], a
ret
; for non-dungeon trainer battles

View file

@ -1,14 +1,14 @@
Func_128d8: ; 128d8 (4:68d8)
ld a, [W_YCOORD] ; wd361
; returns whether the player is one tile outside the map in Z
IsPlayerJustOutsideMap: ; 128d8 (4:68d8)
ld a, [W_YCOORD]
ld b, a
ld a, [W_CURMAPHEIGHT] ; wd368
call Func_128ea
ld a, [W_CURMAPHEIGHT]
call .compareCoordWithMapDimension
ret z
ld a, [W_XCOORD] ; wd362
ld a, [W_XCOORD]
ld b, a
ld a, [W_CURMAPWIDTH] ; wd369
Func_128ea: ; 128ea (4:68ea)
ld a, [W_CURMAPWIDTH]
.compareCoordWithMapDimension
add a
cp b
ret z
@ -24,7 +24,7 @@ Func_128f6: ; 128f6 (4:68f6)
call GetPredefRegisters
ld a, $2
asm_128fb: ; 128fb (4:68fb)
ld [wListMenuID], a ; wListMenuID
ld [wListMenuID], a
push hl
ld a, [wcf99]
ld b, a
@ -37,7 +37,7 @@ asm_128fb: ; 128fb (4:68fb)
ld e, a
ld a, $6
ld d, a
jp Func_12924
jp DrawHPBarAndFraction
.asm_12913
ld a, [wcfba]
ld d, a
@ -48,21 +48,21 @@ asm_128fb: ; 128fb (4:68fb)
ld d, a
ld c, a
Func_12924: ; 12924 (4:6924)
DrawHPBarAndFraction: ; 12924 (4:6924)
pop hl
push de
push hl
push hl
call DrawHPBar
pop hl
ld a, [$fff6]
ld a, [hFlags_0xFFF6]
bit 0, a
jr z, .asm_12937
ld bc, $9
jr .asm_1293a
.asm_12937
ld bc, $15
.asm_1293a
jr z, .printFractionBelowBar
ld bc, $9 ; right of bar
jr .printHPFraction
.printFractionBelowBar
ld bc, SCREEN_WIDTH + 1 ; below bar
.printHPFraction
add hl, bc
ld de, wcf99
ld bc, $203

View file

@ -87,7 +87,9 @@ PickUpPayDayMoneyText: ; 1386b (4:786b)
TX_FAR _PickUpPayDayMoneyText
db "@"
Func_13870: ; 13870 (4:7870)
; try to initiate a wild pokemon encounter
; returns success in Z
TryDoWildEncounter: ; 13870 (4:7870)
ld a, [wNPCMovementScriptPointerTableNum]
and a
ret nz
@ -95,14 +97,14 @@ Func_13870: ; 13870 (4:7870)
and a
ret nz
callab IsPlayerStandingOnDoorTileOrWarpTile
jr nc, .asm_13888
.asm_13884
jr nc, .notStandingOnDoorOrWarpTile
.CantEncounter
ld a, $1
and a
ret
.asm_13888
callab Func_128d8
jr z, .asm_13884
.notStandingOnDoorOrWarpTile
callab IsPlayerJustOutsideMap
jr z, .CantEncounter
ld a, [wRepelRemainingSteps]
and a
jr z, .asm_1389e
@ -110,8 +112,8 @@ Func_13870: ; 13870 (4:7870)
jr z, .lastRepelStep
ld [wRepelRemainingSteps], a
.asm_1389e
; determine if wild pokémon can appear in the half-block were standing
; is the bottom right tile (9,9) of the half-block are we standing a grass/water tile?
; determine if wild pokémon can appear in the half-block were standing in
; is the bottom right tile (9,9) of the half-block we're standing in a grass/water tile?
hlCoord 9, 9
ld c, [hl]
ld a, [W_GRASSTILE]
@ -127,17 +129,17 @@ Func_13870: ; 13870 (4:7870)
; …as long as its not Viridian Forest or Safari Zone.
ld a, [W_CURMAP]
cp REDS_HOUSE_1F ; is this an indoor map?
jr c, .CantEncounter
jr c, .CantEncounter2
ld a, [W_CURMAPTILESET]
cp FOREST ; Viridian Forest/Safari Zone
jr z, .CantEncounter
jr z, .CantEncounter2
ld a, [W_GRASSRATE]
.CanEncounter
; weigh encounter chance to a random number to determine if there will be an encounter
; compare encounter chance with a random number to determine if there will be an encounter
ld b, a
ld a, [hRandomAdd]
cp b
jr nc, .CantEncounter
jr nc, .CantEncounter2
ld a, [hRandomSub]
ld b, a
ld hl, WildMonEncounterSlotChances
@ -148,15 +150,15 @@ Func_13870: ; 13870 (4:7870)
inc hl
jr .determineEncounterSlot
.gotEncounterSlot
; determine which wild pokémon (grass or water) can appear in the half-block were standing
; determine which wild pokémon (grass or water) can appear in the half-block were standing in
ld c, [hl]
ld hl, W_GRASSMONS
aCoord 8, 9
cp $14 ; is the bottom left tile (8,9) of the half-block are we standing a water tile?
cp $14 ; is the bottom left tile (8,9) of the half-block we're standing in a water tile?
jr nz, .gotWildEncounterType ; else, it's treated as a grass tile by default
ld hl, W_WATERMONS
; since the bottom right tile of a "left shore" half-block is $14 but the bottom left tile is not,
; "left shore" half-blocks (such as the one in the east coast of Cinnabar), load grass encounters.
; "left shore" half-blocks (such as the one in the east coast of Cinnabar) load grass encounters.
.gotWildEncounterType
ld b, $0
add hl, bc
@ -172,15 +174,15 @@ Func_13870: ; 13870 (4:7870)
ld b, a
ld a, [W_CURENEMYLVL]
cp b
jr c, .CantEncounter
jr c, .CantEncounter2 ; repel prevents encounters if the leading party mon's level is higher than the wild mon
jr .willEncounter
.lastRepelStep
ld [wRepelRemainingSteps], a
ld a, $d2
ld [H_DOWNARROWBLINKCNT2], a ; $ff8c
ld [H_DOWNARROWBLINKCNT2], a
call EnableAutoTextBoxDrawing
call DisplayTextID
.CantEncounter
.CantEncounter2
ld a, $1
and a
ret
@ -293,8 +295,8 @@ ConversionEffect_: ; 139a3 (4:79a3)
inc de
ld a, [hl]
ld [de], a
ld hl, Func_3fba8
call Func_139d5
ld hl, PlayCurrentMoveAnimation
call CallBankF
ld hl, ConvertedTypeText
jp PrintText
@ -304,22 +306,22 @@ ConvertedTypeText: ; 139cd (4:79cd)
PrintButItFailedText: ; 139d2 (4:79d2)
ld hl, PrintButItFailedText_
Func_139d5: ; 139d5 (4:79d5)
CallBankF: ; 139d5 (4:79d5)
ld b, BANK(PrintButItFailedText_)
jp Bankswitch
HazeEffect_: ; 139da (4:79da)
ld a, $7
ld hl, wPlayerMonAttackMod
call Func_13a43
call ResetStatMods
ld hl, wEnemyMonAttackMod
call Func_13a43
call ResetStatMods
ld hl, wPlayerMonUnmodifiedAttack
ld de, wBattleMonAttack
call Func_13a4a
call ResetStats
ld hl, wEnemyMonUnmodifiedAttack
ld de, wEnemyMonAttack
call Func_13a4a
call ResetStats
ld hl, wEnemyMonStatus
ld de, wEnemySelectedMove
ld a, [H_WHOSETURN]
@ -347,8 +349,8 @@ HazeEffect_: ; 139da (4:79da)
call CureStatuses
ld hl, W_ENEMYBATTSTATUS1
call CureStatuses
ld hl, Func_3fba8
call Func_139d5
ld hl, PlayCurrentMoveAnimation
call CallBankF
ld hl, StatusChangesEliminatedText
jp PrintText
@ -363,7 +365,7 @@ CureStatuses: ; 13a37 (4:7a37)
ld [hl], a
ret
Func_13a43: ; 13a43 (4:7a43)
ResetStatMods: ; 13a43 (4:7a43)
ld b, $8
.loop
ld [hli], a
@ -371,7 +373,7 @@ Func_13a43: ; 13a43 (4:7a43)
jr nz, .loop
ret
Func_13a4a: ; 13a4a (4:7a4a)
ResetStats: ; 13a4a (4:7a4a)
ld b, $8
.loop
ld a, [hli]

View file

@ -4,7 +4,7 @@ SubstituteEffectHandler: ; 17dad (5:7dad)
ld hl, wBattleMonMaxHP
ld de, wPlayerSubstituteHP
ld bc, W_PLAYERBATTSTATUS2
ld a, [$fff3] ;whose turn?
ld a, [H_WHOSETURN]
and a
jr z, .notEnemy
ld hl, wEnemyMonMaxHP
@ -23,8 +23,8 @@ SubstituteEffectHandler: ; 17dad (5:7dad)
srl a
rr b
push de
ld de, $fff2 ;subtract 8 to point to [current hp] instead of [max hp]
add hl, de ;HL -= 8
ld de, wBattleMonHP - wBattleMonMaxHP
add hl, de ; point hl to current HP
pop de
ld a, b
ld [de], a ;save copy of HP to subtract in ccd7/ccd8 [how much HP substitute has]
@ -44,8 +44,8 @@ SubstituteEffectHandler: ; 17dad (5:7dad)
set HasSubstituteUp, [hl] ;set bit 4 of flags, user now has substitute
ld a, [W_OPTIONS] ;load options
bit 7, a ;battle animation is enabled?
ld hl, Func_3fba8 ;animation enabled: 0F:7BA8
ld b, BANK(Func_3fba8)
ld hl, PlayCurrentMoveAnimation ;animation enabled: 0F:7BA8
ld b, BANK(PlayCurrentMoveAnimation)
jr z, .animationEnabled
ld hl, AnimationSubstitute ;animation disabled: 1E:56E0
ld b, BANK(AnimationSubstitute)

View file

@ -1,35 +1,43 @@
Func_27d6b: ; 27d6b (9:7d6b)
; [wd0b5] = pokemon ID
; hl = dest addr
PrintMonType: ; 27d6b (9:7d6b)
call GetPredefRegisters
push hl
call GetMonHeader
pop hl
push hl
ld a, [W_MONHTYPE1]
call Func_27d89
call PrintType
ld a, [W_MONHTYPE1]
ld b, a
ld a, [W_MONHTYPE2]
cp b
pop hl
jr z, asm_27d8c
ld bc, $28
jr z, EraseType2Text
ld bc, SCREEN_WIDTH * 2
add hl, bc
Func_27d89: ; 27d89 (9:7d89)
; a = type
; hl = dest addr
PrintType: ; 27d89 (9:7d89)
push hl
jr asm_27d9f
asm_27d8c: ; 27d8c (9:7d8c)
ld a, $7f
jr PrintType_
; erase "TYPE2/" if the mon only has 1 type
EraseType2Text: ; 27d8c (9:7d8c)
ld a, " "
ld bc, $13
add hl, bc
ld bc, $6
jp FillMemory
Func_27d98: ; 27d98 (9:7d98)
PrintMoveType: ; 27d98 (9:7d98)
call GetPredefRegisters
push hl
ld a, [W_PLAYERMOVETYPE] ; wcfd5
asm_27d9f: ; 27d9f (9:7d9f)
ld a, [W_PLAYERMOVETYPE]
; fall through
PrintType_: ; 27d9f (9:7d9f)
add a
ld hl, TypeNames
ld e, a
@ -157,19 +165,19 @@ CooltrainerFName: ; 27f79 (9:7f79)
db "COOLTRAINER♀@"
FocusEnergyEffect_: ; 27f86 (9:7f86)
ld hl, W_PLAYERBATTSTATUS2 ; W_PLAYERBATTSTATUS2
ld a, [H_WHOSETURN] ; $fff3
ld hl, W_PLAYERBATTSTATUS2
ld a, [H_WHOSETURN]
and a
jr z, .asm_27f91
ld hl, W_ENEMYBATTSTATUS2 ; W_ENEMYBATTSTATUS2
.asm_27f91
jr z, .notEnemy
ld hl, W_ENEMYBATTSTATUS2
.notEnemy
bit GettingPumped, [hl] ; is mon already using focus energy?
jr nz, .asm_27fa5
jr nz, .alreadyUsing
set GettingPumped, [hl] ; mon is now using focus energy
callab Func_3fba8
ld hl, GettingPumpedText ; $7fb2
callab PlayCurrentMoveAnimation
ld hl, GettingPumpedText
jp PrintText
.asm_27fa5
.alreadyUsing
ld c, $32
call DelayFrames
ld hl, PrintButItFailedText_

View file

@ -21,7 +21,7 @@ LeechSeedEffect_: ; 2bea9 (a:7ea9)
bit Seeded, [hl]
jr nz, .asm_2bee7
set Seeded, [hl]
callab Func_3fba8
callab PlayCurrentMoveAnimation
ld hl, WasSeededText ; $7ef2
jp PrintText
.asm_2bee7

View file

@ -8,7 +8,7 @@ MistEffect_: ; 33f2b (c:7f2b)
bit ProtectedByMist, [hl] ; is mon protected by mist?
jr nz, .asm_33f4a
set ProtectedByMist, [hl] ; mon is now protected by mist
callab Func_3fba8
callab PlayCurrentMoveAnimation
ld hl, ShroudedInMistText
jp PrintText
.asm_33f4a

View file

@ -2541,13 +2541,13 @@ MoveSelectionMenu: ; 3d219 (f:5219)
.writemoves
ld de, wd0e1
ld a, [$fff6]
ld a, [hFlags_0xFFF6]
set 2, a
ld [$fff6], a
ld [hFlags_0xFFF6], a
call PlaceString
ld a, [$fff6]
ld a, [hFlags_0xFFF6]
res 2, a
ld [$fff6], a
ld [hFlags_0xFFF6], a
ret
.regularmenu
@ -2666,10 +2666,10 @@ SelectMenuItem: ; 3d2fe (f:52fe)
call AddNTimes
ld [hl], $ec
.select
ld hl, $fff6
ld hl, hFlags_0xFFF6
set 1, [hl]
call HandleMenuInput
ld hl, $fff6
ld hl, hFlags_0xFFF6
res 1, [hl]
bit 6, a
jp nz, CursorUp ; up
@ -2959,7 +2959,7 @@ PrintMenuItem: ; 3d4b6 (f:54b6)
call PrintNumber
call GetCurrentMove
hlCoord 2, 10
predef Func_27d98
predef PrintMoveType
.moveDisabled
ld a, $1
ld [H_AUTOBGTRANSFERENABLED], a
@ -6814,7 +6814,7 @@ asm_3ef23: ; 3ef23 (f:6f23)
ld a, [wNumberOfNoRandomBattleStepsLeft]
and a
ret nz
callab Func_13870
callab TryDoWildEncounter
ret nz
asm_3ef3d: ; 3ef3d (f:6f3d)
ld a, [wMapPalOffset]
@ -6823,7 +6823,7 @@ asm_3ef3d: ; 3ef3d (f:6f3d)
ld a, [hl]
push af
res 1, [hl]
callab Func_525af
callab InitBattleVariables
ld a, [wEnemyMonSpecies2]
sub $c8
jp c, InitWildBattle
@ -7637,7 +7637,7 @@ UpdateStatDone: ; 3f4ca (f:74ca)
call nz, Bankswitch ; play Minimize animation unless there's Substitute involved
pop de
.asm_3f4f9
call Func_3fba8
call PlayCurrentMoveAnimation
ld a, [de]
cp MINIMIZE
jr nz, .applyBadgeBoostsAndStatusPenalties
@ -8451,7 +8451,7 @@ MimicEffect: ; 3f9ed (f:79ed)
ld [hl], a
ld [wd11e], a
call GetMoveName
call Func_3fba8
call PlayCurrentMoveAnimation
ld hl, MimicLearnedMoveText
jp PrintText
.asm_3fa74
@ -8467,7 +8467,7 @@ LeechSeedEffect: ; 3fa7c (f:7a7c)
jp Bankswitch
SplashEffect: ; 3fa84 (f:7a84)
call Func_3fba8
call PlayCurrentMoveAnimation
jp PrintNoEffectText
DisableEffect: ; 3fa8a (f:7a8a)
@ -8662,15 +8662,15 @@ Func_3fb96: ; 3fb96 (f:7b96)
ld [wcc5b], a
jp Func_3fbbc
Func_3fba8: ; 3fba8 (f:7ba8)
PlayCurrentMoveAnimation: ; 3fba8 (f:7ba8)
xor a
ld [wcc5b], a
ld a, [H_WHOSETURN]
and a
ld a, [W_PLAYERMOVENUM]
jr z, .asm_3fbb7
jr z, .notEnemyTurn
ld a, [W_ENEMYMOVENUM]
.asm_3fbb7
.notEnemyTurn
and a
ret z

View file

@ -1,13 +1,13 @@
HealEffect_: ; 3b9ec (e:79ec)
ld a, [H_WHOSETURN] ; $fff3
ld a, [H_WHOSETURN]
and a
ld de, wBattleMonHP ; wd015
ld hl, wBattleMonMaxHP ; wd023
ld a, [W_PLAYERMOVENUM] ; wcfd2
ld de, wBattleMonHP
ld hl, wBattleMonMaxHP
ld a, [W_PLAYERMOVENUM]
jr z, .asm_3ba03
ld de, wEnemyMonHP ; wEnemyMonHP
ld hl, wEnemyMonMaxHP ; wEnemyMonMaxHP
ld a, [W_ENEMYMOVENUM] ; W_ENEMYMOVENUM
ld de, wEnemyMonHP
ld hl, wEnemyMonMaxHP
ld a, [W_ENEMYMOVENUM]
.asm_3ba03
ld b, a
ld a, [de]
@ -16,27 +16,27 @@ HealEffect_: ; 3b9ec (e:79ec)
inc hl
ld a, [de]
sbc [hl]
jp z, Func_3ba97
jp z, .failed
ld a, b
cp REST
jr nz, .asm_3ba37
push hl
push de
push af
ld c, $32
ld c, 50
call DelayFrames
ld hl, wBattleMonStatus ; wBattleMonStatus
ld a, [H_WHOSETURN] ; $fff3
ld hl, wBattleMonStatus
ld a, [H_WHOSETURN]
and a
jr z, .asm_3ba25
ld hl, wEnemyMonStatus ; wcfe9
ld hl, wEnemyMonStatus
.asm_3ba25
ld a, [hl]
and a
ld [hl], 2 ; Number of turns from Rest
ld hl, StartedSleepingEffect ; $7aa2
ld hl, StartedSleepingEffect
jr z, .asm_3ba31
ld hl, FellAsleepBecameHealthyText ; $7aa7
ld hl, FellAsleepBecameHealthyText
.asm_3ba31
call PrintText
pop af
@ -81,9 +81,9 @@ HealEffect_: ; 3b9ec (e:79ec)
ld [de], a
ld [wHPBarNewHP], a
.asm_3ba6f
ld hl, Func_3fba8 ; $7ba8
ld hl, PlayCurrentMoveAnimation
call BankswitchEtoF
ld a, [H_WHOSETURN] ; $fff3
ld a, [H_WHOSETURN]
and a
hlCoord 10, 9
ld a, $1
@ -91,15 +91,14 @@ HealEffect_: ; 3b9ec (e:79ec)
hlCoord 2, 2
xor a
.asm_3ba83
ld [wListMenuID], a ; wListMenuID
ld [wListMenuID], a
predef UpdateHPBar2
ld hl, DrawHUDsAndHPBars ; $4d5a
ld hl, DrawHUDsAndHPBars
call BankswitchEtoF
ld hl, RegainedHealthText ; $7aac
ld hl, RegainedHealthText
jp PrintText
Func_3ba97: ; 3ba97 (e:7a97)
ld c, $32
.failed
ld c, 50
call DelayFrames
ld hl, PrintButItFailedText_
jp BankswitchEtoF
@ -119,37 +118,37 @@ RegainedHealthText: ; 3baac (e:7aac)
TransformEffect_: ; 3bab1 (e:7ab1)
ld hl, wBattleMonSpecies
ld de, wEnemyMonSpecies
ld bc, W_ENEMYBATTSTATUS3 ; W_ENEMYBATTSTATUS3
ld a, [W_ENEMYBATTSTATUS1] ; W_ENEMYBATTSTATUS1
ld a, [H_WHOSETURN] ; $fff3
ld bc, W_ENEMYBATTSTATUS3
ld a, [W_ENEMYBATTSTATUS1]
ld a, [H_WHOSETURN]
and a
jr nz, .asm_3bad1
ld hl, wEnemyMonSpecies
ld de, wBattleMonSpecies
ld bc, W_PLAYERBATTSTATUS3 ; W_PLAYERBATTSTATUS3
ld [wPlayerMoveListIndex], a ; wPlayerMoveListIndex
ld a, [W_PLAYERBATTSTATUS1] ; W_PLAYERBATTSTATUS1
ld bc, W_PLAYERBATTSTATUS3
ld [wPlayerMoveListIndex], a
ld a, [W_PLAYERBATTSTATUS1]
.asm_3bad1
bit Invulnerable, a ; is mon invulnerable to typical attacks? (fly/dig)
jp nz, Func_3bb8c
jp nz, .failed
push hl
push de
push bc
ld hl, W_PLAYERBATTSTATUS2 ; W_PLAYERBATTSTATUS2
ld a, [H_WHOSETURN] ; $fff3
ld hl, W_PLAYERBATTSTATUS2
ld a, [H_WHOSETURN]
and a
jr z, .asm_3bae4
ld hl, W_ENEMYBATTSTATUS2 ; W_ENEMYBATTSTATUS2
ld hl, W_ENEMYBATTSTATUS2
.asm_3bae4
bit HasSubstituteUp, [hl]
push af
ld hl, Func_79747
ld b, BANK(Func_79747)
call nz, Bankswitch
ld a, [W_OPTIONS] ; W_OPTIONS
ld a, [W_OPTIONS]
add a
ld hl, Func_3fba8 ; $7ba8
ld b, BANK(Func_3fba8)
ld hl, PlayCurrentMoveAnimation
ld b, BANK(PlayCurrentMoveAnimation)
jr nc, .asm_3baff
ld hl, AnimationTransformMon
ld b, BANK(AnimationTransformMon)
@ -178,7 +177,7 @@ TransformEffect_: ; 3bab1 (e:7ab1)
inc bc
inc bc
call CopyData
ld a, [H_WHOSETURN] ; $fff3
ld a, [H_WHOSETURN]
and a
jr z, .asm_3bb32
ld a, [de]
@ -228,15 +227,15 @@ TransformEffect_: ; 3bab1 (e:7ab1)
call GetMonName
ld hl, wEnemyMonUnmodifiedAttack
ld de, wPlayerMonUnmodifiedAttack
call Func_3bb7d
ld hl, wEnemyMonStatMods ; wcd2e
ld de, wPlayerMonStatMods ; wcd1a
call Func_3bb7d
ld hl, TransformedText ; $7b92
call .copyBasedOnTurn
ld hl, wEnemyMonStatMods
ld de, wPlayerMonStatMods
call .copyBasedOnTurn
ld hl, TransformedText
jp PrintText
Func_3bb7d: ; 3bb7d (e:7b7d)
ld a, [H_WHOSETURN] ; $fff3
.copyBasedOnTurn
ld a, [H_WHOSETURN]
and a
jr z, .asm_3bb86
push hl
@ -247,8 +246,8 @@ Func_3bb7d: ; 3bb7d (e:7b7d)
ld bc, $8
jp CopyData
Func_3bb8c: ; 3bb8c (e:7b8c)
ld hl, PrintButItFailedText_ ; $7b53
.failed
ld hl, PrintButItFailedText_
jp BankswitchEtoF
TransformedText: ; 3bb92 (e:7b92)
@ -256,13 +255,13 @@ TransformedText: ; 3bb92 (e:7b92)
db "@"
ReflectLightScreenEffect_: ; 3bb97 (e:7b97)
ld hl, W_PLAYERBATTSTATUS3 ; W_PLAYERBATTSTATUS3
ld de, W_PLAYERMOVEEFFECT ; wcfd3
ld a, [H_WHOSETURN] ; $fff3
ld hl, W_PLAYERBATTSTATUS3
ld de, W_PLAYERMOVEEFFECT
ld a, [H_WHOSETURN]
and a
jr z, .asm_3bba8
ld hl, W_ENEMYBATTSTATUS3 ; W_ENEMYBATTSTATUS3
ld de, W_ENEMYMOVEEFFECT ; W_ENEMYMOVEEFFECT
ld hl, W_ENEMYBATTSTATUS3
ld de, W_ENEMYMOVEEFFECT
.asm_3bba8
ld a, [de]
cp LIGHT_SCREEN_EFFECT
@ -270,23 +269,23 @@ ReflectLightScreenEffect_: ; 3bb97 (e:7b97)
bit HasLightScreenUp, [hl] ; is mon already protected by light screen?
jr nz, .moveFailed
set HasLightScreenUp, [hl] ; mon is now protected by light screen
ld hl, LightScreenProtectedText ; $7bd7
ld hl, LightScreenProtectedText
jr .asm_3bbc1
.reflect
bit HasReflectUp, [hl] ; is mon already protected by reflect?
jr nz, .moveFailed
set HasReflectUp, [hl] ; mon is now protected by reflect
ld hl, ReflectGainedArmorText ; $7bdc
ld hl, ReflectGainedArmorText
.asm_3bbc1
push hl
ld hl, Func_3fba8 ; $7ba8
ld hl, PlayCurrentMoveAnimation
call BankswitchEtoF
pop hl
jp PrintText
.moveFailed
ld c, $32
call DelayFrames
ld hl, PrintButItFailedText_ ; $7b53
ld hl, PrintButItFailedText_
jp BankswitchEtoF
LightScreenProtectedText: ; 3bbd7 (e:7bd7)

View file

@ -338,10 +338,10 @@ TradeCenter_SelectMon:
ld a, 1
ld [wTopMenuItemX], a
.enemyMonMenu_HandleInput
ld hl, $fff6
ld hl, hFlags_0xFFF6
set 1, [hl]
call HandleMenuInput
ld hl, $fff6
ld hl, hFlags_0xFFF6
res 1, [hl]
and a
jp z, .getNewInput
@ -403,10 +403,10 @@ TradeCenter_SelectMon:
ld bc, $0601
call ClearScreenArea
.playerMonMenu_HandleInput
ld hl, $fff6
ld hl, hFlags_0xFFF6
set 1, [hl]
call HandleMenuInput
ld hl, $fff6
ld hl, hFlags_0xFFF6
res 1, [hl]
and a ; was anything pressed?
jr nz, .playerMonMenu_SomethingPressed

View file

@ -170,7 +170,7 @@ Func_702f0: ; 702f0 (1c:42f0)
ld a, [wWhichTrade] ; wWhichTrade
ld [wd0b5], a
hlCoord 3, 9
predef Func_27d6b
predef PrintMonType
ld a, [wWhichTrade] ; wWhichTrade
jp PlayCry

View file

@ -211,7 +211,7 @@ UpdateHPBar_PrintHPNumber: ; faf5 (3:7af5)
ld a, [wHPBarOldHP+1]
ld [wcef0], a
push hl
ld a, [$fff6]
ld a, [hFlags_0xFFF6]
bit 0, a
jr z, .asm_fb15
ld de, $9

View file

@ -919,15 +919,15 @@ ItemUseMedicine: ; dabb (3:5abb)
call AddNTimes ; calculate coordinates of HP bar of pokemon that used Softboiled
ld a,(SFX_02_3d - SFX_Headers_02) / 3
call PlaySoundWaitForCurrent ; play sound
ld a,[$fff6]
ld a,[hFlags_0xFFF6]
set 0,a
ld [$fff6],a
ld [hFlags_0xFFF6],a
ld a,$02
ld [wListMenuID],a
predef UpdateHPBar2 ; animate HP bar decrease of pokemon that used Softboiled
ld a,[$fff6]
ld a,[hFlags_0xFFF6]
res 0,a
ld [$fff6],a
ld [hFlags_0xFFF6],a
pop af
ld b,a ; store heal amount (1/5 of max HP)
ld hl,wHPBarOldHP + 1
@ -1069,15 +1069,15 @@ ItemUseMedicine: ; dabb (3:5abb)
jr z,.playStatusAilmentCuringSound
ld a,(SFX_02_3d - SFX_Headers_02) / 3 ; HP healing sound
call PlaySoundWaitForCurrent ; play sound
ld a,[$fff6]
ld a,[hFlags_0xFFF6]
set 0,a
ld [$fff6],a
ld [hFlags_0xFFF6],a
ld a,$02
ld [wListMenuID],a
predef UpdateHPBar2 ; animate the HP bar lengthening
ld a,[$fff6]
ld a,[hFlags_0xFFF6]
res 0,a
ld [$fff6],a
ld [hFlags_0xFFF6],a
ld a,$f7 ; revived message
ld [wd07d],a
ld a,[wcf91]

View file

@ -126,13 +126,13 @@ TryingToLearn: ; 6f07 (1:6f07)
call TextBoxBorder
hlCoord 6, 8
ld de, wd0e1
ld a, [$fff6]
ld a, [hFlags_0xFFF6]
set 2, a
ld [$fff6], a
ld [hFlags_0xFFF6], a
call PlaceString
ld a, [$fff6]
ld a, [hFlags_0xFFF6]
res 2, a
ld [$fff6], a
ld [hFlags_0xFFF6], a
ld hl, wTopMenuItemY
ld a, $8
ld [hli], a
@ -146,10 +146,10 @@ TryingToLearn: ; 6f07 (1:6f07)
ld a, $3
ld [hli], a
ld [hl], $0
ld hl, $fff6
ld hl, hFlags_0xFFF6
set 1, [hl]
call HandleMenuInput
ld hl, $fff6
ld hl, hFlags_0xFFF6
res 1, [hl]
push af
call LoadScreenTilesFromBuffer1

View file

@ -88,14 +88,14 @@ RedrawPartyMenu_: ; 12ce3 (4:6ce3)
pop hl
push hl
ld bc,20 + 1 ; down 1 row and right 1 column
ld a,[$FFF6]
ld a,[hFlags_0xFFF6]
set 0,a
ld [$FFF6],a
ld [hFlags_0xFFF6],a
add hl,bc
predef Func_128f6 ; draw HP bar and prints current / max HP
ld a,[$FFF6]
ld a,[hFlags_0xFFF6]
res 0,a
ld [$FFF6],a
ld [hFlags_0xFFF6],a
call SetPartyMenuHealthBarColor ; color the HP bar (on SGB)
pop hl
jr .printLevel

View file

@ -82,7 +82,7 @@ StatusScreen: ; 12953 (4:6953)
ld bc, $8103 ; Zero-padded, 3
call PrintNumber ; Pokémon no.
hlCoord 11, 10
predef Func_27d6b ; Prints the type (?)
predef PrintMonType
ld hl, NamePointers2 ; $6a9d
call .unk_12a7e
ld d, h

View file

@ -48,7 +48,7 @@ AnimateHealingMachine: ; 70433 (1c:4433)
ld [wc0ee], a
call PlaySound
ld d, $28
call Func_704f3
call FlashSprite8Times
.asm_704a2
ld a, [wc026]
cp MUSIC_PKMN_HEALED
@ -74,16 +74,17 @@ PokeCenterOAMData: ; 704d7 (1c:44d7)
db $35,$30,$7D,$10
db $35,$38,$7D,$30
Func_704f3: ; 704f3 (1c:44f3)
ld b, $8
.asm_704f5
ld a, [rOBP1] ; $ff49
; d = value to xor with palette
FlashSprite8Times: ; 704f3 (1c:44f3)
ld b, 8
.loop
ld a, [rOBP1]
xor d
ld [rOBP1], a ; $ff49
ld c, $a
ld [rOBP1], a
ld c, 10
call DelayFrames
dec b
jr nz, .asm_704f5
jr nz, .loop
ret
Func_70503: ; 70503 (1c:4503)

View file

@ -127,7 +127,7 @@ PredefPointers:: ; 4fe79 (13:7e79)
add_predef UpdateHPBar2
add_predef DrawEnemyHUDAndHPBar
add_predef LoadTownMap_Nest
add_predef Func_27d6b
add_predef PrintMonType
add_predef EmotionBubble; 4C player exclamation
add_predef EmptyFunc3; return immediately
add_predef AskName
@ -145,7 +145,7 @@ PredefPointers:: ; 4fe79 (13:7e79)
add_predef CheckForCollisionWhenPushingBoulder
add_predef PrintStrengthTxt
add_predef PickupItem
add_predef Func_27d98
add_predef PrintMoveType
add_predef LoadMovePPs
add_predef DrawHP ; 5F
add_predef Func_128f6

View file

@ -346,10 +346,10 @@ ChangeBox:: ; 738a1 (1c:78a1)
call z, Func_73a29
call Func_7393f
call UpdateSprites
ld hl, $fff6
ld hl, hFlags_0xFFF6
set 1, [hl]
call HandleMenuInput
ld hl, $fff6
ld hl, hFlags_0xFFF6
res 1, [hl]
bit 1, a
ret nz
@ -436,12 +436,12 @@ Func_7393f: ; 7393f (1c:793f)
ld b, $c
ld c, $7
call TextBoxBorder
ld hl, $fff6
ld hl, hFlags_0xFFF6
set 2, [hl]
ld de, BoxNames ; $79d9
hlCoord 13, 1
call PlaceString
ld hl, $fff6
ld hl, hFlags_0xFFF6
res 2, [hl]
ld a, [wd5a0]
and $7f

View file

@ -4046,7 +4046,7 @@ PlaceMenuCursor:: ; 3b7c (0:3b7c)
and a ; was the previous menu id 0?
jr z,.checkForArrow1
push af
ld a,[$fff6]
ld a,[hFlags_0xFFF6]
bit 1,a ; is the menu double spaced?
jr z,.doubleSpaced1
ld bc,20
@ -4072,7 +4072,7 @@ PlaceMenuCursor:: ; 3b7c (0:3b7c)
and a
jr z,.checkForArrow2
push af
ld a,[$fff6]
ld a,[hFlags_0xFFF6]
bit 1,a ; is the menu double spaced?
jr z,.doubleSpaced2
ld bc,20

View file

@ -62,7 +62,7 @@ PlaceNextChar:: ; 1956 (0:1956)
cp $4E
jr nz,.next
ld bc,$0028
ld a,[$FFF6]
ld a,[hFlags_0xFFF6]
bit 2,a
jr z,.next2
ld bc,$14

View file

@ -151,5 +151,8 @@ H_CURRENTSPRITEOFFSET EQU $FFDA ; multiple of $10
H_WHOSETURN EQU $FFF3 ; 0 on players turn, 1 on enemys turn
; bit 0: draw HP fraction to the right of bar instead of below (for party menu)
hFlags_0xFFF6 EQU $FFF6
hJoyInput EQU $FFF8

View file

@ -126,7 +126,7 @@ LoadMonData_:
.copyMonData
ld de, wcf98
ld bc, 44
ld bc, wPartyMon2 - wPartyMon1
jp CopyData

View file

@ -824,6 +824,7 @@ wcfbc:: ds 2
wcfbe:: ds 2
wcfc0:: ds 2
wcfc2:: ds 2
wcfc4:: ds 1
wWalkCounter:: ; cfc5