Player management [Commit 1] (#38)

This commit is contained in:
xCrystal
2024-03-08 18:56:26 +01:00
parent bb0240e279
commit dbb340515f
18 changed files with 120 additions and 200 deletions

View File

@@ -8755,7 +8755,6 @@ GetTrainerBackpic:
; Load the player character's backpic (6x6) into VRAM starting from vTiles2 tile $31.
; Special exception for Dude.
ld b, BANK(DudeBackpic)
ld hl, DudeBackpic
ld a, [wBattleType]
cp BATTLETYPE_TUTORIAL
@@ -8763,21 +8762,12 @@ GetTrainerBackpic:
; What gender are we?
ld a, [wPlayerGender]
bit PLAYERGENDER_FEMALE_F, a
jr z, .Chris
; It's a girl.
farcall GetKrisBackpic
ret
.Chris:
; It's a boy.
ld b, BANK(ChrisBackpic)
ld hl, ChrisBackpic
.Decompress:
ld e, PLAYERDATA_BACKPIC
call GetPlayerField
.Decompress
ld de, vTiles2 tile $31
ld c, 7 * 7
ld b, BANK(ChrisBackpic)
predef DecompressGet2bpp
ret

View File

@@ -4,12 +4,11 @@ LoadFishingGFX:
ld a, $1
ldh [rVBK], a
ld de, FishingGFX
ld a, [wPlayerGender]
bit PLAYERGENDER_FEMALE_F, a
jr z, .got_gender
ld de, KrisFishingGFX
.got_gender
ld e, PLAYERDATA_FISHING_SPRITE
call GetPlayerField
ld d, h
ld e, l
ld hl, vTiles0 tile $02
call .LoadGFX

View File

@@ -504,13 +504,8 @@ GetPlayerOrMonPalettePointer:
and a
jp nz, GetMonNormalOrShinyPalettePointer
ld a, [wPlayerGender]
and a
jr z, .male
ld hl, KrisPalette
ret
.male
ld hl, PlayerPalette
ld e, PLAYERDATA_PIC_PAL
call GetPlayerField
ret
GetFrontpicPalettePointer:

View File

@@ -288,25 +288,6 @@ EXPORT PICS_FIX
db BANK("Pics 23") ; BANK("Pics 1") + 22
db BANK("Pics 24") ; BANK("Pics 1") + 23
GSIntro_GetMonFrontpic: ; unreferenced
ld a, c
push de
ld hl, PokemonPicPointers
dec a
ld bc, 6
call AddNTimes
ld a, BANK(PokemonPicPointers)
call GetFarByte
call FixPicBank
push af
inc hl
ld a, BANK(PokemonPicPointers)
call GetFarWord
pop af
pop de
call FarDecompress
ret
GetTrainerPic:
ld a, [wTrainerClass]
and a

View File

@@ -58,7 +58,7 @@ ShowPlayerNamingChoices:
call CloseWindow
ret
INCLUDE "data/player_names.asm"
INCLUDE "data/players/names.asm"
GetPlayerIcon:
ld de, ChrisSpriteGFX
@@ -100,16 +100,11 @@ INCBIN "gfx/trainer_card/trainer_card.2bpp"
GetPlayerBackpic:
ld a, [wPlayerGender]
bit PLAYERGENDER_FEMALE_F, a
jr z, GetChrisBackpic
call GetKrisBackpic
ret
GetChrisBackpic:
ld hl, ChrisBackpic
ld b, BANK(ChrisBackpic)
ld e, PLAYERDATA_BACKPIC
call GetPlayerField
ld de, vTiles2 tile $31
ld c, 7 * 7
ld b, BANK(ChrisBackpic)
predef DecompressGet2bpp
ret
@@ -177,20 +172,3 @@ DrawIntroPlayerPic:
lb bc, 7, 7
predef PlaceGraphic
ret
ChrisPic:
INCBIN "gfx/player/chris.2bpp"
KrisPic:
INCBIN "gfx/player/kris.2bpp"
GetKrisBackpic:
; Kris's backpic is uncompressed.
ld de, KrisBackpic
ld hl, vTiles2 tile $31
lb bc, BANK(KrisBackpic), 7 * 7 ; dimensions
call Get2bpp
ret
KrisBackpic:
INCBIN "gfx/player/kris_back.2bpp"

View File

@@ -52,15 +52,11 @@ RefreshSprites::
call LoadAndSortSprites
ret
GetPlayerSprite:
; Get Chris or Kris's sprite.
ld hl, ChrisStateSprites
DeterminePlayerSprite:
; Return player's sprite in c and a.
ld a, [wPlayerGender]
bit PLAYERGENDER_FEMALE_F, a
jr z, .go
ld hl, KrisStateSprites
.go
ld e, PLAYERDATA_STATE_SPRITES
call GetPlayerField
ld a, [wPlayerState]
ld c, a
.loop
@@ -75,12 +71,16 @@ GetPlayerSprite:
xor a ; ld a, PLAYER_NORMAL
ld [wPlayerState], a
ld a, SPRITE_CHRIS
jr .finish
ret
.good
ld a, [hl]
ld c, a
ret
.finish
GetPlayerSprite:
; Get player's sprite in a.
call DeterminePlayerSprite
ld [wUsedSprites + 0], a
ld [wPlayerSprite], a
ld [wPlayerObjectSprite], a

View File

@@ -944,33 +944,19 @@ MockPlayerObject::
ld bc, OBJECT_EVENT_SIZE + 1
call CopyBytes
; adjust sprite id and palette number
ld hl, .PlayerObjectFields
.loop
; adjust palette number
ld a, [wPlayerGender]
cp [hl]
inc hl
jr nz, .next1
ld a, [wPlayerState]
cp [hl]
inc hl
jr nz, .next2
; found a match
ld a, [hli] ; sprite
ld [wMapObject{d:LAST_OBJECT}Sprite], a
ld a, [hl] ; palette | objecttype
ld e, PLAYERDATA_NPC_PAL
call GetPlayerField
swap a
or OBJECTTYPE_SCRIPT
ld [wMapObject{d:LAST_OBJECT}Palette], a ; also wMapObject{d:LAST_OBJECT}Type
jr .copy_player_coords
.next1
inc hl
.next2
inc hl
inc hl
ld a, [hl]
cp -1
jr nz, .loop
.copy_player_coords
; adjust sprite id
farcall DeterminePlayerSprite
ld a, c
ld [wMapObject{d:LAST_OBJECT}Sprite], a
; copy player's coordinates
ld hl, wPlayerMockYCoord
ld de, wMapObject{d:LAST_OBJECT}YCoord
@@ -1001,16 +987,6 @@ MockPlayerObject::
db -1 ; MAPOBJECT_OBJECT_STRUCT_ID
object_event 0, 0, SPRITE_CHRIS, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_RED, OBJECTTYPE_SCRIPT, 0, ObjectEvent, -1
.PlayerObjectFields:
; [wPlayerGender], [wPlayerState], sprite id, palette
db 0, PLAYER_NORMAL, SPRITE_CHRIS, PAL_NPC_RED << 4 | OBJECTTYPE_SCRIPT
db 1 << PLAYERGENDER_FEMALE_F, PLAYER_NORMAL, SPRITE_KRIS, PAL_NPC_BLUE << 4 | OBJECTTYPE_SCRIPT
db 0, PLAYER_SURF, SPRITE_SURF, PAL_NPC_RED << 4 | OBJECTTYPE_SCRIPT
db 1 << PLAYERGENDER_FEMALE_F, PLAYER_SURF, SPRITE_SURF, PAL_NPC_BLUE << 4 | OBJECTTYPE_SCRIPT
db 0, PLAYER_BIKE, SPRITE_CHRIS_BIKE, PAL_NPC_RED << 4 | OBJECTTYPE_SCRIPT
db 1 << PLAYERGENDER_FEMALE_F, PLAYER_BIKE, SPRITE_KRIS_BIKE, PAL_NPC_BLUE << 4 | OBJECTTYPE_SCRIPT
db -1
GetSouthConnectedSpriteCoords:
; ycoord / 2 <= 2
ld a, e