From 97d0da4a591ab413fad8e85673a13c17804b823b Mon Sep 17 00:00:00 2001 From: Dmitry Shechtman Date: Wed, 13 Aug 2025 04:53:32 +0300 Subject: [PATCH 01/10] Add sgb.inc Closes #76 --- sgb.inc | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 sgb.inc diff --git a/sgb.inc b/sgb.inc new file mode 100644 index 0000000..b39191d --- /dev/null +++ b/sgb.inc @@ -0,0 +1,150 @@ +DEF SGB_PAL01 EQU $00 << 3 +DEF SGB_PAL23 EQU $01 << 3 +DEF SGB_PAL03 EQU $02 << 3 +DEF SGB_PAL12 EQU $03 << 3 +DEF SGB_ATTR_BLK EQU $04 << 3 +DEF SGB_ATTR_LIN EQU $05 << 3 +DEF SGB_ATTR_DIV EQU $06 << 3 +DEF SGB_ATTR_CHR EQU $07 << 3 +DEF SGB_SOUND EQU $08 << 3 +DEF SGB_SOU_TRN EQU $09 << 3 +DEF SGB_PAL_SET EQU $0A << 3 +DEF SGB_PAL_TRN EQU $0B << 3 +DEF SGB_ATRC_EN EQU $0C << 3 +DEF SGB_TEST_EN EQU $0D << 3 +DEF SGB_ICON_EN EQU $0E << 3 +DEF SGB_DATA_SND EQU $0F << 3 +DEF SGB_DATA_TRN EQU $10 << 3 +DEF SGB_MLT_REQ EQU $11 << 3 +DEF SGB_JUMP EQU $12 << 3 +DEF SGB_CHR_TRN EQU $13 << 3 +DEF SGB_PCT_TRN EQU $14 << 3 +DEF SGB_ATTR_TRN EQU $15 << 3 +DEF SGB_ATTR_SET EQU $16 << 3 +DEF SGB_MASK_EN EQU $17 << 3 +DEF SGB_OBJ_TRN EQU $18 << 3 +DEF SGB_PAL_PRI EQU $19 << 3 +DEF SGB_STUB1 EQU $1A << 3 +DEF SGB_STUB2 EQU $1B << 3 +DEF SGB_STUB3 EQU $1C << 3 +DEF SGB_STUB4 EQU $1D << 3 +DEF SGB_STUB5 EQU $1E << 3 +DEF SGB_STUB6 EQU $1F << 3 + +DEF SGB_SOUND_A EQU $01 +DEF SGB_SOUND_B EQU $02 +DEF SGB_SOUND_ATTRS EQU $03 + +DEF B_SGB_SOUND_A_PITCH EQU 0 + + DEF SGB_SOUND_A_PITCH_0 EQU 0 << B_SGB_SOUND_A_PITCH + DEF SGB_SOUND_A_PITCH_1 EQU 1 << B_SGB_SOUND_A_PITCH + DEF SGB_SOUND_A_PITCH_2 EQU 2 << B_SGB_SOUND_A_PITCH + DEF SGB_SOUND_A_PITCH_3 EQU 3 << B_SGB_SOUND_A_PITCH + +DEF B_SGB_SOUND_A_VOLUME EQU 2 + + DEF SGB_SOUND_A_VOLUME_HIGH EQU 0 << B_SGB_SOUND_A_VOLUME + DEF SGB_SOUND_A_VOLUME_MED EQU 1 << B_SGB_SOUND_A_VOLUME + DEF SGB_SOUND_A_VOLUME_LOW EQU 2 << B_SGB_SOUND_A_VOLUME + DEF SGB_SOUND_A_VOLUME_OFF EQU 3 << B_SGB_SOUND_A_VOLUME + +DEF B_SGB_SOUND_B_PITCH EQU 4 + + DEF SGB_SOUND_B_PITCH_0 EQU 0 << B_SGB_SOUND_B_PITCH + DEF SGB_SOUND_B_PITCH_1 EQU 1 << B_SGB_SOUND_B_PITCH + DEF SGB_SOUND_B_PITCH_2 EQU 2 << B_SGB_SOUND_B_PITCH + DEF SGB_SOUND_B_PITCH_3 EQU 3 << B_SGB_SOUND_B_PITCH + +DEF B_SGB_SOUND_B_VOLUME EQU 6 + + DEF SGB_SOUND_B_VOLUME_HIGH EQU 0 << B_SGB_SOUND_B_VOLUME + DEF SGB_SOUND_B_VOLUME_MED EQU 1 << B_SGB_SOUND_B_VOLUME + DEF SGB_SOUND_B_VOLUME_LOW EQU 2 << B_SGB_SOUND_B_VOLUME + +DEF SGB_SOUND_A_RETRIGGER EQU $00 +DEF SGB_SOUND_A_NINTENDO EQU $01 +DEF SGB_SOUND_A_GAME_OVER EQU $02 +DEF SGB_SOUND_A_DROP EQU $03 +DEF SGB_SOUND_A_OK_A EQU $04 +DEF SGB_SOUND_A_OK_B EQU $05 +DEF SGB_SOUND_A_SELECT_A EQU $06 +DEF SGB_SOUND_A_SELECT_B EQU $07 +DEF SGB_SOUND_A_SELECT_C EQU $08 +DEF SGB_SOUND_A_ERROR EQU $09 +DEF SGB_SOUND_A_CATCH EQU $0A +DEF SGB_SOUND_A_KNOCK EQU $0B +DEF SGB_SOUND_EXPLOSION_SMALL EQU $0C +DEF SGB_SOUND_EXPLOSION_MEDIUM EQU $0D +DEF SGB_SOUND_EXPLOSION_LARGE EQU $0E +DEF SGB_SOUND_DEFEAT_A EQU $0F +DEF SGB_SOUND_DEFEAT_B EQU $10 +DEF SGB_SOUND_HIT_A EQU $11 +DEF SGB_SOUND_HIT_B EQU $12 +DEF SGB_SOUND_A_BREATH_IN EQU $13 +DEF SGB_SOUND_A_ROCKET_A EQU $14 +DEF SGB_SOUND_A_ROCKET_B EQU $15 +DEF SGB_SOUND_A_ESCAPING_BUBBLE EQU $16 +DEF SGB_SOUND_A_JUMP EQU $17 +DEF SGB_SOUND_A_JUMP_FAST EQU $18 +DEF SGB_SOUND_A_JET_TAKEOFF EQU $19 +DEF SGB_SOUND_A_JET_LANDING EQU $1A +DEF SGB_SOUND_A_CUP_BREAKING EQU $1B +DEF SGB_SOUND_A_GLASS_BREAKING EQU $1C +DEF SGB_SOUND_A_LEVEL_UP EQU $1D +DEF SGB_SOUND_A_INSERT_AIR EQU $1E +DEF SGB_SOUND_A_SWORD_SWING EQU $1F +DEF SGB_SOUND_A_WATER_FALLING EQU $20 +DEF SGB_SOUND_A_FIRE EQU $21 +DEF SGB_SOUND_A_WALL_COLLAPSING EQU $22 +DEF SGB_SOUND_A_CANCEL EQU $23 +DEF SGB_SOUND_A_WALKING EQU $24 +DEF SGB_SOUND_A_BLOCKING_STRIKE EQU $25 +DEF SGB_SOUND_A_PICTURE_FLOATS EQU $26 +DEF SGB_SOUND_A_FADE_IN EQU $27 +DEF SGB_SOUND_A_FADE_OUT EQU $28 +DEF SGB_SOUND_A_WINDOW_OPENING EQU $29 +DEF SGB_SOUND_A_WINDOW_CLOSING EQU $2A +DEF SGB_SOUND_A_LASER_BIG EQU $2B +DEF SGB_SOUND_A_STONE_GATE EQU $2C +DEF SGB_SOUND_A_TELEPORTATION EQU $2D +DEF SGB_SOUND_A_LIGHTNING EQU $2E +DEF SGB_SOUND_A_EARTHQUAKE EQU $2F +DEF SGB_SOUND_A_LASER_SMALL EQU $30 + +DEF SGB_SOUND_A_STOP EQU $80 + +DEF SGB_SOUND_B_RETRIGGER EQU $00 +DEF SGB_SOUND_B_APPLAUSE_SMALL EQU $01 +DEF SGB_SOUND_B_APPLAUSE_MED EQU $02 +DEF SGB_SOUND_B_APPLAUSE_LARGE EQU $03 +DEF SGB_SOUND_B_WIND EQU $04 +DEF SGB_SOUND_B_RAIN EQU $05 +DEF SGB_SOUND_B_STORM EQU $06 +DEF SGB_SOUND_B_STORM_W_THUNDER EQU $07 +DEF SGB_SOUND_B_LIGHTNING EQU $08 +DEF SGB_SOUND_B_EARTHQUAKE EQU $09 +DEF SGB_SOUND_B_AVALANCHE EQU $0A +DEF SGB_SOUND_B_WAVE EQU $0B +DEF SGB_SOUND_B_RIVER EQU $0C +DEF SGB_SOUND_B_WATERFALL EQU $0D +DEF SGB_SOUND_B_RUNNING_SMALL EQU $0E +DEF SGB_SOUND_B_RUNNING_HORSE EQU $0F +DEF SGB_SOUND_B_WARNING EQU $10 +DEF SGB_SOUND_B_CAR_APPROACHING EQU $11 +DEF SGB_SOUND_B_JET_FLYING EQU $12 +DEF SGB_SOUND_B_UFO_FLYING EQU $13 +DEF SGB_SOUND_B_ELECTOMAGNETIC EQU $14 +DEF SGB_SOUND_B_SCORE_UP EQU $15 +DEF SGB_SOUND_B_FIRE EQU $16 +DEF SGB_SOUND_B_CAMERA_SHUTTER EQU $17 +DEF SGB_SOUND_B_WRITE EQU $18 +DEF SGB_SOUND_B_SHOW_UP EQU $19 + +DEF SGB_SOUND_B_STOP EQU $80 + +DEF SGB_MASK_EN_MASK EQU $01 +DEF SGB_MASK_EN_MASK_CANCEL EQU $00 +DEF SGB_MASK_EN_MASK_FREEZE EQU $01 +DEF SGB_MASK_EN_MASK_BLACK EQU $02 +DEF SGB_MASK_EN_MASK_COLOR_0 EQU $03 From aa8f070a00478cc66e1e7ebe3acb16411f1c6784 Mon Sep 17 00:00:00 2001 From: Dmitry Shechtman Date: Wed, 13 Aug 2025 05:31:47 +0300 Subject: [PATCH 02/10] Update sgb.inc Add header Add include guard Add comments Lowercase DEFs and EQUs Rename SGB_SOUND_ATTRS to SGB_SOUND_FLAGS --- sgb.inc | 356 ++++++++++++++++++++++++++++++++------------------------ 1 file changed, 206 insertions(+), 150 deletions(-) diff --git a/sgb.inc b/sgb.inc index b39191d..9e25aa3 100644 --- a/sgb.inc +++ b/sgb.inc @@ -1,150 +1,206 @@ -DEF SGB_PAL01 EQU $00 << 3 -DEF SGB_PAL23 EQU $01 << 3 -DEF SGB_PAL03 EQU $02 << 3 -DEF SGB_PAL12 EQU $03 << 3 -DEF SGB_ATTR_BLK EQU $04 << 3 -DEF SGB_ATTR_LIN EQU $05 << 3 -DEF SGB_ATTR_DIV EQU $06 << 3 -DEF SGB_ATTR_CHR EQU $07 << 3 -DEF SGB_SOUND EQU $08 << 3 -DEF SGB_SOU_TRN EQU $09 << 3 -DEF SGB_PAL_SET EQU $0A << 3 -DEF SGB_PAL_TRN EQU $0B << 3 -DEF SGB_ATRC_EN EQU $0C << 3 -DEF SGB_TEST_EN EQU $0D << 3 -DEF SGB_ICON_EN EQU $0E << 3 -DEF SGB_DATA_SND EQU $0F << 3 -DEF SGB_DATA_TRN EQU $10 << 3 -DEF SGB_MLT_REQ EQU $11 << 3 -DEF SGB_JUMP EQU $12 << 3 -DEF SGB_CHR_TRN EQU $13 << 3 -DEF SGB_PCT_TRN EQU $14 << 3 -DEF SGB_ATTR_TRN EQU $15 << 3 -DEF SGB_ATTR_SET EQU $16 << 3 -DEF SGB_MASK_EN EQU $17 << 3 -DEF SGB_OBJ_TRN EQU $18 << 3 -DEF SGB_PAL_PRI EQU $19 << 3 -DEF SGB_STUB1 EQU $1A << 3 -DEF SGB_STUB2 EQU $1B << 3 -DEF SGB_STUB3 EQU $1C << 3 -DEF SGB_STUB4 EQU $1D << 3 -DEF SGB_STUB5 EQU $1E << 3 -DEF SGB_STUB6 EQU $1F << 3 - -DEF SGB_SOUND_A EQU $01 -DEF SGB_SOUND_B EQU $02 -DEF SGB_SOUND_ATTRS EQU $03 - -DEF B_SGB_SOUND_A_PITCH EQU 0 - - DEF SGB_SOUND_A_PITCH_0 EQU 0 << B_SGB_SOUND_A_PITCH - DEF SGB_SOUND_A_PITCH_1 EQU 1 << B_SGB_SOUND_A_PITCH - DEF SGB_SOUND_A_PITCH_2 EQU 2 << B_SGB_SOUND_A_PITCH - DEF SGB_SOUND_A_PITCH_3 EQU 3 << B_SGB_SOUND_A_PITCH - -DEF B_SGB_SOUND_A_VOLUME EQU 2 - - DEF SGB_SOUND_A_VOLUME_HIGH EQU 0 << B_SGB_SOUND_A_VOLUME - DEF SGB_SOUND_A_VOLUME_MED EQU 1 << B_SGB_SOUND_A_VOLUME - DEF SGB_SOUND_A_VOLUME_LOW EQU 2 << B_SGB_SOUND_A_VOLUME - DEF SGB_SOUND_A_VOLUME_OFF EQU 3 << B_SGB_SOUND_A_VOLUME - -DEF B_SGB_SOUND_B_PITCH EQU 4 - - DEF SGB_SOUND_B_PITCH_0 EQU 0 << B_SGB_SOUND_B_PITCH - DEF SGB_SOUND_B_PITCH_1 EQU 1 << B_SGB_SOUND_B_PITCH - DEF SGB_SOUND_B_PITCH_2 EQU 2 << B_SGB_SOUND_B_PITCH - DEF SGB_SOUND_B_PITCH_3 EQU 3 << B_SGB_SOUND_B_PITCH - -DEF B_SGB_SOUND_B_VOLUME EQU 6 - - DEF SGB_SOUND_B_VOLUME_HIGH EQU 0 << B_SGB_SOUND_B_VOLUME - DEF SGB_SOUND_B_VOLUME_MED EQU 1 << B_SGB_SOUND_B_VOLUME - DEF SGB_SOUND_B_VOLUME_LOW EQU 2 << B_SGB_SOUND_B_VOLUME - -DEF SGB_SOUND_A_RETRIGGER EQU $00 -DEF SGB_SOUND_A_NINTENDO EQU $01 -DEF SGB_SOUND_A_GAME_OVER EQU $02 -DEF SGB_SOUND_A_DROP EQU $03 -DEF SGB_SOUND_A_OK_A EQU $04 -DEF SGB_SOUND_A_OK_B EQU $05 -DEF SGB_SOUND_A_SELECT_A EQU $06 -DEF SGB_SOUND_A_SELECT_B EQU $07 -DEF SGB_SOUND_A_SELECT_C EQU $08 -DEF SGB_SOUND_A_ERROR EQU $09 -DEF SGB_SOUND_A_CATCH EQU $0A -DEF SGB_SOUND_A_KNOCK EQU $0B -DEF SGB_SOUND_EXPLOSION_SMALL EQU $0C -DEF SGB_SOUND_EXPLOSION_MEDIUM EQU $0D -DEF SGB_SOUND_EXPLOSION_LARGE EQU $0E -DEF SGB_SOUND_DEFEAT_A EQU $0F -DEF SGB_SOUND_DEFEAT_B EQU $10 -DEF SGB_SOUND_HIT_A EQU $11 -DEF SGB_SOUND_HIT_B EQU $12 -DEF SGB_SOUND_A_BREATH_IN EQU $13 -DEF SGB_SOUND_A_ROCKET_A EQU $14 -DEF SGB_SOUND_A_ROCKET_B EQU $15 -DEF SGB_SOUND_A_ESCAPING_BUBBLE EQU $16 -DEF SGB_SOUND_A_JUMP EQU $17 -DEF SGB_SOUND_A_JUMP_FAST EQU $18 -DEF SGB_SOUND_A_JET_TAKEOFF EQU $19 -DEF SGB_SOUND_A_JET_LANDING EQU $1A -DEF SGB_SOUND_A_CUP_BREAKING EQU $1B -DEF SGB_SOUND_A_GLASS_BREAKING EQU $1C -DEF SGB_SOUND_A_LEVEL_UP EQU $1D -DEF SGB_SOUND_A_INSERT_AIR EQU $1E -DEF SGB_SOUND_A_SWORD_SWING EQU $1F -DEF SGB_SOUND_A_WATER_FALLING EQU $20 -DEF SGB_SOUND_A_FIRE EQU $21 -DEF SGB_SOUND_A_WALL_COLLAPSING EQU $22 -DEF SGB_SOUND_A_CANCEL EQU $23 -DEF SGB_SOUND_A_WALKING EQU $24 -DEF SGB_SOUND_A_BLOCKING_STRIKE EQU $25 -DEF SGB_SOUND_A_PICTURE_FLOATS EQU $26 -DEF SGB_SOUND_A_FADE_IN EQU $27 -DEF SGB_SOUND_A_FADE_OUT EQU $28 -DEF SGB_SOUND_A_WINDOW_OPENING EQU $29 -DEF SGB_SOUND_A_WINDOW_CLOSING EQU $2A -DEF SGB_SOUND_A_LASER_BIG EQU $2B -DEF SGB_SOUND_A_STONE_GATE EQU $2C -DEF SGB_SOUND_A_TELEPORTATION EQU $2D -DEF SGB_SOUND_A_LIGHTNING EQU $2E -DEF SGB_SOUND_A_EARTHQUAKE EQU $2F -DEF SGB_SOUND_A_LASER_SMALL EQU $30 - -DEF SGB_SOUND_A_STOP EQU $80 - -DEF SGB_SOUND_B_RETRIGGER EQU $00 -DEF SGB_SOUND_B_APPLAUSE_SMALL EQU $01 -DEF SGB_SOUND_B_APPLAUSE_MED EQU $02 -DEF SGB_SOUND_B_APPLAUSE_LARGE EQU $03 -DEF SGB_SOUND_B_WIND EQU $04 -DEF SGB_SOUND_B_RAIN EQU $05 -DEF SGB_SOUND_B_STORM EQU $06 -DEF SGB_SOUND_B_STORM_W_THUNDER EQU $07 -DEF SGB_SOUND_B_LIGHTNING EQU $08 -DEF SGB_SOUND_B_EARTHQUAKE EQU $09 -DEF SGB_SOUND_B_AVALANCHE EQU $0A -DEF SGB_SOUND_B_WAVE EQU $0B -DEF SGB_SOUND_B_RIVER EQU $0C -DEF SGB_SOUND_B_WATERFALL EQU $0D -DEF SGB_SOUND_B_RUNNING_SMALL EQU $0E -DEF SGB_SOUND_B_RUNNING_HORSE EQU $0F -DEF SGB_SOUND_B_WARNING EQU $10 -DEF SGB_SOUND_B_CAR_APPROACHING EQU $11 -DEF SGB_SOUND_B_JET_FLYING EQU $12 -DEF SGB_SOUND_B_UFO_FLYING EQU $13 -DEF SGB_SOUND_B_ELECTOMAGNETIC EQU $14 -DEF SGB_SOUND_B_SCORE_UP EQU $15 -DEF SGB_SOUND_B_FIRE EQU $16 -DEF SGB_SOUND_B_CAMERA_SHUTTER EQU $17 -DEF SGB_SOUND_B_WRITE EQU $18 -DEF SGB_SOUND_B_SHOW_UP EQU $19 - -DEF SGB_SOUND_B_STOP EQU $80 - -DEF SGB_MASK_EN_MASK EQU $01 -DEF SGB_MASK_EN_MASK_CANCEL EQU $00 -DEF SGB_MASK_EN_MASK_FREEZE EQU $01 -DEF SGB_MASK_EN_MASK_BLACK EQU $02 -DEF SGB_MASK_EN_MASK_COLOR_0 EQU $03 +;****************************************************************************** +; Super Game Boy command constant definitions +; https://github.com/gbdev/sgb.inc +;****************************************************************************** + +; To the extent possible under law, the authors of this work have +; waived all copyright and related or neighboring rights to the work. +; See https://creativecommons.org/publicdomain/zero/1.0/ for details. +; SPDX-License-Identifier: CC0-1.0 + +; If this file was already included, don't do it again +if !def(SGB_INC) + +; Define the include guard +def SGB_INC equ 1 + + +;****************************************************************************** +; SGB Command Prefixes +;****************************************************************************** + +def SGB_PAL01 equ $00 << 3 +def SGB_PAL23 equ $01 << 3 +def SGB_PAL03 equ $02 << 3 +def SGB_PAL12 equ $03 << 3 +def SGB_ATTR_BLK equ $04 << 3 +def SGB_ATTR_LIN equ $05 << 3 +def SGB_ATTR_DIV equ $06 << 3 +def SGB_ATTR_CHR equ $07 << 3 +def SGB_SOUND equ $08 << 3 +def SGB_SOU_TRN equ $09 << 3 +def SGB_PAL_SET equ $0A << 3 +def SGB_PAL_TRN equ $0B << 3 +def SGB_ATRC_EN equ $0C << 3 +def SGB_TEST_EN equ $0D << 3 +def SGB_ICON_EN equ $0E << 3 +def SGB_DATA_SND equ $0F << 3 +def SGB_DATA_TRN equ $10 << 3 +def SGB_MLT_REQ equ $11 << 3 +def SGB_JUMP equ $12 << 3 +def SGB_CHR_TRN equ $13 << 3 +def SGB_PCT_TRN equ $14 << 3 +def SGB_ATTR_TRN equ $15 << 3 +def SGB_ATTR_SET equ $16 << 3 +def SGB_MASK_EN equ $17 << 3 +def SGB_OBJ_TRN equ $18 << 3 +def SGB_PAL_PRI equ $19 << 3 +def SGB_STUB1 equ $1A << 3 +def SGB_STUB2 equ $1B << 3 +def SGB_STUB3 equ $1C << 3 +def SGB_STUB4 equ $1D << 3 +def SGB_STUB5 equ $1E << 3 +def SGB_STUB6 equ $1F << 3 + + +;****************************************************************************** +; SGB_SOUND Packet Indices +;****************************************************************************** + +def SGB_SOUND_A equ $01 +def SGB_SOUND_B equ $02 +def SGB_SOUND_FLAGS equ $03 + + +;****************************************************************************** +; SGB_SOUND Flags +;****************************************************************************** + +def B_SGB_SOUND_A_PITCH equ 0 + + def SGB_SOUND_A_PITCH_0 equ 0 << B_SGB_SOUND_A_PITCH + def SGB_SOUND_A_PITCH_1 equ 1 << B_SGB_SOUND_A_PITCH + def SGB_SOUND_A_PITCH_2 equ 2 << B_SGB_SOUND_A_PITCH + def SGB_SOUND_A_PITCH_3 equ 3 << B_SGB_SOUND_A_PITCH + +def B_SGB_SOUND_A_VOLUME equ 2 + + def SGB_SOUND_A_VOLUME_HIGH equ 0 << B_SGB_SOUND_A_VOLUME + def SGB_SOUND_A_VOLUME_MED equ 1 << B_SGB_SOUND_A_VOLUME + def SGB_SOUND_A_VOLUME_LOW equ 2 << B_SGB_SOUND_A_VOLUME + def SGB_SOUND_A_VOLUME_OFF equ 3 << B_SGB_SOUND_A_VOLUME + +def B_SGB_SOUND_B_PITCH equ 4 + + def SGB_SOUND_B_PITCH_0 equ 0 << B_SGB_SOUND_B_PITCH + def SGB_SOUND_B_PITCH_1 equ 1 << B_SGB_SOUND_B_PITCH + def SGB_SOUND_B_PITCH_2 equ 2 << B_SGB_SOUND_B_PITCH + def SGB_SOUND_B_PITCH_3 equ 3 << B_SGB_SOUND_B_PITCH + +def B_SGB_SOUND_B_VOLUME equ 6 + + def SGB_SOUND_B_VOLUME_HIGH equ 0 << B_SGB_SOUND_B_VOLUME + def SGB_SOUND_B_VOLUME_MED equ 1 << B_SGB_SOUND_B_VOLUME + def SGB_SOUND_B_VOLUME_LOW equ 2 << B_SGB_SOUND_B_VOLUME + + +;****************************************************************************** +; SGB_SOUND_A Values +;****************************************************************************** + +def SGB_SOUND_A_RETRIGGER equ $00 + +def SGB_SOUND_A_NINTENDO equ $01 +def SGB_SOUND_A_GAME_OVER equ $02 +def SGB_SOUND_A_DROP equ $03 +def SGB_SOUND_A_OK_A equ $04 +def SGB_SOUND_A_OK_B equ $05 +def SGB_SOUND_A_SELECT_A equ $06 +def SGB_SOUND_A_SELECT_B equ $07 +def SGB_SOUND_A_SELECT_C equ $08 +def SGB_SOUND_A_ERROR equ $09 +def SGB_SOUND_A_CATCH equ $0A +def SGB_SOUND_A_KNOCK equ $0B +def SGB_SOUND_EXPLOSION_SMALL equ $0C +def SGB_SOUND_EXPLOSION_MEDIUM equ $0D +def SGB_SOUND_EXPLOSION_LARGE equ $0E +def SGB_SOUND_DEFEAT_A equ $0F +def SGB_SOUND_DEFEAT_B equ $10 +def SGB_SOUND_HIT_A equ $11 +def SGB_SOUND_HIT_B equ $12 +def SGB_SOUND_A_BREATH_IN equ $13 +def SGB_SOUND_A_ROCKET_A equ $14 +def SGB_SOUND_A_ROCKET_B equ $15 +def SGB_SOUND_A_ESCAPING_BUBBLE equ $16 +def SGB_SOUND_A_JUMP equ $17 +def SGB_SOUND_A_JUMP_FAST equ $18 +def SGB_SOUND_A_JET_TAKEOFF equ $19 +def SGB_SOUND_A_JET_LANDING equ $1A +def SGB_SOUND_A_CUP_BREAKING equ $1B +def SGB_SOUND_A_GLASS_BREAKING equ $1C +def SGB_SOUND_A_LEVEL_UP equ $1D +def SGB_SOUND_A_INSERT_AIR equ $1E +def SGB_SOUND_A_SWORD_SWING equ $1F +def SGB_SOUND_A_WATER_FALLING equ $20 +def SGB_SOUND_A_FIRE equ $21 +def SGB_SOUND_A_WALL_COLLAPSING equ $22 +def SGB_SOUND_A_CANCEL equ $23 +def SGB_SOUND_A_WALKING equ $24 +def SGB_SOUND_A_BLOCKING_STRIKE equ $25 +def SGB_SOUND_A_PICTURE_FLOATS equ $26 +def SGB_SOUND_A_FADE_IN equ $27 +def SGB_SOUND_A_FADE_OUT equ $28 +def SGB_SOUND_A_WINDOW_OPENING equ $29 +def SGB_SOUND_A_WINDOW_CLOSING equ $2A +def SGB_SOUND_A_LASER_BIG equ $2B +def SGB_SOUND_A_STONE_GATE equ $2C +def SGB_SOUND_A_TELEPORTATION equ $2D +def SGB_SOUND_A_LIGHTNING equ $2E +def SGB_SOUND_A_EARTHQUAKE equ $2F +def SGB_SOUND_A_LASER_SMALL equ $30 + +def SGB_SOUND_A_STOP equ $80 + + +;****************************************************************************** +; SGB_SOUND_B Values +;****************************************************************************** + +def SGB_SOUND_B_RETRIGGER equ $00 + +def SGB_SOUND_B_APPLAUSE_SMALL equ $01 +def SGB_SOUND_B_APPLAUSE_MED equ $02 +def SGB_SOUND_B_APPLAUSE_LARGE equ $03 +def SGB_SOUND_B_WIND equ $04 +def SGB_SOUND_B_RAIN equ $05 +def SGB_SOUND_B_STORM equ $06 +def SGB_SOUND_B_STORM_W_THUNDER equ $07 +def SGB_SOUND_B_LIGHTNING equ $08 +def SGB_SOUND_B_EARTHQUAKE equ $09 +def SGB_SOUND_B_AVALANCHE equ $0A +def SGB_SOUND_B_WAVE equ $0B +def SGB_SOUND_B_RIVER equ $0C +def SGB_SOUND_B_WATERFALL equ $0D +def SGB_SOUND_B_RUNNING_SMALL equ $0E +def SGB_SOUND_B_RUNNING_HORSE equ $0F +def SGB_SOUND_B_WARNING equ $10 +def SGB_SOUND_B_CAR_APPROACHING equ $11 +def SGB_SOUND_B_JET_FLYING equ $12 +def SGB_SOUND_B_UFO_FLYING equ $13 +def SGB_SOUND_B_ELECTOMAGNETIC equ $14 +def SGB_SOUND_B_SCORE_UP equ $15 +def SGB_SOUND_B_FIRE equ $16 +def SGB_SOUND_B_CAMERA_SHUTTER equ $17 +def SGB_SOUND_B_WRITE equ $18 +def SGB_SOUND_B_SHOW_UP equ $19 + +def SGB_SOUND_B_STOP equ $80 + + +;****************************************************************************** +; SGB_MASK_EN Packet Indices +;****************************************************************************** + +def SGB_MASK_EN_MASK equ $01 + + +;****************************************************************************** +; SGB_MASK_EN_MASK Values +;****************************************************************************** + +def SGB_MASK_EN_MASK_CANCEL equ $00 +def SGB_MASK_EN_MASK_FREEZE equ $01 +def SGB_MASK_EN_MASK_BLACK equ $02 +def SGB_MASK_EN_MASK_COLOR_0 equ $03 + +endc ; SGB_INC From 3ee55d7f9af2e3029e83e747e5de8192cc8d71a5 Mon Sep 17 00:00:00 2001 From: Dmitry Shechtman Date: Wed, 13 Aug 2025 16:04:15 +0300 Subject: [PATCH 03/10] Add SGB_MLT_REQ_PLAYERS + values --- sgb.inc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/sgb.inc b/sgb.inc index 9e25aa3..5b4b3f1 100644 --- a/sgb.inc +++ b/sgb.inc @@ -187,6 +187,22 @@ def SGB_SOUND_B_SHOW_UP equ $19 def SGB_SOUND_B_STOP equ $80 +;****************************************************************************** +; SGB_MLT_REQ Packet Indices +;****************************************************************************** + +def SGB_MLT_REQ_PLAYERS equ $01 + + +;****************************************************************************** +; SGB_MLT_REQ_PLAYERS Values +;****************************************************************************** + +def SGB_MLT_REQ_PLAYERS_ONE equ $00 +def SGB_MLT_REQ_PLAYERS_TWO equ $01 +def SGB_MLT_REQ_PLAYERS_FOUR equ $01 + + ;****************************************************************************** ; SGB_MASK_EN Packet Indices ;****************************************************************************** From a2b688a44c4daab1f06b97a4cb9f9240cecca6a3 Mon Sep 17 00:00:00 2001 From: Dmitry Shechtman Date: Wed, 13 Aug 2025 16:06:15 +0300 Subject: [PATCH 04/10] Fix broken link --- sgb.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sgb.inc b/sgb.inc index 5b4b3f1..c9ea7db 100644 --- a/sgb.inc +++ b/sgb.inc @@ -1,6 +1,6 @@ ;****************************************************************************** ; Super Game Boy command constant definitions -; https://github.com/gbdev/sgb.inc +; https://github.com/gbdev/hardware.inc ;****************************************************************************** ; To the extent possible under law, the authors of this work have From cc6ad18fbe55355605cf190661627e02731e8683 Mon Sep 17 00:00:00 2001 From: Dmitry Shechtman Date: Wed, 13 Aug 2025 16:10:11 +0300 Subject: [PATCH 05/10] Update sgb.inc to use S_* --- sgb.inc | 104 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 53 insertions(+), 51 deletions(-) diff --git a/sgb.inc b/sgb.inc index c9ea7db..3054925 100644 --- a/sgb.inc +++ b/sgb.inc @@ -19,38 +19,40 @@ def SGB_INC equ 1 ; SGB Command Prefixes ;****************************************************************************** -def SGB_PAL01 equ $00 << 3 -def SGB_PAL23 equ $01 << 3 -def SGB_PAL03 equ $02 << 3 -def SGB_PAL12 equ $03 << 3 -def SGB_ATTR_BLK equ $04 << 3 -def SGB_ATTR_LIN equ $05 << 3 -def SGB_ATTR_DIV equ $06 << 3 -def SGB_ATTR_CHR equ $07 << 3 -def SGB_SOUND equ $08 << 3 -def SGB_SOU_TRN equ $09 << 3 -def SGB_PAL_SET equ $0A << 3 -def SGB_PAL_TRN equ $0B << 3 -def SGB_ATRC_EN equ $0C << 3 -def SGB_TEST_EN equ $0D << 3 -def SGB_ICON_EN equ $0E << 3 -def SGB_DATA_SND equ $0F << 3 -def SGB_DATA_TRN equ $10 << 3 -def SGB_MLT_REQ equ $11 << 3 -def SGB_JUMP equ $12 << 3 -def SGB_CHR_TRN equ $13 << 3 -def SGB_PCT_TRN equ $14 << 3 -def SGB_ATTR_TRN equ $15 << 3 -def SGB_ATTR_SET equ $16 << 3 -def SGB_MASK_EN equ $17 << 3 -def SGB_OBJ_TRN equ $18 << 3 -def SGB_PAL_PRI equ $19 << 3 -def SGB_STUB1 equ $1A << 3 -def SGB_STUB2 equ $1B << 3 -def SGB_STUB3 equ $1C << 3 -def SGB_STUB4 equ $1D << 3 -def SGB_STUB5 equ $1E << 3 -def SGB_STUB6 equ $1F << 3 +def S_SGB_COMMAND equ 3 + +def SGB_PAL01 equ $00 << S_SGB_COMMAND +def SGB_PAL23 equ $01 << S_SGB_COMMAND +def SGB_PAL03 equ $02 << S_SGB_COMMAND +def SGB_PAL12 equ $03 << S_SGB_COMMAND +def SGB_ATTR_BLK equ $04 << S_SGB_COMMAND +def SGB_ATTR_LIN equ $05 << S_SGB_COMMAND +def SGB_ATTR_DIV equ $06 << S_SGB_COMMAND +def SGB_ATTR_CHR equ $07 << S_SGB_COMMAND +def SGB_SOUND equ $08 << S_SGB_COMMAND +def SGB_SOU_TRN equ $09 << S_SGB_COMMAND +def SGB_PAL_SET equ $0A << S_SGB_COMMAND +def SGB_PAL_TRN equ $0B << S_SGB_COMMAND +def SGB_ATRC_EN equ $0C << S_SGB_COMMAND +def SGB_TEST_EN equ $0D << S_SGB_COMMAND +def SGB_ICON_EN equ $0E << S_SGB_COMMAND +def SGB_DATA_SND equ $0F << S_SGB_COMMAND +def SGB_DATA_TRN equ $10 << S_SGB_COMMAND +def SGB_MLT_REQ equ $11 << S_SGB_COMMAND +def SGB_JUMP equ $12 << S_SGB_COMMAND +def SGB_CHR_TRN equ $13 << S_SGB_COMMAND +def SGB_PCT_TRN equ $14 << S_SGB_COMMAND +def SGB_ATTR_TRN equ $15 << S_SGB_COMMAND +def SGB_ATTR_SET equ $16 << S_SGB_COMMAND +def SGB_MASK_EN equ $17 << S_SGB_COMMAND +def SGB_OBJ_TRN equ $18 << S_SGB_COMMAND +def SGB_PAL_PRI equ $19 << S_SGB_COMMAND +def SGB_STUB1 equ $1A << S_SGB_COMMAND +def SGB_STUB2 equ $1B << S_SGB_COMMAND +def SGB_STUB3 equ $1C << S_SGB_COMMAND +def SGB_STUB4 equ $1D << S_SGB_COMMAND +def SGB_STUB5 equ $1E << S_SGB_COMMAND +def SGB_STUB6 equ $1F << S_SGB_COMMAND ;****************************************************************************** @@ -66,32 +68,32 @@ def SGB_SOUND_FLAGS equ $03 ; SGB_SOUND Flags ;****************************************************************************** -def B_SGB_SOUND_A_PITCH equ 0 +def S_SGB_SOUND_A_PITCH equ 0 - def SGB_SOUND_A_PITCH_0 equ 0 << B_SGB_SOUND_A_PITCH - def SGB_SOUND_A_PITCH_1 equ 1 << B_SGB_SOUND_A_PITCH - def SGB_SOUND_A_PITCH_2 equ 2 << B_SGB_SOUND_A_PITCH - def SGB_SOUND_A_PITCH_3 equ 3 << B_SGB_SOUND_A_PITCH + def SGB_SOUND_A_PITCH_0 equ 0 << S_SGB_SOUND_A_PITCH + def SGB_SOUND_A_PITCH_1 equ 1 << S_SGB_SOUND_A_PITCH + def SGB_SOUND_A_PITCH_2 equ 2 << S_SGB_SOUND_A_PITCH + def SGB_SOUND_A_PITCH_3 equ 3 << S_SGB_SOUND_A_PITCH -def B_SGB_SOUND_A_VOLUME equ 2 +def S_SGB_SOUND_A_VOLUME equ 2 - def SGB_SOUND_A_VOLUME_HIGH equ 0 << B_SGB_SOUND_A_VOLUME - def SGB_SOUND_A_VOLUME_MED equ 1 << B_SGB_SOUND_A_VOLUME - def SGB_SOUND_A_VOLUME_LOW equ 2 << B_SGB_SOUND_A_VOLUME - def SGB_SOUND_A_VOLUME_OFF equ 3 << B_SGB_SOUND_A_VOLUME + def SGB_SOUND_A_VOLUME_HIGH equ 0 << S_SGB_SOUND_A_VOLUME + def SGB_SOUND_A_VOLUME_MED equ 1 << S_SGB_SOUND_A_VOLUME + def SGB_SOUND_A_VOLUME_LOW equ 2 << S_SGB_SOUND_A_VOLUME + def SGB_SOUND_A_VOLUME_OFF equ 3 << S_SGB_SOUND_A_VOLUME -def B_SGB_SOUND_B_PITCH equ 4 +def S_SGB_SOUND_B_PITCH equ 4 - def SGB_SOUND_B_PITCH_0 equ 0 << B_SGB_SOUND_B_PITCH - def SGB_SOUND_B_PITCH_1 equ 1 << B_SGB_SOUND_B_PITCH - def SGB_SOUND_B_PITCH_2 equ 2 << B_SGB_SOUND_B_PITCH - def SGB_SOUND_B_PITCH_3 equ 3 << B_SGB_SOUND_B_PITCH + def SGB_SOUND_B_PITCH_0 equ 0 << S_SGB_SOUND_B_PITCH + def SGB_SOUND_B_PITCH_1 equ 1 << S_SGB_SOUND_B_PITCH + def SGB_SOUND_B_PITCH_2 equ 2 << S_SGB_SOUND_B_PITCH + def SGB_SOUND_B_PITCH_3 equ 3 << S_SGB_SOUND_B_PITCH -def B_SGB_SOUND_B_VOLUME equ 6 +def S_SGB_SOUND_B_VOLUME equ 6 - def SGB_SOUND_B_VOLUME_HIGH equ 0 << B_SGB_SOUND_B_VOLUME - def SGB_SOUND_B_VOLUME_MED equ 1 << B_SGB_SOUND_B_VOLUME - def SGB_SOUND_B_VOLUME_LOW equ 2 << B_SGB_SOUND_B_VOLUME + def SGB_SOUND_B_VOLUME_HIGH equ 0 << S_SGB_SOUND_B_VOLUME + def SGB_SOUND_B_VOLUME_MED equ 1 << S_SGB_SOUND_B_VOLUME + def SGB_SOUND_B_VOLUME_LOW equ 2 << S_SGB_SOUND_B_VOLUME ;****************************************************************************** From 26c764ce67cdf6f5b9ae4d42157fe4bf8e788478 Mon Sep 17 00:00:00 2001 From: Dmitry Shechtman Date: Wed, 13 Aug 2025 16:38:20 +0300 Subject: [PATCH 06/10] Update sgb.inc to use A_* --- sgb.inc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sgb.inc b/sgb.inc index 3054925..3685283 100644 --- a/sgb.inc +++ b/sgb.inc @@ -59,13 +59,13 @@ def SGB_STUB6 equ $1F << S_SGB_COMMAND ; SGB_SOUND Packet Indices ;****************************************************************************** -def SGB_SOUND_A equ $01 -def SGB_SOUND_B equ $02 -def SGB_SOUND_FLAGS equ $03 +def A_SGB_SOUND_A equ $01 +def A_SGB_SOUND_B equ $02 +def A_SGB_SOUND_FLAGS equ $03 ;****************************************************************************** -; SGB_SOUND Flags +; SGB_SOUND_FLAGS Values ;****************************************************************************** def S_SGB_SOUND_A_PITCH equ 0 @@ -193,7 +193,7 @@ def SGB_SOUND_B_STOP equ $80 ; SGB_MLT_REQ Packet Indices ;****************************************************************************** -def SGB_MLT_REQ_PLAYERS equ $01 +def A_SGB_MLT_REQ_PLAYERS equ $01 ;****************************************************************************** @@ -209,7 +209,7 @@ def SGB_MLT_REQ_PLAYERS_FOUR equ $01 ; SGB_MASK_EN Packet Indices ;****************************************************************************** -def SGB_MASK_EN_MASK equ $01 +def A_SGB_MASK_EN_MASK equ $01 ;****************************************************************************** From da5f00a14a0deb4a2f59c3e9dcd3bf247219a34f Mon Sep 17 00:00:00 2001 From: Dmitry Shechtman Date: Wed, 3 Sep 2025 20:02:41 +0300 Subject: [PATCH 07/10] Add SGB_PACKET_SIZE --- sgb.inc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sgb.inc b/sgb.inc index 3685283..65b045a 100644 --- a/sgb.inc +++ b/sgb.inc @@ -15,6 +15,13 @@ if !def(SGB_INC) def SGB_INC equ 1 +;****************************************************************************** +; SGB Packet Size +;****************************************************************************** + +def SGB_PACKET_SIZE equ 16 + + ;****************************************************************************** ; SGB Command Prefixes ;****************************************************************************** From 14c048d227696f3fd14c5fb729c3111851ede019 Mon Sep 17 00:00:00 2001 From: Dmitry Shechtman Date: Fri, 5 Sep 2025 01:55:26 +0300 Subject: [PATCH 08/10] Add SGB_CHR_TRN indices and values --- sgb.inc | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/sgb.inc b/sgb.inc index 65b045a..b6efe74 100644 --- a/sgb.inc +++ b/sgb.inc @@ -212,6 +212,23 @@ def SGB_MLT_REQ_PLAYERS_TWO equ $01 def SGB_MLT_REQ_PLAYERS_FOUR equ $01 +;****************************************************************************** +; SGB_CHR_TRN Packet Indices +;****************************************************************************** + +def A_SGB_CHR_TRN_DEST equ $01 + + +;****************************************************************************** +; SGB_CHR_TRN_DEST Values +;****************************************************************************** + +def SGB_CHR_TRN_DEST_BG_TILES_0 equ $00 +def SGB_CHR_TRN_DEST_BG_TILES_1 equ $01 +def SGB_CHR_TRN_DEST_OBJ_TILES_0 equ $02 +def SGB_CHR_TRN_DEST_OBJ_TILES_1 equ $03 + + ;****************************************************************************** ; SGB_MASK_EN Packet Indices ;****************************************************************************** From b4a608d195b0ff2e50b76cce3d49a80c1c6853b6 Mon Sep 17 00:00:00 2001 From: Dmitry Shechtman Date: Fri, 5 Sep 2025 01:59:03 +0300 Subject: [PATCH 09/10] Remove _TILES suffix from SGB_CHR_TRN values --- sgb.inc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sgb.inc b/sgb.inc index b6efe74..58ab0b4 100644 --- a/sgb.inc +++ b/sgb.inc @@ -223,10 +223,10 @@ def A_SGB_CHR_TRN_DEST equ $01 ; SGB_CHR_TRN_DEST Values ;****************************************************************************** -def SGB_CHR_TRN_DEST_BG_TILES_0 equ $00 -def SGB_CHR_TRN_DEST_BG_TILES_1 equ $01 -def SGB_CHR_TRN_DEST_OBJ_TILES_0 equ $02 -def SGB_CHR_TRN_DEST_OBJ_TILES_1 equ $03 +def SGB_CHR_TRN_DEST_BG_0 equ $00 +def SGB_CHR_TRN_DEST_BG_1 equ $01 +def SGB_CHR_TRN_DEST_OBJ_0 equ $02 +def SGB_CHR_TRN_DEST_OBJ_1 equ $03 ;****************************************************************************** From 4463b4be00c5658773701c01d1c77ecf18a32066 Mon Sep 17 00:00:00 2001 From: Dmitry Shechtman Date: Thu, 2 Oct 2025 17:24:19 +0300 Subject: [PATCH 10/10] Add A_SGB_PAL01_* et al --- sgb.inc | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/sgb.inc b/sgb.inc index 58ab0b4..29cb5c0 100644 --- a/sgb.inc +++ b/sgb.inc @@ -62,6 +62,58 @@ def SGB_STUB5 equ $1E << S_SGB_COMMAND def SGB_STUB6 equ $1F << S_SGB_COMMAND +;****************************************************************************** +; SGB_PAL01 Packet Indices +;****************************************************************************** + +def A_SGB_PAL01_COLOR_0 equ $01 +def A_SGB_PAL01_PAL_0_COLOR_1 equ $03 +def A_SGB_PAL01_PAL_0_COLOR_2 equ $05 +def A_SGB_PAL01_PAL_0_COLOR_3 equ $07 +def A_SGB_PAL01_PAL_1_COLOR_1 equ $09 +def A_SGB_PAL01_PAL_1_COLOR_2 equ $0B +def A_SGB_PAL01_PAL_1_COLOR_3 equ $0D + + +;****************************************************************************** +; SGB_PAL23 Packet Indices +;****************************************************************************** + +def A_SGB_PAL23_COLOR_0 equ $01 +def A_SGB_PAL23_PAL_2_COLOR_1 equ $03 +def A_SGB_PAL23_PAL_2_COLOR_2 equ $05 +def A_SGB_PAL23_PAL_2_COLOR_3 equ $07 +def A_SGB_PAL23_PAL_3_COLOR_1 equ $09 +def A_SGB_PAL23_PAL_3_COLOR_2 equ $0B +def A_SGB_PAL23_PAL_3_COLOR_3 equ $0D + + +;****************************************************************************** +; SGB_PAL03 Packet Indices +;****************************************************************************** + +def A_SGB_PAL03_COLOR_0 equ $01 +def A_SGB_PAL03_PAL_0_COLOR_1 equ $03 +def A_SGB_PAL03_PAL_0_COLOR_2 equ $05 +def A_SGB_PAL03_PAL_0_COLOR_3 equ $07 +def A_SGB_PAL03_PAL_3_COLOR_1 equ $09 +def A_SGB_PAL03_PAL_3_COLOR_2 equ $0B +def A_SGB_PAL03_PAL_3_COLOR_3 equ $0D + + +;****************************************************************************** +; SGB_PAL12 Packet Indices +;****************************************************************************** + +def A_SGB_PAL12_COLOR_0 equ $01 +def A_SGB_PAL12_PAL_1_COLOR_1 equ $03 +def A_SGB_PAL12_PAL_1_COLOR_2 equ $05 +def A_SGB_PAL12_PAL_1_COLOR_3 equ $07 +def A_SGB_PAL12_PAL_2_COLOR_1 equ $09 +def A_SGB_PAL12_PAL_2_COLOR_2 equ $0B +def A_SGB_PAL12_PAL_2_COLOR_3 equ $0D + + ;****************************************************************************** ; SGB_SOUND Packet Indices ;******************************************************************************