ref: 4fd7a42b235b68ffc11d4f02305b695c2ed05549
parent: 72265ab92abd235c2af6d26ae76dd0dcaecfd6ac
author: YamaArashi <shadow962@live.com>
date: Sat Feb 7 11:24:16 EST 2015
commented battle stuff
--- a/engine/battle/14.asm
+++ b/engine/battle/14.asm
@@ -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 @@
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 @@
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)
--- a/engine/battle/16.asm
+++ b/engine/battle/16.asm
@@ -55,7 +55,7 @@
ld hl, UnveiledGhostText
call PrintText
callab LoadEnemyMonData
- callab Func_708ca
+ callab DoGhostMarowakRevelationAnimation
ld hl, WildMonAppearedText
call PrintText
--- a/engine/battle/1c.asm
+++ b/engine/battle/1c.asm
@@ -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 @@
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
--- a/engine/battle/4.asm
+++ b/engine/battle/4.asm
@@ -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 @@
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 @@
ld e, a
ld a, $6
ld d, a
- jp Func_12924
+ jp DrawHPBarAndFraction
.asm_12913
ld a, [wcfba]
ld d, a
@@ -48,7 +48,7 @@
ld d, a
ld c, a
-Func_12924: ; 12924 (4:6924)
+DrawHPBarAndFraction: ; 12924 (4:6924)
pop hl
push de
push hl
@@ -55,14 +55,14 @@
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
--- a/engine/battle/4_2.asm
+++ b/engine/battle/4_2.asm
@@ -87,7 +87,9 @@
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 @@
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 @@
jr z, .lastRepelStep
ld [wRepelRemainingSteps], a
.asm_1389e
-; determine if wild pok�mon can appear in the half-block we�re 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 we�re 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 @@
; �as long as it�s 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 @@
inc hl
jr .determineEncounterSlot
.gotEncounterSlot
-; determine which wild pok�mon (grass or water) can appear in the half-block we�re standing
+; determine which wild pok�mon (grass or water) can appear in the half-block we�re 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 @@
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 @@
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,7 +306,7 @@
PrintButItFailedText: ; 139d2 (4:79d2)
ld hl, PrintButItFailedText_
-Func_139d5: ; 139d5 (4:79d5)
+CallBankF: ; 139d5 (4:79d5)
ld b, BANK(PrintButItFailedText_)
jp Bankswitch
@@ -311,15 +313,15 @@
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 @@
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 @@
ld [hl], a
ret
-Func_13a43: ; 13a43 (4:7a43)
+ResetStatMods: ; 13a43 (4:7a43)
ld b, $8
.loop
ld [hli], a
@@ -371,7 +373,7 @@
jr nz, .loop
ret
-Func_13a4a: ; 13a4a (4:7a4a)
+ResetStats: ; 13a4a (4:7a4a)
ld b, $8
.loop
ld a, [hli]
--- a/engine/battle/5.asm
+++ b/engine/battle/5.asm
@@ -4,7 +4,7 @@
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 @@
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 @@
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)
--- a/engine/battle/9.asm
+++ b/engine/battle/9.asm
@@ -1,4 +1,6 @@
-Func_27d6b: ; 27d6b (9:7d6b)
+; [wd0b5] = pokemon ID
+; hl = dest addr
+PrintMonType: ; 27d6b (9:7d6b)
call GetPredefRegisters
push hl
call GetMonHeader
@@ -5,31 +7,37 @@
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 @@
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_
--- a/engine/battle/a.asm
+++ b/engine/battle/a.asm
@@ -21,7 +21,7 @@
bit Seeded, [hl]
jr nz, .asm_2bee7
set Seeded, [hl]
- callab Func_3fba8
+ callab PlayCurrentMoveAnimation
ld hl, WasSeededText ; $7ef2
jp PrintText
.asm_2bee7
--- a/engine/battle/c.asm
+++ b/engine/battle/c.asm
@@ -8,7 +8,7 @@
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
--- a/engine/battle/core.asm
+++ b/engine/battle/core.asm
@@ -2541,13 +2541,13 @@
.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 @@
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 @@
call PrintNumber
call GetCurrentMove
hlCoord 2, 10
- predef Func_27d98
+ predef PrintMoveType
.moveDisabled
ld a, $1
ld [H_AUTOBGTRANSFERENABLED], a
@@ -6814,7 +6814,7 @@
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 @@
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 @@
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 @@
ld [hl], a
ld [wd11e], a
call GetMoveName
- call Func_3fba8
+ call PlayCurrentMoveAnimation
ld hl, MimicLearnedMoveText
jp PrintText
.asm_3fa74
@@ -8467,7 +8467,7 @@
jp Bankswitch
SplashEffect: ; 3fa84 (f:7a84)
- call Func_3fba8
+ call PlayCurrentMoveAnimation
jp PrintNoEffectText
DisableEffect: ; 3fa8a (f:7a8a)
@@ -8662,15 +8662,15 @@
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
--- a/engine/battle/e_2.asm
+++ b/engine/battle/e_2.asm
@@ -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,7 +16,7 @@
inc hl
ld a, [de]
sbc [hl]
- jp z, Func_3ba97
+ jp z, .failed
ld a, b
cp REST
jr nz, .asm_3ba37
@@ -23,20 +23,20 @@
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 @@
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 @@
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,27 +118,27 @@
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
@@ -146,10 +145,10 @@
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 @@
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 @@
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 @@
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 @@
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,16 +269,16 @@
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
@@ -286,7 +285,7 @@
.moveFailed
ld c, $32
call DelayFrames
- ld hl, PrintButItFailedText_ ; $7b53
+ ld hl, PrintButItFailedText_
jp BankswitchEtoF
LightScreenProtectedText: ; 3bbd7 (e:7bd7)
--- a/engine/cable_club.asm
+++ b/engine/cable_club.asm
@@ -338,10 +338,10 @@
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 @@
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
--- a/engine/hall_of_fame.asm
+++ b/engine/hall_of_fame.asm
@@ -170,7 +170,7 @@
ld a, [wWhichTrade] ; wWhichTrade
ld [wd0b5], a
hlCoord 3, 9
- predef Func_27d6b
+ predef PrintMonType
ld a, [wWhichTrade] ; wWhichTrade
jp PlayCry
--- a/engine/hp_bar.asm
+++ b/engine/hp_bar.asm
@@ -211,7 +211,7 @@
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
--- a/engine/items/items.asm
+++ b/engine/items/items.asm
@@ -919,15 +919,15 @@
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 @@
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]
--- a/engine/learn_move.asm
+++ b/engine/learn_move.asm
@@ -126,13 +126,13 @@
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 @@
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
--- a/engine/menu/party_menu.asm
+++ b/engine/menu/party_menu.asm
@@ -88,14 +88,14 @@
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
--- a/engine/menu/status_screen.asm
+++ b/engine/menu/status_screen.asm
@@ -82,7 +82,7 @@
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
--- a/engine/overworld/healing_machine.asm
+++ b/engine/overworld/healing_machine.asm
@@ -48,7 +48,7 @@
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 @@
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)
--- a/engine/predefs.asm
+++ b/engine/predefs.asm
@@ -127,7 +127,7 @@
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 @@
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
--- a/engine/save.asm
+++ b/engine/save.asm
@@ -346,10 +346,10 @@
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 @@
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
--- a/home.asm
+++ b/home.asm
@@ -4046,7 +4046,7 @@
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 @@
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
--- a/home/text.asm
+++ b/home/text.asm
@@ -62,7 +62,7 @@
cp $4E
jr nz,.next
ld bc,$0028
- ld a,[$FFF6]
+ ld a,[hFlags_0xFFF6]
bit 2,a
jr z,.next2
ld bc,$14
--- a/hram.asm
+++ b/hram.asm
@@ -151,5 +151,8 @@
H_WHOSETURN EQU $FFF3 ; 0 on player’s turn, 1 on enemy’s turn
+; bit 0: draw HP fraction to the right of bar instead of below (for party menu)
+hFlags_0xFFF6 EQU $FFF6
+
hJoyInput EQU $FFF8
--- a/main.asm
+++ b/main.asm
@@ -126,7 +126,7 @@
.copyMonData
ld de, wcf98
- ld bc, 44
+ ld bc, wPartyMon2 - wPartyMon1
jp CopyData
--- a/wram.asm
+++ b/wram.asm
@@ -824,6 +824,7 @@
wcfbe:: ds 2
wcfc0:: ds 2
wcfc2:: ds 2
+
wcfc4:: ds 1
wWalkCounter:: ; cfc5