ref: 64677555685eeeaf6d3d6ae056d93bf2348a0993
parent: 2341bb148ad651ca20e09ee6e48abd16c6aaee38
author: yenatch <[email protected]>
date: Thu Aug 29 15:11:39 EDT 2013
move serial asm from main.asm into engine/serial.asm
--- /dev/null
+++ b/engine/serial.asm
@@ -1,0 +1,408 @@
+Serial: ; 6ef
+; The serial interrupt.
+
+ push af
+ push bc
+ push de
+ push hl
+
+ ld a, [$ffc9]
+ and a
+ jr nz, .asm_71c
+
+ ld a, [$c2d4]
+ bit 0, a
+ jr nz, .asm_721
+
+ ld a, [$ffcb]
+ inc a
+ jr z, .asm_726
+
+ ld a, [rSB]
+ ld [hSerialReceive], a
+
+ ld a, [hSerialSend]
+ ld [rSB], a
+
+ ld a, [$ffcb]
+ cp $2
+ jr z, .asm_752
+
+ ld a, 0 << rSC_ON
+ ld [rSC], a
+ ld a, 1 << rSC_ON
+ ld [rSC], a
+ jr .asm_752
+
+.asm_71c
+ call Function3e80
+ jr .asm_75a
+
+.asm_721
+ call Function2057
+ jr .asm_75a
+
+.asm_726
+ ld a, [rSB]
+ cp $1
+ jr z, .asm_730
+ cp $2
+ jr nz, .asm_752
+
+.asm_730
+ ld [hSerialReceive], a
+ ld [$ffcb], a
+ cp $2
+ jr z, .asm_74f
+
+ xor a
+ ld [rSB], a
+ ld a, $3
+ ld [rDIV], a
+
+.asm_73f
+ ld a, [rDIV]
+ bit 7, a
+ jr nz, .asm_73f
+
+ ld a, 0 << rSC_ON
+ ld [rSC], a
+ ld a, 1 << rSC_ON
+ ld [rSC], a
+ jr .asm_752
+
+.asm_74f
+ xor a
+ ld [rSB], a
+
+.asm_752
+ ld a, $1
+ ld [$ffca], a
+ ld a, $fe
+ ld [hSerialSend], a
+
+.asm_75a
+ pop hl
+ pop de
+ pop bc
+ pop af
+ reti
+; 75f
+
+Function75f: ; 75f
+ ld a, $1
+ ld [$ffcc], a
+.asm_763
+ ld a, [hl]
+ ld [hSerialSend], a
+ call Function78a
+ push bc
+ ld b, a
+ inc hl
+ ld a, $30
+.asm_76e
+ dec a
+ jr nz, .asm_76e
+ ld a, [$ffcc]
+ and a
+ ld a, b
+ pop bc
+ jr z, .asm_782
+ dec hl
+ cp $fd
+ jr nz, .asm_763
+ xor a
+ ld [$ffcc], a
+ jr .asm_763
+
+.asm_782
+ ld [de], a
+ inc de
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_763
+ ret
+; 78a
+
+Function78a: ; 78a
+ xor a
+ ld [$ffca], a
+ ld a, [$ffcb]
+ cp $2
+ jr nz, .asm_79b
+ ld a, $1
+ ld [rSC], a
+ ld a, $81
+ ld [rSC], a
+
+.asm_79b
+ ld a, [$ffca]
+ and a
+ jr nz, .asm_7e5
+ ld a, [$ffcb]
+ cp $1
+ jr nz, .asm_7c0
+ call Function82b
+ jr z, .asm_7c0
+ call .asm_825
+ push hl
+ ld hl, $cf5c
+ inc [hl]
+ jr nz, .asm_7b7
+ dec hl
+ inc [hl]
+
+.asm_7b7
+ pop hl
+ call Function82b
+ jr nz, .asm_79b
+ jp Function833
+
+.asm_7c0
+ ld a, [rIE]
+ and $f
+ cp $8
+ jr nz, .asm_79b
+ ld a, [$cf5d]
+ dec a
+ ld [$cf5d], a
+ jr nz, .asm_79b
+ ld a, [$cf5e]
+ dec a
+ ld [$cf5e], a
+ jr nz, .asm_79b
+ ld a, [$ffcb]
+ cp $1
+ jr z, .asm_7e5
+ ld a, $ff
+.asm_7e2
+ dec a
+ jr nz, .asm_7e2
+
+.asm_7e5
+ xor a
+ ld [$ffca], a
+ ld a, [rIE]
+ and $f
+ sub $8
+ jr nz, .asm_7f8
+ ld [$cf5d], a
+ ld a, $50
+ ld [$cf5e], a
+
+.asm_7f8
+ ld a, [hSerialReceive]
+ cp $fe
+ ret nz
+ call Function82b
+ jr z, .asm_813
+ push hl
+ ld hl, $cf5c
+ ld a, [hl]
+ dec a
+ ld [hld], a
+ inc a
+ jr nz, .asm_80d
+ dec [hl]
+
+.asm_80d
+ pop hl
+ call Function82b
+ jr z, Function833
+
+.asm_813
+ ld a, [rIE]
+ and $f
+ cp $8
+ ld a, $fe
+ ret z
+ ld a, [hl]
+ ld [hSerialSend], a
+ call DelayFrame
+ jp Function78a
+
+.asm_825
+ ld a, $f
+.asm_827
+ dec a
+ jr nz, .asm_827
+ ret
+; 82b
+
+Function82b: ; 82b
+ push hl
+ ld hl, $cf5b
+ ld a, [hli]
+ or [hl]
+ pop hl
+ ret
+; 833
+
+Function833: ; 833
+ dec a
+ ld [$cf5b], a
+ ld [$cf5c], a
+ ret
+; 83b
+
+Function83b: ; 83b
+ ld hl, $cf56
+ ld de, $cf51
+ ld c, $2
+ ld a, $1
+ ld [$ffcc], a
+.asm_847
+ call DelayFrame
+ ld a, [hl]
+ ld [hSerialSend], a
+ call Function78a
+ ld b, a
+ inc hl
+ ld a, [$ffcc]
+ and a
+ ld a, $0
+ ld [$ffcc], a
+ jr nz, .asm_847
+ ld a, b
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .asm_847
+ ret
+; 862
+
+Function862: ; 862
+ call Function309d
+ callab Function4000
+ call Function87d
+ jp Function30b4
+; 871
+
+
+Function871: ; 871
+ call Function309d
+ callab Function4000
+ jp Function87d
+; 87d
+
+
+
+Function87d: ; 87d
+ ld a, $ff
+ ld [$cf52], a
+.asm_882
+ call Function8c1
+ call DelayFrame
+ call Function82b
+ jr z, .asm_89e
+ push hl
+ ld hl, $cf5c
+ dec [hl]
+ jr nz, .asm_89d
+ dec hl
+ dec [hl]
+ jr nz, .asm_89d
+ pop hl
+ xor a
+ jp Function833
+
+.asm_89d
+ pop hl
+
+.asm_89e
+ ld a, [$cf52]
+ inc a
+ jr z, .asm_882
+ ld b, $a
+.asm_8a6
+ call DelayFrame
+ call Function8c1
+ dec b
+ jr nz, .asm_8a6
+ ld b, $a
+.asm_8b1
+ call DelayFrame
+ call Function908
+ dec b
+ jr nz, .asm_8b1
+ ld a, [$cf52]
+ ld [$cf51], a
+ ret
+; 8c1
+
+Function8c1: ; 8c1
+ push bc
+ ld b, $60
+ ld a, [InLinkBattle]
+ cp $1
+ jr z, .asm_8d7
+ ld b, $60
+ jr c, .asm_8d7
+ cp $2
+ ld b, $70
+ jr z, .asm_8d7
+ ld b, $80
+
+.asm_8d7
+ call Function8f3
+ ld a, [$cf56]
+ add b
+ ld [hSerialSend], a
+ ld a, [$ffcb]
+ cp $2
+ jr nz, .asm_8ee
+ ld a, $1
+ ld [rSC], a
+ ld a, $81
+ ld [rSC], a
+
+.asm_8ee
+ call Function8f3
+ pop bc
+ ret
+; 8f3
+
+Function8f3: ; 8f3
+ ld a, [hSerialReceive]
+ ld [$cf51], a
+ and $f0
+ cp b
+ ret nz
+ xor a
+ ld [hSerialReceive], a
+ ld a, [$cf51]
+ and $f
+ ld [$cf52], a
+ ret
+; 908
+
+Function908: ; 908
+ xor a
+ ld [hSerialSend], a
+ ld a, [$ffcb]
+ cp $2
+ ret nz
+ ld a, $1
+ ld [rSC], a
+ ld a, $81
+ ld [rSC], a
+ ret
+; 919
+
+Function919: ; 919
+ ld a, [InLinkBattle]
+ and a
+ ret nz
+ ld a, $2
+ ld [rSB], a
+ xor a
+ ld [hSerialReceive], a
+ ld a, $0
+ ld [rSC], a
+ ld a, $80
+ ld [rSC], a
+ ret
+; 92e
+
+
--- a/main.asm
+++ b/main.asm
@@ -428,411 +428,7 @@
; 6ef
-Serial: ; 6ef
- push af
- push bc
- push de
- push hl
-
- ld a, [$ffc9]
- and a
- jr nz, .asm_71c
-
- ld a, [$c2d4]
- bit 0, a
- jr nz, .asm_721
-
- ld a, [$ffcb]
- inc a
- jr z, .asm_726
-
- ld a, [rSB]
- ld [hSerialReceive], a
-
- ld a, [hSerialSend]
- ld [rSB], a
-
- ld a, [$ffcb]
- cp $2
- jr z, .asm_752
-
- ld a, 0 << rSC_ON
- ld [rSC], a
- ld a, 1 << rSC_ON
- ld [rSC], a
- jr .asm_752
-
-.asm_71c
- call Function3e80
- jr .asm_75a
-
-.asm_721
- call Function2057
- jr .asm_75a
-
-.asm_726
- ld a, [rSB]
- cp $1
- jr z, .asm_730
- cp $2
- jr nz, .asm_752
-
-.asm_730
- ld [hSerialReceive], a
- ld [$ffcb], a
- cp $2
- jr z, .asm_74f
-
- xor a
- ld [rSB], a
- ld a, $3
- ld [rDIV], a
-
-.asm_73f
- ld a, [rDIV]
- bit 7, a
- jr nz, .asm_73f
-
- ld a, 0 << rSC_ON
- ld [rSC], a
- ld a, 1 << rSC_ON
- ld [rSC], a
- jr .asm_752
-
-.asm_74f
- xor a
- ld [rSB], a
-
-.asm_752
- ld a, $1
- ld [$ffca], a
- ld a, $fe
- ld [hSerialSend], a
-
-.asm_75a
- pop hl
- pop de
- pop bc
- pop af
- reti
-; 75f
-
-Function75f: ; 75f
- ld a, $1
- ld [$ffcc], a
-.asm_763
- ld a, [hl]
- ld [hSerialSend], a
- call Function78a
- push bc
- ld b, a
- inc hl
- ld a, $30
-.asm_76e
- dec a
- jr nz, .asm_76e
- ld a, [$ffcc]
- and a
- ld a, b
- pop bc
- jr z, .asm_782
- dec hl
- cp $fd
- jr nz, .asm_763
- xor a
- ld [$ffcc], a
- jr .asm_763
-
-.asm_782
- ld [de], a
- inc de
- dec bc
- ld a, b
- or c
- jr nz, .asm_763
- ret
-; 78a
-
-Function78a: ; 78a
- xor a
- ld [$ffca], a
- ld a, [$ffcb]
- cp $2
- jr nz, .asm_79b
- ld a, $1
- ld [rSC], a
- ld a, $81
- ld [rSC], a
-
-.asm_79b
- ld a, [$ffca]
- and a
- jr nz, .asm_7e5
- ld a, [$ffcb]
- cp $1
- jr nz, .asm_7c0
- call Function82b
- jr z, .asm_7c0
- call .asm_825
- push hl
- ld hl, $cf5c
- inc [hl]
- jr nz, .asm_7b7
- dec hl
- inc [hl]
-
-.asm_7b7
- pop hl
- call Function82b
- jr nz, .asm_79b
- jp Function833
-
-.asm_7c0
- ld a, [rIE]
- and $f
- cp $8
- jr nz, .asm_79b
- ld a, [$cf5d]
- dec a
- ld [$cf5d], a
- jr nz, .asm_79b
- ld a, [$cf5e]
- dec a
- ld [$cf5e], a
- jr nz, .asm_79b
- ld a, [$ffcb]
- cp $1
- jr z, .asm_7e5
- ld a, $ff
-.asm_7e2
- dec a
- jr nz, .asm_7e2
-
-.asm_7e5
- xor a
- ld [$ffca], a
- ld a, [rIE]
- and $f
- sub $8
- jr nz, .asm_7f8
- ld [$cf5d], a
- ld a, $50
- ld [$cf5e], a
-
-.asm_7f8
- ld a, [hSerialReceive]
- cp $fe
- ret nz
- call Function82b
- jr z, .asm_813
- push hl
- ld hl, $cf5c
- ld a, [hl]
- dec a
- ld [hld], a
- inc a
- jr nz, .asm_80d
- dec [hl]
-
-.asm_80d
- pop hl
- call Function82b
- jr z, Function833
-
-.asm_813
- ld a, [rIE]
- and $f
- cp $8
- ld a, $fe
- ret z
- ld a, [hl]
- ld [hSerialSend], a
- call DelayFrame
- jp Function78a
-
-.asm_825
- ld a, $f
-.asm_827
- dec a
- jr nz, .asm_827
- ret
-; 82b
-
-Function82b: ; 82b
- push hl
- ld hl, $cf5b
- ld a, [hli]
- or [hl]
- pop hl
- ret
-; 833
-
-Function833: ; 833
- dec a
- ld [$cf5b], a
- ld [$cf5c], a
- ret
-; 83b
-
-Function83b: ; 83b
- ld hl, $cf56
- ld de, $cf51
- ld c, $2
- ld a, $1
- ld [$ffcc], a
-.asm_847
- call DelayFrame
- ld a, [hl]
- ld [hSerialSend], a
- call Function78a
- ld b, a
- inc hl
- ld a, [$ffcc]
- and a
- ld a, $0
- ld [$ffcc], a
- jr nz, .asm_847
- ld a, b
- ld [de], a
- inc de
- dec c
- jr nz, .asm_847
- ret
-; 862
-
-Function862: ; 862
- call Function309d
- callab Function4000
- call Function87d
- jp Function30b4
-; 871
-
-
-Function871: ; 871
- call Function309d
- callab Function4000
- jp Function87d
-; 87d
-
-
-
-Function87d: ; 87d
- ld a, $ff
- ld [$cf52], a
-.asm_882
- call Function8c1
- call DelayFrame
- call Function82b
- jr z, .asm_89e
- push hl
- ld hl, $cf5c
- dec [hl]
- jr nz, .asm_89d
- dec hl
- dec [hl]
- jr nz, .asm_89d
- pop hl
- xor a
- jp Function833
-
-.asm_89d
- pop hl
-
-.asm_89e
- ld a, [$cf52]
- inc a
- jr z, .asm_882
- ld b, $a
-.asm_8a6
- call DelayFrame
- call Function8c1
- dec b
- jr nz, .asm_8a6
- ld b, $a
-.asm_8b1
- call DelayFrame
- call Function908
- dec b
- jr nz, .asm_8b1
- ld a, [$cf52]
- ld [$cf51], a
- ret
-; 8c1
-
-Function8c1: ; 8c1
- push bc
- ld b, $60
- ld a, [InLinkBattle]
- cp $1
- jr z, .asm_8d7
- ld b, $60
- jr c, .asm_8d7
- cp $2
- ld b, $70
- jr z, .asm_8d7
- ld b, $80
-
-.asm_8d7
- call Function8f3
- ld a, [$cf56]
- add b
- ld [hSerialSend], a
- ld a, [$ffcb]
- cp $2
- jr nz, .asm_8ee
- ld a, $1
- ld [rSC], a
- ld a, $81
- ld [rSC], a
-
-.asm_8ee
- call Function8f3
- pop bc
- ret
-; 8f3
-
-Function8f3: ; 8f3
- ld a, [hSerialReceive]
- ld [$cf51], a
- and $f0
- cp b
- ret nz
- xor a
- ld [hSerialReceive], a
- ld a, [$cf51]
- and $f
- ld [$cf52], a
- ret
-; 908
-
-Function908: ; 908
- xor a
- ld [hSerialSend], a
- ld a, [$ffcb]
- cp $2
- ret nz
- ld a, $1
- ld [rSC], a
- ld a, $81
- ld [rSC], a
- ret
-; 919
-
-Function919: ; 919
- ld a, [InLinkBattle]
- and a
- ret nz
- ld a, $2
- ld [rSB], a
- xor a
- ld [hSerialReceive], a
- ld a, $0
- ld [rSC], a
- ld a, $80
- ld [rSC], a
- ret
-; 92e
-
+INCLUDE "engine/serial.asm"
INCLUDE "engine/joypad.asm"