Last active
August 29, 2015 14:01
-
-
Save lhz/0a6f60bd9b1a07c87cb7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;------------------------------------------------------------------------- | |
; StarField Example 13.01.94 | |
;------------------------------------------------------------------------- | |
; Programming by Lars Haugseth (Perplex) | |
;------------------------------------------------------------------------- | |
;------------------------------------------------------------------------- | |
; CONSTANTS | |
;------------------------------------------------------------------------- | |
NOINT = 1 ; Disable interrupts | |
DTIME = 0 ; Display rastertime | |
RAND = 3 ; 'Randomness' 0-3 | |
NSTARS = 870 ; Number of stars | |
PFACT = $FF00 ; Perspective factor | |
BUFW = 44 ; Buffer width in bytes | |
BUFH = 272 ; Buffer height in lines | |
BOXW = 44 ; Starfield width in bytes | |
BOXH = 272 ; Starfield height in lines | |
ZSPEED = -5 ; Speed of Z-movement | |
_LVODisable = -120 ; exec.library function offsets | |
_LVOEnable = -126 | |
_LVOCloseLibrary = -414 | |
_LVOOpenLibrary = -552 | |
_LVOLoadView = -222 ; grapics.library function offsets | |
_LVOWaitBlit = -228 | |
_LVOWaitTOF = -270 | |
_LVOOwnBlitter = -456 | |
_LVODisownBlitter = -462 | |
ib_ViewLord = 34 ; System structures attributes | |
gb_copinit = 38 | |
ExecBas = $00000004 | |
CustomBas = $00DFF000 | |
CIAA = $00BFE001 | |
VHPOSR = $006 ; Custom registers | |
BLTCON0 = $040 | |
BLTDPTH = $054 | |
BLTSIZE = $058 | |
BLTDMOD = $066 | |
COP1LCH = $080 | |
COPJMP1 = $088 | |
COLOR00 = $180 | |
;------------------------------------------------------------------------- | |
; MACROS | |
;------------------------------------------------------------------------- | |
CALL: MACRO ; Call a library function | |
move.l \1Bas,a6 | |
jsr _LVO\2(a6) | |
ENDM | |
RND: MACRO ; Construct a 'random' byte in d0 | |
move.b (a1),d0 | |
move.b (a2),d1 | |
move.b (a3),d2 | |
eor.b d2,d0 | |
eor.b d1,d0 | |
IFNE RAND&1 | |
add.b d0,(a3) | |
ENDC | |
IFNE RAND&2 | |
add.b d7,d0 | |
ENDC | |
ENDM | |
;------------------------------------------------------------------------- | |
; PROGRAM START | |
;------------------------------------------------------------------------- | |
SECTION "Code",CODE | |
StartProgram: | |
lea GfxName,a1 ; Open graphics.library | |
moveq #0,d0 | |
CALL Exec,OpenLibrary | |
move.l d0,GfxBas | |
beq.w .Exit | |
lea IntName,a1 ; Open intuition.library | |
moveq #0,d0 | |
CALL Exec,OpenLibrary | |
move.l d0,IntBas | |
beq.w .Exit | |
sub.l a1,a1 ; Grab display | |
CALL Gfx,LoadView | |
CALL Gfx,WaitTOF | |
CALL Gfx,WaitTOF | |
CALL Gfx,OwnBlitter ; Grab blitter | |
CALL Gfx,WaitBlit | |
IFNE NOINT | |
CALL Exec,Disable ; Disable interrupts | |
ENDC | |
bsr Initialization | |
bsr MainLoop | |
IFNE NOINT | |
CALL Exec,Enable ; Enable interrupts | |
ENDC | |
CALL Gfx,DisownBlitter ; Free blitter | |
move.l IntBas,a0 ; Restore display | |
lea ib_ViewLord(a0),a1 | |
CALL Gfx,LoadView | |
CALL Gfx,WaitTOF | |
CALL Gfx,WaitTOF | |
lea CustomBas,a0 | |
move.l GfxBas,a6 | |
move.l gb_copinit(a6),COP1LCH(a0) | |
move.w #0,COPJMP1(a0) | |
.Exit: move.l IntBas,a1 ; Close intuition.library | |
cmp.l #0,a1 | |
beq.s .NoInt | |
CALL Exec,CloseLibrary | |
.NoInt: move.l GfxBas,a1 ; Close graphics.library | |
cmp.l #0,a1 | |
beq.s .NoGfx | |
CALL Exec,CloseLibrary | |
.NoGfx: moveq #0,d0 ; Exit program | |
rts | |
;------------------------------------------------------------------------- | |
; MAINLOOP | |
;------------------------------------------------------------------------- | |
MainLoop: | |
lea CustomBas,a0 ; Wait for line 255 | |
.Wait: cmp.b #255,VHPOSR(a0) | |
bne.s .Wait | |
IFNE DTIME | |
move.w #$336,CustomBas+COLOR00 | |
ENDC | |
bsr DrawStars | |
IFNE DTIME | |
move.w #$000,CustomBas+COLOR00 | |
ENDC | |
btst #6,CIAA ; Loop until LMB is pressed | |
bne.s MainLoop | |
rts | |
;------------------------------------------------------------------------- | |
; INITIALIZATION | |
;------------------------------------------------------------------------- | |
Initialization: | |
bsr InitBSS | |
bsr InitCopper | |
bsr InitCoords | |
bsr InitPerspective | |
REPT 3 | |
bsr StarBuffer | |
bsr StarClear | |
ENDR | |
rts | |
;------------------------------------------------------------------------- | |
InitBSS: | |
lea Blanks,a0 ; Init BSS-sections | |
move.l #(256/4)-1,d7 | |
.1: clr.l (a0)+ | |
dbf d7,.1 | |
lea StarBuffer1,a0 | |
lea StarBuffer2,a1 | |
lea StarBuffer3,a2 | |
move.l #(BUFW*BUFH/2)-1,d7 | |
.2: clr.l (a0)+ | |
clr.l (a1)+ | |
clr.l (a2)+ | |
dbf d7,.2 | |
rts | |
;------------------------------------------------------------------------- | |
InitCopper: | |
lea CopSprites+2,a0 ; Init sprite-pointers | |
move.l #Blanks,d0 | |
move.l d0,d1 | |
swap d1 | |
moveq #7,d7 | |
.Loop: move.w d1,(a0) | |
move.w d0,4(a0) | |
addq.w #8,a0 | |
dbf d7,.Loop | |
lea CopBplPtr,a0 ; Init bitplane-pointers | |
move.l StarBufPtr,d0 | |
move.l StarBufPtr,d1 | |
add.l #BUFW,d1 | |
move.w d0,6(a0) | |
move.w d1,14(a0) | |
swap d0 | |
swap d1 | |
move.w d0,2(a0) | |
move.w d1,10(a0) | |
lea CustomBas,a0 ; Start new copperlist | |
move.l #CopperList,COP1LCH(a0) | |
move.w #0,COPJMP1(a0) | |
rts | |
;------------------------------------------------------------------------- | |
InitCoords: ; Randomize coordinates | |
lea StarCoords,a0 | |
lea $DFF007,a1 ; Horizontal beam pos | |
lea $BFD800,a2 ; Horizontal blank counter | |
lea RndStore,a3 | |
move.w #NSTARS-1,d7 | |
.Loop: RND | |
and.l #$FF,d0 | |
move.w d0,(a0)+ ; Store X-coord | |
RND | |
and.l #$FF,d0 | |
move.w d0,(a0)+ ; Store Y-coord | |
RND | |
lsl.l #8,d0 | |
and.l #$FF00,d0 | |
move.w d0,(a0)+ ; Store Z-coord | |
dbf d7,.Loop | |
rts | |
;----------------------------------------------------------------------------- | |
InitPerspective: ; Calculate perspective-tables | |
lea PerTabX,a0 | |
lea PerTabB,a1 | |
lea PerTabY,a2 | |
move.l #BOXW*4,a3 | |
move.l #BOXH/2,a4 | |
move.l #((BOXW*4)<<16)-1,a5 | |
move.l #((BOXH/2)<<16)-1,a6 | |
movem.l Blanks,d0-d4 | |
move.l #$7FFF,d5 | |
move.l #255,d6 | |
.1: moveq #0,d7 | |
.2: move.w d7,d3 | |
move.w d7,d4 | |
mulu #(BOXW*4)<<8,d3 | |
add.l d3,d3 | |
swap d3 | |
mulu #(BOXH/2)<<8,d4 | |
add.l d4,d4 | |
swap d4 | |
sub.w a3,d3 | |
muls d5,d3 | |
add.l d3,d3 | |
add.l a5,d3 | |
swap d3 | |
sub.w a4,d4 | |
muls d5,d4 | |
add.l d4,d4 | |
add.l a6,d4 | |
swap d4 | |
move.l d3,d0 | |
move.l d3,d1 | |
move.l d4,d2 | |
lsr.w #3,d0 | |
and.w #7,d1 | |
sub.w #7,d1 | |
neg.w d1 | |
mulu #BUFW*2,d2 | |
cmp.w #100,d6 | |
bgt.s .3 | |
add.w #BUFW,d2 | |
.3: add.b #(BUFW-BOXW)/2,d0 | |
add.w #(BUFH-BOXH)*BUFW,d2 | |
move.b d0,(a0)+ | |
move.b d1,(a1)+ | |
move.w d2,(a2)+ | |
addq.w #1,d7 | |
cmp.w #256,d7 | |
bne.s .2 | |
mulu #PFACT,d5 | |
swap d5 | |
and.l #$FFFF,d5 | |
dbf d6,.1 | |
rts | |
;------------------------------------------------------------------------- | |
; ROUTINES | |
;----------------------------------------------------------------------------- | |
DrawStars: | |
bsr StarBuffer | |
bsr StarClear | |
bsr StarMove | |
lea PerTabX,a0 ; Perspective tables | |
lea PerTabB,a1 | |
lea PerTabY,a2 | |
lea StarCoords,a3 ; Coordinates | |
move.l StarBufPtr+4,a4 ; Bitplane pointer | |
movem.l Blanks,d0-d7 | |
move.w StarAddX,d3 ; Movement offsets | |
move.w StarAddY,d4 | |
move.w StarAddZ,d5 | |
move.l #$FF,d6 | |
move.w #(NSTARS/5)-1,d7 | |
AD SET 0 | |
Loop: REPT 5 ; Loop only for each 20 stars | |
lea (a4),a5 | |
movem.w AD(a3),d0-d2 ; Fetch coord (x,y,z) | |
add.w d5,d2 ; Calc Z | |
add.w d4,d1 ; Calc Y | |
and.l d6,d1 | |
or.w d2,d1 | |
add.l d1,d1 | |
add.w (a2,d1.l),a5 | |
add.w d3,d0 ; Calc X | |
and.l d6,d0 | |
or.w d2,d0 | |
move.b (a0,d0.l),d2 | |
and.w d6,d2 | |
move.b (a1,d0.l),d0 ; Calc bit | |
bset d0,(a5,d2.w) ; Plot pixel | |
AD SET AD+6 | |
ENDR | |
lea 30(a3),a3 | |
dbf d7,Loop | |
EL: rts | |
;----------------------------------------------------------------------------- | |
StarClear: ; Clear a buffer with blitter | |
CALL Gfx,WaitBlit | |
lea CustomBas,a0 | |
move.l StarBufPtr+8,BLTDPTH(a0) | |
move.w #0,BLTDMOD(a0) | |
move.l #$01000000,BLTCON0(a0) | |
move.w #BUFH*64+BUFW,BLTSIZE(a0) | |
rts | |
;----------------------------------------------------------------------------- | |
StarBuffer: | |
lea StarBufPtr,a0 ; Triple buffering | |
movem.l (a0),d0-d2 | |
exg d0,d1 | |
exg d1,d2 | |
movem.l d0-d2,(a0) | |
lea CopBplPtr,a0 ; Update bitplane-pointers | |
move.l StarBufPtr,d0 | |
move.l StarBufPtr,d1 | |
add.l #BUFW,d1 | |
move.w d0,6(a0) | |
move.w d1,14(a0) | |
swap d0 | |
swap d1 | |
move.w d0,2(a0) | |
move.w d1,10(a0) | |
rts | |
;----------------------------------------------------------------------------- | |
StarMove: ; Move stars around | |
lea SineTable,a0 ; Use sine in X and Y direction | |
move.w SinPosX,d0 | |
move.w SinPosY,d1 | |
add.w SinSpdX,d0 | |
add.w SinSpdY,d1 | |
and.w #$FFE,d0 | |
and.w #$FFE,d1 | |
move.w d0,SinPosX | |
move.w d1,SinPosY | |
move.w (a0,d0.w),d0 | |
move.w (a0,d1.w),d1 | |
move.w d0,StarAddX | |
move.w d1,StarAddY | |
add.w #ZSPEED<<8,StarAddZ | |
and.w #$FF00,StarAddZ | |
rts | |
;------------------------------------------------------------------------- | |
; PUBLICMEM DATA | |
;------------------------------------------------------------------------- | |
SECTION "PubBSS",BSS | |
GfxBas: ds.l 1 | |
IntBas: ds.l 1 | |
PerTabX: ds.b 256*256 ; Perspective tables | |
PerTabB: ds.b 256*256 | |
PerTabY: ds.w 256*256 | |
StarCoords: ds.w 3*NSTARS ; Star coordinates | |
;------------------------------------------------------------------------- | |
SECTION "PubData",DATA | |
RndStore: dc.w 0 ; Random value | |
StarAddX: dc.w 0 ; Star movement offsets | |
StarAddY: dc.w 0 | |
StarAddZ: dc.w 0 | |
SinPosX: dc.w 0 ; Sine positions | |
SinPosY: dc.w $136 | |
SinSpdX: dc.w 4 ; Sine speeds | |
SinSpdY: dc.w -2 | |
StarBufPtr: dc.l StarBuffer1 ; Buffer pointers | |
dc.l StarBuffer2 | |
dc.l StarBuffer3 | |
GfxName: dc.b "graphics.library",0 | |
IntName: dc.b "intuition.library",0 | |
even | |
SineTable: dc.w $0200,$0202,$0203,$0205,$0206,$0208,$0209,$020B | |
dc.w $020D,$020E,$0210,$0211,$0213,$0214,$0216,$0218 | |
dc.w $0219,$021B,$021C,$021E,$021F,$0221,$0223,$0224 | |
dc.w $0226,$0227,$0229,$022A,$022C,$022D,$022F,$0231 | |
dc.w $0232,$0234,$0235,$0237,$0238,$023A,$023C,$023D | |
dc.w $023F,$0240,$0242,$0243,$0245,$0246,$0248,$024A | |
dc.w $024B,$024D,$024E,$0250,$0251,$0253,$0254,$0256 | |
dc.w $0258,$0259,$025B,$025C,$025E,$025F,$0261,$0262 | |
dc.w $0264,$0265,$0267,$0269,$026A,$026C,$026D,$026F | |
dc.w $0270,$0272,$0273,$0275,$0276,$0278,$0279,$027B | |
dc.w $027C,$027E,$027F,$0281,$0282,$0284,$0286,$0287 | |
dc.w $0289,$028A,$028C,$028D,$028F,$0290,$0292,$0293 | |
dc.w $0295,$0296,$0298,$0299,$029B,$029C,$029E,$029F | |
dc.w $02A1,$02A2,$02A4,$02A5,$02A7,$02A8,$02AA,$02AB | |
dc.w $02AC,$02AE,$02AF,$02B1,$02B2,$02B4,$02B5,$02B7 | |
dc.w $02B8,$02BA,$02BB,$02BD,$02BE,$02C0,$02C1,$02C2 | |
dc.w $02C4,$02C5,$02C7,$02C8,$02CA,$02CB,$02CD,$02CE | |
dc.w $02CF,$02D1,$02D2,$02D4,$02D5,$02D7,$02D8,$02D9 | |
dc.w $02DB,$02DC,$02DE,$02DF,$02E1,$02E2,$02E3,$02E5 | |
dc.w $02E6,$02E8,$02E9,$02EA,$02EC,$02ED,$02EF,$02F0 | |
dc.w $02F1,$02F3,$02F4,$02F6,$02F7,$02F8,$02FA,$02FB | |
dc.w $02FC,$02FE,$02FF,$0300,$0302,$0303,$0305,$0306 | |
dc.w $0307,$0309,$030A,$030B,$030D,$030E,$030F,$0311 | |
dc.w $0312,$0313,$0315,$0316,$0317,$0319,$031A,$031B | |
dc.w $031C,$031E,$031F,$0320,$0322,$0323,$0324,$0326 | |
dc.w $0327,$0328,$0329,$032B,$032C,$032D,$032E,$0330 | |
dc.w $0331,$0332,$0334,$0335,$0336,$0337,$0339,$033A | |
dc.w $033B,$033C,$033D,$033F,$0340,$0341,$0342,$0344 | |
dc.w $0345,$0346,$0347,$0348,$034A,$034B,$034C,$034D | |
dc.w $034E,$0350,$0351,$0352,$0353,$0354,$0356,$0357 | |
dc.w $0358,$0359,$035A,$035B,$035C,$035E,$035F,$0360 | |
dc.w $0361,$0362,$0363,$0364,$0366,$0367,$0368,$0369 | |
dc.w $036A,$036B,$036C,$036D,$036E,$0370,$0371,$0372 | |
dc.w $0373,$0374,$0375,$0376,$0377,$0378,$0379,$037A | |
dc.w $037B,$037C,$037D,$037F,$0380,$0381,$0382,$0383 | |
dc.w $0384,$0385,$0386,$0387,$0388,$0389,$038A,$038B | |
dc.w $038C,$038D,$038E,$038F,$0390,$0391,$0392,$0393 | |
dc.w $0394,$0395,$0396,$0397,$0397,$0398,$0399,$039A | |
dc.w $039B,$039C,$039D,$039E,$039F,$03A0,$03A1,$03A2 | |
dc.w $03A3,$03A4,$03A4,$03A5,$03A6,$03A7,$03A8,$03A9 | |
dc.w $03AA,$03AB,$03AB,$03AC,$03AD,$03AE,$03AF,$03B0 | |
dc.w $03B1,$03B1,$03B2,$03B3,$03B4,$03B5,$03B6,$03B6 | |
dc.w $03B7,$03B8,$03B9,$03BA,$03BA,$03BB,$03BC,$03BD | |
dc.w $03BD,$03BE,$03BF,$03C0,$03C1,$03C1,$03C2,$03C3 | |
dc.w $03C4,$03C4,$03C5,$03C6,$03C6,$03C7,$03C8,$03C9 | |
dc.w $03C9,$03CA,$03CB,$03CB,$03CC,$03CD,$03CD,$03CE | |
dc.w $03CF,$03D0,$03D0,$03D1,$03D1,$03D2,$03D3,$03D3 | |
dc.w $03D4,$03D5,$03D5,$03D6,$03D7,$03D7,$03D8,$03D8 | |
dc.w $03D9,$03DA,$03DA,$03DB,$03DB,$03DC,$03DD,$03DD | |
dc.w $03DE,$03DE,$03DF,$03DF,$03E0,$03E0,$03E1,$03E2 | |
dc.w $03E2,$03E3,$03E3,$03E4,$03E4,$03E5,$03E5,$03E6 | |
dc.w $03E6,$03E7,$03E7,$03E8,$03E8,$03E9,$03E9,$03E9 | |
dc.w $03EA,$03EA,$03EB,$03EB,$03EC,$03EC,$03ED,$03ED | |
dc.w $03ED,$03EE,$03EE,$03EF,$03EF,$03EF,$03F0,$03F0 | |
dc.w $03F1,$03F1,$03F1,$03F2,$03F2,$03F3,$03F3,$03F3 | |
dc.w $03F4,$03F4,$03F4,$03F5,$03F5,$03F5,$03F6,$03F6 | |
dc.w $03F6,$03F6,$03F7,$03F7,$03F7,$03F8,$03F8,$03F8 | |
dc.w $03F8,$03F9,$03F9,$03F9,$03F9,$03FA,$03FA,$03FA | |
dc.w $03FA,$03FB,$03FB,$03FB,$03FB,$03FC,$03FC,$03FC | |
dc.w $03FC,$03FC,$03FD,$03FD,$03FD,$03FD,$03FD,$03FD | |
dc.w $03FE,$03FE,$03FE,$03FE,$03FE,$03FE,$03FE,$03FE | |
dc.w $03FF,$03FF,$03FF,$03FF,$03FF,$03FF,$03FF,$03FF | |
dc.w $03FF,$03FF,$0400,$0400,$0400,$0400,$0400,$0400 | |
dc.w $0400,$0400,$0400,$0400,$0400,$0400,$0400,$0400 | |
dc.w $0400,$0400,$0400,$0400,$0400,$0400,$0400,$0400 | |
dc.w $0400,$0400,$0400,$0400,$0400,$0400,$0400,$03FF | |
dc.w $03FF,$03FF,$03FF,$03FF,$03FF,$03FF,$03FF,$03FF | |
dc.w $03FF,$03FE,$03FE,$03FE,$03FE,$03FE,$03FE,$03FE | |
dc.w $03FE,$03FD,$03FD,$03FD,$03FD,$03FD,$03FD,$03FC | |
dc.w $03FC,$03FC,$03FC,$03FC,$03FB,$03FB,$03FB,$03FB | |
dc.w $03FA,$03FA,$03FA,$03FA,$03F9,$03F9,$03F9,$03F9 | |
dc.w $03F8,$03F8,$03F8,$03F8,$03F7,$03F7,$03F7,$03F6 | |
dc.w $03F6,$03F6,$03F6,$03F5,$03F5,$03F5,$03F4,$03F4 | |
dc.w $03F4,$03F3,$03F3,$03F3,$03F2,$03F2,$03F1,$03F1 | |
dc.w $03F1,$03F0,$03F0,$03EF,$03EF,$03EF,$03EE,$03EE | |
dc.w $03ED,$03ED,$03ED,$03EC,$03EC,$03EB,$03EB,$03EA | |
dc.w $03EA,$03E9,$03E9,$03E9,$03E8,$03E8,$03E7,$03E7 | |
dc.w $03E6,$03E6,$03E5,$03E5,$03E4,$03E4,$03E3,$03E3 | |
dc.w $03E2,$03E2,$03E1,$03E0,$03E0,$03DF,$03DF,$03DE | |
dc.w $03DE,$03DD,$03DD,$03DC,$03DB,$03DB,$03DA,$03DA | |
dc.w $03D9,$03D8,$03D8,$03D7,$03D7,$03D6,$03D5,$03D5 | |
dc.w $03D4,$03D3,$03D3,$03D2,$03D1,$03D1,$03D0,$03D0 | |
dc.w $03CF,$03CE,$03CD,$03CD,$03CC,$03CB,$03CB,$03CA | |
dc.w $03C9,$03C9,$03C8,$03C7,$03C6,$03C6,$03C5,$03C4 | |
dc.w $03C4,$03C3,$03C2,$03C1,$03C1,$03C0,$03BF,$03BE | |
dc.w $03BD,$03BD,$03BC,$03BB,$03BA,$03BA,$03B9,$03B8 | |
dc.w $03B7,$03B6,$03B6,$03B5,$03B4,$03B3,$03B2,$03B1 | |
dc.w $03B1,$03B0,$03AF,$03AE,$03AD,$03AC,$03AB,$03AB | |
dc.w $03AA,$03A9,$03A8,$03A7,$03A6,$03A5,$03A4,$03A4 | |
dc.w $03A3,$03A2,$03A1,$03A0,$039F,$039E,$039D,$039C | |
dc.w $039B,$039A,$0399,$0398,$0397,$0397,$0396,$0395 | |
dc.w $0394,$0393,$0392,$0391,$0390,$038F,$038E,$038D | |
dc.w $038C,$038B,$038A,$0389,$0388,$0387,$0386,$0385 | |
dc.w $0384,$0383,$0382,$0381,$0380,$037F,$037D,$037C | |
dc.w $037B,$037A,$0379,$0378,$0377,$0376,$0375,$0374 | |
dc.w $0373,$0372,$0371,$0370,$036E,$036D,$036C,$036B | |
dc.w $036A,$0369,$0368,$0367,$0366,$0364,$0363,$0362 | |
dc.w $0361,$0360,$035F,$035E,$035C,$035B,$035A,$0359 | |
dc.w $0358,$0357,$0356,$0354,$0353,$0352,$0351,$0350 | |
dc.w $034E,$034D,$034C,$034B,$034A,$0348,$0347,$0346 | |
dc.w $0345,$0344,$0342,$0341,$0340,$033F,$033D,$033C | |
dc.w $033B,$033A,$0339,$0337,$0336,$0335,$0334,$0332 | |
dc.w $0331,$0330,$032E,$032D,$032C,$032B,$0329,$0328 | |
dc.w $0327,$0326,$0324,$0323,$0322,$0320,$031F,$031E | |
dc.w $031C,$031B,$031A,$0319,$0317,$0316,$0315,$0313 | |
dc.w $0312,$0311,$030F,$030E,$030D,$030B,$030A,$0309 | |
dc.w $0307,$0306,$0305,$0303,$0302,$0300,$02FF,$02FE | |
dc.w $02FC,$02FB,$02FA,$02F8,$02F7,$02F5,$02F4,$02F3 | |
dc.w $02F1,$02F0,$02EF,$02ED,$02EC,$02EA,$02E9,$02E8 | |
dc.w $02E6,$02E5,$02E3,$02E2,$02E1,$02DF,$02DE,$02DC | |
dc.w $02DB,$02D9,$02D8,$02D7,$02D5,$02D4,$02D2,$02D1 | |
dc.w $02CF,$02CE,$02CD,$02CB,$02CA,$02C8,$02C7,$02C5 | |
dc.w $02C4,$02C2,$02C1,$02C0,$02BE,$02BD,$02BB,$02BA | |
dc.w $02B8,$02B7,$02B5,$02B4,$02B2,$02B1,$02AF,$02AE | |
dc.w $02AC,$02AB,$02AA,$02A8,$02A7,$02A5,$02A4,$02A2 | |
dc.w $02A1,$029F,$029E,$029C,$029B,$0299,$0298,$0296 | |
dc.w $0295,$0293,$0292,$0290,$028F,$028D,$028C,$028A | |
dc.w $0289,$0287,$0286,$0284,$0282,$0281,$027F,$027E | |
dc.w $027C,$027B,$0279,$0278,$0276,$0275,$0273,$0272 | |
dc.w $0270,$026F,$026D,$026C,$026A,$0269,$0267,$0265 | |
dc.w $0264,$0262,$0261,$025F,$025E,$025C,$025B,$0259 | |
dc.w $0258,$0256,$0254,$0253,$0251,$0250,$024E,$024D | |
dc.w $024B,$024A,$0248,$0246,$0245,$0243,$0242,$0240 | |
dc.w $023F,$023D,$023C,$023A,$0238,$0237,$0235,$0234 | |
dc.w $0232,$0231,$022F,$022D,$022C,$022A,$0229,$0227 | |
dc.w $0226,$0224,$0223,$0221,$021F,$021E,$021C,$021B | |
dc.w $0219,$0218,$0216,$0214,$0213,$0211,$0210,$020E | |
dc.w $020D,$020B,$0209,$0208,$0206,$0205,$0203,$0202 | |
dc.w $0200,$01FE,$01FD,$01FB,$01FA,$01F8,$01F7,$01F5 | |
dc.w $01F3,$01F2,$01F0,$01EF,$01ED,$01EC,$01EA,$01E8 | |
dc.w $01E7,$01E5,$01E4,$01E2,$01E1,$01DF,$01DD,$01DC | |
dc.w $01DA,$01D9,$01D7,$01D6,$01D4,$01D3,$01D1,$01CF | |
dc.w $01CE,$01CC,$01CB,$01C9,$01C8,$01C6,$01C4,$01C3 | |
dc.w $01C1,$01C0,$01BE,$01BD,$01BB,$01BA,$01B8,$01B6 | |
dc.w $01B5,$01B3,$01B2,$01B0,$01AF,$01AD,$01AC,$01AA | |
dc.w $01A8,$01A7,$01A5,$01A4,$01A2,$01A1,$019F,$019E | |
dc.w $019C,$019B,$0199,$0197,$0196,$0194,$0193,$0191 | |
dc.w $0190,$018E,$018D,$018B,$018A,$0188,$0187,$0185 | |
dc.w $0184,$0182,$0181,$017F,$017E,$017C,$017A,$0179 | |
dc.w $0177,$0176,$0174,$0173,$0171,$0170,$016E,$016D | |
dc.w $016B,$016A,$0168,$0167,$0165,$0164,$0162,$0161 | |
dc.w $015F,$015E,$015C,$015B,$0159,$0158,$0156,$0155 | |
dc.w $0154,$0152,$0151,$014F,$014E,$014C,$014B,$0149 | |
dc.w $0148,$0146,$0145,$0143,$0142,$0140,$013F,$013E | |
dc.w $013C,$013B,$0139,$0138,$0136,$0135,$0133,$0132 | |
dc.w $0131,$012F,$012E,$012C,$012B,$0129,$0128,$0127 | |
dc.w $0125,$0124,$0122,$0121,$011F,$011E,$011D,$011B | |
dc.w $011A,$0118,$0117,$0116,$0114,$0113,$0111,$0110 | |
dc.w $010F,$010D,$010C,$010A,$0109,$0108,$0106,$0105 | |
dc.w $0104,$0102,$0101,$0100,$00FE,$00FD,$00FB,$00FA | |
dc.w $00F9,$00F7,$00F6,$00F5,$00F3,$00F2,$00F1,$00EF | |
dc.w $00EE,$00ED,$00EB,$00EA,$00E9,$00E7,$00E6,$00E5 | |
dc.w $00E4,$00E2,$00E1,$00E0,$00DE,$00DD,$00DC,$00DA | |
dc.w $00D9,$00D8,$00D7,$00D5,$00D4,$00D3,$00D2,$00D0 | |
dc.w $00CF,$00CE,$00CC,$00CB,$00CA,$00C9,$00C7,$00C6 | |
dc.w $00C5,$00C4,$00C3,$00C1,$00C0,$00BF,$00BE,$00BC | |
dc.w $00BB,$00BA,$00B9,$00B8,$00B6,$00B5,$00B4,$00B3 | |
dc.w $00B2,$00B0,$00AF,$00AE,$00AD,$00AC,$00AA,$00A9 | |
dc.w $00A8,$00A7,$00A6,$00A5,$00A4,$00A2,$00A1,$00A0 | |
dc.w $009F,$009E,$009D,$009C,$009A,$0099,$0098,$0097 | |
dc.w $0096,$0095,$0094,$0093,$0092,$0090,$008F,$008E | |
dc.w $008D,$008C,$008B,$008A,$0089,$0088,$0087,$0086 | |
dc.w $0085,$0084,$0083,$0081,$0080,$007F,$007E,$007D | |
dc.w $007C,$007B,$007A,$0079,$0078,$0077,$0076,$0075 | |
dc.w $0074,$0073,$0072,$0071,$0070,$006F,$006E,$006D | |
dc.w $006C,$006B,$006A,$0069,$0069,$0068,$0067,$0066 | |
dc.w $0065,$0064,$0063,$0062,$0061,$0060,$005F,$005E | |
dc.w $005D,$005C,$005C,$005B,$005A,$0059,$0058,$0057 | |
dc.w $0056,$0055,$0055,$0054,$0053,$0052,$0051,$0050 | |
dc.w $004F,$004F,$004E,$004D,$004C,$004B,$004A,$004A | |
dc.w $0049,$0048,$0047,$0046,$0046,$0045,$0044,$0043 | |
dc.w $0043,$0042,$0041,$0040,$003F,$003F,$003E,$003D | |
dc.w $003C,$003C,$003B,$003A,$003A,$0039,$0038,$0037 | |
dc.w $0037,$0036,$0035,$0035,$0034,$0033,$0033,$0032 | |
dc.w $0031,$0030,$0030,$002F,$002F,$002E,$002D,$002D | |
dc.w $002C,$002B,$002B,$002A,$0029,$0029,$0028,$0028 | |
dc.w $0027,$0026,$0026,$0025,$0025,$0024,$0023,$0023 | |
dc.w $0022,$0022,$0021,$0021,$0020,$0020,$001F,$001E | |
dc.w $001E,$001D,$001D,$001C,$001C,$001B,$001B,$001A | |
dc.w $001A,$0019,$0019,$0018,$0018,$0017,$0017,$0017 | |
dc.w $0016,$0016,$0015,$0015,$0014,$0014,$0013,$0013 | |
dc.w $0013,$0012,$0012,$0011,$0011,$0011,$0010,$0010 | |
dc.w $000F,$000F,$000F,$000E,$000E,$000D,$000D,$000D | |
dc.w $000C,$000C,$000C,$000B,$000B,$000B,$000A,$000A | |
dc.w $000A,$000A,$0009,$0009,$0009,$0008,$0008,$0008 | |
dc.w $0008,$0007,$0007,$0007,$0007,$0006,$0006,$0006 | |
dc.w $0006,$0005,$0005,$0005,$0005,$0004,$0004,$0004 | |
dc.w $0004,$0004,$0003,$0003,$0003,$0003,$0003,$0003 | |
dc.w $0002,$0002,$0002,$0002,$0002,$0002,$0002,$0002 | |
dc.w $0001,$0001,$0001,$0001,$0001,$0001,$0001,$0001 | |
dc.w $0001,$0001,$0000,$0000,$0000,$0000,$0000,$0000 | |
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 | |
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 | |
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0001 | |
dc.w $0001,$0001,$0001,$0001,$0001,$0001,$0001,$0001 | |
dc.w $0001,$0002,$0002,$0002,$0002,$0002,$0002,$0002 | |
dc.w $0002,$0003,$0003,$0003,$0003,$0003,$0003,$0004 | |
dc.w $0004,$0004,$0004,$0004,$0005,$0005,$0005,$0005 | |
dc.w $0006,$0006,$0006,$0006,$0007,$0007,$0007,$0007 | |
dc.w $0008,$0008,$0008,$0008,$0009,$0009,$0009,$000A | |
dc.w $000A,$000A,$000A,$000B,$000B,$000B,$000C,$000C | |
dc.w $000C,$000D,$000D,$000D,$000E,$000E,$000F,$000F | |
dc.w $000F,$0010,$0010,$0011,$0011,$0011,$0012,$0012 | |
dc.w $0013,$0013,$0013,$0014,$0014,$0015,$0015,$0016 | |
dc.w $0016,$0017,$0017,$0017,$0018,$0018,$0019,$0019 | |
dc.w $001A,$001A,$001B,$001B,$001C,$001C,$001D,$001D | |
dc.w $001E,$001E,$001F,$0020,$0020,$0021,$0021,$0022 | |
dc.w $0022,$0023,$0023,$0024,$0025,$0025,$0026,$0026 | |
dc.w $0027,$0028,$0028,$0029,$0029,$002A,$002B,$002B | |
dc.w $002C,$002D,$002D,$002E,$002F,$002F,$0030,$0030 | |
dc.w $0031,$0032,$0033,$0033,$0034,$0035,$0035,$0036 | |
dc.w $0037,$0037,$0038,$0039,$003A,$003A,$003B,$003C | |
dc.w $003C,$003D,$003E,$003F,$003F,$0040,$0041,$0042 | |
dc.w $0043,$0043,$0044,$0045,$0046,$0046,$0047,$0048 | |
dc.w $0049,$004A,$004A,$004B,$004C,$004D,$004E,$004F | |
dc.w $004F,$0050,$0051,$0052,$0053,$0054,$0055,$0055 | |
dc.w $0056,$0057,$0058,$0059,$005A,$005B,$005C,$005C | |
dc.w $005D,$005E,$005F,$0060,$0061,$0062,$0063,$0064 | |
dc.w $0065,$0066,$0067,$0068,$0069,$0069,$006A,$006B | |
dc.w $006C,$006D,$006E,$006F,$0070,$0071,$0072,$0073 | |
dc.w $0074,$0075,$0076,$0077,$0078,$0079,$007A,$007B | |
dc.w $007C,$007D,$007E,$007F,$0080,$0081,$0083,$0084 | |
dc.w $0085,$0086,$0087,$0088,$0089,$008A,$008B,$008C | |
dc.w $008D,$008E,$008F,$0090,$0092,$0093,$0094,$0095 | |
dc.w $0096,$0097,$0098,$0099,$009A,$009C,$009D,$009E | |
dc.w $009F,$00A0,$00A1,$00A2,$00A4,$00A5,$00A6,$00A7 | |
dc.w $00A8,$00A9,$00AB,$00AC,$00AD,$00AE,$00AF,$00B0 | |
dc.w $00B2,$00B3,$00B4,$00B5,$00B6,$00B8,$00B9,$00BA | |
dc.w $00BB,$00BC,$00BE,$00BF,$00C0,$00C1,$00C3,$00C4 | |
dc.w $00C5,$00C6,$00C7,$00C9,$00CA,$00CB,$00CC,$00CE | |
dc.w $00CF,$00D0,$00D2,$00D3,$00D4,$00D5,$00D7,$00D8 | |
dc.w $00D9,$00DA,$00DC,$00DD,$00DE,$00E0,$00E1,$00E2 | |
dc.w $00E4,$00E5,$00E6,$00E7,$00E9,$00EA,$00EB,$00ED | |
dc.w $00EE,$00EF,$00F1,$00F2,$00F3,$00F5,$00F6,$00F7 | |
dc.w $00F9,$00FA,$00FB,$00FD,$00FE,$0100,$0101,$0102 | |
dc.w $0104,$0105,$0106,$0108,$0109,$010B,$010C,$010D | |
dc.w $010F,$0110,$0111,$0113,$0114,$0116,$0117,$0118 | |
dc.w $011A,$011B,$011D,$011E,$011F,$0121,$0122,$0124 | |
dc.w $0125,$0127,$0128,$0129,$012B,$012C,$012E,$012F | |
dc.w $0131,$0132,$0133,$0135,$0136,$0138,$0139,$013B | |
dc.w $013C,$013E,$013F,$0140,$0142,$0143,$0145,$0146 | |
dc.w $0148,$0149,$014B,$014C,$014E,$014F,$0151,$0152 | |
dc.w $0154,$0155,$0156,$0158,$0159,$015B,$015C,$015E | |
dc.w $015F,$0161,$0162,$0164,$0165,$0167,$0168,$016A | |
dc.w $016B,$016D,$016E,$0170,$0171,$0173,$0174,$0176 | |
dc.w $0177,$0179,$017A,$017C,$017E,$017F,$0181,$0182 | |
dc.w $0184,$0185,$0187,$0188,$018A,$018B,$018D,$018E | |
dc.w $0190,$0191,$0193,$0194,$0196,$0198,$0199,$019B | |
dc.w $019C,$019E,$019F,$01A1,$01A2,$01A4,$01A5,$01A7 | |
dc.w $01A8,$01AA,$01AC,$01AD,$01AF,$01B0,$01B2,$01B3 | |
dc.w $01B5,$01B6,$01B8,$01BA,$01BB,$01BD,$01BE,$01C0 | |
dc.w $01C1,$01C3,$01C4,$01C6,$01C8,$01C9,$01CB,$01CC | |
dc.w $01CE,$01CF,$01D1,$01D3,$01D4,$01D6,$01D7,$01D9 | |
dc.w $01DA,$01DC,$01DD,$01DF,$01E1,$01E2,$01E4,$01E5 | |
dc.w $01E7,$01E8,$01EA,$01EC,$01ED,$01EF,$01F0,$01F2 | |
dc.w $01F3,$01F5,$01F7,$01F8,$01FA,$01FB,$01FD,$01FE | |
;------------------------------------------------------------------------- | |
; CHIPMEM DATA | |
;------------------------------------------------------------------------- | |
SECTION "ChipBSS",BSS_C | |
Blanks: ds.b 256 ; 256 null-bytes | |
StarBuffer1: ds.b 2*BUFW*BUFH ; Starfield buffers | |
StarBuffer2: ds.b 2*BUFW*BUFH | |
StarBuffer3: ds.b 2*BUFW*BUFH | |
;------------------------------------------------------------------------- | |
; COPPERLIST | |
;------------------------------------------------------------------------- | |
SECTION "ChipData",DATA_C | |
CopperList: dc.w $008E,$2471,$0090,$34D1 ; Display area | |
dc.w $0092,$0030,$0094,$00D8 | |
CopSprites: dc.w $0120,$0000,$0122,$0000 ; Sprite-pointers | |
dc.w $0124,$0000,$0126,$0000 | |
dc.w $0128,$0000,$012A,$0000 | |
dc.w $012C,$0000,$012E,$0000 | |
dc.w $0130,$0000,$0132,$0000 | |
dc.w $0134,$0000,$0136,$0000 | |
dc.w $0138,$0000,$013A,$0000 | |
dc.w $013C,$0000,$013E,$0000 | |
IFNE DTIME ; Palette | |
dc.w $0182,$0000 | |
ELSE | |
dc.w $0180,$0000 | |
ENDC | |
dc.w $0182,$0EEF | |
dc.w $0184,$0778 | |
dc.w $0186,$0EEF | |
dc.w $0102,$0000 | |
dc.w $0108,$002C,$010A,$002C ; Modulos | |
CopBplPtr: dc.w $00E0,$0000,$00E2,$0000 ; Bitplane-pointers | |
dc.w $00E4,$0000,$00E6,$0000 | |
dc.w $2407,$FFFE,$0100,$2200 ; Turn on planes on line $24 | |
dc.w $FFDF,$FFFE ; Wait for line $100 | |
dc.w $3407,$FFFE,$0100,$0000 ; Turn off planes on line $134 | |
dc.w $FFFF,$FFFE | |
;----------------------------------------------------------------------------- |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment