ref: f2efda1f68230ec917cd148759bb9798a75a8f60
parent: 022f9e6af1570f071eaf85cf65d50cb29ddc34f2
author: Rangi <remy.oukaour+rangi42@gmail.com>
date: Mon Jun 29 08:25:58 EDT 2020
Identify more unnamed labels
--- a/audio/cries.asm
+++ b/audio/cries.asm
@@ -221,9 +221,9 @@
Cry_Magcargo_Ch8:
noise_note 2, 14, 8, 59
-Cry_Magcargo_branch_f2ef5:
+.loop:
noise_note 1, 15, 1, 78
- sound_loop 5, Cry_Magcargo_branch_f2ef5
+ sound_loop 5, .loop
noise_note 2, 13, 8, 63
noise_note 20, 12, 2, 95
sound_ret
@@ -348,7 +348,6 @@
Cry_Togepi_Ch5:
pitch_offset 2
Cry_Togepi_Ch6:
-Cry_Togetic_branch_f3022:
duty_cycle_pattern 1, 1, 0, 2
square_note 4, 15, 1, 1942
square_note 4, 15, 1, 1837
@@ -359,7 +358,7 @@
Cry_Togetic_Ch5:
pitch_offset 2
Cry_Togetic_Ch6:
- sound_call Cry_Togetic_branch_f3022
+ sound_call Cry_Togepi_Ch6
sound_loop 2, Cry_Togetic_Ch6
square_note 14, 0, 0, 0
square_note 8, 15, 2, 1986
@@ -436,12 +435,12 @@
Cry_Hoothoot_Ch6:
duty_cycle_pattern 0, 2, 0, 2
-Cry_Hoothoot_branch_f30fb:
+.loop1:
square_note 2, 10, 1, 1536
- sound_loop 3, Cry_Hoothoot_branch_f30fb
-Cry_Hoothoot_branch_f3103:
+ sound_loop 3, .loop1
+.loop2:
square_note 2, 10, 1, 1584
- sound_loop 4, Cry_Hoothoot_branch_f3103
+ sound_loop 4, .loop2
square_note 4, 10, 2, 1588
square_note 4, 9, 1, 1592
sound_ret
@@ -456,11 +455,11 @@
Cry_Sentret_Ch5:
pitch_offset 32
duty_cycle 0
- sound_jump Cry_Sentret_branch_f312b
+ sound_jump Cry_Sentret_Ch6.body
Cry_Sentret_Ch6:
duty_cycle_pattern 0, 1, 2, 3
-Cry_Sentret_branch_f312b:
+.body:
square_note 8, 3, -1, 1837
square_note 8, 15, 1, 1824
sound_ret
@@ -473,12 +472,11 @@
Cry_Mareep_Ch5:
pitch_offset 32
duty_cycle 0
- sound_jump Cry_Mareep_branch_f3145
+ sound_jump Cry_Mareep_Ch6.body
Cry_Mareep_Ch6:
duty_cycle_pattern 0, 0, 0, 1
-Cry_Mareep_branch_f3145:
-Cry_Gligar_branch_f3145:
+.body:
square_note 4, 3, -2, 1853
square_note 6, 15, 8, 1890
square_note 6, 15, 8, 1888
@@ -490,14 +488,14 @@
Cry_Cyndaquil_Ch6:
duty_cycle 2
square_note 8, 2, -7, 263
-Cry_Cyndaquil_branch_f315f:
+.loop1:
square_note 0, 14, 1, 1155
square_note 0, 5, 1, 1102
- sound_loop 4, Cry_Cyndaquil_branch_f315f
-Cry_Cyndaquil_branch_f316b:
+ sound_loop 4, .loop1
+.loop2:
square_note 0, 14, 1, 986
square_note 1, 5, 1, 786
- sound_loop 4, Cry_Cyndaquil_branch_f316b
+ sound_loop 4, .loop2
sound_ret
Cry_Gligar_Ch8:
@@ -524,16 +522,16 @@
Cry_Gligar_Ch5:
duty_cycle_pattern 2, 2, 0, 2
- sound_jump Cry_Gligar_branch_f3145
+ sound_jump Cry_Mareep_Ch6.body
Cry_Girafarig_Ch5:
duty_cycle 1
pitch_offset 4
- sound_jump Cry_Girafarig_branch_f31af
+ sound_jump Cry_Girafarig_Ch6.body
Cry_Girafarig_Ch6:
duty_cycle_pattern 1, 0, 0, 1
-Cry_Girafarig_branch_f31af:
+.body:
square_note 4, 6, 8, 1880
square_note 2, 14, 8, 1888
square_note 2, 14, 8, 1895
@@ -568,11 +566,11 @@
Cry_Ledyba_Ch5:
pitch_offset 2
duty_cycle 2
- sound_jump Cry_Ledyba_branch_f3202
+ sound_jump Cry_Ledyba_Ch6.body
Cry_Ledyba_Ch6:
duty_cycle_pattern 0, 0, 0, 1
-Cry_Ledyba_branch_f3202:
+.body:
square_note 3, 15, 8, 1937
square_note 3, 13, 8, 1933
square_note 2, 0, 0, 0
@@ -631,24 +629,24 @@
Cry_Teddiursa_Ch5:
Cry_Typhlosion_Ch5:
duty_cycle_pattern 0, 1, 0, 2
-Cry_Teddiursa_branch_f3286:
+.loop1:
square_note 3, 12, 1, 1937
- sound_loop 3, Cry_Teddiursa_branch_f3286
-Cry_Teddiursa_branch_f328e:
+ sound_loop 3, .loop1
+.loop2:
square_note 3, 13, 1, 1201
- sound_loop 6, Cry_Teddiursa_branch_f328e
-Cry_Teddiursa_branch_f3296:
+ sound_loop 6, .loop2
+.loop3:
square_note 1, 13, 1, 1169
square_note 1, 11, 1, 1105
- sound_loop 6, Cry_Teddiursa_branch_f3296
-Cry_Teddiursa_branch_f32a2:
+ sound_loop 6, .loop3
+.loop4:
square_note 1, 10, 3, 1137
square_note 1, 8, 1, 1089
- sound_loop 6, Cry_Teddiursa_branch_f32a2
-Cry_Teddiursa_branch_f32ae:
+ sound_loop 6, .loop4
+.loop5:
square_note 1, 4, 1, 1057
square_note 1, 2, 1, 1025
- sound_loop 4, Cry_Teddiursa_branch_f32ae
+ sound_loop 4, .loop5
sound_ret
Cry_Teddiursa_Ch6:
@@ -672,12 +670,11 @@
Cry_Natu_Ch5:
duty_cycle_pattern 3, 1, 3, 2
-Cry_Mantine_branch_f32e9:
-Cry_Sunflora_branch_f32e9:
+.body1:
square_note 4, 15, 8, 1969
square_note 4, 15, 8, 1968
square_note 4, 4, 8, 1967
-Cry_Mantine_branch_f32f5:
+.body2:
square_note 4, 15, 8, 1970
square_note 4, 15, 8, 1971
square_note 4, 4, 8, 1972
@@ -685,12 +682,12 @@
Cry_Natu_Ch6:
Cry_Sunflora_Ch6:
-Cry_Mantine_branch_f3302:
+.body1:
duty_cycle_pattern 3, 3, 0, 2
square_note 4, 15, 8, 1970
square_note 4, 15, 8, 1969
square_note 4, 2, 8, 1968
-Cry_Mantine_branch_f3310:
+.body2:
square_note 4, 15, 8, 1972
square_note 4, 15, 8, 1974
square_note 4, 4, 8, 1976
@@ -698,11 +695,11 @@
Cry_Natu_Ch8:
Cry_Sunflora_Ch8:
-Cry_Mantine_branch_f331d:
+.body1:
noise_note 4, 8, 8, 5
noise_note 4, 8, 8, 4
noise_note 4, 3, 8, 3
-Cry_Mantine_branch_f3326:
+.body2:
noise_note 4, 8, 8, 5
noise_note 4, 8, 8, 4
noise_note 4, 8, 7, 4
@@ -715,30 +712,30 @@
Cry_Sunflora_Ch5:
duty_cycle 0
- sound_jump Cry_Sunflora_branch_f32e9
+ sound_jump Cry_Natu_Ch5.body1
Cry_Mantine_Ch5:
duty_cycle 0
- sound_call Cry_Mantine_branch_f32e9
- sound_call Cry_Mantine_branch_f32f5
+ sound_call Cry_Natu_Ch5.body1
+ sound_call Cry_Natu_Ch5.body2
sound_ret
Cry_Mantine_Ch6:
- sound_call Cry_Mantine_branch_f3302
- sound_call Cry_Mantine_branch_f3310
+ sound_call Cry_Sunflora_Ch6.body1
+ sound_call Cry_Sunflora_Ch6.body2
sound_ret
Cry_Mantine_Ch8:
- sound_call Cry_Mantine_branch_f331d
- sound_call Cry_Mantine_branch_f3326
+ sound_call Cry_Sunflora_Ch8.body1
+ sound_call Cry_Sunflora_Ch8.body2
sound_ret
Cry_Ampharos_Ch5:
duty_cycle_pattern 3, 1, 3, 2
-Cry_Ampharos_branch_f3355:
+.loop:
square_note 1, 12, 1, 1312
square_note 1, 10, 1, 1056
- sound_loop 4, Cry_Ampharos_branch_f3355
+ sound_loop 4, .loop
duty_cycle 0
square_note 4, 7, 8, 1888
square_note 4, 7, 8, 1840
@@ -833,15 +830,15 @@
Cry_Aipom_Ch6:
duty_cycle_pattern 0, 2, 1, 3
-Cry_Aipom_branch_f3443:
+.loop1:
square_note 1, 15, 1, 1972
- sound_loop 8, Cry_Aipom_branch_f3443
-Cry_Aipom_branch_f344b:
+ sound_loop 8, .loop1
+.loop2:
square_note 1, 12, 1, 1936
- sound_loop 3, Cry_Aipom_branch_f344b
-Cry_Aipom_branch_f3453:
+ sound_loop 3, .loop2
+.loop3:
square_note 1, 11, 1, 1933
- sound_loop 2, Cry_Aipom_branch_f3453
+ sound_loop 2, .loop3
square_note 16, 9, 2, 1941
sound_ret
--- a/audio/sfx.asm
+++ b/audio/sfx.asm
@@ -4496,9 +4496,9 @@
Sfx_Supersonic_Ch5:
duty_cycle 2
square_note 15, 3, -7, 1984
-Sfx_Supersonic_branch_f21ef:
+.loop:
square_note 15, 13, -7, 1984
- sound_loop 4, Sfx_Supersonic_branch_f21ef
+ sound_loop 4, .loop
square_note 15, 13, 1, 1984
sound_ret
@@ -4505,9 +4505,9 @@
Sfx_Supersonic_Ch6:
duty_cycle_pattern 2, 3, 0, 3
square_note 15, 2, -7, 1992
-Sfx_Supersonic_branch_f2202:
+.loop:
square_note 15, 12, -7, 1991
- sound_loop 4, Sfx_Supersonic_branch_f2202
+ sound_loop 4, .loop
square_note 15, 12, 1, 1992
sound_ret
@@ -4839,10 +4839,10 @@
square_note 2, 15, 1, 1984
square_note 2, 15, 1, 1792
square_note 2, 15, 1, 2000
-Sfx_HyperBeam_branch_f24f8:
+.loop:
square_note 2, 15, 1, 1792
square_note 2, 15, 1, 2016
- sound_loop 12, Sfx_HyperBeam_branch_f24f8
+ sound_loop 12, .loop
square_note 15, 15, 1, 1792
sound_ret
@@ -4859,10 +4859,10 @@
square_note 2, 15, 1, 1985
square_note 2, 15, 1, 1793
square_note 2, 15, 1, 2001
-Sfx_HyperBeam_branch_f2537:
+.loop:
square_note 2, 15, 1, 1793
square_note 2, 15, 1, 2017
- sound_loop 12, Sfx_HyperBeam_branch_f2537
+ sound_loop 12, .loop
square_note 15, 15, 1, 1793
sound_ret
@@ -4966,10 +4966,10 @@
sound_ret
Sfx_Unknown5F_Ch5:
-Sfx_Unknown5F_branch_f2617:
+.loop:
square_note 2, 15, 7, 1537
square_note 2, 15, 7, 1793
- sound_loop 8, Sfx_Unknown5F_Ch5
+ sound_loop 8, .loop
sound_ret
Sfx_Unknown5F_Ch6:
@@ -4976,7 +4976,7 @@
square_note 1, 15, 7, 65535
square_note 2, 15, 7, 1538
square_note 2, 15, 7, 1794
- sound_loop 8, Sfx_Unknown5F_branch_f2617
+ sound_loop 8, Sfx_Unknown5F_Ch5.loop
sound_ret
Sfx_Fanfare2_Ch5:
@@ -5160,9 +5160,9 @@
Sfx_Elevator_Ch5:
duty_cycle 2
pitch_sweep 5, -2
-Sfx_Elevator_branch_f2726:
+.loop:
square_note 2, 15, 1, 768
- sound_loop 48, Sfx_Elevator_branch_f2726
+ sound_loop 48, .loop
pitch_sweep 0, 8
duty_cycle 2
square_note 15, 15, 3, 1840
--- a/constants/pokemon_data_constants.asm
+++ b/constants/pokemon_data_constants.asm
@@ -96,8 +96,8 @@
MON_SPD EQUS "(wPartyMon1Speed - wPartyMon1)"
MON_SAT EQUS "(wPartyMon1SpclAtk - wPartyMon1)"
MON_SDF EQUS "(wPartyMon1SpclDef - wPartyMon1)"
-BOXMON_STRUCT_LENGTH EQUS "(wPartyMon1End - wPartyMon1)"
-PARTYMON_STRUCT_LENGTH EQUS "(wPartyMon1StatsEnd - wPartyMon1)"
+BOXMON_STRUCT_LENGTH EQUS "(wPartyMon1BoxEnd - wPartyMon1)"
+PARTYMON_STRUCT_LENGTH EQUS "(wPartyMon1StructEnd - wPartyMon1)"
NICKNAMED_MON_STRUCT_LENGTH EQUS "(PARTYMON_STRUCT_LENGTH + MON_NAME_LENGTH)"
REDMON_STRUCT_LENGTH EQU 44
--- a/engine/battle/ai/items.asm
+++ b/engine/battle/ai/items.asm
@@ -711,7 +711,7 @@
text_far _EnemyWithdrewText
text_end
-Function384d5: ; This appears to be unused
+EnemyUsedFullHealRed: ; unreferenced
call AIUsedItemSound
call AI_HealStatus
ld a, FULL_HEAL_RED ; X_SPEED
@@ -758,7 +758,7 @@
ld a, DIRE_HIT
jp PrintText_UsedItemOn_AND_AIUpdateHUD
-Function3851e: ; This appears to be unused
+Function3851e: ; unreferenced
ldh [hDivisor], a
ld hl, wEnemyMonMaxHP
ld a, [hli]
--- a/engine/battle/ai/move.asm
+++ b/engine/battle/ai/move.asm
@@ -50,7 +50,7 @@
.CheckMovePP:
inc b
ld a, b
- cp wEnemyMonMovesEnd - wEnemyMonMoves + 1
+ cp NUM_MOVES + 1
jr z, .ApplyLayers
inc hl
ld a, [de]
@@ -119,7 +119,7 @@
.DecrementScores:
ld hl, wBuffer1
ld de, wEnemyMonMoves
- ld c, wEnemyMonMovesEnd - wEnemyMonMoves
+ ld c, NUM_MOVES
.DecrementNextScore:
; If the enemy has no moves, this will infinite.
--- a/engine/battle/ai/scoring.asm
+++ b/engine/battle/ai/scoring.asm
@@ -8,7 +8,7 @@
ld hl, wBuffer1 - 1
ld de, wEnemyMonMoves
- ld b, wEnemyMonMovesEnd - wEnemyMonMoves + 1
+ ld b, NUM_MOVES + 1
.checkmove
dec b
ret z
@@ -75,7 +75,7 @@
ld hl, wBuffer1 - 1
ld de, wEnemyMonMoves
- ld b, wEnemyMonMovesEnd - wEnemyMonMoves + 1
+ ld b, NUM_MOVES + 1
.checkmove
dec b
ret z
@@ -149,7 +149,7 @@
ld hl, wBuffer1 - 1
ld de, wEnemyMonMoves
- ld b, wEnemyMonMovesEnd - wEnemyMonMoves + 1
+ ld b, NUM_MOVES + 1
.checkmove
dec b
ret z
@@ -195,15 +195,15 @@
ld a, [wEnemyMoveStruct + MOVE_TYPE]
ld d, a
ld hl, wEnemyMonMoves
- ld b, wEnemyMonMovesEnd - wEnemyMonMoves + 1
+ ld b, NUM_MOVES + 1
ld c, 0
.checkmove2
dec b
- jr z, .asm_38693
+ jr z, .movesdone
ld a, [hli]
and a
- jr z, .asm_38693
+ jr z, .movesdone
call AIGetEnemyMove
ld a, [wEnemyMoveStruct + MOVE_TYPE]
@@ -211,12 +211,12 @@
jr z, .checkmove2
ld a, [wEnemyMoveStruct + MOVE_POWER]
and a
- jr nz, .asm_38692
+ jr nz, .damaging
jr .checkmove2
-.asm_38692
+.damaging
ld c, a
-.asm_38693
+.movesdone
ld a, c
pop bc
pop de
@@ -236,7 +236,7 @@
ld hl, wBuffer1 - 1
ld de, wEnemyMonMoves
- ld b, wEnemyMonMovesEnd - wEnemyMonMoves + 1
+ ld b, NUM_MOVES + 1
.checkmove
dec b
ret z
@@ -263,7 +263,7 @@
ld hl, wBuffer1
ld de, wEnemyMonMoves
- ld b, wEnemyMonMovesEnd - wEnemyMonMoves + 1
+ ld b, NUM_MOVES + 1
.checkmove
dec b
ret z
@@ -279,7 +279,7 @@
call AIGetEnemyMove
ld a, [wEnemyMoveStruct + MOVE_EFFECT]
- ld hl, .table_386f2
+ ld hl, AI_Smart_EffectHandlers
ld de, 3
call IsInArray
@@ -306,7 +306,7 @@
inc hl
jr .checkmove
-.table_386f2
+AI_Smart_EffectHandlers:
dbw EFFECT_SLEEP, AI_Smart_Sleep
dbw EFFECT_LEECH_HIT, AI_Smart_LeechHit
dbw EFFECT_SELFDESTRUCT, AI_Smart_Selfdestruct
@@ -395,13 +395,13 @@
ld b, EFFECT_DREAM_EATER
call AIHasMoveEffect
- jr c, .asm_387f0
+ jr c, .encourage
ld b, EFFECT_NIGHTMARE
call AIHasMoveEffect
ret nc
-.asm_387f0
+.encourage
call AI_50_50
ret c
dec [hl]
@@ -418,7 +418,7 @@
; 60% chance to discourage this move if not very effective.
ld a, [wTypeMatchup]
cp EFFECTIVE
- jr c, .asm_38815
+ jr c, .discourage
; Do nothing if effectiveness is neutral.
ret z
@@ -434,7 +434,7 @@
dec [hl]
ret
-.asm_38815
+.discourage
call Random
cp 39 percent + 1
ret c
@@ -471,7 +471,7 @@
jr c, .asm_38875
ld hl, wEnemyMonMoves
- ld c, wEnemyMonMovesEnd - wEnemyMonMoves + 1
+ ld c, NUM_MOVES + 1
.asm_3884f
dec c
jr z, .asm_38877
@@ -520,7 +520,7 @@
push hl
ld hl, wBuffer1 - 1
ld de, wEnemyMonMoves
- ld c, wEnemyMonMovesEnd - wEnemyMonMoves + 1
+ ld c, NUM_MOVES + 1
.asm_3888b
inc hl
@@ -553,18 +553,18 @@
push hl
farcall FindAliveEnemyMons
pop hl
- jr nc, .asm_388b7
+ jr nc, .notlastmon
; ...greatly discourage this move unless this is the player's last Pokemon too.
push hl
call AICheckLastPlayerMon
pop hl
- jr nz, .asm_388c6
+ jr nz, .discourage
-.asm_388b7
+.notlastmon
; Greatly discourage this move if enemy's HP is above 50%.
call AICheckEnemyHalfHP
- jr c, .asm_388c6
+ jr c, .discourage
; Do nothing if enemy's HP is below 25%.
call AICheckEnemyQuarterHP
@@ -576,7 +576,7 @@
cp 8 percent
ret c
-.asm_388c6
+.discourage
inc [hl]
inc [hl]
inc [hl]
@@ -607,7 +607,7 @@
; ...greatly encourage this move if player is badly poisoned.
ld a, [wPlayerSubStatus5]
bit SUBSTATUS_TOXIC, a
- jr nz, .asm_388ef
+ jr nz, .encourage
; ...70% chance to greatly encourage this move if player is not badly poisoned.
call Random
@@ -614,7 +614,7 @@
cp 70 percent
jr nc, .asm_38911
-.asm_388ef
+.encourage
dec [hl]
dec [hl]
ret
@@ -628,7 +628,7 @@
; If enemy's HP is above 25% but not full, 4% chance to greatly encourage this move.
call Random
cp 4 percent
- jr c, .asm_388ef
+ jr c, .encourage
; If enemy's HP is between 25% and 50%,...
call AICheckEnemyHalfHP
@@ -636,7 +636,7 @@
; If enemy's HP is above 50% but not full, 20% chance to greatly encourage this move.
call AI_80_20
- jr c, .asm_388ef
+ jr c, .encourage
jr .asm_38911
.asm_3890a
@@ -672,11 +672,11 @@
; Greatly encourage this move if the player is in the middle of Fury Cutter or Rollout.
ld a, [wPlayerFuryCutterCount]
and a
- jr nz, .asm_388ef
+ jr nz, .encourage
ld a, [wPlayerSubStatus1]
bit SUBSTATUS_ROLLOUT, a
- jr nz, .asm_388ef
+ jr nz, .encourage
.asm_38936
inc [hl]
@@ -709,7 +709,7 @@
; ...enemy's accuracy level has been lowered three or more stages
ld a, [wEnemyAccLevel]
cp BASE_STAT_LEVEL - 2
- jr c, .asm_38954
+ jr c, .encourage
; ...or player's evasion level has been raised three or more stages.
ld a, [wPlayerEvaLevel]
@@ -716,7 +716,7 @@
cp BASE_STAT_LEVEL + 3
ret c
-.asm_38954
+.encourage
call AI_80_20
ret c
@@ -728,7 +728,7 @@
; If the player did not use any move last turn...
ld a, [wLastPlayerCounterMove]
and a
- jr nz, .asm_38968
+ jr nz, .usedmove
; ...do nothing if enemy is slower than player
call AICompareSpeed
@@ -738,7 +738,7 @@
jp AIDiscourageMove
; If the player did use a move last turn...
-.asm_38968
+.usedmove
push hl
ld hl, UsefulMoves
ld de, 1
@@ -777,7 +777,7 @@
; ...greatly encourage this move if player is badly poisoned.
ld a, [wPlayerSubStatus5]
bit SUBSTATUS_TOXIC, a
- jr nz, .asm_3899d
+ jr nz, .encourage
; ...70% chance to greatly encourage this move if player is not badly poisoned.
call Random
@@ -784,7 +784,7 @@
cp 70 percent
jr nc, .asm_389bf
-.asm_3899d
+.encourage
dec [hl]
dec [hl]
ret
@@ -798,7 +798,7 @@
; If player's HP is above 25% but not full, 4% chance to greatly encourage this move.
call Random
cp 4 percent
- jr c, .asm_3899d
+ jr c, .encourage
; If player's HP is between 25% and 50%,...
call AICheckPlayerHalfHP
@@ -806,7 +806,7 @@
; If player's HP is above 50% but not full, 20% chance to greatly encourage this move.
call AI_80_20
- jr c, .asm_3899d
+ jr c, .encourage
jr .asm_389bf
; ...50% chance to greatly discourage this move.
@@ -838,11 +838,11 @@
; Greatly encourage this move if the player is in the middle of Fury Cutter or Rollout.
ld a, [wPlayerFuryCutterCount]
and a
- jr nz, .asm_3899d
+ jr nz, .encourage
ld a, [wPlayerSubStatus1]
bit SUBSTATUS_ROLLOUT, a
- jr nz, .asm_3899d
+ jr nz, .encourage
.asm_389e4
inc [hl]
@@ -874,26 +874,26 @@
push hl
ld hl, wEnemyAtkLevel
ld c, NUM_LEVEL_STATS
-.asm_389fb
+.enemystatsloop
dec c
- jr z, .asm_38a05
+ jr z, .enemystatsdone
ld a, [hli]
cp BASE_STAT_LEVEL - 2
- jr c, .asm_38a12
- jr .asm_389fb
+ jr c, .encourage
+ jr .enemystatsloop
; 85% chance to encourage this move if any of player's stat levels is higher than +2.
-.asm_38a05
+.enemystatsdone
ld hl, wPlayerAtkLevel
- ld c, $8
-.asm_38a0a
+ ld c, NUM_LEVEL_STATS
+.playerstatsloop
dec c
- jr z, .asm_38a1b
+ jr z, .discourage
ld a, [hli]
cp BASE_STAT_LEVEL + 3
- jr c, .asm_38a0a
+ jr c, .playerstatsloop
-.asm_38a12
+.encourage
pop hl
call Random
cp 16 percent
@@ -904,7 +904,7 @@
; Discourage this move if neither:
; Any of enemy's stat levels is lower than -2.
; Any of player's stat levels is higher than +2.
-.asm_38a1b
+.discourage
pop hl
inc [hl]
ret
@@ -945,13 +945,13 @@
; Do nothing otherwise.
call AICheckEnemyQuarterHP
- jr nc, .asm_38a45
+ jr nc, .encourage
call AICheckEnemyHalfHP
ret nc
inc [hl]
ret
-.asm_38a45
+.encourage
call Random
cp 10 percent
ret c
@@ -1000,31 +1000,31 @@
; 50% chance to discourage this move if the player is already trapped.
ld a, [wPlayerWrapCount]
and a
- jr nz, .asm_38a8b
+ jr nz, .discourage
; 50% chance to greatly encourage this move if player is either
; badly poisoned, in love, identified, stuck in Rollout, or has a Nightmare.
ld a, [wPlayerSubStatus5]
bit SUBSTATUS_TOXIC, a
- jr nz, .asm_38a91
+ jr nz, .encourage
ld a, [wPlayerSubStatus1]
and 1 << SUBSTATUS_IN_LOVE | 1 << SUBSTATUS_ROLLOUT | 1 << SUBSTATUS_IDENTIFIED | 1 << SUBSTATUS_NIGHTMARE
- jr nz, .asm_38a91
+ jr nz, .encourage
; Else, 50% chance to greatly encourage this move if it's the player's Pokemon first turn.
ld a, [wPlayerTurnsTaken]
and a
- jr z, .asm_38a91
+ jr z, .encourage
; 50% chance to discourage this move otherwise.
-.asm_38a8b
+.discourage
call AI_50_50
ret c
inc [hl]
ret
-.asm_38a91
+.encourage
call AICheckEnemyQuarterHP
ret nc
call AI_50_50
@@ -1092,10 +1092,10 @@
ret c
call Random
cp 10 percent
- jr c, .asm_38ae7
+ jr c, .skipdiscourage
inc [hl]
-.asm_38ae7
+.skipdiscourage
; Discourage again if player's HP is below 25%.
call AICheckPlayerQuarterHP
ret c
@@ -1105,12 +1105,12 @@
AI_Smart_SpDefenseUp2:
; Discourage this move if enemy's HP is lower than 50%.
call AICheckEnemyHalfHP
- jr nc, .asm_38b10
+ jr nc, .discourage
; Discourage this move if enemy's special defense level is higher than +3.
ld a, [wEnemySDefLevel]
cp BASE_STAT_LEVEL + 4
- jr nc, .asm_38b10
+ jr nc, .discourage
; 80% chance to greatly encourage this move if
; enemy's Special Defense level is lower than +2, and the player is of a special type.
@@ -1119,12 +1119,12 @@
ld a, [wBattleMonType1]
cp SPECIAL
- jr nc, .asm_38b09
+ jr nc, .encourage
ld a, [wBattleMonType2]
cp SPECIAL
ret c
-.asm_38b09
+.encourage
call AI_80_20
ret c
dec [hl]
@@ -1131,7 +1131,7 @@
dec [hl]
ret
-.asm_38b10
+.discourage
inc [hl]
ret
@@ -1164,7 +1164,7 @@
AI_Smart_Paralyze:
; 50% chance to discourage this move if player's HP is below 25%.
call AICheckPlayerQuarterHP
- jr nc, .asm_38b3a
+ jr nc, .discourage
; 80% chance to greatly encourage this move
; if enemy is slower than player and its HP is above 25%.
@@ -1178,7 +1178,7 @@
dec [hl]
ret
-.asm_38b3a
+.discourage
call AI_50_50
ret c
inc [hl]
@@ -1218,7 +1218,7 @@
AI_Smart_HyperBeam:
call AICheckEnemyHalfHP
- jr c, .asm_38b72
+ jr c, .discourage
; 50% chance to encourage this move if enemy's HP is below 25%.
call AICheckEnemyQuarterHP
@@ -1228,7 +1228,7 @@
dec [hl]
ret
-.asm_38b72
+.discourage
; If enemy's HP is above 50%, discourage this move at random
call Random
cp 16 percent
@@ -1242,16 +1242,16 @@
AI_Smart_Rage:
ld a, [wEnemySubStatus4]
bit SUBSTATUS_RAGE, a
- jr z, .asm_38b9b
+ jr z, .notbuilding
; If enemy's Rage is building, 50% chance to encourage this move.
call AI_50_50
- jr c, .asm_38b8c
+ jr c, .skipencourage
dec [hl]
; Encourage this move based on Rage's counter.
-.asm_38b8c
+.skipencourage
ld a, [wEnemyRageCounter]
cp 2
ret c
@@ -1262,10 +1262,10 @@
dec [hl]
ret
-.asm_38b9b
+.notbuilding
; If enemy's Rage is not building, discourage this move if enemy's HP is below 50%.
call AICheckEnemyHalfHP
- jr nc, .asm_38ba6
+ jr nc, .discourage
; 50% chance to encourage this move otherwise.
call AI_80_20
@@ -1273,7 +1273,7 @@
dec [hl]
ret
-.asm_38ba6
+.discourage
inc [hl]
ret
@@ -1332,66 +1332,66 @@
ld c, NUM_MOVES
ld b, 0
-.asm_38bf9
+.playermoveloop
ld a, [hli]
and a
- jr z, .asm_38c0e
+ jr z, .skipmove
call AIGetEnemyMove
ld a, [wEnemyMoveStruct + MOVE_POWER]
and a
- jr z, .asm_38c0e
+ jr z, .skipmove
ld a, [wEnemyMoveStruct + MOVE_TYPE]
cp SPECIAL
- jr nc, .asm_38c0e
+ jr nc, .skipmove
inc b
-.asm_38c0e
+.skipmove
dec c
- jr nz, .asm_38bf9
+ jr nz, .playermoveloop
pop hl
ld a, b
and a
- jr z, .asm_38c39
+ jr z, .discourage
- cp $3
- jr nc, .asm_38c30
+ cp 3
+ jr nc, .encourage
ld a, [wLastPlayerCounterMove]
and a
- jr z, .asm_38c38
+ jr z, .done
call AIGetEnemyMove
ld a, [wEnemyMoveStruct + MOVE_POWER]
and a
- jr z, .asm_38c38
+ jr z, .done
ld a, [wEnemyMoveStruct + MOVE_TYPE]
cp SPECIAL
- jr nc, .asm_38c38
+ jr nc, .done
-.asm_38c30
+.encourage
call Random
cp 39 percent + 1
- jr c, .asm_38c38
+ jr c, .done
dec [hl]
-.asm_38c38
+.done
ret
-.asm_38c39
+.discourage
inc [hl]
ret
AI_Smart_Encore:
call AICompareSpeed
- jr nc, .asm_38c81
+ jr nc, .discourage
ld a, [wLastPlayerMove]
and a
@@ -1401,7 +1401,7 @@
ld a, [wEnemyMoveStruct + MOVE_POWER]
and a
- jr z, .asm_38c68
+ jr z, .weakmove
push hl
ld a, [wEnemyMoveStruct + MOVE_TYPE]
@@ -1411,13 +1411,13 @@
pop hl
ld a, [wTypeMatchup]
cp EFFECTIVE
- jr nc, .asm_38c68
+ jr nc, .weakmove
and a
ret nz
- jr .asm_38c78
+ jr .encourage
-.asm_38c68
+.weakmove
push hl
ld a, [wLastPlayerCounterMove]
ld hl, EncoreMoves
@@ -1424,9 +1424,9 @@
ld de, 1
call IsInArray
pop hl
- jr nc, .asm_38c81
+ jr nc, .discourage
-.asm_38c78
+.encourage
call Random
cp 28 percent - 1
ret c
@@ -1434,7 +1434,7 @@
dec [hl]
ret
-.asm_38c81
+.discourage
inc [hl]
inc [hl]
inc [hl]
@@ -1470,7 +1470,7 @@
ld a, [wEnemyMonStatus]
and SLP
cp 1
- jr z, .asm_38cc7
+ jr z, .discourage
dec [hl]
dec [hl]
@@ -1477,7 +1477,7 @@
dec [hl]
ret
-.asm_38cc7
+.discourage
inc [hl]
inc [hl]
inc [hl]
@@ -1498,7 +1498,7 @@
AI_Smart_Spite:
ld a, [wLastPlayerCounterMove]
and a
- jr nz, .asm_38ce7
+ jr nz, .usedmove
call AICompareSpeed
jp c, AIDiscourageMove
@@ -1508,7 +1508,7 @@
inc [hl]
ret
-.asm_38ce7
+.usedmove
push hl
ld b, a
ld c, NUM_MOVES
@@ -1515,35 +1515,35 @@
ld hl, wBattleMonMoves
ld de, wBattleMonPP
-.asm_38cf1
+.moveloop
ld a, [hli]
cp b
- jr z, .asm_38cfb
+ jr z, .foundmove
inc de
dec c
- jr nz, .asm_38cf1
+ jr nz, .moveloop
pop hl
ret
-.asm_38cfb
+.foundmove
pop hl
ld a, [de]
cp 6
- jr c, .asm_38d0d
+ jr c, .encourage
cp 15
- jr nc, .asm_38d0b
+ jr nc, .discourage
call Random
cp 39 percent + 1
ret nc
-.asm_38d0b
+.discourage
inc [hl]
ret
-.asm_38d0d
+.encourage
call Random
cp 39 percent + 1
ret c
@@ -1551,7 +1551,7 @@
dec [hl]
ret
-Function_0x38d16:
+CallAIDiscourageMove: ; unreferenced
jp AIDiscourageMove
AI_Smart_DestinyBond:
@@ -1663,7 +1663,7 @@
AI_Smart_Conversion2:
ld a, [wLastPlayerMove]
and a
- jr nz, .asm_38dc9
+ jr nz, .discourage
push hl
dec a
@@ -1683,7 +1683,7 @@
ld a, [wTypeMatchup]
cp EFFECTIVE
pop hl
- jr c, .asm_38dc9
+ jr c, .discourage
ret z
call AI_50_50
@@ -1692,7 +1692,7 @@
dec [hl]
ret
-.asm_38dc9
+.discourage
call Random
cp 10 percent
ret c
@@ -1701,7 +1701,7 @@
AI_Smart_Disable:
call AICompareSpeed
- jr nc, .asm_38df3
+ jr nc, .discourage
push hl
ld a, [wLastPlayerCounterMove]
@@ -1710,7 +1710,7 @@
call IsInArray
pop hl
- jr nc, .asm_38dee
+ jr nc, .notencourage
call Random
cp 39 percent + 1
@@ -1718,12 +1718,12 @@
dec [hl]
ret
-.asm_38dee
+.notencourage
ld a, [wEnemyMoveStruct + MOVE_POWER]
and a
ret nz
-.asm_38df3
+.discourage
call Random
cp 8 percent
ret c
@@ -1732,7 +1732,7 @@
AI_Smart_MeanLook:
call AICheckEnemyHalfHP
- jr nc, .asm_38e24
+ jr nc, .discourage
push hl
call AICheckLastPlayerMon
@@ -1743,13 +1743,13 @@
; Should check wPlayerSubStatus5 instead.
ld a, [wEnemySubStatus5]
bit SUBSTATUS_TOXIC, a
- jr nz, .asm_38e26
+ jr nz, .encourage
; 80% chance to greatly encourage this move if the player is either
; in love, identified, stuck in Rollout, or has a Nightmare.
ld a, [wPlayerSubStatus1]
and 1 << SUBSTATUS_IN_LOVE | 1 << SUBSTATUS_ROLLOUT | 1 << SUBSTATUS_IDENTIFIED | 1 << SUBSTATUS_NIGHTMARE
- jr nz, .asm_38e26
+ jr nz, .encourage
; Otherwise, discourage this move unless the player only has not very effective moves against the enemy.
push hl
@@ -1759,11 +1759,11 @@
pop hl
ret nc
-.asm_38e24
+.discourage
inc [hl]
ret
-.asm_38e26
+.encourage
call AI_80_20
ret c
dec [hl]
@@ -1781,7 +1781,7 @@
.loop
ld a, [wCurBattleMon]
cp c
- jr z, .asm_38e44
+ jr z, .skip
ld a, [hli]
or [hl]
@@ -1788,7 +1788,7 @@
ret nz
dec hl
-.asm_38e44
+.skip
add hl, de
inc c
dec b
@@ -2246,13 +2246,13 @@
; 80% chance to discourage this move otherwise.
call AICheckPlayerQuarterHP
- jr nc, .asm_3907d
+ jr nc, .encourage
call AI_80_20
ret c
inc [hl]
ret
-.asm_3907d
+.encourage
call AI_50_50
ret c
dec [hl]
@@ -2265,17 +2265,17 @@
ld a, [wEnemyWrapCount]
and a
- jr nz, .asm_39097
+ jr nz, .encourage
ld a, [wEnemySubStatus4]
bit SUBSTATUS_LEECH_SEED, a
- jr nz, .asm_39097
+ jr nz, .encourage
ld a, [wEnemyScreens]
bit SCREENS_SPIKES, a
ret z
-.asm_39097
+.encourage
call AI_80_20
ret c
@@ -2419,7 +2419,7 @@
ld a, [wEnemyAtkLevel]
cp BASE_STAT_LEVEL + 3
- jr nc, .asm_3914d
+ jr nc, .discourage
call AICheckEnemyMaxHP
ret c
@@ -2429,9 +2429,9 @@
call AICheckEnemyHalfHP
ret c
-.asm_3914d
+.discourage
ld a, [hl]
- add $5
+ add 5
ld [hl], a
ret
@@ -2498,59 +2498,59 @@
ld c, NUM_MOVES
ld b, 0
-.asm_39193
+.playermoveloop
ld a, [hli]
and a
- jr z, .asm_391a8
+ jr z, .skipmove
call AIGetEnemyMove
ld a, [wEnemyMoveStruct + MOVE_POWER]
and a
- jr z, .asm_391a8
+ jr z, .skipmove
ld a, [wEnemyMoveStruct + MOVE_TYPE]
cp SPECIAL
- jr c, .asm_391a8
+ jr c, .skipmove
inc b
-.asm_391a8
+.skipmove
dec c
- jr nz, .asm_39193
+ jr nz, .playermoveloop
pop hl
ld a, b
and a
- jr z, .asm_391d3
+ jr z, .discourage
- cp $3
- jr nc, .asm_391ca
+ cp 3
+ jr nc, .encourage
ld a, [wLastPlayerCounterMove]
and a
- jr z, .asm_391d2
+ jr z, .done
call AIGetEnemyMove
ld a, [wEnemyMoveStruct + MOVE_POWER]
and a
- jr z, .asm_391d2
+ jr z, .done
ld a, [wEnemyMoveStruct + MOVE_TYPE]
cp SPECIAL
- jr c, .asm_391d2
+ jr c, .done
-.asm_391ca
+.encourage
call Random
- cp 100
- jr c, .asm_391d2
+ cp 39 percent + 1
+ jr c, .done
dec [hl]
-.asm_391d2
+.done
ret
-.asm_391d3
+.discourage
inc [hl]
ret
@@ -2617,7 +2617,7 @@
ld a, [wBattleWeather]
cp WEATHER_SUN
- jr z, .asm_3921e
+ jr z, .encourage
cp WEATHER_RAIN
ret nz
@@ -2630,7 +2630,7 @@
inc [hl]
ret
-.asm_3921e
+.encourage
call AI_80_20
ret c
@@ -2689,12 +2689,12 @@
ld a, [de]
inc de
cp [hl]
- jr nz, .asm_39269
+ jr nz, .not_max
inc hl
ld a, [de]
cp [hl]
- jr nz, .asm_39269
+ jr nz, .not_max
pop bc
pop de
@@ -2702,7 +2702,7 @@
scf
ret
-.asm_39269
+.not_max
pop bc
pop de
pop hl
@@ -2794,7 +2794,7 @@
push hl
ld hl, wEnemyMonMoves
- ld c, wEnemyMonMovesEnd - wEnemyMonMoves
+ ld c, NUM_MOVES
.checkmove
ld a, [hli]
@@ -2833,7 +2833,7 @@
jr z, .done
ld b, a
- ld c, wEnemyMonMovesEnd - wEnemyMonMoves + 1
+ ld c, NUM_MOVES + 1
ld de, wEnemyMonMoves
.check
@@ -2864,25 +2864,25 @@
; Discourage stall moves if enemy's HP is below 25%.
call AICheckEnemyQuarterHP
- jr nc, .asm_39322
+ jr nc, .lowhp
; 50% chance to discourage stall moves if enemy's HP is between 25% and 50%.
call AI_50_50
ret c
-.asm_39322
+.lowhp
ld hl, wBuffer1 - 1
ld de, wEnemyMonMoves
- ld c, wEnemyMonMovesEnd - wEnemyMonMoves + 1
+ ld c, NUM_MOVES + 1
.checkmove
inc hl
dec c
- jr z, .asm_39347
+ jr z, .done
ld a, [de]
inc de
and a
- jr z, .asm_39347
+ jr z, .done
push hl
push de
@@ -2899,7 +2899,7 @@
inc [hl]
jr .checkmove
-.asm_39347
+.done
ret
INCLUDE "data/battle/ai/stall_moves.asm"
@@ -2919,7 +2919,7 @@
.checkmove
inc b
ld a, b
- cp wEnemyMonMovesEnd - wEnemyMonMoves + 1
+ cp NUM_MOVES + 1
jr z, .gotstrongestmove
ld a, [hli]
@@ -2971,7 +2971,7 @@
.checkmove2
inc b
ld a, b
- cp wEnemyMonMovesEnd - wEnemyMonMoves + 1
+ cp NUM_MOVES + 1
jr z, .done
; Ignore this move if it is the highest damaging one.
@@ -3019,11 +3019,11 @@
ld de, 1
ld hl, ConstantDamageEffects
call IsInArray
- jr nc, .asm_39400
+ jr nc, .notconstant
callfar BattleCommand_ConstantDamage
ret
-.asm_39400
+.notconstant
callfar EnemyAttackDamage
callfar BattleCommand_DamageCalc
callfar BattleCommand_Stab
@@ -3040,8 +3040,8 @@
ld hl, wBuffer1 - 1
ld de, wEnemyMonMoves
- ld c, wEnemyMonMovesEnd - wEnemyMonMoves + 1
-.asm_39425
+ ld c, NUM_MOVES + 1
+.loop
inc hl
dec c
ret z
@@ -3061,7 +3061,7 @@
pop bc
pop de
pop hl
- jr nc, .asm_39425
+ jr nc, .loop
call Random
cp 90 percent + 1
@@ -3068,7 +3068,7 @@
ret nc
inc [hl]
- jr .asm_39425
+ jr .loop
INCLUDE "data/battle/ai/residual_moves.asm"
@@ -3078,7 +3078,7 @@
ld hl, wBuffer1 - 1
ld de, wEnemyMonMoves
- ld b, wEnemyMonMovesEnd - wEnemyMonMoves + 1
+ ld b, NUM_MOVES + 1
.checkmove
dec b
ret z
@@ -3141,7 +3141,7 @@
ld hl, wBuffer1 - 1
ld de, wEnemyMonMoves
- ld c, wEnemyMonMovesEnd - wEnemyMonMoves + 1
+ ld c, NUM_MOVES + 1
.checkmove
inc hl
dec c
--- a/engine/battle/core.asm
+++ b/engine/battle/core.asm
@@ -6403,7 +6403,7 @@
ld hl, wEnemyMonStats
ld de, wEnemyStats
- ld bc, wEnemyMonStatsEnd - wEnemyMonStats
+ ld bc, NUM_EXP_STATS * 2
call CopyBytes
ret
--- a/engine/events/daycare.asm
+++ b/engine/events/daycare.asm
@@ -480,7 +480,7 @@
ld bc, PARTYMON_STRUCT_LENGTH
call DayCare_GetCurrentPartyMember
ld hl, wEggMon
- ld bc, wEggMonEnd - wEggMon
+ ld bc, BOXMON_STRUCT_LENGTH
call CopyBytes
call GetBaseData
@@ -548,7 +548,7 @@
.UselessJump:
xor a
ld hl, wEggMon
- ld bc, wEggMonEnd - wEggMon
+ ld bc, BOXMON_STRUCT_LENGTH
call ByteFill
ld hl, wEggNick
ld bc, MON_NAME_LENGTH
--- a/macros/wram.asm
+++ b/macros/wram.asm
@@ -26,7 +26,7 @@
\1CaughtGender::
\1CaughtLocation:: db
\1Level:: db
-\1End::
+\1BoxEnd::
ENDM
party_struct: MACRO
@@ -41,7 +41,7 @@
\1Speed:: dw
\1SpclAtk:: dw
\1SpclDef:: dw
-\1StatsEnd::
+\1StructEnd::
ENDM
red_box_struct: MACRO
@@ -80,7 +80,6 @@
\1Species:: db
\1Item:: db
\1Moves:: ds NUM_MOVES
-\1MovesEnd::
\1DVs:: dw
\1PP:: ds NUM_MOVES
\1Happiness:: db
@@ -94,7 +93,6 @@
\1Speed:: dw
\1SpclAtk:: dw
\1SpclDef:: dw
-\1StatsEnd::
\1Type::
\1Type1:: db
\1Type2:: db