pokecrystal/engine/mon_icons.asm

474 lines
7.2 KiB
NASM
Raw Normal View History

2015-12-04 13:46:11 +00:00
LoadOverworldMonIcon: ; 8e82b
ld a, e
call ReadMonMenuIcon
ld l, a
ld h, 0
add hl, hl
ld de, IconPointers
add hl, de
ld a, [hli]
ld e, a
ld d, [hl]
ld b, BANK(Icons)
ld c, 8
ret
; 8e83f
2016-03-02 03:31:21 +00:00
LoadMenuMonIcon: ; 8e83f
2015-12-04 13:46:11 +00:00
push hl
push de
push bc
2016-01-09 21:28:22 +00:00
call .LoadIcon
2015-12-04 13:46:11 +00:00
pop bc
pop de
pop hl
ret
; 8e849
2016-01-09 21:28:22 +00:00
.LoadIcon: ; 8e849
2015-12-04 13:46:11 +00:00
ld d, 0
2016-01-09 21:28:22 +00:00
ld hl, .Jumptable
2015-12-04 13:46:11 +00:00
add hl, de
2016-03-02 03:31:21 +00:00
add hl, de
2015-12-04 13:46:11 +00:00
ld a, [hli]
ld h, [hl]
ld l, a
jp hl
2015-12-04 13:46:11 +00:00
; 8e854
2016-01-09 21:28:22 +00:00
.Jumptable: ; 8e854 (23:6854)
2016-05-16 01:50:31 +00:00
dw PartyMenu_InitAnimatedMonIcon ; party menu
dw NamingScreen_InitAnimatedMonIcon ; naming screen
dw MoveList_InitAnimatedMonIcon ; moves (?)
2016-03-02 03:31:21 +00:00
dw Trade_LoadMonIconGFX ; trade
2016-05-16 01:50:31 +00:00
dw Mobile_InitAnimatedMonIcon ; mobile
2016-03-02 03:31:21 +00:00
dw Mobile_InitPartyMenuBGPal71 ; mobile
dw .GetPartyMenuMonIcon ; unused
2015-12-04 13:46:11 +00:00
2016-01-09 21:28:22 +00:00
.GetPartyMenuMonIcon: ; 8e862 (23:6862)
2015-12-04 13:46:11 +00:00
call InitPartyMenuIcon
2016-01-09 21:28:22 +00:00
call .GetPartyMonItemGFX
2015-12-04 13:46:11 +00:00
call SetPartyMonIconAnimSpeed
ret
2016-01-09 21:28:22 +00:00
.GetPartyMonItemGFX: ; 8e86c (23:686c)
2015-12-04 13:46:11 +00:00
push bc
ld a, [hObjectStructIndexBuffer]
ld hl, PartyMon1Item
ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
pop bc
ld a, [hl]
and a
2016-01-09 21:28:22 +00:00
jr z, .no_item
2015-12-04 13:46:11 +00:00
push hl
push bc
ld d, a
2017-12-24 17:47:30 +00:00
callfar ItemIsMail
2015-12-04 13:46:11 +00:00
pop bc
pop hl
2016-01-09 21:28:22 +00:00
jr c, .not_mail
2015-12-04 13:46:11 +00:00
ld a, $6
2016-01-09 21:28:22 +00:00
jr .got_tile
.not_mail
2015-12-04 13:46:11 +00:00
ld a, $5
2016-01-09 21:28:22 +00:00
; jr .got_tile
.no_item
2015-12-04 13:46:11 +00:00
ld a, $4
2016-01-09 21:28:22 +00:00
.got_tile
2015-12-05 20:38:25 +00:00
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
2015-12-04 13:46:11 +00:00
add hl, bc
ld [hl], a
ret
2016-05-16 01:50:31 +00:00
Mobile_InitAnimatedMonIcon: ; 8e898 (23:6898)
call PartyMenu_InitAnimatedMonIcon
2015-12-04 13:46:11 +00:00
ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
add hl, bc
2016-03-02 03:31:21 +00:00
ld a, SPRITE_ANIM_SEQ_NULL
2015-12-04 13:46:11 +00:00
ld [hl], a
ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
ld a, 9 * 8
ld [hl], a
ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
ld a, 9 * 8
ld [hl], a
ret
2015-12-28 15:57:04 +00:00
Mobile_InitPartyMenuBGPal71: ; 8e8b1 (23:68b1)
2015-12-04 13:46:11 +00:00
call InitPartyMenuIcon
call SetPartyMonIconAnimSpeed
ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
add hl, bc
2016-03-02 03:31:21 +00:00
ld a, SPRITE_ANIM_SEQ_NULL
2015-12-04 13:46:11 +00:00
ld [hl], a
ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
ld a, 3 * 8
ld [hl], a
ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
ld a, 12 * 8
ld [hl], a
ld a, c
ld [wc608], a
ld a, b
ld [wc608 + 1], a
ret
2016-05-16 01:50:31 +00:00
PartyMenu_InitAnimatedMonIcon: ; 8e8d5 (23:68d5)
2015-12-04 13:46:11 +00:00
call InitPartyMenuIcon
call .SpawnItemIcon
call SetPartyMonIconAnimSpeed
ret
.SpawnItemIcon: ; 8e8df (23:68df)
push bc
ld a, [hObjectStructIndexBuffer]
ld hl, PartyMon1Item
ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
pop bc
ld a, [hl]
and a
ret z
push hl
push bc
ld d, a
2017-12-24 17:47:30 +00:00
callfar ItemIsMail
2015-12-04 13:46:11 +00:00
pop bc
pop hl
jr c, .mail
ld a, SPRITE_ANIM_FRAMESET_PARTY_MON_WITH_ITEM
2015-12-04 13:46:11 +00:00
jr .okay
.mail
ld a, SPRITE_ANIM_FRAMESET_PARTY_MON_WITH_MAIL
2015-12-04 13:46:11 +00:00
.okay
2015-12-05 20:38:25 +00:00
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
2015-12-04 13:46:11 +00:00
add hl, bc
ld [hl], a
ret
InitPartyMenuIcon: ; 8e908 (23:6908)
ld a, [wCurIconTile]
push af
ld a, [hObjectStructIndexBuffer]
ld hl, PartySpecies
ld e, a
ld d, $0
add hl, de
ld a, [hl]
call ReadMonMenuIcon
ld [CurIcon], a
call GetMemIconGFX
ld a, [hObjectStructIndexBuffer]
; y coord
add a
add a
add a
add a
2015-12-04 13:46:11 +00:00
add $1c
ld d, a
; x coord
ld e, $10
; type is partymon icon
ld a, SPRITE_ANIM_INDEX_PARTY_MON
2015-12-04 13:46:11 +00:00
call InitSpriteAnimStruct
pop af
ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], a
ret
SetPartyMonIconAnimSpeed: ; 8e936 (23:6936)
push bc
ld a, [hObjectStructIndexBuffer]
ld b, a
call .getspeed
ld a, b
pop bc
ld hl, SPRITEANIMSTRUCT_DURATIONOFFSET
add hl, bc
ld [hl], a
rlca
rlca
ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld [hl], a
ret
.getspeed ; 8e94c (23:694c)
2017-12-24 17:47:30 +00:00
farcall PlacePartymonHPBar
2015-12-04 13:46:11 +00:00
call GetHPPal
ld e, d
ld d, 0
ld hl, .speeds
add hl, de
ld b, [hl]
ret
; 8e95e (23:695e)
.speeds ; 8e95e
db $00 ; HP_GREEN
db $40 ; HP_YELLOW
db $80 ; HP_RED
2015-12-04 13:46:11 +00:00
; 8e961
2016-05-16 01:50:31 +00:00
NamingScreen_InitAnimatedMonIcon: ; 8e961 (23:6961)
2015-12-04 13:46:11 +00:00
ld a, [wd265]
call ReadMonMenuIcon
ld [CurIcon], a
xor a
call GetIconGFX
depixel 4, 4, 4, 0
ld a, SPRITE_ANIM_INDEX_PARTY_MON
2015-12-04 13:46:11 +00:00
call InitSpriteAnimStruct
ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
add hl, bc
2016-03-02 03:31:21 +00:00
ld [hl], SPRITE_ANIM_SEQ_NULL
2015-12-04 13:46:11 +00:00
ret
2016-05-16 01:50:31 +00:00
MoveList_InitAnimatedMonIcon: ; 8e97d (23:697d)
2015-12-04 13:46:11 +00:00
ld a, [wd265]
call ReadMonMenuIcon
ld [CurIcon], a
xor a
call GetIconGFX
ld d, 3 * 8 + 2 ; depixel 3, 4, 2, 4
2015-12-04 13:46:11 +00:00
ld e, 4 * 8 + 4
ld a, SPRITE_ANIM_INDEX_PARTY_MON
2015-12-04 13:46:11 +00:00
call InitSpriteAnimStruct
ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
add hl, bc
2015-12-19 01:07:09 +00:00
ld [hl], SPRITE_ANIM_SEQ_NULL
2015-12-04 13:46:11 +00:00
ret
2016-01-09 21:28:22 +00:00
Trade_LoadMonIconGFX: ; 8e99a (23:699a)
2015-12-04 13:46:11 +00:00
ld a, [wd265]
call ReadMonMenuIcon
ld [CurIcon], a
ld a, $62
ld [wCurIconTile], a
call GetMemIconGFX
ret
GetSpeciesIcon: ; 8e9ac
; Load species icon into VRAM at tile a
push de
ld a, [wd265]
call ReadMonMenuIcon
ld [CurIcon], a
pop de
ld a, e
call GetIconGFX
ret
; 8e9bc
FlyFunction_GetMonIcon: ; 8e9bc (23:69bc)
push de
ld a, [wd265]
call ReadMonMenuIcon
ld [CurIcon], a
pop de
ld a, e
call GetIcon_a
ret
; 8e9cc (23:69cc)
GetMonIcon2: ; 8e9cc
; unreferenced
push de
ld a, [wd265]
call ReadMonMenuIcon
ld [CurIcon], a
pop de
call GetIcon_de
ret
; 8e9db
GetMemIconGFX: ; 8e9db (23:69db)
ld a, [wCurIconTile]
GetIconGFX: ; 8e9de
call GetIcon_a
ld de, 8 tiles
2015-12-04 13:46:11 +00:00
add hl, de
ld de, HeldItemIcons
lb bc, BANK(HeldItemIcons), 2
call GetGFXUnlessMobile
ld a, [wCurIconTile]
add 10
ld [wCurIconTile], a
ret
HeldItemIcons:
INCBIN "gfx/icon/mail.2bpp"
INCBIN "gfx/icon/item.2bpp"
; 8ea17
GetIcon_de: ; 8ea17
; Load icon graphics into VRAM starting from tile de.
ld l, e
ld h, d
jr GetIcon
GetIcon_a: ; 8ea1b
; Load icon graphics into VRAM starting from tile a.
ld l, a
ld h, 0
GetIcon: ; 8ea1e
; Load icon graphics into VRAM starting from tile hl.
; One tile is 16 bytes long.
rept 4
add hl, hl
endr
ld de, VTiles0
add hl, de
push hl
; The icons are contiguous, in order and of the same
; size, so the pointer table is somewhat redundant.
ld a, [CurIcon]
push hl
ld l, a
ld h, 0
add hl, hl
ld de, IconPointers
add hl, de
ld a, [hli]
ld e, a
ld d, [hl]
pop hl
lb bc, BANK(Icons), 8
call GetGFXUnlessMobile
pop hl
ret
; 8ea3f
GetGFXUnlessMobile: ; 8ea3f
ld a, [wLinkMode]
cp LINK_MOBILE
jp nz, Request2bpp
jp Get2bpp_2
; 8ea4a
FreezeMonIcons: ; 8ea4a
ld hl, wSpriteAnimationStructs
ld e, PARTY_LENGTH
2015-12-15 23:59:49 +00:00
ld a, [wMenuCursorY]
2015-12-04 13:46:11 +00:00
ld d, a
.loop
ld a, [hl]
and a
jr z, .next
cp d
jr z, .loadwithtwo
2015-12-19 01:07:09 +00:00
ld a, SPRITE_ANIM_SEQ_NULL
2015-12-04 13:46:11 +00:00
jr .ok
.loadwithtwo
ld a, SPRITE_ANIM_SEQ_PARTY_MON_SWITCH
2015-12-04 13:46:11 +00:00
.ok
push hl
ld c, l
ld b, h
ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
add hl, bc
ld [hl], a
pop hl
.next
ld bc, $10
add hl, bc
dec e
jr nz, .loop
ret
; 8ea71
UnfreezeMonIcons: ; 8ea71
ld hl, wSpriteAnimationStructs
ld e, PARTY_LENGTH
.loop
ld a, [hl]
and a
jr z, .next
push hl
ld c, l
ld b, h
ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
add hl, bc
ld [hl], SPRITE_ANIM_SEQ_PARTY_MON
2015-12-04 13:46:11 +00:00
pop hl
.next
ld bc, $10
add hl, bc
dec e
jr nz, .loop
ret
; 8ea8c (23:6a8c)
HoldSwitchmonIcon: ; 8ea8c
ld hl, wSpriteAnimationStructs
ld e, PARTY_LENGTH
ld a, [wSwitchMon]
ld d, a
.loop
ld a, [hl]
and a
jr z, .next
cp d
jr z, .is_switchmon
ld a, SPRITE_ANIM_SEQ_PARTY_MON_SELECTED
2015-12-04 13:46:11 +00:00
jr .join_back
.is_switchmon
ld a, SPRITE_ANIM_SEQ_PARTY_MON_SWITCH
2015-12-04 13:46:11 +00:00
.join_back
push hl
ld c, l
ld b, h
ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
add hl, bc
ld [hl], a
pop hl
.next
ld bc, $10
add hl, bc
dec e
jr nz, .loop
ret
ReadMonMenuIcon: ; 8eab3
cp EGG
jr z, .egg
dec a
ld hl, MonMenuIcons
ld e, a
ld d, 0
add hl, de
ld a, [hl]
ret
.egg
ld a, ICON_EGG
ret
; 8eac4
INCLUDE "data/pokemon/menu_icons.asm"
INCLUDE "gfx/icon_pointers.asm"
INCLUDE "gfx/icons.asm"