demosolid.s 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848
  1. section Solid,Code_C
  2. OPT C-,D+
  3. BPR EQU 64
  4. GRAPHICS_MOD EQU 0
  5. SCREEN_MOD EQU 56
  6. XSIZE EQU 4
  7. YSIZE EQU 36
  8. XDEST EQU 42
  9. YDEST EQU 1
  10. SCROLL_WIDTH EQU 27
  11. NOP EQU 18
  12. NOC EQU 0
  13. CUSTOM EQU $DFF000
  14. BPLCONO EQU $100
  15. BPLCON1 EQU $102
  16. BPLCON2 EQU $104
  17. BPL1MOD EQU $108
  18. DDFSTRT EQU $092
  19. DDFSTOP EQU $094
  20. DIWSTRT EQU $08E
  21. DIWSTOP EQU $090
  22. VPSOR EQU $004
  23. COLOUR0 EQU $180
  24. COLOUR1 EQU $182
  25. COLOUR2 EQU $184
  26. COLOUR3 EQU $186
  27. DMACON EQU $096
  28. COP1LCH EQU $080
  29. COPJMP1 EQU $088
  30. DMAF_BLITTER EQU $0040
  31. DMAF_BLTDONE EQU $4000
  32. DMAF_BLTNZERO EQU $2000
  33. DMAB_BLTDONE EQU 14
  34. bltddat EQU $000
  35. dmaconr EQU $002
  36. vposr EQU $004
  37. vhposr EQU $006
  38. dskdatr EQU $008
  39. joy0dat EQU $00A
  40. joy1dat EQU $00C
  41. clxdat EQU $00E
  42. bltcon0 EQU $040
  43. bltcon1 EQU $042
  44. bltafwm EQU $044
  45. bltalwm EQU $046
  46. bltcpt EQU $048
  47. bltbpt EQU $04C
  48. bltapt EQU $050
  49. bltdpt EQU $054
  50. bltsize EQU $058
  51. bltcmod EQU $060
  52. bltbmod EQU $062
  53. bltamod EQU $064
  54. bltdmod EQU $066
  55. bltcdat EQU $070
  56. bltbdat EQU $072
  57. bltadat EQU $074
  58. dsksync EQU $07E
  59. cop1lc EQU $080
  60. cop2lc EQU $084
  61. bpl2mod EQU $10A
  62. bpldat EQU $110
  63. intreq EQU $09c
  64. intreqr EQU $01e
  65. MODE_OLDFILE EQU 1005
  66. MODE_NEWFILE EQU 1006
  67. start:
  68. move.l 4,a6
  69. move.l #(256*64)*3,d0 ;
  70. move.l #1<<1+1<<16,d1 ;chip and clear
  71. jsr -198(a6) ;try
  72. tst.l d0
  73. bne allocated_mem
  74. rts ;otherwise quit
  75. allocated_mem
  76. move.l d0,Memory_Base
  77. move.l d0,Vector_Plane
  78. add.l #(256*64),d0
  79. move.l d0,Vector_Buffer
  80. add.l #(256*64),d0
  81. move.l d0,blank
  82. move.l 4,a6
  83. jsr -132(A6) ;DISABLE tasking
  84. bsr setup
  85. bsr Main_Demo
  86. QUIT_OUT
  87. MOVE.L 4,A6
  88. JSR -138(A6) ;ENABLE tasking
  89. move.l 4,a6
  90. move.l #(256*64)*3,d0
  91. move.l Memory_Base,a1
  92. jsr -210(a6)
  93. MOVE.L #graf_NAME,A1
  94. MOVEQ #0,D0
  95. JSR -552(A6) ;OPEN GRAPHICS LIBRARY
  96. MOVE.L D0,a4
  97. MOVE.W #$8020,DMACON+$dff000 ; sprites back
  98. move.l 38(a4),$dff080
  99. clr.w $dff088
  100. move.b #$9b,$bfed01
  101. rts
  102. graf_NAME dc.b "graphics.library",0
  103. even
  104. setup
  105. move.l #sinradtable,a0
  106. loopie
  107. move.w (a0),d0
  108. asr.w #2,d0
  109. move.w d0,(a0)+
  110. cmpa.l #endsinrad,a0
  111. blt loopie
  112. LEA CUSTOM,A0
  113. MOVE.W #$1200,BPLCONO(A0)
  114. MOVE.W #0,BPLCON1(A0)
  115. MOVE.W #22,BPL1MOD(A0)
  116. MOVE.W #$0030,DDFSTRT(A0)
  117. MOVE.W #$00D0,DDFSTOP(A0)
  118. MOVE.W #$2C81,DIWSTRT(A0)
  119. MOVE.W #$2CC1,DIWSTOP(A0)
  120. MOVE.W #$0000,COLOUR0(A0)
  121. MOVE.W #$0bbb,COLOUR1(A0)
  122. MOVE.W #$0f02,COLOUR2(A0)
  123. MOVE.W #$0f02,COLOUR3(A0)
  124. MOVE.W #$0a02,$dff188
  125. MOVE.W #$0a02,$dff18a
  126. MOVE.W #$0602,$dff18c
  127. MOVE.W #$0602,$dff18e
  128. MOVE.W #$0000,$dff190
  129. MOVE.W #$0ccc,$dff192
  130. MOVE.W #$0aaa,$dff194
  131. MOVE.W #$0666,$dff196
  132. MOVE.W #$024c,$dff198
  133. MOVE.W #$0444,$dff19A
  134. MOVE.W #$000a,$dff19C
  135. MOVE.W #$008d,$dff19E
  136. MOVE.L #COPPERL,COP1LCH(A0)
  137. MOVE.W COPJMP1(A0),D0
  138. MOVE.W #$8380,DMACON(A0)
  139. move.w #32,dmacon(a0) ; sprites off
  140. move.b #$7f,$bfed01
  141. move.l Blank,d0
  142. move.w d0,Plane2_Lo
  143. move.w d0,Plane3_Lo
  144. move.w d0,Plane4_Lo
  145. move.w d0,Plane5_Lo
  146. move.w d0,Plane6_Lo
  147. swap d0
  148. move.w d0,Plane2_Hi
  149. move.w d0,Plane3_Hi
  150. move.w d0,Plane4_Hi
  151. move.w d0,Plane5_Hi
  152. move.w d0,Plane6_Hi
  153. rts
  154. Main_Demo
  155. move.l #$dff000,a6
  156. bsr vectors
  157. wait btst.b #6,$bfe001
  158. bne.s main_demo
  159. btst.b #10,$dff016
  160. bne.s main_demo
  161. rts
  162. Vectors
  163. move.w $dff006,d0
  164. andi.w #$ff00,d0
  165. cmp.w #$0000,d0
  166. bne.s vectors
  167. move.l Vector_Buffer,d0
  168. move.l Vector_Plane,d1
  169. move.l d1,Vector_Buffer
  170. move.l d0,Vector_Plane
  171. MOVE.W D0,Plane1_Lo
  172. SWAP D0
  173. MOVE.W D0,Plane1_Hi
  174. clear BTST #14,DMACONR(a6)
  175. BNE.s clear
  176. MOVE.W #$00,BLTDDAT(a6)
  177. MOVE.W #$00,BLTADAT(a6)
  178. MOVE.L Vector_Buffer,BLTDPT(a6)
  179. MOVE.W #0,BLTDMOD(a6)
  180. move.l #-1,BLTAFWM(a6)
  181. MOVE.l #$01f00000,BLTCON0(a6)
  182. MOVE.W #clearsize,BLTSIZE(a6)
  183. cmp.w #50,appearance_timer
  184. bhi.s no_fade
  185. move.w #1,start_fade
  186. no_fade
  187. *subi.w #1,Appearance_Timer
  188. bne.s dont_change_object
  189. move.w #2,start_fade
  190. move.l Object_Pointer,A0 ; Current object block
  191. add.l #ParameterSize,A0 ; Next object (nice)
  192. cmp.l #thisisthelastblockmatey,A0
  193. bne.s sodoffresetting
  194. move.l #Parameters_for_3d_images,A0
  195. sodoffresetting
  196. move.l A0,Object_Pointer
  197. move.w 12(A0),rotate1
  198. move.w 14(A0),rotate2
  199. move.w 16(A0),rotate3
  200. move.w 24(A0),Appearance_Timer
  201. move.w 30(a0),oe ;forget ee
  202. move.w 32(a0),$182(a6)
  203. dont_change_object
  204. move.l Object_Pointer,A0
  205. move.l (A0),a3 ;shape data
  206. move.w rotate1,d0 ;rotation factor 0 - x, 1- y, 2 - z
  207. move.w rotate2,d1 ;no of degrees to rotate
  208. move.w rotate3,d2
  209. move.w 8(A0),d5 ;no of points to rotate
  210. btst.b #6,$bfe001
  211. bne.s dont_rotate
  212. add.w #15,oe
  213. add.w 18(a0),d0
  214. add.w 20(a0),d1
  215. add.w 22(a0),d2
  216. dont_rotate
  217. move.w #1,d3 ; lower limits
  218. move.w #360,d4 ; upper limits
  219. cmp.w d3,d0
  220. bge.s test2
  221. add.w d4,d0
  222. bra.s test3
  223. test2
  224. cmp.w d4,d0
  225. ble.s test3
  226. sub.w d4,d0
  227. test3
  228. cmp.w d4,d1
  229. ble.s test4
  230. sub.w d4,d1
  231. bra.s test5
  232. test4
  233. cmp.w d3,d1
  234. bge.s test5
  235. add.w d4,d1
  236. test5
  237. cmp.w d4,d2
  238. ble.s last_test
  239. sub.w d4,d2
  240. bra.s finished_vectors
  241. last_test
  242. cmp.w d3,d2
  243. bge.s finished_vectors
  244. add.w d4,d2
  245. finished_vectors
  246. move.w d0,rotate1
  247. move.w d1,rotate2
  248. move.w d2,rotate3
  249. BSR ROTATE
  250. move.l Object_Pointer,A0
  251. move.l 4(a0),a1 ;shape line connections
  252. move.l #temps,a2 ;shape to plot
  253. move.w 10(a0),d4 ;num of points
  254. bsr plotpoints
  255. move.l Object_Pointer,A0
  256. move.l #temps,a1 ;shape to plot
  257. move.w 10(a0),d4 ;num of pixels
  258. * Fill the Object
  259. waitfill BTST #14,DMACONR(a6)
  260. BNE.s waitfill
  261. MOVE.W #$00,BLTADAT(a6)
  262. MOVE.W #$00,BLTBDAT(a6)
  263. MOVE.W #$00,BLTCDAT(a6)
  264. MOVE.W #$00,BLTDDAT(a6)
  265. move.l Vector_Buffer,d0
  266. add.l #(64*255)+38,d0
  267. MOVE.L d0,BLTAPT(a6)
  268. MOVE.L d0,BLTBPT(a6)
  269. MOVE.L d0,BLTCPT(a6)
  270. MOVE.L d0,BLTDPT(a6)
  271. MOVE.W #24,BLTAMOD(a6)
  272. MOVE.W #24,BLTBMOD(a6)
  273. MOVE.W #24,BLTCMOD(a6)
  274. MOVE.W #24,BLTDMOD(a6)
  275. move.l #-1,BLTAFWM(a6)
  276. MOVE.l #$09f00012,BLTCON0(a6)
  277. btst #10,$dff016
  278. beq.s dont_fill_now
  279. MOVE.W #256<<6+20,BLTSIZE(a6)
  280. dont_fill_now
  281. rts
  282. ROTATE
  283. subq.w #1,d0
  284. subq.w #1,d1
  285. subq.w #1,d2
  286. asl.w #1,d0
  287. asl.w #1,d1
  288. asl.w #1,d2
  289. lea sinradtable(pc),a4
  290. lea cosradtable(pc),a5
  291. move.w (a4,d0),sin1
  292. move.w (a5,d0),cos1
  293. move.w (a4,d1),sin2
  294. move.w (a5,d1),cos2
  295. move.w (a4,d2),d0
  296. move.w (a5,d2),d1
  297. lea temps,a1
  298. rotate_loop
  299. move.w (a3),(a1) ;store some values in temp
  300. move.w 2(a3),d6 ;num 1 ;calc for x rotation
  301. move.w d6,d4
  302. move.w 4(a3),d7 ;num 2
  303. move.w d7,d2 ;faster than doing another 4(a3) down below
  304. muls cos1(pc),d6 ;num by cos
  305. muls sin1(pc),d7 ;num two by sin
  306. sub.l d7,d6 ;got num 2
  307. asr.l #8,d6
  308. move.w d6,2(a1) ;store num 1
  309. move.w d4,d6 ;faster again than doing another 2(a3)
  310. move.w d2,d7 ;faster
  311. muls sin1(pc),d6 ;num by sin
  312. muls cos1(pc),d7 ;num two by cos
  313. add.l d7,d6 ;got num 1
  314. asr.l #8,d6
  315. move.w d6,d2 ;store result for further action
  316. do_y_rotation
  317. move.w (a1),d7 ;num2
  318. muls cos2(pc),d6 ;d6 contains new z num
  319. muls sin2(pc),d7 ;num two by sin for y
  320. sub.l d7,d6 ;got num
  321. asr.l #8,d6
  322. move.w d2,d4 ;contains old z num
  323. move.w (a1),d7 ;num 2
  324. muls sin2(pc),d4 ;num by sin 2 for y
  325. muls cos2(pc),d7 ;num two by cos 2 for y
  326. add.l d7,d4 ;got num 1
  327. asr.l #8,d4
  328. move.w d6,d2 ;save new z in d2 again
  329. move.w d4,(a1) ;store num 2
  330. do_z_rotation
  331. move.w 2(a1),d7 ;num 2
  332. muls d1,d4 ;num by cos for y
  333. muls d0,d7 ;num two by sin for y
  334. sub.l d7,d4 ;got num 3
  335. asr.l #8,d4
  336. move.w (a1),d6 ;num 1
  337. move.w 2(a1),d7 ;num 3
  338. muls d0,d6 ;num by sin 3 for y
  339. muls d1,d7 ;num two by cos 3 for y
  340. add.l d7,d6 ;got num 1
  341. asr.l #8,d6
  342. move.w d4,(a1) ;store num 1
  343. move.w d6,2(a1) ;store num 2
  344. Perspective_loop
  345. muls #300,d4
  346. add.w oe(pc),d2 -d2 = z
  347. divs d2,d4
  348. move.w d4,d3
  349. muls #300,d6
  350. divs d2,d6 ;got num 1
  351. addi.w #125,d6 ;y - do here rather than twice in plot loop
  352. move.w d6,2(a1) ;store num 2
  353. addi.w #176,d3 ;same as for y
  354. move.w d3,(a1) ;no need to save z as not used for drawing
  355. addq.l #6,a3 ;next set
  356. addq.l #4,a1
  357. dbeq d5,rotate_loop ;phew
  358. rts
  359. PLOTPOINTS
  360. subq.w #1,d4 ;use as counter
  361. move.w d4,d5
  362. asl #2,d5
  363. move.w (a1,d5),d1
  364. move.w 2(a1,d5),d3
  365. asl #2,d1
  366. move.w 2(a2,d1.w),d1 ;
  367. asl #2,d3
  368. move.w 2(a2,d3.w),d3 ;
  369. sub.w d3,d1
  370. move.w d1,store_val
  371. plot_loop
  372. move.w (a1)+,d5
  373. asl #2,d5
  374. move.w (a2,d5),d0 ;point 1
  375. move.w 2(a2,d5),d1 ;point 2
  376. move.w (a1)+,d5
  377. asl #2,d5
  378. move.w (a2,d5),d2 ;point 3
  379. move.w 2(a2,d5),d3 ;point 4
  380. move.l Vector_Buffer,a0 ;current drawing plane
  381. bsr.s DARKLINE
  382. dbra d4,plot_loop
  383. rts
  384. DARKLINE
  385. MOVEQ #0,D6
  386. MOVEQ #0,D7
  387. move.w #0,go
  388. cmp.w #gbnumcons-1,d4
  389. bne.s not_first
  390. tst store_val
  391. bne.s not_first
  392. move.w #1,go
  393. bra.s no_bitty_cng
  394. not_first
  395. cmp.w d1,d3
  396. beq forget_it
  397. ble.s testit2
  398. tst.w store_val
  399. bge.s no_bitty_cng
  400. move.w #1,go
  401. bra.s no_bitty_cng
  402. testit2
  403. tst.w store_val
  404. ble.s no_bitty_cng
  405. move.w #1,go
  406. no_bitty_cng
  407. MOVE.W D0,-(SP)
  408. move.w d1,d6
  409. sub.w d3,d6
  410. move.w d6,store_val
  411. MOVE.W D0,D6 ;STORE FOR USE IN CALCING START POS
  412. MOVE.W D1,D7
  413. CALC_OCTANT
  414. moveq.w #0,D5 ;USE TO LOCATE OC
  415. sub.w d1,d3 ;sub y1 from y2
  416. bge.s y2bigger
  417. neg.w d3
  418. bset #2,d5
  419. y2bigger
  420. sub.w d0,d2 ;x1 from x2
  421. bge.s x2bigger
  422. neg.w d2
  423. bset #1,d5
  424. x2bigger
  425. cmp.w d2,d3 ;is deltax smaller than deltay
  426. BGe.s DELTAXSMALLER
  427. BSET #0,D5 ;D5 CONTAINS OCTANT POS
  428. move.w d3,a3
  429. move.w d2,a4
  430. bra.s calc_start
  431. DELTAXSMALLER
  432. move.w d3,a4
  433. move.w d2,a3
  434. CALC_START
  435. ASL.L #6,D7 ;NO OF BYTES DOWN SCREEN
  436. ADD.L D7,A0
  437. asr #3,d6
  438. ADD.L D6,A0 ;START POINT HELD IN A0
  439. MOVEQ #0,D6
  440. move.w a3,d6
  441. asl #1,d6
  442. move.w d6,a3
  443. MOVE.W a4,D2
  444. MOVE.W d2,length
  445. SUB.W D2,D6
  446. asl #1,D2 ;CON LDELTA
  447. MOVE.W a3,D1
  448. SUB.W D2,D1 ;contains xpres2
  449. MOVE.W (SP)+,D0 ;INIT BLTCON0
  450. andi.w #$000f,d0
  451. move.w d0,d3
  452. ROR.W #4,D0
  453. OR.W #$0B58,D0
  454. MOVE.W a3,D7
  455. CMP.W LENGTH,D7
  456. BGe NO_SET
  457. MOVE.W #$40,D7
  458. BRA OR_IN_VAL
  459. NO_SET
  460. MOVE.W #0,D7
  461. OR_IN_VAL
  462. lsl.w #1,d5
  463. LEA TABLE,A5 ;OCTANT
  464. OR.B (A5,D5),D7
  465. BLITTER_IT
  466. BLITQ BTST #14,$002(a6)
  467. BNE.s BLITQ
  468. tst go
  469. beq.s no_cng
  470. neg.w d3
  471. add.w #$f,d3
  472. bchg d3,(a0)
  473. no_cng
  474. MOVE.W masky,$072(a6)
  475. MOVE.L A0,$048(a6) ;START ADDRESS
  476. MOVE.L A0,$054(a6)
  477. MOVE.l d6,$050(a6) ;CONTAINS 2*SDELTA-LDELTA
  478. MOVE.W a3,$062(a6) ;2*SDELTA IN HERE
  479. MOVE.W d1,$064(a6) ;CONTAINS 2*SDELTA-2*LDELTA (xpres2)
  480. MOVE.W #64,$066(a6) ;SCREEN WIDTH IN BYTES
  481. MOVE.W #64,$060(a6)
  482. MOVE.W D0,$040(a6)
  483. bset.l #1,d7
  484. MOVE.W D7,$042(a6)
  485. MOVE.w #$ffff,$044(a6) ;MASK
  486. MOVE.W length,D0
  487. addq.w #1,d0
  488. asl #6,D0
  489. addq.W #2,D0
  490. MOVE.W #$8000,$074(a6) ;MUST BE THIS
  491. MOVE.W D0,$058(a6)
  492. forget_it
  493. * addq.w #1,oe
  494. RTS
  495. Single_Mouse_Press
  496. btst #6,$BFE001
  497. Bne Single_Mouse_Press
  498. not_released
  499. btst #6,$BFE001
  500. Beq not_released
  501. rts
  502. type dc.w 14
  503. masky dc.w $ffff
  504. faders
  505. dc.w $0000,$0000,$0000,$f000,$f000,$f000
  506. dc.w $ff00,$ff00,$ff00,$fff0,$fff0,$fff0
  507. dc.w $ffff,$ffff,$ffff
  508. DELTAX DC.W 0
  509. DELTAY DC.W 0
  510. SDELTA DC.W 0
  511. LDELTA DC.W 0
  512. XPRES DC.l 0
  513. XPRES2 DC.W 0
  514. length dc.w 0
  515. COPPERL
  516. dc.w $1fc,0
  517. DC.W $00E0
  518. Plane1_Hi DC.W 0
  519. DC.W $00E2
  520. Plane1_Lo DC.W 0
  521. DC.W $00E4
  522. Plane2_Hi DC.W 0
  523. DC.W $00E6
  524. Plane2_Lo DC.W 0
  525. DC.W $00E8
  526. Plane3_Hi DC.W 0
  527. DC.W $00Ea
  528. Plane3_Lo DC.W 0
  529. DC.W $00Ec
  530. Plane4_Hi DC.W 0
  531. DC.W $00Ee
  532. Plane4_Lo DC.W 0
  533. DC.W $00f0
  534. Plane5_Hi DC.W 0
  535. DC.W $00f2
  536. Plane5_Lo DC.W 0
  537. DC.W $00f4
  538. Plane6_Hi DC.W 0
  539. DC.W $00f6
  540. Plane6_Lo DC.W 0
  541. DC.W $2cff,$FFFE
  542. TABLE
  543. DC.B 0*4+1,1
  544. DC.B 4*4+1,1
  545. DC.B 2*4+1,1
  546. DC.B 5*4+1,1
  547. DC.B 1*4+1,1
  548. DC.B 6*4+1,1
  549. DC.B 3*4+1,1
  550. DC.B 7*4+1,1
  551. EVEN
  552. Blank Dc.l 0
  553. Vector_Plane
  554. dc.l 0
  555. Vector_Buffer
  556. dc.l 0
  557. Appearance_Timer
  558. dc.w 500
  559. Object_Pointer
  560. DC.L Parameters_for_3d_images
  561. Parameters_for_3d_images
  562. LINEFADE EQU 1
  563. SHRINK EQU 2
  564. COLOURFADE EQU 3
  565. dc.l GB ; Image
  566. dc.l GBcons ; Connections
  567. dc.w GBpoints ; No of points
  568. dc.w GBnumcons ; No of connection lines
  569. dc.w 180 ; Start rotation pos x
  570. dc.w 180 ; Start rotation pos y
  571. dc.w 180 ; Start rotation pos z
  572. dc.w -4 ; Rotation factor x
  573. dc.w 0 ; Rotation factor y
  574. dc.w 0 ; Rotation factor z
  575. dc.w 500 ; Length of appearance
  576. dc.w LINEFADE ; Fading bit
  577. dc.w 3000 ;ee
  578. dc.w 3000 ;oe
  579. dc.w $0f0
  580. ParameterSize EQU *-Parameters_for_3d_images
  581. thisisthelastblockmatey
  582. GB
  583. dc.w -40,200,0
  584. dc.w -40,-200,0
  585. dc.w 40,-200,0
  586. dc.w 40,200,0
  587. dc.w -240,280,0
  588. dc.w 240,280,0
  589. dc.w 240,200,0
  590. dc.w 160,200,0
  591. dc.w 160,-200,0
  592. dc.w 240,-200,0
  593. dc.w 240,-280,0
  594. dc.w -240,-280,0
  595. dc.w -240,-200,0
  596. dc.w -160,-200,0
  597. dc.w -160,200,0
  598. dc.w -240,200,0
  599. GBpoints EQU (*-GB)/6
  600. GBcons
  601. *must overlap lines properly to remove end line points
  602. dc.w 3,0,0,1,1,2,2,3
  603. dc.w 4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12
  604. dc.w 12,13,13,14,14,15,15,4
  605. GBnumcons EQU (*-GBcons)/4
  606. sinradtable
  607. DC.W 17,35,53,71,89,107,124,142,160,177
  608. DC.W 195,212,230,247,265,282,299,316,333,350
  609. DC.W 366,383,400,416,432,448,464,480,496,511
  610. DC.W 527,542,557,572,587,601,616,630,644,658
  611. DC.W 671,685,698,711,724,736,748,760,772,784
  612. DC.W 795,806,817,828,838,848,858,868,877,886
  613. DC.W 895,904,912,920,928,935,942,949,955,962
  614. DC.W 968,973,979,984,989,993,997,1001,1005,1008
  615. DC.W 1011,1014,1016,1018,1020,1021,1022,1023,1023,1024
  616. DC.W 1023,1023,1022,1021,1020,1018,1016,1014,1011,1008
  617. DC.W 1005,1001,997,993,989,984,979,973,968,962
  618. DC.W 955,949,942,935,928,920,912,904,895,886
  619. DC.W 877,868,858,848,838,828,817,806,795,784
  620. DC.W 772,760,748,736,724,711,698,685,671,658
  621. DC.W 644,630,616,601,587,572,557,542,527,512
  622. DC.W 496,480,464,448,432,416,400,383,366,350
  623. DC.W 333,316,299,282,265,247,230,212,195,177
  624. DC.W 160,142,124,107,89,71,53,35,17,0
  625. DC.W -18,-36,-54,-72,-90,-108,-125,-143,-161,-178
  626. DC.W -196,-213,-231,-248,-266,-283,-300,-317,-334,-351
  627. DC.W -367,-384,-401,-417,-433,-449,-465,-481,-497,-512
  628. DC.W -528,-543,-558,-573,-588,-602,-617,-631,-645,-659
  629. DC.W -672,-686,-699,-712,-725,-737,-749,-761,-773,-785
  630. DC.W -796,-807,-818,-829,-839,-849,-859,-869,-878,-887
  631. DC.W -896,-905,-913,-921,-929,-936,-943,-950,-956,-963
  632. DC.W -969,-974,-980,-985,-990,-994,-998,-1002,-1006,-1009
  633. DC.W -1012,-1015,-1017,-1019,-1021,-1022,-1023,-1024,-1024,-1025
  634. DC.W -1024,-1024,-1023,-1022,-1021,-1019,-1017,-1015,-1012,-1009
  635. DC.W -1006,-1002,-998,-994,-990,-985,-980,-974,-969,-963
  636. DC.W -956,-950,-943,-936,-929,-921,-913,-905,-896,-887
  637. DC.W -878,-869,-859,-849,-839,-829,-818,-807,-796,-785
  638. DC.W -773,-761,-749,-737,-725,-712,-699,-686,-672,-659
  639. DC.W -645,-631,-617,-602,-588,-573,-558,-543,-528,-513
  640. DC.W -497,-481,-465,-449,-433,-417,-401,-384,-367,-351
  641. DC.W -334,-317,-300,-283,-266,-248,-231,-213,-196,-178
  642. DC.W -161,-143,-125,-108,-90,-72,-54,-36,-18,0
  643. cosradtable
  644. DC.W 1023,1023,1022,1021,1020,1018,1016,1014,1011,1008
  645. DC.W 1005,1001,997,993,989,984,979,973,968,962
  646. DC.W 955,949,942,935,928,920,912,904,895,886
  647. DC.W 877,868,858,848,838,828,817,806,795,784
  648. DC.W 772,760,748,736,724,711,698,685,671,658
  649. DC.W 644,630,616,601,587,572,557,542,527,511
  650. DC.W 496,480,464,448,432,416,400,383,366,350
  651. DC.W 333,316,299,282,265,247,230,212,195,177
  652. DC.W 160,142,124,107,89,71,53,35,17,0
  653. DC.W -18,-36,-54,-72,-90,-108,-125,-143,-161,-178
  654. DC.W -196,-213,-231,-248,-266,-283,-300,-317,-334,-351
  655. DC.W -367,-384,-401,-417,-433,-449,-465,-481,-497,-513
  656. DC.W -528,-543,-558,-573,-588,-602,-617,-631,-645,-659
  657. DC.W -672,-686,-699,-712,-725,-737,-749,-761,-773,-785
  658. DC.W -796,-807,-818,-829,-839,-849,-859,-869,-878,-887
  659. DC.W -896,-905,-913,-921,-929,-936,-943,-950,-956,-963
  660. DC.W -969,-974,-980,-985,-990,-994,-998,-1002,-1006,-1009
  661. DC.W -1012,-1015,-1017,-1019,-1021,-1022,-1023,-1024,-1024,-1025
  662. DC.W -1024,-1024,-1023,-1022,-1021,-1019,-1017,-1015,-1012,-1009
  663. DC.W -1006,-1002,-998,-994,-990,-985,-980,-974,-969,-963
  664. DC.W -956,-950,-943,-936,-929,-921,-913,-905,-896,-887
  665. DC.W -878,-869,-859,-849,-839,-829,-818,-807,-796,-785
  666. DC.W -773,-761,-749,-737,-725,-712,-699,-686,-672,-659
  667. DC.W -645,-631,-617,-602,-588,-573,-558,-543,-528,-512
  668. DC.W -497,-481,-465,-449,-433,-417,-401,-384,-367,-351
  669. DC.W -334,-317,-300,-283,-266,-248,-231,-213,-196,-178
  670. DC.W -161,-143,-125,-108,-90,-72,-54,-36,-18,0
  671. DC.W 17,35,53,71,89,107,124,142,160,177
  672. DC.W 195,212,230,247,265,282,299,316,333,350
  673. DC.W 366,383,400,416,432,448,464,480,496,511
  674. DC.W 527,542,557,572,587,601,616,630,644,658
  675. DC.W 671,685,698,711,724,736,748,760,772,784
  676. DC.W 795,806,817,828,838,848,858,868,877,886
  677. DC.W 895,904,912,920,928,935,942,949,955,962
  678. DC.W 968,973,979,984,989,993,997,1001,1005,1008
  679. DC.W 1011,1014,1016,1018,1020,1021,1022,1023,1023,1024
  680. ENDSINRAD
  681. sin1 dc.w 0
  682. sin2 dc.w 0
  683. cos1 dc.w 0
  684. cos2 dc.w 0
  685. xvect dc.w 160
  686. yvect dc.w 127
  687. ee dc.w 300
  688. oe dc.w 690
  689. temps ds.w 300 ;safe not sorry said the vicar to the
  690. temp1 dc.w 0 ;pork pie which had a rather off
  691. rotate1 dc.w 180 ;brown crust and looked a bit
  692. rotate2 dc.w 180 ;green so he gave it to an old begger
  693. rotate3 dc.w 180 ;who kindly accepted it ate it and died the next day
  694. clearsize equ 256<<6+32 ; of motorola. Suddenly as if it were
  695. Memory_Base dc.l 0
  696. start_fade dc.w 0
  697. go
  698. dc.w 0
  699. store_val
  700. dc.w 0