diff options
| -rw-r--r-- | constants/misc_constants.asm | 10 | ||||
| -rw-r--r-- | constants/move_animation_constants.asm | 2 | ||||
| -rwxr-xr-x | data/baseStats/rhydon.asm | 2 | ||||
| -rwxr-xr-x | engine/battle/core.asm | 38 | ||||
| -rw-r--r-- | engine/battle/experience.asm | 10 | ||||
| -rwxr-xr-x | engine/evos_moves.asm | 2 | ||||
| -rwxr-xr-x | engine/items/items.asm | 16 | ||||
| -rwxr-xr-x | engine/learn_move.asm | 12 | ||||
| -rw-r--r-- | home.asm | 24 | ||||
| -rwxr-xr-x | main.asm | 8 | 
10 files changed, 65 insertions, 59 deletions
| diff --git a/constants/misc_constants.asm b/constants/misc_constants.asm index 4f2eb275..b5d889d4 100644 --- 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 diff --git a/constants/move_animation_constants.asm b/constants/move_animation_constants.asm index 6d8f33ca..27658c83 100644 --- a/constants/move_animation_constants.asm +++ b/constants/move_animation_constants.asm @@ -16,7 +16,7 @@ const_value = $D8  	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 diff --git a/data/baseStats/rhydon.asm b/data/baseStats/rhydon.asm index 9f005b84..2d844a3d 100755 --- 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 %10100010  db %10001000  db %00110010  db 0 ; padding +MonBaseStatsEnd: diff --git a/engine/battle/core.asm b/engine/battle/core.asm index 77f0c0c6..335108f7 100755 --- a/engine/battle/core.asm +++ b/engine/battle/core.asm @@ -1696,19 +1696,19 @@ GotAwayText: ; 3cba1 (f:4ba1)  ; 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 @@ LoadBattleMonFromParty: ; 3cba6 (f:4ba6)  	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 @@ LoadBattleMonFromParty: ; 3cba6 (f:4ba6)  ; 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 @@ LoadEnemyMonFromParty: ; 3cc13 (f:4c13)  	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 @@ LoadEnemyMonFromParty: ; 3cc13 (f:4c13)  	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 @@ LoadEnemyMonData: ; 3eb01 (f:6b01)  	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 @@ LoadEnemyMonData: ; 3eb01 (f:6b01)  	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 @@ CalculateModifiedStats: ; 3ed99 (f:6d99)  	call CalculateModifiedStat  	inc c  	ld a, c -	cp 4 +	cp NUM_STATS - 1  	jr nz, .loop  	ret diff --git a/engine/battle/experience.asm b/engine/battle/experience.asm index 6f479ea3..edee81b1 100644 --- a/engine/battle/experience.asm +++ b/engine/battle/experience.asm @@ -26,7 +26,7 @@ GainExperience: ; 5524f (15:524f)  	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 @@ GainExperience: ; 5524f (15:524f)  	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 @@ GainExperience: ; 5524f (15:524f)  	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 @@ GainExperience: ; 5524f (15:524f)  	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 @@ DivideExpDataByNumMonsGainingExp: ; 5546c (15:546c)  	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 diff --git a/engine/evos_moves.asm b/engine/evos_moves.asm index 7dcc0513..137b75e0 100755 --- a/engine/evos_moves.asm +++ b/engine/evos_moves.asm @@ -161,7 +161,7 @@ Evolution_PartyMonLoop: ; loop over party mons  	ld a, [wd11e]  	dec a  	ld hl, BaseStats -	ld bc, $1c +	ld bc, MonBaseStatsEnd - MonBaseStats  	call AddNTimes  	ld de, W_MONHEADER  	call CopyData diff --git a/engine/items/items.asm b/engine/items/items.asm index 7f16691d..953f953a 100755 --- a/engine/items/items.asm +++ b/engine/items/items.asm @@ -2417,11 +2417,11 @@ GetMaxPP: ; e677 (3:6677)  	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 @@ SendNewMonToBox: ; e7a4 (3:67a4)  	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 @@ SendNewMonToBox: ; e7a4 (3:67a4)  	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 @@ SendNewMonToBox: ; e7a4 (3:67a4)  	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 @@ SendNewMonToBox: ; e7a4 (3:67a4)  	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 @@ SendNewMonToBox: ; e7a4 (3:67a4)  	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 @@ SendNewMonToBox: ; e7a4 (3:67a4)  	ld a, [hli]  	ld [de], a  	ld hl, wEnemyMonPP -	ld b, $4 +	ld b, NUM_MOVES  .asm_e8b1  	ld a, [hli]  	inc de diff --git a/engine/learn_move.asm b/engine/learn_move.asm index a6a78355..66d27a40 100755 --- a/engine/learn_move.asm +++ b/engine/learn_move.asm @@ -10,12 +10,12 @@ LearnMove: ; 6e43 (1:6e43)  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 @@ DontAbandonLearning: ; 6e5b (1:6e5b)  .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 @@ DontAbandonLearning: ; 6e5b (1:6e5b)  	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 @@ TryingToLearn: ; 6f07 (1:6f07)  	ld a, [wCurrentMenuItem]  	rra  	ret c -	ld bc, $fffc +	ld bc, - NUM_MOVES  	add hl, bc  	push hl  	ld de, wMoves @@ -583,11 +583,11 @@ GetMonHeader:: ; 1537 (0:1537)  	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 @@ GetMonHeader:: ; 1537 (0:1537)  .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 @@ CalcStats:: ; 3936 (0:3936)  	ld [de], a  	inc de  	ld a, c -	cp $5 +	cp NUM_STATS  	jr nz, .statsLoop  	ret @@ -3662,7 +3662,7 @@ CalcStat:: ; 394a (0:394a)  	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 @@ CalcStat:: ; 394a (0:394a)  	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 @@ CalcStat:: ; 394a (0:394a)  	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 @@ CalcStat:: ; 394a (0:394a)  	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 @@ -3691,7 +3691,7 @@ _AddPartyMon: ; f2e5 (3:72e5)  	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 @@ _AddPartyMon: ; f2e5 (3:72e5)  	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 @@ _AddPartyMon: ; f2e5 (3:72e5)  	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 @@ LoadMovePPs: ; f473 (3:7473)  	call GetPredefRegisters  	; fallthrough  AddPartyMon_WriteMovePP: ; f476 (3:7476) -	ld b, $4 +	ld b, NUM_MOVES  .pploop  	ld a, [hli]     ; read move ID  	and a | 
