diff options
-rw-r--r-- | engine/pokemon/remove_mon.asm | 66 | ||||
-rwxr-xr-x | wram.asm | 1 |
2 files changed, 34 insertions, 33 deletions
diff --git a/engine/pokemon/remove_mon.asm b/engine/pokemon/remove_mon.asm index 6f7e91d6..c85b96bf 100644 --- a/engine/pokemon/remove_mon.asm +++ b/engine/pokemon/remove_mon.asm @@ -2,9 +2,9 @@ _RemovePokemon:: ld hl, wPartyCount ld a, [wRemoveMonFromBox] and a - jr z, .asm_7b74 + jr z, .usePartyCount ld hl, wNumInBox -.asm_7b74 +.usePartyCount ld a, [hl] dec a ld [hli], a @@ -15,28 +15,28 @@ _RemovePokemon:: ld e, l ld d, h inc de -.asm_7b81 +.shiftMonSpeciesLoop ld a, [de] inc de ld [hli], a - inc a - jr nz, .asm_7b81 + inc a ; reached terminator? + jr nz, .shiftMonSpeciesLoop ; if not, continue shifting species ld hl, wPartyMonOT - ld d, $5 + ld d, PARTY_LENGTH - 1 ; max number of pokemon to shift ld a, [wRemoveMonFromBox] and a - jr z, .asm_7b97 + jr z, .usePartyMonOTs ld hl, wBoxMonOT - ld d, $13 -.asm_7b97 + ld d, MONS_PER_BOX - 1 +.usePartyMonOTs ld a, [wWhichPokemon] call SkipFixedLengthTextEntries ld a, [wWhichPokemon] - cp d - jr nz, .asm_7ba6 - ld [hl], $ff + cp d ; are we removing the last pokemon? + jr nz, .notRemovingLastMon ; if not, shift the pokemon below + ld [hl], $ff ; else, write the terminator and return ret -.asm_7ba6 +.notRemovingLastMon ld d, h ld e, l ld bc, NAME_LENGTH @@ -44,41 +44,41 @@ _RemovePokemon:: ld bc, wPartyMonNicks ld a, [wRemoveMonFromBox] and a - jr z, .asm_7bb8 + jr z, .usePartyMonNicks ld bc, wBoxMonNicks -.asm_7bb8 +.usePartyMonNicks call CopyDataUntil ld hl, wPartyMons ld bc, wPartyMon2 - wPartyMon1 ld a, [wRemoveMonFromBox] and a - jr z, .asm_7bcd + jr z, .usePartyMonStructs ld hl, wBoxMons ld bc, wBoxMon2 - wBoxMon1 -.asm_7bcd +.usePartyMonStructs ld a, [wWhichPokemon] - call AddNTimes - ld d, h + call AddNTimes ; get address of the pokemon removed + ld d, h ; store in de for CopyDataUntil ld e, l ld a, [wRemoveMonFromBox] and a - jr z, .asm_7be4 + jr z, .copyUntilPartyMonOTs ld bc, wBoxMon2 - wBoxMon1 - add hl, bc - ld bc, wBoxMonOT - jr .asm_7beb -.asm_7be4 + add hl, bc ; get address of pokemon after the pokemon removed + ld bc, wBoxMonOT ; address of when to stop copying + jr .continue +.copyUntilPartyMonOTs ld bc, wPartyMon2 - wPartyMon1 - add hl, bc - ld bc, wPartyMonOT -.asm_7beb - call CopyDataUntil + add hl, bc ; get address of pokemon after the pokemon removed + ld bc, wPartyMonOT ; address of when to stop copying +.continue + call CopyDataUntil ; shift all pokemon data after the removed mon to the removed mon's location ld hl, wPartyMonNicks ld a, [wRemoveMonFromBox] and a - jr z, .asm_7bfa + jr z, .usePartyMonNicks2 ld hl, wBoxMonNicks -.asm_7bfa +.usePartyMonNicks2 ld bc, NAME_LENGTH ld a, [wWhichPokemon] call AddNTimes @@ -86,10 +86,10 @@ _RemovePokemon:: ld e, l ld bc, NAME_LENGTH add hl, bc - ld bc, wPokedexOwned + ld bc, wPartyMonNicksEnd ld a, [wRemoveMonFromBox] and a - jr z, .asm_7c15 + jr z, .copyUntilPartyMonNicksEnd ld bc, wBoxMonNicksEnd -.asm_7c15 +.copyUntilPartyMonNicksEnd jp CopyDataUntil @@ -2216,6 +2216,7 @@ wPartyMon6:: party_struct wPartyMon6 wPartyMonOT:: ds NAME_LENGTH * PARTY_LENGTH wPartyMonNicks:: ds NAME_LENGTH * PARTY_LENGTH +wPartyMonNicksEnd:: wPartyDataEnd:: |