shithub: pokered

Download patch

ref: 7ab43f4d17aa63d4ef1050d80560379f19200088
parent: b0aa4cb14a602bc2acf15bc0f2591a94a30487a2
author: Rangi <remy.oukaour+rangi42@gmail.com>
date: Sun Jul 5 12:41:45 EDT 2020

Port _RemovePokemon documentation from pokeyellow

--- a/engine/pokemon/remove_mon.asm
+++ b/engine/pokemon/remove_mon.asm
@@ -2,9 +2,9 @@
 	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 @@
 	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 @@
 	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 @@
 	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
--- a/wram.asm
+++ b/wram.asm
@@ -2216,6 +2216,7 @@
 
 wPartyMonOT::    ds NAME_LENGTH * PARTY_LENGTH
 wPartyMonNicks:: ds NAME_LENGTH * PARTY_LENGTH
+wPartyMonNicksEnd::
 
 wPartyDataEnd::