ref: 88a15c50387d02a7cdb95b508c43fa9f10a46982
parent: b922fe72a19bb82d4f0c0ebaadf415e8dfcb7166
author: yenatch <[email protected]>
date: Wed Aug 13 15:42:58 EDT 2014
More constants and bug comments in item effects. Apparently a bunch of constants from red were never removed for some reason.
--- a/constants/item_constants.asm
+++ b/constants/item_constants.asm
@@ -252,6 +252,13 @@
NUM_TMS EQU HM_01 - TM_01 - 2
+
+; leftovers from red
+SAFARI_BALL EQU 8 ; MOON_STONE
+MOON_STONE_RED EQU 10 ; BURN_HEAL
+FULL_HEAL_RED EQU 52 ; X_SPEED
+
+
; pockets
ITEM EQU 1
KEY_ITEM EQU 2
@@ -310,6 +317,8 @@
HELD_DRAGON_BOOST EQU $40
HELD_DARK_BOOST EQU $41
HELD_STEEL_BOOST EQU $42
+
+HELD_CATCH_CHANCE EQU $46
HELD_ESCAPE EQU $48
HELD_CRITICAL_UP EQU $49
--- a/constants/pokemon_data_constants.asm
+++ b/constants/pokemon_data_constants.asm
@@ -72,7 +72,9 @@
EVOLVE_STAT EQU 5
-BASE_HAPPINESS EQU 70
+BASE_HAPPINESS EQU 70
+FRIEND_BALL_HAPPINESS EQU 200
+
; happiness evolution triggers
HAPPINESS_TO_EVOLVE EQU 220
TR_ANYTIME EQU 1
--- a/items/item_effects.asm
+++ b/items/item_effects.asm
@@ -213,7 +213,7 @@
jp nz, Functionf7a0
ld a, [PartyCount]
- cp 6
+ cp PARTY_LENGTH
jr nz, .asm_e8c0
ld a, $1
@@ -231,7 +231,7 @@
call nz, Functionedfa
ld hl, Options
- res 4, [hl]
+ res NO_TEXT_SCROLL, [hl]
ld hl, UsedItemText
call PrintText
@@ -323,7 +323,7 @@
pop bc
ld a, b
- ld [hMultiplier], a
+ ld [hDivisor], a
ld b, $4
call Divide
@@ -330,8 +330,7 @@
ld a, [$ffb6]
and a
jr nz, .asm_e960
- ld a, $1
-
+ ld a, 1
.asm_e960
ld b, a
ld a, [EnemyMonStatus]
@@ -342,29 +341,40 @@
ld c, 5
jr nz, .asm_e971
ld c, 0
-
.asm_e971
ld a, b
add c
jr nc, .asm_e977
ld a, $ff
-
.asm_e977
+
ld d, a
push de
+
+ ; BUG: callba overwrites a,
+ ; and GetItem takes b anyway.
+
+ ; This is probably the reason
+ ; the HELD_CATCH_CHANCE effect
+ ; is never used.
+
+ ; Uncomment the line below to fix.
+
ld a, [BattleMonItem]
+; ld b, a
callba GetItem
-
ld a, b
- cp $46
+ cp HELD_CATCH_CHANCE
+
pop de
ld a, d
+
jr nz, .asm_e98e
add c
jr nc, .asm_e98e
ld a, $ff
-
.asm_e98e
+
ld b, a
ld [Buffer1], a
call Random
@@ -383,13 +393,12 @@
call DelayFrames
ld a, [CurItem]
- cp $6
+ cp POKE_BALL + 1 ; Assumes Master/Ultra/Great come before
jr c, .asm_e9b0
-
ld a, POKE_BALL
-
.asm_e9b0
ld [$c689], a
+
ld de, ANIM_THROW_POKE_BALL
ld a, e
ld [FXAnimIDLo], a
@@ -417,8 +426,8 @@
cp $4
ld hl, UnknownText_0xedc4
jp z, .asm_ebdc
-
.asm_e9f5
+
ld hl, EnemyMonStatus
ld a, [hli]
push af
@@ -435,8 +444,8 @@
ld hl, EnemySubStatus5
ld a, [hl]
push af
- set 3, [hl]
- bit 3, a
+ set SUBSTATUS_TRANSFORMED, [hl]
+ bit SUBSTATUS_TRANSFORMED, a
jr nz, .asm_ea13
jr .asm_ea1a
@@ -462,6 +471,7 @@
pop af
ld [EnemySubStatus5], a
+
pop hl
pop af
ld [hl], a
@@ -473,8 +483,9 @@
dec hl
pop af
ld [hl], a
+
ld hl, EnemySubStatus5
- bit 3, [hl]
+ bit SUBSTATUS_TRANSFORMED, [hl]
jr nz, .asm_ea67
ld hl, $c735
ld de, EnemyMonMoves
@@ -485,15 +496,16 @@
ld de, EnemyMonPP
ld bc, NUM_MOVES
call CopyBytes
-
.asm_ea67
+
ld a, [EnemyMonSpecies]
ld [$c64e], a
ld [CurPartySpecies], a
ld [$d265], a
ld a, [BattleType]
- cp $3
+ cp BATTLETYPE_TUTORIAL
jp z, .asm_ebd9
+
callba Function10607f
ld hl, UnknownText_0xedc9
@@ -510,13 +522,13 @@
ld a, [$d265]
dec a
call SetSeenAndCaughtMon
-
pop af
and a
jr nz, .asm_eab7
- call Function2ead
+ call Function2ead
jr z, .asm_eab7
+
ld hl, UnknownText_0xedf0
call PrintText
@@ -528,16 +540,16 @@
.asm_eab7
ld a, [BattleType]
- cp $6
+ cp BATTLETYPE_CONTEST
jp z, .asm_ebd1
- cp $b
+ cp BATTLETYPE_CELEBI
jr nz, .asm_eac8
ld hl, $d0ee
set 6, [hl]
-
.asm_eac8
+
ld a, [PartyCount]
- cp 6
+ cp PARTY_LENGTH
jr z, .asm_eb3c
xor a
@@ -558,10 +570,10 @@
ld bc, PartyMon2 - PartyMon1
call AddNTimes
- ld a, 200
+ ld a, FRIEND_BALL_HAPPINESS
ld [hl], a
-
.asm_eaf8
+
ld hl, UnknownText_0xedf5
call PrintText
@@ -570,7 +582,6 @@
call GetPokemonName
call YesNoBox
-
jp c, .asm_ebe2
ld a, [PartyCount]
@@ -609,7 +620,7 @@
call GetSRAMBank
ld a, [$ad10]
- cp $14
+ cp MONS_PER_BOX
jr nz, .asm_eb5b
ld hl, $d0ee
set 7, [hl]
@@ -618,7 +629,7 @@
ld a, [CurItem]
cp FRIEND_BALL
jr nz, .asm_eb67
- ld a, 200
+ ld a, FRIEND_BALL_HAPPINESS
ld [$ad41], a
.asm_eb67
@@ -632,7 +643,6 @@
call GetPokemonName
call YesNoBox
-
jr c, .asm_ebaf
xor a
@@ -692,23 +702,23 @@
ret z
cp 2
ret z
- cp 6
- jr z, .asm_ec05
+ cp BATTLETYPE_CONTEST
+ jr z, .used_park_ball
ld a, [$c64e]
and a
- jr z, .asm_ebfb
+ jr z, .toss
call WhiteBGMap
call ClearTileMap
-.asm_ebfb
+.toss
ld hl, NumItems
inc a
ld [$d10c], a
jp TossItem
-.asm_ec05
+.used_park_ball
ld hl, $dc79
dec [hl]
ret
@@ -716,21 +726,23 @@
Table_0xec0a: ; ec0a
- dbw ULTRA_BALL, Function_0xec29
- dbw GREAT_BALL, Function_0xec2f
- dbw MOON_STONE, Function_0xec2f
- dbw HEAVY_BALL, Function_0xec50
- dbw LEVEL_BALL, Function_0xed8c
- dbw LURE_BALL, Function_0xeccc
- dbw FAST_BALL, Function_0xed68
- dbw MOON_BALL, Function_0xecdd
- dbw LOVE_BALL, Function_0xed12
- dbw PARK_BALL, Function_0xec2f
+; Note: SAFARI_BALL does not exist.
+ dbw ULTRA_BALL, UltraBallChance
+ dbw GREAT_BALL, GreatBallChance
+ dbw SAFARI_BALL, SafariBallChance
+ dbw HEAVY_BALL, HeavyBallChance
+ dbw LEVEL_BALL, LevelBallChance
+ dbw LURE_BALL, LureBallChance
+ dbw FAST_BALL, FastBallChance
+ dbw MOON_BALL, MoonBallChance
+ dbw LOVE_BALL, LoveBallChance
+ dbw PARK_BALL, ParkBallChance
db $ff
; ec29
-Function_0xec29: ; ec29
+UltraBallChance: ; ec29
+; x2
sla b
ret nc
ld b, $ff
@@ -737,8 +749,10 @@
ret
; ec2f
-
-Function_0xec2f: ; ec2f
+GreatBallChance: ; ec2f
+ParkBallChance:
+SafariBallChance:
+; x1.5
ld a, b
srl a
add b
@@ -778,7 +792,7 @@
db BANK(PokedexEntries4)
; ec50
-Function_0xec50: ; ec50
+HeavyBallChance: ; ec50
ld a, [EnemyMonSpecies]
ld hl, PokedexDataPointerTable
dec a
@@ -806,14 +820,11 @@
rr l
ld b, h
ld c, l
+
+ rept 4
srl b
rr c
- srl b
- rr c
- srl b
- rr c
- srl b
- rr c
+ endr
call .asm_ec99
srl b
@@ -869,34 +880,33 @@
ret
.table_ecc4
- db 8, 0
- db 12, 20
- db 16, 30
+ db 8, 0
+ db 12, 20
+ db 16, 30
db 255, 40
; eccc
-Function_0xeccc: ; eccc
+LureBallChance: ; eccc
ld a, [BattleType]
- cp $4
+ cp BATTLETYPE_FISH
ret nz
+
ld a, b
add a
- jr c, .asm_ecd9
+ jr c, .max
add b
- jr nc, .asm_ecdb
-
-.asm_ecd9
+ jr nc, .done
+.max
ld a, $ff
-
-.asm_ecdb
+.done
ld b, a
ret
; ecdd
-Function_0xecdd: ; ecdd
+MoonBallChance: ; ecdd
GLOBAL EvosAttacks
GLOBAL EvosAttacksPointers
@@ -924,13 +934,17 @@
inc hl
inc hl
-; It appears that Moon Stone's constant from Pokémon Red is used.
-; No Pokémon evolve with Burn Heal, so
-; Moon Balls always have a catch rate of 1x.
+ ; It appears that Moon Stone's
+ ; constant from Pokémon Red is used.
+
+ ; No Pokémon evolve with Burn Heal,
+ ; so Moon Balls always have
+ ; a catch rate of 1x.
+
push bc
ld a, BANK(EvosAttacks)
call GetFarByte
- cp MOON_STONE + 2 ; BURN_HEAL
+ cp MOON_STONE_RED ; BURN_HEAL
pop bc
ret nz
@@ -945,7 +959,7 @@
; ed12
-Function_0xed12: ; ed12
+LoveBallChance: ; ed12
ld a, [TempEnemyMonSpecies]
ld c, a
ld a, [TempBattleMonSpecies]
@@ -1005,7 +1019,7 @@
; ed68
-Function_0xed68: ; ed68
+FastBallChance: ; ed68
ld a, [TempEnemyMonSpecies]
ld c, a
ld hl, FleeMons
@@ -1037,7 +1051,7 @@
; ed8c
-Function_0xed8c: ; ed8c
+LevelBallChance: ; ed8c
ld a, [BattleMonLevel]
ld c, a
ld a, [EnemyMonLevel]
@@ -1044,13 +1058,13 @@
cp c
ret nc
sla b
- jr c, .asm_eda8
+ jr c, .max
srl c
cp c
ret nc
sla b
- jr c, .asm_eda8
+ jr c, .max
srl c
cp c
@@ -1058,7 +1072,7 @@
sla b
ret nc
-.asm_eda8
+.max
ld b, $ff
ret
; edab
@@ -1810,7 +1824,7 @@
pop de
ld a, [CurPartyMon] ; $d109
hlcoord 11, 0
- ld bc, $28
+ ld bc, SCREEN_WIDTH * 2
call AddNTimes
ld a, $2
ld [$d10a], a
@@ -2242,9 +2256,9 @@
XAccuracy: ; f482
ld hl, PlayerSubStatus4
- bit 0, [hl]
+ bit SUBSTATUS_X_ACCURACY, [hl]
jp nz, WontHaveAnyEffect_NotUsedMessage
- set 0, [hl]
+ set SUBSTATUS_X_ACCURACY, [hl]
jp Functionf789
; f48f
--- a/main.asm
+++ b/main.asm
@@ -35987,13 +35987,13 @@
db HELD_HEAL_PARALYZE
db HELD_HEAL_STATUS
db $1e
- db $1f
- db $20
- db $21
- db $22
- db $23
- db $24
- db $25
+ db HELD_ATTACK_UP
+ db HELD_DEFENSE_UP
+ db HELD_SPEED_UP
+ db HELD_SP_ATTACK_UP
+ db HELD_SP_DEFENSE_UP
+ db HELD_ACCURACY_UP
+ db HELD_EVASION_UP
db $26
db $47
db HELD_ESCAPE