summaryrefslogtreecommitdiff
path: root/engine/mysterygift.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/mysterygift.asm')
-rwxr-xr-xengine/mysterygift.asm1702
1 files changed, 1702 insertions, 0 deletions
diff --git a/engine/mysterygift.asm b/engine/mysterygift.asm
new file mode 100755
index 000000000..43cbe52d1
--- /dev/null
+++ b/engine/mysterygift.asm
@@ -0,0 +1,1702 @@
+DoMysteryGift: ; 1048ba (41:48ba)
+ call ClearTileMap
+ call ClearSprites
+ call WaitBGMap
+ call Function105153
+ hlcoord 3, 8
+ ld de, .String_PressAToLink_BToCancel
+ call PlaceString
+ call WaitBGMap
+ callba Function2c642
+ call Function1050fb
+ 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_08
+ 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, [wc962]
+ and a
+ jp nz, .GiftWaiting
+ ld a, [wc912]
+ 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 MobileFn_1060a9
+ callba BackupMobileEventIndex
+.skip_append_save
+ ld a, [wc90f]
+ and a
+ jr z, .item
+ ld a, [wc911]
+ ld c, a
+ callba MysteryGiftGetDecoration
+ push bc
+ call Function105069
+ 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, [wc910]
+ 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
+rept 2
+ add hl, de
+endr
+ 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, [hPrintNum10]
+ cp $10
+ jp z, Function104bd0
+ cp $6c
+ jr nz, .loop2
+ ld a, [hPrintNum9]
+ cp $2
+ jr z, Function104b22
+ ld hl, $ffb3
+ ld b, $1
+ call Function104d56
+ jr nz, .ly_loop
+ call Function104b49
+ jp nz, Function104bd0
+ jr asm_104b0a
+.ly_loop
+ ld a, [rLY]
+ cp $90
+ jr c, .ly_loop
+ ld c, rRP % $100
+ ld a, $c0
+ ld [$ff00+c], a
+ ld b, $f0
+.loop3
+ push bc
+ call Function105038
+ ld b, $2
+ ld c, rRP % $100
+.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
+ or a
+ jr nz, .loop2
+ ld a, [hMoneyTemp + 1]
+ bit 1, a
+ jr z, .loop3
+ ld a, $10
+ ld [hPrintNum10], a
+ jp Function104bd0
+
+Function104b04: ; 104b04 (41:4b04)
+ call Function104b40
+ jp nz, Function104bd0
+
+asm_104b0a: ; 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, $ffb3
+ ld b, $1
+ call Function104d56
+ ret nz
+
+Function104b49: ; 104b49 (41:4b49)
+ call Function105033
+ ld a, [hPrintNum10]
+ cp $6c
+ ret nz
+ ld a, [$ffb3]
+ cp $96
+ jp nz, Function104d32
+ ld a, $90
+ ld [$ffb3], a
+ call Function104d38
+ ret nz
+ ld hl, $ffb3
+ ld b, $1
+ call Function104d4e
+ ret nz
+ call Function10502e
+ ld a, [hPrintNum10]
+ 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, [hPrintNum10]
+ cp $6c
+ ret
+
+Function104b88: ; 104b88 (41:4b88)
+ ld a, $96
+ ld [$ffb3], a
+ ld hl, $ffb3
+ ld b, $1
+ call Function104d4e
+ ret nz
+ call Function10502e
+ ld a, [hPrintNum10]
+ cp $6c
+ ret nz
+ call Function104d43
+ ret nz
+ ld hl, $ffb3
+ ld b, $1
+ call Function104d56
+ ret nz
+ call Function105033
+ ld a, [hPrintNum10]
+ cp $6c
+ ret nz
+ ld a, [$ffb3]
+ 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, [hPrintNum10]
+ cp $6c
+ ret
+
+Function104bd0: ; 104bd0 (41:4bd0)
+ nop
+ ld a, [hPrintNum10]
+ cp $10
+ jr z, .asm_104c18
+ cp $6c
+ jr nz, .asm_104c18
+ ld hl, wca01
+ dec [hl]
+ jr z, .asm_104c18
+ ld hl, wMysteryGiftTrainerData
+ ld de, wc900
+ ld bc, $14
+ call CopyBytes
+ ld a, [wMysteryGiftTrainerData]
+ cp $3
+ jr nc, .asm_104c18
+ callba Function10510b
+ call Function1050fb
+ 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
+.asm_104c18
+ ld a, [hPrintNum10]
+ 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, [hPrintNum10]
+ 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, $ffb3
+ ld b, $1
+ call Function104d56
+ ret nz
+ call Function105033
+ ld a, [hPrintNum10]
+ cp $6c
+ ret nz
+ ld a, [$ffb3]
+ cp $3c
+ jp nz, Function104d32
+ swap a
+ ld [$ffb3], a
+ call Function104d38
+ ret nz
+ ld hl, $ffb3
+ ld b, $1
+ call Function104d4e
+ ret nz
+ call Function10502e
+ ld a, [hPrintNum10]
+ 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, [hPrintNum10]
+ cp $6c
+ ret
+
+Function104cd2: ; 104cd2 (41:4cd2)
+ ld a, $3c
+ ld [$ffb3], a
+ ld hl, $ffb3
+ ld b, $1
+ call Function104d4e
+ ret nz
+ call Function10502e
+ ld a, [hPrintNum10]
+ cp $6c
+ ret nz
+ call Function104d43
+ ret nz
+ ld hl, $ffb3
+ ld b, $1
+ call Function104d56
+ ret nz
+ call Function105033
+ ld a, [hPrintNum10]
+ cp $6c
+ ret nz
+ ld a, [$ffb3]
+ 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, [hPrintNum10]
+ cp $6c
+ ret
+
+Function104d1c: ; 104d1c (41:4d1c)
+ nop
+ ld a, [hPrintNum10]
+ 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 [hPrintNum10], a
+ and a
+ ret
+
+Function104d38: ; 104d38 (41:4d38)
+ call Function104d96
+ call Function104e46
+ ld a, [hPrintNum10]
+ cp $6c
+ ret
+
+Function104d43: ; 104d43 (41:4d43)
+ call Function104d96
+ call Function104dfe
+ ld a, [hPrintNum10]
+ cp $6c
+ ret
+
+Function104d4e: ; 104d4e (41:4d4e)
+ call Function104e93
+ ld a, [hPrintNum10]
+ cp $6c
+ ret
+
+Function104d56: ; 104d56 (41:4d56)
+ call Function104f57
+ ld a, [hPrintNum10]
+ 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
+.asm_104dc8
+ dec d
+ ret z
+ xor a
+ ld [rIF], a
+ halt
+ jr .asm_104dc8
+
+Function104dd1: ; 104dd1 (41:4dd1)
+ ld a, $c0
+ ld [$ff00+c], a
+.asm_104dd4
+ dec d
+ ret z
+ xor a
+ ld [rIF], a
+ halt
+ jr .asm_104dd4
+
+Function104ddd: ; 104ddd (41:4ddd)
+ ld d, $0
+ ld e, d
+ ld a, $1
+ ld [hPrintNum9], a
+.asm_104de4
+ call Function105038
+ ld b, $2
+ ld c, rRP % $100
+ ld a, [hMoneyTemp + 1]
+ bit 1, a
+ jr z, .asm_104df6
+ ld a, $10
+ ld [hPrintNum10], a
+ ret
+.asm_104df6
+ bit 0, a
+ jr nz, asm_104e3a
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_104de4
+
+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 [hPrintNum10], 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
+
+asm_104e3a: ; 104e3a (41:4e3a)
+ call Random
+ ld e, a
+ and $f
+ ld d, a
+.asm_104e41
+ dec de
+ ld a, d
+ or e
+ jr nz, .asm_104e41
+
+Function104e46: ; 104e46 (41:4e46)
+ ld a, $2
+ ld [hPrintNum9], a
+ ld c, $56
+ 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 [hPrintNum10], a
+ ret
+
+Function104e8c: ; 104e8c (41:4e8c)
+ ld [rRP], a
+ ld a, $ff
+ ld [hPrintNum10], a
+ ret
+
+Function104e93: ; 104e93 (41:4e93)
+ xor a
+ ld [hDivisor], a
+ ld [hMathBuffer], a
+ push hl
+ push bc
+ ld c, $56
+ ld d, $3d
+ call Function104dd1
+ ld hl, hQuotient ; $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, [hDivisor]
+ ld [hQuotient], a
+ ld a, [hMathBuffer]
+ ld [$ffb5], a
+ push hl
+ ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand)
+ ld b, $2
+ call Function104ed6
+ ld hl, hPrintNum10
+ ld b, $1
+ call Function104faf
+ ld a, [hQuotient]
+ ld [hDivisor], a
+ ld a, [$ffb5]
+ ld [hMathBuffer], a
+ pop hl
+ ret
+
+Function104ed6: ; 104ed6 (41:4ed6)
+ ld c, $56
+ 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 [$ffb6], a
+ ld a, [hli]
+ ld e, a
+ ld a, [hDivisor]
+ add e
+ ld [hDivisor], a
+ ld a, [hMathBuffer]
+ adc $0
+ ld [hMathBuffer], 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, [$ffb6]
+ dec a
+ jr z, .asm_104eee
+ ld [$ffb6], 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, [hPrintNum10]
+ or $2
+ ld [hPrintNum10], a
+ ret
+
+Function104f49: ; 104f49 (41:4f49)
+ ld a, [hPrintNum10]
+ or $1
+ ld [hPrintNum10], a
+ ret
+
+Function104f50: ; 104f50 (41:4f50)
+ ld a, [hPrintNum10]
+ or $80
+ ld [hPrintNum10], a
+ ret
+
+Function104f57: ; 104f57 (41:4f57)
+ xor a
+ ld [hDivisor], a
+ ld [hMathBuffer], a
+ push bc
+ push hl
+ ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand)
+ ld b, $2
+ call Function104faf
+ ld a, [$ffb5]
+ ld [$ffba], a
+ ld b, a
+ pop hl
+ pop af
+ cp b
+ jp c, Function104f50
+ ld a, [hQuotient]
+ cp $5a
+ jp nz, Function104f50
+ call Function104faf
+ ld a, [hDivisor]
+ ld d, a
+ ld a, [hMathBuffer]
+ ld e, a
+ push hl
+ push de
+ ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand)
+ ld b, $2
+ call Function104faf
+ pop de
+ ld hl, hQuotient ; $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, hPrintNum10
+ ld b, $1
+ call Function104ed6
+ pop de
+ pop hl
+ ld a, d
+ ld [hDivisor], a
+ ld a, e
+ ld [hMathBuffer], 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 [hMoneyTemp + 2], a
+ call Function104d86
+.asm_104fd2
+ inc b
+ jr z, .asm_10501a
+ ld a, $8
+ ld [$ffb6], 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, [hMoneyTemp + 2]
+ ld d, a
+ ld a, [rTIMA]
+ ld [hMoneyTemp + 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, [$ffb6]
+ dec a
+ ld [$ffb6], 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, [hDivisor]
+ add e
+ ld [hDivisor], a
+ ld a, [hMathBuffer]
+ adc $0
+ ld [hMathBuffer], 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
+
+Function105038: ; 105038 (41:5038)
+ ld a, $20
+ ld [rJOYP], a
+rept 2
+ ld a, [rJOYP]
+endr
+ cpl
+ and $f
+ swap a
+ ld b, a
+ ld a, $10
+ ld [rJOYP], a
+rept 6
+ ld a, [rJOYP]
+endr
+ cpl
+ and $f
+ or b
+ ld c, a
+ ld a, [hMoneyTemp]
+ xor c
+ and c
+ ld [hMoneyTemp + 1], a
+ ld a, c
+ ld [hMoneyTemp], a
+ ld a, $30
+ ld [rJOYP], a
+ ret
+
+Function105069: ; 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
+
+Function105091: ; 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
+
+Function1050fb: ; 1050fb (41:50fb)
+ ld hl, wMysteryGiftTrainerData
+ xor a
+ ld b, $26
+.asm_105101
+ ld [hli], a
+ dec b
+ jr nz, .asm_105101
+ ret
+
+
+GetMysteryGiftBank: ; 105106
+ ld a, BANK(sBackupMysteryGiftItem)
+ jp GetSRAMBank
+; 10510b
+
+
+Function10510b: ; 10510b (41:510b)
+ ld a, BANK(sPokemonData)
+ call GetSRAMBank
+ ld de, OverworldMap
+ ld bc, sPokemonData + PartyMons - wPokemonData
+ ld hl, sPokemonData + PartySpecies - wPokemonData
+.asm_105119
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_105148
+ cp EGG
+ jr z, .asm_10513e
+ push hl
+ ld hl, MON_LEVEL
+ add hl, bc
+ ld a, [hl]
+ ld [de], a
+ inc de
+ ld hl, MON_SPECIES
+ add hl, bc
+ ld a, [hl]
+ ld [de], a
+ inc de
+ ld hl, MON_MOVES
+ add hl, bc
+ push bc
+ ld bc, NUM_MOVES
+ call CopyBytes
+ pop bc
+ pop hl
+.asm_10513e
+ push hl
+ ld hl, PARTYMON_STRUCT_LENGTH
+ add hl, bc
+ ld b, h
+ ld c, l
+ pop hl
+ jr .asm_105119
+.asm_105148
+ ld a, $ff
+ ld [de], a
+ ld a, $26
+ ld [wca00], a
+ jp CloseSRAM
+
+Function105153: ; 105153 (41:5153)
+ call ClearBGPalettes
+ call DisableLCD
+ ld hl, MysteryGiftGFX
+ ld de, VTiles2 tile $00
+ ld a, BANK(MysteryGiftGFX)
+ ld bc, Function105688 - 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 Function10522e
+ hlcoord 2, 2
+ ld a, $17
+ call Function105236
+ hlcoord 2, 3
+ ld a, $27
+ call Function105236
+ 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 Function105246
+ ld a, $9
+ hlcoord 18, 5
+ call Function105242
+ hlcoord 2, 5
+ ld a, $b
+ call Function105251
+ hlcoord 2, 16
+ ld a, $7
+ call Function105251
+ hlcoord 2, 5
+ ld a, $d
+ call Function10522e
+ 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 Function105251
+ hlcoord 2, 15
+ ld a, $40
+ call Function105251
+ hlcoord 2, 6
+ ld a, $3c
+ call Function10523e
+ hlcoord 17, 6
+ ld a, $3e
+ call Function10523e
+ 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_1D
+ call GetSGBLayout
+ call SetPalettes
+ ret
+
+Function10522e: ; 10522e (41:522e)
+ ld b, $5
+ jr asm_105238
+; 105232 (41:5232)
+
+Function105232: ; unreferenced
+ ld b, 6
+ jr asm_105238
+
+Function105236: ; 105236 (41:5236)
+ ld b, $10
+
+asm_105238: ; 105238 (41:5238)
+ ld [hli], a
+ inc a
+ dec b
+ jr nz, asm_105238
+ ret
+
+Function10523e: ; 10523e (41:523e)
+ ld b, $9
+ jr asm_105248
+
+Function105242: ; 105242 (41:5242)
+ ld b, $b
+ jr asm_105248
+
+Function105246: ; 105246 (41:5246)
+ ld b, $e
+
+asm_105248: ; 105248 (41:5248)
+ ld [hl], a
+ ld de, $14
+ add hl, de
+ dec b
+ jr nz, asm_105248
+ ret
+
+Function105251: ; 105251 (41:5251)
+ ld b, $10
+.asm_105253
+ ld [hli], a
+ dec b
+ jr nz, .asm_105253
+ ret
+
+MysteryGiftGFX: ; 105258
+INCBIN "gfx/misc/mystery_gift.2bpp"
+
+
+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 Function1050fb
+ 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_10575e
+ call PrintText
+ ld de, wMysteryGiftTrainerData
+ callba Function8ac70
+ ld a, c
+ ld [wd265], a
+ ld hl, Text_105768
+ jr c, asm_105726
+ ld hl, Text_105763
+ 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_10576d
+ jr asm_105726
+
+Function10571a: ; 10571a (41:571a)
+ call Function105777
+ ld hl, Text_105772
+ 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 "つうしん", $4a, "おこなわれるよ!"
+ next "ビーボタン¯おすと"
+ next "つうしん¯ちゅうし します"
+ db "@"
+
+; 10575e
+
+Text_10575e: ; 10575e
+ text_jump UnknownText_0x1c051a
+ db "@"
+
+Text_105763: ; 105763
+ text_jump UnknownText_0x1c0531
+ db "@"
+
+Text_105768: ; 105768
+ text_jump UnknownText_0x1c0555
+ db "@"
+
+Text_10576d: ; 10576d
+ text_jump UnknownText_0x1c0573
+ db "@"
+
+Text_105772: ; 105772
+ text_jump UnknownText_0x1c0591
+ db "@"
+; 105777
+
+Function105777: ; 105777 (41:5777)
+ call ClearSprites
+ call ClearTileMap
+ call EnableLCD
+ call WaitBGMap
+ ld b, SCGB_08
+ 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 Function1058ca
+ hlcoord 4, 3
+ ld a, $1e
+ call Function1058ce
+ hlcoord 4, 4
+ ld a, $2a
+ call Function1058ce
+ hlcoord 1, 2
+ ld [hl], $4
+ hlcoord 1, 3
+ ld a, $5
+ call Function1058de
+ ld a, $9
+ hlcoord 18, 5
+ call Function1058da
+ hlcoord 2, 5
+ ld a, $b
+ call Function1058e9
+ hlcoord 2, 16
+ ld a, $7
+ call Function1058e9
+ hlcoord 2, 5
+ ld a, $d
+ call Function1058c6
+ 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 Function1058e9
+ hlcoord 2, 15
+ ld a, $3d
+ call Function1058e9
+ hlcoord 2, 6
+ ld a, $39
+ call Function1058d6
+ hlcoord 17, 6
+ ld a, $3b
+ call Function1058d6
+ 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_1058f0
+ ld bc, $40
+ call CopyBytes
+ call EnableLCD
+ call WaitBGMap
+ ld b, $2
+ callba Function4930f
+ jp SetPalettes
+
+Function1058c6: ; 1058c6 (41:58c6)
+ ld b, $6
+ jr asm_1058d0
+
+Function1058ca: ; 1058ca (41:58ca)
+ ld b, $b
+ jr asm_1058d0
+
+Function1058ce: ; 1058ce (41:58ce)
+ ld b, $c
+
+asm_1058d0: ; 1058d0 (41:58d0)
+ ld [hli], a
+ inc a
+ dec b
+ jr nz, asm_1058d0
+ ret
+
+Function1058d6: ; 1058d6 (41:58d6)
+ ld b, $9
+ jr asm_1058e0
+
+Function1058da: ; 1058da (41:58da)
+ ld b, $b
+ jr asm_1058e0
+
+Function1058de: ; 1058de (41:58de)
+ ld b, $e
+
+asm_1058e0: ; 1058e0 (41:58e0)
+ ld [hl], a
+ ld de, SCREEN_WIDTH
+ add hl, de
+ dec b
+ jr nz, asm_1058e0
+ ret
+
+Function1058e9: ; 1058e9 (41:58e9)
+ ld b, $10
+.asm_1058eb
+ ld [hli], a
+ dec b
+ jr nz, .asm_1058eb
+ ret
+; 1058f0 (41:58f0)
+
+OAM_1058f0: ; 1058f0
+ db $11, $34, $00, $00
+ db $11, $3c, $01, $00
+ db $11, $44, $02, $00
+ db $11, $4c, $03, $00
+ db $19, $34, $04, $00
+ db $19, $3c, $05, $00
+ db $19, $44, $06, $00
+ db $19, $4c, $07, $00
+ db $01, $5c, $00, $00
+ db $01, $64, $01, $00
+ db $01, $6c, $02, $00
+ db $01, $74, $03, $00
+ db $09, $5c, $04, $00
+ db $09, $64, $05, $00
+ db $09, $6c, $06, $00
+ db $09, $74, $07, $00
+
+; japanese mystery gift gfx
+MysteryGiftJP_GFX: ; 105930
+INCBIN "gfx/misc/mystery_gift_jp.2bpp"