summaryrefslogtreecommitdiff
path: root/home/serial.asm
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2014-08-12 00:01:04 -0700
committeryenatch <yenatch@gmail.com>2014-08-12 00:01:04 -0700
commitcf399a8c86a7340a8c3162400657dca1c5d3ba0a (patch)
tree919c5c8c0b2fd2fed1eaa7fd4d876ac99d4fd077 /home/serial.asm
parent1cf79b6f15761ec95ba1b0f9d6d83781c4240612 (diff)
Split copy and serial functions out of home.asm.
Diffstat (limited to 'home/serial.asm')
-rw-r--r--home/serial.asm304
1 files changed, 304 insertions, 0 deletions
diff --git a/home/serial.asm b/home/serial.asm
new file mode 100644
index 00000000..02eb3534
--- /dev/null
+++ b/home/serial.asm
@@ -0,0 +1,304 @@
+Serial:: ; 2125 (0:2125)
+ push af
+ push bc
+ push de
+ push hl
+ ld a, [$ffaa]
+ inc a
+ jr z, .asm_2142
+ ld a, [$ff01]
+ ld [$ffad], a
+ ld a, [$ffac]
+ ld [$ff01], a
+ ld a, [$ffaa]
+ cp $2
+ jr z, .asm_2162
+ ld a, $80
+ ld [$ff02], a
+ jr .asm_2162
+.asm_2142
+ ld a, [$ff01]
+ ld [$ffad], a
+ ld [$ffaa], a
+ cp $2
+ jr z, .asm_215f
+ xor a
+ ld [$ff01], a
+ ld a, $3
+ ld [rDIV], a ; $ff04
+.asm_2153
+ ld a, [rDIV] ; $ff04
+ bit 7, a
+ jr nz, .asm_2153
+ ld a, $80
+ ld [$ff02], a
+ jr .asm_2162
+.asm_215f
+ xor a
+ ld [$ff01], a
+.asm_2162
+ ld a, $1
+ ld [$ffa9], a
+ ld a, $fe
+ ld [$ffac], a
+ pop hl
+ pop de
+ pop bc
+ pop af
+ reti
+
+Func_216f:: ; 216f (0:216f)
+ ld a, $1
+ ld [$ffab], a
+.asm_2173
+ ld a, [hl]
+ ld [$ffac], a
+ call Func_219a
+ push bc
+ ld b, a
+ inc hl
+ ld a, $30
+.asm_217e
+ dec a
+ jr nz, .asm_217e
+ ld a, [$ffab]
+ and a
+ ld a, b
+ pop bc
+ jr z, .asm_2192
+ dec hl
+ cp $fd
+ jr nz, .asm_2173
+ xor a
+ ld [$ffab], a
+ jr .asm_2173
+.asm_2192
+ ld [de], a
+ inc de
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_2173
+ ret
+
+Func_219a:: ; 219a (0:219a)
+ xor a
+ ld [$ffa9], a
+ ld a, [$ffaa]
+ cp $2
+ jr nz, .asm_21a7
+ ld a, $81
+ ld [$ff02], a
+.asm_21a7
+ ld a, [$ffa9]
+ and a
+ jr nz, .asm_21f1
+ ld a, [$ffaa]
+ cp $1
+ jr nz, .asm_21cc
+ call Func_2237
+ jr z, .asm_21cc
+ call Func_2231
+ push hl
+ ld hl, wcc48
+ inc [hl]
+ jr nz, .asm_21c3
+ dec hl
+ inc [hl]
+.asm_21c3
+ pop hl
+ call Func_2237
+ jr nz, .asm_21a7
+ jp Func_223f
+.asm_21cc
+ ld a, [rIE] ; $ffff
+ and $f
+ cp $8
+ jr nz, .asm_21a7
+ ld a, [W_NUMHITS] ; wd074
+ dec a
+ ld [W_NUMHITS], a ; wd074
+ jr nz, .asm_21a7
+ ld a, [wd075]
+ dec a
+ ld [wd075], a
+ jr nz, .asm_21a7
+ ld a, [$ffaa]
+ cp $1
+ jr z, .asm_21f1
+ ld a, $ff
+.asm_21ee
+ dec a
+ jr nz, .asm_21ee
+.asm_21f1
+ xor a
+ ld [$ffa9], a
+ ld a, [rIE] ; $ffff
+ and $f
+ sub $8
+ jr nz, .asm_2204
+ ld [W_NUMHITS], a ; wd074
+ ld a, $50
+ ld [wd075], a
+.asm_2204
+ ld a, [$ffad]
+ cp $fe
+ ret nz
+ call Func_2237
+ jr z, .asm_221f
+ push hl
+ ld hl, wcc48
+ ld a, [hl]
+ dec a
+ ld [hld], a
+ inc a
+ jr nz, .asm_2219
+ dec [hl]
+.asm_2219
+ pop hl
+ call Func_2237
+ jr z, Func_223f
+.asm_221f
+ ld a, [rIE] ; $ffff
+ and $f
+ cp $8
+ ld a, $fe
+ ret z
+ ld a, [hl]
+ ld [$ffac], a
+ call DelayFrame
+ jp Func_219a
+
+Func_2231:: ; 2231 (0:2231)
+ ld a, $f
+.asm_2233
+ dec a
+ jr nz, .asm_2233
+ ret
+
+Func_2237:: ; 2237 (0:2237)
+ push hl
+ ld hl, wcc47
+ ld a, [hli]
+ or [hl]
+ pop hl
+ ret
+
+Func_223f:: ; 223f (0:223f)
+ dec a
+ ld [wcc47], a
+ ld [wcc48], a
+ ret
+
+Func_2247:: ; 2247 (0:2247)
+ ld hl, wcc42
+ ld de, wcc3d
+ ld c, $2
+ ld a, $1
+ ld [$ffab], a
+.asm_2253
+ call DelayFrame
+ ld a, [hl]
+ ld [$ffac], a
+ call Func_219a
+ ld b, a
+ inc hl
+ ld a, [$ffab]
+ and a
+ ld a, $0
+ ld [$ffab], a
+ jr nz, .asm_2253
+ ld a, b
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .asm_2253
+ ret
+
+Func_226e:: ; 226e (0:226e)
+ call SaveScreenTilesToBuffer1
+ callab PrintWaitingText
+ call Func_227f
+ jp LoadScreenTilesFromBuffer1
+
+Func_227f:: ; 227f (0:227f)
+ ld a, $ff
+ ld [wcc3e], a
+.asm_2284
+ call Func_22c3
+ call DelayFrame
+ call Func_2237
+ jr z, .asm_22a0
+ push hl
+ ld hl, wcc48
+ dec [hl]
+ jr nz, .asm_229f
+ dec hl
+ dec [hl]
+ jr nz, .asm_229f
+ pop hl
+ xor a
+ jp Func_223f
+.asm_229f
+ pop hl
+.asm_22a0
+ ld a, [wcc3e]
+ inc a
+ jr z, .asm_2284
+ ld b, $a
+.asm_22a8
+ call DelayFrame
+ call Func_22c3
+ dec b
+ jr nz, .asm_22a8
+ ld b, $a
+.asm_22b3
+ call DelayFrame
+ call Func_22ed
+ dec b
+ jr nz, .asm_22b3
+ ld a, [wcc3e]
+ ld [wcc3d], a
+ ret
+
+Func_22c3:: ; 22c3 (0:22c3)
+ call asm_22d7
+ ld a, [wcc42]
+ add $60
+ ld [$ffac], a
+ ld a, [$ffaa]
+ cp $2
+ jr nz, asm_22d7
+ ld a, $81
+ ld [$ff02], a
+asm_22d7:: ; 22d7 (0:22d7)
+ ld a, [$ffad]
+ ld [wcc3d], a
+ and $f0
+ cp $60
+ ret nz
+ xor a
+ ld [$ffad], a
+ ld a, [wcc3d]
+ and $f
+ ld [wcc3e], a
+ ret
+
+Func_22ed:: ; 22ed (0:22ed)
+ xor a
+ ld [$ffac], a
+ ld a, [$ffaa]
+ cp $2
+ ret nz
+ ld a, $81
+ ld [$ff02], a
+ ret
+
+Func_22fa:: ; 22fa (0:22fa)
+ ld a, $2
+ ld [$ff01], a
+ xor a
+ ld [$ffad], a
+ ld a, $80
+ ld [$ff02], a
+ ret