summaryrefslogtreecommitdiff
path: root/home/serial.asm
diff options
context:
space:
mode:
Diffstat (limited to 'home/serial.asm')
-rw-r--r--home/serial.asm107
1 files changed, 56 insertions, 51 deletions
diff --git a/home/serial.asm b/home/serial.asm
index 97e0c2442..e60704f3d 100644
--- a/home/serial.asm
+++ b/home/serial.asm
@@ -10,7 +10,7 @@ Serial:: ; 6ef
and a
jr nz, .mobile
- ld a, [wc2d4]
+ ld a, [wPrinterConnectionOpen]
bit 0, a
jr nz, .printer
@@ -78,7 +78,7 @@ Serial:: ; 6ef
.player2
ld a, $1
ld [hFFCA], a
- ld a, -2
+ ld a, $fe
ld [hSerialSend], a
.end
@@ -126,92 +126,95 @@ Function75f:: ; 75f
; 78a
Function78a:: ; 78a
+.loop
xor a
ld [hFFCA], a
ld a, [hLinkPlayerNumber]
cp $2
- jr nz, .asm_79b
+ jr nz, .not_player_2
ld a, $1
ld [rSC], a
ld a, $81
ld [rSC], a
-
-.asm_79b
+.not_player_2
+.loop2
ld a, [hFFCA]
and a
- jr nz, .asm_7e5
+ jr nz, .reset_ffca
ld a, [hLinkPlayerNumber]
cp $1
- jr nz, .asm_7c0
- call Function82b
- jr z, .asm_7c0
- call .asm_825
+ jr nz, .not_player_1_or_wLinkTimeoutFrames_zero
+ call CheckwLinkTimeoutFramesNonzero
+ jr z, .not_player_1_or_wLinkTimeoutFrames_zero
+ call .delay_15_cycles
push hl
- ld hl, wcf5c
+ ld hl, wLinkTimeoutFrames + 1
inc [hl]
- jr nz, .asm_7b7
+ jr nz, .no_rollover_up
dec hl
inc [hl]
-.asm_7b7
+.no_rollover_up
pop hl
- call Function82b
- jr nz, .asm_79b
- jp Function833
+ call CheckwLinkTimeoutFramesNonzero
+ jr nz, .loop2
+ jp SerialDisconnected
-.asm_7c0
+.not_player_1_or_wLinkTimeoutFrames_zero
ld a, [rIE]
and $f
cp $8
- jr nz, .asm_79b
+ jr nz, .loop2
ld a, [wcf5d]
dec a
ld [wcf5d], a
- jr nz, .asm_79b
+ jr nz, .loop2
ld a, [wcf5d + 1]
dec a
ld [wcf5d + 1], a
- jr nz, .asm_79b
+ jr nz, .loop2
ld a, [hLinkPlayerNumber]
cp $1
- jr z, .asm_7e5
- ld a, $ff
-.asm_7e2
+ jr z, .reset_ffca
+
+ ld a, 255
+.delay_255_cycles
dec a
- jr nz, .asm_7e2
+ jr nz, .delay_255_cycles
-.asm_7e5
+.reset_ffca
xor a
ld [hFFCA], a
ld a, [rIE]
and $f
sub $8
- jr nz, .asm_7f8
+ jr nz, .rIE_not_equal_8
+
ld [wcf5d], a
ld a, $50
ld [wcf5d + 1], a
-.asm_7f8
+.rIE_not_equal_8
ld a, [hSerialReceive]
cp $fe
ret nz
- call Function82b
- jr z, .asm_813
+ call CheckwLinkTimeoutFramesNonzero
+ jr z, .wLinkTimeoutFrames_zero
push hl
- ld hl, wcf5c
+ ld hl, wLinkTimeoutFrames + 1
ld a, [hl]
dec a
ld [hld], a
inc a
- jr nz, .asm_80d
+ jr nz, .no_rollover
dec [hl]
-.asm_80d
+.no_rollover
pop hl
- call Function82b
- jr z, Function833
+ call CheckwLinkTimeoutFramesNonzero
+ jr z, SerialDisconnected
-.asm_813
+.wLinkTimeoutFrames_zero
ld a, [rIE]
and $f
cp $8
@@ -220,29 +223,29 @@ Function78a:: ; 78a
ld a, [hl]
ld [hSerialSend], a
call DelayFrame
- jp Function78a
+ jp .loop
-.asm_825
- ld a, $f
-.asm_827
+.delay_15_cycles
+ ld a, 15
+.delay_cycles
dec a
- jr nz, .asm_827
+ jr nz, .delay_cycles
ret
; 82b
-Function82b:: ; 82b
+CheckwLinkTimeoutFramesNonzero:: ; 82b
push hl
- ld hl, wcf5b
+ ld hl, wLinkTimeoutFrames
ld a, [hli]
or [hl]
pop hl
ret
; 833
-Function833:: ; 833
+SerialDisconnected:: ; 833
dec a
- ld [wcf5b], a
- ld [wcf5c], a
+ ld [wLinkTimeoutFrames], a
+ ld [wLinkTimeoutFrames + 1], a
ret
; 83b
@@ -275,7 +278,7 @@ Function83b:: ; 83b
Function862:: ; 862
call LoadTileMapToTempTileMap
callab PlaceWaitingText
- call Function87d
+ call WaitLinkTransfer
jp Call_LoadTempTileMapToTileMap
; 871
@@ -283,29 +286,30 @@ Function862:: ; 862
Function871:: ; 871
call LoadTileMapToTempTileMap
callab PlaceWaitingText
- jp Function87d
+ jp WaitLinkTransfer
; 87d
; One "giant" leap for machinekind
-Function87d:: ; 87d
+WaitLinkTransfer:: ; 87d
ld a, $ff
ld [wOtherPlayerLinkAction], a
.loop
call LinkTransfer
call DelayFrame
- call Function82b
+ call CheckwLinkTimeoutFramesNonzero
jr z, .check
push hl
- ld hl, wcf5c
+ ld hl, wLinkTimeoutFrames + 1
dec [hl]
jr nz, .skip
dec hl
dec [hl]
jr nz, .skip
+ ; We might be disconnected
pop hl
xor a
- jp Function833
+ jp SerialDisconnected
.skip
pop hl
@@ -395,6 +399,7 @@ LinkDataReceived:: ; 908
; 919
Function919:: ; 919
+; XXX
ld a, [wLinkMode]
and a
ret nz