MenuMonIconColors:: INCLUDE "data/mon_icon_pals.asm" LoadOverworldMonIcon: ; 8e82b ld a, e ld [CurIcon], a ld l, a ld h, 0 add hl, hl ld de, IconPointers add hl, de ld a, [hli] ld e, a ld d, [hl] jp GetMonIconBank ; 8e83f SetMenuMonIconColor: push hl push de push bc push af ld a, [wd265] ld [CurPartySpecies], a call GetMenuMonIconPalette ld hl, Sprites + 3 jr ProcessMenuMonIconColor SetMenuMonIconColor_NoShiny: push hl push de push bc push af ld a, [wd265] ld [CurPartySpecies], a and a call GetMenuMonIconPalette_PredeterminedShininess ld hl, Sprites + 3 jr ProcessMenuMonIconColor LoadPartyMenuMonIconColors: push hl push de push bc push af ld a, [PartyCount] sub c ld [CurPartyMon], a ld d, 0 ld e, a ld hl, PartySpecies add hl, de ld a, [hl] ld [CurPartySpecies], a ;ld a, MON_DVS ; this will not work for us. SHINYFAIL call GetPartyParamLocation ; apparently, MonType doens't get updated when calling the party screen ; so we force it to work this way ld a, PARTYMON ld [MonType], a call GetMenuMonIconPalette push af ld hl, Sprites + 3 ld a, [CurPartyMon] swap a ld d, 0 ld e, a add hl, de pop af ProcessMenuMonIconColor: ld c, 4 ld de, 4 .colorIcon ld [hl], a add hl, de dec c jr nz, .colorIcon pop af pop bc pop de pop hl ret GetMenuMonIconPalette:: ; check shininess callba GetShiny jr nc, .not_shiny scf jr GetMenuMonIconPalette_PredeterminedShininess .not_shiny and a GetMenuMonIconPalette_PredeterminedShininess: push af ld a, [CurPartySpecies] dec a ld c, a ld b, 0 ld hl, MenuMonIconColors add hl, bc ld e, [hl] pop af ld a, e jr c, .shiny swap a .shiny and $f ld l, a ret LoadPartyMenuMonIcon: call LoadPartyMenuMonIconColors push hl push de push bc call InitPartyMenuIcon call .SpawnItemIcon call SetPartyMonIconAnimSpeed pop bc pop de pop hl 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 farcall ItemIsMail pop bc pop hl jr c, .mail ld a, SPRITE_ANIM_FRAMESET_03 jr .okay .mail ld a, SPRITE_ANIM_FRAMESET_02 .okay ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc ld [hl], a ret LoadNamingScreenMonIcon: push hl push de push bc ;ld hl, TempMonDVs ; this will not work for us. SHINYFAIL call SetMenuMonIconColor ld a, [wd265] ld [CurIcon], a xor a call GetIconGFX depixel 4, 4, 4, 0 ld a, SPRITE_ANIM_INDEX_00 call InitSpriteAnimStruct ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID add hl, bc ld [hl], SPRITE_ANIM_SEQ_NULL pop bc pop de pop hl ret LoadMoveMenuMonIcon: push hl push de push bc ;ld a, MON_DVS ; this will not work for us. SHINYFAIL call GetPartyParamLocation call SetMenuMonIconColor ld a, [wd265] ld [CurIcon], a xor a call GetIconGFX lb de, 3 * 8 + 2, 4 * 8 + 4 ld a, SPRITE_ANIM_INDEX_00 call InitSpriteAnimStruct ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID add hl, bc ld [hl], SPRITE_ANIM_SEQ_NULL pop bc pop de pop hl ret LoadTradeAnimationMonIcon: push hl push de push bc call SetMenuMonIconColor_NoShiny ld a, [wd265] ld [CurIcon], a ld a, $62 ld [wCurIconTile], a call GetMemIconGFX pop bc pop de pop hl 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] ld [CurIcon], a call GetMemIconGFX ld a, [hObjectStructIndexBuffer] ; y coord rept 4 add a endr add $1c ld d, a ; x coord ld e, $10 ; type is partymon icon ld a, SPRITE_ANIM_INDEX_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) farcall PlacePartymonHPBar 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, $40, $80 ; 8e961 PokegearFlyMap_GetMonIcon: ; 8e9ac ; Load species icon into VRAM at tile a push de ld a, [wd265] ld [CurIcon], a pop de ld a, e jp GetIconGFX ; 8e9bc FlyFunction_GetMonIcon: ; 8e9bc (23:69bc) push de ld a, [wd265] ld [CurIcon], a pop de ld a, e jp GetIcon_a ; 8e9cc (23:69cc) GetMemIconGFX: ; 8e9db (23:69db) ld a, [wCurIconTile] GetIconGFX: ; 8e9de call GetIcon_a ld de, $80 ; 8 tiles add hl, de ld de, HeldItemIcons lb bc, BANK(HeldItemIcons), 2 call Request2bpp ld a, [wCurIconTile] add 10 ld [wCurIconTile], a ret HeldItemIcons: INCBIN "gfx/icon/mail.2bpp" INCBIN "gfx/icon/item.2bpp" ; 8ea17 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 call GetMonIconBank call Request2bpp pop hl ret ; 8ea3f ; routine by com3tiin ; http://www.pokecommunity.com/showthread.php?t=338470 GetMonIconBank: ld a, [CurIcon] cp a, $80 lb bc, BANK(Icons1), 8 ret c lb bc, BANK(Icons2), 8 ret FreezeMonIcons: ; 8ea4a ld hl, wSpriteAnimationStructs ld e, PARTY_LENGTH ld a, [wMenuCursorY] ld d, a .loop ld a, [hl] and a jr z, .next cp d jr z, .loadwithtwo ld a, SPRITE_ANIM_SEQ_NULL jr .ok .loadwithtwo ld a, SPRITE_ANIM_SEQ_02 .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_01 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_03 jr .join_back .is_switchmon ld a, SPRITE_ANIM_SEQ_02 .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