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 |