Split out HOME

This commit is contained in:
PikalaxALT 2017-01-18 21:50:32 -05:00
parent c752c88bf9
commit 354bccef2d
7 changed files with 7643 additions and 7671 deletions

View File

@ -5,7 +5,7 @@ Func_3c000: ; 0x3c000
push af
call Func_3cb1b
ld hl, wdd01
ld de, $01af
ld de, wdeb0 - wdd01
.clearLoop
xor a
ld [hli], a
@ -1687,7 +1687,7 @@ Func_3ca2b: ; 0x3ca2b
ld h, d
add hl, de
add hl, hl
ld de, $4b20 ; todo
ld de, $4b20
add hl, de
ld e, [hl]
inc hl

6512
home.asm Executable file

File diff suppressed because it is too large Load Diff

782
home/serial.asm Executable file
View File

@ -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

277
home/sgb.asm Executable file
View File

@ -0,0 +1,277 @@
FarSendSGBPackets: ; 0x12a1
; send 16*b bytes at a:hl via the joypad register
ld [hROMBankBuffer], a
ld a, [hLoadedROMBank]
push af
ld a, [hROMBankBuffer]
ld [hLoadedROMBank], a
ld [MBC5RomBank], a
ld a, [hl]
and $7
jr z, .quit
ld b, a
ld c, $0
.loop
push bc
ld a, $0
ld [$ff00+c], a
ld a, $30
ld [$ff00+c], a
ld b, $10
.inner_loop
ld e, $8
ld a, [hli]
ld d, a
.innermost_loop
bit 0, d
ld a, $10
jr nz, .got_data
ld a, $20
.got_data
ld [$ff00+c], a
ld a, $30
ld [$ff00+c], a
rr d
dec e
jr nz, .innermost_loop
dec b
jr nz, .inner_loop
ld a, $20
ld [$ff00+c], a
ld a, $30
ld [$ff00+c], a
pop bc
dec b
jr z, .quit
call SGBWait7000
jr .loop
.quit
pop af
ld [hLoadedROMBank], a
ld [MBC5RomBank], a
ret
SGBWait7000: ; 0x12ec
ld de, 7000
.asm_12ef
nop
nop
nop
dec de
ld a, d
or e
jr nz, .asm_12ef
ret
InitSGB: ; 0x12f8
ld a, BANK(Data_38010)
ld hl, Data_38010
call FarSendSGBPackets
call SGBWait7000
ld a, [rJOYP]
and $3
cp $3
jr nz, .asm_1346
ld a, $20
ld [rJOYP], a
ld a, [rJOYP]
ld a, [rJOYP]
ld a, $30
ld [rJOYP], a
ld a, $10
ld [rJOYP], a
ld a, [rJOYP]
ld a, [rJOYP]
ld a, [rJOYP]
ld a, [rJOYP]
ld a, [rJOYP]
ld a, [rJOYP]
ld a, $30
ld [rJOYP], a
ld a, [rJOYP]
ld a, [rJOYP]
ld a, [rJOYP]
ld a, [rJOYP]
and $3
cp $3
jr nz, .asm_1346
ld a, BANK(Data_38000)
ld hl, Data_38000
call FarSendSGBPackets
call SGBWait7000
and a
ret
.asm_1346
ld a, BANK(Data_38000)
ld hl, Data_38000
call FarSendSGBPackets
call SGBWait7000
scf
ret
FarSendSGBPacket_BGMapRows: ; 0x1353
ld [hROMBankBuffer], a
ld a, [hLoadedROMBank]
push af
ld a, [hROMBankBuffer]
ld [hLoadedROMBank], a
ld [MBC5RomBank], a
push af
push hl
ld a, $e4
ld [rBGP], a
ld de, $0010
add hl, de
ld de, vTiles1 ; tiles
call LocalCopyData
ld hl, vBGMap0 ; bgmap
ld de, $000c
ld a, $80
ld c, $d
.row
ld b, $14
.col
ld [hli], a
inc a
dec b
jr nz, .col
add hl, de
dec c
jr nz, .row
ld a, $81
ld [rLCDC], a
ld bc, $0005
call SGBWait1750
pop hl
pop af
call FarSendSGBPackets
ld bc, $0006
call SGBWait1750
ld a, [hBGP]
ld [rBGP], a
ld a, [hLCDC]
ld [rLCDC], a
pop af
ld [hLoadedROMBank], a
ld [MBC5RomBank], a
ret
SendSGBBorder: ; 0x13a8
ld a, [hSGBFlag]
and a
ret z
ld bc, $0078
call SGBWait1750
call SignalStartSGBBorderTransmission
ld a, BANK(Data_3a9e6)
ld hl, Data_3a9e6
call FarSendSGBPackets
ld bc, $0004
call SGBWait1750
ld a, BANK(Data_3a9f6)
ld hl, Data_3a9f6
call FarSendSGBPackets
ld bc, $0004
call SGBWait1750
ld a, BANK(Data_3aa06)
ld hl, Data_3aa06
call FarSendSGBPackets
ld bc, $0004
call SGBWait1750
ld a, BANK(Data_3aa16)
ld hl, Data_3aa16
call FarSendSGBPackets
ld bc, $0004
call SGBWait1750
ld a, BANK(Data_3aa26)
ld hl, Data_3aa26
call FarSendSGBPackets
ld bc, $0004
call SGBWait1750
ld a, BANK(Data_3aa36)
ld hl, Data_3aa36
call FarSendSGBPackets
ld bc, $0004
call SGBWait1750
ld a, BANK(Data_3aa46)
ld hl, Data_3aa46
call FarSendSGBPackets
ld bc, $0004
call SGBWait1750
ld a, BANK(Data_3aa56)
ld hl, Data_3aa56
call FarSendSGBPackets
ld bc, $0004
call SGBWait1750
ld bc, Data_39166 - Data_38156 - $10
ld a, BANK(Data_38156)
ld hl, Data_38156
call FarSendSGBPacket_BGMapRows
ld bc, $0004
call SGBWait1750
ld bc, Data_3a176 - Data_39166 - $10
ld a, BANK(Data_39166)
ld hl, Data_39166
call FarSendSGBPacket_BGMapRows
ld bc, $0004
call SGBWait1750
ld bc, Data_3a9e6 - Data_3a176 - $10
ld a, BANK(Data_3a176)
ld hl, Data_3a176
call FarSendSGBPacket_BGMapRows
ld bc, $0004
call SGBWait1750
ld bc, Data_38156 - Data_380a6 - $10
ld a, BANK(Data_380a6)
ld hl, Data_380a6
call FarSendSGBPacket_BGMapRows
ld bc, $0004
call SGBWait1750
ld bc, Data_3809a - Data_38030 - $10
ld a, BANK(Data_38030)
ld hl, Data_38030
call FarSendSGBPacket_BGMapRows
ld bc, $0004
call SGBWait1750
ld a, BANK(Data_38020)
ld hl, Data_38020
call FarSendSGBPackets
ld bc, $0004
call SGBWait1750
ret
SignalStartSGBBorderTransmission: ; 0x1489
ld a, [hSGBFlag]
and a
ret z
ld a, [hSGBInit]
and a
ret nz
ld a, BANK(Data_3aa66)
ld hl, Data_3aa66
call FarSendSGBPackets
ld bc, $0004
call SGBWait1750
ld a, $ff
ld [hSGBInit], a
ret
SGBNormal: ; 0x14a4
ld a, [hSGBFlag]
and a
ret z
ld bc, $0002
call SGBWait1750
ld a, [hSGBInit]
and a
ret z
ld a, BANK(Data_3aa76)
ld hl, Data_3aa76
call FarSendSGBPackets
ld bc, $0004
call SGBWait1750
xor a
ld [hSGBInit], a
ret

View File

@ -42,4 +42,6 @@ hFFC4 = $FFC4
hLoadedROMBank EQU $FFF8 ; this is updated whenever the code switches ROM Banks
hROMBankBuffer EQU $FFFA
hSGBFlag EQU $FFFB
hSGBInit EQU $FFFC
hGameBoyColorFlag EQU $FFFE ; this is set to $01 if a GameBoy Color is running the game. $00, otherwise.

7723
main.asm

File diff suppressed because it is too large Load Diff

View File

@ -97,7 +97,10 @@ wcb00:: ; 0xcb00
SECTION "WRAM Bank 1", WRAMX, BANK[1]
wOAMBuffer:: ; 0xd000
ds $200
ds $a0
wOAMBufferEnd:: ; 0xd0a0
ds $160
wPaletteData:: ; 0xd200
ds $80
@ -1845,7 +1848,7 @@ wd800:: ; 0xd800
wd801:: ; 0xd801
ds $1
wd802:: ; 0xd802
wOAMBufferSize:: ; 0xd802
ds $1
wd803:: ; 0xd803
@ -2616,9 +2619,12 @@ wdead:: ; 0xdead
ds $1
wdeae:: ; 0xdeae
ds $52
ds $2
wStack::
wdeb0:: ; 0xdeb0
ds $50
wStack:: ; 0xdf00
ds $ff
wdfff:: ; 0xdfff