pokecrystal-board/engine/link/mystery_gift_2.asm

151 lines
2.2 KiB
NASM
Raw Normal View History

2018-06-24 07:09:41 -07:00
PrepMysteryGiftDataToSend:
2015-12-14 17:06:41 -08:00
ld de, wMysteryGiftStaging
2015-12-06 19:36:09 -08:00
ld a, $1
ld [de], a
2015-12-14 17:06:41 -08:00
inc de ; wc801
2015-12-06 19:36:09 -08:00
ld a, BANK(sGameData)
call GetSRAMBank
2018-01-23 14:39:09 -08:00
ld hl, sPlayerData + wPlayerID - wPlayerData
2015-12-06 19:36:09 -08:00
ld a, [hli]
ld [de], a
ld b, a
2017-12-09 16:41:03 -08:00
inc de ; wc802
2015-12-06 19:36:09 -08:00
ld a, [hl]
ld [de], a
ld c, a
2015-12-14 17:06:41 -08:00
inc de ; wc803
2015-12-06 19:36:09 -08:00
push bc
2018-01-23 14:39:09 -08:00
ld hl, sPlayerData + wPlayerName - wPlayerData
2015-12-06 19:36:09 -08:00
ld bc, NAME_LENGTH
call CopyBytes
2015-12-14 17:06:41 -08:00
push de ; wc80e
2018-01-23 14:39:09 -08:00
ld hl, sPokemonData + wPokedexCaught - wPokemonData
ld b, wEndPokedexCaught - wPokedexCaught
2015-12-06 19:36:09 -08:00
call CountSetBits
pop de
pop bc
ld a, [wd265]
ld [de], a
2015-12-14 17:06:41 -08:00
inc de ; wc80f
2015-12-06 19:36:09 -08:00
call CloseSRAM
call Random
2018-01-11 09:00:01 -08:00
and 1
2015-12-06 19:36:09 -08:00
ld [de], a
2015-12-14 17:06:41 -08:00
inc de ; wc810
call .RandomSample
2015-12-06 19:36:09 -08:00
ld [de], a
2015-12-14 17:06:41 -08:00
inc de ; wc811
2015-12-06 19:36:09 -08:00
ld a, c
ld c, b
ld b, a
2015-12-14 17:06:41 -08:00
call .RandomSample
2015-12-06 19:36:09 -08:00
ld [de], a
2015-12-14 17:06:41 -08:00
inc de ; wc812
2015-12-06 19:36:09 -08:00
ld a, BANK(sBackupMysteryGiftItem)
call GetSRAMBank
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-14 17:06:41 -08:00
ld hl, wMysteryGiftStaging
ld de, wMysteryGiftPlayerData
ld bc, wMysteryGiftPlayerDataEnd - wMysteryGiftPlayerData
2015-12-06 19:36:09 -08:00
jp CopyBytes
2018-06-24 07:09:41 -07:00
.RandomSample:
2015-12-06 19:36:09 -08:00
push de
call Random
2018-01-11 09:00:01 -08:00
cp 10 percent
2015-12-06 19:36:09 -08:00
jr c, .tenpercent
call Random
2018-01-11 09:00:01 -08:00
and %111
2015-12-06 19:36:09 -08: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
2018-01-11 09:00:01 -08:00
cp 20 percent - 1
2015-12-06 19:36:09 -08:00
jr c, .twopercent
call Random
2018-01-11 09:00:01 -08:00
and %011
2015-12-06 19:36:09 -08: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 09:00:01 -08:00
cp 20 percent - 1
2015-12-06 19:36:09 -08: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 07:09:41 -07:00
MysteryGiftGetItemHeldEffect:
2015-12-06 19:36:09 -08:00
ld a, c
cp MysteryGiftItems.End - MysteryGiftItems
2015-12-14 17:06:41 -08:00
jr nc, MysteryGiftFallbackItem
ld hl, MysteryGiftItems
2015-12-06 19:36:09 -08:00
ld b, 0
add hl, bc
ld c, [hl]
ret
2018-06-24 07:09:41 -07:00
MysteryGiftGetDecoration:
2015-12-06 19:36:09 -08:00
ld a, c
cp MysteryGiftDecos.End - MysteryGiftDecos
2015-12-14 17:06:41 -08:00
jr nc, MysteryGiftFallbackItem
ld hl, MysteryGiftDecos
2015-12-06 19:36:09 -08:00
ld b, 0
add hl, bc
ld c, [hl]
ret
2018-06-24 07:09:41 -07:00
MysteryGiftFallbackItem:
2015-12-06 19:36:09 -08:00
ld c, DECO_POLKADOT_BED ; GREAT_BALL
ret
2018-01-10 22:54:49 -08:00
INCLUDE "data/items/mystery_gift_items.asm"
2015-12-06 19:36:09 -08:00
2018-01-10 22:54:49 -08:00
INCLUDE "data/decorations/mystery_gift_decos.asm"