cable_club_npc.asm 3.2 KB

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