Created
October 19, 2014 09:31
-
-
Save jammin77/20bf484f3beb09448d22 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
* ASM-ONE FORMAT | |
section aaa,code_c | |
AbsExecBase: equ $4 | |
_LVOLoadView: equ -$DE | |
_LVOCloseLibrary: equ -$19E | |
_LVOOpenLibrary: equ -$228 | |
_LVOWaitTOF: equ -$10E | |
_LVOCacheControl: equ -$288 | |
_LVOSupervisor: equ -$1E | |
AttnFlags: equ $128 | |
tv_UserIntVects: equ $100 | |
tv_Lev3IntVect: equ $6C | |
intreq: equ $9C | |
cop1lch: equ $80 | |
dmacon: equ $96 | |
intenar: equ $1C | |
dmaconr: equ $2 | |
copjmp1: equ $88 | |
intena: equ $9A | |
spr0: equ $140 | |
sd_dataa: equ $4 | |
color0 equ $180 | |
bltafwm: equ $44 | |
ExecBase: equ $0 | |
LIB_VERSION: equ $14 | |
*-------------- OS Shutdown.. | |
ProgStart: move.l (AbsExecBase).w,a6 | |
moveq #0,d0 | |
lea GfxName(pc),a1 | |
jsr _LVOOpenLibrary(a6) ;open gfx library | |
lea GfxBase(pc),a0 | |
move.l d0,(a0) ;save base | |
beq GfxError | |
*-------------- Do "LoadView" to Reset all Copperlist regs to 0.. | |
move.l a6,a5 | |
move.l d0,a6 | |
lea _OurView(pc),a0 | |
move.l 34(a6),(a0) | |
sub.l a1,a1 | |
jsr _LVOLoadView(a6) ;get system copper | |
jsr _LVOWaitTOF(a6) ;(clears AGA Regs) | |
jsr _LVOWaitTOF(a6) ;wait for syslace | |
move.l a6,a1 | |
move.l a5,a6 | |
jsr _LVOCloseLibrary(a6) ;cloe gfxbase | |
*-------------- Determine what CPU we got... | |
move.l (AbsExecBase).w,a6 | |
jsr -132(a6) ;forbid() | |
*-------------- Preserve OS DMA/Intena then turn it off | |
KillDMA: lea $DFF000,a6 | |
move.w dmaconr(a6),OldDMA | |
move.w intenar(a6),OldINT | |
move.l #$7FFF7FFF,intena(a6) | |
move.w #$7FFF,dmacon(a6) | |
*-------------- setup screen | |
move.l #screen2,d0 | |
lea planes,a0 | |
move.w d0,6(a0) | |
swap d0 | |
move.w d0,2(a0) | |
swap d0 | |
move.l #copper,d0 | |
lea adress,a0 | |
move.w d0,6(a0) | |
swap d0 | |
move.w d0,2(a0) | |
move.w #%1000001111000000,$dff096 | |
move.w #%1100000000110000,$dff09a | |
*-------------- turn on new copperlist | |
move.l #copper,$dff080 | |
*-------------- Main vbl | |
loop cmp.b #255,$dff006 | |
bne.s loop | |
bsr.w clear | |
bsr.w vector | |
bsr.w flip_screen | |
btst #6,$bfe001 | |
bne.b loop | |
*-------------- restore os... | |
lea $dff000,a5 | |
move.l #$7FFF7FFF,intena(a5) ;kill interrupts | |
move.w #$7FFF,dmacon(a5) ;and screen | |
move.w OldINT(pc),d0 | |
bset #15,d0 | |
move.w d0,intena(a5) ;restore intena | |
move.w OldDMA(pc),d0 | |
bset #15,d0 | |
move.w d0,dmacon(a5) ;restore dma | |
move.l 4.w,a6 | |
jsr -138(a6) ;forbid() | |
move.l GfxBase(pc),a6 | |
move.l _OurView(pc),a1 | |
jsr _LVOLoadView(a6) ;free system copview | |
move.l $26(a6),cop1lch(a5) ;restore system copper | |
GfxError: moveq #0,d0 | |
rts ;exit back to OS... | |
GfxName: dc.b 'graphics.library',0,0 | |
GfxBase: dc.l 0 | |
_OurView: dc.l 0 | |
OldDMA: dc.w 0 | |
OldINT: dc.w 0 | |
OldLev3: dc.l 0 | |
_VBR: dc.l 0 | |
even | |
** FILLED VECTOR ************************************************************** | |
vector bsr.w angles ; calculate new view angle | |
lea.l points(pc),a1 ; point on next plane data | |
lea.l sin_table,a2 ; point at sinus table | |
lea.l cos_table,a3 ; point at cosinus table | |
obloop cmpi.w #$ffff,(a1) ; no more lines in this plane? | |
beq.w vecout | |
move.l screen_adress(pc),a0 ; lets work on this frame | |
move.w (a1)+,d0 ; x-normal | |
move.w (a1)+,d1 ; y-normal | |
move.w (a1)+,d2 ; z-normal | |
bsr.w normal ; rotate plane's vector-normal. | |
move.w (a1)+,d3 ; get z-coord limit | |
cmp.w d3,d2 ; front- or backside of plane? | |
bgt.s plane ; if front, then draw plane | |
move.w (a1)+,d0 | |
move.w (a1)+,d0 | |
lsl.w #3,d0 ; *4 *2 = delta-adress in bytes | |
ext.l d0 | |
add.l d0,a1 ; point p≈ ny plan | |
bra.b obloop | |
plane move.w (a1)+,d0 ; selected colour (bitplan) | |
move.w #10240,d1 | |
mulu d0,d1 | |
add.l d1,a0 | |
bsr.w light ; lightsource this coming plane | |
move.w (a1)+,counter ; antal linier i plan | |
linier move.w (a1)+,d0 ; get line coordinates | |
move.w (a1)+,d1 | |
move.w (a1)+,d2 | |
sub.w xcenter(pc),d0 ; object with center in origo | |
sub.w ycenter(pc),d1 | |
sub.w zcenter(pc),d2 | |
bsr.b rotate ; rotate 3d point | |
add.w zcenter(pc),d2 | |
bsr.w convert ; convert from 3d to 2d | |
add.w xcenter(pc),d0 | |
add.w ycenter(pc),d1 | |
bsr.w extrem ; note plane max and min | |
bsr.w line ; draw line from last point | |
sub.w #1,counter | |
tst.w counter ; plane finished? | |
bne.b linier ; if not: work on next line | |
bsr.w fill ; fill plane | |
bsr.w global ; note global extremes (clear) | |
move.w #256,ymin ; reset for next plane | |
clr.w ymax | |
move.w #320,xmin | |
clr.w xmax | |
bra.w obloop | |
vecout rts | |
** ROTATE 3D POINT ************************************************************ | |
rotate move.w xvinkel(pc),d5 ; x angle | |
add.w d5,d5 ; x angle *2 | |
move.w (a3,d5.w),d3 ; cos(xgrad) | |
muls d1,d3 ; y*cos(xgrad) | |
move.w (a2,d5.w),d4 ; sin(xgrad) | |
muls d2,d4 ; z*sin(xgrad) | |
sub.l d4,d3 ; y*cos(xgrad) - z*sin(xgrad) | |
add.l d3,d3 | |
add.l d3,d3 ; 4*(y*cos(xgrad)-z*sin(xgrad)) | |
move.l d3,y1 ; y-coordinate around x axis | |
move.w (a2,d5.w),d3 ; sin(xgrad) | |
muls d1,d3 ; y*sin(xgrad) | |
move.w (a3,d5.w),d4 ; cos(xgrad) | |
muls d2,d4 ; z*cos(xgrad) | |
add.l d4,d3 ; y*sin(xgrad) + z*cos(xgrad) | |
add.l d3,d3 | |
add.l d3,d3 ; 4*(y*sin(xgrad)+z*cos(xgrad)) | |
move.l d3,z1 ; z-coordinate around x axis | |
move.w yvinkel(pc),d6 ; y angle | |
add.w d6,d6 ; y angle *2 | |
move.w (a3,d6.w),d3 ; cos(ygrad) | |
muls d0,d3 ; x*cos(ygrad) | |
move.w (a2,d6.w),d4 ; sin(ygrad) | |
muls z1(pc),d4 ; z*sin(ygrad) | |
sub.l d4,d3 ; x*cos(ygrad) - z*sin(ygrad) | |
add.l d3,d3 | |
add.l d3,d3 ; 4*(x*cos(ygrad)-z*sin(ygrad)) | |
move.l d3,x2 ; x-coordinate around y axis | |
move.w (a2,d6.w),d2 ; sin(ygrad) | |
muls d0,d2 ; x*sin(ygrad) | |
move.w (a3,d6.w),d4 ; cos(ygrad) | |
muls z1(pc),d4 ; z*cos(ygrad) | |
add.l d4,d2 ; x*sin(ygrad) + z*cos(ygrad) | |
add.l d2,d2 | |
add.l d2,d2 ; 4*(x*sin(ygrad)+z*cos(ygrad)) | |
swap d2 ; fast division by 65535 | |
ext.l d2 ; z-coordinate around y and x | |
move.w zvinkel(pc),d7 ; z angle | |
add.w d7,d7 ; z angle *2 | |
move.w (a3,d7.w),d0 ; cos(zgrad) | |
muls x2(pc),d0 ; x*cos(zgrad) | |
move.w (a2,d7.w),d4 ; sin(zgrad) | |
muls y1(pc),d4 ; y*sin(zgrad) | |
sub.l d4,d0 ; x*cos(zgrad) - y*sin(zgrad) | |
add.l d0,d0 | |
add.l d0,d0 ; 4*(x*cos(zgrad)-y*sin(zgrad)) | |
swap d0 ; fast division by 65535 | |
ext.l d0 ; x-coordinate around y and z | |
move.w (a2,d7.w),d1 ; sin(zgrad) | |
muls x2(pc),d1 ; x*sin(zgrad) | |
move.w (a3,d7.w),d3 ; cos(zgrad) | |
muls y1(pc),d3 ; y*cos(zgrad) | |
add.l d3,d1 ; x*sin(zgrad) + y*cos(zgrad) | |
add.l d1,d1 | |
add.l d1,d1 ; 4*(x*sin(zgrad)+y*cos(zgrad)) | |
swap d1 ; fast division by 65535 | |
ext.l d1 ; y-coordinate around x and z | |
rts | |
** ROTATE PLANES VECTOR NORMAL ************************************************ | |
normal move.w xvinkel(pc),d5 | |
add.w d5,d5 | |
move.w yvinkel(pc),d6 | |
add.w d6,d6 | |
move.w (a2,d5.w),d3 | |
muls d1,d3 | |
move.w (a3,d5.w),d4 | |
muls d2,d4 | |
add.l d4,d3 | |
add.l d3,d3 | |
add.l d3,d3 | |
move.l d3,z1 | |
move.w (a2,d6.w),d2 | |
muls d0,d2 | |
move.w (a3,d6.w),d4 | |
muls z1(pc),d4 | |
add.l d4,d2 | |
add.l d2,d2 | |
add.l d2,d2 | |
swap d2 | |
ext.l d2 | |
rts | |
** CONVERT POINT FROM 3D TO 2D ************************************************ | |
convert muls zoom(pc),d0 | |
divs d2,d0 | |
muls zoom(pc),d1 | |
divs d2,d1 | |
rts | |
** DRAW LINE ****************************************************************** | |
line ext.l d0 ; rule out any crap! | |
ext.l d1 | |
tst.w (a1)+ ; draw line from last point? | |
bne.b draw | |
move.w d0,lastx ; no! then just save this point | |
move.w d1,lasty | |
rts | |
draw move.w lastx(pc),d2 | |
move.w d0,lastx | |
move.w lasty(pc),d3 | |
move.w d1,lasty | |
exg d1,d2 | |
cmp d2,d3 | |
beq.w drawout | |
bpl.b bline | |
exg d0,d1 | |
exg d2,d3 | |
bline subq #1,d3 | |
move d1,d6 | |
sub d0,d6 | |
bmi.s xl0 | |
move.w d3,d7 | |
sub.w d2,d7 | |
bmi.s xg0yl0 | |
move.w d7,d5 | |
sub.w d6,d5 | |
bmi.s o4 | |
move.b #1,bltc1 | |
bra.s octok | |
o4 move.b #17,bltc1 | |
bra.s octok | |
xg0yl0 neg.w d7 | |
move.w d7,d5 | |
sub.w d6,d5 | |
bmi.s o6 | |
move.b #5,bltc1 | |
bra.s octok | |
o6 move.b #25,bltc1 | |
bra.s octok | |
xl0 neg.w d6 | |
move.w d3,d7 | |
sub.w d2,d7 | |
bmi.s xl0yl0 | |
move.w d7,d5 | |
sub.w d6,d5 | |
bmi.s o5 | |
move.b #9,bltc1 | |
bra.s octok | |
o5 move.b #21,bltc1 | |
bra.s octok | |
xl0yl0 neg.w d7 | |
move.w d7,d5 | |
sub.w d6,d5 | |
bmi.s o7 | |
move.b #13,bltc1 | |
bra.s octok | |
o7 move.b #29,bltc1 | |
octok moveq #0,d4 | |
move.w d0,d4 | |
and.w #15,d4 | |
swap d4 | |
lsr.l #4,d4 | |
or.w #$b4a,d4 | |
moveq #0,d3 | |
lsl #3,d2 | |
move d2,d3 | |
lsl #2,d2 | |
add d2,d3 | |
lsr #3,d0 | |
and.b #$fe,d0 | |
add d0,d3 | |
add.l a0,d3 | |
tst d5 | |
bmi.s xmaxi | |
exg d6,d7 | |
neg.w d5 | |
xmaxi move.w d6,d1 | |
add.w #1,d1 | |
lsl.w #6,d1 | |
add.w #2,d1 | |
move.w d5,d0 | |
add.w d7,d0 | |
lsl.w #2,d7 | |
move.w d0,d2 | |
sub.w d6,d2 | |
add.w d2,d2 | |
tst.w d0 | |
bpl.s plus | |
or.b #64,bltc1 | |
plus add.w d0,d0 | |
ext.l d0 | |
wdraw btst #6,$dff002 | |
bne.s wdraw | |
clr d6 | |
move.b bltc1,d6 | |
or.w #2,d6 | |
move.w d6,$dff042 | |
move.w d4,$dff040 | |
clr $dff070 | |
move.w #$8000,$dff074 | |
move.w #$ffff,$dff072 | |
move.l #$ffffffff,$dff044 | |
move.w #40,$dff060 | |
move.w #40,$dff066 | |
move.w d7,$dff062 | |
move.w d2,$dff064 | |
move.l d3,$dff048 | |
move.l d3,$dff054 | |
move.l d0,$dff050 | |
move.w d1,$dff058 | |
drawout rts | |
** NOTE MIN AND MAX FOR THIS PLANE ******************************************** | |
extrem cmp.w ymin(pc),d1 | |
bhi.b noymin | |
move.w d1,ymin | |
noymin cmp.w ymax(pc),d1 | |
blt.b noymax | |
move.w d1,ymax | |
noymax cmp.w xmin(pc),d0 | |
bhi.b noxmin | |
move.w d0,xmin | |
noxmin cmp.w xmax(pc),d0 | |
blt.b noxmax | |
move.w d0,xmax | |
noxmax rts | |
** NOTE MIN AND MAX FOR ALL PLANES ******************************************** | |
global move.w xmin(pc),d0 | |
cmp.w globalxmin(pc),d0 | |
bhi.b noglobx | |
move.w d0,globalxmin | |
noglobx move.w xmax(pc),d0 | |
cmp.w globalxmax(pc),d0 | |
blt.b globoy1 | |
move.w d0,globalxmax | |
globoy1 move.w ymin(pc),d0 | |
cmp.w globalymin(pc),d0 | |
bhi.b nogloby | |
move.w d0,globalymin | |
nogloby move.w ymax(pc),d0 | |
cmp.w globalymax(pc),d0 | |
blt.b globout | |
move.w d0,globalymax | |
globout rts | |
** CLACULATE NEW VIEW ANGLE *************************************************** | |
angles move.w ydelta(pc),d0 | |
add.w d0,yvinkel ; new y angle | |
cmp.w #512,yvinkel | |
blt.b xangle | |
sub.w #512,yvinkel | |
xangle move.w xdelta(pc),d0 | |
add.w d0,xvinkel ; new x angle | |
cmp.w #512,xvinkel | |
blt.b zangle | |
sub.w #512,xvinkel | |
zangle move.w zdelta(pc),d0 | |
add.w d0,zvinkel ; new z angle | |
cmp.w #512,zvinkel | |
blt.b anglout | |
sub.w #512,zvinkel | |
anglout rts | |
** LIGHTSOURCE CURRENT PLANE ************************************************** | |
light add.l d0,d0 ; d0 = offset in offset-table! | |
lea colour,a4 | |
lea offset(pc),a5 | |
lea colours(pc),a6 | |
move.w (a5,d0.w),d1 ; d1 = offset from colour label | |
divu #7,d2 ; adjust to colourstable offset | |
add.l d2,d2 | |
move.w (a6,d2.w),d0 | |
move.w d0,(a4,d1.w) | |
rts | |
** FLIP BETWEEN FRAMESBUFFERS ************************************************* | |
flip_screen | |
cmp.l #screen1,screen_adress | |
beq.s flip_to_screen2 | |
lea.l planes,a0 | |
move.l #screen2,d0 | |
move.w d0,6(a0) | |
swap d0 | |
move.w d0,2(a0) | |
move.l #screen2+[256*40],d0 | |
move.w d0,14(a0) | |
swap d0 | |
move.w d0,10(a0) | |
move.l #screen2+[512*40],d0 | |
move.w d0,22(a0) | |
swap d0 | |
move.w d0,18(a0) | |
move.l #screen1,screen_adress | |
rts | |
flip_to_screen2 | |
lea.l planes,a0 | |
move.l #screen1,d0 | |
move.w d0,6(a0) | |
swap d0 | |
move.w d0,2(a0) | |
move.l #screen1+[256*40],d0 | |
move.w d0,14(a0) | |
swap d0 | |
move.w d0,10(a0) | |
move.l #screen1+[512*40],d0 | |
move.w d0,22(a0) | |
swap d0 | |
move.w d0,18(a0) | |
move.l #screen2,screen_adress | |
rts | |
** CLEAR SCREEN *************************************************************** | |
clear moveq #0,d1 | |
move.l d1,d2 | |
move.l d1,d3 | |
move.l screen_adress(pc),d0 | |
move.w globalxmin(pc),d1 | |
move.w globalxmax(pc),d2 | |
sub.w d1,d2 ; d2 = clear width in pixels | |
lsr.w #3,d1 ; d1 = left pixels in bytes | |
ext.l d1 | |
subq.w #1,d1 | |
add.l d1,d0 ; d0 = start address | |
lsr.w #4,d2 ; d2 = clear width in words | |
add.w #3,d2 ; for safety | |
move.w d2,d1 | |
mulu #2,d1 ; d1 = clear width in bytes | |
move.w #40,d3 | |
sub.w d1,d3 ; d3 = clear modulo | |
move.w globalymin(pc),d4 | |
sub.w safety(pc),d4 | |
move.w globalymax(pc),d5 | |
sub.w d4,d5 ; hight | |
add.w safety(pc),d5 | |
mulu #40,d4 | |
ext.l d4 | |
add.l d4,d0 | |
lsl.w #6,d5 | |
or.w d5,d2 ; hight and width | |
wait1 btst #14,$dff002 | |
bne.s wait1 | |
move.w #$0100,$dff040 | |
move.w #$0000,$dff042 | |
move.l #$ffffffff,$dff044 | |
move.l d0,$dff054 | |
move.w d3,$dff066 | |
move.w d2,$dff058 | |
add.l #10240,d0 ; point on next plane | |
wait2 btst #14,$dff002 | |
bne.s wait2 | |
move.w #$0100,$dff040 | |
move.w #$0000,$dff042 | |
move.l d0,$dff054 | |
move.w d3,$dff066 | |
move.w d2,$dff058 | |
add.l #10240,d0 ; point on next plane | |
wait3 btst #14,$dff002 | |
bne.s wait3 | |
move.w #$0100,$dff040 | |
move.w #$0000,$dff042 | |
move.l d0,$dff054 | |
move.w d3,$dff066 | |
move.w d2,$dff058 | |
move.w #320,globalxmin ; reset globals | |
move.w #0,globalxmax | |
move.w #256,globalymin | |
move.w #0,globalymax | |
rts | |
** blitter fill (descending mode) ********************************************* | |
fill move.l a0,d0 ; screen address | |
moveq #0,d1 | |
move.l d1,d2 | |
move.l d1,d3 | |
move.w ymax(pc),d1 | |
mulu #40,d1 | |
add.l d1,d0 ; d0 = buttom vertical line | |
move.w #320,d2 | |
sub.w xmax(pc),d2 | |
lsr.w #3,d2 ; 16 pixel precision | |
ext.l d2 | |
sub.l d2,d0 ; d0 = start address | |
move.w xmax(pc),d1 | |
sub.w xmin(pc),d1 ; d1 = fill width in pixels | |
lsr.w #4,d1 ; d1 = fill width in words | |
addq.w #3,d1 | |
move.w d1,d2 | |
move.w #40,d3 ; full screen modulo | |
add.w d2,d2 ; d2 = fill width in bytes | |
sub.w d2,d3 ; d3 = fill modulo | |
move.w ymax(pc),d2 | |
sub.w ymin(pc),d2 ; d2 = hight in pixels | |
lsl.w #6,d2 ; place hight on right bits | |
or.w d2,d1 ; d1 = fill hight and width | |
fready btst #14,$dff002 | |
bne.b fready | |
move.l d0,$dff050 | |
move.l d0,$dff054 | |
move.w #$09f0,$dff040 ; minterm d=a | |
move.w #%0000000000010010,$dff042 ; exclusive fill (bit 4) | |
move.l #$ffffffff,$dff044 ; masks | |
move.w d3,$dff064 ; a modulo | |
move.w d3,$dff066 ; d modulo | |
move.w d1,$dff058 ; fill hight and start address | |
we3draw btst #6,$dff002 | |
bne.s we3draw | |
rts | |
** DATA *********************************************************************** | |
screen_adress dc.l screen1 | |
xcenter dc.w 159 | |
ycenter dc.w 128 | |
zcenter dc.w 460 | |
zoom dc.w 210 | |
safety dc.w 6 ; high safety takes more raster | |
counter dc.w 0 | |
xvinkel dc.w 0 | |
yvinkel dc.w 0 | |
zvinkel dc.w 0 | |
ydelta dc.w 2 | |
xdelta dc.w 3 | |
zdelta dc.w 1 | |
y1 dc.l 0 | |
z1 dc.l 0 | |
x2 dc.l 0 | |
lastx dc.w 0 | |
lasty dc.w 0 | |
ymin dc.w 256 | |
ymax dc.w 0 | |
xmin dc.w 320 | |
xmax dc.w 0 | |
globalymin dc.w 120 | |
globalymax dc.w 140 | |
globalxmin dc.w 150 | |
globalxmax dc.w 170 | |
offset dc.w 2,6,10,2,2,2,2,2 | |
colours dc.w $000,$002,$013,$024,$035,$046,$057,$068 | |
dc.w $079,$08a,$09b,$0ac,$0bd,$0ce,$0df,$fff | |
bltc1 dc.b 0 | |
even | |
** OBJECT DATA **************************************************************** | |
** | |
** STRUCTURE: DC.W XN,YN,ZX,LIMIT,BITPLAN,COUNT | |
** DC.W X,Y,Z,S | |
** | |
** (XN,YN,ZN): PLANE NORMAL-VECTOR (MUST STAND IN AN 90∞ ANGLE ON PLANE). | |
** LIMIT: ZN LIMIT (TO DETERMINE WHEN WE ARE SEEING FRONT OR BACKSIDE). | |
** BITPLAN: SELECT COLOUR FOR THIS PLANE 0,1,2. | |
** COUNT: NUMBER OF POINTS THAT THIS PLANE CONSISTS OF. | |
** (X,Y,Z): POINT COORDINATES. | |
** S: 0:MOVE TO THIS POINT. 1:DRAW LINE FROM THIS POINT TO LAST ONE. | |
** | |
points dc.w 0,0,100,27,0,5 | |
dc.w 29,-2,330,0 | |
dc.w 29,258,330,1 | |
dc.w 289,258,330,1 | |
dc.w 289,-2,330,1 | |
dc.w 29,-2,330,1 | |
dc.w 100,0,0,27,1,5 | |
dc.w 29,-2,590,0 | |
dc.w 29,258,590,1 | |
dc.w 29,258,330,1 | |
dc.w 29,-2,330,1 | |
dc.w 29,-2,590,1 | |
dc.w -100,0,0,27,1,5 | |
dc.w 289,-2,590,0 | |
dc.w 289,258,590,1 | |
dc.w 289,258,330,1 | |
dc.w 289,-2,330,1 | |
dc.w 289,-2,590,1 | |
dc.w 0,0,-100,27,0,5 | |
dc.w 29,-2,590,0 | |
dc.w 29,258,590,1 | |
dc.w 289,258,590,1 | |
dc.w 289,-2,590,1 | |
dc.w 29,-2,590,1 | |
dc.w 0,-100,0,27,2,5 | |
dc.w 29,258,330,0 | |
dc.w 29,258,590,1 | |
dc.w 289,258,590,1 | |
dc.w 289,258,330,1 | |
dc.w 29,258,330,1 | |
dc.w 0,100,0,27,2,5 | |
dc.w 29,-2,330,0 | |
dc.w 29,-2,590,1 | |
dc.w 289,-2,590,1 | |
dc.w 289,-2,330,1 | |
dc.w 29,-2,330,1 | |
dc.w $ffff,$ffff ; signal: no more planes to draw! | |
even | |
section b,data_c | |
** copperlist ***************************************************************** | |
copper dc.w $0106,$0000,$01fc,$0000 | |
dc.w $008e,$2c81,$0090,$2cc1 | |
dc.w $0092,$0038,$0094,$00d0 | |
dc.w $0102,$0000,$0104,$0000 | |
dc.w $0108,$0000,$010a,$0000 | |
colour dc.w $0182,$0400 ; 2 | |
dc.w $0184,$0600 ; 6 | |
dc.w $0188,$0800 ; 10 | |
dc.w $0186,$0999,$018a,$00f0 | |
dc.w $018c,$00f0,$018e,$0813 | |
planes dc.w $00e0,$0000,$00e2,$0000 | |
dc.w $00e4,$0000,$00e6,$0000 | |
dc.w $00e8,$0000,$00ea,$0000 | |
dc.w $3001,$ff00,$0100,$3200 | |
dc.w $ffe1,$fffe,$2901,$ff00 | |
dc.w $0100,$0200 | |
adress dc.w $0084,$0000 | |
dc.w $0086,$0000 | |
dc.w $008a,$0000 ; restart copperlist | |
dc.w $ffff,$fffe | |
** SCREEN ********************************************************************* | |
even | |
screen1 ds.b [320/8*768] | |
screen2 ds.b [320/8*768] | |
even | |
sin_table | |
dc.w 0 | |
dc.w 201 | |
dc.w 402 | |
dc.w 603 | |
dc.w 803 | |
dc.w 1004 | |
dc.w 1205 | |
dc.w 1405 | |
dc.w 1605 | |
dc.w 1805 | |
dc.w 2005 | |
dc.w 2204 | |
dc.w 2404 | |
dc.w 2602 | |
dc.w 2801 | |
dc.w 2998 | |
dc.w 3196 | |
dc.w 3393 | |
dc.w 3589 | |
dc.w 3785 | |
dc.w 3980 | |
dc.w 4175 | |
dc.w 4369 | |
dc.w 4563 | |
dc.w 4756 | |
dc.w 4948 | |
dc.w 5139 | |
dc.w 5329 | |
dc.w 5519 | |
dc.w 5708 | |
dc.w 5896 | |
dc.w 6083 | |
dc.w 6269 | |
dc.w 6455 | |
dc.w 6639 | |
dc.w 6822 | |
dc.w 7005 | |
dc.w 7186 | |
dc.w 7366 | |
dc.w 7545 | |
dc.w 7723 | |
dc.w 7900 | |
dc.w 8075 | |
dc.w 8249 | |
dc.w 8423 | |
dc.w 8594 | |
dc.w 8765 | |
dc.w 8934 | |
dc.w 9102 | |
dc.w 9268 | |
dc.w 9434 | |
dc.w 9597 | |
dc.w 9759 | |
dc.w 9920 | |
dc.w 10079 | |
dc.w 10237 | |
dc.w 10393 | |
dc.w 10548 | |
dc.w 10701 | |
dc.w 10853 | |
dc.w 11002 | |
dc.w 11150 | |
dc.w 11297 | |
dc.w 11442 | |
dc.w 11585 | |
dc.w 11726 | |
dc.w 11866 | |
dc.w 12003 | |
dc.w 12139 | |
dc.w 12273 | |
dc.w 12406 | |
dc.w 12536 | |
dc.w 12665 | |
dc.w 12791 | |
dc.w 12916 | |
dc.w 13038 | |
dc.w 13159 | |
dc.w 13278 | |
dc.w 13395 | |
dc.w 13510 | |
dc.w 13622 | |
dc.w 13733 | |
dc.w 13842 | |
dc.w 13948 | |
dc.w 14053 | |
dc.w 14155 | |
dc.w 14255 | |
dc.w 14353 | |
dc.w 14449 | |
dc.w 14543 | |
dc.w 14634 | |
dc.w 14723 | |
dc.w 14810 | |
dc.w 14895 | |
dc.w 14978 | |
dc.w 15058 | |
dc.w 15136 | |
dc.w 15212 | |
dc.w 15286 | |
dc.w 15357 | |
dc.w 15426 | |
dc.w 15492 | |
dc.w 15557 | |
dc.w 15618 | |
dc.w 15678 | |
dc.w 15735 | |
dc.w 15790 | |
dc.w 15842 | |
dc.w 15892 | |
dc.w 15940 | |
dc.w 15985 | |
dc.w 16028 | |
dc.w 16069 | |
dc.w 16107 | |
dc.w 16142 | |
dc.w 16175 | |
dc.w 16206 | |
dc.w 16234 | |
dc.w 16260 | |
dc.w 16284 | |
dc.w 16305 | |
dc.w 16323 | |
dc.w 16339 | |
dc.w 16353 | |
dc.w 16364 | |
dc.w 16372 | |
dc.w 16379 | |
cos_table | |
dc.w 16382 | |
dc.w 16384 | |
dc.w 16382 | |
dc.w 16379 | |
dc.w 16372 | |
dc.w 16364 | |
dc.w 16353 | |
dc.w 16339 | |
dc.w 16323 | |
dc.w 16305 | |
dc.w 16284 | |
dc.w 16260 | |
dc.w 16234 | |
dc.w 16206 | |
dc.w 16175 | |
dc.w 16142 | |
dc.w 16107 | |
dc.w 16069 | |
dc.w 16028 | |
dc.w 15985 | |
dc.w 15940 | |
dc.w 15892 | |
dc.w 15842 | |
dc.w 15790 | |
dc.w 15735 | |
dc.w 15678 | |
dc.w 15618 | |
dc.w 15557 | |
dc.w 15492 | |
dc.w 15426 | |
dc.w 15357 | |
dc.w 15286 | |
dc.w 15212 | |
dc.w 15136 | |
dc.w 15058 | |
dc.w 14978 | |
dc.w 14895 | |
dc.w 14810 | |
dc.w 14723 | |
dc.w 14634 | |
dc.w 14543 | |
dc.w 14449 | |
dc.w 14353 | |
dc.w 14255 | |
dc.w 14155 | |
dc.w 14053 | |
dc.w 13948 | |
dc.w 13842 | |
dc.w 13733 | |
dc.w 13622 | |
dc.w 13510 | |
dc.w 13395 | |
dc.w 13278 | |
dc.w 13159 | |
dc.w 13038 | |
dc.w 12916 | |
dc.w 12791 | |
dc.w 12665 | |
dc.w 12536 | |
dc.w 12406 | |
dc.w 12273 | |
dc.w 12139 | |
dc.w 12003 | |
dc.w 11866 | |
dc.w 11726 | |
dc.w 11585 | |
dc.w 11442 | |
dc.w 11297 | |
dc.w 11150 | |
dc.w 11002 | |
dc.w 10853 | |
dc.w 10701 | |
dc.w 10548 | |
dc.w 10393 | |
dc.w 10237 | |
dc.w 10079 | |
dc.w 9920 | |
dc.w 9759 | |
dc.w 9597 | |
dc.w 9434 | |
dc.w 9268 | |
dc.w 9102 | |
dc.w 8934 | |
dc.w 8765 | |
dc.w 8594 | |
dc.w 8423 | |
dc.w 8249 | |
dc.w 8075 | |
dc.w 7900 | |
dc.w 7723 | |
dc.w 7545 | |
dc.w 7366 | |
dc.w 7186 | |
dc.w 7005 | |
dc.w 6822 | |
dc.w 6639 | |
dc.w 6455 | |
dc.w 6269 | |
dc.w 6083 | |
dc.w 5896 | |
dc.w 5708 | |
dc.w 5519 | |
dc.w 5329 | |
dc.w 5139 | |
dc.w 4948 | |
dc.w 4756 | |
dc.w 4563 | |
dc.w 4369 | |
dc.w 4175 | |
dc.w 3980 | |
dc.w 3785 | |
dc.w 3589 | |
dc.w 3393 | |
dc.w 3196 | |
dc.w 2998 | |
dc.w 2801 | |
dc.w 2602 | |
dc.w 2404 | |
dc.w 2204 | |
dc.w 2005 | |
dc.w 1805 | |
dc.w 1605 | |
dc.w 1405 | |
dc.w 1205 | |
dc.w 1004 | |
dc.w 803 | |
dc.w 603 | |
dc.w 402 | |
dc.w 201 | |
dc.w -1 | |
dc.w -202 | |
dc.w -403 | |
dc.w -604 | |
dc.w -804 | |
dc.w -1005 | |
dc.w -1206 | |
dc.w -1406 | |
dc.w -1606 | |
dc.w -1806 | |
dc.w -2006 | |
dc.w -2205 | |
dc.w -2405 | |
dc.w -2603 | |
dc.w -2802 | |
dc.w -2999 | |
dc.w -3197 | |
dc.w -3394 | |
dc.w -3590 | |
dc.w -3786 | |
dc.w -3981 | |
dc.w -4176 | |
dc.w -4370 | |
dc.w -4564 | |
dc.w -4757 | |
dc.w -4949 | |
dc.w -5140 | |
dc.w -5330 | |
dc.w -5520 | |
dc.w -5709 | |
dc.w -5897 | |
dc.w -6084 | |
dc.w -6270 | |
dc.w -6456 | |
dc.w -6640 | |
dc.w -6823 | |
dc.w -7006 | |
dc.w -7187 | |
dc.w -7367 | |
dc.w -7546 | |
dc.w -7724 | |
dc.w -7901 | |
dc.w -8076 | |
dc.w -8250 | |
dc.w -8424 | |
dc.w -8595 | |
dc.w -8766 | |
dc.w -8935 | |
dc.w -9103 | |
dc.w -9269 | |
dc.w -9435 | |
dc.w -9598 | |
dc.w -9760 | |
dc.w -9921 | |
dc.w -10080 | |
dc.w -10238 | |
dc.w -10394 | |
dc.w -10549 | |
dc.w -10702 | |
dc.w -10854 | |
dc.w -11003 | |
dc.w -11151 | |
dc.w -11298 | |
dc.w -11443 | |
dc.w -11586 | |
dc.w -11727 | |
dc.w -11867 | |
dc.w -12004 | |
dc.w -12140 | |
dc.w -12274 | |
dc.w -12407 | |
dc.w -12537 | |
dc.w -12666 | |
dc.w -12792 | |
dc.w -12917 | |
dc.w -13039 | |
dc.w -13160 | |
dc.w -13279 | |
dc.w -13396 | |
dc.w -13511 | |
dc.w -13623 | |
dc.w -13734 | |
dc.w -13843 | |
dc.w -13949 | |
dc.w -14054 | |
dc.w -14156 | |
dc.w -14256 | |
dc.w -14354 | |
dc.w -14450 | |
dc.w -14544 | |
dc.w -14635 | |
dc.w -14724 | |
dc.w -14811 | |
dc.w -14896 | |
dc.w -14979 | |
dc.w -15059 | |
dc.w -15137 | |
dc.w -15213 | |
dc.w -15287 | |
dc.w -15358 | |
dc.w -15427 | |
dc.w -15493 | |
dc.w -15558 | |
dc.w -15619 | |
dc.w -15679 | |
dc.w -15736 | |
dc.w -15791 | |
dc.w -15843 | |
dc.w -15893 | |
dc.w -15941 | |
dc.w -15986 | |
dc.w -16029 | |
dc.w -16070 | |
dc.w -16108 | |
dc.w -16143 | |
dc.w -16176 | |
dc.w -16207 | |
dc.w -16235 | |
dc.w -16261 | |
dc.w -16285 | |
dc.w -16306 | |
dc.w -16324 | |
dc.w -16340 | |
dc.w -16354 | |
dc.w -16365 | |
dc.w -16373 | |
dc.w -16380 | |
dc.w -16383 | |
dc.w -16384 | |
dc.w -16383 | |
dc.w -16380 | |
dc.w -16373 | |
dc.w -16365 | |
dc.w -16354 | |
dc.w -16340 | |
dc.w -16324 | |
dc.w -16306 | |
dc.w -16285 | |
dc.w -16261 | |
dc.w -16235 | |
dc.w -16207 | |
dc.w -16176 | |
dc.w -16143 | |
dc.w -16108 | |
dc.w -16070 | |
dc.w -16029 | |
dc.w -15986 | |
dc.w -15941 | |
dc.w -15893 | |
dc.w -15843 | |
dc.w -15791 | |
dc.w -15736 | |
dc.w -15679 | |
dc.w -15619 | |
dc.w -15558 | |
dc.w -15493 | |
dc.w -15427 | |
dc.w -15358 | |
dc.w -15287 | |
dc.w -15213 | |
dc.w -15137 | |
dc.w -15059 | |
dc.w -14979 | |
dc.w -14896 | |
dc.w -14811 | |
dc.w -14724 | |
dc.w -14635 | |
dc.w -14544 | |
dc.w -14450 | |
dc.w -14354 | |
dc.w -14256 | |
dc.w -14156 | |
dc.w -14054 | |
dc.w -13949 | |
dc.w -13843 | |
dc.w -13734 | |
dc.w -13623 | |
dc.w -13511 | |
dc.w -13396 | |
dc.w -13279 | |
dc.w -13160 | |
dc.w -13039 | |
dc.w -12917 | |
dc.w -12792 | |
dc.w -12666 | |
dc.w -12537 | |
dc.w -12407 | |
dc.w -12274 | |
dc.w -12140 | |
dc.w -12004 | |
dc.w -11867 | |
dc.w -11727 | |
dc.w -11586 | |
dc.w -11443 | |
dc.w -11298 | |
dc.w -11151 | |
dc.w -11003 | |
dc.w -10854 | |
dc.w -10702 | |
dc.w -10549 | |
dc.w -10394 | |
dc.w -10238 | |
dc.w -10080 | |
dc.w -9921 | |
dc.w -9760 | |
dc.w -9598 | |
dc.w -9435 | |
dc.w -9269 | |
dc.w -9103 | |
dc.w -8935 | |
dc.w -8766 | |
dc.w -8595 | |
dc.w -8424 | |
dc.w -8250 | |
dc.w -8076 | |
dc.w -7901 | |
dc.w -7724 | |
dc.w -7546 | |
dc.w -7367 | |
dc.w -7187 | |
dc.w -7006 | |
dc.w -6823 | |
dc.w -6640 | |
dc.w -6456 | |
dc.w -6270 | |
dc.w -6084 | |
dc.w -5897 | |
dc.w -5709 | |
dc.w -5520 | |
dc.w -5330 | |
dc.w -5140 | |
dc.w -4949 | |
dc.w -4757 | |
dc.w -4564 | |
dc.w -4370 | |
dc.w -4176 | |
dc.w -3981 | |
dc.w -3786 | |
dc.w -3590 | |
dc.w -3394 | |
dc.w -3197 | |
dc.w -2999 | |
dc.w -2802 | |
dc.w -2603 | |
dc.w -2405 | |
dc.w -2205 | |
dc.w -2006 | |
dc.w -1806 | |
dc.w -1606 | |
dc.w -1406 | |
dc.w -1206 | |
dc.w -1005 | |
dc.w -804 | |
dc.w -604 | |
dc.w -403 | |
dc.w -202 | |
dc.w -1 | |
dc.w 201 | |
dc.w 402 | |
dc.w 603 | |
dc.w 803 | |
dc.w 1004 | |
dc.w 1205 | |
dc.w 1405 | |
dc.w 1605 | |
dc.w 1805 | |
dc.w 2005 | |
dc.w 2204 | |
dc.w 2404 | |
dc.w 2602 | |
dc.w 2801 | |
dc.w 2998 | |
dc.w 3196 | |
dc.w 3393 | |
dc.w 3589 | |
dc.w 3785 | |
dc.w 3980 | |
dc.w 4175 | |
dc.w 4369 | |
dc.w 4563 | |
dc.w 4756 | |
dc.w 4948 | |
dc.w 5139 | |
dc.w 5329 | |
dc.w 5519 | |
dc.w 5708 | |
dc.w 5896 | |
dc.w 6083 | |
dc.w 6269 | |
dc.w 6455 | |
dc.w 6639 | |
dc.w 6822 | |
dc.w 7005 | |
dc.w 7186 | |
dc.w 7366 | |
dc.w 7545 | |
dc.w 7723 | |
dc.w 7900 | |
dc.w 8075 | |
dc.w 8249 | |
dc.w 8423 | |
dc.w 8594 | |
dc.w 8765 | |
dc.w 8934 | |
dc.w 9102 | |
dc.w 9268 | |
dc.w 9434 | |
dc.w 9597 | |
dc.w 9759 | |
dc.w 9920 | |
dc.w 10079 | |
dc.w 10237 | |
dc.w 10393 | |
dc.w 10548 | |
dc.w 10701 | |
dc.w 10853 | |
dc.w 11002 | |
dc.w 11150 | |
dc.w 11297 | |
dc.w 11442 | |
dc.w 11585 | |
dc.w 11726 | |
dc.w 11866 | |
dc.w 12003 | |
dc.w 12139 | |
dc.w 12273 | |
dc.w 12406 | |
dc.w 12536 | |
dc.w 12665 | |
dc.w 12791 | |
dc.w 12916 | |
dc.w 13038 | |
dc.w 13159 | |
dc.w 13278 | |
dc.w 13395 | |
dc.w 13510 | |
dc.w 13622 | |
dc.w 13733 | |
dc.w 13842 | |
dc.w 13948 | |
dc.w 14053 | |
dc.w 14155 | |
dc.w 14255 | |
dc.w 14353 | |
dc.w 14449 | |
dc.w 14543 | |
dc.w 14634 | |
dc.w 14723 | |
dc.w 14810 | |
dc.w 14895 | |
dc.w 14978 | |
dc.w 15058 | |
dc.w 15136 | |
dc.w 15212 | |
dc.w 15286 | |
dc.w 15357 | |
dc.w 15426 | |
dc.w 15492 | |
dc.w 15557 | |
dc.w 15618 | |
dc.w 15678 | |
dc.w 15735 | |
dc.w 15790 | |
dc.w 15842 | |
dc.w 15892 | |
dc.w 15940 | |
dc.w 15985 | |
dc.w 16028 | |
dc.w 16069 | |
dc.w 16107 | |
dc.w 16142 | |
dc.w 16175 | |
dc.w 16206 | |
dc.w 16234 | |
dc.w 16260 | |
dc.w 16284 | |
dc.w 16305 | |
dc.w 16323 | |
dc.w 16339 | |
dc.w 16353 | |
dc.w 16364 | |
dc.w 16372 | |
dc.w 16379 | |
dc.w 16382 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment