shithub: pokered

Download patch

ref: d7c5c8cf22c857830aae4da285c91e5e58c2cc02
parent: 93255d6d17fbb3702a0f8670d7ecc2ed627af2a7
parent: bbb86671eaac735fe6ef57da01ef79fd16953238
author: dannye <corrnondacqb@yahoo.com>
date: Sun Jul 26 19:23:05 EDT 2015

Merge branch 'master' of https://github.com/xCrystal/pokered

--- a/constants/misc_constants.asm
+++ b/constants/misc_constants.asm
@@ -1,13 +1,17 @@
 MAX_LEVEL EQU 100
-NUM_MOVES EQU 4
 
+NUM_MOVES     EQU 4
+NUM_STATS     EQU 5
+NUM_STAT_MODS EQU 8
+NUM_DVS       EQU 2
+
 PARTY_LENGTH EQU 6
 
 MONS_PER_BOX EQU 20
 NUM_BOXES    EQU 12
 
-HOF_MON       EQU $10
-HOF_TEAM      EQU PARTY_LENGTH * HOF_MON
+HOF_MON           EQU $10
+HOF_TEAM          EQU PARTY_LENGTH * HOF_MON
 HOF_TEAM_CAPACITY EQU 50
 
 A_BUTTON EQU %00000001
--- a/constants/move_animation_constants.asm
+++ b/constants/move_animation_constants.asm
@@ -16,7 +16,7 @@
 	const SE_SPIRAL_BALLS_INWARD       ; $E2 used in Growth/Focus Energy/Hyper Beam etc.
 	const SE_SHAKE_ENEMY_HUD_2         ; $E3 unused
 	const SE_SHAKE_ENEMY_HUD           ; $E4
-	const SE_SLIDE_MON_HALF_OFF       ; $E5 used in Softboiled
+	const SE_SLIDE_MON_HALF_OFF        ; $E5 used in Softboiled
 	const SE_PETALS_FALLING            ; $E6 used in Petal Dance
 	const SE_LEAVES_FALLING            ; $E7 used in Razor Leaf
 	const SE_TRANSFORM_MON             ; $E8 used in Transform
--- a/data/baseStats/rhydon.asm
+++ b/data/baseStats/rhydon.asm
@@ -1,3 +1,4 @@
+MonBaseStats:
 RhydonBaseStats: ; 39002 (e:5002)
 db DEX_RHYDON ; pokedex id
 db 105 ; base hp
@@ -27,3 +28,4 @@
 db %10001000
 db %00110010
 db 0 ; padding
+MonBaseStatsEnd:
--- a/engine/battle/core.asm
+++ b/engine/battle/core.asm
@@ -1696,19 +1696,19 @@
 ; copies from party data to battle mon data when sending out a new player mon
 LoadBattleMonFromParty: ; 3cba6 (f:4ba6)
 	ld a, [wWhichPokemon]
-	ld bc, $2c
+	ld bc, wPartyMon2 - wPartyMon1
 	ld hl, wPartyMon1Species
 	call AddNTimes
 	ld de, wBattleMonSpecies
-	ld bc, $c
+	ld bc, wBattleMonDVs - wBattleMonSpecies
 	call CopyData
-	ld bc, $f
+	ld bc, wPartyMon1DVs - wPartyMon1OTID
 	add hl, bc
 	ld de, wBattleMonDVs
-	ld bc, $2
+	ld bc, NUM_DVS
 	call CopyData
 	ld de, wBattleMonPP
-	ld bc, $4
+	ld bc, NUM_MOVES
 	call CopyData
 	ld de, wBattleMonLevel
 	ld bc, $b
@@ -1724,12 +1724,12 @@
 	call CopyData
 	ld hl, wBattleMonLevel
 	ld de, wPlayerMonUnmodifiedLevel ; block of memory used for unmodified stats
-	ld bc, $b
+	ld bc, 1 + NUM_STATS * 2
 	call CopyData
 	call ApplyBurnAndParalysisPenaltiesToPlayer
 	call ApplyBadgeStatBoosts
 	ld a, $7 ; default stat modifier
-	ld b, $8
+	ld b, NUM_STAT_MODS
 	ld hl, wPlayerMonAttackMod
 .statModLoop
 	ld [hli], a
@@ -1740,19 +1740,19 @@
 ; copies from enemy party data to current enemy mon data when sending out a new enemy mon
 LoadEnemyMonFromParty: ; 3cc13 (f:4c13)
 	ld a, [wWhichPokemon]
-	ld bc, $2c
+	ld bc, wEnemyMon2 - wEnemyMon1
 	ld hl, wEnemyMons
 	call AddNTimes
 	ld de, wEnemyMonSpecies
-	ld bc, $c
+	ld bc, wEnemyMonDVs - wEnemyMonSpecies
 	call CopyData
-	ld bc, $f
+	ld bc, wEnemyMon1DVs - wEnemyMon1OTID
 	add hl, bc
 	ld de, wEnemyMonDVs
-	ld bc, $2
+	ld bc, NUM_DVS
 	call CopyData
 	ld de, wEnemyMonPP
-	ld bc, $4
+	ld bc, NUM_MOVES
 	call CopyData
 	ld de, wEnemyMonLevel
 	ld bc, $b
@@ -1768,12 +1768,12 @@
 	call CopyData
 	ld hl, wEnemyMonLevel
 	ld de, wEnemyMonUnmodifiedLevel ; block of memory used for unmodified stats
-	ld bc, $b
+	ld bc, 1 + NUM_STATS * 2
 	call CopyData
 	call ApplyBurnAndParalysisPenaltiesToEnemy
 	ld hl, W_MONHBASESTATS
 	ld de, wEnemyMonBaseStats
-	ld b, $5
+	ld b, NUM_STATS
 .copyBaseStatsLoop
 	ld a, [hli]
 	ld [de], a
@@ -1781,7 +1781,7 @@
 	dec b
 	jr nz, .copyBaseStatsLoop
 	ld a, $7 ; default stat modifier
-	ld b, $8
+	ld b, NUM_STAT_MODS
 	ld hl, wEnemyMonStatMods
 .statModLoop
 	ld [hli], a
@@ -6300,7 +6300,7 @@
 	predef LoadMovePPs
 	ld hl, W_MONHBASESTATS
 	ld de, wEnemyMonBaseStats
-	ld b, $5
+	ld b, NUM_STATS
 .copyBaseStatsLoop
 	ld a, [hli]
 	ld [de], a
@@ -6331,10 +6331,10 @@
 	predef FlagActionPredef ; mark this mon as seen in the pokedex
 	ld hl, wEnemyMonLevel
 	ld de, wEnemyMonUnmodifiedLevel
-	ld bc, $b
+	ld bc, 1 + NUM_STATS * 2
 	call CopyData
 	ld a, $7 ; default stat mod
-	ld b, $8 ; number of stat mods
+	ld b, NUM_STAT_MODS ; number of stat mods
 	ld hl, wEnemyMonStatMods
 .statModLoop
 	ld [hli], a
@@ -6561,7 +6561,7 @@
 	call CalculateModifiedStat
 	inc c
 	ld a, c
-	cp 4
+	cp NUM_STATS - 1
 	jr nz, .loop
 	ret
 
--- a/engine/battle/experience.asm
+++ b/engine/battle/experience.asm
@@ -26,7 +26,7 @@
 	ld d, h
 	ld e, l
 	ld hl, wEnemyMonBaseStats
-	ld c, $5
+	ld c, NUM_STATS
 .gainStatExpLoop
 	ld a, [hli]
 	ld b, a ; enemy mon base stat
@@ -66,7 +66,7 @@
 	ld [H_DIVISOR], a
 	ld b, 4
 	call Divide
-	ld hl, -((wPartyMon1HPExp + 1) - wPartyMon1OTID + 4 * 2)
+	ld hl, wPartyMon1OTID - (wPartyMon1DVs - 1)
 	add hl, de
 	ld b, [hl] ; party mon OTID
 	inc hl
@@ -220,7 +220,7 @@
 	add hl, bc
 	push hl
 	ld de, wBattleMonLevel
-	ld bc, $b ; size of stats
+	ld bc, 1 + NUM_STATS * 2 ; size of stats
 	call CopyData
 	pop hl
 	ld a, [W_PLAYERBATTSTATUS3]
@@ -228,7 +228,7 @@
 	jr nz, .recalcStatChanges
 ; the mon is not transformed, so update the unmodified stats
 	ld de, wPlayerMonUnmodifiedLevel
-	ld bc, $b
+	ld bc, 1 + NUM_STATS * 2
 	call CopyData
 .recalcStatChanges
 	xor a
@@ -308,7 +308,7 @@
 	ret c ; return if only one mon is gaining exp
 	ld [wd11e], a ; store number of mons gaining exp
 	ld hl, wEnemyMonBaseStats
-	ld c, $7
+	ld c, wEnemyMonBaseExp + 1 - wEnemyMonBaseStats
 .divideLoop
 	xor a
 	ld [H_DIVIDEND], a
--- a/engine/evos_moves.asm
+++ b/engine/evos_moves.asm
@@ -161,7 +161,7 @@
 	ld a, [wd11e]
 	dec a
 	ld hl, BaseStats
-	ld bc, $1c
+	ld bc, MonBaseStatsEnd - MonBaseStats
 	call AddNTimes
 	ld de, W_MONHEADER
 	call CopyData
--- a/engine/items/items.asm
+++ b/engine/items/items.asm
@@ -2417,11 +2417,11 @@
 	ld b,a ; b = normal max PP
 	pop hl
 	push bc
-	ld bc,21 ; PP offset if not player's in-battle pokemon data
+	ld bc,wPartyMon1PP - wPartyMon1Moves ; PP offset if not player's in-battle pokemon data
 	ld a,[wMonDataLocation]
 	cp a,4 ; player's in-battle pokemon?
 	jr nz,.addPPOffset
-	ld bc,17 ; PP offset if player's in-battle pokemon data
+	ld bc,wBattleMonPP - wBattleMonMoves ; PP offset if player's in-battle pokemon data
 .addPPOffset
 	add hl,bc
 	ld a,[hl] ; a = current PP
@@ -2601,7 +2601,7 @@
 	pop hl
 	ld d, h
 	ld e, l
-	ld bc, $fff5
+	ld bc, -$b
 	add hl, bc
 	pop bc
 	dec b
@@ -2635,7 +2635,7 @@
 	pop hl
 	ld d, h
 	ld e, l
-	ld bc, $fff5
+	ld bc, -$b
 	add hl, bc
 	pop bc
 	dec b
@@ -2669,7 +2669,7 @@
 	pop hl
 	ld d, h
 	ld e, l
-	ld bc, $ffdf
+	ld bc, wBoxMon1 - wBoxMon2
 	add hl, bc
 	pop bc
 	dec b
@@ -2679,7 +2679,7 @@
 	ld [wEnemyMonBoxLevel], a
 	ld hl, wEnemyMon
 	ld de, wBoxMon1
-	ld bc, $c
+	ld bc, wEnemyMonDVs - wEnemyMon
 	call CopyData
 	ld hl, wPlayerID
 	ld a, [hli]
@@ -2703,7 +2703,7 @@
 	ld [de], a
 	inc de
 	xor a
-	ld b, $a
+	ld b, NUM_STATS * 2
 .asm_e89f
 	ld [de], a
 	inc de
@@ -2716,7 +2716,7 @@
 	ld a, [hli]
 	ld [de], a
 	ld hl, wEnemyMonPP
-	ld b, $4
+	ld b, NUM_MOVES
 .asm_e8b1
 	ld a, [hli]
 	inc de
--- a/engine/learn_move.asm
+++ b/engine/learn_move.asm
@@ -10,12 +10,12 @@
 
 DontAbandonLearning: ; 6e5b (1:6e5b)
 	ld hl, wPartyMon1Moves
-	ld bc, $2c
+	ld bc, wPartyMon2Moves - wPartyMon1Moves
 	ld a, [wWhichPokemon]
 	call AddNTimes
 	ld d, h
 	ld e, l
-	ld b, $4
+	ld b, NUM_MOVES
 .asm_6e6b
 	ld a, [hl]
 	and a
@@ -38,7 +38,7 @@
 .asm_6e8b
 	ld a, [wMoveNum]
 	ld [hl], a
-	ld bc, $15
+	ld bc, wPartyMon1PP - wPartyMon1Moves
 	add hl, bc
 	push hl
 	push de
@@ -66,10 +66,10 @@
 	ld de, wBattleMonMoves
 	ld bc, NUM_MOVES
 	call CopyData
-	ld bc, $11
+	ld bc, wPartyMon1PP - wPartyMon1OTID
 	add hl, bc
 	ld de, wBattleMonPP
-	ld bc, $4
+	ld bc, NUM_MOVES
 	call CopyData
 	jp PrintLearnedMove
 
@@ -108,7 +108,7 @@
 	ld a, [wCurrentMenuItem]
 	rra
 	ret c
-	ld bc, $fffc
+	ld bc, - NUM_MOVES
 	add hl, bc
 	push hl
 	ld de, wMoves
--- a/home.asm
+++ b/home.asm
@@ -583,11 +583,11 @@
 	predef IndexToPokedex   ; convert pokemon ID in [wd11e] to pokedex number
 	ld a,[wd11e]
 	dec a
-	ld bc,28
+	ld bc,MonBaseStatsEnd - MonBaseStats
 	ld hl,BaseStats
 	call AddNTimes
 	ld de,W_MONHEADER
-	ld bc,28
+	ld bc,MonBaseStatsEnd - MonBaseStats
 	call CopyData
 	jr .done
 .specialID
@@ -601,7 +601,7 @@
 .mew
 	ld hl,MewBaseStats
 	ld de,W_MONHEADER
-	ld bc,28
+	ld bc,MonBaseStatsEnd - MonBaseStats
 	ld a,BANK(MewBaseStats)
 	call FarCopyData
 .done
@@ -3611,7 +3611,7 @@
 	ld [de], a
 	inc de
 	ld a, c
-	cp $5
+	cp NUM_STATS
 	jr nz, .statsLoop
 	ret
 
@@ -3662,7 +3662,7 @@
 	srl c
 	pop hl
 	push bc
-	ld bc, $b           ; skip to stat IV values
+	ld bc, wPartyMon1DVs - (wPartyMon1HPExp - 1) ; also wEnemyMonDVs - wEnemyMonHP
 	add hl, bc
 	pop bc
 	ld a, c
@@ -3756,7 +3756,7 @@
 	call Divide             ; (((Base + IV) * 2 + ceil(Sqrt(stat exp)) / 4) * Level) / 100
 	ld a, c
 	cp $1
-	ld a, $5
+	ld a, 5 ; + 5 for non-HP stat
 	jr nz, .notHPStat
 	ld a, [W_CURENEMYLVL]
 	ld b, a
@@ -3768,7 +3768,7 @@
 	inc a
 	ld [H_MULTIPLICAND+1], a ; HP: (((Base + IV) * 2 + ceil(Sqrt(stat exp)) / 4) * Level) / 100 + Level
 .noCarry3
-	ld a, $a
+	ld a, 10 ; +10 for HP stat
 .notHPStat
 	ld b, a
 	ld a, [H_MULTIPLICAND+2]
@@ -3780,17 +3780,17 @@
 	ld [H_MULTIPLICAND+1], a ; HP: (((Base + IV) * 2 + ceil(Sqrt(stat exp)) / 4) * Level) / 100 + Level + 10
 .noCarry4
 	ld a, [H_MULTIPLICAND+1] ; check for overflow (>999)
-	cp $4
+	cp 999 / $100 + 1
 	jr nc, .overflow
-	cp $3
+	cp 999 / $100
 	jr c, .noOverflow
 	ld a, [H_MULTIPLICAND+2]
-	cp $e8
+	cp 999 % $100 + 1
 	jr c, .noOverflow
 .overflow
-	ld a, $3                 ; overflow: cap at 999
+	ld a, 999 / $100               ; overflow: cap at 999
 	ld [H_MULTIPLICAND+1], a
-	ld a, $e7
+	ld a, 999 % $100
 	ld [H_MULTIPLICAND+2], a
 .noOverflow
 	pop bc
--- a/main.asm
+++ b/main.asm
@@ -3691,7 +3691,7 @@
 	inc de
 	jr .copyMonTypesAndMoves
 .copyEnemyMonData
-	ld bc, wPartyMon1DVs - wPartyMon1
+	ld bc, wEnemyMon1DVs - wEnemyMon1
 	add hl, bc
 	ld a, [wEnemyMonDVs] ; copy IVs from cur enemy mon
 	ld [hli], a
@@ -3762,7 +3762,7 @@
 	ld a, [hExperience + 2]
 	ld [de], a
 	xor a
-	ld b, $a
+	ld b, NUM_STATS * 2
 .writeEVsLoop              ; set all EVs to 0
 	inc de
 	ld [de], a
@@ -3786,7 +3786,7 @@
 	jr .done
 .calcFreshStats
 	pop hl
-	ld bc, $10
+	ld bc, wPartyMon1HPExp - 1 - wPartyMon1
 	add hl, bc
 	ld b, $0
 	call CalcStats         ; calculate fresh set of stats
@@ -3798,7 +3798,7 @@
 	call GetPredefRegisters
 	; fallthrough
 AddPartyMon_WriteMovePP: ; f476 (3:7476)
-	ld b, $4
+	ld b, NUM_MOVES
 .pploop
 	ld a, [hli]     ; read move ID
 	and a