mirror of
https://github.com/pret/pokepinball.git
synced 2026-03-21 17:55:03 -05:00
278 lines
4.4 KiB
NASM
278 lines
4.4 KiB
NASM
FarSendSGBPackets: ; 0x12a1
|
|
; send 16*b bytes at a:hl via the joypad register
|
|
ldh [hROMBankBuffer], a
|
|
ldh a, [hLoadedROMBank]
|
|
push af
|
|
ldh a, [hROMBankBuffer]
|
|
ldh [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
|
|
ldh [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
|
|
ldh [hROMBankBuffer], a
|
|
ldh a, [hLoadedROMBank]
|
|
push af
|
|
ldh a, [hROMBankBuffer]
|
|
ldh [hLoadedROMBank], a
|
|
ld [MBC5RomBank], a
|
|
push af
|
|
push hl
|
|
ld a, $e4
|
|
ld [rBGP], a
|
|
ld de, $0010
|
|
add hl, de
|
|
ld de, vTilesSH ; tiles
|
|
call LocalCopyData
|
|
ld hl, vBGMap ; 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
|
|
ldh a, [hBGP]
|
|
ld [rBGP], a
|
|
ldh a, [hLCDC]
|
|
ld [rLCDC], a
|
|
pop af
|
|
ldh [hLoadedROMBank], a
|
|
ld [MBC5RomBank], a
|
|
ret
|
|
|
|
SendSGBBorder: ; 0x13a8
|
|
ldh 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
|
|
ldh a, [hSGBFlag]
|
|
and a
|
|
ret z
|
|
ldh 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
|
|
ldh [hSGBInit], a
|
|
ret
|
|
|
|
SGBNormal: ; 0x14a4
|
|
ldh a, [hSGBFlag]
|
|
and a
|
|
ret z
|
|
ld bc, $0002
|
|
call SGBWait1750
|
|
ldh a, [hSGBInit]
|
|
and a
|
|
ret z
|
|
ld a, BANK(Data_3aa76)
|
|
ld hl, Data_3aa76
|
|
call FarSendSGBPackets
|
|
ld bc, $0004
|
|
call SGBWait1750
|
|
xor a
|
|
ldh [hSGBInit], a
|
|
ret
|