diff options
| author | xCrystal <rgr.crystal@gmail.com> | 2015-04-01 17:03:05 +0200 |
|---|---|---|
| committer | xCrystal <rgr.crystal@gmail.com> | 2015-04-01 17:05:51 +0200 |
| commit | 10211cc461b35140c815e18e95f7070eb0dcc586 (patch) | |
| tree | a3ccfaf788d8b7cb7e743125bfceb3785a1b0d19 /engine/battle/15.asm | |
| parent | Rename battle files and split move effects Part 4 (diff) | |
| download | pokeyellow-10211cc461b35140c815e18e95f7070eb0dcc586.tar.gz pokeyellow-10211cc461b35140c815e18e95f7070eb0dcc586.tar.xz pokeyellow-10211cc461b35140c815e18e95f7070eb0dcc586.zip | |
Rename battle files and split move effects Part 5
15.asm, 16.asm, 1a.asm, 1c.asm
Diffstat (limited to 'engine/battle/15.asm')
| -rwxr-xr-x | engine/battle/15.asm | 372 |
1 files changed, 0 insertions, 372 deletions
diff --git a/engine/battle/15.asm b/engine/battle/15.asm deleted file mode 100755 index 9bd67654..00000000 --- a/engine/battle/15.asm +++ /dev/null @@ -1,372 +0,0 @@ -GainExperience: ; 5524f (15:524f) - ld a, [wLinkState] - cp LINK_STATE_BATTLING - ret z ; return if link battle - call DivideExpDataByNumMonsGainingExp - ld hl, wPartyMon1 - xor a - ld [wWhichPokemon], a -.partyMonLoop ; loop over each mon and add gained exp - inc hl - ld a, [hli] - or [hl] ; is mon's HP 0? - jp z, .nextMon ; if so, go to next mon - push hl - ld hl, wPartyGainExpFlags - ld a, [wWhichPokemon] - ld c, a - ld b, $2 - predef FlagActionPredef - ld a, c - and a ; is mon's gain exp flag set? - pop hl - jp z, .nextMon ; if mon's gain exp flag not set, go to next mon - ld de, (wPartyMon1HPExp + 1) - (wPartyMon1HP + 1) - add hl, de - ld d, h - ld e, l - ld hl, wEnemyMonBaseStats - ld c, $5 -.gainStatExpLoop - ld a, [hli] - ld b, a ; enemy mon base stat - ld a, [de] ; stat exp - add b ; add enemy mon base state to stat exp - ld [de], a - jr nc, .nextBaseStat -; if there was a carry, increment the upper byte - dec de - ld a, [de] - inc a - jr z, .maxStatExp ; jump if the value overflowed - ld [de], a - inc de - jr .nextBaseStat -.maxStatExp ; if the upper byte also overflowed, then we have hit the max stat exp - ld a, $ff - ld [de], a - inc de - ld [de], a -.nextBaseStat - dec c - jr z, .asm_552a1 - inc de - inc de - jr .gainStatExpLoop -.asm_552a1 - xor a - ld [H_MULTIPLICAND], a - ld [H_MULTIPLICAND + 1], a - ld a, [wEnemyMonBaseExp] - ld [H_MULTIPLICAND + 2], a - ld a, [wEnemyMonLevel] - ld [H_MULTIPLIER], a - call Multiply - ld a, 7 - ld [H_DIVISOR], a - ld b, 4 - call Divide - ld hl, -((wPartyMon1HPExp + 1) - wPartyMon1OTID + 4 * 2) - add hl, de - ld b, [hl] ; party mon OTID - inc hl - ld a, [wPlayerID] - cp b - jr nz, .tradedMon - ld b, [hl] - ld a, [wPlayerID + 1] - cp b - ld a, $0 - jr z, .next -.tradedMon - call BoostExp ; traded mon exp boost - ld a, $1 -.next - ld [wGainBoostedExp], a - ld a, [W_ISINBATTLE] - dec a ; is it a trainer battle? - call nz, BoostExp ; if so, boost exp - inc hl - inc hl - inc hl -; add the gained exp to the party mon's exp - ld b, [hl] - ld a, [H_QUOTIENT + 3] - ld [wcf4c], a - add b - ld [hld], a - ld b, [hl] - ld a, [H_QUOTIENT + 2] - ld [wcf4b], a - adc b - ld [hl], a - jr nc, .noCarry - dec hl - inc [hl] - inc hl -.noCarry -; calculate exp for the mon at max level, and cap the exp at that value - inc hl - push hl - ld a, [wWhichPokemon] - ld c, a - ld b, 0 - ld hl, wPartySpecies - add hl, bc - ld a, [hl] ; species - ld [wd0b5], a - call GetMonHeader - ld d, MAX_LEVEL - callab CalcExperience ; get max exp -; compare max exp with current exp - ld a, [$ff96] - ld b, a - ld a, [$ff97] - ld c, a - ld a, [$ff98] - ld d, a - pop hl - ld a, [hld] - sub d - ld a, [hld] - sbc c - ld a, [hl] - sbc b - jr c, .next2 -; the mon's exp is greater than the max exp, so overwrite it with the max exp - ld a, b - ld [hli], a - ld a, c - ld [hli], a - ld a, d - ld [hld], a - dec hl -.next2 - push hl - ld a, [wWhichPokemon] - ld hl, wPartyMonNicks - call GetPartyMonName - ld hl, GainedText - call PrintText - xor a ; party mon data - ld [wcc49], a - call LoadMonData - pop hl - ld bc, wPartyMon1Level - wPartyMon1Exp - add hl, bc - push hl - callba CalcLevelFromExperience - pop hl - ld a, [hl] ; current level - cp d - jp z, .nextMon ; if level didn't change, go to next mon - ld a, [W_CURENEMYLVL] - push af - push hl - ld a, d - ld [W_CURENEMYLVL], a - ld [hl], a - ld bc, wPartyMon1Species - wPartyMon1Level - add hl, bc - ld a, [hl] ; species - ld [wd0b5], a - ld [wd11e], a - call GetMonHeader - ld bc, (wPartyMon1MaxHP + 1) - wPartyMon1Species - add hl, bc - push hl - ld a, [hld] - ld c, a - ld b, [hl] - push bc ; push max HP (from before levelling up) - ld d, h - ld e, l - ld bc, (wPartyMon1HPExp - 1) - wPartyMon1MaxHP - add hl, bc - ld b, $1 ; consider stat exp when calculating stats - call CalcStats - pop bc ; pop max HP (from before levelling up) - pop hl - ld a, [hld] - sub c - ld c, a - ld a, [hl] - sbc b - ld b, a ; bc = difference between old max HP and new max HP after levelling - ld de, (wPartyMon1HP + 1) - wPartyMon1MaxHP - add hl, de -; add to the current HP the amount of max HP gained when levelling - ld a, [hl] ; wPartyMon1HP + 1 - add c - ld [hld], a - ld a, [hl] ; wPartyMon1HP + 1 - adc b - ld [hl], a ; wPartyMon1HP - ld a, [wPlayerMonNumber] - ld b, a - ld a, [wWhichPokemon] - cp b ; is the current mon in battle? - jr nz, .printGrewLevelText -; current mon is in battle - ld de, wBattleMonHP -; copy party mon HP to battle mon HP - ld a, [hli] - ld [de], a - inc de - ld a, [hl] - ld [de], a -; copy other stats from party mon to battle mon - ld bc, wPartyMon1Level - (wPartyMon1HP + 1) - add hl, bc - push hl - ld de, wBattleMonLevel - ld bc, $b ; size of stats - call CopyData - pop hl - ld a, [W_PLAYERBATTSTATUS3] - bit 3, a ; is the mon transformed? - jr nz, .recalcStatChanges -; the mon is not transformed, so update the unmodified stats - ld de, wPlayerMonUnmodifiedLevel - ld bc, $b - call CopyData -.recalcStatChanges - xor a - ld [wd11e], a - callab CalculateModifiedStats - callab ApplyBurnAndParalysisPenaltiesToPlayer - callab ApplyBadgeStatBoosts - callab DrawPlayerHUDAndHPBar - callab PrintEmptyString - call SaveScreenTilesToBuffer1 -.printGrewLevelText - ld hl, GrewLevelText - call PrintText - xor a ; party mon data - ld [wcc49], a - call LoadMonData - ld d, $1 - callab PrintStatsBox - call WaitForTextScrollButtonPress - call LoadScreenTilesFromBuffer1 - xor a - ld [wcc49], a - ld a, [wd0b5] - ld [wd11e], a - predef LearnMoveFromLevelUp - ld hl, wccd3 - ld a, [wWhichPokemon] - ld c, a - ld b, $1 - predef FlagActionPredef - pop hl - pop af - ld [W_CURENEMYLVL], a - -.nextMon - ld a, [wPartyCount] - ld b, a - ld a, [wWhichPokemon] - inc a - cp b - jr z, .done - ld [wWhichPokemon], a - ld bc, wPartyMon2 - wPartyMon1 - ld hl, wPartyMon1 - call AddNTimes - jp .partyMonLoop -.done - ld hl, wPartyGainExpFlags - xor a - ld [hl], a ; clear gain exp flags - ld a, [wPlayerMonNumber] - ld c, a - ld b, $1 - push bc - predef FlagActionPredef ; set the gain exp flag for the mon that is currently out - ld hl, wPartyFoughtCurrentEnemyFlags - xor a - ld [hl], a - pop bc - predef_jump FlagActionPredef ; set the fought current enemy flag for the mon that is currently out - -; divide enemy base stats, catch rate, and base exp by the number of mons gaining exp -DivideExpDataByNumMonsGainingExp: ; 5546c (15:546c) - ld a, [wPartyGainExpFlags] - ld b, a - xor a - ld c, $8 - ld d, $0 -.countSetBitsLoop ; loop to count set bits in wPartyGainExpFlags - xor a - srl b - adc d - ld d, a - dec c - jr nz, .countSetBitsLoop - cp $2 - 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 -.divideLoop - xor a - ld [H_DIVIDEND], a - ld a, [hl] - ld [H_DIVIDEND + 1], a - ld a, [wd11e] - ld [H_DIVISOR], a - ld b, $2 - call Divide ; divide value by number of mons gaining exp - ld a, [H_QUOTIENT + 3] - ld [hli], a - dec c - jr nz, .divideLoop - ret - -; multiplies exp by 1.5 -BoostExp: ; 5549f (15:549f) - ld a, [H_QUOTIENT + 2] - ld b, a - ld a, [H_QUOTIENT + 3] - ld c, a - srl b - rr c - add c - ld [H_QUOTIENT + 3], a - ld a, [H_QUOTIENT + 2] - adc b - ld [H_QUOTIENT + 2], a - ret - -GainedText: ; 554b2 (15:54b2) - TX_FAR _GainedText - db $08 ; asm - ld a, [wBoostExpByExpAll] - ld hl, WithExpAllText - and a - ret nz - ld hl, ExpPointsText - ld a, [wGainBoostedExp] - and a - ret z - ld hl, BoostedText - ret - -WithExpAllText: ; 554cb (15:54cb) - TX_FAR _WithExpAllText - db $08 ; asm - ld hl, ExpPointsText - ret - -BoostedText: ; 554d4 (15:54d4) - TX_FAR _BoostedText - -ExpPointsText: ; 554d8 (15:54d8) - TX_FAR _ExpPointsText - db "@" - -GrewLevelText: ; 554dd (15:54dd) - TX_FAR _GrewLevelText - db $0b - db "@" |
