Advertisement
Guest User

Depeche Power Demo

a guest
Aug 22nd, 2013
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 41.31 KB | None | 0 0
  1. ; DEPECHE TUFF VIDEO PRODUCTIONS!
  2.  
  3. org $200
  4. load $40000
  5.  
  6.  
  7. datastart = $7f210 ;
  8. fontb = $3b200 ; fontbase
  9. bpsize = 100*40 ; ballplane size
  10. llen = 54 ; line width
  11. tpsize = 80*llen ; tuff line planesize
  12. bplane1 = fontb-[2*bpsize+tpsize] ; 1st ballplane
  13. bplane2 = bplane1+bpsize ; 2nd ballplane
  14. clistsize = $10a0 ; clist lenght
  15. copper = datastart-clistsize ; clist start
  16. height = 46 ; used in spin routine
  17. center = 63 ; used in spin routine
  18. psize = 110*40 ;
  19. plane0 = bplane1-[4*psize] ; 1st DEPECHE plane
  20. plane1 = plane0+psize ; 2nd
  21. plane2 = plane1+psize ; 3rd
  22. plane3 = plane2+psize ; 4th
  23. astart = $31d8 ; animation start
  24.  
  25. tplane = bplane2+bpsize ; line plane
  26. xstart = -20 ; xpos of first letter
  27. nlet = 12 ; number of letters
  28. textypos = 16 ; ypos of line
  29. posm = textypos+60 ; mirror position
  30. mt_data = $15220 ; muzakdata
  31.  
  32.  
  33. lea $dff000,a6 ;
  34. lea $39f80,a0 ; copy fix chars and rotcode
  35. lea $7cf00,a1 ;
  36.  
  37. move.w #3786/4-1,d0 ;
  38. cop1: move.l (a0)+,(a1)+ ;
  39. dbf d0,cop1 ;
  40. jsr $7da40 ; create font
  41.  
  42. bsr.L mt_init ;
  43. bsr.L initb ; init balls
  44. bsr.L initr ; init tuff video
  45. bsr.L init ; init clist
  46. bsr.L init20 ; init stars
  47. move.l #l3init,$6c.w ;
  48. pea return(pc) ; comeback address
  49. move.w #$8020,$9c(a6) ; request vbint
  50. move.w #$c020,$9a(a6) ;
  51. freez2: bra.s freez2 ; do nothing
  52.  
  53. return: move.l #copper,$84(a6) ;
  54. move.l #copper,$80(a6) ;
  55. tst.l $88(a6) ;
  56. move.w #$c000,$9a(a6) ; re-allow int
  57.  
  58. freez: cmp.b #-1,$dff006 ;
  59. bne.s freez ;
  60. bsr.l mt_music ;
  61. move.b $dff006,d0 ;
  62. fr2: cmp.b $dff006,d0 ;
  63. beq.s fr2 ;
  64. bra.s freez ;
  65.  
  66.  
  67. *------ INIT COPPERLIST ---------------------------------------------*
  68.  
  69. init: lea clist(pc),a0 ; copy clist
  70. move.l #copper,a1 ;
  71. bsr.L init12 ;
  72. lea starcol(pc),a2 ; star colours
  73. move.l #$0a07fffe,d1 ; first line
  74. moveq #10,d2 ;
  75. init3: move.l d1,(a1)+ ;
  76. move.w #$00e2,(a1)+ ;
  77. move.w #plane0,(a1)+ ;
  78. move.w #$00e6,(a1)+ ;
  79. move.w #plane1,(a1)+ ;
  80. move.w #$00ea,(a1)+ ;
  81. move.w #plane2,(a1)+ ;
  82. move.w #$00ee,(a1)+ ;
  83. move.w #plane3,(a1)+ ;
  84.  
  85. move.w #$01a2,(a1)+ ; write star colour
  86. move.w (a2,d2.w),(a1)+ ;
  87. btst #24,d1 ; change all 2 lines colour
  88. beq.s init4 ;
  89. subq.w #2,d2 ; next colour
  90. bpl.s init4 ;
  91. moveq #10,d2 ;
  92. init4: add.l #$01000000,d1 ;
  93. cmp.l #$6607fffe,d1 ;
  94. bne.s init3 ;
  95. move.l #$01001200,(a1)+ ;
  96. move.l #$0104ffff,(a1)+ ; sprites infront planes
  97. move.l #$01820000,(a1)+ ; show nothing here
  98.  
  99. init6: move.l d1,(a1)+ ;
  100. cmp.l #$0c07fffe,d1 ;
  101. bne.s init7 ;
  102. move.l #$01800005,(a1)+ ;
  103. init7: cmp.l #$7407fffe,d1 ;
  104. bne.s init5b ;
  105. lea clist3(pc),a0 ; copy balls clist
  106. bsr.L init12 ;
  107.  
  108. init5b: cmp.l #$c807fffe,d1 ; dual playfield zone on
  109. bne.s init7b ;
  110. move.l #$c823fffe,-4(a1) ; crunch copper! ($1f)
  111. lea clist4(pc),a0 ;
  112. bsr.L init12 ;
  113.  
  114. init7b: cmp.l #$d807fffe,d1 ; dual playfield zone off
  115. bne.s init7t ;
  116. lea clist2(pc),a0 ;
  117. bsr.L init12 ;
  118.  
  119. init7t: move.w #$01a2,(a1)+ ;
  120. move.w (a2,d2.w),(a1)+ ;
  121. btst #24,d1 ;
  122. beq.s init8 ;
  123. subq.w #2,d2 ;
  124. bpl.s init8 ;
  125. moveq #10,d2 ;
  126. init8: add.l #$01000000,d1 ;
  127. cmp.l #$0007fffe,d1 ;
  128. bne.s init9 ;
  129. move.l #$ffdffffe,(a1)+ ; skip ntsc border
  130. init9: cmp.l #$1907fffe,d1 ;
  131. bne.L init6 ;
  132.  
  133. move.l #$00e20000,d3 ; create mirror
  134. move.w #posm*llen+tplane,d3 ;
  135. move.l d1,(a1)+ ;
  136. move.l #$01820b08,(a1)+ ;
  137. subq.l #2,d2 ; equalize starcolour
  138. add.l #$01000000,d1 ;
  139. init10: move.l d1,(a1)+ ;
  140. move.l d3,(a1)+ ;
  141. move.w #$01a2,(a1)+ ;
  142. move.w (a2,d2.w),(a1)+ ;
  143. btst #24,d1 ;
  144. beq.s init11 ;
  145. subq.w #2,d2 ;
  146. bpl.s init11 ;
  147. moveq #10,d2 ;
  148. init11: add.l #$01000000,d1 ; wait next line
  149. sub.l #llen,d3 ;
  150. cmp.l #$2f07fffe,d1 ;
  151. bne.s init10 ;
  152.  
  153. move.l #$01800000,(a1)+ ;
  154. move.l #$fffffffe,(a1)+ ; set endcode
  155. rts ;
  156.  
  157. init12: move.l (a0)+,(a1)+ ; copy clist
  158. bne.s init12 ;
  159. subq.l #4,a1 ; equalize destination
  160. rts ;
  161.  
  162.  
  163. *------ INIT VERTICAL BLANKING INTERRUPT ----------------------------*
  164.  
  165. l3init: move.w #$4000,$9a(a6) ;
  166. move.w #$0020,$9c(a6) ; kill request
  167. lea $80000,a7 ;
  168. lea newint(pc),a0 ;
  169. move.l a0,$6c.w ;
  170. move #$0,SR ; go into USER mode
  171. rts ;
  172.  
  173.  
  174. *------ NEW VERTICAL BLANKING ---------------------------------------*
  175.  
  176. newint: movem.l a0-a6/d0-d7,-(a7) ; kill balls/scroll planes
  177. lea $dff000,a6 ;
  178. move.l #bplane1,$54(a6) ; destination D
  179. clr.l $64(a6) ; modulos a,d
  180. move.l #$01000000,$40(a6) ; bltcon0/1
  181. move.w #[308*64]+20,$58(a6) ; bltsize
  182. bsr.l spin ; spin DEPECHE sign
  183. bsr.l balls ;
  184. bsr.l flash ;
  185. bsr.l stars ; move stars
  186. bsr.s colour ;
  187. bsr.L bcols ; ball sequenzer
  188. movem.l (a7)+,a0-a6/d0-d7 ;
  189. move.w #$0020,$dff09c ;
  190. rte ;
  191.  
  192.  
  193. *------ COLOUR CYCLING ----------------------------------------------*
  194.  
  195. colour: lea col1(pc),a0 ;
  196. add.l col2,a0 ;
  197. move.w (a0),d0 ;
  198. bne.s col3 ;
  199. clr.l col2 ;
  200. bra.s colour ;
  201. col3: move.w d0,copper+$cda ; change colour in dual zone
  202. move.w d0,copper+$d7e ; and in normal zone
  203. sub.w #$0444,d0 ;
  204. move.w d0,copper+$f92 ; in mirror zone
  205. moveq #0,d0 ;
  206. move.b flags+6,d0 ;
  207. add.l d0,col2 ; next colour
  208. rts ;
  209.  
  210. col1: dc.w $0f4c,$0f4c,$0e4c,$0e4c,$0d4c,$0d4c,$0c4c,$0c4c
  211. dc.w $0b4c,$0b4c,$0a4c,$0a4c,$094c,$094c,$084c,$084c
  212. dc.w $074c,$074c,$084c,$084c,$094c,$094c,$0a4c,$0a4c
  213. dc.w $0b4c,$0b4c,$0c4c,$0c4c,$0d4c,$0d4c,$0e4c,$0e4c
  214. dc.w 0
  215. col2: dc.l 0
  216.  
  217.  
  218. *------ MEGA DEF POWER BALLS ---------------------------------------*
  219.  
  220. bobheight = 15
  221.  
  222. initb: move.l #astart,$100.w ;
  223. rts ;
  224.  
  225. balls: move.w #$8400,$96(a6) ;
  226. wblit3: btst #14,$02(a6) ;
  227. bne.s wblit3 ;
  228. move.l #$ffff0000,$44(a6) ; FWM / LWM
  229. clr.w $42(a6) ; BLTCON1
  230. move.w #$24,$60(a6) ; backgr modulo
  231. move.w #24-4,$62(a6) ; image modulo
  232. move.w #24-4,$64(a6) ; mask modulo
  233. move.w #$24,$66(a6) ; dest modulo
  234.  
  235. move.l $100.w,a1 ;
  236. add.l #60,$100.w ;
  237. mod1: cmp.l #astart+60,$100.w ;
  238. bne.s nxt ;
  239. mod2: move.l #astart,$100.w ;
  240. nxt: moveq #19,d2 ;
  241. loop: moveq #0,d0 ;
  242. moveq #0,d1 ;
  243. move.b (a1)+,d0 ;
  244. move.b (a1)+,d1 ;
  245. move.b (a1)+,d7 ;
  246. ext.w d7 ;
  247. add.w #45,d7 ;
  248. asr.w #3,d7 ;
  249. add.b #160,d0 ;
  250. add.b #43,d1 ;
  251. lea bplane1,a0 ; balls plane
  252. lea gb8(pc),a2 ; image
  253.  
  254. add.w d7,d7 ;
  255. add.w d7,a2 ;
  256. lea 1*bobdlen(a2),a3 ; mask
  257. move.w d0,d5 ;
  258. and.w #$000f,d5 ; pixel shift
  259. ror.w #4,d5 ;
  260. move.w d5,d4 ;
  261. or.w #$0fca,d4 ; ABCD, AB or (-A)C
  262. muls #40,d1 ; line offset
  263. lsr.w #3,d0 ; make word offset
  264. and.w #$fffe,d0 ; in bytes
  265. lea (a0,d1.l),a4 ;
  266. add.w d0,a4 ; start address
  267.  
  268. lea $40(a6),a5 ;
  269. move.w d4,(a5)+ ; BLTCON0 mask shift
  270. move.w d5,(a5)+ ; BLTCON1 image shift
  271. addq.l #4,a5 ;
  272. move.l a4,(a5)+ ; C background source
  273. move.l a2,(a5)+ ; B image
  274. move.l a3,(a5)+ ; A mask
  275. move.l a4,(a5)+ ; D destination
  276. move.w #[bobheight*64]+2,(a5) ; BLTSIZE & start
  277. add.w #bpsize,a4 ;
  278. move.l a4,$48(a6) ;
  279. move.l a4,$54(a6) ;
  280. move.w #[bobheight*64]+2,$58(a6); draw next plane
  281. dbf d2,loop ;
  282. rts ;
  283.  
  284. bobdlen=720
  285. gb8: dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  286. dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  287. dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  288. dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  289. dc.w $0000,$0000,$0000,$0000,$00c0,$00c0,$0000,$0000
  290. dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  291. dc.w $0060,$0060,$0060,$00c0,$0060,$00c0,$0000,$0000
  292. dc.w $0000,$0000,$0000,$0000,$8000,$4000,$2030,$2060
  293. dc.w $1020,$1040,$0040,$0080,$0000,$0000,$0000,$0000
  294. dc.w $8000,$4000,$2000,$2000,$1000,$1000,$0800,$0800
  295. dc.w $0440,$0480,$0240,$0280,$c000,$6000,$2000,$2000
  296. dc.w $1000,$1000,$0800,$0800,$0400,$0400,$0200,$0200
  297. dc.w $c000,$6000,$2000,$2000,$1800,$1800,$0c00,$0c00
  298. dc.w $0600,$0600,$0300,$0300,$e000,$7000,$3000,$3000
  299. dc.w $1800,$1800,$0600,$0600,$0300,$0300,$01c0,$0180
  300. dc.w $7000,$3800,$1800,$1800,$0c00,$0c00,$0700,$0700
  301. dc.w $01c0,$0180,$0000,$0000,$7800,$3c00,$1c00,$1c00
  302. dc.w $0700,$0700,$01c0,$0180,$0000,$0000,$0000,$0000
  303. dc.w $3c00,$1e00,$0f00,$0f00,$03e0,$03c0,$0000,$0000
  304. dc.w $0000,$0000,$0000,$0000,$1f00,$0f00,$03e0,$03c0
  305. dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  306. dc.w $07c0,$03c0,$0000,$0000,$0000,$0000,$0000,$0000
  307. dc.w $0000,$0000,$0000,$0000,$07c0,$03c0,$0000,$0000
  308. dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  309. dc.w $1ff0,$0ff0,$03e0,$03c0,$0000,$0000,$0000,$0000
  310. dc.w $0000,$0000,$0000,$0000,$3ff8,$1ff8,$0ff8,$0ff0
  311. dc.w $03e0,$03c0,$0000,$0000,$0000,$0000,$0000,$0000
  312. dc.w $7ffc,$3ffc,$1ffc,$1ff8,$07f0,$07e0,$01c0,$0180
  313. dc.w $0000,$0000,$0000,$0000,$7ffc,$3ffc,$1ffc,$1ff8
  314. dc.w $0ff8,$0ff0,$07f0,$07e0,$01c0,$0180,$0000,$0000
  315. dc.w $7ffe,$3ffe,$1ffe,$1ffc,$0ffc,$0ff8,$07f0,$07e0
  316. dc.w $03e0,$03c0,$01c0,$0180,$7ffe,$3ffe,$1ffe,$1ffc
  317. dc.w $0ffc,$0ff8,$07f8,$07f0,$03f0,$03e0,$01e0,$01c0
  318. dc.w $3ffe,$1ffe,$1ffe,$1ffc,$0ffc,$0ff8,$07f8,$07f0
  319. dc.w $03f0,$03e0,$01e0,$01c0,$3ffe,$1ffe,$1ffe,$1ffc
  320. dc.w $07fc,$07f8,$03f8,$03f0,$01f0,$01e0,$00e0,$00c0
  321. dc.w $1ffe,$0ffe,$0ffe,$0ffc,$07fc,$07f8,$01f0,$01e0
  322. dc.w $00e0,$00c0,$0000,$0000,$0ffc,$07fc,$07fc,$07f8
  323. dc.w $03f8,$03f0,$00f0,$00e0,$0000,$0000,$0000,$0000
  324. dc.w $07fc,$03fc,$03fc,$03f8,$00f0,$00e0,$0000,$0000
  325. dc.w $0000,$0000,$0000,$0000,$03f8,$01f8,$00f8,$00f0
  326. dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  327. dc.w $00f0,$00f0,$0000,$0000,$0000,$0000,$0000,$0000
  328. dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  329. dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  330. dc.w $07c0,$03c0,$0000,$0000,$0000,$0000,$0000,$0000
  331. dc.w $0000,$0000,$0000,$0000,$1ff0,$0ff0,$03e0,$03c0
  332. dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  333. dc.w $3ff8,$1ff8,$0ff8,$0ff0,$03e0,$03c0,$0000,$0000
  334. dc.w $0000,$0000,$0000,$0000,$7ffc,$3ffc,$1ffc,$1ff8
  335. dc.w $07f0,$07e0,$01c0,$0180,$0000,$0000,$0000,$0000
  336. dc.w $7ffc,$3ffc,$1ffc,$1ff8,$0ff8,$0ff0,$07f0,$07e0
  337. dc.w $01c0,$0180,$0000,$0000,$fffe,$7ffe,$3ffe,$3ffc
  338. dc.w $1ffc,$1ff8,$07f0,$07e0,$03e0,$03c0,$01c0,$0180
  339. dc.w $fffe,$7ffe,$3ffe,$3ffc,$1ffc,$1ff8,$0ff8,$0ff0
  340. dc.w $07f0,$07e0,$03e0,$03c0,$fffe,$7ffe,$3ffe,$3ffc
  341. dc.w $1ffc,$1ff8,$0ff8,$0ff0,$07f0,$07e0,$03e0,$03c0
  342. dc.w $fffe,$7ffe,$3ffe,$3ffc,$1ffc,$1ff8,$0ff8,$0ff0
  343. dc.w $07f0,$07e0,$03e0,$03c0,$fffe,$7ffe,$3ffe,$3ffc
  344. dc.w $1ffc,$1ff8,$07f0,$07e0,$03e0,$03c0,$01c0,$0180
  345. dc.w $7ffc,$3ffc,$1ffc,$1ff8,$0ff8,$0ff0,$07f0,$07e0
  346. dc.w $01c0,$0180,$0000,$0000,$7ffc,$3ffc,$1ffc,$1ff8
  347. dc.w $07f0,$07e0,$01c0,$0180,$0000,$0000,$0000,$0000
  348. dc.w $3ff8,$1ff8,$0ff8,$0ff0,$03e0,$03c0,$0000,$0000
  349. dc.w $0000,$0000,$0000,$0000,$1ff0,$0ff0,$03e0,$03c0
  350. dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  351. dc.w $07c0,$03c0,$0000,$0000,$0000,$0000,$0000,$0000
  352. dc.w $0000,$0000,$0000,$0000,$07c0,$03c0,$0000,$0000
  353. dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  354. dc.w $1ff0,$0ff0,$03e0,$03c0,$0000,$0000,$0000,$0000
  355. dc.w $0000,$0000,$0000,$0000,$3ff8,$1ff8,$0ff8,$0ff0
  356. dc.w $03e0,$03c0,$0000,$0000,$0000,$0000,$0000,$0000
  357. dc.w $7ffc,$3ffc,$1ffc,$1ff8,$07f0,$07e0,$01c0,$0180
  358. dc.w $0000,$0000,$0000,$0000,$7ffc,$3ffc,$1ffc,$1ff8
  359. dc.w $0ff8,$0ff0,$07f0,$07e0,$01c0,$0180,$0000,$0000
  360. dc.w $fffe,$7ffe,$3ffe,$3ffc,$1ffc,$1ff8,$07f0,$07e0
  361. dc.w $03e0,$03c0,$01c0,$0180,$fffe,$7ffe,$3ffe,$3ffc
  362. dc.w $1ffc,$1ff8,$0ff8,$0ff0,$07f0,$07e0,$03e0,$03c0
  363. dc.w $fffe,$7ffe,$3ffe,$3ffc,$1ffc,$1ff8,$0ff8,$0ff0
  364. dc.w $07f0,$07e0,$03e0,$03c0,$fffe,$7ffe,$3ffe,$3ffc
  365. dc.w $1ffc,$1ff8,$0ff8,$0ff0,$07f0,$07e0,$03e0,$03c0
  366. dc.w $fffe,$7ffe,$3ffe,$3ffc,$1ffc,$1ff8,$07f0,$07e0
  367. dc.w $03e0,$03c0,$01c0,$0180,$7ffc,$3ffc,$1ffc,$1ff8
  368. dc.w $0ff8,$0ff0,$07f0,$07e0,$01c0,$0180,$0000,$0000
  369. dc.w $7ffc,$3ffc,$1ffc,$1ff8,$07f0,$07e0,$01c0,$0180
  370. dc.w $0000,$0000,$0000,$0000,$3ff8,$1ff8,$0ff8,$0ff0
  371. dc.w $03e0,$03c0,$0000,$0000,$0000,$0000,$0000,$0000
  372. dc.w $1ff0,$0ff0,$03e0,$03c0,$0000,$0000,$0000,$0000
  373. dc.w $0000,$0000,$0000,$0000,$07c0,$03c0,$0000,$0000
  374. dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  375. ; length =$5a0
  376.  
  377.  
  378. *------ BALL ANIMATION SEQUENZER -----------------------------------*
  379.  
  380. bcols: tst.b flags+7 ; new animation
  381. beq.L bend ;
  382. tst.w bcols4 ;
  383. beq.s bcols6 ;
  384. move.w #$0010,copper+$a06 ; sprites infront of balls
  385. bset #0,copper+$ce3 ; also in dual zone
  386. sub.w #1,bcols4 ;
  387. rts ;
  388.  
  389. bcols6: clr.w copper+$a06 ; balls infront of sprites
  390. bclr #0,copper+$ce3 ;
  391. cmp.w #14*6,bcols2 ;
  392. bne.s bcols5 ;
  393. move.w #100,bcols4 ; delay between new anim
  394. moveq #0,d0 ;
  395. move.b flags+7,d0 ; set pointers to new
  396. asl.w #3,d0 ;
  397. lea anims(pc),a0 ; animation
  398. add.w d0,a0 ;
  399. move.l (a0),$100.w ;
  400. move.l (a0),mod2+2 ;
  401. move.l 4(a0),mod1+2 ;
  402.  
  403. bcols5: lea bcols7(pc),a0 ; dawn in and out balls
  404. add.w bcols2,a0 ;
  405. add.w #6,bcols2 ;
  406. cmp.w #31*6,bcols2 ;
  407. bne.s bcols3 ;
  408. clr.w bcols2 ;
  409. clr.b flags+7 ; clear request
  410. bcols3: move.w (a0),copper+$9fa ; write colours
  411. move.w 2(a0),copper+$9fe ;
  412. move.w 4(a0),copper+$a02 ;
  413. bend: rts ;
  414.  
  415. bcols4: dc.w 1050
  416. bcols2: dc.w 14*6
  417.  
  418. anims: dc.l 0,0
  419. dc.l astart,astart+[360*60]
  420. dc.l astart+21600,astart+27000
  421. dc.l astart+27000,astart+34200
  422. dc.l astart+34200,astart+42840
  423. dc.l astart+42840,astart+51480
  424. dc.l astart+51480,astart+62280
  425. dc.l astart+62280,astart+69480
  426. dc.l astart+69480,astart+73800
  427.  
  428. bcols7: dc.w $0007,$0005,$0ddd,$0007,$0005,$0ddd
  429. dc.w $0006,$0004,$0bbb,$0006,$0004,$0bbb
  430. dc.w $0005,$0003,$0999,$0005,$0003,$0999
  431. dc.w $0004,$0003,$0777,$0004,$0003,$0777
  432. dc.w $0003,$0002,$0555,$0003,$0002,$0555
  433. dc.w $0002,$0002,$0333,$0002,$0002,$0333
  434. dc.w $0001,$0001,$0222,$0001,$0001,$0222
  435. dc.w $0000,$0000,$0000,$0000,$0000,$0000
  436.  
  437. dc.w $0001,$0001,$0222,$0001,$0001,$0222
  438. dc.w $0002,$0002,$0333,$0002,$0002,$0333
  439. dc.w $0003,$0002,$0555,$0003,$0002,$0555
  440. dc.w $0004,$0003,$0777,$0004,$0003,$0777
  441. dc.w $0005,$0003,$0999,$0005,$0003,$0999
  442. dc.w $0006,$0004,$0bbb,$0006,$0004,$0bbb
  443. dc.w $0007,$0005,$0ddd,$0007,$0005,$0ddd
  444. dc.w $0008,$0006,$0fff,$0008,$0006,$0fff
  445.  
  446.  
  447. *------ SPIN DEPECHE SIGN -------------------------------------------*
  448.  
  449. spin: move.w spin6,d6 ;
  450. lea flags(pc),a3 ; fetch spin speed
  451. moveq #0,d0 ;
  452. move.b 3(a3),d0 ;
  453. add.w d0,d6 ; even spin speed
  454. cmp.w #720,d6 ;
  455. blt.s spin2 ;
  456. moveq #0,d6 ;
  457. spin2: move.l #copper+cend-clist,a0 ;
  458. lea sine+180(pc),a1 ;
  459. move.w #-height+5,d1 ; get radius -R
  460. spin4: move.w d1,d3 ;
  461. add.w #height,d3 ; only positive line numbers
  462. mulu #40,d3 ; make line address offset
  463. add.w #plane0+40,d3 ; add base
  464. move.w (a1,d6.w),d0 ; get cos
  465. muls d1,d0 ; current radius*cos
  466. asr.l #8,d0 ;
  467. add.w #center,d0 ; vertical center
  468. mulu #24,d0 ; correct offset for clist
  469. cmp.w #$6507,(a0,d0.w) ; only till this line!
  470. bhi.s spin7 ;
  471. move.w (a0,d0.w),d7 ;
  472. cmp.b #$07,d7 ; no shit anymore!
  473. bne.s spin7 ;
  474. move.w d3,6(a0,d0.w) ; write plane pointers
  475. add.w #psize,d3 ;
  476. move.w d3,10(a0,d0.w) ;
  477. add.w #psize,d3 ;
  478. move.w d3,14(a0,d0.w) ;
  479. add.w #psize,d3 ;
  480. move.w d3,18(a0,d0.w) ;
  481. spin7: addq.w #1,d1 ; next line
  482. cmp.w #32,d1 ; loop until top line
  483. bne.s spin4 ; reached
  484. move.w d6,spin6 ; save cos pointer
  485. rts ;
  486. spin6: dc.w 0
  487.  
  488. sprite1 = datastart
  489. spritepos = sprite1+1012
  490. starcount1 = spritepos+504
  491. starcount2 = starcount1+1
  492. starcount3 = starcount2+1
  493. dataend = starcount3
  494.  
  495.  
  496. *------ INIT STARS --------------------------------------------------*
  497.  
  498. init20: lea datastart,a0 ;
  499. move.w #dataend-datastart/4-1,d0;
  500. init18: clr.l (a0)+ ;
  501. dbf d0,init18 ;
  502.  
  503. lea flash-160(pc),a0 ; create sprite coords
  504. lea spritepos,a1 ;
  505. moveq #125,d0 ;
  506. init21: move.w (a0)+,d1 ;
  507. init22: cmp.w #448,d1 ;
  508. bls.s init13 ;
  509. sub.w #448,d1 ;
  510. bra.s init22 ;
  511. init13: cmp.w #128,d1 ;
  512. bhs.s init14 ;
  513. add.w #128,d1 ;
  514. bra.s init13 ;
  515. init14: move.w d1,(a1)+ ;
  516. dbf d0,init21 ;
  517.  
  518. lea sprite1,a0 ; write start and end
  519. move.w #127,d0 ;
  520. moveq #46,d1 ;
  521. init15: move.w d1,d2 ;
  522. btst #8,d2 ;
  523. beq.s init16 ;
  524. bset #2,3(a0) ;
  525. init16: move.b d2,(a0) ;
  526. addq.w #1,d2 ;
  527. btst #8,d2 ;
  528. beq.s init17 ;
  529. bset #1,3(a0) ;
  530. init17: move.b d2,2(a0) ;
  531. bset #31,4(a0) ;
  532. addq.l #8,a0 ;
  533. addq.w #2,d1 ;
  534. dbf d0,init15 ;
  535. move.l #$04030000,starcount1 ;
  536. rts ;
  537. starcol:dc.w $0fff,$0ddd,$0bbb,$0999,$0777,$0555
  538.  
  539.  
  540. *------ MOVE STARS --------------------------------------------------*
  541.  
  542. stars: moveq #0,d1 ;
  543. moveq #0,d2 ;
  544. moveq #0,d3 ;
  545. subq.b #1,starcount1 ;
  546. bne.s stars1 ;
  547. move.b #4,starcount1 ;
  548. moveq #1,d1 ;
  549. stars1: subq.b #1,starcount2 ;
  550. bne.s stars11 ;
  551. move.b #3,starcount2 ;
  552. moveq #1,d2 ;
  553. stars11:not.b starcount3 ;
  554. bne.s stars2 ;
  555. moveq #1,d3 ;
  556. stars2: moveq #20,d0 ;
  557. lea spritepos,a0 ;
  558. stars3: add.w d1,(a0)+ ;
  559. add.w d2,(a0)+ ;
  560. add.w d3,(a0)+ ;
  561. addq.w #2,(a0)+ ;
  562. addq.w #3,(a0)+ ;
  563. addq.w #4,(a0)+ ;
  564. dbf d0,stars3 ;
  565. move.w #251,d0 ;
  566. lea spritepos,a0 ;
  567. stars4: cmp.w #448,(a0)+ ;
  568. blo.s stars5 ;
  569. move.w #128,-2(a0) ;
  570. stars5: dbf d0,stars4 ;
  571.  
  572. lea spritepos,a0 ;
  573. lea sprite1,a1 ;
  574. move.w #125,d0 ;
  575. stars6: move.w (a0)+,d1 ;
  576. bclr #0,3(a1) ;
  577. btst #0,d1 ;
  578. beq.s stars7 ;
  579. bset #0,3(a1) ;
  580. stars7: lsr.w #1,d1 ;
  581. move.b d1,1(a1) ;
  582. addq.l #8,a1 ;
  583. dbf d0,stars6 ;
  584. rts ;
  585.  
  586.  
  587. *------ INIT TUFF VIDEO ---------------------------------------------*
  588.  
  589. initr: moveq #0,d1 ; ypos
  590. move.l #xstart,d2 ; xpos
  591. lea text(pc),a5 ;
  592. moveq #0,d5 ; angle
  593. moveq #0,d7 ; sinetable pointer
  594. lea sine+180(pc),a4 ;
  595. lea flags(pc),a3 ;
  596. lea $dff000,a6 ;
  597. movem.l a0-a6/d0-d7,$150.w ;
  598. rts ;
  599.  
  600.  
  601. *------ TUFF VIDEO! -------------------------------------------------*
  602.  
  603. flash: movem.l $150.w,a0-a6/d0-d7 ;
  604. move.b #nlet,d4 ;
  605. move.w #$8400,$96(a6) ; nasty
  606. move.w (a4,d7.w),d1 ;
  607. tst.b (a3) ;
  608. beq.s jump3 ;
  609. move.b (a3),d6 ; fetch jump speed
  610. add.w d6,d7 ;
  611. cmp.w #720,d7 ;
  612. blo.s jump ;
  613. moveq #0,d7 ;
  614. jump3: move.b 2(a3),(a3) ;
  615. jump: asr.w #4,d1 ;
  616. add.w #textypos,d1 ;
  617. jump2: moveq #0,d6 ; scrolltextpointer
  618. flash4: moveq #0,d3 ;
  619. move.b (a5,d6),d3 ;
  620. cmp.b #$ff,d3 ;
  621. bne.s flash5 ; end of text?
  622. lea text(pc),a5 ;
  623. bra.s flash4 ;
  624. flash5: cmp.b #$40,d3 ;
  625. bhi.s flash6 ;
  626. addq.b #1,d4 ; skip commands
  627. addq.b #1,d6 ;
  628. bra.s flash4 ;
  629. flash6: sub.b #$41,d3 ;
  630.  
  631. movem.l d1/d2/d3/d6,-(a7) ; draw letter
  632. cmp.w #26,d3 ;
  633. blo.s flash7 ;
  634. sub.w #26,d3 ; greater than Z?
  635. mulu #288,d3 ;
  636. add.l #$7cf00,d3 ; start of the fix chars
  637. bra.s flash8 ;
  638. flash7: mulu #36,d3 ;
  639. add.l d5,d3 ;
  640. mulu #288,d3 ; size of one letter
  641. add.l #$3b200,d3 ; char data start
  642. flash8: move.w #$8400,$96(a6) ;
  643. move.w #$0400,$96(a6) ;
  644. move.l d3,$50(a6) ; source A
  645. move.w #%1111110000001101,d6 ; word is swapped
  646. move.l d2,d3 ; d2 = xpos
  647. asl.l #4,d3 ;
  648. or.b d3,d6 ;
  649. ror.w #8,d6 ;
  650. asr.l #3,d2 ; calc word pos
  651. add.l #tplane,d2 ;
  652. mulu #llen,d1 ; d1 = ypos
  653. add.l d2,d1 ;
  654. move.l d1,$54(a6) ; destination D
  655. move.l d1,$4c(a6) ; source B
  656. move.w #llen-8,$62(a6) ; modulo B
  657. move.w #-2,$64(a6) ; modulo A
  658. move.w #llen-8,$66(a6) ; modulo D
  659. move.w d6,$40(a6) ; bltcon0
  660. move.l #$ffff0000,$44(a6) ; mask first,last
  661. clr.w $42(a6) ; bltcon1
  662. move.w #$0c04,$58(a6) ; bltsize
  663. movem.l (a7)+,d1/d2/d3/d6 ;
  664.  
  665. add.l #36,d2 ; next x pos
  666. addq.b #1,d6 ; next letter in text
  667. cmp.b d4,d6 ; already all drawed?
  668. bne.L flash4 ;
  669. add.b 5(a3),d5 ;
  670. cmp.b #36,d5 ;
  671. bne.s flash9 ;
  672. moveq #0,d5 ; start with first angle
  673. flash9: sub.l #nlet*36,d2 ;
  674. move.b 4(a3),d6 ; fetch scroll speed
  675. sub.l d6,d2 ;
  676. cmp.l #xstart-36,d2 ;
  677. bne.L wmous ;
  678. addq.l #1,a5 ; shift to next letter
  679.  
  680. def: cmp.b #1,(a5) ; jump
  681. bne.s def2 ;
  682. move.b 1(a5),2(a3) ;
  683. addq.l #2,a5 ;
  684. bra.s def ;
  685. def2: cmp.b #2,(a5) ; speed
  686. bne.s def3 ;
  687. move.b 1(a5),4(a3) ;
  688. addq.l #2,a5 ;
  689. bra.s def ;
  690. def3: cmp.b #3,(a5) ; flash
  691. bne.s def4 ;
  692. bchg #0,5(a3) ;
  693. addq.l #1,a5 ;
  694. bra.s def ;
  695. def4: cmp.b #4,(a5) ; change spin speed
  696. bne.s def5 ;
  697. move.b 1(a5),3(a3) ;
  698. addq.l #2,a5 ;
  699. bra.s def ;
  700. def5: cmp.b #5,(a5) ; colour cycling
  701. bne.s def6 ;
  702. bchg #1,6(a3) ;
  703. addq.l #1,a5 ;
  704. bra.s def ;
  705. def6: cmp.b #6,(a5) ; new ball animation
  706. bne.s def7 ;
  707. move.b 1(a5),7(a3) ; store new animation #
  708. addq.l #2,a5 ;
  709. bra.s def ;
  710. def7: moveq #xstart,d2 ;
  711. wmous: movem.l a0-a6/d0-d7,$150.w ;
  712. rts ;
  713.  
  714. flags: dc.b 0 ; 00 real jump speed
  715. dc.b 0 ; 01 start/stop flag
  716. dc.b 0 ; 02 jump speed
  717. dc.b 0 ; 03 spin speed
  718. dc.b 6 ; 04 scroll speed
  719. dc.b 0 ; 05 flash on/off
  720. dc.b 2 ; 06 colour cycling
  721. dc.b 2 ; 07 animation # (startanim=2)
  722.  
  723. text: blk.b nlet,'['
  724. dc.b '[[[JOIN[THE[POWER^'
  725. dc.b 2,1,'[[',4,2,'[[[[[',2,4,4,4,'[[[[[',4,6,'[[[[[['
  726. dc.b 'DEPECHE[TUFF[VIDEO'
  727. dc.b '[PRODUCTIONS[ARE[PROUD[TO['
  728. dc.b 'PRESENT\\\',3,'[[[[[[[[[[[[[[THE[POWER['
  729. dc.b 'DEMO^[[['
  730. dc.b '[[[[[[[[[[[[[['
  731. dc.b 'YEAH[GUYS][[[IT[WAS[ABOUT[TIME[TO',6,1
  732. dc.b '[SHOW[THE[WORLD[SOME[NEW[AND[REAL[COOL['
  733. dc.b 'EFFECT',4,4,'S[ON[THIS[MACH',4,2,'INE^[[[[',4,6
  734. dc.b '[[[[[[[AND[HEY][[[',3,'[[',1,10,'[I'
  735. dc.b '[THIN',1,20,'K[THEY[ARE',1,40
  736. dc.b '[RATHER',1,0,'[COOL^[[[[[[',4,2,'[[',4,4
  737. dc.b '[[[[',4,6,3
  738. dc.b '[[[[[[[[[['
  739. dc.b 'CREDITSd[[[[CODING[BY[THE[COOL[DEPECHE[[[[a'
  740. dc.b '[[[[GRAPHIX[BY[DEPECHE[[[['
  741. dc.b 4,4,'a[[[[VECTO',4,6
  742. dc.b 'R[MATHEMATIX'
  743. dc.b '[BY[THE[GREAT[AMICOM[AND[DEPECHE[[[[a'
  744. dc.b '[[[[LETTER[TURNING[MATHEMATIX[BY[THE[TUFF['
  745. dc.b 'DEPECHE[[[[a',6,3
  746. dc.b '[[[[LOGO[SPINROUTINE[BY[AMICOM[[[['
  747. dc.b 'a[[[[MEGA[DEF[SOUND[BY[D\O\C\'
  748. dc.b '[bDOCTOR[MABUSE[ORGASM[CRACKINGS^c[[[[a'
  749. dc.b '[[[[LOGOFONT[BY[TRISTAR[[[[',6,8
  750. dc.b '[[[[[[[[['
  751.  
  752. dc.b 'DEPECHES[REGARDS[AND[HANDSHAKES[ARE['
  753. dc.b 'ROLLING[OVER[TOd[[[['
  754. dc.b 'SCA[[[[a[[[[POWER[POINT[[[[a[[[['
  755. dc.b 'D\O\C\[bTHIS[SOUND[IS[TUFF^c[[[[a'
  756. dc.b '[[[[DEFJAM[bYYEEEAAHHHHH]]]]c[[[[a'
  757. dc.b '[[[[MAHONEY[AND[KAKTUS[OF[NS[AND[FLT[b',6,4
  758. dc.b 'NICE[EFFECTS]c[[[['
  759.  
  760. dc.b 4,2
  761. dc.b 'AMICOM[ADDS[THE[FOLLOWING[GUYSd[[['
  762. dc.b 'METALLaWAR[bNICE[EHB[DEMO[AND[SUPER['
  763. dc.b 'SOUND`[REAL[GOOD][[[PARADROID[POOI['
  764. dc.b 'bNICE[APPLEGUY[ROUTINEc[[['
  765. dc.b 6,5,4,4
  766. dc.b 'CBM[ENaJOY`[STILL[THE[TRUE[CREATOR['
  767. dc.b 'OF[THE[GARRISON[TITLE[MELODY[STOLEN['
  768. dc.b 'BY[P\[DE[SAPIO[[[[[[[[[[[',4,6
  769.  
  770. dc.b 3
  771. dc.b 'A[WORD[ABOUT[COPYaPARTIESd[[[',4,2
  772. dc.b 'WE[HATE[TO[SEARCH[THE[LOCATIONS[',1,20,3
  773. dc.b 'OF[B',1,0,3,'AD[ORGANIZED[PARTIES[LIKE['
  774. dc.b 'THE[ONE[OF',1,20,3,'[ALC'
  775. dc.b 1,0,3,'ATRAZ[IN[GENEVA^['
  776. dc.b 3,4,6
  777.  
  778. dc.b 6,7
  779. dc.b '[[[[[[[[[['
  780. dc.b 'YOU[ARE[READING[AMICOMS[COOL['
  781. dc.b 'WORDS[NOW\[[[[[[[FIRST[A[WORD[TO['
  782. dc.b 'ALL[THOSE[STUPID[GUYS[WHO[CANT[',4,4
  783. dc.b 'STOP[LAMENTING[ABOUT[FILLED[OR['
  784. dc.b 'UNFILLED[VECTOR[GRAPHICS][SHUT[YAR['
  785. dc.b 'MOUTH[AS[LONG[AS[YOU[DONT[EVEN[HAVE['
  786. dc.b 'ANY[MATHEMATICS[AT[ALL^[',4,6
  787.  
  788. dc.b 6,6
  789. dc.b '[[[['
  790. dc.b 'ARE[YOU[AFRAID[OF[VIRUSES_[[[YES___['
  791. dc.b 'DO[YOU[MAYBE[PANIC[WHEN[ONE[OF['
  792. dc.b 'THESE[POOR[LITTLE[CREATURES[HITS[YOU_['
  793. dc.b 'THEN[YOU[ARE[EITHER[ONE[OF[THOSE[IDIOITS['
  794. dc.b 'WHO[STILL[THINK[EVERY[DISK[HAS[GOT[TO['
  795. dc.b 'HAVE[A[STANDARD[BOOTBLOCK`[OR[OTHERWISE[',6,5
  796. dc.b 'YOU[ARE[NOT[TUFF^^[[[[[['
  797.  
  798. dc.b '[[[[[BEFORE[I[FORGET[IT][[[[['
  799. dc.b 'I[WANT[TO[POINT[MY[FINGER[ON[LASER[BEAM['
  800. dc.b '[[bHEY[HANS`[DONT[FORGET[TO[EAT[SOME['
  801. dc.b 'FROM[BITS[AND[TO[BRING[ME[EDELWEISSc['
  802. dc.b '[[[[[[['
  803.  
  804. dc.b 'AND[HERE[ARE[THE[ANSWERS[TO[SOME[OF[YOUR['
  805. dc.b 'MOST[IMPORTANT[QUESTIONS[ABOUT[THIS[DEMOd['
  806. dc.b 'THE[WHOLE[AMIGA[CHIP[MEMORY[IS[USED[UP^[['
  807. dc.b 'THE[LAST[BYTE[HAS[BEEN[FILLED[WITH['
  808. dc.b 'SCROLLTEXT][[[THE[TURNING[MATHEMATIX['
  809. dc.b 'WAS[SPED[UP[FROM[A[QUARTER[OF[AN[HOUR['
  810. dc.b 'TO[TWENTY[SECONDS\\\[[[['
  811. dc.b 'WWWWOOOOOOWWWW^[',2,1
  812. dc.b '[[[[[[[',6,1,2,4,'[[[[[[[['
  813. dc.b '[[[[DEPECHE[IS[STILL[AT[THE[TOP[OF[EVERY['
  814. dc.b 'HIGHSCORE\\\[[[ESPECIALLY[IN[MY[TERRA[CRESTA['
  815. dc.b 'CARD]]_[[[[[[[[[[[[[['
  816. dc.b 'SEE[YOU[SOON[IN[AMICOMS[ATOM[DEMO\[[[[[[',6,2,3
  817. blk.b nlet,'['
  818. dc.b $ff
  819.  
  820. even
  821. clist: dc.w $0180,$0000,$0100,$4200,$0102,$0000,$008e,$2c81
  822. dc.w $0090,$2cc1,$0092,$0038,$0094,$00d0,$0108,$0000
  823. dc.w $010a,$0000,$0104,$0000
  824. dc.w $00e0,plane0/$10000
  825. dc.w $00e2,plane0
  826. dc.w $00e4,plane1/$10000
  827. dc.w $00e6,plane1
  828. dc.w $00e8,plane2/$10000
  829. dc.w $00ea,plane2
  830. dc.w $00ec,plane3/$10000
  831. dc.w $00ee,plane3
  832. dc.w $0182,$0fff,$0184,$0def,$0186,$0bdf
  833. dc.w $0188,$09cf,$018a,$07bf,$018c,$059f,$018e,$036d
  834. dc.w $0190,$0fbd,$0192,$0eb9,$0194,$0d97,$0196,$0c75
  835. dc.w $0198,$0b53,$019a,$0a42,$019c,$0842,$019e,$0520
  836. dc.w $0120,sprite1/$10000
  837. dc.w $0122,sprite1&$ffff
  838. dc.w $0124,$0000,$0126,$0000,$0128,$0000,$012a,$0000
  839. dc.w $012c,$0000,$012e,$0000,$0130,$0000,$0132,$0000
  840. dc.w $0134,$0000,$0136,$0000,$0138,$0000,$013a,$0000
  841. dc.w $013c,$0000,$013e,$0000
  842. cend: dc.l 0
  843.  
  844. clist2: dc.w $0100,$1200
  845. dc.w $00e0,tplane/$10000
  846. dc.w $00e2,tplane+[13*54]
  847. dc.w $0100,$1200
  848. dc.w $0108,llen-$2e
  849. dc.w $010a,$0000
  850. dc.w $0182,$0f4c
  851. dc.l 0
  852.  
  853. clist3: dc.w $00e0,bplane1/$10000
  854. dc.w $00e2,bplane1
  855. dc.w $00e4,bplane2/$10000
  856. dc.w $00e6,bplane2
  857. dc.w $0100,$2200
  858. dc.w $0182,$0000
  859. dc.w $0184,$0000
  860. dc.w $0186,$0000
  861. dc.w $0104,$0000
  862. dc.l 0
  863.  
  864. clist4: dc.w $00e0,bplane1/$10000
  865. dc.w $00e2,bplane1+[84*40]
  866. dc.w $00e8,bplane2/$10000
  867. dc.w $00ea,bplane2+[84*40]+8
  868. dc.w $00e4,tplane/$10000
  869. dc.w $00e6,tplane-[3*llen]+4
  870. dc.w $010a,llen-$2e
  871. dc.w $0108,-$0006
  872. dc.w $008e,$2c61
  873. dc.w $0090,$2dd1
  874. dc.w $0092,$0028
  875. dc.w $0094,$00d8
  876. dc.w $0192,$0f4c
  877. dc.w $0100,$3600
  878. dc.w $0104,$0040
  879. dc.l 0
  880.  
  881.  
  882. *------ SOUNDTRACKER ROUTINE ----------------------------------------*
  883.  
  884. mt_init:move.l #mt_data,a0
  885. add.l #$01d8,a0
  886. move.l #$0080,d0
  887. moveq #$00,d1
  888. mt_init1:
  889. move.l d1,d2
  890. subq.w #1,d0
  891. mt_init2:
  892. move.b (a0)+,d1
  893. cmp.b d2,d1
  894. bgt.s mt_init1
  895. dbf d0,mt_init2
  896. addq.b #1,d2
  897.  
  898. mt_init3:
  899. move.l #mt_data,a0
  900. lea mt_sample1(pc),a1
  901. asl.l #$08,d2
  902. asl.l #$02,d2
  903. add.l #$0258,d2
  904. add.l a0,d2
  905. moveq #$0e,d0
  906. mt_init4:
  907. move.l d2,(a1)+
  908. moveq #$00,d1
  909. move.w 42(a0),d1
  910. asl.l #1,d1
  911. add.l d1,d2
  912. add.l #$1e,a0
  913. dbf d0,mt_init4
  914.  
  915. lea mt_sample1(pc),a0
  916. moveq #$00,d0
  917. mt_clear:
  918. move.l (a0,d0),a1
  919. clr.l (a1)
  920. addq.l #4,d0
  921. cmp.l #$3c,d0
  922. bne.s mt_clear
  923.  
  924. clr.w $dff0a8
  925. clr.w $dff0b8
  926. clr.w $dff0c8
  927. clr.w $dff0d8
  928. clr.l mt_partnrplay
  929. clr.l mt_partnote
  930. clr.l mt_partpoint
  931.  
  932. move.b mt_data+$1d6,mt_maxpart+1
  933. rts
  934.  
  935. mt_music:
  936. addq.l #1,mt_counter
  937. mt_cool:cmp.l #6,mt_counter
  938. bne.s mt_notsix
  939. clr.l mt_counter
  940. bra mt_rout2
  941.  
  942. mt_notsix:
  943. lea mt_aud1temp(pc),a6
  944. tst.b 3(a6)
  945. beq.s mt_arp1
  946. lea $dff0a0,a5
  947. bsr.s mt_arprout
  948. mt_arp1:lea mt_aud2temp(pc),a6
  949. tst.b 3(a6)
  950. beq.s mt_arp2
  951. lea $dff0b0,a5
  952. bsr.s mt_arprout
  953. mt_arp2:lea mt_aud3temp(pc),a6
  954. tst.b 3(a6)
  955. beq.s mt_arp3
  956. lea $dff0c0,a5
  957. bsr.s mt_arprout
  958. mt_arp3:lea mt_aud4temp(pc),a6
  959. tst.b 3(a6)
  960. beq.s mt_arp4
  961. lea $dff0d0,a5
  962. bra.s mt_arprout
  963. mt_arp4:rts
  964.  
  965. mt_arprout:
  966. move.b 2(a6),d0
  967. and.b #$0f,d0
  968. tst.b d0
  969. beq.s mt_arpegrt
  970. cmp.b #1,d0
  971. beq.s mt_portup
  972. cmp.b #2,d0
  973. beq.s mt_portdwn
  974. rts
  975.  
  976. mt_portup:
  977. moveq #$00,d0
  978. move.b 3(a6),d0
  979. sub.w d0,22(a6)
  980. cmp.w #$71,22(a6)
  981. bpl.s mt_ok1
  982. move.w #$71,22(a6)
  983. mt_ok1: move.w 22(a6),6(a5)
  984. rts
  985.  
  986. mt_portdwn:
  987. moveq #$00,d0
  988. move.b 3(a6),d0
  989. add.w d0,22(a6)
  990. cmp.w #$358,22(a6)
  991. bmi.s mt_ok2
  992. move.w #$358,22(a6)
  993. mt_ok2: move.w 22(a6),6(a5)
  994. rts
  995.  
  996. mt_arpegrt:
  997. cmp.l #1,mt_counter
  998. beq.s mt_loop2
  999. cmp.l #2,mt_counter
  1000. beq.s mt_loop3
  1001. cmp.l #3,mt_counter
  1002. beq.s mt_loop4
  1003. cmp.l #4,mt_counter
  1004. beq.s mt_loop2
  1005. cmp.l #5,mt_counter
  1006. beq.s mt_loop3
  1007. rts
  1008.  
  1009. mt_loop2:
  1010. moveq #$00,d0
  1011. move.b 3(a6),d0
  1012. lsr.b #4,d0
  1013. bra.s mt_cont
  1014. mt_loop3:
  1015. moveq #$00,d0
  1016. move.b 3(a6),d0
  1017. and.b #$0f,d0
  1018. bra.s mt_cont
  1019. mt_loop4:
  1020. move.w 16(a6),d2
  1021. bra.s mt_endpart
  1022. mt_cont:
  1023. asl.w #1,d0
  1024. moveq #$00,d1
  1025. move.w 16(a6),d1
  1026. lea mt_arpeggio(pc),a0
  1027. mt_loop5:
  1028. move.w (a0,d0),d2
  1029. cmp.w (a0),d1
  1030. beq.s mt_endpart
  1031. addq.l #2,a0
  1032. bra.s mt_loop5
  1033. mt_endpart:
  1034. move.w d2,6(a5)
  1035. rts
  1036.  
  1037. mt_rout2:
  1038. move.l #mt_data,a0
  1039. move.l a0,a3
  1040. add.l #$0c,a3
  1041. move.l a0,a2
  1042. add.l #$1d8,a2
  1043. add.l #$258,a0
  1044. move.l mt_partnrplay,d0
  1045. moveq #$00,d1
  1046. move.b (a2,d0),d1
  1047. asl.l #$08,d1
  1048. asl.l #$02,d1
  1049. add.l mt_partnote,d1
  1050. move.l d1,mt_partpoint
  1051. clr.w mt_dmacon
  1052.  
  1053. lea $dff0a0,a5
  1054. lea mt_aud1temp(pc),a6
  1055. bsr mt_playit
  1056. lea $dff0b0,a5
  1057. lea mt_aud2temp(pc),a6
  1058. bsr mt_playit
  1059. lea $dff0c0,a5
  1060. lea mt_aud3temp(pc),a6
  1061. bsr mt_playit
  1062. lea $dff0d0,a5
  1063. lea mt_aud4temp(pc),a6
  1064. bsr mt_playit
  1065. move.w #$01f4,d0
  1066. mt_rls: dbf d0,mt_rls
  1067.  
  1068. move.w #$8000,d0
  1069. or.w mt_dmacon,d0
  1070. move.w d0,$dff096
  1071.  
  1072. lea mt_aud4temp(pc),a6
  1073. cmp.w #1,14(a6)
  1074. bne.s mt_voice3
  1075. move.l 10(a6),$dff0d0
  1076. move.w #1,$dff0d4
  1077. mt_voice3:
  1078. lea mt_aud3temp(pc),a6
  1079. cmp.w #1,14(a6)
  1080. bne.s mt_voice2
  1081. move.l 10(a6),$dff0c0
  1082. move.w #1,$dff0c4
  1083. mt_voice2:
  1084. lea mt_aud2temp(pc),a6
  1085. cmp.w #1,14(a6)
  1086. bne.s mt_voice1
  1087. move.l 10(a6),$dff0b0
  1088. move.w #1,$dff0b4
  1089. mt_voice1:
  1090. lea mt_aud1temp(pc),a6
  1091. cmp.w #1,14(a6)
  1092. bne.s mt_voice0
  1093. move.l 10(a6),$dff0a0
  1094. move.w #1,$dff0a4
  1095. mt_voice0:
  1096. move.l mt_partnote,d0
  1097. add.l #$10,d0
  1098. move.l d0,mt_partnote
  1099. cmp.l #$400,d0
  1100. bne.s mt_stop
  1101. mt_higher:
  1102. clr.l mt_partnote
  1103. addq.l #1,mt_partnrplay
  1104. moveq #$00,d0
  1105. move.w mt_maxpart,d0
  1106. move.l mt_partnrplay,d1
  1107. cmp.l d0,d1
  1108. bne.s mt_stop
  1109. clr.l mt_partnrplay
  1110.  
  1111. mt_stop:tst.w mt_status
  1112. beq.s mt_stop2
  1113. clr.w mt_status
  1114. bra.s mt_higher
  1115. mt_stop2:
  1116. rts
  1117.  
  1118. mt_playit:
  1119. move.l (a0,d1),(a6)
  1120. addq.l #4,d1
  1121. moveq #$00,d2
  1122. move.b 2(a6),d2
  1123. and.b #$f0,d2
  1124. lsr.b #4,d2
  1125. tst.b d2
  1126. beq.s mt_nosamplechange
  1127.  
  1128. moveq #$00,d3
  1129. lea mt_samples(pc),a1
  1130. move.l d2,d4
  1131. asl.l #2,d2
  1132. mulu #$1e,d4
  1133. move.l (a1,d2),4(a6)
  1134. move.w (a3,d4),8(a6)
  1135. move.w 2(a3,d4),18(a6)
  1136. move.w 4(a3,d4),d3
  1137. tst.w d3
  1138. beq.s mt_displace
  1139. move.l 4(a6),d2
  1140. add.l d3,d2
  1141. move.l d2,4(a6)
  1142. move.l d2,10(a6)
  1143. move.w 6(a3,d4),8(a6)
  1144. move.w 6(a3,d4),14(a6)
  1145. move.w 18(a6),8(a5)
  1146. bra.s mt_nosamplechange
  1147.  
  1148. mt_displace:
  1149. move.l 4(a6),d2
  1150. add.l d3,d2
  1151. move.l d2,10(a6)
  1152. move.w 6(a3,d4),14(a6)
  1153. move.w 18(a6),8(a5)
  1154. mt_nosamplechange:
  1155. tst.w (a6)
  1156. beq.s mt_retrout
  1157. move.w (a6),16(a6)
  1158. move.w 20(a6),$dff096
  1159. move.l 4(a6),(a5)
  1160. move.w 8(a6),4(a5)
  1161. move.w (a6),6(a5)
  1162. move.w 20(a6),d0
  1163. or.w d0,mt_dmacon
  1164.  
  1165. mt_retrout:
  1166. tst.w (a6)
  1167. beq.s mt_nonewper
  1168. move.w (a6),22(a6)
  1169.  
  1170. mt_nonewper:
  1171. move.b 2(a6),d0
  1172. and.b #$0f,d0
  1173. cmp.b #11,d0
  1174. beq.s mt_posjmp
  1175. cmp.b #12,d0
  1176. beq.s mt_setvol
  1177. cmp.b #13,d0
  1178. beq.s mt_break
  1179. cmp.b #14,d0
  1180. beq.s mt_setfil
  1181. cmp.b #15,d0
  1182. beq.s mt_setspeed
  1183. rts
  1184.  
  1185. mt_posjmp:
  1186. not.w mt_status
  1187. moveq #$00,d0
  1188. move.b 3(a6),d0
  1189. subq.b #$01,d0
  1190. move.l d0,mt_partnrplay
  1191. rts
  1192.  
  1193. mt_setvol:
  1194. move.b 3(a6),8(a5)
  1195. rts
  1196.  
  1197. mt_break:
  1198. not.w mt_status
  1199. rts
  1200.  
  1201. mt_setfil:
  1202. moveq #$00,d0
  1203. move.b 3(a6),d0
  1204. and.b #$01,d0
  1205. rol.b #$01,d0
  1206. and.b #$fd,$bfe001
  1207. or.b d0,$bfe001
  1208. rts
  1209.  
  1210. mt_setspeed:
  1211. move.b 3(a6),d0
  1212. and.b #$0f,d0
  1213. beq.s mt_back
  1214. clr.l mt_counter
  1215. move.b d0,mt_cool+5
  1216. mt_back:rts
  1217.  
  1218. mt_aud1temp:
  1219. blk.w 10,0
  1220. dc.w $0001
  1221. blk.w 2,0
  1222. mt_aud2temp:
  1223. blk.w 10,0
  1224. dc.w $0002
  1225. blk.w 2,0
  1226. mt_aud3temp:
  1227. blk.w 10,0
  1228. dc.w $0004
  1229. blk.w 2,0
  1230. mt_aud4temp:
  1231. blk.w 10,0
  1232. dc.w $0008
  1233. blk.w 2,0
  1234. mt_partnote: dc.l 0
  1235. mt_partnrplay: dc.l 0
  1236. mt_counter: dc.l 0
  1237. mt_partpoint: dc.l 0
  1238. mt_samples:dc.l 0
  1239. mt_sample1:blk.l 15,0
  1240. mt_maxpart:dc.w $0000
  1241. mt_dmacon:dc.w $0000
  1242. mt_status:dc.w $0000
  1243.  
  1244. mt_arpeggio:
  1245. dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c
  1246. dc.w $023a,$021a,$01fc,$01e0,$01c5,$01ac,$0194,$017d
  1247. dc.w $0168,$0153,$0140,$012e,$011d,$010d,$00fe,$00f0
  1248. dc.w $00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097
  1249. dc.w $008f,$0087,$007f,$0078,$0071,$0000,$0000,$0000
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256. ; AMICOM'S SINE TABLE 1988-03-03 BY AMICOM AND DEPECHE
  1257. sine: dc.w $0000,$0004,$0009,$000d,$0012,$0016,$001b,$001f
  1258. dc.w $0024,$0028,$002c,$0031,$0035,$003a,$003e,$0042
  1259. dc.w $0047,$004b,$004f,$0053,$0058,$005c,$0060,$0064
  1260. dc.w $0068,$006c,$0070,$0074,$0078,$007c,$0080,$0084
  1261. dc.w $0088,$008b,$008f,$0093,$0096,$009a,$009e,$00a1
  1262. dc.w $00a5,$00a8,$00ab,$00af,$00b2,$00b5,$00b8,$00bb
  1263. dc.w $00be,$00c1,$00c4,$00c7,$00ca,$00cc,$00cf,$00d2
  1264. dc.w $00d4,$00d7,$00d9,$00db,$00de,$00e0,$00e2,$00e4
  1265. dc.w $00e6,$00e8,$00ea,$00ec,$00ed,$00ef,$00f1,$00f2
  1266. dc.w $00f3,$00f5,$00f6,$00f7,$00f8,$00f9,$00fa,$00fb
  1267. dc.w $00fc,$00fd,$00fe,$00fe,$00ff,$00ff,$00ff,$0100
  1268. dc.w $0100,$0100,$0100,$0100,$0100,$0100,$00ff,$00ff
  1269. dc.w $00ff,$00fe,$00fe,$00fd,$00fc,$00fb,$00fa,$00f9
  1270. dc.w $00f8,$00f7,$00f6,$00f5,$00f3,$00f2,$00f1,$00ef
  1271. dc.w $00ed,$00ec,$00ea,$00e8,$00e6,$00e4,$00e2,$00e0
  1272. dc.w $00de,$00db,$00d9,$00d7,$00d4,$00d2,$00cf,$00cc
  1273. dc.w $00ca,$00c7,$00c4,$00c1,$00be,$00bb,$00b8,$00b5
  1274. dc.w $00b2,$00af,$00ab,$00a8,$00a5,$00a1,$009e,$009a
  1275. dc.w $0096,$0093,$008f,$008b,$0088,$0084,$0080,$007c
  1276. dc.w $0078,$0074,$0070,$006c,$0068,$0064,$0060,$005c
  1277. dc.w $0058,$0053,$004f,$004b,$0047,$0042,$003e,$003a
  1278. dc.w $0035,$0031,$002c,$0028,$0024,$001f,$001b,$0016
  1279. dc.w $0012,$000d,$0009,$0004,$0000,$fffc,$fff7,$fff3
  1280. dc.w $ffee,$ffea,$ffe5,$ffe1,$ffdc,$ffd8,$ffd4,$ffcf
  1281. dc.w $ffcb,$ffc6,$ffc2,$ffbe,$ffb9,$ffb5,$ffb1,$ffad
  1282. dc.w $ffa8,$ffa4,$ffa0,$ff9c,$ff98,$ff94,$ff90,$ff8c
  1283. dc.w $ff88,$ff84,$ff80,$ff7c,$ff78,$ff75,$ff71,$ff6d
  1284. dc.w $ff6a,$ff66,$ff62,$ff5f,$ff5b,$ff58,$ff55,$ff51
  1285. dc.w $ff4e,$ff4b,$ff48,$ff45,$ff42,$ff3f,$ff3c,$ff39
  1286. dc.w $ff36,$ff34,$ff31,$ff2e,$ff2c,$ff29,$ff27,$ff25
  1287. dc.w $ff22,$ff20,$ff1e,$ff1c,$ff1a,$ff18,$ff16,$ff14
  1288. dc.w $ff13,$ff11,$ff0f,$ff0e,$ff0d,$ff0b,$ff0a,$ff09
  1289. dc.w $ff08,$ff07,$ff06,$ff05,$ff04,$ff03,$ff02,$ff02
  1290. dc.w $ff01,$ff01,$ff01,$ff00,$ff00,$ff00,$ff00,$ff00
  1291. dc.w $ff00,$ff00,$ff01,$ff01,$ff01,$ff02,$ff02,$ff03
  1292. dc.w $ff04,$ff05,$ff06,$ff07,$ff08,$ff09,$ff0a,$ff0b
  1293. dc.w $ff0d,$ff0e,$ff0f,$ff11,$ff13,$ff14,$ff16,$ff18
  1294. dc.w $ff1a,$ff1c,$ff1e,$ff20,$ff22,$ff25,$ff27,$ff29
  1295. dc.w $ff2c,$ff2e,$ff31,$ff34,$ff36,$ff39,$ff3c,$ff3f
  1296. dc.w $ff42,$ff45,$ff48,$ff4b,$ff4e,$ff51,$ff55,$ff58
  1297. dc.w $ff5b,$ff5f,$ff62,$ff66,$ff6a,$ff6d,$ff71,$ff75
  1298. dc.w $ff78,$ff7c,$ff80,$ff84,$ff88,$ff8c,$ff90,$ff94
  1299. dc.w $ff98,$ff9c,$ffa0,$ffa4,$ffa8,$ffad,$ffb1,$ffb5
  1300. dc.w $ffb9,$ffbe,$ffc2,$ffc6,$ffcb,$ffcf,$ffd4,$ffd8
  1301. dc.w $ffdc,$ffe1,$ffe5,$ffea,$ffee,$fff3,$fff7,$fffc
  1302.  
  1303. dc.w $0000,$0004,$0009,$000d,$0012,$0016,$001b,$001f
  1304. dc.w $0024,$0028,$002c,$0031,$0035,$003a,$003e,$0042
  1305. dc.w $0047,$004b,$004f,$0053,$0058,$005c,$0060,$0064
  1306. dc.w $0068,$006c,$0070,$0074,$0078,$007c,$0080,$0084
  1307. dc.w $0088,$008b,$008f,$0093,$0096,$009a,$009e,$00a1
  1308. dc.w $00a5,$00a8,$00ab,$00af,$00b2,$00b5,$00b8,$00bb
  1309. dc.w $00be,$00c1,$00c4,$00c7,$00ca,$00cc,$00cf,$00d2
  1310. dc.w $00d4,$00d7,$00d9,$00db,$00de,$00e0,$00e2,$00e4
  1311. dc.w $00e6,$00e8,$00ea,$00ec,$00ed,$00ef,$00f1,$00f2
  1312. dc.w $00f3,$00f5,$00f6,$00f7,$00f8,$00f9,$00fa,$00fb
  1313. dc.w $00fc,$00fd,$00fe,$00fe,$00ff,$00ff,$00ff,$0100
  1314. dc.w $0100,$0100,$0100,$0100,$0100,$0100,$00ff,$00ff
  1315. dc.w $00ff,$00fe,$00fe,$00fd,$00fc,$00fb,$00fa,$00f9
  1316. dc.w $00f8,$00f7,$00f6,$00f5,$00f3,$00f2,$00f1,$00ef
  1317. dc.w $00ed,$00ec,$00ea,$00e8,$00e6,$00e4,$00e2,$00e0
  1318. dc.w $00de,$00db,$00d9,$00d7,$00d4,$00d2,$00cf,$00cc
  1319. dc.w $00ca,$00c7,$00c4,$00c1,$00be,$00bb,$00b8,$00b5
  1320. dc.w $00b2,$00af,$00ab,$00a8,$00a5,$00a1,$009e,$009a
  1321. dc.w $0096,$0093,$008f,$008b,$0088,$0084,$0080,$007c
  1322. dc.w $0078,$0074,$0070,$006c,$0068,$0064,$0060,$005c
  1323. dc.w $0058,$0053,$004f,$004b,$0047,$0042,$003e,$003a
  1324. dc.w $0035,$0031,$002c,$0028,$0024,$001f,$001b,$0016
  1325. dc.w $0012,$000d,$0009,$0004,$0000,$fffc,$fff7,$fff3
  1326. dc.w $ffee,$ffea,$ffe5,$ffe1,$ffdc,$ffd8,$ffd4,$ffcf
  1327. dc.w $ffcb,$ffc6,$ffc2,$ffbe,$ffb9,$ffb5,$ffb1,$ffad
  1328. dc.w $ffa8,$ffa4,$ffa0,$ff9c,$ff98,$ff94,$ff90,$ff8c
  1329. dc.w $ff88,$ff84,$ff80,$ff7c,$ff78,$ff75,$ff71,$ff6d
  1330. dc.w $ff6a,$ff66,$ff62,$ff5f,$ff5b,$ff58,$ff55,$ff51
  1331. dc.w $ff4e,$ff4b,$ff48,$ff45,$ff42,$ff3f,$ff3c,$ff39
  1332. dc.w $ff36,$ff34,$ff31,$ff2e,$ff2c,$ff29,$ff27,$ff25
  1333. dc.w $ff22,$ff20,$ff1e,$ff1c,$ff1a,$ff18,$ff16,$ff14
  1334. dc.w $ff13,$ff11,$ff0f,$ff0e,$ff0d,$ff0b,$ff0a,$ff09
  1335. dc.w $ff08,$ff07,$ff06,$ff05,$ff04,$ff03,$ff02,$ff02
  1336. dc.w $ff01,$ff01,$ff01,$ff00,$ff00,$ff00,$ff00,$ff00
  1337. dc.w $ff00,$ff00,$ff01,$ff01,$ff01,$ff02,$ff02,$ff03
  1338. dc.w $ff04,$ff05,$ff06,$ff07,$ff08,$ff09,$ff0a,$ff0b
  1339. dc.w $ff0d,$ff0e,$ff0f,$ff11,$ff13,$ff14,$ff16,$ff18
  1340. dc.w $ff1a,$ff1c,$ff1e,$ff20,$ff22,$ff25,$ff27,$ff29
  1341. dc.w $ff2c,$ff2e,$ff31,$ff34,$ff36,$ff39,$ff3c,$ff3f
  1342. dc.w $ff42,$ff45,$ff48,$ff4b,$ff4e,$ff51,$ff55,$ff58
  1343. dc.w $ff5b,$ff5f,$ff62,$ff66,$ff6a,$ff6d,$ff71,$ff75
  1344. dc.w $ff78,$ff7c,$ff80,$ff84,$ff88,$ff8c,$ff90,$ff94
  1345. dc.w $ff98,$ff9c,$ffa0,$ffa4,$ffa8,$ffad,$ffb1,$ffb5
  1346. dc.w $ffb9,$ffbe,$ffc2,$ffc6,$ffcb,$ffcf,$ffd4,$ffd8
  1347. dc.w $ffdc,$ffe1,$ffe5,$ffea,$ffee,$fff3,$fff7,$fffc
  1348.  
  1349.  
  1350. *------ TURNING MATHEMATIX -----------------------------------------*
  1351.  
  1352. org $7da40
  1353. load $7a8c0
  1354.  
  1355. font = bplane1
  1356. table = bplane1
  1357. nolet = 26
  1358. sprite = $7dce8
  1359. sprsize = 36
  1360.  
  1361. rot: bset #1,$bfe001 ; powerled off
  1362. move.w #$83e0,$96(a6) ;
  1363. move.l #clist5,$80(a6) ;
  1364. move.l #clist5,$84(a6) ;
  1365. clr.l $88(a6) ;
  1366. clr.l 0 ;
  1367. move.l #font,a0 ; chars source
  1368. move.l #fontb,a1 ; chars dest
  1369. move.l a1,a2 ;
  1370. move.l #[$7cf00-fontb]/4-1,d0 ;
  1371. clear: clr.l (a1)+ ; clear destination
  1372. subq.l #1,d0 ; memory
  1373. bne.s clear ;
  1374.  
  1375. moveq #nolet-1,d1 ;
  1376. copy_2: moveq #71,d0 ;
  1377. copy: move.l (a0)+,(a2)+ ;
  1378. dbf d0,copy ;
  1379. add.l #$2760,a2 ;
  1380. dbf d1,copy_2 ;
  1381.  
  1382. moveq #10,d7 ; angle
  1383. fetch: lea sine,a0 ;
  1384. move.w d7,d5 ;
  1385. lsl.w #1,d5 ; make offset
  1386. lea (a0,d5.w),a0 ;
  1387. move.w (a0)+,d5 ; d5=sin a
  1388. move.w 180(a0),d6 ; d6=cos a
  1389. move.w d5,sindat ; save sin a
  1390. move.w d6,cosdat ; save con a
  1391.  
  1392. moveq #47,d3 ;
  1393. moveq #-23,d0 ; x pos
  1394. moveq #-23,d1 ; y pos
  1395. move.l #table,a5 ; dest for table
  1396.  
  1397. fix: movem.w d0/d1,-(a7) ; *** calc x' pos
  1398. move.l d0,d5 ; x pos
  1399. move.l d1,d6 ; y pos
  1400. muls cosdat,d5 ; x cos a
  1401. muls sindat,d6 ; y sin a
  1402. add.l d5,d6 ; x' = x cos a + y sin a
  1403. asr.l #8,d6 ; div 256
  1404. muls sindat,d0 ; x sin a
  1405. muls cosdat,d1 ; y cos a
  1406. sub.l d0,d1 ; y' = -x sin a + y cos a
  1407. asr.l #8,d1 ; div 256 x'=d6 y'=d1
  1408.  
  1409. add.l #23,d6 ; xpos
  1410. add.l #23,d1 ; ypos
  1411. ror.l #3,d6 ;
  1412. mulu #6,d1 ;
  1413. add.w d6,d1 ;
  1414. rol.l #3,d6 ; get shift back
  1415. and.w #%111,d6 ;
  1416. moveq #7,d2 ; from left to right
  1417. sub.b d6,d2 ;
  1418. move.w d2,(a5)+ ; save rotated points
  1419. move.w d1,(a5)+ ; (create rotated pointstable)
  1420. movem.w (a7)+,d0/d1 ;
  1421.  
  1422. addq.l #1,d0 ;
  1423. dbf d3,fix ;
  1424. moveq #-23,d0 ;
  1425. moveq #47,d3 ;
  1426. addq.l #1,d1 ;
  1427. cmp.l #24,d1 ;
  1428. bne.s fix ;
  1429.  
  1430. move.l #fontb,a5 ; set px / fontsource
  1431. move.l dest(pc),a6 ; destination
  1432. moveq #nolet-1,d6 ; number of letters
  1433. fast_5: move.l a6,a2 ;
  1434. move.l a5,a0 ;
  1435. move.l #table,a1 ; rotated points
  1436. move.w #42*6,d1 ;
  1437. fast_4: moveq #7,d0 ;
  1438. fast_2: move.w (a1)+,d2 ;
  1439. move.w (a1)+,a4 ;
  1440. btst d0,(a0) ;
  1441. beq.s fast_3 ;
  1442. add.l a2,a4 ;
  1443. bset d2,(a4) ;
  1444. fast_3: dbf d0,fast_2 ;
  1445. addq.l #1,a0 ;
  1446. dbf d1,fast_4 ;
  1447.  
  1448. add.w #36*288,a5 ; next letter
  1449. add.w #36*288,a6 ;
  1450. dbf d6,fast_5 ;
  1451.  
  1452. add.l #288,dest ;
  1453. add.l #10,d7 ;
  1454. cmp.l #360,d7 ; all angels?
  1455. bne.L fetch ;
  1456.  
  1457. shift: lea $dff000,a6 ; remove errors
  1458. lea shift6(pc),a0 ;
  1459. moveq #29,d0 ;
  1460. shift7: move.l (a0)+,a1 ;
  1461. clr.b (a1) ;
  1462. dbf d0,shift7 ;
  1463.  
  1464. lea shifts(pc),a0 ;
  1465. moveq #2,d0 ;
  1466. shift2: btst #14,$02(a6) ;
  1467. bne.s shift2 ;
  1468. move.l (a0)+,$50(a6) ;
  1469. move.l (a0)+,$54(a6) ;
  1470. move.l (a0)+,$48(a6) ;
  1471. clr.w $60(a6) ;
  1472. clr.l $64(a6) ;
  1473. move.l #$ffffffff,$44(a6) ;
  1474. move.l #$1bfa0000,$40(a6) ;
  1475. move.w (a0)+,$58(a6) ;
  1476. dbf d0,shift2 ;
  1477.  
  1478. lea $3b205,a0 ;
  1479. shift5: bclr #0,(a0) ;
  1480. addq.l #6,a0 ;
  1481. cmp.l #$7cf00,a0 ;
  1482. blo.s shift5 ;
  1483. rts ;
  1484.  
  1485.  
  1486. shifts: dc.l $3b200,$3b200,$3b200 ;
  1487. dc.w $f300 ;
  1488. dc.l $59800,$59800,$59800 ;
  1489. dc.w $f300 ;
  1490. dc.l $77e00,$77e00,$77e00 ;
  1491. dc.w $2880 ;
  1492.  
  1493. shift6: dc.l $4b6dd,$4b7fc,$4b7fd,$507dd
  1494. dc.l $508fc,$508fd,$5287c,$5287d
  1495. dc.l $5299c,$5305d,$5317c,$5317d
  1496. dc.l $5815d,$5827c,$5827d
  1497. dc.l $6b6dd,$6b7fc,$6b7fd,$707dd
  1498. dc.l $708fc,$708fd,$7287c,$7287d
  1499. dc.l $7299c,$7305d,$7317c,$7317d
  1500. dc.l $7815d,$7827c,$7827d
  1501.  
  1502. sindat: dc.w 0 ; sin a
  1503. cosdat: dc.w 0 ; cos a
  1504. dest: dc.l fontb+$120 ;
  1505.  
  1506. clist5: dc.w $0100,$1200
  1507. dc.w $0180,$0000
  1508. dc.w $0182,$0000
  1509. dc.w $01a2,$0fff
  1510. dc.w $01aa,$0fff
  1511. dc.w $01b2,$0fff
  1512. dc.w $0120,sprite/$10000
  1513. dc.w $0122,sprite
  1514. dc.w $0124,sprite/$10000
  1515. dc.w $0126,sprite+sprsize
  1516. dc.w $0128,sprite/$10000
  1517. dc.w $012a,sprite+[2*sprsize]
  1518. dc.w $012c,sprite/$10000
  1519. dc.w $012e,sprite+[3*sprsize]
  1520. dc.w $0130,sprite/$10000
  1521. dc.w $0132,sprite+[4*sprsize]
  1522. dc.w $0134,$0000
  1523. dc.w $0136,$0000
  1524. dc.w $0138,$0000
  1525. dc.w $013a,$0000
  1526. dc.w $013c,$0000
  1527. dc.w $013e,$0000
  1528. dc.w $ffff,$fffe
  1529.  
  1530. spr1: dc.w $857c,$8c00,$f8f3,$0000,$cd86,$0000,$cd86,$0000
  1531. dc.w $cdf3,$0000,$cd80,$0000,$cd80,$0000,$f8f7,$0000
  1532. dc.w $0000,$0000
  1533. spr2: dc.w $8584,$8c00,$dfbe,$0000,$0633,$0000,$0633,$0000
  1534. dc.w $863e,$0000,$c633,$0000,$c633,$0000,$8633,$0000
  1535. dc.w $0000,$0000
  1536. spr3: dc.w $858c,$8c00,$3cc5,$0000,$62c5,$0000,$62c5,$0000
  1537. dc.w $6279,$0000,$6231,$0000,$6231,$0000,$3c31,$0000
  1538. dc.w $0000,$0000
  1539. spr4: dc.w $8594,$8c00,$9e3e,$0000,$a360,$0000,$a360,$0000
  1540. dc.w $a36e,$0000,$a362,$0000,$a362,$0000,$a33c,$0000
  1541. dc.w $0000,$0000
  1542. spr5: dc.w $859c,$8c00,$0000,$0000,$0000,$0000,$0000,$0000
  1543. dc.w $0000,$0000,$0000,$0000,$0000,$0000,$2222,$0000
  1544. dc.w $0000,$0000
  1545.  
  1546. dc.b 'FUCK YOU AMMON, PIRANHASEN AND OTHER SUCKERS!!'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement