diff options
author | xCrystal <rgr.crystal@gmail.com> | 2018-02-16 19:59:38 +0100 |
---|---|---|
committer | xCrystal <rgr.crystal@gmail.com> | 2018-02-16 19:59:38 +0100 |
commit | 6a747cd61a34de515ce432fb34f86f4e0752faf1 (patch) | |
tree | 521a04cf7a4d4d6c5dcd2c2a5721e0ffae8b16cd /src | |
parent | cdd2d4eac475082078cf4a266dd6429d0d8c6379 (diff) |
Clean up SGB commands
Diffstat (limited to 'src')
-rw-r--r-- | src/constants/sgb_constants.asm | 13 | ||||
-rwxr-xr-x | src/engine/bank1c.asm | 50 | ||||
-rwxr-xr-x | src/engine/home.asm | 118 | ||||
-rw-r--r-- | src/macros/data.asm | 2 |
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 |