shithub: pokered

Download patch

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