;--------------------------------------------------------------------
;
;(C) tolkien / Goblins 2019.
;
;--------------------------------------------------------------------
opt c-,p=68000
section demophase,code
;Activa o desactiva el canal DMA deseado
COPPER = 1
BLITTER = 1
SPRITE = 0
DISK = 0
NASTY = 0 ;Activa Nasty Mode del Blitter
TOPAZ = 0 ;Usa Topaz
VBI = 0 ;activa VertivalBlankInterrupt
CPI = 0
NUMPLANES = 1 ;16 colores
Plane_Size = 40*256
;Este include contiene las rutinas asesinas del sistema
include includes/SkyInit.s
include includes/GoblinsCustom.i
;-----------------------------------------------------------
; Precalculos de la demo. SinTables, etc.
; Invocada ANTES de tomar el sistema.
;-----------------------------------------------------------
_Precalc:
rts
;-----------------------------------------------------------
; Seccion principal
; Invocada por SkyInit. La demo termina cuando se sale
; de esta rutina.
;-----------------------------------------------------------
_Main:
moveq #NumPlanes-1,d1
move.l #screen,d0 ;direccion de nuestra imagen
lea Planes,a1 ;registro de bitplanos en la copperlist
.bp
move.w d0,6(a1)
swap d0
move.w d0,2(a1)
swap d0
add.l #Plane_Size,d0
add.l #8,a1 ;siguiente puntero a plano
dbra d1,.bp
;Iniciamos nuestra copperlist
move.l #copperlist,COP1LCH+CUSTOMBASE
clr.w COPJMP1+CUSTOMBASE
;pintamos el grafico en screen
move.l #grafico,a0
move.l #screen,a1
;Siempre hay que esperar a que el blitter esté libre
;antes de volver a usarlo.
.waitblitter
btst #14-8,dmaconr+custombase
bne .waitblitter
;move.l #-1,BltAFwm+CustomBase
move.l #$09f00000,bltcon0+CustomBase ;Copia lo que hay en A en D
move.w #0,BltAMod+CustomBase ;modulo del gráfico
move.w #38,BltDMod+CustomBase ;modulo de la pantalla
move.l a0,BltApth+CustomBase ;direccion del grafico
move.l a1,BltDpth+CustomBase ;dirección de la pantalla
move.w #16<<6+1,BltSize+CustomBase ;tamaño del gráfico a pintar
;Pulsamos el boton del raton para salir
_Wait
btst #6,$bfe001
bne.s _Wait
rts
;-----------------------------------------------------------
; Finalizacion de la demo (respuesta a WB).
; Invocada tras la restauracion del sistema.
;-----------------------------------------------------------
_Exit:
rts
;-----------------------------------------------------------
; Invocado por la interrupcion vblank. Se invoca 50 veces
; por segundo.
;-----------------------------------------------------------
_Interrupt:
rts
_CopperInt:
rts
section datos,data_c
grafico:
dc.w %1111111111111111
dc.w %1100000000000011
dc.w %1010000000000101
dc.w %1001000000001001
dc.w %1000100000010001
dc.w %1000010000100001
dc.w %1000001001000001
dc.w %1000000110000001
dc.w %1000000110000001
dc.w %1000001001000001
dc.w %1000010000100001
dc.w %1000100000010001
dc.w %1001000000001001
dc.w %1010000000000101
dc.w %1100000000000011
dc.w %1111111111111111
;SECCIONES EN MEMORIA CHIP PARA BITPLANOS Y COPPERLIST
section bitplanes,data_c
screen:
ds.b 40*256 ;40 bytes por linea * 256 lineas
;incbin "data/16colores.raw"
section copperlist,data_c
;------------------------------------------------------------------
; MAIN COPPERLIST
;------------------------------------------------------------------
copperlist:
DC.W DiWStrt,$2C81,DiWStop,$2cC1,DdfStrt,$0038,DdfStop,$00D0
DC.W BplCon0,$1200,BplCon3,$0000,AgaFMode,$0000
DC.W BplCon1,$0000,BplCon2,$0000
DC.W Bpl1Mod,$0000,Bpl2Mod,$0000
;LOS COLORES DE NUESTRA IMAGEN CONVERTIDOS CON PICCON O ARTPRO
dc.w $0180,$0000,$0182,$0fff ;,$0184,$0FFF,$0186,$0888
;dc.w $0188,$0A20,$018A,$0D50,$018C,$0EB0,$018E,$0080
;dc.w $0190,$06B0,$0192,$0170,$0194,$05BC,$0196,$0367
;dc.w $0198,$007B,$019A,$0048,$019C,$0E88,$019E,$0B55
Planes:
DC.W Bpl1Pth,$0000,Bpl1Ptl,$0000 ;punteros del Bitplano 1
;DC.W Bpl2Pth,$0000,Bpl2Ptl,$0000 ;punteros del Bitplano 2
;DC.W Bpl3Pth,$0000,Bpl3Ptl,$0000 ;punteros del Bitplano 3
;DC.W Bpl4Pth,$0000,Bpl4Ptl,$0000 ;punteros del Bitplano 4
dc.w $ffff,$fffe ;Fin de la copperlist