1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
CableClubNPC: ; 71c5 (1:71c5)
ld hl, CableClubNPCWelcomeText
call PrintText
ld a, [wd74b]
bit 5, a ; received pokedex?
jp nz, .receivedPokedex
; if the player hasn't received the pokedex
ld c, $3c
call DelayFrames
ld hl, CableClubNPCMakingPreparationsText
call PrintText
jp Func_7298
.receivedPokedex
ld a, $1
ld [wMenuJoypadPollCount], a
ld a, 90
ld [wLinkTimeoutCounter], a
.establishConnectionLoop
ld a, [hSerialConnectionStatus]
cp USING_INTERNAL_CLOCK
jr z, .establishedConnection
cp USING_EXTERNAL_CLOCK
jr z, .establishedConnection
ld a, CONNECTION_NOT_ESTABLISHED
ld [hSerialConnectionStatus], a
ld a, ESTABLISH_CONNECTION_WITH_EXTERNAL_CLOCK
ld [rSB], a
xor a
ld [hSerialReceiveData], a
ld a, START_TRANSFER_EXTERNAL_CLOCK
ld [rSC], a
ld a, [wLinkTimeoutCounter]
dec a
ld [wLinkTimeoutCounter], a
jr z, .failedToEstablishConnection
ld a, ESTABLISH_CONNECTION_WITH_INTERNAL_CLOCK
ld [rSB], a
ld a, START_TRANSFER_INTERNAL_CLOCK
ld [rSC], a
call DelayFrame
jr .establishConnectionLoop
.establishedConnection
call Serial_SendZeroByte
call DelayFrame
call Serial_SendZeroByte
ld c, 50
call DelayFrames
ld hl, CableClubNPCPleaseApplyHereHaveToSaveText
call PrintText
xor a
ld [wMenuJoypadPollCount], a
call YesNoChoice
ld a, $1
ld [wMenuJoypadPollCount], a
ld a, [wCurrentMenuItem]
and a
jr nz, .choseNo
callab SaveSAVtoSRAM
call WaitForSoundToFinish
ld a, (SFX_02_5d - SFX_Headers_02) / 3
call PlaySoundWaitForCurrent
ld hl, CableClubNPCPleaseWaitText
call PrintText
ld hl, wUnknownSerialCounter
ld a, $3
ld [hli], a
xor a
ld [hl], a
ld [hSerialReceivedNewData], a
ld [wSerialExchangeNybbleSendData], a
call Serial_SyncAndExchangeNybble
ld hl, wUnknownSerialCounter
ld a, [hli]
inc a
jr nz, Func_72a8 ; 0x726b $3b
ld a, [hl]
inc a
jr nz, Func_72a8 ; 0x726f $37
ld b, $a
.asm_7273
call DelayFrame
call Serial_SendZeroByte
dec b
jr nz, .asm_7273 ; 0x727a $f7
call CloseLinkConnection
ld hl, CableClubNPCLinkClosedBecauseOfInactivityText
call PrintText
jr Func_7298 ; 0x7285 $11
.failedToEstablishConnection
ld hl, CableClubNPCAreaReservedFor2FriendsLinkedByCableText
call PrintText
jr Func_7298 ; 0x728d $9
.choseNo
call CloseLinkConnection
ld hl, CableClubNPCPleaseComeAgainText
call PrintText
; fall through
Func_7298: ; 7298 (1:7298)
xor a
ld hl, wUnknownSerialCounter
ld [hli], a
ld [hl], a
ld hl, wd72e
res 6, [hl]
xor a
ld [wMenuJoypadPollCount], a
ret
Func_72a8: ; 72a8 (1:72a8)
xor a
ld [hld], a
ld [hl], a
ld hl, LinkMenu
ld b, BANK(LinkMenu)
jp Bankswitch
CableClubNPCAreaReservedFor2FriendsLinkedByCableText: ; 72b3 (1:72b3)
TX_FAR _CableClubNPCAreaReservedFor2FriendsLinkedByCableText
db "@"
CableClubNPCWelcomeText: ; 72b8 (1:72b8)
TX_FAR _CableClubNPCWelcomeText
db "@"
CableClubNPCPleaseApplyHereHaveToSaveText: ; 72bd (1:72bd)
TX_FAR _CableClubNPCPleaseApplyHereHaveToSaveText
db "@"
CableClubNPCPleaseWaitText: ; 72c2 (1:72c2)
TX_FAR _CableClubNPCPleaseWaitText
db $a, "@"
CableClubNPCLinkClosedBecauseOfInactivityText: ; 72c8 (1:72c8)
TX_FAR _CableClubNPCLinkClosedBecauseOfInactivityText
db "@"
CableClubNPCPleaseComeAgainText: ; 72cd (1:72cd)
TX_FAR _CableClubNPCPleaseComeAgainText
db "@"
CableClubNPCMakingPreparationsText: ; 72d2 (1:72d2)
TX_FAR _CableClubNPCMakingPreparationsText
db "@"
CloseLinkConnection: ; 72d7 (1:72d7)
call Delay3
ld a, CONNECTION_NOT_ESTABLISHED
ld [hSerialConnectionStatus], a
ld a, ESTABLISH_CONNECTION_WITH_EXTERNAL_CLOCK
ld [rSB], a
xor a
ld [hSerialReceiveData], a
ld a, START_TRANSFER_EXTERNAL_CLOCK
ld [rSC], a
ret
|