; Inicialización relativa a Super Game Boy
init_sgb:
xor a
ld [_SGB_F], a ; Indica si el juego se está ejecutando en una Super Game Boy
ld a, SGB_BNK
ld [_CUR_BNK], a
ld [$2000], a ; Banco con las rutinas y gráficos de la Super Game Boy
call check_sgb
ret nc ; Volvemos si el juego no se está ejecutando en una Super Game Boy
di
ld a, 1
ld [_SGB_F], a
ld hl, MaskEnFreeze
call sgbpackettransfer ; Congela la visualización de la pantalla de la Super Game Boy para que los gráficos no se visualicen en el fondo al ser transferidos
call init_sgb_default ; Envío de los 8 paquetes de datos por defecto especificados en la documentación oficial
xor a
ld [_AUXVAR], a
ld de, ChrTrn1
ld hl, SGBBorderTiles
call copysnes ; Copia en la VRAM de la SNES de los primeros 128 tiles (256 tiles de Game Boy) del fondo
xor a
ld [_AUXVAR], a
ld de, ChrTrn2
ld hl, SGBBorderTiles + 4096
call copysnes ; Copia en la VRAM de la SNES de los segundos 128 tiles (256 tiles de Game Boy) del fondo
xor a
ld [_AUXVAR], a
ld de, PctTrn
ld hl, SGBBorder
call copysnes ; Copia en la VRAM de la SNES del marco a visualizar en la Super Game Boy
xor a
ld [_AUXVAR], a
ld de, PalTrn
ld hl, SGBSuperPalettes
call copysnes ; Copia en la VRAM de la SNES de las paletas personalizadas a usar durante el juego
; Resetea el estado de la VRAM
ld de, _VRAM
ld bc, $2000
ld l, $0
call fillmem
; Seteamos la paleta por defecto del juego
ld hl, PalSet
call sgbpackettransfer
ld hl, MaskEnCancel
call sgbpackettransfer ; Descongelamos la visualización de la pantalla de Super Game Boy
ret