Some mystery gift functions

This commit is contained in:
pikalaxalt
2016-06-07 08:08:51 -04:00
parent d7a01e92e9
commit b0e7d04ccf
4 changed files with 115 additions and 168 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -2,13 +2,13 @@ DoMysteryGift: ; 1048ba (41:48ba)
call ClearTileMap call ClearTileMap
call ClearSprites call ClearSprites
call WaitBGMap call WaitBGMap
call Function105153 call InitMysteryGiftLayout
hlcoord 3, 8 hlcoord 3, 8
ld de, .String_PressAToLink_BToCancel ld de, .String_PressAToLink_BToCancel
call PlaceString call PlaceString
call WaitBGMap call WaitBGMap
callba Function2c642 callba PrepMysteryGiftDataToSend
call Function1050fb call MysteryGift_ClearTrainerData
ld a, $2 ld a, $2
ld [wca01], a ld [wca01], a
ld a, $14 ld a, $14
@@ -239,14 +239,16 @@ Function104a95: ; 104a95 (41:4a95)
di di
callba ClearChannels callba ClearChannels
call Function104d5e call Function104d5e
.loop2 .loop2
call Function104d96 call Function104d96
call Function104ddd call Function104ddd
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
cp $10 cp $10
jp z, Function104bd0 jp z, Function104bd0
cp $6c cp $6c
jr nz, .loop2 jr nz, .loop2
ld a, [hPrintNum9] ld a, [hPrintNum9]
cp $2 cp $2
jr z, Function104b22 jr z, Function104b22
@@ -256,7 +258,8 @@ Function104a95: ; 104a95 (41:4a95)
jr nz, .ly_loop jr nz, .ly_loop
call Function104b49 call Function104b49
jp nz, Function104bd0 jp nz, Function104bd0
jr asm_104b0a jr Function104b0a
; Delay frame
.ly_loop .ly_loop
ld a, [rLY] ld a, [rLY]
cp $90 cp $90
@@ -264,12 +267,15 @@ Function104a95: ; 104a95 (41:4a95)
ld c, rRP % $100 ld c, rRP % $100
ld a, $c0 ld a, $c0
ld [$ff00+c], a ld [$ff00+c], a
ld b, $f0 ld b, 240 ; This might have been intended as a 4-second timeout buffer.
; However, it is reset with each frame.
.loop3 .loop3
push bc push bc
call Function105038 call MysteryGift_ReadJoypad
ld b, $2 ld b, $2
ld c, rRP % $100 ld c, rRP % $100
; Delay frame
.ly_loop2 .ly_loop2
ld a, [$ff00+c] ld a, [$ff00+c]
and b and b
@@ -284,24 +290,25 @@ Function104a95: ; 104a95 (41:4a95)
ld a, [rLY] ld a, [rLY]
cp $90 cp $90
jr c, .ly_loop3 jr c, .ly_loop3
ld a, b ld a, b
pop bc pop bc
dec b dec b
jr z, .loop2 jr z, .loop2 ; we never jump here
or a or a
jr nz, .loop2 jr nz, .loop2
ld a, [hMoneyTemp + 1] ; Check if we've pressed the B button
bit 1, a ld a, [hMGJoypadReleased]
bit B_BUTTON_F, a
jr z, .loop3 jr z, .loop3
ld a, $10 ld a, $10
ld [hPrintNum10], a ld [hMGStatusFlags], a
jp Function104bd0 jp Function104bd0
Function104b04: ; 104b04 (41:4b04) Function104b04: ; 104b04 (41:4b04)
call Function104b40 call Function104b40
jp nz, Function104bd0 jp nz, Function104bd0
Function104b0a: ; 104b0a (41:4b0a)
asm_104b0a: ; 104b0a (41:4b0a)
call Function104d38 call Function104d38
jp nz, Function104bd0 jp nz, Function104bd0
call Function104b88 call Function104b88
@@ -331,7 +338,7 @@ Function104b40: ; 104b40 (41:4b40)
Function104b49: ; 104b49 (41:4b49) Function104b49: ; 104b49 (41:4b49)
call Function105033 call Function105033
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
cp $6c cp $6c
ret nz ret nz
ld a, [hPrintNum1] ld a, [hPrintNum1]
@@ -346,7 +353,7 @@ Function104b49: ; 104b49 (41:4b49)
call Function104d4e call Function104d4e
ret nz ret nz
call Function10502e call Function10502e
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
cp $6c cp $6c
ret nz ret nz
call Function104d43 call Function104d43
@@ -357,7 +364,7 @@ Function104b49: ; 104b49 (41:4b49)
call Function104d56 call Function104d56
ret nz ret nz
call Function105033 call Function105033
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
cp $6c cp $6c
ret ret
@@ -369,7 +376,7 @@ Function104b88: ; 104b88 (41:4b88)
call Function104d4e call Function104d4e
ret nz ret nz
call Function10502e call Function10502e
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
cp $6c cp $6c
ret nz ret nz
call Function104d43 call Function104d43
@@ -379,7 +386,7 @@ Function104b88: ; 104b88 (41:4b88)
call Function104d56 call Function104d56
ret nz ret nz
call Function105033 call Function105033
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
cp $6c cp $6c
ret nz ret nz
ld a, [hPrintNum1] ld a, [hPrintNum1]
@@ -393,29 +400,29 @@ Function104b88: ; 104b88 (41:4b88)
call Function104d4e call Function104d4e
ret nz ret nz
call Function10502e call Function10502e
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
cp $6c cp $6c
ret ret
Function104bd0: ; 104bd0 (41:4bd0) Function104bd0: ; 104bd0 (41:4bd0)
nop nop
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
cp $10 cp $10
jr z, .asm_104c18 jr z, .quit
cp $6c cp $6c
jr nz, .asm_104c18 jr nz, .quit
ld hl, wca01 ld hl, wca01
dec [hl] dec [hl]
jr z, .asm_104c18 jr z, .quit
ld hl, wMysteryGiftTrainerData ld hl, wMysteryGiftTrainerData
ld de, wMysteryGiftPartnerData ld de, wMysteryGiftPartnerData
ld bc, wMysteryGiftPartnerDataEnd - wMysteryGiftPartnerData ld bc, wMysteryGiftPartnerDataEnd - wMysteryGiftPartnerData
call CopyBytes call CopyBytes
ld a, [wMysteryGiftTrainerData] ld a, [wMysteryGiftTrainerData]
cp $3 cp $3
jr nc, .asm_104c18 jr nc, .quit
callba StagePartyDataForMysteryGift callba StagePartyDataForMysteryGift
call Function1050fb call MysteryGift_ClearTrainerData
ld a, $26 ld a, $26
ld [wca02], a ld [wca02], a
ld a, [hPrintNum9] ld a, [hPrintNum9]
@@ -424,12 +431,14 @@ Function104bd0: ; 104bd0 (41:4bd0)
call Function104d43 call Function104d43
jr nz, Function104bd0 jr nz, Function104bd0
jp Function104b04 jp Function104b04
.asm_104c10 .asm_104c10
call Function104d38 call Function104d38
jr nz, Function104bd0 jr nz, Function104bd0
jp Function104b22 jp Function104b22
.asm_104c18
ld a, [hPrintNum10] .quit
ld a, [hMGStatusFlags]
push af push af
call Function104da0 call Function104da0
xor a xor a
@@ -449,7 +458,7 @@ Function104c2d: ; 104c2d (41:4c2d)
.asm_104c37 .asm_104c37
call Function104d96 call Function104d96
call Function104ddd call Function104ddd
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
cp $10 cp $10
jp z, Function104d1c jp z, Function104d1c
cp $6c cp $6c
@@ -485,7 +494,7 @@ Function104c8a: ; 104c8a (41:4c8a)
call Function104d56 call Function104d56
ret nz ret nz
call Function105033 call Function105033
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
cp $6c cp $6c
ret nz ret nz
ld a, [hPrintNum1] ld a, [hPrintNum1]
@@ -500,7 +509,7 @@ Function104c8a: ; 104c8a (41:4c8a)
call Function104d4e call Function104d4e
ret nz ret nz
call Function10502e call Function10502e
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
cp $6c cp $6c
ret nz ret nz
call Function104d43 call Function104d43
@@ -511,7 +520,7 @@ Function104c8a: ; 104c8a (41:4c8a)
call Function104d56 call Function104d56
ret nz ret nz
call Function105033 call Function105033
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
cp $6c cp $6c
ret ret
@@ -523,7 +532,7 @@ Function104cd2: ; 104cd2 (41:4cd2)
call Function104d4e call Function104d4e
ret nz ret nz
call Function10502e call Function10502e
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
cp $6c cp $6c
ret nz ret nz
call Function104d43 call Function104d43
@@ -533,7 +542,7 @@ Function104cd2: ; 104cd2 (41:4cd2)
call Function104d56 call Function104d56
ret nz ret nz
call Function105033 call Function105033
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
cp $6c cp $6c
ret nz ret nz
ld a, [hPrintNum1] ld a, [hPrintNum1]
@@ -548,13 +557,13 @@ Function104cd2: ; 104cd2 (41:4cd2)
call Function104d4e call Function104d4e
ret nz ret nz
call Function10502e call Function10502e
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
cp $6c cp $6c
ret ret
Function104d1c: ; 104d1c (41:4d1c) Function104d1c: ; 104d1c (41:4d1c)
nop nop
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
push af push af
call Function104da0 call Function104da0
xor a xor a
@@ -569,33 +578,33 @@ Function104d1c: ; 104d1c (41:4d1c)
Function104d32: ; 104d32 (41:4d32) Function104d32: ; 104d32 (41:4d32)
ld a, $80 ld a, $80
ld [hPrintNum10], a ld [hMGStatusFlags], a
and a and a
ret ret
Function104d38: ; 104d38 (41:4d38) Function104d38: ; 104d38 (41:4d38)
call Function104d96 call Function104d96
call Function104e46 call Function104e46
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
cp $6c cp $6c
ret ret
Function104d43: ; 104d43 (41:4d43) Function104d43: ; 104d43 (41:4d43)
call Function104d96 call Function104d96
call Function104dfe call Function104dfe
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
cp $6c cp $6c
ret ret
Function104d4e: ; 104d4e (41:4d4e) Function104d4e: ; 104d4e (41:4d4e)
call Function104e93 call Function104e93
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
cp $6c cp $6c
ret ret
Function104d56: ; 104d56 (41:4d56) Function104d56: ; 104d56 (41:4d56)
call Function104f57 call Function104f57
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
cp $6c cp $6c
ret ret
@@ -704,19 +713,19 @@ Function104ddd: ; 104ddd (41:4ddd)
ld a, $1 ld a, $1
ld [hPrintNum9], a ld [hPrintNum9], a
.loop .loop
call Function105038 call MysteryGift_ReadJoypad
ld b, $2 ld b, $2
ld c, rRP % $100 ld c, rRP % $100
ld a, [hMoneyTemp + 1] ld a, [hMGJoypadReleased]
bit 1, a bit B_BUTTON_F, a
jr z, .next jr z, .next
ld a, $10 ld a, $10
ld [hPrintNum10], a ld [hMGStatusFlags], a
ret ret
.next .next
bit 0, a bit 0, a
jr nz, asm_104e3a jr nz, Function104e3a
ld a, [$ff00+c] ld a, [$ff00+c]
and b and b
jr nz, .loop jr nz, .loop
@@ -735,7 +744,7 @@ Function104dfe: ; 104dfe (41:4dfe)
call Function104da9 call Function104da9
jp z, Function104f42 jp z, Function104f42
ld a, $6c ld a, $6c
ld [hPrintNum10], a ld [hMGStatusFlags], a
ld d, $3d ld d, $3d
call Function104dd1 call Function104dd1
ld d, $5 ld d, $5
@@ -748,17 +757,17 @@ Function104dfe: ; 104dfe (41:4dfe)
call Function104dd1 call Function104dd1
ret ret
asm_104e3a: ; 104e3a (41:4e3a) Function104e3a: ; 104e3a (41:4e3a)
; Wait a random amount of time
call Random call Random
ld e, a ld e, a
and $f and $f
ld d, a ld d, a
.asm_104e41 .loop
dec de dec de
ld a, d ld a, d
or e or e
jr nz, .asm_104e41 jr nz, .loop
Function104e46: ; 104e46 (41:4e46) Function104e46: ; 104e46 (41:4e46)
ld a, $2 ld a, $2
ld [hPrintNum9], a ld [hPrintNum9], a
@@ -788,13 +797,13 @@ Function104e46: ; 104e46 (41:4e46)
ld d, $3d ld d, $3d
call Function104dd1 call Function104dd1
ld a, $6c ld a, $6c
ld [hPrintNum10], a ld [hMGStatusFlags], a
ret ret
Function104e8c: ; 104e8c (41:4e8c) Function104e8c: ; 104e8c (41:4e8c)
ld [rRP], a ld [rRP], a
ld a, $ff ld a, $ff
ld [hPrintNum10], a ld [hMGStatusFlags], a
ret ret
Function104e93: ; 104e93 (41:4e93) Function104e93: ; 104e93 (41:4e93)
@@ -824,7 +833,7 @@ Function104e93: ; 104e93 (41:4e93)
ld hl, hPrintNum2 ; $ffb4 (aliases: hMultiplicand) ld hl, hPrintNum2 ; $ffb4 (aliases: hMultiplicand)
ld b, $2 ld b, $2
call Function104ed6 call Function104ed6
ld hl, hPrintNum10 ld hl, hMGStatusFlags
ld b, $1 ld b, $1
call Function104faf call Function104faf
ld a, [hPrintNum2] ld a, [hPrintNum2]
@@ -902,21 +911,21 @@ Function104ed6: ; 104ed6 (41:4ed6)
ret ret
Function104f42: ; 104f42 (41:4f42) Function104f42: ; 104f42 (41:4f42)
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
or $2 or $2
ld [hPrintNum10], a ld [hMGStatusFlags], a
ret ret
Function104f49: ; 104f49 (41:4f49) Function104f49: ; 104f49 (41:4f49)
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
or $1 or $1
ld [hPrintNum10], a ld [hMGStatusFlags], a
ret ret
Function104f50: ; 104f50 (41:4f50) Function104f50: ; 104f50 (41:4f50)
ld a, [hPrintNum10] ld a, [hMGStatusFlags]
or $80 or $80
ld [hPrintNum10], a ld [hMGStatusFlags], a
ret ret
Function104f57: ; 104f57 (41:4f57) Function104f57: ; 104f57 (41:4f57)
@@ -960,7 +969,7 @@ Function104f57: ; 104f57 (41:4f57)
push de push de
ld d, $3d ld d, $3d
call Function104dd1 call Function104dd1
ld hl, hPrintNum10 ld hl, hMGStatusFlags
ld b, $1 ld b, $1
call Function104ed6 call Function104ed6
pop de pop de
@@ -986,7 +995,7 @@ Function104faf: ; 104faf (41:4faf)
cpl cpl
ld b, a ld b, a
xor a xor a
ld [hMoneyTemp + 2], a ld [hMGJoypadPressed + 2], a
call Function104d86 call Function104d86
.asm_104fd2 .asm_104fd2
inc b inc b
@@ -1009,10 +1018,10 @@ Function104faf: ; 104faf (41:4faf)
bit 1, a bit 1, a
jr nz, .asm_104fe5 jr nz, .asm_104fe5
.asm_104fed .asm_104fed
ld a, [hMoneyTemp + 2] ld a, [hMGJoypadPressed + 2]
ld d, a ld d, a
ld a, [rTIMA] ld a, [rTIMA]
ld [hMoneyTemp + 2], a ld [hMGJoypadPressed + 2], a
sub d sub d
cp $12 cp $12
jr c, .asm_104ffd jr c, .asm_104ffd
@@ -1058,31 +1067,48 @@ Function105033: ; 105033 (41:5033)
ld b, $0 ld b, $0
jp Function104f57 jp Function104f57
Function105038: ; 105038 (41:5038) MysteryGift_ReadJoypad: ; 105038 (41:5038)
ld a, $20 ; 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 ld [rJOYP], a
; Read twice to give the request time to take.
ld a, [rJOYP] ld a, [rJOYP]
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 cpl
and $f and $f
swap a swap a
; We'll keep this in b for now.
ld b, a ld b, a
ld a, $10
; Buttons make 8 total inputs (A, B, Select, Start).
; We can fit this into one byte.
ld a, R_BUTTONS
ld [rJOYP], a ld [rJOYP], a
; Wait for input to stabilize.
rept 6 rept 6
ld a, [rJOYP] ld a, [rJOYP]
endr endr
; Buttons take the lo nybble.
cpl cpl
and $f and $f
or b or b
ld c, a ld c, a
ld a, [hMoneyTemp] ; To get the delta we xor the last frame's input with the new one.
ld a, [hMGJoypadPressed]
xor c xor c
; Released this frame:
and c and c
ld [hMoneyTemp + 1], a ld [hMGJoypadReleased], a
; Pressed this frame:
ld a, c ld a, c
ld [hMoneyTemp], a ld [hMGJoypadPressed], a
ld a, $30 ld a, $30
; Reset the joypad register since we're done with it.
ld [rJOYP], a ld [rJOYP], a
ret ret
@@ -1179,7 +1205,7 @@ RestoreMysteryGift: ; 1050ea (41:50ea)
ld [de], a ld [de], a
jp CloseSRAM jp CloseSRAM
Function1050fb: ; 1050fb (41:50fb) MysteryGift_ClearTrainerData: ; 1050fb (41:50fb)
ld hl, wMysteryGiftTrainerData ld hl, wMysteryGiftTrainerData
xor a xor a
ld b, wMysteryGiftTrainerDataEnd - wMysteryGiftTrainerData ld b, wMysteryGiftTrainerDataEnd - wMysteryGiftTrainerData
@@ -1247,7 +1273,7 @@ StagePartyDataForMysteryGift: ; 10510b (41:510b)
ld [wca00], a ld [wca00], a
jp CloseSRAM jp CloseSRAM
Function105153: ; 105153 (41:5153) InitMysteryGiftLayout: ; 105153 (41:5153)
call ClearBGPalettes call ClearBGPalettes
call DisableLCD call DisableLCD
ld hl, MysteryGiftGFX ld hl, MysteryGiftGFX
@@ -1398,7 +1424,7 @@ Function105688: ; 105688 (41:5688)
call PlaceString call PlaceString
call WaitBGMap call WaitBGMap
call Function10578c call Function10578c
call Function1050fb call MysteryGift_ClearTrainerData
ld a, $24 ld a, $24
ld [wca02], a ld [wca02], a
ld a, [rIE] ld a, [rIE]

View File

@@ -1,4 +1,4 @@
Function2c642: ; 2c642 (b:4642) PrepMysteryGiftDataToSend: ; 2c642 (b:4642)
ld de, wMysteryGiftStaging ld de, wMysteryGiftStaging
ld a, $1 ld a, $1
ld [de], a ld [de], a

View File

@@ -69,6 +69,8 @@ hPrintNum8 EQU $ffba
hPrintNum9 EQU $ffbb hPrintNum9 EQU $ffbb
hPrintNum10 EQU $ffbc hPrintNum10 EQU $ffbc
hMGStatusFlags EQU $ffbc
hUsedSpriteIndex EQU $ffbd hUsedSpriteIndex EQU $ffbd
hUsedSpriteTile EQU $ffbe hUsedSpriteTile EQU $ffbe
hFFBF EQU $ffbf hFFBF EQU $ffbf
@@ -77,9 +79,12 @@ hFFC1 EQU $ffc1
hFFC2 EQU $ffc2 hFFC2 EQU $ffc2
hMoneyTemp EQU $ffc3 hMoneyTemp EQU $ffc3
hMGJoypadPressed EQU $ffc3
hMGJoypadReleased EQU $ffc4
hFFC6 EQU $ffc6 hFFC6 EQU $ffc6
hLYOverrideStart EQU $ffc7 hLYOverrideStart EQU $ffc7
hLYOverrideEnd EQU $ffc8 hLYOverrideEnd EQU $ffc8
hMobileReceive EQU $ffc9 hMobileReceive EQU $ffc9
hFFCA EQU $ffca hFFCA EQU $ffca
hLinkPlayerNumber EQU $ffcb hLinkPlayerNumber EQU $ffcb