summaryrefslogtreecommitdiff
path: root/engine/mysterygift.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/mysterygift.asm')
-rwxr-xr-xengine/mysterygift.asm1735
1 files changed, 0 insertions, 1735 deletions
diff --git a/engine/mysterygift.asm b/engine/mysterygift.asm
deleted file mode 100755
index f2d29b08a..000000000
--- a/engine/mysterygift.asm
+++ /dev/null
@@ -1,1735 +0,0 @@
-DoMysteryGift: ; 1048ba (41:48ba)
- call ClearTileMap
- call ClearSprites
- call WaitBGMap
- call InitMysteryGiftLayout
- hlcoord 3, 8
- ld de, .String_PressAToLink_BToCancel
- call PlaceString
- call WaitBGMap
- callba PrepMysteryGiftDataToSend
- call MysteryGift_ClearTrainerData
- ld a, $2
- ld [wca01], a
- ld a, $14
- ld [wca02], a
- ld a, [rIE]
- push af
-
- call Function104a95
-
- ld d, a
- xor a
- ld [rIF], a
- pop af
- ld [rIE], a
- push de
- call ClearTileMap
- call EnableLCD
- call WaitBGMap
- ld b, SCGB_DIPLOMA
- call GetSGBLayout
- call SetPalettes
- pop de
- hlcoord 2, 8
- ld a, d
- ld de, .Text_LinkCanceled ; Link has been canceled
- cp $10
- jp z, .LinkCanceled
- cp $6c
- jp nz, .CommunicationError
- ld a, [wc900]
- cp 3
- jr z, .skip_checks
- call .CheckAlreadyGotFiveGiftsToday
- ld hl, .Text_MaxFiveGifts ; Only 5 gifts a day
- jp nc, .PrintTextAndExit
- call .CheckAlreadyGotAGiftFromThatPerson
- ld hl, .Text_MaxOneGiftPerPerson ; Only one gift a day per person
- jp c, .PrintTextAndExit
-.skip_checks
- ld a, [wMysteryGiftPlayerBackupItem]
- and a
- jp nz, .GiftWaiting
- ld a, [wMysteryGiftPartnerBackupItem]
- and a
- jp nz, .FriendNotReady
- ld a, [wc900]
- cp 3
- jr z, .skip_append_save
- call .AddMysteryGiftPartnerID
- ld a, [wc900]
- cp 4
- jr z, .skip_append_save
- call .SaveMysteryGiftTrainerName
- callba RestoreMobileEventIndex
- callba TrainerRankings_MysteryGift
- callba BackupMobileEventIndex
-.skip_append_save
- ld a, [wMysteryGiftPartnerSentDeco]
- and a
- jr z, .item
- ld a, [wMysteryGiftPartnerWhichDeco]
- ld c, a
- callba MysteryGiftGetDecoration
- push bc
- call MysteryGift_CheckAndSetDecorationAlreadyReceived
- pop bc
- jr nz, .item
- callab GetDecorationName_c
- ld h, d
- ld l, e
- ld de, StringBuffer1
- ld bc, ITEM_NAME_LENGTH
- call CopyBytes
- ld hl, .Text_SentToHome ; sent decoration to home
- jr .PrintTextAndExit
-
-.item
- call GetMysteryGiftBank
- ld a, [wMysteryGiftPartnerWhichItem]
- ld c, a
- callba MysteryGiftGetItemHeldEffect
- ld a, c
- ld [sBackupMysteryGiftItem], a
- ld [wNamedObjectIndexBuffer], a
- call CloseSRAM
- call GetItemName
- ld hl, .Text_Sent ; sent item
- jr .PrintTextAndExit
-
-.LinkCanceled: ; 1049af (41:49af)
- ld hl, .Text_LinkCanceled ; Link has been canceled
- jr .PrintTextAndExit
-
-.CommunicationError: ; 1049b4 (41:49b4)
- ld hl, .Text_CommunicationError ; Communication error
- call PrintText
- jp DoMysteryGift
-
-.GiftWaiting: ; 1049bd (41:49bd)
- ld hl, .Text_ReceiveGiftAtCounter ; receive gift at counter
- jr .PrintTextAndExit
-
-.FriendNotReady: ; 1049c2 (41:49c2)
- ld hl, .Text_FriendNotReady ; friend not ready
-
-.PrintTextAndExit: ; 1049c5 (41:49c5)
- call PrintText
- ld a, $e3
- ld [rLCDC], a
- ret
-; 1049cd (41:49cd)
-
-.String_PressAToLink_BToCancel: ; 1049cd
- db "Press A to"
- next "link IR-Device"
- next "Press B to"
- next "cancel it."
- db "@"
-; 1049fd
-
-.Text_LinkCanceled: ; 1049fd
- text_jump UnknownText_0x1c0436
- db "@"
-; 104a02
-
-.Text_CommunicationError: ; 104a02
- text_jump UnknownText_0x1c0454
- db "@"
-; 104a07
-
-.Text_ReceiveGiftAtCounter: ; 104a07
- text_jump UnknownText_0x1c046a
- db "@"
-; 104a0c
-
-.Text_FriendNotReady: ; 104a0c
- text_jump UnknownText_0x1c048e
- db "@"
-; 104a11
-
-.Text_MaxFiveGifts: ; 104a11
- text_jump UnknownText_0x1c04a7
- db "@"
-; 104a16
-
-.Text_MaxOneGiftPerPerson: ; 104a16
- text_jump UnknownText_0x1c04c6
- db "@"
-; 104a1b
-
-.Text_Sent: ; 104a1b
- text_jump UnknownText_0x1c04e9
- db "@"
-; 104a20
-
-.Text_SentToHome: ; 104a20
- text_jump UnknownText_0x1c04fa
- db "@"
-; 104a25
-
-.CheckAlreadyGotFiveGiftsToday: ; 104a25 (41:4a25)
- call GetMysteryGiftBank
- ld a, [sNumDailyMysteryGiftPartnerIDs]
- cp $5
- jp CloseSRAM
-
-.CheckAlreadyGotAGiftFromThatPerson: ; 104a30 (41:4a30)
- call GetMysteryGiftBank
- ld a, [wMysteryGiftPartnerID]
- ld b, a
- ld a, [wMysteryGiftPartnerID + 1]
- ld c, a
- ld a, [sNumDailyMysteryGiftPartnerIDs]
- ld d, a
- ld hl, sDailyMysteryGiftPartnerIDs
-.loop
- ld a, d
- and a
- jr z, .No
- ld a, [hli]
- cp b
- jr nz, .skip
- ld a, [hl]
- cp c
- jr z, .Yes
-.skip
- inc hl
- dec d
- jr .loop
-.Yes:
- scf
-.No:
- jp CloseSRAM
-
-.AddMysteryGiftPartnerID: ; 104a56 (41:4a56)
- call GetMysteryGiftBank
- ld hl, sNumDailyMysteryGiftPartnerIDs
- ld a, [hl]
- inc [hl]
- ld hl, sDailyMysteryGiftPartnerIDs ; inc hl
- ld e, a
- ld d, $0
- add hl, de
- add hl, de
- ld a, [wMysteryGiftPartnerID]
- ld [hli], a
- ld a, [wMysteryGiftPartnerID + 1]
- ld [hl], a
- jp CloseSRAM
-
-.SaveMysteryGiftTrainerName: ; 104a71 (41:4a71)
- call GetMysteryGiftBank
- ld a, $1
- ld [sMysteryGiftTrainerHouseFlag], a
- ld hl, wMysteryGiftPartnerName
- ld de, sMysteryGiftPartnerName
- ld bc, NAME_LENGTH
- call CopyBytes
- ld a, $1
- ld [de], a
- inc de
- ld hl, wMysteryGiftTrainerData
- ld bc, (1 + 1 + NUM_MOVES) * PARTY_LENGTH + 2
- call CopyBytes
- jp CloseSRAM
-
-Function104a95: ; 104a95 (41:4a95)
- di
- callba ClearChannels
- call Function104d5e
-
-.loop2
- call Function104d96
- call Function104ddd
- ld a, [hMGStatusFlags]
- cp $10
- jp z, Function104bd0
- cp $6c
- jr nz, .loop2
-
- ld a, [hPrintNum9]
- cp $2
- jr z, Function104b22
- ld hl, hPrintNum1
- ld b, $1
- call Function104d56
- jr nz, .ly_loop
- call Function104b49
- jp nz, Function104bd0
- jr Function104b0a
- ; Delay frame
-.ly_loop
- ld a, [rLY]
- cp $90
- jr c, .ly_loop
- ld c, rRP % $100
- ld a, $c0
- ld [$ff00+c], a
- ld b, 240 ; This might have been intended as a 4-second timeout buffer.
- ; However, it is reset with each frame.
-.loop3
- push bc
- call MysteryGift_ReadJoypad
-
- ld b, $2
- ld c, rRP % $100
- ; Delay frame
-.ly_loop2
- ld a, [$ff00+c]
- and b
- ld b, a
- ld a, [rLY]
- cp $90
- jr nc, .ly_loop2
-.ly_loop3
- ld a, [$ff00+c]
- and b
- ld b, a
- ld a, [rLY]
- cp $90
- jr c, .ly_loop3
-
- ld a, b
- pop bc
- dec b
- jr z, .loop2 ; we never jump here
- or a
- jr nz, .loop2
- ; Check if we've pressed the B button
- ld a, [hMGJoypadReleased]
- bit B_BUTTON_F, a
- jr z, .loop3
- ld a, $10
- ld [hMGStatusFlags], a
- jp Function104bd0
-
-Function104b04: ; 104b04 (41:4b04)
- call Function104b40
- jp nz, Function104bd0
-Function104b0a: ; 104b0a (41:4b0a)
- call Function104d38
- jp nz, Function104bd0
- call Function104b88
- jp nz, Function104bd0
- call Function104d43
- jp nz, Function104bd0
- call Function105033
- jp Function104bd0
-
-Function104b22: ; 104b22 (41:4b22)
- call Function104b88
- jp nz, Function104bd0
- call Function104d43
- jp nz, Function104bd0
- call Function104b40
- jp nz, Function104bd0
- call Function104d38
- jp nz, Function104bd0
- call Function10502e
- jp Function104bd0
-
-Function104b40: ; 104b40 (41:4b40)
- ld hl, hPrintNum1
- ld b, $1
- call Function104d56
- ret nz
-
-Function104b49: ; 104b49 (41:4b49)
- call Function105033
- ld a, [hMGStatusFlags]
- cp $6c
- ret nz
- ld a, [hPrintNum1]
- cp $96
- jp nz, Function104d32
- ld a, $90
- ld [hPrintNum1], a
- call Function104d38
- ret nz
- ld hl, hPrintNum1
- ld b, $1
- call Function104d4e
- ret nz
- call Function10502e
- ld a, [hMGStatusFlags]
- cp $6c
- ret nz
- call Function104d43
- ret nz
- ld hl, wMysteryGiftTrainerData
- ld a, [wca02]
- ld b, a
- call Function104d56
- ret nz
- call Function105033
- ld a, [hMGStatusFlags]
- cp $6c
- ret
-
-Function104b88: ; 104b88 (41:4b88)
- ld a, $96
- ld [hPrintNum1], a
- ld hl, hPrintNum1
- ld b, $1
- call Function104d4e
- ret nz
- call Function10502e
- ld a, [hMGStatusFlags]
- cp $6c
- ret nz
- call Function104d43
- ret nz
- ld hl, hPrintNum1
- ld b, $1
- call Function104d56
- ret nz
- call Function105033
- ld a, [hMGStatusFlags]
- cp $6c
- ret nz
- ld a, [hPrintNum1]
- cp $90
- jp nz, Function104d32
- call Function104d38
- ret nz
- ld hl, OverworldMap
- ld a, [wca02]
- ld b, a
- call Function104d4e
- ret nz
- call Function10502e
- ld a, [hMGStatusFlags]
- cp $6c
- ret
-
-Function104bd0: ; 104bd0 (41:4bd0)
- nop
- ld a, [hMGStatusFlags]
- cp $10
- jr z, .quit
- cp $6c
- jr nz, .quit
- ld hl, wca01
- dec [hl]
- jr z, .quit
- ld hl, wMysteryGiftTrainerData
- ld de, wMysteryGiftPartnerData
- ld bc, wMysteryGiftPartnerDataEnd - wMysteryGiftPartnerData
- call CopyBytes
- ld a, [wMysteryGiftTrainerData]
- cp $3
- jr nc, .quit
- callba StagePartyDataForMysteryGift
- call MysteryGift_ClearTrainerData
- ld a, $26
- ld [wca02], a
- ld a, [hPrintNum9]
- cp $2
- jr z, .asm_104c10
- call Function104d43
- jr nz, Function104bd0
- jp Function104b04
-
-.asm_104c10
- call Function104d38
- jr nz, Function104bd0
- jp Function104b22
-
-.quit
- ld a, [hMGStatusFlags]
- push af
- call Function104da0
- xor a
- ld [rIF], a
- ld a, [rIE]
- or $1
- ld [rIE], a
- ei
- call DelayFrame
- pop af
- ret
-
-Function104c2d: ; 104c2d (41:4c2d)
- di
- callba ClearChannels
- call Function104d5e
-.asm_104c37
- call Function104d96
- call Function104ddd
- ld a, [hMGStatusFlags]
- cp $10
- jp z, Function104d1c
- cp $6c
- jr nz, .asm_104c37
- ld a, [hPrintNum9]
- cp $2
- jr z, .asm_104c6c
- call Function104c8a
- jp nz, Function104d1c
- call Function104d38
- jp nz, Function104d1c
- call Function104cd2
- jp nz, Function104d1c
- call Function104d43
- jp nz, Function104d1c
- call Function105033
- jp Function104d1c
-.asm_104c6c
- call Function104cd2
- jp nz, Function104d1c
- call Function104d43
- jp nz, Function104d1c
- call Function104c8a
- jp nz, Function104d1c
- call Function104d38
- jp nz, Function104d1c
- call Function10502e
- jp Function104d1c
-
-Function104c8a: ; 104c8a (41:4c8a)
- ld hl, hPrintNum1
- ld b, $1
- call Function104d56
- ret nz
- call Function105033
- ld a, [hMGStatusFlags]
- cp $6c
- ret nz
- ld a, [hPrintNum1]
- cp $3c
- jp nz, Function104d32
- swap a
- ld [hPrintNum1], a
- call Function104d38
- ret nz
- ld hl, hPrintNum1
- ld b, $1
- call Function104d4e
- ret nz
- call Function10502e
- ld a, [hMGStatusFlags]
- cp $6c
- ret nz
- call Function104d43
- ret nz
- ld hl, wMysteryGiftTrainerData
- ld a, [wca02]
- ld b, a
- call Function104d56
- ret nz
- call Function105033
- ld a, [hMGStatusFlags]
- cp $6c
- ret
-
-Function104cd2: ; 104cd2 (41:4cd2)
- ld a, $3c
- ld [hPrintNum1], a
- ld hl, hPrintNum1
- ld b, $1
- call Function104d4e
- ret nz
- call Function10502e
- ld a, [hMGStatusFlags]
- cp $6c
- ret nz
- call Function104d43
- ret nz
- ld hl, hPrintNum1
- ld b, $1
- call Function104d56
- ret nz
- call Function105033
- ld a, [hMGStatusFlags]
- cp $6c
- ret nz
- ld a, [hPrintNum1]
- swap a
- cp $3c
- jp nz, Function104d32
- call Function104d38
- ret nz
- ld hl, OverworldMap
- ld a, [wca02]
- ld b, a
- call Function104d4e
- ret nz
- call Function10502e
- ld a, [hMGStatusFlags]
- cp $6c
- ret
-
-Function104d1c: ; 104d1c (41:4d1c)
- nop
- ld a, [hMGStatusFlags]
- push af
- call Function104da0
- xor a
- ld [rIF], a
- ld a, [rIE]
- or $1
- ld [rIE], a
- ei
- call DelayFrame
- pop af
- ret
-
-Function104d32: ; 104d32 (41:4d32)
- ld a, $80
- ld [hMGStatusFlags], a
- and a
- ret
-
-Function104d38: ; 104d38 (41:4d38)
- call Function104d96
- call Function104e46
- ld a, [hMGStatusFlags]
- cp $6c
- ret
-
-Function104d43: ; 104d43 (41:4d43)
- call Function104d96
- call Function104dfe
- ld a, [hMGStatusFlags]
- cp $6c
- ret
-
-Function104d4e: ; 104d4e (41:4d4e)
- call Function104e93
- ld a, [hMGStatusFlags]
- cp $6c
- ret
-
-Function104d56: ; 104d56 (41:4d56)
- call Function104f57
- ld a, [hMGStatusFlags]
- cp $6c
- ret
-
-Function104d5e: ; 104d5e (41:4d5e)
- call Function104d74
- ld a, $4
- ld [rIE], a
- xor a
- ld [rIF], a
- call Function104d96
- xor a
- ld b, a
-.asm_104d6d
- inc a
- jr nz, .asm_104d6d
- inc b
- jr nz, .asm_104d6d
- ret
-
-Function104d74: ; 104d74 (41:4d74)
- xor a
- ld [rTAC], a
- ld a, $fe
- ld [rTMA], a
- ld [rTIMA], a
- ld a, $2
- ld [rTAC], a
- or $4
- ld [rTAC], a
- ret
-
-Function104d86: ; 104d86 (41:4d86)
- xor a
- ld [rTAC], a
- ld [rTMA], a
- ld [rTIMA], a
- ld a, $2
- ld [rTAC], a
- or $4
- ld [rTAC], a
- ret
-
-Function104d96: ; 104d96 (41:4d96)
- ld a, $c0
- call Function104e8c
- ld a, $1
- ld [hPrintNum9], a
- ret
-
-Function104da0: ; 104da0 (41:4da0)
- xor a
- call Function104e8c
- ld a, $2
- ld [rTAC], a
- ret
-
-Function104da9: ; 104da9 (41:4da9)
- inc d
- ret z
- xor a
- ld [rIF], a
- halt
- ld a, [$ff00+c]
- bit 1, a
- jr z, Function104da9
- or a
- ret
-
-Function104db7: ; 104db7 (41:4db7)
- inc d
- ret z
- xor a
- ld [rIF], a
- halt
- ld a, [$ff00+c]
- bit 1, a
- jr nz, Function104db7
- or a
- ret
-
-Function104dc5: ; 104dc5 (41:4dc5)
- ld a, $c1
- ld [$ff00+c], a
-.wait
- dec d
- ret z
- xor a
- ld [rIF], a
- halt
- jr .wait
-
-Function104dd1: ; 104dd1 (41:4dd1)
- ld a, $c0
- ld [$ff00+c], a
-.wait
- dec d
- ret z
- xor a
- ld [rIF], a
- halt
- jr .wait
-
-Function104ddd: ; 104ddd (41:4ddd)
- ld d, $0
- ld e, d
- ld a, $1
- ld [hPrintNum9], a
-.loop
- call MysteryGift_ReadJoypad
- ld b, $2
- ld c, rRP % $100
- ld a, [hMGJoypadReleased]
- bit B_BUTTON_F, a
- jr z, .next
- ld a, $10
- ld [hMGStatusFlags], a
- ret
-
-.next
- bit 0, a
- jr nz, Function104e3a
- ld a, [$ff00+c]
- and b
- jr nz, .loop
-
-Function104dfe: ; 104dfe (41:4dfe)
- ld c, rRP % $100
- ld d, $0
- ld e, d
- call Function104db7
- jp z, Function104f42
- ld d, e
- call Function104da9
- jp z, Function104f42
- call Function104db7
- jp z, Function104f42
- call Function104da9
- jp z, Function104f42
- ld a, $6c
- ld [hMGStatusFlags], a
- ld d, $3d
- call Function104dd1
- ld d, $5
- call Function104dc5
- ld d, $15
- call Function104dd1
- ld d, $5
- call Function104dc5
- ld d, $5
- call Function104dd1
- ret
-
-Function104e3a: ; 104e3a (41:4e3a)
- ; Wait a random amount of time
- call Random
- ld e, a
- and $f
- ld d, a
-.loop
- dec de
- ld a, d
- or e
- jr nz, .loop
-Function104e46: ; 104e46 (41:4e46)
- ld a, $2
- ld [hPrintNum9], a
- ld c, rRP % $100
- ld d, $0
- ld e, d
- ld d, $3d
- call Function104dd1
- ld d, $5
- call Function104dc5
- ld d, $15
- call Function104dd1
- ld d, $5
- call Function104dc5
- ld d, $5
- call Function104dd1
- ld d, e
- call Function104db7
- jp z, Function104f42
- ld d, e
- call Function104da9
- jp z, Function104f42
- call Function104db7
- jp z, Function104f42
- call Function104da9
- jp z, Function104f42
- ld d, $3d
- call Function104dd1
- ld a, $6c
- ld [hMGStatusFlags], a
- ret
-
-Function104e8c: ; 104e8c (41:4e8c)
- ld [rRP], a
- ld a, $ff
- ld [hMGStatusFlags], a
- ret
-
-Function104e93: ; 104e93 (41:4e93)
- xor a
- ld [hPrintNum5], a
- ld [hPrintNum6], a
- push hl
- push bc
- ld c, rRP % $100
- ld d, $3d
- call Function104dd1
- ld hl, hPrintNum2 ; $ffb4 (aliases: hMultiplicand)
- ld a, $5a
- ld [hli], a
- ld [hl], b
- dec hl
- ld b, $2
- call Function104ed6
- pop bc
- pop hl
- call Function104ed6
- ld a, [hPrintNum5]
- ld [hPrintNum2], a
- ld a, [hPrintNum6]
- ld [hPrintNum3], a
- push hl
- ld hl, hPrintNum2 ; $ffb4 (aliases: hMultiplicand)
- ld b, $2
- call Function104ed6
- ld hl, hMGStatusFlags
- ld b, $1
- call Function104faf
- ld a, [hPrintNum2]
- ld [hPrintNum5], a
- ld a, [hPrintNum3]
- ld [hPrintNum6], a
- pop hl
- ret
-
-Function104ed6: ; 104ed6 (41:4ed6)
- ld c, rRP % $100
- ld d, $5
- call Function104dd1
- ld d, $5
- call Function104dc5
- ld d, $15
- call Function104dd1
- ld a, b
- cpl
- ld b, a
- ld a, $f4
- ld [rTMA], a
-.asm_104eee
- inc b
- jr z, .asm_104f2e
- ld a, $8
- ld [hPrintNum4], a
- ld a, [hli]
- ld e, a
- ld a, [hPrintNum5]
- add e
- ld [hPrintNum5], a
- ld a, [hPrintNum6]
- adc $0
- ld [hPrintNum6], a
-.asm_104f02
- xor a
- ld [rIF], a
- halt
- ld a, $c1
- ld [rRP], a
- ld d, $1
- ld a, e
- rlca
- ld e, a
- jr nc, .asm_104f13
- inc d
-.asm_104f13
- ld a, [rTIMA]
- cp $f8
- jr c, .asm_104f13
- ld a, $c0
- ld [rRP], a
- dec d
- jr z, .asm_104f25
- xor a
- ld [rIF], a
- halt
-.asm_104f25
- ld a, [hPrintNum4]
- dec a
- jr z, .asm_104eee
- ld [hPrintNum4], a
- jr .asm_104f02
-.asm_104f2e
- ld a, $fe
- ld [rTMA], a
- xor a
- ld [rIF], a
- halt
- ld d, $5
- call Function104dc5
- ld d, $11
- call Function104dd1
- ret
-
-Function104f42: ; 104f42 (41:4f42)
- ld a, [hMGStatusFlags]
- or $2
- ld [hMGStatusFlags], a
- ret
-
-Function104f49: ; 104f49 (41:4f49)
- ld a, [hMGStatusFlags]
- or $1
- ld [hMGStatusFlags], a
- ret
-
-Function104f50: ; 104f50 (41:4f50)
- ld a, [hMGStatusFlags]
- or $80
- ld [hMGStatusFlags], a
- ret
-
-Function104f57: ; 104f57 (41:4f57)
- xor a
- ld [hPrintNum5], a
- ld [hPrintNum6], a
- push bc
- push hl
- ld hl, hPrintNum2 ; $ffb4 (aliases: hMultiplicand)
- ld b, $2
- call Function104faf
- ld a, [hPrintNum3]
- ld [hPrintNum8], a
- ld b, a
- pop hl
- pop af
- cp b
- jp c, Function104f50
- ld a, [hPrintNum2]
- cp $5a
- jp nz, Function104f50
- call Function104faf
- ld a, [hPrintNum5]
- ld d, a
- ld a, [hPrintNum6]
- ld e, a
- push hl
- push de
- ld hl, hPrintNum2 ; $ffb4 (aliases: hMultiplicand)
- ld b, $2
- call Function104faf
- pop de
- ld hl, hPrintNum2 ; $ffb4 (aliases: hMultiplicand)
- ld a, [hli]
- xor d
- ld b, a
- ld a, [hl]
- xor e
- or b
- call nz, Function104f49
- push de
- ld d, $3d
- call Function104dd1
- ld hl, hMGStatusFlags
- ld b, $1
- call Function104ed6
- pop de
- pop hl
- ld a, d
- ld [hPrintNum5], a
- ld a, e
- ld [hPrintNum6], a
- ret
-
-Function104faf: ; 104faf (41:4faf)
- ld c, rRP % $100
- ld d, $0
- call Function104db7
- jp z, Function104f42
- ld d, $0
- call Function104da9
- jp z, Function104f42
- ld d, $0
- call Function104db7
- jp z, Function104f42
- ld a, b
- cpl
- ld b, a
- xor a
- ld [hMGJoypadPressed + 2], a
- call Function104d86
-.asm_104fd2
- inc b
- jr z, .asm_10501a
- ld a, $8
- ld [hPrintNum4], a
-.asm_104fd9
- ld d, $0
-.asm_104fdb
- inc d
- jr z, .asm_104fe5
- ld a, [$ff00+c]
- bit 1, a
- jr z, .asm_104fdb
- ld d, $0
-.asm_104fe5
- inc d
- jr z, .asm_104fed
- ld a, [$ff00+c]
- bit 1, a
- jr nz, .asm_104fe5
-.asm_104fed
- ld a, [hMGJoypadPressed + 2]
- ld d, a
- ld a, [rTIMA]
- ld [hMGJoypadPressed + 2], a
- sub d
- cp $12
- jr c, .asm_104ffd
- set 0, e
- jr .asm_104fff
-.asm_104ffd
- res 0, e
-.asm_104fff
- ld a, [hPrintNum4]
- dec a
- ld [hPrintNum4], a
- jr z, .asm_10500b
- ld a, e
- rlca
- ld e, a
- jr .asm_104fd9
-.asm_10500b
- ld a, e
- ld [hli], a
- ld a, [hPrintNum5]
- add e
- ld [hPrintNum5], a
- ld a, [hPrintNum6]
- adc $0
- ld [hPrintNum6], a
- jr .asm_104fd2
-.asm_10501a
- call Function104d74
- xor a
- ld [rIF], a
- ld d, $0
- call Function104da9
- jp z, Function104f42
- ld d, $10
- call Function104dd1
- ret
-
-Function10502e: ; 10502e (41:502e)
- ld b, $0
- jp Function104e93
-
-Function105033: ; 105033 (41:5033)
- ld b, $0
- jp Function104f57
-
-MysteryGift_ReadJoypad: ; 105038 (41:5038)
-; We can only get four inputs at a time.
-; We take d-pad first for no particular reason.
- ld a, R_DPAD
- ld [rJOYP], a
-; Read twice to give the request time to take.
- ld a, [rJOYP]
- ld a, [rJOYP]
-
-; The Joypad register output is in the lo nybble (inversed).
-; We make the hi nybble of our new container d-pad input.
- cpl
- and $f
- swap a
-
-; We'll keep this in b for now.
- ld b, a
-
-; Buttons make 8 total inputs (A, B, Select, Start).
-; We can fit this into one byte.
- ld a, R_BUTTONS
- ld [rJOYP], a
-; Wait for input to stabilize.
-rept 6
- ld a, [rJOYP]
-endr
-; Buttons take the lo nybble.
- cpl
- and $f
- or b
- ld c, a
-; To get the delta we xor the last frame's input with the new one.
- ld a, [hMGJoypadPressed]
- xor c
-; Released this frame:
- and c
- ld [hMGJoypadReleased], a
-; Pressed this frame:
- ld a, c
- ld [hMGJoypadPressed], a
- ld a, $30
-; Reset the joypad register since we're done with it.
- ld [rJOYP], a
- ret
-
-MysteryGift_CheckAndSetDecorationAlreadyReceived: ; 105069 (41:5069)
- call GetMysteryGiftBank
- ld d, $0
- ld b, CHECK_FLAG
- ld hl, sMysteryGiftDecorationsReceived
- predef_id FlagPredef
- push hl
- push bc
- call Predef
- call CloseSRAM
- ld a, c
- and a
- pop bc
- pop hl
- ret nz
- call GetMysteryGiftBank
- ld b, SET_FLAG
- predef FlagPredef
- call CloseSRAM
- xor a
- ret
-
-MysteryGift_CopyReceivedDecosToPC: ; 105091 (41:5091)
- call GetMysteryGiftBank
- ld c, $0
-.loop
- push bc
- ld d, $0
- ld b, CHECK_FLAG
- ld hl, sMysteryGiftDecorationsReceived
- predef FlagPredef
- ld a, c
- and a
- pop bc
- jr z, .skip
- push bc
- callab SetSpecificDecorationFlag
- pop bc
-.skip
- inc c
- ld a, c
- cp Trophys - DecorationIDs
- jr c, .loop
- jp CloseSRAM
-
-Special_UnlockMysteryGift: ; 1050b9
- call GetMysteryGiftBank
- ld hl, sMysteryGiftUnlocked
- ld a, [hl]
- inc a
- jr nz, .ok
- ld [hld], a
- ld [hl], a
-.ok
- jp CloseSRAM
-; 1050c8
-
-Function1050c8: ; 1050c8
- call GetMysteryGiftBank
- ld a, [sNumDailyMysteryGiftPartnerIDs]
- cp $ff
- jr z, .okay
- xor a
- ld [sNumDailyMysteryGiftPartnerIDs], a
-.okay
- jp CloseSRAM
-; 1050d9
-
-
-BackupMysteryGift: ; 1050d9
- call GetMysteryGiftBank
- ld hl, sMysteryGiftItem
- ld de, sBackupMysteryGiftItem
- ld a, [hli]
- ld [de], a
- inc de
- ld a, [hl]
- ld [de], a
- jp CloseSRAM
-; 1050ea
-
-
-RestoreMysteryGift: ; 1050ea (41:50ea)
- call GetMysteryGiftBank
- ld hl, sBackupMysteryGiftItem
- ld de, sMysteryGiftItem
- ld a, [hli]
- ld [de], a
- inc de
- ld a, [hl]
- ld [de], a
- jp CloseSRAM
-
-MysteryGift_ClearTrainerData: ; 1050fb (41:50fb)
- ld hl, wMysteryGiftTrainerData
- xor a
- ld b, wMysteryGiftTrainerDataEnd - wMysteryGiftTrainerData
-.loop
- ld [hli], a
- dec b
- jr nz, .loop
- ret
-
-
-GetMysteryGiftBank: ; 105106
- ld a, BANK(sBackupMysteryGiftItem)
- jp GetSRAMBank
-; 10510b
-
-
-StagePartyDataForMysteryGift: ; 10510b (41:510b)
-; You will be sending this data to your mystery gift partner.
-; Structure is the same as a trainer with species and moves
-; defined.
- ld a, BANK(sPokemonData)
- call GetSRAMBank
- ld de, wMysteryGiftStaging
- ld bc, sPokemonData + PartyMons - wPokemonData
- ld hl, sPokemonData + PartySpecies - wPokemonData
-.loop
- ld a, [hli]
- cp -1
- jr z, .party_end
- cp EGG
- jr z, .next
- push hl
- ; copy level
- ld hl, MON_LEVEL
- add hl, bc
- ld a, [hl]
- ld [de], a
- inc de
- ; copy species
- ld hl, MON_SPECIES
- add hl, bc
- ld a, [hl]
- ld [de], a
- inc de
- ; copy moves
- ld hl, MON_MOVES
- add hl, bc
- push bc
- ld bc, NUM_MOVES
- call CopyBytes
- pop bc
- pop hl
-.next
- push hl
- ld hl, PARTYMON_STRUCT_LENGTH
- add hl, bc
- ld b, h
- ld c, l
- pop hl
- jr .loop
-.party_end
- ld a, -1
- ld [de], a
- ld a, $26
- ld [wca00], a
- jp CloseSRAM
-
-InitMysteryGiftLayout: ; 105153 (41:5153)
- call ClearBGPalettes
- call DisableLCD
- ld hl, MysteryGiftGFX
- ld de, VTiles2 tile $00
- ld a, BANK(MysteryGiftGFX)
- ld bc, MysteryGiftGFXEnd - MysteryGiftGFX
- call FarCopyBytes
- hlcoord 0, 0
- ld a, $42
- ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
- call ByteFill
- hlcoord 3, 7
- lb bc, 9, 15
- call ClearBox
- hlcoord 0, 0
- ld a, $0
- ld [hli], a
- inc a
- ld [hl], a
- hlcoord 0, 1
- inc a
- ld [hli], a
- inc a
- ld [hl], a
- hlcoord 7, 1
- ld a, $12
- call .Load5GFX
- hlcoord 2, 2
- ld a, $17
- call .Load16GFX
- hlcoord 2, 3
- ld a, $27
- call .Load16GFX
- hlcoord 9, 4
- ld a, $37
- ld [hli], a
- inc a
- ld [hl], a
- hlcoord 1, 2
- ld [hl], $4
- hlcoord 1, 3
- ld a, $5
- call .Load14Column
- ld a, $9
- hlcoord 18, 5
- call .Load11Column
- hlcoord 2, 5
- ld a, $b
- call .Load16Row
- hlcoord 2, 16
- ld a, $7
- call .Load16Row
- hlcoord 2, 5
- ld a, $d
- call .Load5GFX
- hlcoord 7, 5
- ld [hl], $c
- hlcoord 18, 5
- ld [hl], $a
- hlcoord 18, 16
- ld [hl], $8
- hlcoord 1, 16
- ld [hl], $6
- hlcoord 2, 6
- ld a, $3a
- call .Load16Row
- hlcoord 2, 15
- ld a, $40
- call .Load16Row
- hlcoord 2, 6
- ld a, $3c
- call .Load9Column
- hlcoord 17, 6
- ld a, $3e
- call .Load9Column
- hlcoord 2, 6
- ld [hl], $39
- hlcoord 17, 6
- ld [hl], $3b
- hlcoord 2, 15
- ld [hl], $3f
- hlcoord 17, 15
- ld [hl], $41
- call EnableLCD
- call WaitBGMap
- ld b, SCGB_MYSTERY_GIFT
- call GetSGBLayout
- call SetPalettes
- ret
-
-.Load5GFX: ; 10522e (41:522e)
- ld b, 5
- jr .gfx_loop
-; 105232 (41:5232)
-
-.Load6GFX: ; unreferenced
- ld b, 6
- jr .gfx_loop
-
-.Load16GFX: ; 105236 (41:5236)
- ld b, 16
-
-.gfx_loop ; 105238 (41:5238)
- ld [hli], a
- inc a
- dec b
- jr nz, .gfx_loop
- ret
-
-.Load9Column: ; 10523e (41:523e)
- ld b, 9
- jr .col_loop
-
-.Load11Column: ; 105242 (41:5242)
- ld b, 11
- jr .col_loop
-
-.Load14Column: ; 105246 (41:5246)
- ld b, 14
-
-.col_loop ; 105248 (41:5248)
- ld [hl], a
- ld de, SCREEN_WIDTH
- add hl, de
- dec b
- jr nz, .col_loop
- ret
-
-.Load16Row: ; 105251 (41:5251)
- ld b, 16
-.row_loop
- ld [hli], a
- dec b
- jr nz, .row_loop
- ret
-
-MysteryGiftGFX: ; 105258
-INCBIN "gfx/misc/mystery_gift.2bpp"
-MysteryGiftGFXEnd:
-
-Function105688: ; 105688 (41:5688)
- call ClearTileMap
- call ClearSprites
- call WaitBGMap
- call Function1057d7
- hlcoord 3, 8
- ld de, String_10572e
- call PlaceString
- call WaitBGMap
- call Function10578c
- call MysteryGift_ClearTrainerData
- ld a, $24
- ld [wca02], a
- ld a, [rIE]
- push af
- call Function104c2d
- ld d, a
- xor a
- ld [rIF], a
- pop af
- ld [rIE], a
- ld a, d
- cp $10
- jp z, Function105712
- cp $6c
- jp nz, Function10571a
- call Function1056eb
- ld c, 60
- call DelayFrames
- call Function105777
- ld hl, Text_ReceivedCard
- call PrintText
- ld de, wMysteryGiftTrainerData
- callba Function8ac70
- ld a, c
- ld [wd265], a
- ld hl, Text_CardNotRegistered
- jr c, asm_105726
- ld hl, Text_ListedCardAsNumber
- jr asm_105726
-
-Function1056eb: ; 1056eb (41:56eb)
- ld c, $10
-.asm_1056ed
- ld hl, Sprites
- ld b, $8
-.asm_1056f2
- dec [hl]
-rept 4
- inc hl
-endr
- dec b
- jr nz, .asm_1056f2
- ld hl, Sprites + $20
- ld b, $8
-.asm_1056ff
- inc [hl]
-rept 4
- inc hl
-endr
- dec b
- jr nz, .asm_1056ff
- dec c
- ret z
- push bc
- ld c, 4
- call DelayFrames
- pop bc
- jr .asm_1056ed
-
-Function105712: ; 105712 (41:5712)
- call Function105777
- ld hl, Text_MGLinkCanceled
- jr asm_105726
-
-Function10571a: ; 10571a (41:571a)
- call Function105777
- ld hl, Text_MGCommError
- call PrintText
- jp Function105688
-
-asm_105726: ; 105726 (41:5726)
- call PrintText
- ld a, $e3
- ld [rLCDC], a
- ret
-; 10572e (41:572e)
-
-String_10572e: ; 10572e
- db "エーボタン¯おすと"
- next "つうしん<PKMN>おこなわれるよ!"
- next "ビーボタン¯おすと"
- next "つうしん¯ちゅうし します"
- db "@"
-
-; 10575e
-
-Text_ReceivedCard: ; 10575e
- text_jump UnknownText_0x1c051a
- db "@"
-
-Text_ListedCardAsNumber: ; 105763
- text_jump UnknownText_0x1c0531
- db "@"
-
-Text_CardNotRegistered: ; 105768
- text_jump UnknownText_0x1c0555
- db "@"
-
-Text_MGLinkCanceled: ; 10576d
- text_jump UnknownText_0x1c0573
- db "@"
-
-Text_MGCommError: ; 105772
- text_jump UnknownText_0x1c0591
- db "@"
-; 105777
-
-Function105777: ; 105777 (41:5777)
- call ClearSprites
- call ClearTileMap
- call EnableLCD
- call WaitBGMap
- ld b, SCGB_DIPLOMA
- call GetSGBLayout
- call SetPalettes
- ret
-
-Function10578c: ; 10578c (41:578c)
- ld de, OverworldMap
- ld a, BANK(sPlayerData)
- call GetSRAMBank
- ld hl, sPlayerData + PlayerName - wPlayerData
- ld bc, NAME_LENGTH
- call CopyBytes
- ld hl, sPlayerData + PlayerID - wPlayerData
- ld bc, 2
- call CopyBytes
- ld hl, sPlayerData + wSecretID - wPlayerData
- ld bc, 2
- call CopyBytes
- call CloseSRAM
- ld a, BANK(sCrystalData)
- call GetSRAMBank
- ld a, [sCrystalData + 0]
- ld [de], a
- inc de
- ld a, $4
- call GetSRAMBank
- ld hl, $a603
- ld bc, $8
- call CopyBytes
- ld hl, $a007
- ld bc, $c
- call CopyBytes
- call CloseSRAM
- ret
-
-Function1057d7: ; 1057d7 (41:57d7)
- call ClearBGPalettes
- call DisableLCD
- ld hl, MysteryGiftJP_GFX
- ld de, VTiles2 tile $00
- ld a, BANK(MysteryGiftJP_GFX)
- lb bc, 4, 0
- call FarCopyBytes
- ld hl, MysteryGiftJP_GFX + $400
- ld de, VTiles0 tile $00
- ld a, BANK(MysteryGiftJP_GFX)
- ld bc, $80
- call FarCopyBytes
- hlcoord 0, 0
- ld a, $3f
- ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
- call ByteFill
- hlcoord 3, 7
- lb bc, 9, 15
- call ClearBox
- hlcoord 0, 0
- ld a, $0
- ld [hli], a
- inc a
- ld [hl], a
- hlcoord 0, 1
- inc a
- ld [hli], a
- inc a
- ld [hl], a
- hlcoord 4, 2
- ld a, $13
- call .Load11Row
- hlcoord 4, 3
- ld a, $1e
- call .Load12Row
- hlcoord 4, 4
- ld a, $2a
- call .Load12Row
- hlcoord 1, 2
- ld [hl], $4
- hlcoord 1, 3
- ld a, $5
- call .Load14Column
- ld a, $9
- hlcoord 18, 5
- call .Load11Column
- hlcoord 2, 5
- ld a, $b
- call .Load16Row
- hlcoord 2, 16
- ld a, $7
- call .Load16Row
- hlcoord 2, 5
- ld a, $d
- call .Load6Row
- hlcoord 8, 5
- ld [hl], $c
- hlcoord 18, 5
- ld [hl], $a
- hlcoord 18, 16
- ld [hl], $8
- hlcoord 1, 16
- ld [hl], $6
- hlcoord 2, 6
- ld a, $37
- call .Load16Row
- hlcoord 2, 15
- ld a, $3d
- call .Load16Row
- hlcoord 2, 6
- ld a, $39
- call .Load9Column
- hlcoord 17, 6
- ld a, $3b
- call .Load9Column
- hlcoord 2, 6
- ld [hl], $36
- hlcoord 17, 6
- ld [hl], $38
- hlcoord 2, 15
- ld [hl], $3c
- hlcoord 17, 15
- ld [hl], $3e
- ld de, Sprites
- ld hl, .OAM_data
- ld bc, $40
- call CopyBytes
- call EnableLCD
- call WaitBGMap
- ld b, $2
- callba GetMysteryGift_MobileAdapterLayout
- jp SetPalettes
-
-.Load6Row: ; 1058c6 (41:58c6)
- ld b, 6
- jr .row_loop
-
-.Load11Row: ; 1058ca (41:58ca)
- ld b, 11
- jr .row_loop
-
-.Load12Row: ; 1058ce (41:58ce)
- ld b, 12
-
-.row_loop ; 1058d0 (41:58d0)
- ld [hli], a
- inc a
- dec b
- jr nz, .row_loop
- ret
-
-.Load9Column: ; 1058d6 (41:58d6)
- ld b, 9
- jr .column_loop
-
-.Load11Column: ; 1058da (41:58da)
- ld b, 11
- jr .column_loop
-
-.Load14Column: ; 1058de (41:58de)
- ld b, 14
-
-.column_loop ; 1058e0 (41:58e0)
- ld [hl], a
- ld de, SCREEN_WIDTH
- add hl, de
- dec b
- jr nz, .column_loop
- ret
-
-.Load16Row: ; 1058e9 (41:58e9)
- ld b, 16
-.row_loop_no_inc
- ld [hli], a
- dec b
- jr nz, .row_loop_no_inc
- ret
-; 1058f0 (41:58f0)
-
-.OAM_data: ; 1058f0
- dsprite 2, 1, 6, 4, $00, $00
- dsprite 2, 1, 7, 4, $01, $00
- dsprite 2, 1, 8, 4, $02, $00
- dsprite 2, 1, 9, 4, $03, $00
- dsprite 3, 1, 6, 4, $04, $00
- dsprite 3, 1, 7, 4, $05, $00
- dsprite 3, 1, 8, 4, $06, $00
- dsprite 3, 1, 9, 4, $07, $00
- dsprite 0, 1, 11, 4, $00, $00
- dsprite 0, 1, 12, 4, $01, $00
- dsprite 0, 1, 13, 4, $02, $00
- dsprite 0, 1, 14, 4, $03, $00
- dsprite 1, 1, 11, 4, $04, $00
- dsprite 1, 1, 12, 4, $05, $00
- dsprite 1, 1, 13, 4, $06, $00
- dsprite 1, 1, 14, 4, $07, $00
-
-; japanese mystery gift gfx
-MysteryGiftJP_GFX: ; 105930
-INCBIN "gfx/misc/mystery_gift_jp.2bpp"