diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-01-18 21:50:32 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-01-18 21:50:32 -0500 |
commit | 354bccef2d363c568f64f8ebd79d81f506d05c31 (patch) | |
tree | b3b1b4d9c479a1548b465e18b2571b60ac90dd2c /home/serial.asm | |
parent | c752c88bf9a3b7fad3718c0ecc92aedd842917f8 (diff) |
Split out HOME
Diffstat (limited to 'home/serial.asm')
-rwxr-xr-x | home/serial.asm | 782 |
1 files changed, 782 insertions, 0 deletions
diff --git a/home/serial.asm b/home/serial.asm new file mode 100755 index 0000000..8e68e6b --- /dev/null +++ b/home/serial.asm @@ -0,0 +1,782 @@ +Func_14c4: ; 14c4 (0:14c4) + ld a, [wd8dc] + and a + jp nz, Func_165f + ld a, [wd8ad] + cp $7 + jp z, Func_1612 + ld a, [wd8af] + and a + jr nz, .asm_14df + call Func_1502 + jp Func_1663 + +.asm_14df + ld a, [wd8b0] + and a + jr z, .asm_14fc + ld a, [wd8b1] + and a + jr z, .asm_14fc + ld a, [wd8b2] + cp $2 + jr z, .asm_14f7 + call Func_15e1 + jr .asm_14ff + +.asm_14f7 + call Func_15f8 + jr .asm_14ff + +.asm_14fc + call Func_1527 +.asm_14ff + jp Func_1663 + +Func_1502: ; 1502 (0:1502) + ld hl, wd8b9 + ld c, [hl] + inc [hl] + ld b, $0 + ld hl, Data_18ff + add hl, bc + ld a, [hl] + ld [rSB], a + ld a, $1 + ld [rSC], a + ld a, $81 + ld [rSC], a + ld a, [wd8b9] + cp $2 + ret nz + xor a + ld [wd8b9], a + inc a + ld [wd8af], a + ret + +Func_1527: ; 1527 (0:1527) + ld a, [wd8b9] + ld c, a + ld a, [wd8ba] + ld b, a + ld a, [wd8bb] + ld l, a + ld a, [wd8bc] + ld h, a + add hl, bc + ld a, [rSB] + ld [wd8c8 + 1], a + ld a, [hl] + ld [rSB], a + ld l, a + ld a, [wd8c3] + add l + ld [wd8c3], a + ld a, [wd8c4] + adc $0 + ld [wd8c4], a + ld a, $1 + ld [rSC], a + ld a, $81 + ld [rSC], a + ld hl, wd8b9 + inc [hl] + jr nz, .asm_1560 + inc hl + inc [hl] +.asm_1560 + ld hl, wd8b9 + ld a, [wd8b3] + cp [hl] + jr nz, .asm_1570 + inc hl + ld a, [wd8b4] + cp [hl] + jr z, .asm_1572 +.asm_1570 + jr .asm_15b0 + +.asm_1572 + ld hl, wd8b0 + ld a, [hl] + and a + jr z, .asm_157c + ld hl, wd8b1 +.asm_157c + inc [hl] + ld a, [wd8cc] + and a + jr z, .asm_15b5 + ld a, [wd8ad] + cp $6 + jr z, .asm_15b5 + ld hl, wd8b1 + ld a, [hl] + and a + jr nz, .asm_15b1 + xor a + ld [wd8b9], a + ld [wd8ba], a + ld a, [wd8bf] + ld [wd8bb], a + ld a, [wd8c0] + ld [wd8bc], a + ld a, [wd8b7] + ld [wd8b3], a + ld a, [wd8b8] + ld [wd8b4], a +.asm_15b0 + ret + +.asm_15b1 + call Func_15c8 + ret + +.asm_15b5 + ld a, [wd8c8 + 1] + ld [wd8c8], a +asm_15bb + ld a, $7 + ld [wd8ad], a + ld a, $1 + ld [wd8c5], a + call Func_16bf +Func_15c8: ; 15c8 (0:15c8) + ld a, [wd8b5] + ld [wd8b3], a + ld a, [wd8b6] + ld [wd8b4], a + ld a, [wd8bd] + ld [wd8bb], a + ld a, [wd8be] + ld [wd8bc], a + ret + +Func_15e1: ; 15e1 (0:15e1) + ld c, a + ld b, $0 + ld hl, wd8c3 + add hl, bc + ld a, [hl] + ld [rSB], a + ld a, $1 + ld [rSC], a + ld a, $81 + ld [rSC], a + ld hl, wd8b2 + inc [hl] + ret + +Func_15f8: ; 15f8 (0:15f8) + ld a, [rSB] + ld [wd8c8], a + xor a + ld [rSB], a + ld a, $1 + ld [rSC], a + ld a, $81 + ld [rSC], a + ld hl, wd8c6 + inc [hl] + ld a, [hl] + cp $2 + jr z, asm_15bb + ret + +Func_1612: ; 1612 (0:1612) + ld a, [wd8cb] + ld [wd8ae], a + ld a, [wd8c7] + ld [wd86e + 2], a + cp $ff + jr z, .asm_1625 + ld [wd86e + 1], a +.asm_1625 + ld a, [rSB] + ld [wd8c7], a + cp $ff + jr nz, .asm_163a + ld a, $0 + ld [wd8db], a + ld [wd8ad], a + ld a, $2 + jr .asm_1652 + +.asm_163a + bit 1, a + jr z, .asm_1643 + ld a, $1 + ld [wd8e2], a +.asm_1643 + bit 4, a + ld a, $0 + ld [wd8ad], a + ld a, $1 + jr nz, .asm_1651 + ld [wd8ad], a +.asm_1651 + inc a +.asm_1652 + ld [wd8c5], a + ld a, [wd8cc] + and a + jr nz, Func_165f + xor a + ld [wd8db], a +Func_165f: ; 165f (0:165f) + ret + +Func_1660: + xor a + ld [rSC], a +Func_1663: ; 1663 (0:1663) + ret + +Func_1664: + push af + ld a, [rSC] + bit 7, a + jr nz, .asm_1679 + push bc + push de + push hl + ld a, $1 + ld [wd8ca], a + call Func_14c4 + pop hl + pop de + pop bc +.asm_1679 + pop af + reti +Func_167b: ; 0x167b + ld a, [wd8ad] + cp $1 + ret nz + ld a, [wd8c7] + cp $ff + ret z + ld a, [wd8db] + and a + ret nz + ld hl, wd8e0 + inc [hl] + ld a, [hl] + cp $6 + ret c + xor a + ld [hl], a + ld [wd8e2], a + call Func_18ac + ret + +Func_169d: + xor a + ld [rSC], a + ld [rSB], a + ; fallthrough + +Func_16a2: ; 0x16a2 + xor a + ld [rSB], a + ld [rSC], a + ld [wd8ad], a + dec a + ld [wd8c7], a + ld [wd8c8], a + call Func_16b5 + ret + +Func_16b5: ; 0x16b5 + xor a + ld [wd8c5], a + ld [wd8ca], a + ld [wd8db], a + ; fall through +Func_16bf: ; 0x16bf + xor a + ld [wd8af], a + ld [wd8b0], a + ld [wd8b1], a + ld [wd8b2], a + ld [wd8c6], a + ld [wd8c3], a + ld [wd8c4], a + ld [wd8b9], a + ld [wd8ba], a + ld [wd8dc], a + ld [wd8e2], a + ret + +Func_16e2: ; 0x16e2 + ld a, [wd8db] + and a + jr z, .asm_16ec + call Func_16fd + ret nc +.asm_16ec + ld a, [wd8ae] + cp $1 + jr nz, .asm_16f7 + call Func_16fd + ret nc +.asm_16f7 + call Func_1925 + jp Func_19e5 + +Func_16fd: ; 0x16fd + ld a, [wd8c5] + cp $2 + jr nz, .asm_173c + xor a + ld [wd8e0], a + ld [wd8ae], a + inc a + ld [wd8ad], a + ld a, [wd8c7] + cp $ff + jr z, .asm_1735 + bit 0, a + jr nz, .asm_172e + bit 1, a + jr nz, .asm_172e + bit 4, a + jr z, .asm_173a + xor a + ld [wd8ad], a + ld [wd8ae], a + ld a, [wd8c7] + jr .asm_173a + +.asm_172e + scf + ret + +.asm_1730 + xor a + ld [wd8ae], a + dec a +.asm_1735 + inc a + ld [wd8ad], a + dec a +.asm_173a + and a + ret + +.asm_173c + xor a + ld a, $f0 + ret + +Func_1740: ; 0x1740 + ld a, [wd8ad] + cp $1 + jr z, .asm_1752 + cp $2 + jr z, .asm_1752 + and a + ld a, $ff + ret z +.asm_174f + ld a, $f0 + ret + +.asm_1752 + ld a, [wd8e2] + and a + jr nz, .asm_174f + ld a, [wd8db] + and a + jr z, .asm_1762 + call Func_16fd + ret nc +.asm_1762 + ld a, [wd8ae] + cp $2 + jr nz, .asm_176d + call Func_16fd + ret nc +.asm_176d + ld a, [wd8c7] + cp $ff + ret z + call Func_1932 + jp Func_19e5 + +Func_1779: ; 0x1779 + ld c, a + ld a, [wd8ad] + and a + ld a, [wd8c7] + ret z + ld a, [wd8ad] + cp $1 + jr z, .asm_1790 + cp $3 + jr z, .asm_1790 + ld a, $f0 + ret + +.asm_1790 + ld a, [wd8db] + and a + jr nz, .asm_17df + ld a, c + inc a + ld [wd8de], a + ld a, l + ld [wd8c1], a + ld a, h + ld [wd8c2], a + ld a, [wd8c7] + cp $ff + ret z + ld a, [wd8ab] + ld [wd8ac], a + and a + jr z, .asm_17d6 + ld a, [wd8de] + dec a + dec a + push af + ld c, a + ld b, $0 + push hl + ld hl, wd89d + add hl, bc + ld a, [hl] + pop hl + ld [wd8ac], a + pop af + add a + ld c, a + ld b, $0 + push hl + ld hl, wd88b + add hl, bc + ld a, [hli] + ld b, [hl] + pop hl + ld c, a + jp .asm_17d9 + +.asm_17d6 + ld bc, $0280 +.asm_17d9 + call Func_1989 + jp Func_19e5 + +.asm_17df + ld a, [wd8c5] + cp $2 + ld a, $f0 + jp nz, .asm_1869 + ld hl, wd8de + ld a, [wd8c7] + bit 4, a + jp nz, .asm_1859 + bit 1, a + jp nz, .asm_1804 + bit 0, a + jp nz, .asm_1804 + dec [hl] + ld a, [wd8c7] + jr z, .asm_1860 +.asm_1804 + ld a, [hl] + cp $1 + jr z, .asm_186a + ld bc, $0280 + ld a, [wd8ab] + ld [wd8ac], a + and a + jr z, .asm_1836 + ld a, [wd8de] + dec a + dec a + push af + ld c, a + ld b, $0 + push hl + ld hl, wd89d + add hl, bc + ld a, [hl] + pop hl + ld [wd8ac], a + pop af + add a + ld c, a + ld b, $0 + push hl + ld hl, wd88b + add hl, bc + ld a, [hli] + ld b, [hl] + pop hl + ld c, a +.asm_1836 + ld a, [wd8c7] + bit 1, a + jp nz, .asm_184e + ld a, [wd8bf] + add $80 + ld [wd8bf], a + ld a, [wd8c0] + adc $2 + ld [wd8c0], a +.asm_184e + ld a, [wd8bf] + ld l, a + ld a, [wd8c0] + ld h, a + jp .asm_17d9 + +.asm_1859 + push af + ld a, $1 + ld [wd8dc], a + pop af +.asm_1860 + push af + xor a + ld [wd8cc], a + ld [wd8db], a + pop af +.asm_1869 + ret + +.asm_186a + ld a, [wd8dd] + and a + ld a, [wd8c7] + jr z, .asm_1860 + call Func_19d7 + jp Func_19e5 + +Func_1879: + ld a, [wd8ad] + cp $1 + jr z, .asm_188b + cp $3 + jr z, .asm_188b + and a + ld a, $ff + ret z + ld a, $f0 + ret + +.asm_188b + ld a, [wd8db] + and a + jr z, .asm_1895 + call Func_16fd + ret nc +.asm_1895 + ld a, [wd8ae] + cp $4 + jr nz, .asm_18a0 + call Func_16fd + ret nc +.asm_18a0 + ld a, [wd8c7] + cp $ff + ret z + call Func_19bd + jp Func_19e5 + +Func_18ac: ; 0x18ac + ld a, [wd8ad] + cp $1 + jr z, .asm_18be + cp $3 + jr z, .asm_18be + and a + ld a, $ff + ret z + ld a, $f0 + ret + +.asm_18be + ld a, [wd8db] + and a + jr z, .asm_18c8 + call Func_16fd + ret nc +.asm_18c8 + ld a, [wd8c7] + cp $ff + ret z + call Func_19ca + jp Func_19e5 + +Func_18d4: ; 0x18d4 + ld [wd8cb], a + ld a, d + ld [wd8cc], a + ld a, l + ld [wd8bb], a + ld [wd8bd], a + ld a, h + ld [wd8bc], a + ld [wd8be], a + ld a, c + ld [wd8b3], a + ld [wd8b5], a + ld a, b + ld [wd8b4], a + ld [wd8b6], a + xor a + ld [wd8c5], a + call Func_16bf + ret + +Data_18ff: + dr $18ff, $1901 + +Data_1901: + dr $1901, $1909 + +Data_1909: + dr $1909, $190d + +Data_190d: + dr $190d, $1915 + +Data_1915: + dr $1915, $191d + +Data_191d: + dr $191d, $1925 + +Func_1925: ; 0x1925 + ld a, $1 + ld d, $0 + ld hl, Data_1901 + ld bc, $0008 + jp Func_18d4 + +Func_1932: ; 0x19332 + ld a, $2 + ld d, $0 + ld hl, wd8cd + ld bc, $000c + call Func_18d4 + ld hl, Data_1909 + ld de, wd8cd + ld bc, $0004 + call LocalCopyData + ld de, $0006 + ld a, [wd8a8] + ld [wd8d1], a + call Func_1982 + ld a, [wd8a9] + ld [wd8d2], a + call Func_1982 + ld a, [wd8aa] + ld [wd8d3], a + call Func_1982 + ld a, [wd8a7] + ld [wd8d4], a + call Func_1982 + ld a, e + ld [wd8d5], a + ld a, d + ld [wd8d6], a + xor a + ld [wd8d7], a + ld [wd8d8], a + ret + +Func_1982: ; 0x1982 + add e + ld e, a + ld a, d + adc $0 + ld d, a + ret + +Func_1989: ; 0x1989 + ld a, l + ld [wd8bf], a + ld a, h + ld [wd8c0], a + ld a, c + ld [wd8b7], a + ld a, b + ld [wd8b8], a + push bc + ld a, $3 + ld d, $1 + ld hl, wd8cd + ld bc, $0004 + call Func_18d4 + ld a, [Data_190d] + ld [wd8cd], a + ld a, [wd8ac] + ld [wd8ce], a + pop bc + ld a, c + ld [wd8cf], a + ld a, b + ld [wd8d0], a + ret + +Func_19bd: ; 19bd (0:19bd) + ld a, $4 + ld d, $0 + ld hl, Data_1915 + ld bc, $8 + jp Func_18d4 + +Func_19ca: ; 0x19ca + ld a, $5 + ld d, $0 + ld hl, Data_191d + ld bc, $0008 + jp Func_18d4 + +Func_19d7: ; 0x19d7 + ld a, $6 + ld d, $1 + ld hl, Data_190d + ld bc, $0008 + jp Func_18d4 + +; XXX + ret + +Func_19e5: ; 0x19e5 + ld a, [wd8ad] + cp $1 + jr z, .asm_19f8 + and a + jr nz, .asm_19f6 + ld a, [wd8cb] + cp $1 + jr z, .asm_1a02 +.asm_19f6 + scf + ret + +.asm_19f8 + ld a, [wd8cb] + cp $1 + jr z, .asm_19f6 + ld [wd8ad], a +.asm_1a02 + xor a + ld [wd8c5], a + ld [wd8ae], a + ld a, $1 + ld [wd8b9], a + ld [wd8db], a + ld a, [Data_18ff] + ld [rSB], a + ld a, $1 + ld [rSC], a + ld a, $81 + ld [rSC], a + ld a, $f0 + ret |