pokecrystal/engine/link/mystery_gift_2.asm

151 lines
2.2 KiB
NASM
Raw Normal View History

2018-06-24 14:09:41 +00:00
PrepMysteryGiftDataToSend:
2015-12-15 01:06:41 +00:00
ld de, wMysteryGiftStaging
ld a, $1 + GS_VERSION
2015-12-07 03:36:09 +00:00
ld [de], a
2015-12-15 01:06:41 +00:00
inc de ; wc801
2015-12-07 03:36:09 +00:00
ld a, BANK(sGameData)
call OpenSRAM
2018-01-23 22:39:09 +00:00
ld hl, sPlayerData + wPlayerID - wPlayerData
2015-12-07 03:36:09 +00:00
ld a, [hli]
ld [de], a
ld b, a
2017-12-10 00:41:03 +00:00
inc de ; wc802
2015-12-07 03:36:09 +00:00
ld a, [hl]
ld [de], a
ld c, a
2015-12-15 01:06:41 +00:00
inc de ; wc803
2015-12-07 03:36:09 +00:00
push bc
2018-01-23 22:39:09 +00:00
ld hl, sPlayerData + wPlayerName - wPlayerData
2015-12-07 03:36:09 +00:00
ld bc, NAME_LENGTH
call CopyBytes
2015-12-15 01:06:41 +00:00
push de ; wc80e
2018-01-23 22:39:09 +00:00
ld hl, sPokemonData + wPokedexCaught - wPokemonData
ld b, wEndPokedexCaught - wPokedexCaught
2015-12-07 03:36:09 +00:00
call CountSetBits
pop de
pop bc
ld a, [wNumSetBits]
2015-12-07 03:36:09 +00:00
ld [de], a
2015-12-15 01:06:41 +00:00
inc de ; wc80f
2015-12-07 03:36:09 +00:00
call CloseSRAM
call Random
2018-01-11 17:00:01 +00:00
and 1
2015-12-07 03:36:09 +00:00
ld [de], a
2015-12-15 01:06:41 +00:00
inc de ; wc810
call .RandomSample
2015-12-07 03:36:09 +00:00
ld [de], a
2015-12-15 01:06:41 +00:00
inc de ; wc811
2015-12-07 03:36:09 +00:00
ld a, c
ld c, b
ld b, a
2015-12-15 01:06:41 +00:00
call .RandomSample
2015-12-07 03:36:09 +00:00
ld [de], a
2015-12-15 01:06:41 +00:00
inc de ; wc812
2015-12-07 03:36:09 +00:00
ld a, BANK(sBackupMysteryGiftItem)
call OpenSRAM
2015-12-07 03:36:09 +00:00
ld a, [sBackupMysteryGiftItem]
ld [de], a
inc de
ld a, [sBackupMysteryGiftItem + 1]
ld [de], a
ld a, $14
ld [wca00], a
call CloseSRAM
2015-12-15 01:06:41 +00:00
ld hl, wMysteryGiftStaging
ld de, wMysteryGiftPlayerData
ld bc, wMysteryGiftPlayerDataEnd - wMysteryGiftPlayerData
2015-12-07 03:36:09 +00:00
jp CopyBytes
2018-06-24 14:09:41 +00:00
.RandomSample:
2015-12-07 03:36:09 +00:00
push de
call Random
2018-01-11 17:00:01 +00:00
cp 10 percent
2015-12-07 03:36:09 +00:00
jr c, .tenpercent
call Random
2018-01-11 17:00:01 +00:00
and %111
2015-12-07 03:36:09 +00:00
ld d, a
rl d
ld e, $80
.loop
rlc e
dec a
jr nz, .loop
ld a, e
and c
jr z, .skip
ld a, $1
.skip
add d
jr .done
.tenpercent
call Random
cp 20 percent - 1
2015-12-07 03:36:09 +00:00
jr c, .twopercent
call Random
2018-01-11 17:00:01 +00:00
and %011
2015-12-07 03:36:09 +00:00
ld d, a
rl d
ld e, $80
.loop2
rlc e
dec a
jr nz, .loop2
ld a, e
and b
jr z, .skip2
ld a, $1
.skip2
add d
add $10
jr .done
.twopercent
call Random
2018-01-11 17:00:01 +00:00
cp 20 percent - 1
2015-12-07 03:36:09 +00:00
jr c, .pointfourpercent
ld a, b
swap a
and $7
add $18
jr .done
.pointfourpercent
ld a, b
and $80
ld a, $20
jr z, .done
ld a, $21
.done
pop de
ret
2018-06-24 14:09:41 +00:00
MysteryGiftGetItemHeldEffect:
2015-12-07 03:36:09 +00:00
ld a, c
cp MysteryGiftItems.End - MysteryGiftItems
2015-12-15 01:06:41 +00:00
jr nc, MysteryGiftFallbackItem
ld hl, MysteryGiftItems
2015-12-07 03:36:09 +00:00
ld b, 0
add hl, bc
ld c, [hl]
ret
2018-06-24 14:09:41 +00:00
MysteryGiftGetDecoration:
2015-12-07 03:36:09 +00:00
ld a, c
cp MysteryGiftDecos.End - MysteryGiftDecos
2015-12-15 01:06:41 +00:00
jr nc, MysteryGiftFallbackItem
ld hl, MysteryGiftDecos
2015-12-07 03:36:09 +00:00
ld b, 0
add hl, bc
ld c, [hl]
ret
2018-06-24 14:09:41 +00:00
MysteryGiftFallbackItem:
2015-12-07 03:36:09 +00:00
ld c, DECO_POLKADOT_BED ; GREAT_BALL
ret
2018-01-11 06:54:49 +00:00
INCLUDE "data/items/mystery_gift_items.asm"
2015-12-07 03:36:09 +00:00
2018-01-11 06:54:49 +00:00
INCLUDE "data/decorations/mystery_gift_decos.asm"