171 lines
3.7 KiB
ArmAsm
171 lines
3.7 KiB
ArmAsm
; Stable minimal game - just display and wait for mouse
|
|
MACHINE 68000
|
|
|
|
INCDIR "c:/Users/capitano/Documents/giochino/"
|
|
INCLUDE "custom.i"
|
|
|
|
ORG $20000
|
|
|
|
START:
|
|
lea CUSTOM,a6
|
|
|
|
; Disable interrupts/DMA
|
|
move.w #$7FFF,INTENA(a6)
|
|
move.w #$7FFF,DMACON(a6)
|
|
|
|
; Setup display
|
|
move.w #$1200,BPLCON0(a6)
|
|
move.w #0,BPLCON1(a6)
|
|
move.w #0,BPLCON2(a6)
|
|
move.w #0,BPL1MOD(a6)
|
|
|
|
move.w #$2c81,DIWSTRT(a6)
|
|
move.w #$2cc1,DIWSTOP(a6)
|
|
move.w #$0038,DDFSTRT(a6)
|
|
move.w #$00d0,DDFSTOP(a6)
|
|
|
|
; Set bitplane
|
|
lea Screen(pc),a0
|
|
move.l a0,d0
|
|
move.w d0,BPL1PTL(a6)
|
|
swap d0
|
|
move.w d0,BPL1PTH(a6)
|
|
|
|
; Colors
|
|
move.w #$0000,COLOR00(a6)
|
|
move.w #$0FF0,COLOR01(a6)
|
|
|
|
; Simple copper
|
|
lea Copper(pc),a0
|
|
move.l a0,d0
|
|
move.w d0,COP1LCL(a6)
|
|
swap d0
|
|
move.w d0,COP1LCH(a6)
|
|
move.w #0,COPJMP1(a6)
|
|
|
|
; Enable DMA: Bitplane + Copper
|
|
move.w #$8380,DMACON(a6) ; Set DMAEN + COPEN + BPLEN
|
|
|
|
; Clear screen
|
|
lea Screen(pc),a0
|
|
move.w #2559,d0
|
|
.cls:
|
|
move.l #0,(a0)+
|
|
dbf d0,.cls
|
|
|
|
; Draw text
|
|
lea Msg1(pc),a0
|
|
moveq #2,d0
|
|
moveq #10,d1
|
|
bsr DrawText
|
|
|
|
lea Msg2(pc),a0
|
|
moveq #2,d0
|
|
moveq #12,d1
|
|
bsr DrawText
|
|
|
|
lea Msg3(pc),a0
|
|
moveq #2,d0
|
|
moveq #14,d1
|
|
bsr DrawText
|
|
|
|
LOOP:
|
|
; Simple VBlank wait
|
|
move.l CUSTOM+$004,d0
|
|
and.l #$1ff00,d0
|
|
cmp.l #$13000,d0
|
|
bne.s LOOP
|
|
|
|
; Check mouse
|
|
btst #6,CIAA
|
|
bne.s LOOP
|
|
|
|
; Reboot
|
|
lea $1000000,a0
|
|
jmp (a0)
|
|
|
|
; DrawText: a0=string, d0=X, d1=Y
|
|
DrawText:
|
|
movem.l d0-d4/a0-a2,-(sp)
|
|
|
|
lea Screen(pc),a1
|
|
mulu #320,d1
|
|
add.l d1,a1
|
|
add.w d0,a1
|
|
|
|
.loop:
|
|
moveq #0,d2
|
|
move.b (a0)+,d2
|
|
beq.s .done
|
|
|
|
cmp.b #32,d2
|
|
blt.s .loop
|
|
cmp.b #90,d2
|
|
bgt.s .loop
|
|
|
|
sub.b #32,d2
|
|
lea Font(pc),a2
|
|
lsl.w #3,d2
|
|
add.w d2,a2
|
|
|
|
moveq #7,d3
|
|
move.w a1,d4
|
|
.char:
|
|
move.b (a2)+,(a1)
|
|
add.w #40,a1
|
|
dbf d3,.char
|
|
|
|
move.w d4,a1
|
|
addq.w #1,a1
|
|
bra.s .loop
|
|
|
|
.done:
|
|
movem.l (sp)+,d0-d4/a0-a2
|
|
rts
|
|
|
|
Copper:
|
|
DC.W $0180,$0642
|
|
DC.W $5007,$FFFE
|
|
DC.W $0180,$0000
|
|
DC.W $D007,$FFFE
|
|
DC.W $0180,$0642
|
|
DC.W $FFFF,$FFFE
|
|
|
|
Msg1: dc.b "OFFICE EMAIL GAME",0
|
|
Msg2: dc.b "BOSS: URGENT Q3 REPORT",0
|
|
Msg3: dc.b "CLICK MOUSE TO EXIT",0
|
|
|
|
CNOP 0,2
|
|
Font:
|
|
dc.b $00,$00,$00,$00,$00,$00,$00,$00 ; Space
|
|
dcb.b 8*15,0
|
|
dc.b $18,$24,$42,$42,$7E,$42,$42,$00 ; A
|
|
dc.b $7C,$42,$42,$7C,$42,$42,$7C,$00 ; B
|
|
dc.b $3C,$42,$40,$40,$40,$42,$3C,$00 ; C
|
|
dc.b $78,$44,$42,$42,$42,$44,$78,$00 ; D
|
|
dc.b $7E,$40,$40,$78,$40,$40,$7E,$00 ; E
|
|
dc.b $7E,$40,$40,$78,$40,$40,$40,$00 ; F
|
|
dc.b $3C,$42,$40,$4E,$42,$42,$3C,$00 ; G
|
|
dc.b $42,$42,$42,$7E,$42,$42,$42,$00 ; H
|
|
dc.b $3C,$18,$18,$18,$18,$18,$3C,$00 ; I
|
|
dc.b $06,$06,$06,$06,$06,$46,$3C,$00 ; J
|
|
dc.b $44,$48,$50,$60,$50,$48,$44,$00 ; K
|
|
dc.b $40,$40,$40,$40,$40,$40,$7E,$00 ; L
|
|
dc.b $42,$66,$5A,$42,$42,$42,$42,$00 ; M
|
|
dc.b $42,$62,$52,$4A,$46,$42,$42,$00 ; N
|
|
dc.b $3C,$42,$42,$42,$42,$42,$3C,$00 ; O
|
|
dc.b $7C,$42,$42,$7C,$40,$40,$40,$00 ; P
|
|
dc.b $3C,$42,$42,$42,$52,$4A,$3C,$00 ; Q
|
|
dc.b $7C,$42,$42,$7C,$48,$44,$42,$00 ; R
|
|
dc.b $3C,$40,$40,$3C,$02,$02,$3C,$00 ; S
|
|
dc.b $7E,$18,$18,$18,$18,$18,$18,$00 ; T
|
|
dc.b $42,$42,$42,$42,$42,$42,$3C,$00 ; U
|
|
dc.b $42,$42,$42,$42,$42,$24,$18,$00 ; V
|
|
dc.b $42,$42,$42,$5A,$5A,$66,$42,$00 ; W
|
|
dc.b $42,$24,$18,$18,$18,$24,$42,$00 ; X
|
|
dc.b $42,$42,$24,$18,$18,$18,$18,$00 ; Y
|
|
dc.b $7E,$04,$08,$10,$20,$40,$7E,$00 ; Z
|
|
|
|
Screen:
|
|
ds.b 10240
|