diff options
Diffstat (limited to 'engine/pokemon')
-rwxr-xr-x | engine/pokemon/move_mon.asm | 8 | ||||
-rw-r--r-- | engine/pokemon/move_mon_wo_mail.asm | 133 |
2 files changed, 137 insertions, 4 deletions
diff --git a/engine/pokemon/move_mon.asm b/engine/pokemon/move_mon.asm index 7198910d..5fce891f 100755 --- a/engine/pokemon/move_mon.asm +++ b/engine/pokemon/move_mon.asm @@ -406,7 +406,7 @@ AddTempmonToParty: ; da9c (3:5a9c) ld a, [wFirstUnownSeen] and a jr nz, .asm_db43 - ld a, [wd11e] + ld a, [wUnownLetter] ld [wFirstUnownSeen], a .asm_db43 and a @@ -604,7 +604,7 @@ SendGetMonIntoFromBox: ; db45 (3:5b45) ld a, [sBoxCount] dec a ld b, a - call Functiondcbc + call RestorePPOfDepositedPokemon Functiondcb2: ; dcb2 (3:5cb2) call CloseSRAM and a @@ -615,7 +615,7 @@ Functiondcb7: ; dcb7 (3:5cb7) scf ret -Functiondcbc: ; dcbc (3:5cbc) +RestorePPOfDepositedPokemon: ld a, b ld hl, sBoxMon1Species ld bc, BOXMON_STRUCT_LENGTH @@ -947,7 +947,7 @@ SendMonIntoBox: ; de74 (3:5e74) ld bc, $4 call CopyBytes ld b, $0 - call Functiondcbc + call RestorePPOfDepositedPokemon call CloseSRAM scf ret diff --git a/engine/pokemon/move_mon_wo_mail.asm b/engine/pokemon/move_mon_wo_mail.asm new file mode 100644 index 00000000..79f70d05 --- /dev/null +++ b/engine/pokemon/move_mon_wo_mail.asm @@ -0,0 +1,133 @@ +InsertPokemonIntoBox: + ld a, BANK(sBoxCount) + call OpenSRAM + ld hl, sBoxCount + call InsertSpeciesIntoBoxOrParty + ld a, [sBoxCount] + dec a + ld [wNextBoxOrPartyIndex], a + ld hl, sBoxMonNicknames + ld bc, MON_NAME_LENGTH + ld de, wBufferMonNick + call InsertDataIntoBoxOrParty + ld a, [sBoxCount] + dec a + ld [wNextBoxOrPartyIndex], a + ld hl, sBoxMonOT + ld bc, NAME_LENGTH + ld de, wBufferMonOT + call InsertDataIntoBoxOrParty + ld a, [sBoxCount] + dec a + ld [wNextBoxOrPartyIndex], a + ld hl, sBoxMons + ld bc, BOXMON_STRUCT_LENGTH + ld de, wBufferMon + call InsertDataIntoBoxOrParty + ld hl, wBufferMonMoves + ld de, wTempMonMoves + ld bc, NUM_MOVES + call CopyBytes + ld hl, wBufferMonPP + ld de, wTempMonPP + ld bc, NUM_MOVES + call CopyBytes + ld a, [wCurPartyMon] + ld b, a + farcall RestorePPOfDepositedPokemon + jp CloseSRAM + +InsertPokemonIntoParty: + ld hl, wPartyCount + call InsertSpeciesIntoBoxOrParty + ld a, [wPartyCount] + dec a + ld [wNextBoxOrPartyIndex], a + ld hl, wPartyMonNicknames + ld bc, MON_NAME_LENGTH + ld de, wBufferMonNick + call InsertDataIntoBoxOrParty + ld a, [wPartyCount] + dec a + ld [wNextBoxOrPartyIndex], a + ld hl, wPartyMonOT + ld bc, NAME_LENGTH + ld de, wBufferMonOT + call InsertDataIntoBoxOrParty + ld a, [wPartyCount] + dec a + ld [wNextBoxOrPartyIndex], a + ld hl, wPartyMons + ld bc, PARTYMON_STRUCT_LENGTH + ld de, wBufferMon + call InsertDataIntoBoxOrParty + ret + +InsertSpeciesIntoBoxOrParty: + inc [hl] + inc hl + ld a, [wCurPartyMon] + ld c, a + ld b, 0 + add hl, bc + ld a, [wCurPartySpecies] + ld c, a +.loop + ld a, [hl] + ld [hl], c + inc hl + inc c + ld c, a + jr nz, .loop + ret + +InsertDataIntoBoxOrParty: + push de + push hl + push bc + ld a, [wNextBoxOrPartyIndex] + dec a + call AddNTimes + push hl + add hl, bc + ld d, h + ld e, l + pop hl +.loop + push bc + ld a, [wNextBoxOrPartyIndex] + ld b, a + ld a, [wCurPartyMon] + cp b + pop bc + jr z, .insert + push hl + push de + push bc + call CopyBytes + pop bc + pop de + pop hl + push hl + ld a, l + sub c + ld l, a + ld a, h + sbc b + ld h, a + pop de + ld a, [wNextBoxOrPartyIndex] + dec a + ld [wNextBoxOrPartyIndex], a + jr .loop + +.insert + pop bc + pop hl + ld a, [wCurPartyMon] + call AddNTimes + ld d, h + ld e, l + pop hl + call CopyBytes + ret |