summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorxCrystal <rgr.crystal@gmail.com>2018-02-16 19:59:38 +0100
committerxCrystal <rgr.crystal@gmail.com>2018-02-16 19:59:38 +0100
commit6a747cd61a34de515ce432fb34f86f4e0752faf1 (patch)
tree521a04cf7a4d4d6c5dcd2c2a5721e0ffae8b16cd /src
parentcdd2d4eac475082078cf4a266dd6429d0d8c6379 (diff)
Clean up SGB commands
Diffstat (limited to 'src')
-rw-r--r--src/constants/sgb_constants.asm13
-rwxr-xr-xsrc/engine/bank1c.asm50
-rwxr-xr-xsrc/engine/home.asm118
-rw-r--r--src/macros/data.asm2
4 files changed, 122 insertions, 61 deletions
diff --git a/src/constants/sgb_constants.asm b/src/constants/sgb_constants.asm
index e956881..6ba250e 100644
--- a/src/constants/sgb_constants.asm
+++ b/src/constants/sgb_constants.asm
@@ -23,3 +23,16 @@ ATTR_TRN EQU $15 ; Set Attribute from ATF
ATTR_SET EQU $16 ; Set Data to ATF
MASK_EN EQU $17 ; Game Boy Window Mask
OBJ_TRN EQU $18 ; Super NES OBJ Mode
+
+ATTR_BLK_CTRL_INSIDE EQU 1
+ATTR_BLK_CTRL_LINE EQU 2
+ATTR_BLK_CTRL_OUTSIDE EQU 4
+
+MLT_REQ_1_PLAYER EQU 0
+MLT_REQ_2_PLAYERS EQU 1
+MLT_REQ_4_PLAYERS EQU 3
+
+MASK_EN_CANCEL_MASK EQU 0
+MASK_EN_FREEZE_SCREEN EQU 1
+MASK_EN_BLANK_SCREEN_BLACK EQU 2
+MASK_EN_BLANK_SCREEN_COLOR_0 EQU 3
diff --git a/src/engine/bank1c.asm b/src/engine/bank1c.asm
index 60dfb26..79994a3 100755
--- a/src/engine/bank1c.asm
+++ b/src/engine/bank1c.asm
@@ -22,7 +22,16 @@ Func_70018: ; 70018 (1c:4018)
ret
; 0x70024
- INCROM $70024, $70044
+AtrcEnPacket_Disable: ; 70024 (1c:4024)
+ sgb ATRC_EN, 1 ; sgb_command, length
+ db 1
+ ds $0e
+
+; disable Controller Set-up Screen
+IconEnPacket: ; 70034 (1c:4034)
+ sgb ICON_EN, 3 ; sgb_command, length
+ db $01
+ ds $0e
Func_70044: ; 70044 (1c:4044)
push hl
@@ -83,7 +92,7 @@ Func_700a3: ; 700a3 (1c:40a3)
ld de, vTiles1
call Func_701e9
call Func_701fe
- ld hl, SGB_700de
+ ld hl, ChrTrnPacket_BGTiles1
call Func_70177
pop hl
ld de, $0002
@@ -98,7 +107,7 @@ Func_700a3: ; 700a3 (1c:40a3)
dec hl
ld de, vTiles1
call Func_701e9
- ld hl, SGB_700ee
+ ld hl, ChrTrnPacket_BGTiles2
call Func_70177
.asm_700da
pop de
@@ -107,12 +116,16 @@ Func_700a3: ; 700a3 (1c:40a3)
ret
; CHR_TRN: tiles $00-$7F, BG (border) tiles (from SNES $000-$FFF)
-SGB_700de: ; 700de (1c:40de)
- INCROM $700de, $700ee
+ChrTrnPacket_BGTiles1: ; 700de (1c:40de)
+ sgb CHR_TRN, 1 ; sgb_command, length
+ db 0
+ ds $0e
; CHR_TRN: tiles $80-$FF, BG (border) tiles (from SNES $000-$FFF)
-SGB_700ee: ; 700ee (1c:40ee)
- INCROM $700ee, $700fe
+ChrTrnPacket_BGTiles2: ; 700ee (1c:40ee)
+ sgb CHR_TRN, 1 ; sgb_command, length
+ db 1
+ ds $0e
Func_700fe: ; 700fe (1c:40fe)
push hl
@@ -131,7 +144,7 @@ Func_700fe: ; 700fe (1c:40fe)
call Func_701fe
pop hl
call Func_70214
- ld hl, SGB_70126
+ ld hl, PctTrnPacket
call Func_70177
pop de
pop bc
@@ -139,8 +152,9 @@ Func_700fe: ; 700fe (1c:40fe)
ret
; PCT_TRN: read tile map & palette data into VRAM (from SNES $000-$87F)
-SGB_70126: ; 70126 (1c:4126)
- INCROM $70126, $70136
+PctTrnPacket: ; 70126 (1c:4126)
+ sgb PCT_TRN, 1 ; sgb_command, length
+ ds $0f
Func_70136: ; 70136 (1c:4136)
push hl
@@ -155,7 +169,7 @@ Func_70136: ; 70136 (1c:4136)
ld a, [wLCDC]
ld [wd420], a
di
- ld hl, SGB_MASK_EN_ON_701a0
+ ld hl, MaskEnPacket_Freeze_Bank1c
call SendSGB
call DisableLCD
ld a, [wLCDC]
@@ -199,12 +213,16 @@ Func_70177: ; 70177 (1c:4177)
ret
; MASK_EN on
-SGB_MASK_EN_ON_701a0: ; 701a0 (1c:41a0)
- INCROM $701a0, $701b0
+MaskEnPacket_Freeze_Bank1c: ; 701a0 (1c:41a0)
+ sgb MASK_EN, 1 ; sgb_command, length
+ db MASK_EN_FREEZE_SCREEN
+ ds $0e
; MASK_EN off
-SGB_MASK_EN_OFF_701b0: ; 701b0 (1c:41b0)
- INCROM $701b0, $701c0
+MaskEnPacket_Cancel_Bank1c: ; 701b0 (1c:41b0)
+ sgb MASK_EN, 1 ; sgb_command, length
+ db MASK_EN_CANCEL_MASK
+ ds $0e
Func_701c0: ; 701c0 (1c:41c0)
push hl
@@ -225,7 +243,7 @@ Func_701c0: ; 701c0 (1c:41c0)
pop af
ld [wTileMapFill], a
di
- ld hl, SGB_MASK_EN_OFF_701b0
+ ld hl, MaskEnPacket_Cancel_Bank1c
call SendSGB
ei
pop bc
diff --git a/src/engine/home.asm b/src/engine/home.asm
index 799d476..ebffefa 100755
--- a/src/engine/home.asm
+++ b/src/engine/home.asm
@@ -628,14 +628,18 @@ Func_04a2: ; 04a2 (0:04a2)
cp CONSOLE_SGB
ret nz
call EnableLCD ;
- ld hl, SGB_ATTR_BLK_04bf ; send SGB data
+ ld hl, AttrBlkPacket_04bf ; send SGB data
call SendSGB ;
call DisableLCD ;
ret
-SGB_ATTR_BLK_04bf: ; 04bf (0:04bf)
+AttrBlkPacket_04bf: ; 04bf (0:04bf)
sgb ATTR_BLK, 1 ; sgb_command, length
- db $01,$03,$00,$00,$00,$13,$11,$00,$00,$00,$00,$00,$00,$00,$00
+ db 1 ; number of data sets
+ ; Control Code, Color Palette Designation, X1, Y1, X2, Y2
+ db ATTR_BLK_CTRL_INSIDE + ATTR_BLK_CTRL_LINE, 0 << 0 + 0 << 2, 0, 0, 19, 17 ; data set 1
+ ds 6 ; data set 2
+ ds 2 ; data set 3
; returns vBGMapTiles + BG_MAP_WIDTH * c + b in de.
; used to map coordinates at bc to a BGMap0 address.
@@ -1667,81 +1671,101 @@ RST28: ; 09e9 (0:09e9)
; setup SNES memory $810-$867 and palette
InitSGB: ; 0a0d (0:0a0d)
- ld hl, SGB_MASK_EN_ON
+ ld hl, MaskEnPacket_Freeze
call SendSGB
- ld hl, SGB_DATA_SND_0a50
+ ld hl, DataSndPacket_0a50
call SendSGB
- ld hl, SGB_DATA_SND_0a60
+ ld hl, DataSndPacket_0a60
call SendSGB
- ld hl, SGB_DATA_SND_0a70
+ ld hl, DataSndPacket_0a70
call SendSGB
- ld hl, SGB_DATA_SND_0a80
+ ld hl, DataSndPacket_0a80
call SendSGB
- ld hl, SGB_DATA_SND_0a90
+ ld hl, DataSndPacket_0a90
call SendSGB
- ld hl, SGB_DATA_SND_0aa0
+ ld hl, DataSndPacket_0aa0
call SendSGB
- ld hl, SGB_DATA_SND_0ab0
+ ld hl, DataSndPacket_0ab0
call SendSGB
- ld hl, SGB_DATA_SND_0ac0
+ ld hl, DataSndPacket_0ac0
call SendSGB
- ld hl, SGB_PAL01
+ ld hl, Pal01Packet
call SendSGB
- ld hl, SGB_MASK_EN_OFF
+ ld hl, MaskEnPacket_Cancel
call SendSGB
ret
-SGB_DATA_SND_0a50: ; 0a50 (0:0a50)
+DataSndPacket_0a50: ; 0a50 (0:0a50)
sgb DATA_SND, 1 ; sgb_command, length
db $5d,$08,$00,$0b,$8c,$d0,$f4,$60,$00,$00,$00,$00,$00,$00,$00
-SGB_DATA_SND_0a60: ; 0a60 (0:0a60)
+DataSndPacket_0a60: ; 0a60 (0:0a60)
sgb DATA_SND, 1 ; sgb_command, length
db $52,$08,$00,$0b,$a9,$e7,$9f,$01,$c0,$7e,$e8,$e8,$e8,$e8,$e0
-SGB_DATA_SND_0a70: ; 0a70 (0:0a70)
+DataSndPacket_0a70: ; 0a70 (0:0a70)
sgb DATA_SND, 1 ; sgb_command, length
db $47,$08,$00,$0b,$c4,$d0,$16,$a5,$cb,$c9,$05,$d0,$10,$a2,$28
-SGB_DATA_SND_0a80: ; 0a80 (0:0a80)
+DataSndPacket_0a80: ; 0a80 (0:0a80)
sgb DATA_SND, 1 ; sgb_command, length
db $3c,$08,$00,$0b,$f0,$12,$a5,$c9,$c9,$c8,$d0,$1c,$a5,$ca,$c9
-SGB_DATA_SND_0a90: ; 0a90 (0:0a90)
+DataSndPacket_0a90: ; 0a90 (0:0a90)
sgb DATA_SND, 1 ; sgb_command, length
db $31,$08,$00,$0b,$0c,$a5,$ca,$c9,$7e,$d0,$06,$a5,$cb,$c9,$7e
-SGB_DATA_SND_0aa0: ; 0aa0 (0:0aa0)
+DataSndPacket_0aa0: ; 0aa0 (0:0aa0)
sgb DATA_SND, 1 ; sgb_command, length
db $26,$08,$00,$0b,$39,$cd,$48,$0c,$d0,$34,$a5,$c9,$c9,$80,$d0
-SGB_DATA_SND_0ab0: ; 0ab0 (0:0ab0)
+DataSndPacket_0ab0: ; 0ab0 (0:0ab0)
sgb DATA_SND, 1 ; sgb_command, length
db $1b,$08,$00,$0b,$ea,$ea,$ea,$ea,$ea,$a9,$01,$cd,$4f,$0c,$d0
-SGB_DATA_SND_0ac0: ; 0ac0 (0:0ac0)
+DataSndPacket_0ac0: ; 0ac0 (0:0ac0)
sgb DATA_SND, 1 ; sgb_command, length
db $10,$08,$00,$0b,$4c,$20,$08,$ea,$ea,$ea,$ea,$ea,$60,$ea,$ea
-SGB_MASK_EN_ON: ; 0ad0 (0:0ad0)
+MaskEnPacket_Freeze: ; 0ad0 (0:0ad0)
sgb MASK_EN, 1 ; sgb_command, length
- db $01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+ db MASK_EN_FREEZE_SCREEN
+ ds $0e
-SGB_MASK_EN_OFF: ; 0ae0 (0:0ae0)
+MaskEnPacket_Cancel: ; 0ae0 (0:0ae0)
sgb MASK_EN, 1 ; sgb_command, length
- db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+ db MASK_EN_CANCEL_MASK
+ ds $0e
-SGB_PAL01: ; 0af0 (0:0af0)
+Pal01Packet: ; 0af0 (0:0af0)
sgb PAL01, 1 ; sgb_command, length
- db $9c,$63,$94,$42,$08,$21,$00,$00,$1f,$00,$0f,$00,$07,$00,$00
-
-SGB_PAL23: ; 0b00 (0:0b00)
+ rgb 28, 28, 24
+ rgb 20, 20, 16
+ rgb 8, 8, 8
+ rgb 0, 0, 0
+ rgb 31, 0, 0
+ rgb 15, 0, 0
+ rgb 7, 0, 0
+ db $00
+
+Pal23Packet: ; 0b00 (0:0b00)
sgb PAL23, 1 ; sgb_command, length
- db $e0,$03,$e0,$01,$e0,$00,$00,$00,$00,$7c,$00,$3c,$00,$1c,$00
-
-SGB_ATTR_BLK_0b10: ; 0b10 (0:0b10)
+ rgb 0, 31, 0
+ rgb 0, 15, 0
+ rgb 0, 7, 0
+ rgb 0, 0, 0
+ rgb 0, 0, 31
+ rgb 0, 0, 15
+ rgb 0, 0, 7
+ db $00
+
+AttrBlkPacket_0b10: ; 0b10 (0:0b10)
sgb ATTR_BLK, 1 ; sgb_command, length
- db $01,$03,$09,$05,$05,$0a,$0a,$00,$00,$00,$00,$00,$00,$00,$00
+ db 1 ; number of data sets
+ ; Control Code, Color Palette Designation, X1, Y1, X2, Y2
+ db ATTR_BLK_CTRL_INSIDE + ATTR_BLK_CTRL_LINE, 1 << 0 + 2 << 2, 5, 5, 10, 10 ; data set 1
+ ds 6 ; data set 2
+ ds 2 ; data set 3
; send SGB command
SendSGB: ; 0b20 (0:0b20)
@@ -1789,7 +1813,7 @@ SendSGB: ; 0b20 (0:0b20)
DetectSGB: ; 0b59 (0:0b59)
ld bc, 60
call Wait
- ld hl, SGB_MLT_REQ_2
+ ld hl, MltReq2Packet
call SendSGB
ld a, [rJOYP]
and $3
@@ -1818,23 +1842,25 @@ DetectSGB: ; 0b59 (0:0b59)
and $3
cp $3
jr nz, .sgb
- ld hl, SGB_MLT_REQ_1
+ ld hl, MltReq1Packet
call SendSGB
or a
ret
.sgb
- ld hl, SGB_MLT_REQ_1
+ ld hl, MltReq1Packet
call SendSGB
scf
ret
-SGB_MLT_REQ_1: ; 0bab (0:0bab)
+MltReq1Packet: ; 0bab (0:0bab)
sgb MLT_REQ, 1 ; sgb_command, length
- db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+ db MLT_REQ_1_PLAYER
+ ds $0e
-SGB_MLT_REQ_2: ; 0bbb (0:0bbb)
+MltReq2Packet: ; 0bbb (0:0bbb)
sgb MLT_REQ, 1 ; sgb_command, length
- db $01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+ db MLT_REQ_2_PLAYERS
+ ds $0e
Func_0bcb: ; 0bcb (0:0bcb)
di
@@ -4177,7 +4203,7 @@ ColorizeTextBoxSGB
push bc
push de
ld hl, $cae0
- ld de, SGB_ATTR_BLK_1f4f
+ ld de, AttrBlkPacket_1f4f
ld c, $10
.copy_sgb_command_loop
ld a, [de]
@@ -4210,9 +4236,13 @@ ColorizeTextBoxSGB
call SendSGB
ret
-SGB_ATTR_BLK_1f4f: ; 1f4f (0:1f4f)
+AttrBlkPacket_1f4f: ; 1f4f (0:1f4f)
sgb ATTR_BLK, 1 ; sgb_command, length
- db $01,$03,$04,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
+ db 1 ; number of data sets
+ ; Control Code, Color Palette Designation, X1, Y1, X2, Y2
+ db ATTR_BLK_CTRL_INSIDE + ATTR_BLK_CTRL_LINE, 0 << 0 + 1 << 2, 0, 0, 0, 0 ; data set 1
+ ds 6 ; data set 2
+ ds 2 ; data set 3
Func_1f5f: ; 1f5f (0:1f5f)
push de
diff --git a/src/macros/data.asm b/src/macros/data.asm
index 4f66742..2fd4b7d 100644
--- a/src/macros/data.asm
+++ b/src/macros/data.asm
@@ -33,7 +33,7 @@ bigdw: MACRO ; big-endian word
ENDM
sgb: MACRO
- db \1 * 8 + \2 ; sgb_command * 8 + length
+ db \1 << 3 + \2 ; sgb_command * 8 + length
ENDM
rgb: MACRO