mirror of
https://github.com/alpine9000/amiga_examples
synced 2025-12-08 14:59:01 +00:00
First attemp at scrolling text
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
include "includes.i"
|
||||
|
||||
xdef copperList
|
||||
xdef onscreen
|
||||
xdef offscreen
|
||||
xdef copperListBplPtr
|
||||
|
||||
byteMap:
|
||||
dc.l Entry
|
||||
dc.l endCode-byteMap
|
||||
|
||||
Entry:
|
||||
lea userstack,a7
|
||||
lea CUSTOM,a6
|
||||
|
||||
move #$7ff,DMACON(a6) ; disable all dma
|
||||
move #$7fff,INTENA(a6) ; disable all interrupts
|
||||
|
||||
jsr InstallPalette
|
||||
|
||||
lea Level3InterruptHandler,a3
|
||||
move.l a3,LVL3_INT_VECTOR
|
||||
|
||||
jsr SwitchBuffers
|
||||
|
||||
move.w #(INTF_SETCLR|INTF_VERTB|INTF_INTEN),INTENA(a6)
|
||||
move.w #(DMAF_BLITTER|DMAF_SETCLR!DMAF_MASTER),DMACON(a6)
|
||||
|
||||
move.l onscreen,a0
|
||||
move.l #BACKGROUND_COLOR,d0
|
||||
move.w #SCREEN_HEIGHT,d1
|
||||
move.w #0,d2 ; ypos
|
||||
jsr BlitFillColor
|
||||
|
||||
WaitBlitter
|
||||
jsr Init ; enable the playfield
|
||||
|
||||
lea text,a3
|
||||
MainLoop:
|
||||
jsr WaitVerticalBlank
|
||||
jsr InstallPalette
|
||||
|
||||
cmp.b #0,(a3)
|
||||
bne .c1
|
||||
lea text,a3
|
||||
.c1:
|
||||
move.b (a3)+,charbuffer
|
||||
move.l #BITPLANE_WIDTH-16,d0 ; xpos
|
||||
move.l #16,d1 ; ypos
|
||||
move.l onscreen,a0
|
||||
lea charbuffer,a1
|
||||
jsr DrawText8
|
||||
|
||||
;; bra MainLoop
|
||||
|
||||
;; kills a0,d2,d3,d5,d5
|
||||
;; a0 - bitplane
|
||||
;; d0 - color#
|
||||
;; d1 - height
|
||||
;; d2 - ypos
|
||||
|
||||
move.l #8-1,d0
|
||||
.loop:
|
||||
move.l onscreen,a0
|
||||
move.l #FONT_HEIGHT,d1
|
||||
move.l #16,d2
|
||||
jsr BlitScroll
|
||||
jsr WaitVerticalBlank
|
||||
dbra d0,.loop
|
||||
|
||||
bra MainLoop
|
||||
|
||||
charbuffer:
|
||||
dc.b 0
|
||||
dc.b 0
|
||||
|
||||
text:
|
||||
dc.b "ABCDEFEGHIJLMNOPQRSTUVWXYZabcdefghijlklmnopqrstuvwxyz"
|
||||
endText:
|
||||
dc.b 0
|
||||
align 4
|
||||
|
||||
Level3InterruptHandler:
|
||||
movem.l d0-a6,-(sp)
|
||||
lea CUSTOM,a6
|
||||
.checkVerticalBlank:
|
||||
move.w INTREQR(a6),d0
|
||||
and.w #INTF_VERTB,d0
|
||||
beq.s .checkCopper
|
||||
|
||||
.verticalBlank:
|
||||
move.w #INTF_VERTB,INTREQ(a6) ; clear interrupt bit
|
||||
.checkCopper:
|
||||
move.w INTREQR(a6),d0
|
||||
and.w #INTF_COPER,d0
|
||||
beq.s .interruptComplete
|
||||
.copperInterrupt:
|
||||
move.w #INTF_COPER,INTREQ(a6) ; clear interrupt bit
|
||||
|
||||
.interruptComplete:
|
||||
movem.l (sp)+,d0-a6
|
||||
rte
|
||||
|
||||
|
||||
copperList:
|
||||
copperListBplPtr:
|
||||
dc.w BPL1PTL,0
|
||||
dc.w BPL1PTH,0
|
||||
dc.w BPL2PTL,0
|
||||
dc.w BPL2PTH,0
|
||||
dc.w BPL3PTL,0
|
||||
dc.w BPL3PTH,0
|
||||
dc.w BPL4PTL,0
|
||||
dc.w BPL4PTH,0
|
||||
dc.w BPL5PTL,0
|
||||
dc.w BPL5PTH,0
|
||||
dc.w BPL6PTL,0
|
||||
dc.w BPL6PTH,0
|
||||
dc.l $fffffffe
|
||||
|
||||
InstallPalette:
|
||||
include "out/font8x8-palette.s"
|
||||
rts
|
||||
|
||||
GreyPalette:
|
||||
include "out/font8x8-grey.s"
|
||||
rts
|
||||
onscreen:
|
||||
dc.l bitplanes1
|
||||
offscreen:
|
||||
dc.l bitplanes2
|
||||
|
||||
section .bss
|
||||
bitplanes1:
|
||||
ds.b IMAGESIZE+(512)
|
||||
bitplanes2:
|
||||
ds.b IMAGESIZE+(512*2)
|
||||
startUserstack:
|
||||
ds.b $1000 ; size of stack
|
||||
userstack:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user