summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZumi Daxuya <daxuya.zumi+code@protonmail.com>2021-05-17 18:05:49 +0700
committerZumi Daxuya <daxuya.zumi+code@protonmail.com>2021-05-17 18:09:43 +0700
commit0f72265c2fb4df1069654ee9e62707398e326649 (patch)
treeb1ec69c0f13f54fd0b5e9a20506edbeec5188af3
parent437e556b3dd0d37609e1a629aed473f88c068be3 (diff)
Decode SGB system control packets
-rw-r--r--data/sgb/ctrl_packets.inc142
1 files changed, 105 insertions, 37 deletions
diff --git a/data/sgb/ctrl_packets.inc b/data/sgb/ctrl_packets.inc
index bcca0ed..b613e7d 100644
--- a/data/sgb/ctrl_packets.inc
+++ b/data/sgb/ctrl_packets.inc
@@ -1,60 +1,128 @@
-PalTrnPacket:
- db $59, $00, $00, $00, $00, $00, $00, $00
- db $00, $00, $00, $00, $00, $00, $00, $00
+sgb_pal_trn: MACRO
+ db (SGB_PAL_TRN << 3) + 1
+ ds 15
+ENDM
-MltReq1Packet:
- db $89, $00, $00, $00, $00, $00, $00, $00
- db $00, $00, $00, $00, $00, $00, $00, $00
+sgb_mlt_req: MACRO
+ db (SGB_MLT_REG << 3) + 1
+ db \1 - 1
+ ds 14
+ENDM
-MltReq2Packet:
- db $89, $01, $00, $00, $00, $00, $00, $00
- db $00, $00, $00, $00, $00, $00, $00, $00
+sgb_chr_trn: MACRO
+ db (SGB_CHR_TRN << 3) + 1
+ db \1 + (\2 << 1)
+ ds 14
+ENDM
-ChrTrnPacket:
- db $99, $00, $00, $00, $00, $00, $00, $00
- db $00, $00, $00, $00, $00, $00, $00, $00
+sgb_pct_trn: MACRO
+ db (SGB_PCT_TRN << 3) + 1
+ ds 15
+ENDM
-PctTrnPacket:
- db $a1, $00, $00, $00, $00, $00, $00, $00
- db $00, $00, $00, $00, $00, $00, $00, $00
+sgb_mask_en: MACRO
+ db (SGB_MASK_EN << 3) + 1
+ db \1
+ ds 14
+ENDM
-MaskEnFreezePacket:
- db $b9, $01, $00, $00, $00, $00, $00, $00
- db $00, $00, $00, $00, $00, $00, $00, $00
+sgb_data_snd: MACRO
+ db (SGB_DATA_SND << 3) + 1
+ dw \1 ; address
+ db \2 ; bank
+ db \3 ; length (1-11)
+ENDM
-MaskEnCancelPacket:
- db $b9, $00, $00, $00, $00, $00, $00, $00
- db $00, $00, $00, $00, $00, $00, $00, $00
+PalTrnPacket: sgb_pal_trn
+MltReq1Packet: sgb_mlt_req 1
+MltReq2Packet: sgb_mlt_req 2
+ChrTrnPacket: sgb_chr_trn 0, 0
+PctTrnPacket: sgb_pct_trn
+
+MaskEnFreezePacket: sgb_mask_en 1
+MaskEnCancelPacket: sgb_mask_en 0
+
+; These are packets containing SNES code.
+; This set of packets is found in several Japanese SGB-compatible titles.
+; It appears to be part of NCL's SGB devkit.
DataSndPacket1:
- db $79, $5d, $08, $00, $0b, $8c, $d0, $f4
- db $60, $00, $00, $00, $00, $00, $00, $00
+ sgb_data_snd $085d, $0, 11
+ db $8c ; cpx #$8c (2)
+ db $d0, $f4 ; bne -$0c
+ db $60 ; rts
+ ds 7
DataSndPacket2:
- db $79, $52, $08, $00, $0b, $a9, $e7, $9f
- db $01, $c0, $7e, $e8, $e8, $e8, $e8, $e0
+ sgb_data_snd $0852, $0, 11
+ db $a9, $e7 ; lda #$e7
+ db $9f, $01, $c0, $7e ; sta $7ec001, x
+ db $e8 ; inx
+ db $e8 ; inx
+ db $e8 ; inx
+ db $e8 ; inx
+ db $e0 ; cpx #$8c (1)
DataSndPacket3:
- db $79, $47, $08, $00, $0b, $c4, $d0, $16
- db $a5, $cb, $c9, $05, $d0, $10, $a2, $28
+ sgb_data_snd $0847, $0, 11
+ db $c4 ; cmp #$c4 (2)
+ db $d0, $16 ; bne +$16
+ db $a5 ; lda dp
+ db $cb ; wai
+ db $c9, $05 ; cmp #$05
+ db $d0, $10 ; bne +$10
+ db $a2, $28 ; ldx #$28
DataSndPacket4:
- db $79, $3c, $08, $00, $0b, $f0, $12, $a5
- db $c9, $c9, $c8, $d0, $1c, $a5, $ca, $c9
+ sgb_data_snd $083c, $0, 11
+ db $f0, $12 ; beq +$12
+ db $a5 ; lda dp
+ db $c9, $c9 ; cmp #$c9
+ db $c8 ; iny
+ db $d0, $1c ; bne +$1c
+ db $a5 ; lda dp
+ db $ca ; dex
+ db $c9 ; cmp #$c4 (1)
DataSndPacket5:
- db $79, $31, $08, $00, $0b, $0c, $a5, $ca
- db $c9, $7e, $d0, $06, $a5, $cb, $c9, $7e
+ sgb_data_snd $0831, $0, 11
+ dbw $0c, $caa5 ; tsb $caa5
+ db $c9, $7e ; cmp #$7e
+ db $d0, $06 ; bne +$06
+ db $a5 ; lda dp
+ db $cb ; wai
+ db $c9, $7e ; cmp #$7e
DataSndPacket6:
- db $79, $26, $08, $00, $0b, $39, $cd, $48
- db $0c, $d0, $34, $a5, $c9, $c9, $80, $d0
+ sgb_data_snd $0826, $0, 11
+ db $39 ; bne +$39 (2)
+ dbw $cd, $0c48 ; cmp $0c48
+ db $d0, $34 ; bne +$34
+ db $a5 ; lda dp
+ db $c9, $c9 ; cmp #$c9
+ db $80, $d0 ; bra -$30
DataSndPacket7:
- db $79, $1b, $08, $00, $0b, $ea, $ea, $ea
- db $ea, $ea, $a9, $01, $cd, $4f, $0c, $d0
+ sgb_data_snd $081b, $0, 11
+ db $ea ; nop
+ db $ea ; nop
+ db $ea ; nop
+ db $ea ; nop
+ db $ea ; nop
+ ; $0820:
+ db $a9, $01 ; lda #01
+ dbw $cd, $0c4f ; cmp $c4f
+ db $d0 ; bne +$39 (1)
DataSndPacket8:
- db $79, $10, $08, $00, $0b, $4c, $20, $08
- db $ea, $ea, $ea, $ea, $ea, $60, $ea, $ea
+ sgb_data_snd $0810, $0, 11
+ dbw $4c, $0820 ; jmp $0820
+ db $ea ; nop
+ db $ea ; nop
+ db $ea ; nop
+ db $ea ; nop
+ db $ea ; nop
+ db $60 ; rts
+ db $ea ; nop
+ db $ea ; nop