diff options
Diffstat (limited to 'home/serial.asm')
-rw-r--r-- | home/serial.asm | 93 |
1 files changed, 48 insertions, 45 deletions
diff --git a/home/serial.asm b/home/serial.asm index 7aab1616b..a03b94671 100644 --- a/home/serial.asm +++ b/home/serial.asm @@ -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,93 @@ 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_wcf5b_zero + call Checkwcf5bNonzero + jr z, .not_player_1_or_wcf5b_zero + call .delay_15_cycles push hl - ld hl, wcf5c + ld hl, wcf5b + 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 Checkwcf5bNonzero + jr nz, .loop2 + jp SerialDisconnected -.asm_7c0 +.not_player_1_or_wcf5b_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 Checkwcf5bNonzero + jr z, .wcf5b_zero push hl - ld hl, wcf5c + ld hl, wcf5b + 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 Checkwcf5bNonzero + jr z, SerialDisconnected -.asm_813 +.wcf5b_zero ld a, [rIE] and $f cp $8 @@ -220,17 +221,17 @@ 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 +Checkwcf5bNonzero:: ; 82b push hl ld hl, wcf5b ld a, [hli] @@ -239,10 +240,10 @@ Function82b:: ; 82b ret ; 833 -Function833:: ; 833 +SerialDisconnected:: ; 833 dec a ld [wcf5b], a - ld [wcf5c], a + ld [wcf5b + 1], a ret ; 83b @@ -294,18 +295,19 @@ Function87d:: ; 87d .loop call LinkTransfer call DelayFrame - call Function82b + call Checkwcf5bNonzero jr z, .check push hl - ld hl, wcf5c + ld hl, wcf5b + 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 +397,7 @@ LinkDataReceived:: ; 908 ; 919 Function919:: ; 919 +; XXX ld a, [wLinkMode] and a ret nz |