pokered/engine/overworld/cable_club_npc.asm

157 lines
3.5 KiB
NASM
Raw Normal View History

2014-05-22 22:13:20 +00:00
CableClubNPC: ; 71c5 (1:71c5)
2015-02-07 10:43:08 +00:00
ld hl, CableClubNPCWelcomeText
2014-05-22 22:13:20 +00:00
call PrintText
ld a, [wd74b]
2015-02-07 10:43:08 +00:00
bit 5, a ; received pokedex?
jp nz, .receivedPokedex
; if the player hasn't received the pokedex
2014-05-22 22:13:20 +00:00
ld c, $3c
call DelayFrames
2015-02-07 10:43:08 +00:00
ld hl, CableClubNPCMakingPreparationsText
2014-05-22 22:13:20 +00:00
call PrintText
jp Func_7298
2015-02-07 10:43:08 +00:00
.receivedPokedex
2014-05-22 22:13:20 +00:00
ld a, $1
ld [wMenuJoypadPollCount], a
2015-02-07 10:43:08 +00:00
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
2014-08-09 05:39:13 +00:00
ld [rSB], a
2014-05-22 22:13:20 +00:00
xor a
2015-02-07 10:43:08 +00:00
ld [hSerialReceiveData], a
ld a, START_TRANSFER_EXTERNAL_CLOCK
ld [rSC], a
ld a, [wLinkTimeoutCounter]
2014-05-22 22:13:20 +00:00
dec a
2015-02-07 10:43:08 +00:00
ld [wLinkTimeoutCounter], a
jr z, .failedToEstablishConnection
ld a, ESTABLISH_CONNECTION_WITH_INTERNAL_CLOCK
2014-08-09 05:39:13 +00:00
ld [rSB], a
2015-02-07 10:43:08 +00:00
ld a, START_TRANSFER_INTERNAL_CLOCK
ld [rSC], a
2014-05-22 22:13:20 +00:00
call DelayFrame
2015-02-07 10:43:08 +00:00
jr .establishConnectionLoop
.establishedConnection
call Serial_SendZeroByte
2014-05-22 22:13:20 +00:00
call DelayFrame
2015-02-07 10:43:08 +00:00
call Serial_SendZeroByte
ld c, 50
2014-05-22 22:13:20 +00:00
call DelayFrames
2015-02-07 10:43:08 +00:00
ld hl, CableClubNPCPleaseApplyHereHaveToSaveText
2014-05-22 22:13:20 +00:00
call PrintText
xor a
ld [wMenuJoypadPollCount], a
2014-05-22 22:13:20 +00:00
call YesNoChoice
ld a, $1
ld [wMenuJoypadPollCount], a
ld a, [wCurrentMenuItem]
2014-05-22 22:13:20 +00:00
and a
2015-02-07 10:43:08 +00:00
jr nz, .choseNo
2014-05-22 22:13:20 +00:00
callab SaveSAVtoSRAM
call WaitForSoundToFinish
ld a, (SFX_02_5d - SFX_Headers_02) / 3
call PlaySoundWaitForCurrent
2015-02-07 10:43:08 +00:00
ld hl, CableClubNPCPleaseWaitText
2014-05-22 22:13:20 +00:00
call PrintText
2015-02-07 10:43:08 +00:00
ld hl, wUnknownSerialCounter
2014-05-22 22:13:20 +00:00
ld a, $3
ld [hli], a
xor a
ld [hl], a
2015-02-07 10:43:08 +00:00
ld [hSerialReceivedNewData], a
ld [wSerialExchangeNybbleSendData], a
call Serial_SyncAndExchangeNybble
ld hl, wUnknownSerialCounter
2014-05-22 22:13:20 +00:00
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
2015-02-07 10:43:08 +00:00
call Serial_SendZeroByte
2014-05-22 22:13:20 +00:00
dec b
jr nz, .asm_7273 ; 0x727a $f7
2015-02-07 10:43:08 +00:00
call CloseLinkConnection
ld hl, CableClubNPCLinkClosedBecauseOfInactivityText
2014-05-22 22:13:20 +00:00
call PrintText
jr Func_7298 ; 0x7285 $11
2015-02-07 10:43:08 +00:00
.failedToEstablishConnection
ld hl, CableClubNPCAreaReservedFor2FriendsLinkedByCableText
2014-05-22 22:13:20 +00:00
call PrintText
jr Func_7298 ; 0x728d $9
2015-02-07 10:43:08 +00:00
.choseNo
call CloseLinkConnection
ld hl, CableClubNPCPleaseComeAgainText
2014-05-22 22:13:20 +00:00
call PrintText
; fall through
Func_7298: ; 7298 (1:7298)
xor a
2015-02-07 10:43:08 +00:00
ld hl, wUnknownSerialCounter
2014-05-22 22:13:20 +00:00
ld [hli], a
ld [hl], a
ld hl, wd72e
2014-05-22 22:13:20 +00:00
res 6, [hl]
xor a
ld [wMenuJoypadPollCount], a
2014-05-22 22:13:20 +00:00
ret
Func_72a8: ; 72a8 (1:72a8)
xor a
ld [hld], a
ld [hl], a
ld hl, LinkMenu
ld b, BANK(LinkMenu)
jp Bankswitch
2015-02-07 10:43:08 +00:00
CableClubNPCAreaReservedFor2FriendsLinkedByCableText: ; 72b3 (1:72b3)
TX_FAR _CableClubNPCAreaReservedFor2FriendsLinkedByCableText
2014-05-22 22:13:20 +00:00
db "@"
2015-02-07 10:43:08 +00:00
CableClubNPCWelcomeText: ; 72b8 (1:72b8)
TX_FAR _CableClubNPCWelcomeText
2014-05-22 22:13:20 +00:00
db "@"
2015-02-07 10:43:08 +00:00
CableClubNPCPleaseApplyHereHaveToSaveText: ; 72bd (1:72bd)
TX_FAR _CableClubNPCPleaseApplyHereHaveToSaveText
2014-05-22 22:13:20 +00:00
db "@"
2015-02-07 10:43:08 +00:00
CableClubNPCPleaseWaitText: ; 72c2 (1:72c2)
TX_FAR _CableClubNPCPleaseWaitText
2014-05-22 22:13:20 +00:00
db $a, "@"
2015-02-07 10:43:08 +00:00
CableClubNPCLinkClosedBecauseOfInactivityText: ; 72c8 (1:72c8)
TX_FAR _CableClubNPCLinkClosedBecauseOfInactivityText
2014-05-22 22:13:20 +00:00
db "@"
2015-02-07 10:43:08 +00:00
CableClubNPCPleaseComeAgainText: ; 72cd (1:72cd)
TX_FAR _CableClubNPCPleaseComeAgainText
2014-05-22 22:13:20 +00:00
db "@"
2015-02-07 10:43:08 +00:00
CableClubNPCMakingPreparationsText: ; 72d2 (1:72d2)
TX_FAR _CableClubNPCMakingPreparationsText
2014-05-22 22:13:20 +00:00
db "@"
2015-02-07 10:43:08 +00:00
CloseLinkConnection: ; 72d7 (1:72d7)
2014-05-22 22:13:20 +00:00
call Delay3
2015-02-07 10:43:08 +00:00
ld a, CONNECTION_NOT_ESTABLISHED
ld [hSerialConnectionStatus], a
ld a, ESTABLISH_CONNECTION_WITH_EXTERNAL_CLOCK
2014-08-09 05:39:13 +00:00
ld [rSB], a
2014-05-22 22:13:20 +00:00
xor a
2015-02-07 10:43:08 +00:00
ld [hSerialReceiveData], a
ld a, START_TRANSFER_EXTERNAL_CLOCK
ld [rSC], a
2014-05-22 22:13:20 +00:00
ret