Remove all code from main.asm (some labeled INCBINs, like out-of-context graphics, are still present)
engine/routines/ stores isolated out-of-context routines as individual files. It might be preferable later to append them to their related engine/ files in unique little SECTIONs, relying on the linkerscript to place them appropriately; or some other organization method. In the meantime, they're now easily findable apart from main.asm's other content.
This commit is contained in:
229
engine/routines/correcterrorsinplayerparty.asm
Normal file
229
engine/routines/correcterrorsinplayerparty.asm
Normal file
@@ -0,0 +1,229 @@
|
||||
CorrectErrorsInPlayerParty: ; unreferenced
|
||||
ld hl, PartyCount
|
||||
ld a, [hl]
|
||||
and a
|
||||
ret z
|
||||
|
||||
cp PARTY_LENGTH + 1
|
||||
jr c, .party_length_okay
|
||||
ld a, PARTY_LENGTH
|
||||
ld [hl], a
|
||||
.party_length_okay
|
||||
inc hl
|
||||
|
||||
ld b, a
|
||||
ld c, 0
|
||||
.loop1
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .invalid_species
|
||||
cp NUM_POKEMON + 1
|
||||
jr z, .invalid_species
|
||||
cp EGG + 1
|
||||
jr c, .next_species
|
||||
|
||||
.invalid_species
|
||||
ld [hl], SMEARGLE
|
||||
push hl
|
||||
push bc
|
||||
ld a, c
|
||||
ld hl, PartyMon1Species
|
||||
call GetPartyLocation
|
||||
ld [hl], SMEARGLE
|
||||
pop bc
|
||||
pop hl
|
||||
|
||||
.next_species
|
||||
inc hl
|
||||
inc c
|
||||
dec b
|
||||
jr nz, .loop1
|
||||
ld [hl], $ff
|
||||
|
||||
ld hl, PartyMon1
|
||||
ld a, [PartyCount]
|
||||
ld d, a
|
||||
ld e, 0
|
||||
.loop2
|
||||
push de
|
||||
push hl
|
||||
ld b, h
|
||||
ld c, l
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .invalid_species_2
|
||||
cp NUM_POKEMON + 1
|
||||
jr c, .check_level
|
||||
|
||||
.invalid_species_2
|
||||
ld [hl], SMEARGLE
|
||||
push de
|
||||
ld d, 0
|
||||
ld hl, PartySpecies
|
||||
add hl, de
|
||||
pop de
|
||||
ld a, SMEARGLE
|
||||
ld [hl], a
|
||||
|
||||
.check_level
|
||||
ld [CurSpecies], a
|
||||
call GetBaseData
|
||||
ld hl, MON_LEVEL
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp MIN_LEVEL
|
||||
ld a, MIN_LEVEL
|
||||
jr c, .invalid_level
|
||||
ld a, [hl]
|
||||
cp MAX_LEVEL
|
||||
jr c, .load_level
|
||||
ld a, MAX_LEVEL
|
||||
.invalid_level
|
||||
ld [hl], a
|
||||
.load_level
|
||||
ld [CurPartyLevel], a
|
||||
|
||||
ld hl, MON_MAXHP
|
||||
add hl, bc
|
||||
ld d, h
|
||||
ld e, l
|
||||
ld hl, MON_STAT_EXP - 1
|
||||
add hl, bc
|
||||
ld b, $1
|
||||
predef CalcPkmnStats
|
||||
pop hl
|
||||
ld bc, PARTYMON_STRUCT_LENGTH
|
||||
add hl, bc
|
||||
pop de
|
||||
inc e
|
||||
dec d
|
||||
jr nz, .loop2
|
||||
|
||||
ld de, PartyMonNicknames
|
||||
ld a, [PartyCount]
|
||||
ld b, a
|
||||
ld c, 0
|
||||
.loop3
|
||||
push bc
|
||||
call .GetLengthOfStringWith6CharCap
|
||||
push de
|
||||
farcall CheckStringForErrors
|
||||
pop hl
|
||||
pop bc
|
||||
jr nc, .valid_nickname
|
||||
|
||||
push bc
|
||||
push hl
|
||||
ld hl, PartySpecies
|
||||
push bc
|
||||
ld b, 0
|
||||
add hl, bc
|
||||
pop bc
|
||||
ld a, [hl]
|
||||
cp EGG
|
||||
ld hl, .TAMAGO
|
||||
jr z, .got_nickname
|
||||
ld [wd265], a
|
||||
call GetPokemonName
|
||||
ld hl, StringBuffer1
|
||||
.got_nickname
|
||||
pop de
|
||||
ld bc, PKMN_NAME_LENGTH
|
||||
call CopyBytes
|
||||
pop bc
|
||||
|
||||
.valid_nickname
|
||||
inc c
|
||||
dec b
|
||||
jr nz, .loop3
|
||||
|
||||
ld de, PartyMonOT
|
||||
ld a, [PartyCount]
|
||||
ld b, a
|
||||
ld c, 0
|
||||
.loop4
|
||||
push bc
|
||||
call .GetLengthOfStringWith6CharCap
|
||||
push de
|
||||
farcall CheckStringForErrors
|
||||
pop hl
|
||||
jr nc, .valid_ot_name
|
||||
ld d, h
|
||||
ld e, l
|
||||
ld hl, PlayerName
|
||||
ld bc, NAME_LENGTH
|
||||
call CopyBytes
|
||||
.valid_ot_name
|
||||
pop bc
|
||||
inc c
|
||||
dec b
|
||||
jr nz, .loop4
|
||||
|
||||
ld hl, PartyMon1Moves
|
||||
ld a, [PartyCount]
|
||||
ld b, a
|
||||
.loop5
|
||||
push hl
|
||||
ld c, NUM_MOVES
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .invalid_move
|
||||
cp NUM_ATTACKS + 1
|
||||
jr c, .moves_loop
|
||||
.invalid_move
|
||||
ld [hl], POUND
|
||||
|
||||
.moves_loop
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .fill_invalid_moves
|
||||
cp NUM_ATTACKS + 1
|
||||
jr c, .next_move
|
||||
|
||||
.fill_invalid_moves
|
||||
xor a
|
||||
ld [hli], a
|
||||
dec c
|
||||
jr nz, .fill_invalid_moves
|
||||
jr .next_pokemon
|
||||
|
||||
.next_move
|
||||
inc hl
|
||||
dec c
|
||||
jr nz, .moves_loop
|
||||
|
||||
.next_pokemon
|
||||
pop hl
|
||||
push bc
|
||||
ld bc, PARTYMON_STRUCT_LENGTH
|
||||
add hl, bc
|
||||
pop bc
|
||||
dec b
|
||||
jr nz, .loop5
|
||||
ret
|
||||
; 13b6b
|
||||
|
||||
.TAMAGO: ; 13b6b
|
||||
db "タマゴ@@@"
|
||||
; 13b71
|
||||
|
||||
.GetLengthOfStringWith6CharCap: ; 13b71
|
||||
push de
|
||||
ld c, 1
|
||||
ld b, NAME_LENGTH_JAPANESE
|
||||
.search_loop
|
||||
ld a, [de]
|
||||
cp "@"
|
||||
jr z, .done
|
||||
inc de
|
||||
inc c
|
||||
dec b
|
||||
jr nz, .search_loop
|
||||
dec c
|
||||
dec de
|
||||
ld a, "@"
|
||||
ld [de], a
|
||||
.done
|
||||
pop de
|
||||
ret
|
||||
; 13b87
|
Reference in New Issue
Block a user