pokecrystal-board/engine/breeding.asm

997 lines
15 KiB
NASM
Raw Normal View History

2015-12-09 15:25:44 -08:00
CheckBreedmonCompatibility: ; 16e1d
call .CheckBreedingGroupCompatibility
ld c, $0
2015-12-09 15:25:44 -08:00
jp nc, .done
ld a, [wBreedMon1Species]
2018-01-23 14:39:09 -08:00
ld [wCurPartySpecies], a
ld a, [wBreedMon1DVs]
2018-01-23 14:39:09 -08:00
ld [wTempMonDVs], a
ld a, [wBreedMon1DVs + 1]
2018-01-23 14:39:09 -08:00
ld [wTempMonDVs + 1], a
2016-05-11 14:16:03 -07:00
ld a, TEMPMON
2018-01-23 14:39:09 -08:00
ld [wMonType], a
predef GetGender
2015-12-09 15:25:44 -08:00
jr c, .genderless
ld b, $1
2015-12-09 15:25:44 -08:00
jr nz, .breedmon2
inc b
2015-12-09 15:25:44 -08:00
.breedmon2
push bc
ld a, [wBreedMon2Species]
2018-01-23 14:39:09 -08:00
ld [wCurPartySpecies], a
ld a, [wBreedMon2DVs]
2018-01-23 14:39:09 -08:00
ld [wTempMonDVs], a
ld a, [wBreedMon2DVs + 1]
2018-01-23 14:39:09 -08:00
ld [wTempMonDVs + 1], a
ld a, $3
2018-01-23 14:39:09 -08:00
ld [wMonType], a
predef GetGender
pop bc
2015-12-09 15:25:44 -08:00
jr c, .genderless
ld a, $1
2015-12-09 15:25:44 -08:00
jr nz, .compare_gender
inc a
2015-12-09 15:25:44 -08:00
.compare_gender
cp b
2015-12-09 15:25:44 -08:00
jr nz, .compute
2015-12-09 15:25:44 -08:00
.genderless
ld c, $0
ld a, [wBreedMon1Species]
cp DITTO
2015-12-09 15:25:44 -08:00
jr z, .ditto1
ld a, [wBreedMon2Species]
cp DITTO
2015-12-09 15:25:44 -08:00
jr nz, .done
jr .compute
2015-12-09 15:25:44 -08:00
.ditto1
ld a, [wBreedMon2Species]
cp DITTO
2015-12-09 15:25:44 -08:00
jr z, .done
2015-12-09 15:25:44 -08:00
.compute
call .CheckDVs
ld c, 255
jp z, .done
ld a, [wBreedMon2Species]
ld b, a
ld a, [wBreedMon1Species]
cp b
2015-12-09 15:25:44 -08:00
ld c, 254
jr z, .compare_ids
ld c, 128
.compare_ids
; Speed up
ld a, [wBreedMon1ID]
ld b, a
ld a, [wBreedMon2ID]
cp b
2015-12-09 15:25:44 -08:00
jr nz, .done
ld a, [wBreedMon1ID + 1]
ld b, a
ld a, [wBreedMon2ID + 1]
cp b
2015-12-09 15:25:44 -08:00
jr nz, .done
ld a, c
2015-12-09 15:25:44 -08:00
sub 77
ld c, a
2015-12-09 15:25:44 -08:00
.done
ld a, c
ld [wd265], a
ret
; 16ebc
2015-12-09 15:25:44 -08:00
.CheckDVs: ; 16ebc (5:6ebc)
; If Defense DVs match and the lower 3 bits of the Special DVs match,
; avoid breeding
ld a, [wBreedMon1DVs]
2015-12-09 15:25:44 -08:00
and %1111
ld b, a
ld a, [wBreedMon2DVs]
2015-12-09 15:25:44 -08:00
and %1111
cp b
ret nz
ld a, [wBreedMon1DVs + 1]
2015-12-09 15:25:44 -08:00
and %111
ld b, a
ld a, [wBreedMon2DVs + 1]
2015-12-09 15:25:44 -08:00
and %111
cp b
ret
; 16ed6
2015-12-09 15:25:44 -08:00
.CheckBreedingGroupCompatibility: ; 16ed6
; If either mon is in the No Eggs group,
; they are not compatible.
ld a, [wBreedMon2Species]
2018-01-23 14:39:09 -08:00
ld [wCurSpecies], a
call GetBaseData
2018-01-23 14:39:09 -08:00
ld a, [wBaseEggGroups]
2015-12-09 15:25:44 -08:00
cp NO_EGGS * $11
jr z, .Incompatible
ld a, [wBreedMon1Species]
2018-01-23 14:39:09 -08:00
ld [wCurSpecies], a
call GetBaseData
2018-01-23 14:39:09 -08:00
ld a, [wBaseEggGroups]
2015-12-09 15:25:44 -08:00
cp NO_EGGS * $11
jr z, .Incompatible
; Ditto is automatically compatible with everything.
; If not Ditto, load the breeding groups into b/c and d/e.
ld a, [wBreedMon2Species]
cp DITTO
2015-12-09 15:25:44 -08:00
jr z, .Compatible
2018-01-23 14:39:09 -08:00
ld [wCurSpecies], a
call GetBaseData
2018-01-23 14:39:09 -08:00
ld a, [wBaseEggGroups]
push af
and $f
ld b, a
pop af
and $f0
swap a
ld c, a
2015-12-09 15:25:44 -08:00
ld a, [wBreedMon1Species]
cp DITTO
2015-12-09 15:25:44 -08:00
jr z, .Compatible
2018-01-23 14:39:09 -08:00
ld [wCurSpecies], a
push bc
call GetBaseData
pop bc
2018-01-23 14:39:09 -08:00
ld a, [wBaseEggGroups]
push af
and $f
ld d, a
pop af
and $f0
swap a
ld e, a
2015-12-09 15:25:44 -08:00
ld a, d
cp b
2015-12-09 15:25:44 -08:00
jr z, .Compatible
cp c
2015-12-09 15:25:44 -08:00
jr z, .Compatible
ld a, e
cp b
2015-12-09 15:25:44 -08:00
jr z, .Compatible
cp c
2015-12-09 15:25:44 -08:00
jr z, .Compatible
.Incompatible:
and a
ret
.Compatible:
scf
ret
; 16f3e
DoEggStep:: ; 16f3e
2018-01-23 14:39:09 -08:00
ld de, wPartySpecies
ld hl, wPartyMon1Happiness
ld c, 0
.loop
ld a, [de]
inc de
cp -1
ret z
cp EGG
jr nz, .next
dec [hl]
jr nz, .next
ld a, 1
and a
ret
.next
push de
ld de, PARTYMON_STRUCT_LENGTH
add hl, de
pop de
jr .loop
; 16f5e
OverworldHatchEgg:: ; 16f5e
call RefreshScreen
2015-11-11 13:11:08 -08:00
call LoadStandardMenuDataHeader
call HatchEggs
2015-11-17 14:56:49 -08:00
call ExitAllMenus
call RestartMapMusic
2015-11-25 07:16:29 -08:00
jp CloseText
; 16f70
HatchEggs: ; 16f70 (5:6f70)
2018-01-23 14:39:09 -08:00
ld de, wPartySpecies
ld hl, wPartyMon1Happiness
xor a
2018-01-23 14:39:09 -08:00
ld [wCurPartyMon], a
.loop ; 16f7a (5:6f7a)
ld a, [de]
inc de
cp -1
jp z, .done
push de
push hl
cp EGG
jp nz, .next
ld a, [hl]
and a
jp nz, .next
ld [hl], $78
push de
2017-12-24 09:47:30 -08:00
farcall SetEggMonCaughtData
farcall StubbedTrainerRankings_EggsHatched
2018-01-23 14:39:09 -08:00
ld a, [wCurPartyMon]
ld hl, wPartyMon1Species
ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld a, [hl]
2018-01-23 14:39:09 -08:00
ld [wCurPartySpecies], a
dec a
call SetSeenAndCaughtMon
2018-01-23 14:39:09 -08:00
ld a, [wCurPartySpecies]
cp TOGEPI
jr nz, .nottogepi
; set the event flag for hatching togepi
ld de, EVENT_TOGEPI_HATCHED
ld b, SET_FLAG
call EventFlagAction
.nottogepi
pop de
2018-01-23 14:39:09 -08:00
ld a, [wCurPartySpecies]
dec de
ld [de], a
ld [wd265], a
2018-01-23 14:39:09 -08:00
ld [wCurSpecies], a
call GetPokemonName
xor a
ld [wd26b], a
call GetBaseData
2018-01-23 14:39:09 -08:00
ld a, [wCurPartyMon]
ld hl, wPartyMon1
ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
push hl
ld bc, MON_MAXHP
add hl, bc
ld d, h
ld e, l
pop hl
push hl
ld bc, MON_LEVEL
add hl, bc
ld a, [hl]
2018-01-23 14:39:09 -08:00
ld [wCurPartyLevel], a
pop hl
push hl
ld bc, MON_STATUS
add hl, bc
xor a
ld [hli], a
ld [hl], a
pop hl
push hl
2015-12-21 11:10:16 -08:00
ld bc, MON_STAT_EXP - 1
add hl, bc
ld b, $0
predef CalcPkmnStats
pop bc
ld hl, MON_MAXHP
add hl, bc
ld d, h
ld e, l
ld hl, MON_HP
add hl, bc
ld a, [de]
inc de
ld [hli], a
ld a, [de]
ld [hl], a
ld hl, MON_ID
add hl, bc
2018-01-23 14:39:09 -08:00
ld a, [wPlayerID]
ld [hli], a
2018-01-23 14:39:09 -08:00
ld a, [wPlayerID + 1]
ld [hl], a
2018-01-23 14:39:09 -08:00
ld a, [wCurPartyMon]
ld hl, wPartyMonOT
ld bc, NAME_LENGTH
call AddNTimes
ld d, h
ld e, l
2018-01-23 14:39:09 -08:00
ld hl, wPlayerName
call CopyBytes
ld hl, .Text_HatchEgg
call PrintText
2018-01-23 14:39:09 -08:00
ld a, [wCurPartyMon]
ld hl, wPartyMonNicknames
2018-01-20 09:25:55 -08:00
ld bc, MON_NAME_LENGTH
call AddNTimes
ld d, h
ld e, l
push de
ld hl, .Text_NicknameHatchling
call PrintText
call YesNoBox
pop de
jr c, .nonickname
ld a, $1
ld [wd26b], a
xor a
2018-01-23 14:39:09 -08:00
ld [wMonType], a
push de
ld b, $0
2017-12-24 09:47:30 -08:00
farcall NamingScreen
pop hl
2018-01-23 14:39:09 -08:00
ld de, wStringBuffer1
call InitName
jr .next
.nonickname
2018-01-23 14:39:09 -08:00
ld hl, wStringBuffer1
2018-01-20 09:25:55 -08:00
ld bc, MON_NAME_LENGTH
call CopyBytes
.next ; 1707d (5:707d)
2018-01-23 14:39:09 -08:00
ld hl, wCurPartyMon
inc [hl]
pop hl
ld de, PARTYMON_STRUCT_LENGTH
add hl, de
pop de
jp .loop
.done ; 1708a (5:708a)
ret
; 1708b (5:708b)
.Text_HatchEgg: ; 0x1708b
; Huh? @ @
text_jump UnknownText_0x1c0db0
start_asm
2018-01-23 14:39:09 -08:00
ld hl, wVramState
res 0, [hl]
push hl
push de
push bc
2018-01-23 14:39:09 -08:00
ld a, [wCurPartySpecies]
push af
call EggHatch_AnimationSequence
ld hl, .ClearTextbox
call PrintText
pop af
2018-01-23 14:39:09 -08:00
ld [wCurPartySpecies], a
pop bc
pop de
pop hl
ld hl, .CameOutOfItsEgg
ret
; 170b0 (5:70b0)
.ClearTextbox: ; 0x170b0
;
text_jump UnknownText_0x1c0db8
db "@"
; 0x170b5
.CameOutOfItsEgg: ; 0x170b5
; came out of its EGG!@ @
text_jump UnknownText_0x1c0dba
db "@"
; 0x170ba
.Text_NicknameHatchling: ; 0x170ba
; Give a nickname to @ ?
text_jump UnknownText_0x1c0dd8
db "@"
; 0x170bf
InitEggMoves: ; 170bf
call GetHeritableMoves
ld d, h
ld e, l
ld b, NUM_MOVES
.loop
ld a, [de]
and a
jr z, .done
ld hl, wEggMonMoves
ld c, NUM_MOVES
.next
ld a, [de]
cp [hl]
jr z, .skip
inc hl
dec c
jr nz, .next
call GetEggMove
jr nc, .skip
call LoadEggMove
.skip
inc de
dec b
jr nz, .loop
.done
ret
; 170e4
GetEggMove: ; 170e4
GLOBAL EggMoves
push bc
ld a, [wEggMonSpecies]
dec a
ld c, a
ld b, 0
ld hl, EggMovePointers
add hl, bc
add hl, bc
ld a, BANK(EggMovePointers)
call GetFarHalfword
.loop
ld a, BANK(EggMoves)
call GetFarByte
cp -1
jr z, .reached_end
ld b, a
ld a, [de]
cp b
jr z, .done_carry
inc hl
jr .loop
.reached_end
2015-12-09 15:25:44 -08:00
call GetBreedmonMovePointer
ld b, NUM_MOVES
.loop2
ld a, [de]
cp [hl]
jr z, .found_eggmove
inc hl
dec b
jr z, .inherit_tmhm
jr .loop2
.found_eggmove
ld a, [wEggMonSpecies]
dec a
ld c, a
ld b, 0
ld hl, EvosAttacksPointers
add hl, bc
add hl, bc
ld a, BANK(EvosAttacksPointers)
call GetFarHalfword
.loop3
ld a, BANK(EvosAttacks)
call GetFarByte
inc hl
and a
jr nz, .loop3
.loop4
ld a, BANK(EvosAttacks)
call GetFarByte
and a
jr z, .inherit_tmhm
inc hl
ld a, BANK(EvosAttacks)
call GetFarByte
ld b, a
ld a, [de]
cp b
jr z, .done_carry
inc hl
jr .loop4
.inherit_tmhm
ld hl, TMHMMoves
.loop5
ld a, BANK(TMHMMoves)
call GetFarByte
inc hl
and a
jr z, .done
ld b, a
ld a, [de]
cp b
jr nz, .loop5
ld [wPutativeTMHMMove], a
predef CanLearnTMHMMove
ld a, c
and a
jr z, .done
.done_carry
pop bc
scf
ret
.done
pop bc
and a
ret
; 17169
LoadEggMove: ; 17169
push de
push bc
ld a, [de]
ld b, a
ld hl, wEggMonMoves
ld c, NUM_MOVES
.loop
ld a, [hli]
and a
jr z, .done
dec c
jr nz, .loop
ld de, wEggMonMoves
ld hl, wEggMonMoves + 1
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
.done
dec hl
ld [hl], b
ld hl, wEggMonMoves
ld de, wEggMonPP
predef FillPP
pop bc
pop de
ret
; 17197
GetHeritableMoves: ; 17197
ld hl, wBreedMon2Moves
ld a, [wBreedMon1Species]
cp DITTO
jr z, .ditto1
ld a, [wBreedMon2Species]
cp DITTO
jr z, .ditto2
2015-12-18 17:07:09 -08:00
ld a, [wBreedMotherOrNonDitto]
and a
ret z
ld hl, wBreedMon1Moves
ret
.ditto1
2018-01-23 14:39:09 -08:00
ld a, [wCurPartySpecies]
push af
ld a, [wBreedMon2Species]
2018-01-23 14:39:09 -08:00
ld [wCurPartySpecies], a
ld a, [wBreedMon2DVs]
2018-01-23 14:39:09 -08:00
ld [wTempMonDVs], a
ld a, [wBreedMon2DVs + 1]
2018-01-23 14:39:09 -08:00
ld [wTempMonDVs + 1], a
2016-05-11 14:16:03 -07:00
ld a, TEMPMON
2018-01-23 14:39:09 -08:00
ld [wMonType], a
predef GetGender
jr c, .inherit_mon2_moves
jr nz, .inherit_mon2_moves
jr .inherit_mon1_moves
.ditto2
2018-01-23 14:39:09 -08:00
ld a, [wCurPartySpecies]
push af
ld a, [wBreedMon1Species]
2018-01-23 14:39:09 -08:00
ld [wCurPartySpecies], a
ld a, [wBreedMon1DVs]
2018-01-23 14:39:09 -08:00
ld [wTempMonDVs], a
ld a, [wBreedMon1DVs + 1]
2018-01-23 14:39:09 -08:00
ld [wTempMonDVs + 1], a
2016-05-11 14:16:03 -07:00
ld a, TEMPMON
2018-01-23 14:39:09 -08:00
ld [wMonType], a
predef GetGender
jr c, .inherit_mon1_moves
jr nz, .inherit_mon1_moves
.inherit_mon2_moves
ld hl, wBreedMon2Moves
pop af
2018-01-23 14:39:09 -08:00
ld [wCurPartySpecies], a
ret
.inherit_mon1_moves
ld hl, wBreedMon1Moves
pop af
2018-01-23 14:39:09 -08:00
ld [wCurPartySpecies], a
ret
; 1720b
2015-12-09 15:25:44 -08:00
GetBreedmonMovePointer: ; 1720b
ld hl, wBreedMon1Moves
ld a, [wBreedMon1Species]
cp DITTO
ret z
ld a, [wBreedMon2Species]
cp DITTO
jr z, .ditto
2015-12-18 17:07:09 -08:00
ld a, [wBreedMotherOrNonDitto]
and a
ret z
.ditto
ld hl, wBreedMon2Moves
ret
; 17224
2015-12-09 15:25:44 -08:00
GetEggFrontpic: ; 17224 (5:7224)
push de
2018-01-23 14:39:09 -08:00
ld [wCurPartySpecies], a
ld [wCurSpecies], a
call GetBaseData
2018-01-23 14:39:09 -08:00
ld hl, wBattleMonDVs
predef GetUnownLetter
pop de
predef_jump GetMonFrontpic
2015-12-09 15:25:44 -08:00
GetHatchlingFrontpic: ; 1723c (5:723c)
push de
2018-01-23 14:39:09 -08:00
ld [wCurPartySpecies], a
ld [wCurSpecies], a
call GetBaseData
2018-01-23 14:39:09 -08:00
ld hl, wBattleMonDVs
predef GetUnownLetter
pop de
predef_jump GetAnimatedFrontpic
2015-12-10 19:26:31 -08:00
Hatch_UpdateFrontpicBGMapCenter: ; 17254 (5:7254)
push af
call WaitTop
push hl
push bc
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld a, " "
call ByteFill
pop bc
pop hl
ld a, b
ld [hBGMapAddress + 1], a
ld a, c
2016-01-12 09:46:18 -08:00
ld [hGraphicStartTile], a
lb bc, 7, 7
predef PlaceGraphic
pop af
2015-12-10 19:26:31 -08:00
call Hatch_LoadFrontpicPal
call SetPalettes
jp WaitBGMap
EggHatch_DoAnimFrame: ; 1727f (5:727f)
push hl
push de
push bc
2017-12-24 09:47:30 -08:00
callfar PlaySpriteAnimations
call DelayFrame
pop bc
pop de
pop hl
ret
EggHatch_AnimationSequence: ; 1728f (5:728f)
ld a, [wd265]
ld [wJumptableIndex], a
2018-01-23 14:39:09 -08:00
ld a, [wCurSpecies]
push af
ld de, MUSIC_NONE
call PlayMusic
2017-12-24 09:47:30 -08:00
farcall BlankScreen
call DisableLCD
ld hl, EggHatchGFX
2017-12-28 04:32:33 -08:00
ld de, vTiles0 tile $00
ld bc, $20
ld a, BANK(EggHatchGFX)
call FarCopyBytes
2017-12-24 09:47:30 -08:00
farcall ClearSpriteAnims
2017-12-28 04:32:33 -08:00
ld de, vTiles2 tile $00
ld a, [wJumptableIndex]
2015-12-09 15:25:44 -08:00
call GetHatchlingFrontpic
2017-12-28 04:32:33 -08:00
ld de, vTiles2 tile $31
ld a, EGG
2015-12-09 15:25:44 -08:00
call GetEggFrontpic
ld de, MUSIC_EVOLUTION
call PlayMusic
call EnableLCD
hlcoord 7, 4
2017-12-28 04:32:33 -08:00
ld b, HIGH(vBGMap0)
2015-12-10 19:26:31 -08:00
ld c, $31 ; Egg tiles start here
ld a, EGG
2015-12-10 19:26:31 -08:00
call Hatch_UpdateFrontpicBGMapCenter
ld c, 80
call DelayFrames
xor a
2018-01-11 12:36:11 -08:00
ld [wFrameCounter], a
ld a, [hSCX]
ld b, a
.outerloop
2018-01-11 12:36:11 -08:00
ld hl, wFrameCounter
ld a, [hl]
inc [hl]
cp 8
jr nc, .done
ld e, [hl]
.loop
; wobble e times
ld a, 2
ld [hSCX], a
ld a, -2
2015-12-02 14:59:05 -08:00
ld [wGlobalAnimXOffset], a
call EggHatch_DoAnimFrame
ld c, 2
call DelayFrames
ld a, -2
ld [hSCX], a
ld a, 2
2015-12-02 14:59:05 -08:00
ld [wGlobalAnimXOffset], a
call EggHatch_DoAnimFrame
ld c, 2
call DelayFrames
dec e
jr nz, .loop
ld c, 16
call DelayFrames
call EggHatch_CrackShell
jr .outerloop
.done
ld de, SFX_EGG_HATCH
call PlaySFX
xor a
ld [hSCX], a
2015-12-02 14:59:05 -08:00
ld [wGlobalAnimXOffset], a
call ClearSprites
2015-12-10 19:26:31 -08:00
call Hatch_InitShellFragments
hlcoord 6, 3
2017-12-28 04:32:33 -08:00
ld b, HIGH(vBGMap0)
2015-12-10 19:26:31 -08:00
ld c, $00 ; Hatchling tiles start here
ld a, [wJumptableIndex]
2015-12-10 19:26:31 -08:00
call Hatch_UpdateFrontpicBGMapCenter
call Hatch_ShellFragmentLoop
call WaitSFX
ld a, [wJumptableIndex]
2018-01-23 14:39:09 -08:00
ld [wCurPartySpecies], a
hlcoord 6, 3
ld d, $0
ld e, ANIM_MON_HATCH
predef AnimateFrontpic
pop af
2018-01-23 14:39:09 -08:00
ld [wCurSpecies], a
ret
2015-12-10 19:26:31 -08:00
Hatch_LoadFrontpicPal: ; 17363 (5:7363)
2018-01-23 14:39:09 -08:00
ld [wPlayerHPPal], a
2016-06-06 15:23:00 -07:00
ld b, SCGB_EVOLUTION
ld c, $0
jp GetSGBLayout
EggHatch_CrackShell: ; 1736d (5:736d)
2018-01-11 12:36:11 -08:00
ld a, [wFrameCounter]
dec a
and $7
cp $7
ret z
srl a
ret nc
swap a
srl a
add 9 * 8 + 4
ld d, a
ld e, 11 * 8
ld a, SPRITE_ANIM_INDEX_EGG_CRACK
2015-11-13 07:48:49 -08:00
call _InitSpriteAnimStruct
ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], $0
ld de, SFX_EGG_CRACK
jp PlaySFX
; 17393 (5:7393)
EggHatchGFX: ; 17393
INCBIN "gfx/evo/egg_hatch.2bpp"
; 173b3
2015-12-10 19:26:31 -08:00
Hatch_InitShellFragments: ; 173b3 (5:73b3)
2017-12-24 09:47:30 -08:00
farcall ClearSpriteAnims
ld hl, .SpriteData
.loop
ld a, [hli]
cp -1
jr z, .done
ld e, a
ld a, [hli]
ld d, a
ld a, [hli]
ld c, a
ld a, [hli]
ld b, a
push hl
push bc
2015-12-10 19:26:31 -08:00
ld a, SPRITE_ANIM_INDEX_EGG_HATCH
2015-11-13 07:48:49 -08:00
call _InitSpriteAnimStruct
2015-12-10 19:26:31 -08:00
ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], $0
2015-12-10 19:26:31 -08:00
pop de
ld a, e
2015-12-05 12:38:25 -08:00
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
add [hl]
ld [hl], a
2015-12-10 19:26:31 -08:00
2016-05-13 22:11:01 -07:00
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
ld [hl], d
2015-12-10 19:26:31 -08:00
pop hl
jr .loop
.done
ld de, SFX_EGG_HATCH
call PlaySFX
call EggHatch_DoAnimFrame
ret
; 173ef (5:73ef)
shell_fragment: MACRO
2018-01-02 11:50:04 -08:00
; y tile, y pxl, x tile, x pxl, frameset offset, ???
db (\1 * 8) % $100 + \2, (\3 * 8) % $100 + \4, \5 - SPRITE_ANIM_FRAMESET_EGG_HATCH_1, \6
ENDM
.SpriteData: ; 173ef
shell_fragment 10, 4, 9, 0, SPRITE_ANIM_FRAMESET_EGG_HATCH_1, $3c
shell_fragment 11, 4, 9, 0, SPRITE_ANIM_FRAMESET_EGG_HATCH_2, $04
shell_fragment 10, 4, 10, 0, SPRITE_ANIM_FRAMESET_EGG_HATCH_1, $30
shell_fragment 11, 4, 10, 0, SPRITE_ANIM_FRAMESET_EGG_HATCH_2, $10
shell_fragment 10, 4, 11, 0, SPRITE_ANIM_FRAMESET_EGG_HATCH_3, $24
shell_fragment 11, 4, 11, 0, SPRITE_ANIM_FRAMESET_EGG_HATCH_4, $1c
shell_fragment 10, 0, 9, 4, SPRITE_ANIM_FRAMESET_EGG_HATCH_1, $36
shell_fragment 12, 0, 9, 4, SPRITE_ANIM_FRAMESET_EGG_HATCH_2, $0a
shell_fragment 10, 0, 10, 4, SPRITE_ANIM_FRAMESET_EGG_HATCH_3, $2a
shell_fragment 12, 0, 10, 4, SPRITE_ANIM_FRAMESET_EGG_HATCH_4, $16
db -1
; 17418
2015-12-10 19:26:31 -08:00
Hatch_ShellFragmentLoop: ; 17418 (5:7418)
ld c, 129
.loop
call EggHatch_DoAnimFrame
dec c
2015-12-10 19:26:31 -08:00
jr nz, .loop
ret
Special_DayCareMon1: ; 17421
2015-12-10 19:26:31 -08:00
ld hl, DayCareMon1Text
call PrintText
ld a, [wBreedMon1Species]
call PlayMonCry
ld a, [wDayCareLady]
bit 0, a
2015-12-10 19:26:31 -08:00
jr z, DayCareMonCursor
2015-11-29 19:29:45 -08:00
call ButtonSound
ld hl, wBreedMon2Nick
2015-12-10 19:26:31 -08:00
call DayCareMonCompatibilityText
jp PrintText
Special_DayCareMon2: ; 17440
2015-12-10 19:26:31 -08:00
ld hl, DayCareMon2Text
call PrintText
ld a, [wBreedMon2Species]
call PlayMonCry
ld a, [wDayCareMan]
bit 0, a
2015-12-10 19:26:31 -08:00
jr z, DayCareMonCursor
2015-11-29 19:29:45 -08:00
call ButtonSound
ld hl, wBreedMon1Nick
2015-12-10 19:26:31 -08:00
call DayCareMonCompatibilityText
jp PrintText
2015-12-10 19:26:31 -08:00
DayCareMonCursor: ; 1745f
jp WaitPressAorB_BlinkCursor
; 17462
2015-12-10 19:26:31 -08:00
DayCareMon2Text: ; 0x17462
; It's @ that was left with the DAY-CARE LADY.
text_jump UnknownText_0x1c0df3
db "@"
; 0x17467
2015-12-10 19:26:31 -08:00
DayCareMon1Text: ; 0x17467
; It's @ that was left with the DAY-CARE MAN.
text_jump UnknownText_0x1c0e24
db "@"
; 0x1746c
2015-12-10 19:26:31 -08:00
DayCareMonCompatibilityText: ; 1746c
push bc
2018-01-23 14:39:09 -08:00
ld de, wStringBuffer1
ld bc, NAME_LENGTH
call CopyBytes
2015-12-09 15:25:44 -08:00
call CheckBreedmonCompatibility
pop bc
ld a, [wd265]
2015-12-10 19:26:31 -08:00
ld hl, .AllAlone
cp -1
jr z, .done
ld hl, .Incompatible
and a
2015-12-10 19:26:31 -08:00
jr z, .done
ld hl, .HighCompatibility
cp 230
2015-12-10 19:26:31 -08:00
jr nc, .done
cp 70
2015-12-10 19:26:31 -08:00
ld hl, .ModerateCompatibility
jr nc, .done
ld hl, .SlightCompatibility
2015-12-10 19:26:31 -08:00
.done
ret
; 1749c
2015-12-10 19:26:31 -08:00
.AllAlone: ; 0x1749c
; It's brimming with energy.
text_jump UnknownText_0x1c0e54
db "@"
; 0x174a1
2015-12-10 19:26:31 -08:00
.Incompatible: ; 0x174a1
; It has no interest in @ .
text_jump UnknownText_0x1c0e6f
db "@"
; 0x174a6
2015-12-10 19:26:31 -08:00
.HighCompatibility: ; 0x174a6
; It appears to care for @ .
text_jump UnknownText_0x1c0e8d
db "@"
; 0x174ab
2015-12-10 19:26:31 -08:00
.ModerateCompatibility: ; 0x174ab
; It's friendly with @ .
text_jump UnknownText_0x1c0eac
db "@"
; 0x174b0
2015-12-10 19:26:31 -08:00
.SlightCompatibility: ; 0x174b0
; It shows interest in @ .
text_jump UnknownText_0x1c0ec6
db "@"
; 0x174b5
2018-01-02 07:04:21 -08:00
Unreferenced_DayCareMonPrintEmptyString: ; 174b5
2015-12-10 19:26:31 -08:00
ld hl, .string
ret
; 174b9
.string ; 174b9
db "@"
; 174ba