Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Copia datos a la memoria RAM de la SNES
- ; @entrada DE: Datos del paquete
- ; @entrada HL: Gráficos a copiar por VRAM-transfer
- ; @entrada [AUXVAR]: Flag que indica si se están copiando datos de tiles 2bpp
- copysnes:
- di
- push de
- call display_off ; Deshabilitamos interrupciones y apagamos el LCD, ya que vamos a modificar la VRAM
- ld a, %11100100
- ld [rBGP], a ; Paleta asignada a los gráficos a copiar
- ld de, _VRAM + 2048
- ld a, [_AUXVAR]
- and a
- jr z, .copysnes_0
- call parsesgbbordertiles ; Convierte los gráficos de 2bpp a 4bpp
- jr .copysnes_1
- .copysnes_0:
- ld bc, 4096
- call copymem ; Copiamos en la VRAM los 4KB que van a transferirse a la VRAM de la SNES
- .copysnes_1:
- ; Copiamos en el fondo visible de _SCRN0 los 4KB de datos que se transmitirán a la SNES por VRAM transfer
- ld hl, _SCRN0
- ld de, 12 ; Ancho adicional del fondo
- ld a, $80 ; Dirección en VRAM del primer tile a transferir
- ld c, 13 ; Filas de datos a copiar
- .copysnes_2:
- ld b, 20 ; Ancho del fondo visible
- .copysnes_3:
- ld [hli], a ; Asignación del tile nulo
- inc a
- dec b
- jr nz, .copysnes_3
- add hl, de ; Siguiente fila de tiles del fondo visible
- dec c
- jr nz, .copysnes_2
- ld a, LCDCF_DEFAULT
- ld [rLCDC], a ; Encendemos el LCD para que la transferencia pueda producirse
- pop hl ; Recuperamos la definición del paquete
- call sgbpackettransfer ; Enviamos el paquete que producirá la transferencia
- xor a
- ld [rBGP], a ; Restauramos la paleta de colores del fondo a un valor nulo
- ret
- ; Convierte los gráficos 2bpp apuntados por HL a 4bpp y los almacena en la dirección apuntada por DE
- parsesgbbordertiles:
- ld b, 128
- .parsesgbbordertiles_0:
- ; Copiamos los bit planes 1 y 2 de los datos de los tiles
- ld c, 16
- .parsesgbbordertiles_1:
- ld a, [hli]
- ld [de], a
- inc de
- dec c
- jr nz, .parsesgbbordertiles_1
- ; Los bit planes 3 y 4 se setean a cero
- ld c, 16
- xor a
- .parsesgbbordertiles_2:
- ld [de], a
- inc de
- dec c
- jr nz, .parsesgbbordertiles_2
- dec b
- jr nz, .parsesgbbordertiles_0
- ret
Add Comment
Please, Sign In to add comment