From 702e19c25d69c4ada62edcdf6d17a6fe6e7b6df3 Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Sun, 20 Oct 2019 11:53:10 -0500 Subject: [PATCH] atari7800: added presets --- presets/atari7800/generic8x16.s | 518 ++++++++++++++++++++++++++++++++ presets/atari7800/scroll.c | 177 +++++++++++ src/platform/atari7800.ts | 1 + 3 files changed, 696 insertions(+) create mode 100644 presets/atari7800/generic8x16.s create mode 100644 presets/atari7800/scroll.c diff --git a/presets/atari7800/generic8x16.s b/presets/atari7800/generic8x16.s new file mode 100644 index 00000000..380dd5ef --- /dev/null +++ b/presets/atari7800/generic8x16.s @@ -0,0 +1,518 @@ + +;;{w:8,h:16,bpp:2,count:128,brev:1,flip:1,remap:[0,8,9,10,11,1,2,3,4,5,6,7]};; +.segment "CHR1" + +.byte $aa,$aa,$55,$55,$cc,$cc,$99,$99 +.byte $a0,$a0,$50,$50,$f5,$f5,$fa,$fa +.byte $00,$00,$00,$00,$0a,$a8,$00,$00 +.byte $00,$00,$00,$00,$0a,$80,$0a,$00 +.byte $2a,$a8,$0a,$a8,$2a,$00,$0a,$a8 +.byte $0a,$a8,$2a,$2a,$2a,$2a,$0a,$a8 +.byte $2a,$a0,$0a,$a0,$2a,$00,$2a,$a0 +.byte $0a,$a0,$2a,$a8,$2a,$a8,$0a,$a0 +.byte $00,$00,$00,$00,$ff,$00,$ff,$00 +.byte $00,$ff,$00,$ff,$ff,$ff,$ff,$ff +.byte $c0,$00,$00,$03,$00,$00,$00,$0f +.byte $03,$00,$00,$03,$c0,$03,$0f,$f0 +.byte $55,$aa,$66,$9a,$ff,$ff,$ff,$ff +.byte $00,$03,$80,$00,$00,$00,$00,$00 +.byte $00,$55,$00,$00,$00,$05,$50,$00 +.byte $00,$00,$00,$00,$00,$55,$00,$00 +.byte $55,$55,$aa,$aa,$99,$99,$cc,$cc +.byte $50,$50,$a0,$a0,$fa,$fa,$f5,$f5 +.byte $00,$00,$00,$00,$00,$00,$0a,$a8 +.byte $00,$00,$00,$00,$0a,$00,$0a,$80 +.byte $0a,$a8,$2a,$a8,$0a,$a8,$2a,$00 +.byte $2a,$2a,$0a,$a8,$0a,$a8,$2a,$2a +.byte $0a,$a0,$2a,$a0,$2a,$a0,$2a,$00 +.byte $2a,$a8,$0a,$a0,$0a,$a0,$2a,$a8 +.byte $00,$00,$00,$00,$ff,$00,$ff,$00 +.byte $00,$ff,$00,$ff,$ff,$ff,$ff,$ff +.byte $00,$03,$c0,$00,$00,$0f,$00,$00 +.byte $00,$03,$03,$00,$0f,$f0,$c0,$03 +.byte $66,$9a,$55,$aa,$ff,$ff,$ff,$ff +.byte $80,$00,$00,$03,$00,$00,$00,$00 +.byte $00,$00,$00,$55,$50,$00,$00,$05 +.byte $00,$00,$00,$00,$00,$00,$00,$55 +.byte $aa,$aa,$55,$55,$33,$33,$66,$66 +.byte $0a,$0a,$05,$05,$5f,$5f,$af,$af +.byte $00,$00,$0a,$a0,$25,$98,$00,$00 +.byte $00,$00,$02,$80,$05,$80,$06,$80 +.byte $15,$5a,$25,$5a,$16,$00,$25,$5a +.byte $25,$5a,$16,$96,$16,$16,$25,$5a +.byte $15,$68,$25,$68,$16,$00,$15,$68 +.byte $25,$68,$16,$58,$16,$58,$25,$68 +.byte $00,$00,$00,$00,$ff,$00,$ff,$00 +.byte $00,$ff,$00,$ff,$ff,$ff,$ff,$ff +.byte $c0,$00,$00,$03,$00,$00,$00,$f0 +.byte $03,$00,$00,$03,$30,$0c,$30,$0c +.byte $7d,$96,$77,$7e,$e6,$59,$65,$97 +.byte $38,$07,$60,$1c,$00,$00,$00,$00 +.byte $00,$54,$54,$00,$10,$05,$40,$00 +.byte $10,$00,$2a,$50,$00,$55,$00,$00 +.byte $55,$55,$aa,$aa,$66,$66,$33,$33 +.byte $05,$05,$0a,$0a,$af,$af,$5f,$5f +.byte $0a,$a0,$00,$00,$00,$00,$25,$98 +.byte $02,$80,$00,$00,$06,$80,$05,$80 +.byte $25,$5a,$15,$5a,$25,$5a,$16,$00 +.byte $16,$96,$25,$5a,$25,$5a,$16,$16 +.byte $25,$68,$15,$68,$15,$68,$16,$00 +.byte $16,$58,$25,$68,$25,$68,$16,$58 +.byte $00,$00,$00,$00,$ff,$00,$ff,$00 +.byte $00,$ff,$00,$ff,$ff,$ff,$ff,$ff +.byte $00,$03,$c0,$00,$00,$f0,$00,$00 +.byte $00,$03,$03,$00,$30,$0c,$30,$0c +.byte $77,$7e,$7d,$96,$65,$97,$e6,$59 +.byte $60,$1c,$38,$07,$00,$00,$00,$00 +.byte $54,$00,$00,$54,$40,$00,$10,$05 +.byte $2a,$50,$10,$00,$00,$00,$00,$55 +.byte $aa,$aa,$55,$55,$cc,$cc,$99,$99 +.byte $a0,$a0,$50,$50,$f5,$f5,$fa,$fa +.byte $00,$00,$26,$68,$1a,$68,$00,$00 +.byte $0a,$a8,$01,$80,$05,$80,$05,$80 +.byte $16,$16,$16,$16,$16,$00,$16,$16 +.byte $16,$16,$16,$58,$16,$96,$16,$16 +.byte $16,$58,$16,$58,$16,$a0,$0a,$58 +.byte $16,$58,$15,$60,$16,$58,$16,$58 +.byte $00,$00,$00,$00,$ff,$00,$ff,$00 +.byte $00,$ff,$00,$ff,$ff,$ff,$ff,$ff +.byte $c0,$00,$00,$03,$00,$00,$0f,$00 +.byte $0c,$00,$00,$0c,$0c,$30,$c0,$03 +.byte $7d,$96,$f5,$5d,$e6,$59,$65,$97 +.byte $1d,$9f,$5a,$78,$00,$03,$c0,$00 +.byte $00,$a8,$50,$00,$16,$8a,$80,$00 +.byte $16,$a8,$aa,$50,$00,$96,$00,$00 +.byte $55,$55,$aa,$aa,$99,$99,$cc,$cc +.byte $50,$50,$a0,$a0,$fa,$fa,$f5,$f5 +.byte $26,$68,$00,$00,$00,$00,$1a,$68 +.byte $01,$80,$0a,$a8,$05,$80,$05,$80 +.byte $16,$16,$16,$16,$16,$16,$16,$00 +.byte $16,$58,$16,$16,$16,$16,$16,$96 +.byte $16,$58,$16,$58,$0a,$58,$16,$a0 +.byte $15,$60,$16,$58,$16,$58,$16,$58 +.byte $00,$00,$00,$00,$ff,$00,$ff,$00 +.byte $00,$ff,$00,$ff,$ff,$ff,$ff,$ff +.byte $00,$03,$c0,$00,$0f,$00,$00,$00 +.byte $00,$0c,$0c,$00,$c0,$03,$0c,$30 +.byte $f5,$5d,$7d,$96,$65,$97,$e6,$59 +.byte $5a,$78,$1d,$9f,$c0,$00,$00,$03 +.byte $50,$00,$00,$a8,$80,$00,$16,$8a +.byte $aa,$50,$16,$a8,$00,$00,$00,$96 +.byte $aa,$aa,$55,$55,$33,$33,$66,$66 +.byte $0a,$0a,$05,$05,$5f,$5f,$af,$af +.byte $00,$00,$15,$58,$19,$58,$00,$00 +.byte $05,$58,$29,$a8,$00,$00,$01,$a0 +.byte $16,$96,$16,$00,$16,$a0,$16,$96 +.byte $16,$16,$15,$60,$16,$56,$16,$16 +.byte $16,$58,$16,$a8,$15,$60,$25,$58 +.byte $00,$58,$15,$a0,$16,$58,$16,$58 +.byte $00,$00,$00,$00,$ff,$00,$ff,$00 +.byte $00,$ff,$00,$ff,$ff,$ff,$ff,$ff +.byte $c0,$00,$00,$03,$00,$00,$f0,$00 +.byte $0c,$00,$00,$0c,$03,$c0,$c0,$03 +.byte $55,$aa,$7d,$5e,$ea,$aa,$aa,$ab +.byte $0e,$aa,$aa,$90,$00,$0e,$b0,$00 +.byte $00,$fa,$a0,$00,$06,$aa,$a0,$00 +.byte $16,$aa,$aa,$50,$00,$aa,$95,$00 +.byte $55,$55,$aa,$aa,$66,$66,$33,$33 +.byte $05,$05,$0a,$0a,$af,$af,$5f,$5f +.byte $15,$58,$00,$00,$00,$00,$19,$58 +.byte $29,$a8,$05,$58,$01,$a0,$00,$00 +.byte $16,$00,$16,$96,$16,$96,$16,$a0 +.byte $15,$60,$16,$16,$16,$16,$16,$56 +.byte $16,$a8,$16,$58,$25,$58,$15,$60 +.byte $15,$a0,$00,$58,$16,$58,$16,$58 +.byte $00,$00,$00,$00,$ff,$00,$ff,$00 +.byte $00,$ff,$00,$ff,$ff,$ff,$ff,$ff +.byte $00,$03,$c0,$00,$f0,$00,$00,$00 +.byte $00,$0c,$0c,$00,$c0,$03,$03,$c0 +.byte $7d,$5e,$55,$aa,$aa,$ab,$ea,$aa +.byte $aa,$90,$0e,$aa,$b0,$00,$00,$0e +.byte $a0,$00,$00,$fa,$a0,$00,$06,$aa +.byte $aa,$50,$16,$aa,$95,$00,$00,$aa +.byte $aa,$aa,$55,$55,$cc,$cc,$99,$99 +.byte $a0,$a0,$50,$50,$f5,$f5,$fa,$fa +.byte $0a,$a0,$26,$68,$25,$a0,$28,$00 +.byte $09,$68,$15,$58,$00,$00,$01,$60 +.byte $15,$5a,$16,$00,$15,$60,$16,$56 +.byte $00,$16,$15,$a0,$15,$56,$16,$16 +.byte $16,$58,$16,$58,$16,$a8,$16,$58 +.byte $00,$58,$15,$68,$16,$58,$16,$58 +.byte $00,$ff,$ff,$ff,$00,$ff,$ff,$ff +.byte $00,$ff,$ff,$ff,$00,$ff,$ff,$ff +.byte $c0,$00,$00,$03,$00,$0f,$00,$00 +.byte $30,$00,$00,$30,$03,$c0,$c0,$03 +.byte $aa,$55,$fd,$56,$ff,$ff,$ff,$ff +.byte $06,$69,$a6,$a0,$00,$35,$ec,$00 +.byte $01,$fa,$ac,$00,$0f,$95,$50,$00 +.byte $16,$aa,$a0,$10,$00,$aa,$aa,$80 +.byte $55,$55,$aa,$aa,$99,$99,$cc,$cc +.byte $50,$50,$a0,$a0,$fa,$fa,$f5,$f5 +.byte $26,$68,$0a,$a0,$28,$00,$25,$a0 +.byte $15,$58,$09,$68,$01,$60,$00,$00 +.byte $16,$00,$15,$5a,$16,$56,$15,$60 +.byte $15,$a0,$00,$16,$16,$16,$15,$56 +.byte $16,$58,$16,$58,$16,$58,$16,$a8 +.byte $15,$68,$00,$58,$16,$58,$16,$58 +.byte $ff,$ff,$00,$ff,$ff,$ff,$00,$ff +.byte $ff,$ff,$00,$ff,$ff,$ff,$00,$ff +.byte $00,$03,$c0,$00,$00,$00,$00,$0f +.byte $00,$30,$30,$00,$c0,$03,$03,$c0 +.byte $fd,$56,$aa,$55,$ff,$ff,$ff,$ff +.byte $a6,$a0,$06,$69,$ec,$00,$00,$35 +.byte $ac,$00,$01,$fa,$50,$00,$0f,$95 +.byte $a0,$10,$16,$aa,$aa,$80,$00,$aa +.byte $aa,$aa,$55,$55,$33,$33,$66,$66 +.byte $0a,$0a,$05,$05,$5f,$5f,$af,$af +.byte $06,$60,$15,$58,$1a,$60,$1a,$00 +.byte $05,$58,$01,$80,$00,$00,$00,$68 +.byte $16,$16,$16,$2a,$16,$00,$16,$2a +.byte $00,$16,$15,$68,$15,$56,$16,$16 +.byte $15,$60,$05,$60,$16,$58,$05,$58 +.byte $00,$a8,$16,$58,$15,$60,$05,$60 +.byte $00,$ff,$ff,$ff,$00,$ff,$ff,$ff +.byte $00,$ff,$ff,$ff,$00,$ff,$ff,$ff +.byte $c0,$00,$00,$03,$00,$f0,$00,$00 +.byte $30,$00,$00,$30,$0c,$30,$c0,$03 +.byte $96,$7d,$df,$55,$e6,$59,$66,$ab +.byte $0a,$db,$6d,$a0,$00,$d5,$7b,$00 +.byte $01,$55,$5c,$00,$0f,$55,$57,$c0 +.byte $3c,$55,$55,$00,$01,$55,$5a,$80 +.byte $55,$55,$aa,$aa,$66,$66,$33,$33 +.byte $05,$05,$0a,$0a,$af,$af,$5f,$5f +.byte $15,$58,$06,$60,$1a,$00,$1a,$60 +.byte $01,$80,$05,$58,$00,$68,$00,$00 +.byte $16,$2a,$16,$16,$16,$2a,$16,$00 +.byte $15,$68,$00,$16,$16,$16,$15,$56 +.byte $05,$60,$15,$60,$05,$58,$16,$58 +.byte $16,$58,$00,$a8,$05,$60,$15,$60 +.byte $ff,$ff,$00,$ff,$ff,$ff,$00,$ff +.byte $ff,$ff,$00,$ff,$ff,$ff,$00,$ff +.byte $00,$03,$c0,$00,$00,$00,$00,$f0 +.byte $00,$30,$30,$00,$c0,$03,$0c,$30 +.byte $df,$55,$96,$7d,$66,$ab,$e6,$59 +.byte $6d,$a0,$0a,$db,$7b,$00,$00,$d5 +.byte $5c,$00,$01,$55,$57,$c0,$0f,$55 +.byte $55,$00,$3c,$55,$5a,$80,$01,$55 +.byte $aa,$aa,$55,$55,$cc,$cc,$99,$99 +.byte $a0,$a0,$50,$50,$f5,$f5,$fa,$fa +.byte $06,$60,$06,$60,$05,$80,$06,$00 +.byte $00,$00,$01,$80,$00,$00,$00,$58 +.byte $16,$96,$16,$96,$16,$aa,$16,$96 +.byte $00,$16,$16,$5a,$15,$96,$16,$96 +.byte $16,$00,$00,$00,$05,$60,$00,$00 +.byte $00,$58,$16,$00,$00,$00,$00,$00 +.byte $00,$ff,$ff,$ff,$00,$ff,$ff,$ff +.byte $00,$ff,$ff,$ff,$00,$ff,$ff,$ff +.byte $c0,$00,$00,$03,$0f,$00,$00,$00 +.byte $c0,$00,$00,$c0,$30,$0c,$30,$0c +.byte $96,$7d,$d7,$d6,$e6,$59,$67,$fb +.byte $26,$aa,$aa,$98,$03,$55,$5e,$c0 +.byte $01,$55,$50,$00,$01,$55,$57,$c0 +.byte $35,$55,$55,$40,$05,$55,$55,$40 +.byte $55,$55,$aa,$aa,$99,$99,$cc,$cc +.byte $50,$50,$a0,$a0,$fa,$fa,$f5,$f5 +.byte $06,$60,$06,$60,$06,$00,$05,$80 +.byte $01,$80,$00,$00,$00,$58,$00,$00 +.byte $16,$96,$16,$96,$16,$96,$16,$aa +.byte $16,$5a,$00,$16,$16,$96,$15,$96 +.byte $00,$00,$16,$00,$00,$00,$05,$60 +.byte $16,$00,$00,$58,$00,$00,$00,$00 +.byte $ff,$ff,$00,$ff,$ff,$ff,$00,$ff +.byte $ff,$ff,$00,$ff,$ff,$ff,$00,$ff +.byte $00,$03,$c0,$00,$00,$00,$0f,$00 +.byte $00,$c0,$c0,$00,$30,$0c,$30,$0c +.byte $d7,$d6,$96,$7d,$67,$fb,$e6,$59 +.byte $aa,$98,$26,$aa,$5e,$c0,$03,$55 +.byte $50,$00,$01,$55,$57,$c0,$01,$55 +.byte $55,$40,$35,$55,$55,$40,$05,$55 +.byte $aa,$aa,$55,$55,$33,$33,$66,$66 +.byte $0a,$0a,$05,$05,$5f,$5f,$af,$af +.byte $06,$60,$00,$00,$00,$00,$06,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$18 +.byte $15,$58,$05,$58,$15,$56,$05,$58 +.byte $00,$16,$16,$16,$16,$16,$05,$58 +.byte $16,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$16,$00,$00,$00,$00,$00 +.byte $00,$ff,$ff,$ff,$00,$ff,$ff,$ff +.byte $00,$ff,$ff,$ff,$00,$ff,$ff,$ff +.byte $c0,$00,$00,$03,$f0,$00,$00,$00 +.byte $c0,$00,$00,$c0,$c0,$03,$0f,$f0 +.byte $aa,$55,$ff,$dd,$e6,$59,$67,$bb +.byte $96,$6a,$a6,$96,$0d,$55,$57,$b0 +.byte $00,$55,$50,$00,$02,$bf,$f0,$00 +.byte $05,$55,$51,$f0,$15,$55,$55,$40 +.byte $55,$55,$aa,$aa,$66,$66,$33,$33 +.byte $05,$05,$0a,$0a,$af,$af,$5f,$5f +.byte $00,$00,$06,$60,$06,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$18,$00,$00 +.byte $05,$58,$15,$58,$05,$58,$15,$56 +.byte $16,$16,$00,$16,$05,$58,$16,$16 +.byte $00,$00,$16,$00,$00,$00,$00,$00 +.byte $16,$00,$00,$00,$00,$00,$00,$00 +.byte $ff,$ff,$00,$ff,$ff,$ff,$00,$ff +.byte $ff,$ff,$00,$ff,$ff,$ff,$00,$ff +.byte $00,$03,$c0,$00,$00,$00,$f0,$00 +.byte $00,$c0,$c0,$00,$0f,$f0,$c0,$03 +.byte $ff,$dd,$aa,$55,$67,$bb,$e6,$59 +.byte $a6,$96,$96,$6a,$57,$b0,$0d,$55 +.byte $50,$00,$00,$55,$f0,$00,$02,$bf +.byte $51,$f0,$05,$55,$55,$40,$15,$55 +.byte $00,$00,$ff,$ff,$88,$88,$44,$44 +.byte $dd,$dd,$ee,$ee,$f0,$f0,$a5,$a5 +.byte $00,$00,$0a,$80,$02,$80,$00,$00 +.byte $00,$a8,$2a,$00,$2a,$00,$00,$00 +.byte $0a,$a8,$2a,$2a,$2a,$a0,$2a,$aa +.byte $2a,$2a,$2a,$aa,$2a,$aa,$a8,$2a +.byte $00,$00,$0a,$a8,$0a,$a8,$0a,$a8 +.byte $2a,$a8,$02,$a0,$02,$a0,$2a,$2a +.byte $00,$00,$00,$00,$ff,$00,$ff,$00 +.byte $00,$ff,$00,$ff,$ff,$ff,$ff,$ff +.byte $00,$00,$ff,$ff,$f0,$00,$00,$00 +.byte $c0,$00,$00,$c0,$c0,$00,$00,$03 +.byte $aa,$59,$aa,$aa,$e6,$59,$65,$97 +.byte $fe,$da,$ad,$bf,$35,$55,$55,$ec +.byte $02,$bf,$f0,$00,$00,$bf,$fc,$00 +.byte $01,$7f,$f0,$f0,$16,$aa,$aa,$90 +.byte $ff,$ff,$00,$00,$44,$44,$88,$88 +.byte $ee,$ee,$dd,$dd,$a5,$a5,$f0,$f0 +.byte $0a,$80,$00,$00,$00,$00,$02,$80 +.byte $2a,$00,$00,$a8,$00,$00,$2a,$00 +.byte $2a,$2a,$0a,$a8,$2a,$aa,$2a,$a0 +.byte $2a,$aa,$2a,$2a,$a8,$2a,$2a,$aa +.byte $0a,$a8,$00,$00,$0a,$a8,$0a,$a8 +.byte $02,$a0,$2a,$a8,$2a,$2a,$02,$a0 +.byte $00,$00,$00,$00,$ff,$00,$ff,$00 +.byte $00,$ff,$00,$ff,$ff,$ff,$ff,$ff +.byte $ff,$ff,$00,$00,$00,$00,$f0,$00 +.byte $00,$c0,$c0,$00,$00,$03,$c0,$00 +.byte $aa,$aa,$aa,$59,$65,$97,$e6,$59 +.byte $ad,$bf,$fe,$da,$55,$ec,$35,$55 +.byte $f0,$00,$02,$bf,$fc,$00,$00,$bf +.byte $f0,$f0,$01,$7f,$aa,$90,$16,$aa +.byte $00,$00,$ff,$ff,$22,$22,$11,$11 +.byte $77,$77,$bb,$bb,$0f,$0f,$5a,$5a +.byte $00,$00,$05,$80,$29,$a8,$28,$a8 +.byte $02,$58,$16,$80,$16,$80,$00,$00 +.byte $25,$58,$16,$16,$15,$68,$15,$56 +.byte $16,$16,$15,$56,$15,$56,$58,$16 +.byte $00,$00,$25,$98,$25,$58,$25,$58 +.byte $16,$58,$01,$60,$01,$60,$16,$16 +.byte $00,$00,$00,$00,$ff,$00,$ff,$00 +.byte $00,$ff,$00,$ff,$ff,$ff,$ff,$ff +.byte $00,$00,$00,$00,$0f,$00,$00,$00 +.byte $c0,$00,$00,$c0,$30,$00,$00,$0c +.byte $5a,$d5,$99,$aa,$ea,$aa,$aa,$ab +.byte $1e,$aa,$aa,$b4,$35,$55,$55,$ec +.byte $00,$bf,$fc,$00,$0a,$ff,$ef,$00 +.byte $00,$bf,$fc,$00,$0f,$aa,$aa,$50 +.byte $ff,$ff,$00,$00,$11,$11,$22,$22 +.byte $bb,$bb,$77,$77,$5a,$5a,$0f,$0f +.byte $05,$80,$00,$00,$28,$a8,$29,$a8 +.byte $16,$80,$02,$58,$00,$00,$16,$80 +.byte $16,$16,$25,$58,$15,$56,$15,$68 +.byte $15,$56,$16,$16,$58,$16,$15,$56 +.byte $25,$98,$00,$00,$25,$58,$25,$58 +.byte $01,$60,$16,$58,$16,$16,$01,$60 +.byte $00,$00,$00,$00,$ff,$00,$ff,$00 +.byte $00,$ff,$00,$ff,$ff,$ff,$ff,$ff +.byte $00,$00,$00,$00,$00,$00,$0f,$00 +.byte $00,$c0,$c0,$00,$00,$0c,$30,$00 +.byte $99,$aa,$5a,$d5,$aa,$ab,$ea,$aa +.byte $aa,$b4,$1e,$aa,$55,$ec,$35,$55 +.byte $fc,$00,$00,$bf,$ef,$00,$0a,$ff +.byte $fc,$00,$00,$bf,$aa,$50,$0f,$aa +.byte $00,$00,$ff,$ff,$88,$88,$44,$44 +.byte $dd,$dd,$ee,$ee,$f0,$f0,$a5,$a5 +.byte $00,$00,$0a,$80,$15,$58,$1a,$58 +.byte $09,$60,$05,$a0,$05,$80,$00,$00 +.byte $1a,$a8,$16,$16,$16,$5a,$16,$00 +.byte $16,$16,$01,$60,$16,$00,$58,$16 +.byte $00,$00,$1a,$58,$16,$58,$16,$a8 +.byte $16,$58,$01,$60,$01,$60,$16,$96 +.byte $00,$00,$00,$00,$ff,$00,$ff,$00 +.byte $00,$ff,$00,$ff,$ff,$ff,$ff,$ff +.byte $00,$00,$00,$00,$00,$f0,$00,$00 +.byte $30,$00,$00,$30,$0c,$00,$00,$30 +.byte $56,$f7,$95,$5a,$ff,$ff,$ff,$ff +.byte $06,$69,$a6,$90,$37,$55,$5d,$6c +.byte $0a,$ff,$ef,$00,$02,$fb,$ec,$00 +.byte $0a,$ff,$ef,$00,$0a,$aa,$aa,$a0 +.byte $ff,$ff,$00,$00,$44,$44,$88,$88 +.byte $ee,$ee,$dd,$dd,$a5,$a5,$f0,$f0 +.byte $0a,$80,$00,$00,$1a,$58,$15,$58 +.byte $05,$a0,$09,$60,$00,$00,$05,$80 +.byte $16,$16,$1a,$a8,$16,$00,$16,$5a +.byte $01,$60,$16,$16,$58,$16,$16,$00 +.byte $1a,$58,$00,$00,$16,$a8,$16,$58 +.byte $01,$60,$16,$58,$16,$96,$01,$60 +.byte $00,$00,$00,$00,$ff,$00,$ff,$00 +.byte $00,$ff,$00,$ff,$ff,$ff,$ff,$ff +.byte $00,$00,$00,$00,$00,$00,$00,$f0 +.byte $00,$30,$30,$00,$00,$30,$0c,$00 +.byte $95,$5a,$56,$f7,$ff,$ff,$ff,$ff +.byte $a6,$90,$06,$69,$5d,$6c,$37,$55 +.byte $ef,$00,$0a,$ff,$ec,$00,$02,$fb +.byte $ef,$00,$0a,$ff,$aa,$a0,$0a,$aa +.byte $00,$00,$ff,$ff,$22,$22,$11,$11 +.byte $77,$77,$bb,$bb,$0f,$0f,$5a,$5a +.byte $00,$00,$05,$80,$09,$98,$06,$98 +.byte $05,$80,$01,$60,$05,$80,$0a,$a8 +.byte $19,$58,$16,$96,$16,$16,$16,$aa +.byte $16,$96,$01,$60,$16,$00,$5a,$96 +.byte $00,$00,$05,$58,$16,$58,$15,$58 +.byte $16,$58,$01,$60,$01,$60,$19,$96 +.byte $00,$00,$00,$00,$ff,$00,$ff,$00 +.byte $00,$ff,$00,$ff,$ff,$ff,$ff,$ff +.byte $00,$00,$00,$00,$00,$0f,$00,$00 +.byte $30,$00,$00,$30,$03,$00,$00,$c0 +.byte $aa,$aa,$95,$9a,$e6,$59,$65,$97 +.byte $06,$db,$6d,$a0,$37,$d7,$df,$6c +.byte $02,$fb,$ec,$00,$02,$aa,$aa,$00 +.byte $02,$fb,$ec,$00,$02,$aa,$aa,$90 +.byte $ff,$ff,$00,$00,$11,$11,$22,$22 +.byte $bb,$bb,$77,$77,$5a,$5a,$0f,$0f +.byte $05,$80,$00,$00,$06,$98,$09,$98 +.byte $01,$60,$05,$80,$0a,$a8,$05,$80 +.byte $16,$96,$19,$58,$16,$aa,$16,$16 +.byte $01,$60,$16,$96,$5a,$96,$16,$00 +.byte $05,$58,$00,$00,$15,$58,$16,$58 +.byte $01,$60,$16,$58,$19,$96,$01,$60 +.byte $00,$00,$00,$00,$ff,$00,$ff,$00 +.byte $00,$ff,$00,$ff,$ff,$ff,$ff,$ff +.byte $00,$00,$00,$00,$00,$00,$00,$0f +.byte $00,$30,$30,$00,$00,$c0,$03,$00 +.byte $95,$9a,$aa,$aa,$65,$97,$e6,$59 +.byte $6d,$a0,$06,$db,$df,$6c,$37,$d7 +.byte $ec,$00,$02,$fb,$aa,$00,$02,$aa +.byte $ec,$00,$02,$fb,$aa,$90,$02,$aa +.byte $00,$00,$ff,$ff,$88,$88,$44,$44 +.byte $dd,$dd,$ee,$ee,$f0,$f0,$a5,$a5 +.byte $00,$00,$05,$80,$05,$58,$29,$a0 +.byte $05,$80,$01,$60,$00,$00,$05,$58 +.byte $19,$98,$15,$56,$16,$16,$15,$56 +.byte $15,$56,$01,$60,$16,$00,$59,$96 +.byte $02,$80,$0a,$58,$16,$58,$16,$98 +.byte $16,$58,$01,$60,$01,$60,$15,$56 +.byte $00,$00,$ff,$00,$00,$00,$ff,$00 +.byte $00,$00,$ff,$00,$00,$00,$ff,$00 +.byte $00,$00,$00,$00,$00,$00,$f0,$00 +.byte $0c,$00,$00,$0c,$00,$c0,$03,$00 +.byte $59,$aa,$95,$56,$36,$59,$65,$9c +.byte $0e,$aa,$aa,$90,$0d,$5c,$35,$b0 +.byte $02,$aa,$aa,$00,$00,$aa,$aa,$80 +.byte $02,$aa,$aa,$00,$02,$aa,$aa,$90 +.byte $ff,$ff,$00,$00,$44,$44,$88,$88 +.byte $ee,$ee,$dd,$dd,$a5,$a5,$f0,$f0 +.byte $05,$80,$00,$00,$29,$a0,$05,$58 +.byte $01,$60,$05,$80,$05,$58,$00,$00 +.byte $15,$56,$19,$98,$15,$56,$16,$16 +.byte $01,$60,$15,$56,$59,$96,$16,$00 +.byte $0a,$58,$02,$80,$16,$98,$16,$58 +.byte $01,$60,$16,$58,$15,$56,$01,$60 +.byte $ff,$00,$00,$00,$ff,$00,$00,$00 +.byte $ff,$00,$00,$00,$ff,$00,$00,$00 +.byte $00,$00,$00,$00,$f0,$00,$00,$00 +.byte $00,$0c,$0c,$00,$03,$00,$00,$c0 +.byte $95,$56,$59,$aa,$65,$9c,$36,$59 +.byte $aa,$90,$0e,$aa,$35,$b0,$0d,$5c +.byte $aa,$00,$02,$aa,$aa,$80,$00,$aa +.byte $aa,$00,$02,$aa,$aa,$90,$02,$aa +.byte $00,$00,$ff,$ff,$22,$22,$11,$11 +.byte $77,$77,$bb,$bb,$0f,$0f,$5a,$5a +.byte $00,$00,$05,$a0,$06,$6a,$1a,$68 +.byte $05,$a0,$09,$60,$00,$00,$00,$00 +.byte $19,$58,$16,$16,$16,$96,$16,$00 +.byte $16,$16,$01,$60,$16,$00,$59,$96 +.byte $09,$80,$05,$60,$05,$58,$05,$60 +.byte $15,$60,$02,$a0,$01,$60,$16,$58 +.byte $00,$00,$ff,$00,$00,$00,$ff,$00 +.byte $00,$00,$ff,$00,$00,$00,$ff,$00 +.byte $00,$00,$00,$00,$00,$00,$0f,$00 +.byte $0c,$00,$00,$0c,$00,$30,$0c,$00 +.byte $d5,$5a,$9d,$5a,$3a,$59,$65,$ac +.byte $2f,$5f,$59,$f8,$03,$f0,$0f,$c0 +.byte $00,$aa,$aa,$80,$02,$2a,$a0,$80 +.byte $00,$aa,$aa,$80,$00,$aa,$aa,$c0 +.byte $ff,$ff,$00,$00,$11,$11,$22,$22 +.byte $bb,$bb,$77,$77,$5a,$5a,$0f,$0f +.byte $05,$a0,$00,$00,$1a,$68,$06,$6a +.byte $09,$60,$05,$a0,$00,$00,$00,$00 +.byte $16,$16,$19,$58,$16,$00,$16,$96 +.byte $01,$60,$16,$16,$59,$96,$16,$00 +.byte $05,$60,$09,$80,$05,$60,$05,$58 +.byte $02,$a0,$15,$60,$16,$58,$01,$60 +.byte $ff,$00,$00,$00,$ff,$00,$00,$00 +.byte $ff,$00,$00,$00,$ff,$00,$00,$00 +.byte $00,$00,$00,$00,$0f,$00,$00,$00 +.byte $00,$0c,$0c,$00,$0c,$00,$00,$30 +.byte $9d,$5a,$d5,$5a,$65,$ac,$3a,$59 +.byte $59,$f8,$2f,$5f,$0f,$c0,$03,$f0 +.byte $aa,$80,$00,$aa,$a0,$80,$02,$2a +.byte $aa,$80,$00,$aa,$aa,$c0,$00,$aa +.byte $00,$00,$ff,$ff,$88,$88,$44,$44 +.byte $dd,$dd,$ee,$ee,$f0,$f0,$a5,$a5 +.byte $00,$00,$05,$60,$05,$56,$16,$18 +.byte $01,$68,$25,$80,$00,$00,$00,$00 +.byte $1a,$98,$16,$96,$16,$58,$16,$aa +.byte $16,$16,$29,$6a,$16,$00,$55,$56 +.byte $06,$00,$00,$00,$00,$58,$00,$00 +.byte $16,$00,$01,$60,$09,$60,$00,$00 +.byte $00,$00,$ff,$00,$00,$00,$ff,$00 +.byte $00,$00,$ff,$00,$00,$00,$ff,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$f0 +.byte $03,$00,$00,$03,$00,$0c,$30,$00 +.byte $f7,$56,$95,$56,$0f,$aa,$aa,$f0 +.byte $34,$07,$60,$1c,$00,$00,$00,$00 +.byte $02,$2a,$a0,$80,$00,$00,$00,$00 +.byte $02,$2a,$a0,$80,$02,$2a,$ab,$c0 +.byte $ff,$ff,$00,$00,$44,$44,$88,$88 +.byte $ee,$ee,$dd,$dd,$a5,$a5,$f0,$f0 +.byte $05,$60,$00,$00,$16,$18,$05,$56 +.byte $25,$80,$01,$68,$00,$00,$00,$00 +.byte $16,$96,$1a,$98,$16,$aa,$16,$58 +.byte $29,$6a,$16,$16,$55,$56,$16,$00 +.byte $00,$00,$06,$00,$00,$00,$00,$58 +.byte $01,$60,$16,$00,$00,$00,$09,$60 +.byte $ff,$00,$00,$00,$ff,$00,$00,$00 +.byte $ff,$00,$00,$00,$ff,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$f0,$00,$00 +.byte $00,$03,$03,$00,$30,$00,$00,$0c +.byte $95,$56,$f7,$56,$aa,$f0,$0f,$aa +.byte $60,$1c,$34,$07,$00,$00,$00,$00 +.byte $a0,$80,$02,$2a,$00,$00,$00,$00 +.byte $a0,$80,$02,$2a,$ab,$c0,$02,$2a +.byte $00,$00,$ff,$ff,$22,$22,$11,$11 +.byte $77,$77,$bb,$bb,$0f,$0f,$5a,$5a +.byte $00,$00,$05,$60,$00,$60,$00,$00 +.byte $00,$58,$16,$00,$00,$00,$00,$00 +.byte $05,$60,$05,$58,$15,$60,$15,$56 +.byte $16,$16,$15,$56,$16,$00,$56,$58 +.byte $06,$00,$00,$00,$00,$58,$00,$00 +.byte $16,$00,$00,$00,$05,$60,$00,$00 +.byte $00,$00,$ff,$00,$00,$00,$ff,$00 +.byte $00,$00,$ff,$00,$00,$00,$ff,$00 +.byte $ff,$ff,$00,$00,$00,$00,$00,$0f +.byte $03,$00,$00,$03,$00,$03,$c0,$00 +.byte $aa,$aa,$aa,$aa,$00,$ff,$ff,$00 +.byte $00,$03,$80,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $ff,$ff,$00,$00,$11,$11,$22,$22 +.byte $bb,$bb,$77,$77,$5a,$5a,$0f,$0f +.byte $05,$60,$00,$00,$00,$00,$00,$60 +.byte $16,$00,$00,$58,$00,$00,$00,$00 +.byte $05,$58,$05,$60,$15,$56,$15,$60 +.byte $15,$56,$16,$16,$56,$58,$16,$00 +.byte $00,$00,$06,$00,$00,$00,$00,$58 +.byte $00,$00,$16,$00,$00,$00,$05,$60 +.byte $ff,$00,$00,$00,$ff,$00,$00,$00 +.byte $ff,$00,$00,$00,$ff,$00,$00,$00 +.byte $00,$00,$ff,$ff,$00,$0f,$00,$00 +.byte $00,$03,$03,$00,$c0,$00,$00,$03 +.byte $aa,$aa,$aa,$aa,$ff,$00,$00,$ff +.byte $80,$00,$00,$03,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 + +;; 4096 bytes, 4 colors diff --git a/presets/atari7800/scroll.c b/presets/atari7800/scroll.c new file mode 100644 index 00000000..db87d487 --- /dev/null +++ b/presets/atari7800/scroll.c @@ -0,0 +1,177 @@ + +#include "atari7800.h" + +#include + +//#link "chr_font.s" + +//#link "generic8x16.s" + +#define DLL_FLAGS DLL_H16 +#define SLOTHEIGHT 16 +#define SLOTSIZE 32 +#define DOUBLEBUFFER +#define DLSAVE + +#ifdef DOUBLEBUFFER +#define NUMSLOTS 32 +byte slot0 = 0; +#else +#define NUMSLOTS 16 +const byte slot0 = 0; +#endif + + +DLLEntry DLL[NUMSLOTS]; + +byte DL[NUMSLOTS][SLOTSIZE]; +byte DL_len[NUMSLOTS]; + +#ifdef DLSAVE +byte DL_save[NUMSLOTS]; +#endif + +void dll_set_addr(const void* dpp) { + MARIA.DPPH = (word)dpp>>8; + MARIA.DPPL = (byte)dpp; +} + +void dll_clear() { + byte i; + for (i=slot0; idata_lo = (byte)addr; + dl->data_hi = (byte)(addr>>8) + (y & 15); + dl->xpos = x; + dl->width_pal = wpal; + if (y & 15) { + DL4Entry* dl2 = (DL4Entry*) dll_alloc(slot+1, 4); + *dl2 = *dl; + dl2->data_hi -= SLOTHEIGHT; + } +} + +void dll_add_string(const char* str, byte x, byte y, byte wpal) { + byte slot = (y / SLOTHEIGHT) | slot0; + register DL5Entry* dl = (DL5Entry*) dll_alloc(slot, 5); + dl->data_lo = (byte)str; + dl->data_hi = (word)str>>8; + dl->flags = DL5_INDIRECT; + dl->width_pal = wpal; + dl->xpos = x; +} + +void dll_setup() { + byte i; + byte* dlptr = &DL[0][0]; + register DLLEntry *dll = &DLL[0]; + for (i=0; ioffset_flags = DLL_FLAGS | (SLOTHEIGHT-1); + dll->dl_hi = (word)dlptr>>8; + dll->dl_lo = (byte)dlptr; + dlptr += sizeof(DL[0]); + dll++; + } + dll_clear(); +#ifdef DOUBLEBUFFER + dll_swap(); + dll_clear(); + dll_swap(); +#endif +#ifdef DLSAVE + memset(DL_save, 0, sizeof(DL_save)); +#endif +} + +char* hello = "\2\4\6\0\220\222\102"; + +void main() { + byte i; + byte y = 0; + + dll_setup(); + + // activate DMA + MARIA.CHARBASE = 0x80; + MARIA.P0C1 = 0x8f; + MARIA.P0C2 = 0x4f; + MARIA.P0C3 = 0x1f; + MARIA.P1C1 = 0x34; + MARIA.P1C2 = 0x28; + MARIA.P1C3 = 0x1f; + MARIA.BACKGRND = 0; + dll_set_addr(DLL); + MARIA.CTRL = CTRL_DMA_ON | CTRL_DBLBYTE | CTRL_160AB; + + dll_clear(); + dll_add_string(hello, y+32, 32, DL_WP(8,0)); + for (i=0; i<8; i++) { + slot0 = 0; + dll_add_sprite(0xa068, i*4, i*33, DL_WP(4,1)); + dll_add_sprite(0xa06c, i*8, i*25, DL_WP(4,1)); + slot0 = 16; + dll_add_sprite(0xa068, i*4, i*32, DL_WP(4,1)); + dll_add_sprite(0xa06c, 128-i*8, i*24, DL_WP(4,1)); + } + dll_save(); + + while (1) { + while ((MARIA.MSTAT & MSTAT_VBLANK) == 0) ; + dll_set_scroll(y); + dll_restore(); + dll_add_sprite(0xa06c, y, y, DL_WP(4,1)); + while ((MARIA.MSTAT & MSTAT_VBLANK) != 0) ; + y++; + } +} diff --git a/src/platform/atari7800.ts b/src/platform/atari7800.ts index eb50c09e..aebaa750 100644 --- a/src/platform/atari7800.ts +++ b/src/platform/atari7800.ts @@ -6,6 +6,7 @@ import { PLATFORMS } from "../emu"; var Atari7800_PRESETS = [ {id:'sprites.dasm', name:'Sprites (ASM)'}, {id:'wsync.c', name:'WSYNC'}, + {id:'scroll.c', name:'Scrolling'}, ]; class Atari7800Platform extends Base6502MachinePlatform implements Platform {