home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Assembler / dse-src6.dms / in.adf / ANGELSRC.DMS / ANGELSRC.adf / SOURCES / intro2 / demo1.S < prev    next >
Encoding:
Text File  |  1989-03-06  |  31.4 KB  |  1,557 lines

  1.  
  2. *   to edit text on screen, simply go to the bottom of the file!
  3.  
  4. jmp $50000
  5.  
  6. org $50000
  7. load $50000
  8.  
  9. bob1=$53000
  10. bob2=$53080
  11. blankbob=$53100
  12. sincos=$54000
  13. font1=$58000
  14. bpsong=$40000
  15.  
  16. >extern "mod.commandohi",$40000
  17. >extern "bob.b",$53000
  18. >extern "sincostab",$54000
  19. >extern "char2.b",$58000
  20.  
  21.     movem.l d0-d7/a0-a6,-(a7)
  22.     bsr init
  23. mouse:
  24.     move.l $dff004,d0
  25.     and.l #$0001ff00,d0
  26.     cmp.l #$00012000,d0
  27.     bne mouse
  28.     btst #6,$bfe001
  29.     beq end
  30. ;    move.w #$00a0,$dff180
  31.     bsr wave
  32.     bsr vectorbobs
  33. ;    move.w #$0a00,$dff180
  34.     bra mouse
  35.  
  36. end:
  37.     move.w #$7fff,$dff09a
  38.     move.l old2,$6c
  39.     move.w old1,$dff09a
  40.     move.w #$040f,$dff096
  41.     move.l 4,a0
  42.     move.l 156(a0),a1
  43.     move.l 38(a1),$dff080
  44.     movem.l (a7)+,d0-d7/a0-a6
  45.     rts
  46.  
  47. **********************************************
  48.  
  49. init:
  50.     move.w #$8420,$dff096
  51.     move.w $dff01c,old1
  52.     add.w #$8000,old1
  53.     move.l $6c,old2
  54.     move.w #$7fff,$dff09a
  55.     move.l #int1,$6c
  56.     move.l #$fe00ff00,$7fff8
  57.     move.l #0,$7fffc
  58.     lea $60000,a0
  59.     lea $80000,a1
  60.     bsr clear
  61.     bsr sprite
  62.     move.l #copper,$dff080
  63.     bsr bpinit
  64.     bsr rfhonda
  65.     move.w #$c020,$dff09a
  66.     rts
  67.  
  68. clear:
  69.     clr.l (a0)+
  70.     cmp.l a0,a1
  71.     bne clear
  72.     rts
  73.  
  74. sprite:
  75.     lea copper,a1
  76.     lea sp1,a0
  77.     bsr sprite2
  78.     lea sp2,a0
  79.     bsr sprite2
  80.     lea sp3,a0
  81.     bsr sprite2
  82.     lea sp4,a0
  83.  
  84. sprite2:
  85.     move.l a0,d0
  86.     move.w d0,6(a1)
  87.     swap d0
  88.     move.w d0,2(a1)
  89.     addq.l #8,a1
  90.     rts
  91.  
  92. old1: dc.w 0
  93. old2: dc.l 0
  94.  
  95. ****************************************
  96.  
  97. int1:
  98.     movem.l d0-d7/a0-a6,-(a7)
  99.     bsr writing
  100.     bsr scols
  101.     add.w #dxangle,xangle
  102.     add.w #dyangle,yangle
  103.     add.w #dzangle,zangle
  104.     bsr bpmusic
  105.     movem.l (a7)+,d0-d7/a0-a6
  106.     move.w #$0020,$dff09c
  107.     rte
  108.  
  109. ****************************************
  110.  
  111. ke: dc.w 4
  112. scols:
  113.     subq.w #1,ke
  114.     beq rg
  115.     rts
  116. rg:
  117.     move.w #4,ke
  118.     move.l cad,a0
  119.     lea scol,a1
  120.     bsr spr1
  121.     bsr spr1
  122.     bsr spr1
  123.     bsr spr1
  124.     bsr spr1
  125.     bsr spr1
  126.     bsr spr1
  127.     bsr spr1
  128.     move.l cad,a0
  129.     addq.l #4,a0
  130.     cmp.l #cend,a0
  131.     blt spr3
  132.     sub.l #cend-cstart,a0
  133. spr3:
  134.     move.l a0,cad
  135.     rts
  136.  
  137. spr1:
  138.     cmp.l #cend,a0
  139.     blt spr2
  140.     sub.l #cend-cstart,a0
  141. spr2:
  142.     move.w (a0),2(a1)
  143.     addq.l #4,a1
  144.     add.l #8,a0
  145.     rts
  146.  
  147. cad:    dc.l cstart
  148. cstart:
  149.  
  150. dc.w    $028f,$048f,$068f,$088f,$0a8f,$0c8f,$0e8f,$0f8f
  151. dc.w    $0f6f,$0f4f,$0f2f,$0f0f,$0f0e,$0f0c,$0f0a,$0f08
  152. dc.w    $0f06,$0f04,$0f02
  153. dc.w    $0f00,$0f10,$0f20,$0f30,$0f40,$0f50,$0f60,$0f70
  154. dc.w    $0f80,$0f90,$0fa0,$0fb0,$0fc0,$0fd0,$0fe0,$0ff0
  155. dc.w    $0ef0,$0df0,$0cf0,$0bf0,$0af0,$09f0,$08f0,$07f0
  156. dc.w    $06f0,$05f0,$04f0,$03f0,$02f0,$01f0,$00f0,$00f1
  157. dc.w    $00f2,$00f3,$00f4,$00f5,$00f6,$00f7,$00f8,$00f9
  158. dc.w    $00fa,$00fb,$00fc,$00fd,$00fe,$00ff,$00ef,$00df
  159. dc.w    $00cf,$00bf,$00af,$009f,$008f,$007f,$006f,$005f
  160. dc.w    $004f,$003f,$002f,$001f,$000f,$000f,$000f,$000f
  161. dc.w    $000f,$000f,$011f,$012f,$013f,$014f,$015f,$016f
  162. dc.w    $017f,$018f
  163.  
  164. cend:
  165.  
  166. dxangle=-5
  167. dyangle=-10
  168. dzangle=0
  169.  
  170. wave:
  171.     move.l pointlist,a1
  172.     move.w nopoints,d7
  173.     move.l code1,a0
  174. poo1:
  175.     clr.l d1
  176.     move.w (a1)+,d1
  177.     addq.l #2,a1
  178.     add.w #200,d1
  179.     lsl.w #1,d1
  180.     move.w (a0,d1.w),d0
  181.     sub.w #$38,d0
  182.     move.w d0,(a1)+
  183.     dbf d7,poo1
  184.  
  185.     add.l #8,code1
  186.     move.l code1,a0
  187.     cmp.l #coend,a0
  188.     blt fast
  189.     sub.l #coend-codes,a0
  190.     move.l a0,code1
  191. fast:
  192.     rts
  193.  
  194. code1: dc.l codes
  195. codes:
  196.  
  197. dc.w    $0038,$0039,$003a,$003b,$003c,$003d,$003e,$003f
  198. dc.w    $0040,$0041,$0042,$0043,$0044,$0045,$0046,$0046
  199. dc.w    $0047,$0048,$0049,$004a,$004b,$004c,$004d,$004e
  200. dc.w    $004f,$0050,$0051,$0051,$0052,$0053,$0054,$0055
  201. dc.w    $0056,$0056,$0057,$0058,$0059,$005a,$005a,$005b
  202. dc.w    $005c,$005d,$005d,$005e,$005f,$0060,$0060,$0061
  203. dc.w    $0062,$0062,$0063,$0064,$0064,$0065,$0065,$0066
  204. dc.w    $0066,$0067,$0067,$0068,$0068,$0069,$0069,$006a
  205. dc.w    $006a,$006b,$006b,$006c,$006c,$006c,$006d,$006d
  206. dc.w    $006d,$006e,$006e,$006e,$006e,$006f,$006f,$006f
  207. dc.w    $006f,$006f,$006f,$0070,$0070,$0070,$0070,$0070
  208. dc.w    $0070,$0070,$0070,$0070,$0070,$0070,$0070,$0070
  209. dc.w    $0070,$0070,$006f,$006f,$006f,$006f,$006f,$006f
  210. dc.w    $006e,$006e,$006e,$006e,$006d,$006d,$006d,$006c
  211. dc.w    $006c,$006c,$006b,$006b,$006a,$006a,$0069,$0069
  212. dc.w    $0068,$0068,$0067,$0067,$0066,$0066,$0065,$0065
  213. dc.w    $0064,$0064,$0063,$0062,$0062,$0061,$0060,$0060
  214. dc.w    $005f,$005e,$005d,$005d,$005c,$005b,$005a,$005a
  215. dc.w    $0059,$0058,$0057,$0056,$0056,$0055,$0054,$0053
  216. dc.w    $0052,$0051,$0051,$0050,$004f,$004e,$004d,$004c
  217. dc.w    $004b,$004a,$0049,$0048,$0047,$0046,$0046,$0045
  218. dc.w    $0044,$0043,$0042,$0041,$0040,$003f,$003e,$003d
  219. dc.w    $003c,$003b,$003a,$0039,$0038,$0037,$0036,$0035
  220. dc.w    $0034,$0033,$0032,$0031,$0030,$002f,$002e,$002d
  221. dc.w    $002c,$002b,$002a,$002a,$0029,$0028,$0027,$0026
  222. dc.w    $0025,$0024,$0023,$0022,$0021,$0020,$001f,$001f
  223. dc.w    $001e,$001d,$001c,$001b,$001a,$001a,$0019,$0018
  224. dc.w    $0017,$0016,$0016,$0015,$0014,$0013,$0013,$0012
  225. dc.w    $0011,$0010,$0010,$000f,$000e,$000e,$000d,$000c
  226. dc.w    $000c,$000b,$000b,$000a,$000a,$0009,$0009,$0008
  227. dc.w    $0008,$0007,$0007,$0006,$0006,$0005,$0005,$0004
  228. dc.w    $0004,$0004,$0003,$0003,$0003,$0002,$0002,$0002
  229. dc.w    $0002,$0001,$0001,$0001,$0001,$0001,$0001,$0000
  230. dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  231. dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0001,$0001
  232. dc.w    $0001,$0001,$0001,$0001,$0002,$0002,$0002,$0002
  233. dc.w    $0003,$0003,$0003,$0004,$0004,$0004,$0005,$0005
  234. dc.w    $0006,$0006,$0007,$0007,$0008,$0008,$0009,$0009
  235. dc.w    $000a,$000a,$000b,$000b,$000c,$000c,$000d,$000e
  236. dc.w    $000e,$000f,$0010,$0010,$0011,$0012,$0013,$0013
  237. dc.w    $0014,$0015,$0016,$0016,$0017,$0018,$0019,$0019
  238. dc.w    $001a,$001b,$001c,$001d,$001e,$001f,$001f,$0020
  239. dc.w    $0021,$0022,$0023,$0024,$0025,$0026,$0027,$0028
  240. dc.w    $0029,$002a,$002a,$002b,$002c,$002d,$002e,$002f
  241. dc.w    $0030,$0031,$0032,$0033,$0034,$0035,$0036,$0037
  242.  
  243. coend:
  244.  
  245. dc.w    $0038,$0039,$003a,$003b,$003c,$003d,$003e,$003f
  246. dc.w    $0040,$0041,$0042,$0043,$0044,$0045,$0046,$0046
  247. dc.w    $0047,$0048,$0049,$004a,$004b,$004c,$004d,$004e
  248. dc.w    $004f,$0050,$0051,$0051,$0052,$0053,$0054,$0055
  249. dc.w    $0056,$0056,$0057,$0058,$0059,$005a,$005a,$005b
  250. dc.w    $005c,$005d,$005d,$005e,$005f,$0060,$0060,$0061
  251. dc.w    $0062,$0062,$0063,$0064,$0064,$0065,$0065,$0066
  252. dc.w    $0066,$0067,$0067,$0068,$0068,$0069,$0069,$006a
  253. dc.w    $006a,$006b,$006b,$006c,$006c,$006c,$006d,$006d
  254. dc.w    $006d,$006e,$006e,$006e,$006e,$006f,$006f,$006f
  255. dc.w    $006f,$006f,$006f,$0070,$0070,$0070,$0070,$0070
  256. dc.w    $0070,$0070,$0070,$0070,$0070,$0070,$0070,$0070
  257. dc.w    $0070,$0070,$006f,$006f,$006f,$006f,$006f,$006f
  258. dc.w    $006e,$006e,$006e,$006e,$006d,$006d,$006d,$006c
  259. dc.w    $006c,$006c,$006b,$006b,$006a,$006a,$0069,$0069
  260. dc.w    $0068,$0068,$0067,$0067,$0066,$0066,$0065,$0065
  261. dc.w    $0064,$0064,$0063,$0062,$0062,$0061,$0060,$0060
  262. dc.w    $005f,$005e,$005d,$005d,$005c,$005b,$005a,$005a
  263. dc.w    $0059,$0058,$0057,$0056,$0056,$0055,$0054,$0053
  264. dc.w    $0052,$0051,$0051,$0050,$004f,$004e,$004d,$004c
  265. dc.w    $004b,$004a,$0049,$0048,$0047,$0046,$0046,$0045
  266. dc.w    $0044,$0043,$0042,$0041,$0040,$003f,$003e,$003d
  267. dc.w    $003c,$003b,$003a,$0039,$0038,$0037,$0036,$0035
  268. dc.w    $0034,$0033,$0032,$0031,$0030,$002f,$002e,$002d
  269. dc.w    $002c,$002b,$002a,$002a,$0029,$0028,$0027,$0026
  270. dc.w    $0025,$0024,$0023,$0022,$0021,$0020,$001f,$001f
  271. dc.w    $001e,$001d,$001c,$001b,$001a,$001a,$0019,$0018
  272. dc.w    $0017,$0016,$0016,$0015,$0014,$0013,$0013,$0012
  273. dc.w    $0011,$0010,$0010,$000f,$000e,$000e,$000d,$000c
  274. dc.w    $000c,$000b,$000b,$000a,$000a,$0009,$0009,$0008
  275. dc.w    $0008,$0007,$0007,$0006,$0006,$0005,$0005,$0004
  276. dc.w    $0004,$0004,$0003,$0003,$0003,$0002,$0002,$0002
  277. dc.w    $0002,$0001,$0001,$0001,$0001,$0001,$0001,$0000
  278. dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  279. dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0001,$0001
  280. dc.w    $0001,$0001,$0001,$0001,$0002,$0002,$0002,$0002
  281. dc.w    $0003,$0003,$0003,$0004,$0004,$0004,$0005,$0005
  282. dc.w    $0006,$0006,$0007,$0007,$0008,$0008,$0009,$0009
  283. dc.w    $000a,$000a,$000b,$000b,$000c,$000c,$000d,$000e
  284. dc.w    $000e,$000f,$0010,$0010,$0011,$0012,$0013,$0013
  285. dc.w    $0014,$0015,$0016,$0016,$0017,$0018,$0019,$0019
  286. dc.w    $001a,$001b,$001c,$001d,$001e,$001f,$001f,$0020
  287. dc.w    $0021,$0022,$0023,$0024,$0025,$0026,$0027,$0028
  288. dc.w    $0029,$002a,$002a,$002b,$002c,$002d,$002e,$002f
  289. dc.w    $0030,$0031,$0032,$0033,$0034,$0035,$0036,$0037
  290.  
  291. dc.w    $0038,$0039,$003a,$003b,$003c,$003d,$003e,$003f
  292. dc.w    $0040,$0041,$0042,$0043,$0044,$0045,$0046,$0046
  293. dc.w    $0047,$0048,$0049,$004a,$004b,$004c,$004d,$004e
  294. dc.w    $004f,$0050,$0051,$0051,$0052,$0053,$0054,$0055
  295. dc.w    $0056,$0056,$0057,$0058,$0059,$005a,$005a,$005b
  296. dc.w    $005c,$005d,$005d,$005e,$005f,$0060,$0060,$0061
  297. dc.w    $0062,$0062,$0063,$0064,$0064,$0065,$0065,$0066
  298. dc.w    $0066,$0067,$0067,$0068,$0068,$0069,$0069,$006a
  299. dc.w    $006a,$006b,$006b,$006c,$006c,$006c,$006d,$006d
  300. dc.w    $006d,$006e,$006e,$006e,$006e,$006f,$006f,$006f
  301. dc.w    $006f,$006f,$006f,$0070,$0070,$0070,$0070,$0070
  302. dc.w    $0070,$0070,$0070,$0070,$0070,$0070,$0070,$0070
  303. dc.w    $0070,$0070,$006f,$006f,$006f,$006f,$006f,$006f
  304. dc.w    $006e,$006e,$006e,$006e,$006d,$006d,$006d,$006c
  305. dc.w    $006c,$006c,$006b,$006b,$006a,$006a,$0069,$0069
  306. dc.w    $0068,$0068,$0067,$0067,$0066,$0066,$0065,$0065
  307. dc.w    $0064,$0064,$0063,$0062,$0062,$0061,$0060,$0060
  308. dc.w    $005f,$005e,$005d,$005d,$005c,$005b,$005a,$005a
  309. dc.w    $0059,$0058,$0057,$0056,$0056,$0055,$0054,$0053
  310. dc.w    $0052,$0051,$0051,$0050,$004f,$004e,$004d,$004c
  311. dc.w    $004b,$004a,$0049,$0048,$0047,$0046,$0046,$0045
  312. dc.w    $0044,$0043,$0042,$0041,$0040,$003f,$003e,$003d
  313. dc.w    $003c,$003b,$003a,$0039,$0038,$0037,$0036,$0035
  314. dc.w    $0034,$0033,$0032,$0031,$0030,$002f,$002e,$002d
  315. dc.w    $002c,$002b,$002a,$002a,$0029,$0028,$0027,$0026
  316. dc.w    $0025,$0024,$0023,$0022,$0021,$0020,$001f,$001f
  317. dc.w    $001e,$001d,$001c,$001b,$001a,$001a,$0019,$0018
  318. dc.w    $0017,$0016,$0016,$0015,$0014,$0013,$0013,$0012
  319. dc.w    $0011,$0010,$0010,$000f,$000e,$000e,$000d,$000c
  320. dc.w    $000c,$000b,$000b,$000a,$000a,$0009,$0009,$0008
  321. dc.w    $0008,$0007,$0007,$0006,$0006,$0005,$0005,$0004
  322. dc.w    $0004,$0004,$0003,$0003,$0003,$0002,$0002,$0002
  323. dc.w    $0002,$0001,$0001,$0001,$0001,$0001,$0001,$0000
  324. dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  325. dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0001,$0001
  326. dc.w    $0001,$0001,$0001,$0001,$0002,$0002,$0002,$0002
  327. dc.w    $0003,$0003,$0003,$0004,$0004,$0004,$0005,$0005
  328. dc.w    $0006,$0006,$0007,$0007,$0008,$0008,$0009,$0009
  329. dc.w    $000a,$000a,$000b,$000b,$000c,$000c,$000d,$000e
  330. dc.w    $000e,$000f,$0010,$0010,$0011,$0012,$0013,$0013
  331. dc.w    $0014,$0015,$0016,$0016,$0017,$0018,$0019,$0019
  332. dc.w    $001a,$001b,$001c,$001d,$001e,$001f,$001f,$0020
  333. dc.w    $0021,$0022,$0023,$0024,$0025,$0026,$0027,$0028
  334. dc.w    $0029,$002a,$002a,$002b,$002c,$002d,$002e,$002f
  335. dc.w    $0030,$0031,$0032,$0033,$0034,$0035,$0036,$0037
  336.  
  337. ********************************************
  338.  
  339. scr1=$60000
  340. scr2=$62800
  341. scr3=$65000
  342. e6: dc.w 1
  343. mintime=300
  344. maxtime=600
  345. e9: dc.w 4
  346.  
  347. writing:
  348.     tst.w e6
  349.     beq dof
  350.     subq.w #1,e6
  351.     cmp.w #2,e6
  352.     beq cbpl1
  353.     cmp.w #1,e6
  354.     beq cbpl2
  355.     bsr colours
  356.     rts
  357.  
  358. cbpl1:
  359.     bsr blitwait
  360.     move.l #$01000000,$dff040
  361.     move.l #scr1,$dff054
  362.     move.w #0,$dff066
  363.     move.w #[maxy*$40]+[res/2],$dff058
  364.     rts
  365.  
  366. cbpl2:
  367.     bsr blitwait
  368.     move.l #$01000000,$dff040
  369.     move.l #scr2,$dff054
  370.     move.w #0,$dff066
  371.     move.w #[maxy*$40]+[res/2],$dff058
  372.     rts
  373.  
  374. temp1: dc.l scr1+[6*42]
  375.  
  376. dof:
  377.     move.l text1,a0
  378.     move.l temp1,a3
  379.     lea $2800(a3),a4
  380. tif:
  381.     move.w #9,d7
  382. te1:
  383.     clr.w d0
  384.     move.b (a0)+,d0
  385.     cmp.b #'o',d0
  386.     bne half
  387.     move.b (a0)+,d0
  388.     cmp.b #'0',d0
  389.     beq tend
  390.     cmp.b #'1',d0
  391.     beq tnew
  392.     cmp.b #'2',d0
  393.     beq teq
  394.     move.w #$0fff,$dff180    ;error in opcodes
  395.     rts
  396.  
  397. tend:
  398.     lea text,a0
  399.     bra t1
  400. teq:
  401.     move.w #maxtime,e6
  402.     bra t1
  403. tnew:
  404.     move.w #mintime,e6
  405. t1:
  406.     move.l a0,text1
  407.     move.l #scr1+[6*42],temp1
  408.     rts
  409.  
  410. half:
  411.     lea font1,a1
  412.     lea $500(a1),a2
  413.     sub.b #$20,d0
  414.     lsl.w #4,d0
  415.     add.w d0,a1
  416.     add.w d0,a2
  417.     bsr dochar
  418.     addq.l #1,a3
  419.     addq.l #1,a4
  420.     dbf d7,te1
  421.     subq.w #1,e9
  422.     bne rabbi
  423.     add.l #674,a3
  424.     move.w #4,e9
  425. rabbi:
  426.     move.l a3,temp1
  427.     move.l a0,text1
  428.     rts
  429.  
  430. *************************************
  431.  
  432. dochar:
  433.     move.b (a1)+,(a3)
  434.     move.b (a1)+,42(a3)
  435.     move.b (a1)+,84(a3)
  436.     move.b (a1)+,126(a3)
  437.     move.b (a1)+,168(a3)
  438.     move.b (a1)+,210(a3)
  439.     move.b (a1)+,252(a3)
  440.     move.b (a1)+,294(a3)
  441.     move.b (a1)+,336(a3)
  442.     move.b (a1)+,378(a3)
  443.     move.b (a1)+,420(a3)
  444.     move.b (a1)+,462(a3)
  445.     move.b (a1)+,504(a3)
  446.     move.b (a1)+,546(a3)
  447.     move.b (a1)+,588(a3)
  448.     move.b (a1)+,630(a3)
  449.  
  450.     move.b (a2)+,(a4)
  451.     move.b (a2)+,42(a4)
  452.     move.b (a2)+,84(a4)
  453.     move.b (a2)+,126(a4)
  454.     move.b (a2)+,168(a4)
  455.     move.b (a2)+,210(a4)
  456.     move.b (a2)+,252(a4)
  457.     move.b (a2)+,294(a4)
  458.     move.b (a2)+,336(a4)
  459.     move.b (a2)+,378(a4)
  460.     move.b (a2)+,420(a4)
  461.     move.b (a2)+,462(a4)
  462.     move.b (a2)+,504(a4)
  463.     move.b (a2)+,546(a4)
  464.     move.b (a2)+,588(a4)
  465.     move.b (a2)+,630(a4)
  466.     rts
  467.  
  468. blitwait:
  469.     btst #14,$dff002
  470.     bne blitwait
  471.     rts
  472.  
  473. text1: dc.l text
  474.  
  475. ***************************************
  476.  
  477. colours:
  478.     cmp.w #16,e6
  479.     blt sa1
  480.     lea colup,a1
  481.     bra bbr
  482. sa1:
  483.     lea coldown,a1
  484. bbr:
  485.     lea cols,a0
  486.     move.w #15,d7
  487. sd1:
  488.     move.w 2(a0),d0
  489.     move.w (a1)+,d1
  490.     bsr shades
  491.     move.w d2,2(a0)
  492.     addq.l #4,a0
  493.     dbf d7,sd1
  494.     rts
  495.  
  496. colup:
  497. dc.l    $000006f6,$04d402a2,$066f06f6,$04d402a2
  498. dc.l    $044c06f6,$04d402a2,$022906f6,$04d402a2
  499. coldown:
  500. dc.l    $00000000,$00000000,$066f066f,$066f066f
  501. dc.l    $044c044c,$044c044c,$02290229,$02290229
  502.  
  503. ********************************
  504.  
  505. *     Colour Shader by Jarre 1990
  506. *     d0=source colour   d1=dest colour
  507. *     d2=final colour
  508.  
  509. shades:
  510.     move.w d0,d2
  511.     move.w d1,d3
  512.     and.w #$0f00,d2
  513.     and.w #$0f00,d3
  514.     cmp.w d2,d3
  515.     beq note1
  516.     bgt up1
  517.     sub.w #$0100,d2
  518.     bra note1
  519. up1:
  520.     add.w #$0100,d2
  521. note1:
  522.     move.w d0,d3
  523.     move.w d1,d4
  524.     and.w #$00f0,d3
  525.     and.w #$00f0,d4
  526.     cmp.w d3,d4
  527.     beq note2
  528.     bgt up2
  529.     sub.w #$0010,d3
  530.     bra note2
  531. up2:
  532.     add.w #$0010,d3
  533. note2:
  534.     or.w d3,d2
  535.     move.w d0,d3
  536.     move.w d1,d4
  537.     and.w #$000f,d3
  538.     and.w #$000f,d4
  539.     cmp.w d3,d4
  540.     beq note3
  541.     bgt up3
  542.     sub.w #$0001,d3
  543.     bra note3
  544. up3:
  545.     add.w #$0001,d3
  546. note3:
  547.     or.w d3,d2
  548.     rts
  549.  
  550. *********************************************
  551.  
  552. screen1: dc.l $70000
  553. screen2: dc.l $72800
  554. screen3: dc.l $77800
  555. screen4: dc.l $7a000
  556. res=42
  557. minx=0
  558. miny=0
  559. maxx=320
  560. maxy=232
  561.  
  562. dist:    dc.w 500
  563. xorg:    dc.w 150
  564. yorg:    dc.w 100
  565. nopoints: dc.w 0
  566. nopoints1: dc.w 70
  567. nopoints2: dc.w 70
  568. pointlist: dc.l 0
  569. spoint: dc.l slist
  570. slist:
  571.  
  572. dc.l    angels
  573. dc.l    defjam
  574. dc.l    0
  575.  
  576. angels:
  577.  
  578. dc.w    70
  579. dc.w    -120,20,0,-110,20,0,-100,20,0,-90,20,0
  580. dc.w    -120,10,0,-120,0,0,-120,-10,0,-120,-20,0
  581. dc.w    -110,0,0,-100,0,0,-90,10,0,-90,0,0,-90,-10,0,-90,-20,0
  582.  
  583. dc.w    -75,20,0,-65,20,0,-55,20,0,-75,10,0,-75,0,0,-75,-10,0,-75,-20,0
  584. dc.w    -45,10,0,-45,0,0,-45,-10,0,-45,-20,0
  585.  
  586. dc.w    0,20,0,-10,20,0,-20,20,0,-30,10,0,-30,0,0,-30,-10,0
  587. dc.w    -20,-20,0,-10,-20,0,0,-20,0,0,-10,0,0,0,0,-10,0,0
  588.  
  589. dc.w    45,20,0,35,20,0,25,20,0,15,10,0,15,0,0,15,-10,0,25,-20,0
  590. dc.w    35,-20,0,45,-20,0,25,0,0,35,0,0
  591.  
  592. dc.w    60,20,0,60,10,0,60,0,0,60,-10,0,60,-20,0,70,-20,0
  593. dc.w    80,-20,0,90,-20,0
  594.  
  595. dc.w    135,20,0,125,20,0,115,20,0,105,20,0,105,10,0,105,0,0
  596. dc.w    115,0,0,125,0,0,135,0,0,135,-10,0,135,-20,0
  597. dc.w    125,-20,0,115,-20,0,105,-20,0
  598.  
  599. defjam:
  600.  
  601. dc.w    67
  602. dc.w    -105,20,0,-105,10,0,-105,0,0,-105,-10,0,-105,-20,0
  603. dc.w    -95,20,0,-85,20,0,-75,10,0,-75,0,0,-75,-10,0
  604. dc.w    -85,-20,0,-95,-20,0
  605.  
  606. dc.w    -40,20,0,-50,20,0,-60,10,0,-60,0,0,-60,-10,0,-50,-20,0
  607. dc.w    -40,-20,0,-50,0,0,-40,0,0
  608.  
  609. dc.w    -25,20,0,-15,20,0,-5,20,0,-25,10,0,-25,0,0,-25,-10,0
  610. dc.w    -25,-20,0,-15,0,0
  611.  
  612. dc.w    10,20,0,20,20,0,30,20,0,20,10,0,20,0,0,20,-10,0
  613. dc.w    20,-20,0,10,-20,0,0,-20,0
  614.  
  615. dc.w    45,20,0,55,20,0,65,20,0,75,20,0,45,10,0,45,0,0
  616. dc.w    45,-10,0,45,-20,0,55,0,0,65,0,0
  617. dc.w    75,0,0,75,10,0,75,-10,0,75,-20,0
  618.  
  619. dc.w    90,20,0,90,10,0,90,0,0,90,-10,0,90,-20,0,100,20,0,110,20,0
  620. dc.w    110,10,0,110,0,0,120,20,0,130,20,0,130,10,0,130,0,0
  621. dc.w    130,-10,0,130,-20,0
  622.  
  623. vectorbobs:
  624.     bsr newshape
  625.     bsr pageswitch
  626.     bsr rotate
  627.     bsr bobs
  628.     rts
  629.  
  630. *****************************************
  631.  
  632. ele:    dc.w 400
  633. newshape:
  634.     move.w nopoints1,nopoints2
  635.     move.w nopoints1,d0
  636.     cmp.w ele,d0
  637.     blt rimm
  638.     subq.w #1,nopoints1
  639.     bra ramm
  640. rimm:
  641.     move.w nopoints,d0
  642.     cmp.w nopoints1,d0
  643.     beq ramm
  644.     addq.w #1,nopoints1
  645. ramm:
  646.     subq.w #1,ele
  647.     tst.w ele
  648.     beq rfhonda
  649.     rts
  650. rfhonda:
  651.     move.w #400,ele
  652.     move.l spoint,a0
  653.     tst.l (a0)
  654.     bne rrap
  655.     move.l #slist,spoint
  656.     bra rfhonda
  657. rrap:
  658.     move.l (a0),a0
  659.     move.w (a0)+,d0
  660.     subq.w #1,d0
  661.     move.w d0,nopoints
  662.     move.l a0,pointlist
  663.     addq.l #4,spoint
  664.     move.w #0,nopoints1
  665.     rts
  666.  
  667. *****************************************
  668.  
  669. pageswitch:
  670.     move.l screen1,d0
  671.     move.l screen2,d1
  672.     move.l screen3,screen1
  673.     move.l screen4,screen2
  674.     move.l d0,screen3
  675.     move.l d1,screen4
  676.     move.l cl1,d2
  677.     move.l cl2,cl1
  678.     move.l d2,cl2
  679.     add.l #$2a2,d0
  680.     add.l #$2a2,d1
  681.     lea bpl,a0
  682.     move.w d0,6(a0)
  683.     move.w d1,14(a0)
  684.     rts
  685.  
  686. *********************************
  687.  
  688. rotate:
  689.     move.w #3600,d3
  690.     move.w zangle,d0
  691.     bpl z1ok
  692.     add.w d3,d0
  693. z1ok:
  694.     cmp.w d3,d0
  695.     bmi zok
  696.     sub.w d3,d0
  697. zok:
  698.     move.w d0,zangle
  699.     move.w yangle,d0
  700.     bpl y1ok
  701.     add.w d3,d0
  702. y1ok:
  703.     cmp.w d3,d0
  704.     bmi yok
  705.     sub.w d3,d0
  706. yok:
  707.     move.w d0,yangle
  708.     move.w xangle,d0
  709.     bpl x1ok
  710.     add.w d3,d0
  711. x1ok:
  712.     cmp.w d3,d0
  713.     bmi xok
  714.     sub.w d3,d0
  715. xok:
  716.     move.w d0,xangle
  717.  
  718.     lea xangle,a0
  719.     lea sincos,a1
  720.     lea 1800(a1),a2
  721.     lea mulint,a4
  722.  
  723.     movem.w (a0),d1-d3
  724.     add.w d1,d1
  725.     add.w d2,d2
  726.     add.w d3,d3
  727.     move.w (a1,d1.w),d5
  728.     move.w (a1,d2.w),d6
  729.     move.w (a1,d3.w),d7
  730.     move.w (a2,d1.w),d1
  731.     move.w (a2,d2.w),d2
  732.     move.w (a2,d3.w),d3
  733.     move.w d1,d4
  734.     muls d2,d4
  735.     move.w d4,(a4)
  736.     move.w d5,d4
  737.     muls d2,d4
  738.     neg.l d4
  739.     move.w d4,2(a4)
  740.     move.w d6,d4
  741.     asl.w #7,d4
  742.     move.w d4,4(a4)
  743.     move.w d5,d4
  744.     muls d3,d4
  745.     move.w d1,d0
  746.     muls d6,d0
  747.     muls d7,d0
  748.     asr.l #7,d0
  749.     add.w d0,d4
  750.     move.w d4,6(a4)
  751.     move.w d1,d0
  752.     muls d3,d0
  753.     move.w d0,d4
  754.     move.w d5,d0
  755.     muls d6,d0
  756.     muls d7,d0
  757.     asr.l #7,d0
  758.     sub.w d0,d4
  759.     move.w d4,8(a4)
  760.     move.w d2,d0
  761.     muls d7,d0
  762.     neg.l d0
  763.     move.w d0,10(a4)
  764.     move.w d5,d0
  765.     muls d7,d0
  766.     move.w d0,d4
  767.     move.w d1,d0
  768.     muls d6,d0
  769.     muls d3,d0
  770.     asr.l #7,d0
  771.     sub.w d0,d4
  772.     move.w d4,12(a4)
  773.     move.w d1,d0
  774.     muls d7,d0
  775.     move.w d0,d4
  776.     move.w d5,d0
  777.     muls d6,d0
  778.     muls d3,d0
  779.     asr.l #7,d0
  780.     add.w d0,d4
  781.     move.w d4,14(a4)
  782.     move.w d2,d0
  783.     muls d3,d0
  784.     move.w d0,16(a4)
  785.  
  786.     lea finalz,a1
  787.     move.w dist,a2
  788.     move.l pointlist,a3
  789.     lea xycord,a5
  790.     move.w nopoints1,d7
  791.     tst.w d7
  792.     bne rp
  793.     rts
  794. rp:
  795.     movem.w (a3)+,d4-d6
  796.     move.w d4,d0
  797.     muls (a4),d0
  798.     move.w d6,d1
  799.     muls 2(a4),d1
  800.     move.w d5,d2
  801.     muls 4(a4),d2
  802.     add.l d1,d0
  803.     add.l d2,d0
  804.     asr.l #5,d0
  805.     move.w d4,d1
  806.     muls 6(a4),d1
  807.     move.w d6,d2
  808.     muls 8(a4),d2
  809.     move.w d5,d3
  810.     muls 10(a4),d3
  811.     add.l d2,d1
  812.     add.l d3,d1
  813.     asr.l #5,d1
  814.     muls 12(a4),d4
  815.     muls 14(a4),d6
  816.     add.l d6,d4
  817.     muls 16(a4),d5
  818.     add.l d5,d4
  819.     lsl.l #2,d4
  820.     swap d4
  821.     move.w d4,(a1)+
  822.     add.w a2,d4
  823.     divs d4,d0
  824.     divs d4,d1
  825.     add.w xorg,d0
  826.     add.w yorg,d1
  827.     move.w d0,(a5)+
  828.     move.w d1,(a5)+
  829.     dbf d7,rp
  830.     rts
  831.  
  832. *******************************************
  833.  
  834. bobs:
  835.     move.l cl1,a0
  836.     move.w nopoints,d7
  837.     bsr blitwait
  838.     move.l #$01000000,$dff040
  839.     move.w #$0026,$dff066
  840. b1:
  841.     bsr blitwait
  842.     move.l (a0)+,d0
  843.     move.l d0,$dff054
  844.     move.w #$0402,$dff058
  845.     add.l #$2800,d0
  846.     bsr blitwait
  847.     move.l d0,$dff054
  848.     move.w #$0402,$dff058
  849.     dbf d7,b1
  850.  
  851.     move.w #$0020,$dff09a
  852.     bsr blitwait
  853.     lea $dff000,a6
  854.     move.l #$ffff0000,$44(a6)
  855.     move.w #-2,$62(a6)
  856.     move.w #-2,$64(a6)
  857.     move.w #$26,$60(a6)
  858.     move.w #$26,$66(a6)
  859.  
  860.     lea xycord,a0
  861.     move.l cl1,a1
  862.     lea finalz,a2
  863.     move.l screen1,a3
  864.     lea blankbob,a4
  865.     move.w nopoints1,d7
  866.     tst.w d7
  867.     bne lp1
  868.     rts
  869. lp1:
  870.     clr.l d0
  871.     clr.l d1
  872.     movem.w (a0)+,d0/d1
  873.     cmp.w #minx,d0
  874.     ble ede
  875.     cmp.w #maxx,d0
  876.     bge ede
  877.     cmp.w #miny,d1
  878.     ble ede
  879.     cmp.w #maxy,d1
  880.     bge ede
  881.     move.w d0,d3
  882.     and.w #$0f,d3
  883.     ror.w #4,d3
  884.     move.w d3,$42(a6)
  885.     or.w #$0fca,d3
  886.     move.w d3,$40(a6)
  887.     lsr.w #3,d0
  888.     mulu #res,d1
  889.     add.l d1,d0
  890.     add.l a3,d0
  891.     move.l d0,(a1)+
  892.  
  893.     clr.l d1
  894.     move.w (a2),d1
  895.     add.w #$a0,d1
  896.     lsr.w #7,d1
  897.     eor.w #3,d1
  898.     lsl.w #5,d1
  899.     move.l a4,a5
  900.     add.l d1,a5
  901.     add.l #bob1,d1
  902.     move.l d0,$54(a6)
  903.     move.l d0,$48(a6)
  904.     move.l a5,$4c(a6)
  905.     move.l d1,$50(a6)
  906.     move.w #$0402,$58(a6)
  907.     add.l #$2800,d0
  908.     add.l #bob2-bob1,d1
  909.     bsr blitwait
  910.     move.l d0,$54(a6)
  911.     move.l d0,$48(a6)
  912.     move.l a5,$4c(a6)
  913.     move.l d1,$50(a6)
  914.     move.w #$0402,$58(a6)
  915. ede:
  916.     addq.l #2,a2
  917.     dbf d7,lp1
  918.     move.w #$c020,$dff09a
  919.     rts
  920.  
  921. maxpoints=100
  922. xangle:    dc.w 0
  923. yangle:    dc.w 0
  924. zangle:    dc.w $2f8
  925. ax: dc.w 0
  926. ay: dc.w 0
  927. az: dc.w 4
  928. mulint: blk.w 18,0
  929. cl1: dc.l cls1
  930. cl2: dc.l cls2
  931. cls1: blk.l maxpoints,$70000
  932. cls2: blk.l maxpoints,$70000
  933. xycord:    blk.l maxpoints,0
  934. finalz:    blk.w maxpoints,0
  935.  
  936. ;************** brian postma replay routine
  937.  
  938. bpinit:        lea    samples(pc),a0
  939.         lea    bpsong,a1
  940.         clr.b    numtables
  941.         cmp    #'v.',26(a1)
  942.         bne.s    bpnotv2
  943.         cmp.b    #'2',28(a1)
  944.         bne.s    bpnotv2
  945.         move.b    29(a1),numtables
  946. bpnotv2:    move.l    #512,d0
  947.         move    30(a1),d1
  948.         moveq    #1,d2
  949.         mulu    #4,d1
  950.         subq    #1,d1
  951. findhighest:    cmp    (a1,d0.w),d2
  952.         bge.s    nothigher
  953.         move    (a1,d0.w),d2
  954. nothigher:    addq.l    #4,d0
  955.         dbf    d1,findhighest
  956.         move    30(a1),d1
  957.         mulu    #16,d1
  958.         move.l    #512,d0
  959.         mulu    #48,d2
  960.         add.l    d2,d0
  961.         add.l    d1,d0
  962.         add.l    #bpsong,d0
  963.         move.l    d0,tables
  964.         moveq    #0,d1
  965.         move.b    numtables,d1
  966.         lsl.l    #6,d1
  967.         add.l    d1,d0
  968.         move.l    #14,d1
  969.         add.l    #32,a1
  970. initloop:    move.l    d0,(a0)+
  971.         cmp.b    #$ff,(a1)
  972.         beq.s    bpissynth
  973.         move    24(a1),d2
  974.         mulu    #2,d2
  975.         add.l    d2,d0
  976. bpissynth:    add.l    #32,a1
  977.         dbf    d1,initloop
  978.         rts
  979.  
  980. bpmusic:    bsr.l    bpsynth
  981.         subq.b    #1,arpcount
  982.         moveq    #3,d0
  983.         lea    bpcurrent(pc),a0
  984.         move.l    #$dff0a0,a1
  985. bploop1:    move.b    12(a0),d4
  986.         ext    d4
  987.         add    d4,(a0)
  988.         tst.b    $1e(a0)
  989.         bne.s    bplfo
  990.         move    (a0),6(a1)
  991. bplfo:        move.l    4(a0),(a1)
  992.         move.w    8(a0),4(a1)
  993.         tst.b    11(a0)
  994.         bne.s    bpdoarp
  995.         tst.b    13(a0)
  996.         beq.s    not2
  997. bpdoarp:    tst.b    arpcount
  998.         bne.s    not0
  999.         move.b    11(a0),d3
  1000.         move.b    13(a0),d4
  1001.         and    #240,d4
  1002.         and    #240,d3
  1003.         lsr    #4,d3
  1004.         lsr    #4,d4
  1005.         add    d3,d4
  1006.         add.b    10(a0),d4
  1007.         bsr.l    bpplayarp
  1008.         bra.s    not2
  1009. not0:        cmp.b    #1,arpcount 
  1010.         bne.s    not1
  1011.         move.b    11(a0),d3
  1012.         move.b    13(a0),d4
  1013.         and    #15,d3
  1014.         and    #15,d4
  1015.         add    d3,d4
  1016.         add.b    10(a0),d4
  1017.         bsr.l    bpplayarp
  1018.         bra.s    not2
  1019. not1:        move.b    10(a0),d4
  1020.         bsr.l    bpplayarp
  1021. not2:        lea    $10(a1),a1
  1022.         lea    $20(a0),a0
  1023.         dbf    d0,bploop1
  1024.         tst.b    arpcount
  1025.         bne.s    arpnotzero
  1026.         move.b    #3,arpcount
  1027. arpnotzero:    subq.b    #1,bpcount
  1028.         beq.s    bpskip1
  1029.         rts
  1030. bpskip1:    move.b    bpdelay,bpcount
  1031. bpplay:        bsr.s    bpnext
  1032.         move    dma,$dff096
  1033.         moveq    #3,d0
  1034.         move.l    #$dff0a0,a1
  1035.         moveq    #1,d1
  1036.         lea    bpcurrent(pc),a2
  1037.         lea    bpbuffer(pc),a5
  1038. bploop2:    btst    #15,(a2)
  1039.         beq.s    bpskip7
  1040.         bsr.l    bpplayit
  1041. bpskip7:    asl    #1,d1
  1042.         lea    $10(a1),a1
  1043.         lea    $20(a2),a2
  1044.         lea    $24(a5),a5
  1045.         dbf    d0,bploop2
  1046.         rts
  1047. bpnext:        clr    dma
  1048.         lea    bpsong,a0
  1049.         move.l    #$dff0a0,a3
  1050.         moveq    #3,d0
  1051.         moveq    #1,d7
  1052.         lea    bpcurrent(pc),a1
  1053. bploop3:    moveq    #0,d1
  1054.         move    bpstep,d1
  1055.         lsl    #4,d1
  1056.         move.l    d0,d2
  1057.         lsl.l    #2,d2
  1058.         add.l    d2,d1
  1059.         add.l    #512,d1
  1060.         move    (a0,d1.w),d2
  1061.         move.b    2(a0,d1.w),st
  1062.         move.b    3(a0,d1.w),tr
  1063.         subq    #1,d2
  1064.         mulu    #48,d2
  1065.         moveq    #0,d3
  1066.         move    30(a0),d3
  1067.         lsl    #4,d3
  1068.         add.l    d2,d3
  1069.         move.l    #$00000200,d4
  1070.         move.b    bppatcount,d4
  1071.         add.l    d3,d4
  1072.         move.l    d4,a2
  1073.         add.l    a0,a2
  1074.         moveq    #0,d3
  1075.         move.b    (a2),d3
  1076.         tst.b    d3
  1077.         bne.s    bpskip4
  1078.         bra.l    bpoptionals
  1079. bpskip4:    clr    12(a1)
  1080.         move.b    1(a2),d4
  1081.         and.b    #15,d4
  1082.         cmp.b    #10,d4
  1083.         bne.s    bp_do1
  1084.         move.b    2(a2),d4
  1085.         and.b    #240,d4
  1086.         bne.s    bp_not1
  1087. bp_do1:        add.b    tr,d3
  1088.         ext    d3
  1089. bp_not1:    move.b    d3,10(a1)
  1090.         lea    bpper(pc),a4
  1091.         lsl    #1,d3
  1092.         move    -2(a4,d3.w),(a1)
  1093.         bset    #15,(a1)
  1094.         move.b    #$ff,2(a1)
  1095.         moveq    #0,d3
  1096.         move.b    1(a2),d3
  1097.         lsr.b    #4,d3
  1098.         and.b    #15,d3
  1099.         tst.b    d3
  1100.         bne.s    bpskip5
  1101.         move.b    3(a1),d3
  1102. bpskip5:     move.b    1(a2),d4
  1103.         and.b    #15,d4
  1104.         cmp.b    #10,d4
  1105.         bne.s    bp_do2
  1106.         move.b    2(a2),d4
  1107.         and.b    #15,d4
  1108.         bne.s    bp_not2
  1109. bp_do2:        add.b    st,d3
  1110. bp_not2:    cmp    #1,8(a1)
  1111.         beq.s    bpsamplechange
  1112.         cmp.b    3(a1),d3
  1113.         beq.s    bpoptionals
  1114. bpsamplechange:    move.b    d3,3(a1)
  1115.         or    d7,dma
  1116. bpoptionals:     moveq    #0,d3
  1117.         moveq    #0,d4
  1118.         move.b    1(a2),d3
  1119.         and.b    #15,d3
  1120.         move.b    2(a2),d4
  1121.         cmp.b    #0,d3
  1122.         bne.s    notopt0
  1123.         move.b    d4,11(a1)
  1124. notopt0:    cmp.b    #1,d3
  1125.         bne.s    bpskip3
  1126.         move    d4,8(a3)
  1127.         move.b    d4,2(a1)
  1128. bpskip3:    cmp.b    #2,d3
  1129.         bne.s    bpskip9
  1130.         move.b    d4,bpcount
  1131.         move.b    d4,bpdelay
  1132. bpskip9:    cmpi.b    #3,d3
  1133.         bne.s    bpskipa
  1134.         tst.b    d4
  1135.         bne.s    bpskipb
  1136.         bset    #1,$bfe001
  1137.         bra.s    bpskip2
  1138. bpskipb:    bclr    #1,$bfe001
  1139. bpskipa:    cmp.b    #4,d3
  1140.         bne.s    noportup
  1141.         sub    d4,(a1)
  1142.         clr.b    11(a1)
  1143. noportup:    cmp.b    #5,d3
  1144.         bne.s    noportdn
  1145.         add    d4,(a1)
  1146.         clr.b    11(a1)
  1147. noportdn:    cmp.b    #6,d3
  1148.         bne.s    notopt6
  1149.         move.b    d4,bprepcount
  1150. notopt6:    cmp.b    #7,d3
  1151.         bne.s    notopt7
  1152.         subq.b    #1,bprepcount
  1153.         beq.s    notopt7
  1154.         move    d4,bpstep
  1155. notopt7:    cmp.b    #8,d3
  1156.         bne.s    notopt8
  1157.         move.b    d4,12(a1)
  1158. notopt8:    cmp.b    #9,d3
  1159.         bne.s    notopt9
  1160.         move.b    d4,13(a1)
  1161. notopt9:
  1162. bpskip2:    lea    $10(a3),a3
  1163.         lea    $20(a1),a1
  1164.         asl    #1,d7
  1165.         dbf    d0,bploop3
  1166.         addq.b    #3,bppatcount
  1167.         cmpi.b    #48,bppatcount
  1168.         bne.s    bpskip8
  1169.         move.b    #0,bppatcount
  1170.         addq    #1,bpstep
  1171.         lea    bpsong,a0
  1172.         move    30(a0),d1
  1173.         cmp    bpstep,d1
  1174.         bne.s    bpskip8
  1175.         move    #0,bpstep
  1176. bpskip8:    rts
  1177. bpplayit:    bclr    #15,(a2)
  1178.         tst.l    (a5)
  1179.         beq.s    noeg1
  1180.         moveq    #0,d3
  1181.         move.l    (a5),a4
  1182.         moveq    #7,d7
  1183. eg1loop:    move.l    4(a5,d3.w),(a4)+
  1184.         addq    #4,d3
  1185.         dbf    d7,eg1loop
  1186. noeg1:        move    (a2),6(a1)
  1187.         move.l    #0,d7
  1188.         move.b    3(a2),d7
  1189.         move.l    d7,d6
  1190.         lsl.l    #5,d7
  1191.         lea    bpsong,a3
  1192.         cmp.b    #$ff,(a3,d7.w)
  1193.         beq.s    bpplaysynthetic
  1194.         clr.l    (a5)
  1195.         clr.b    $1a(a2)
  1196.         clr    $1e(a2)
  1197.         add.l    #24,d7
  1198.         lsl.l    #2,d6
  1199.         move.l    #samples,a4
  1200.         move.l    -4(a4,d6),d4
  1201.         beq.s    bp_nosamp
  1202.         move.l    d4,(a1)
  1203.         move    (a3,d7),4(a1)
  1204.         move.b    2(a2),9(a1)
  1205.         cmpi.b    #$ff,2(a2)
  1206.         bne.s    skipxx
  1207.         move    6(a3,d7),8(a1)
  1208. skipxx:     move    4(a3,d7),8(a2)
  1209.         moveq    #0,d6
  1210.         move    2(a3,d7),d6
  1211.         add.l    d6,d4
  1212.         move.l    d4,4(a2)
  1213.         cmp    #1,8(a2)
  1214.         bne.s    bpskip6
  1215. bp_nosamp:    move.l    #null,4(a2)
  1216.         bra.s    bpskip10
  1217. bpskip6:    move    8(a2),4(a1)
  1218.         move.l    4(a2),(a1)
  1219. bpskip10:    or    #$8000,d1
  1220.         move    d1,$dff096
  1221.         rts
  1222. bpplaysynthetic:move.b    #$1,$1a(a2)
  1223.         clr    $e(a2)
  1224.         clr    $10(a2)
  1225.         clr    $12(a2)
  1226.         move    22(a3,d7.w),$14(a2)
  1227.         addq    #1,$14(a2)
  1228.         move    14(a3,d7.w),$16(a2)
  1229.         addq    #1,$16(a2)
  1230.         move    #1,$18(a2)
  1231.         move.b    17(a3,d7.w),$1d(a2)
  1232.         move.b    9(a3,d7.w),$1e(a2)
  1233.         move.b    4(a3,d7.w),$1f(a2)
  1234.         move.b    19(a3,d7.w),$1c(a2)
  1235.         move.l    tables,a4
  1236.         moveq    #0,d3
  1237.         move.b    1(a3,d7.w),d3
  1238.         lsl.l    #6,d3
  1239.         add.l    d3,a4
  1240.         move.l    a4,(a1)
  1241.         move.l    a4,4(a2)
  1242.         move    2(a3,d7.w),4(a1)
  1243.         move    2(a3,d7.w),8(a2)
  1244.         tst.b    4(a3,d7.w)
  1245.         beq.s    bpadsroff
  1246.         move.l    tables,a4
  1247.         move.l    #0,d3
  1248.         move.b    5(a3,d7.w),d3
  1249.         lsl.l    #6,d3
  1250.         add.l    d3,a4
  1251.         moveq    #0,d3
  1252.         move.b    (a4),d3
  1253.         add.b    #128,d3
  1254.         lsr    #2,d3
  1255.         cmp.b    #$ff,2(a2)
  1256.         bne.s    bpskip99
  1257.         move.b    25(a3,d7.w),2(a2)
  1258. bpskip99:    moveq    #0,d4
  1259.         move.b    2(a2),d4
  1260.         mulu    d4,d3
  1261.         lsr    #6,d3
  1262.         move    d3,8(a1)
  1263.         bra.s    bpflipper
  1264. bpadsroff:    move.b    2(a2),9(a1)
  1265.         cmp.b    #$ff,2(a2)
  1266.         bne.s    bpflipper
  1267.         move.b    25(a3,d7.w),9(a1)
  1268. bpflipper:    move.l    4(a2),a4
  1269.         move.l    a4,(a5)
  1270.         moveq    #0,d3
  1271.         moveq    #7,d4
  1272. eg2loop:    move.l    (a4,d3.w),4(a5,d3.w)
  1273.         addq    #4,d3
  1274.         dbf    d4,eg2loop
  1275.         tst.b    17(a3,d7.w)
  1276.         beq.l    bpskip10
  1277.         tst.b    19(a3,d7.w)
  1278.         beq.l    bpskip10
  1279.         moveq    #0,d3
  1280.         move.b    19(a3,d7.w),d3
  1281.         lsr.l    #3,d3
  1282.         move.b    d3,$1c(a2)
  1283.         subq.l    #1,d3
  1284. eg3loop:    neg.b    (a4)+
  1285.         dbf    d3,eg3loop
  1286.         bra.l    bpskip10
  1287. bpplayarp:    lea    bpper(pc),a4
  1288.         ext    d4
  1289.         asl    #1,d4
  1290.         move    -2(a4,d4.w),6(a1)
  1291.         rts
  1292. bpsynth:    move.l    #3,d0
  1293.         lea    bpcurrent(pc),a2
  1294.         lea    $dff0a0,a1
  1295.         lea    bpsong,a3
  1296.         lea    bpbuffer(pc),a5
  1297. bpsynthloop:    tst.b    $1a(a2)
  1298.         beq.s    bpnosynth
  1299.         bsr.s    bpyessynth
  1300. bpnosynth:    lea    $24(a5),a5
  1301.         lea    $20(a2),a2
  1302.         lea    $10(a1),a1
  1303.         dbf    d0,bpsynthloop
  1304.         rts
  1305. bpyessynth:    moveq    #0,d7
  1306.         move.b    3(a2),d7
  1307.         lsl    #5,d7
  1308.         tst.b    $1f(a2)
  1309.         beq.s    bpendadsr
  1310.         subq    #1,$18(a2)
  1311.         bne.s    bpendadsr
  1312.         moveq    #0,d3
  1313.         move.b    8(a3,d7.w),d3
  1314.         move    d3,$18(a2)
  1315.         move.l    tables,a4
  1316.         move.b    5(a3,d7.w),d3
  1317.         lsl.l    #6,d3
  1318.         add.l    d3,a4
  1319.         move    $12(a2),d3
  1320.         moveq    #0,d4
  1321.         move.b    (a4,d3.w),d4
  1322.         add.b    #128,d4
  1323.         lsr    #2,d4
  1324.         moveq    #0,d3
  1325.         move.b    2(a2),d3
  1326.         mulu    d3,d4
  1327.         lsr    #6,d4
  1328.         move    d4,8(a1)
  1329.         addq    #1,$12(a2)
  1330.         move    6(a3,d7.w),d4
  1331.         cmp    $12(a2),d4
  1332.         bne.s    bpendadsr
  1333.         clr    $12(a2)
  1334.         cmp.b    #1,$1f(a2)
  1335.         bne.s    bpendadsr
  1336.         clr.b    $1f(a2)
  1337. bpendadsr:    tst.b    $1e(a2)
  1338.         beq.s    bpendlfo
  1339.         subq    #1,$16(a2)
  1340.         bne.s    bpendlfo
  1341.         moveq    #0,d3
  1342.         move.b    16(a3,d7.w),d3
  1343.         move    d3,$16(a2)
  1344.         move.l    tables,a4
  1345.         move.b    10(a3,d7.w),d3
  1346.         lsl.l    #6,d3
  1347.         add.l    d3,a4
  1348.         move    $10(a2),d3
  1349.         moveq    #0,d4
  1350.         move.b    (a4,d3.w),d4
  1351.         ext    d4
  1352.         ext.l    d4
  1353.         moveq    #0,d5
  1354.         move.b    11(a3,d7.w),d5
  1355.         tst.b    d5
  1356.         beq.s    bpnotx
  1357.         divs    d5,d4
  1358. bpnotx:        move    (a2),d5
  1359.         add    d4,d5
  1360.         move    d5,6(a1)
  1361.         addq    #1,$10(a2)
  1362.         move    12(a3,d7.w),d3
  1363.         cmp    $10(a2),d3
  1364.         bne.s    bpendlfo
  1365.         clr    $10(a2)
  1366.         cmp.b    #1,$1e(a2)
  1367.         bne.s    bpendlfo
  1368.         clr.b    $1e(a2)
  1369. bpendlfo:    tst.b    $1d(a2)
  1370.         beq.l    bpendeg
  1371.         subq    #1,$14(a2)
  1372.         bne.l    bpendeg
  1373.         tst.l    (a5)
  1374.         beq.L    bpendeg
  1375.         move.l    #0,d3
  1376.         move.b    24(a3,d7.w),d3
  1377.         move    d3,$14(a2)
  1378.         move.l    tables,a4
  1379.         move.b    18(a3,d7.w),d3
  1380.         lsl.l    #6,d3
  1381.         add.l    d3,a4
  1382.         move    $e(a2),d3
  1383.         moveq    #0,d4
  1384.         move.b    (a4,d3.w),d4
  1385.         move.l    (a5),a4
  1386.         add.b    #128,d4
  1387.         lsr.l    #3,d4
  1388.         moveq    #0,d3
  1389.         move.b    $1c(a2),d3
  1390.         move.b    d4,$1c(a2)
  1391.         add.l    d3,a4
  1392.         move.l    a5,a6
  1393.         add.l    d3,a6
  1394.         addq.l    #4,a6
  1395.         cmp.b    d3,d4
  1396.         beq.s    bpnexteg
  1397.         bgt.s    bpishigh
  1398. bpislow:    sub.l    d4,d3
  1399.         subq.l    #1,d3
  1400. bpegloop1a:    move.b    -(a6),d4
  1401.         move.b    d4,-(a4)
  1402.         dbf    d3,bpegloop1a
  1403.         bra.s    bpnexteg
  1404. bpishigh:    sub.l    d3,d4
  1405.         subq.l    #1,d4
  1406. bpegloop1b:    move.b    (a6)+,d3
  1407.         neg.b    d3
  1408.         move.b    d3,(a4)+
  1409.         dbf    d4,bpegloop1b
  1410. bpnexteg:    addq    #1,$e(a2)
  1411.         move    20(a3,d7.w),d3
  1412.         cmp    $e(a2),d3
  1413.         bne.s    bpendeg
  1414.         clr    $e(a2)
  1415.         cmp.b    #1,$1d(a2)
  1416.         bne.s    bpendeg
  1417.         clr.b    $1d(a2)
  1418. bpendeg:    rts
  1419.  
  1420. ;************** donnees music
  1421.  
  1422. null:        dc.w    0
  1423. bpcurrent:    dc.w    0,0
  1424.         dc.l    null
  1425.         dc.w    1
  1426.         dc.b    0,0,0,0
  1427.         dc.w    0,0,0
  1428.         dc.w    0,0,0
  1429.         dc.b    0,0
  1430.         dc.b    0,0
  1431.         dc.b    0,0
  1432.         dc.w    0,0
  1433.         dc.l    null
  1434.         dc.w    1,0,0
  1435.         dc.w    0,0,0,0,0,0,0,0,0
  1436.         dc.w    0,0
  1437.         dc.l    null
  1438.         dc.w    1,0,0
  1439.         dc.w    0,0,0,0,0,0,0,0,0
  1440.         dc.w    0,0
  1441.         dc.l    null
  1442.         dc.w    1,0,0
  1443.         dc.w    0,0,0,0,0,0,0,0,0
  1444. bpstep:        dc.w    0
  1445. bppatcount:    dc.b    0
  1446. st:        dc.b    0
  1447. tr:        dc.b    0
  1448. bpcount:    dc.b    1
  1449. bpdelay:    dc.b    6
  1450. arpcount:    dc.b    1
  1451. bprepcount:    dc.b    1
  1452. numtables:    dc.b    0
  1453.         even
  1454. dma:        dc.w    0
  1455. tables:        dc.l    0
  1456. bpbuffer:    blk.b    144,0
  1457.         dc.w    6848,6464,6080,5760,5440,5120,4832,4576,4320,4064,3840,3616
  1458.         dc.w    3424,3232,3040,2880,2720,2560,2416,2288,2160,2032,1920,1808
  1459.         dc.w    1712,1616,1520,1440,1360,1280,1208,1144,1080,1016,0960,0904
  1460. bpper:        dc.w    0856,0808,0760,0720,0680,0640,0604,0572,0540,0508,0480,0452
  1461.         dc.w    0428,0404,0380,0360,0340,0320,0302,0286,0270,0254,0240,0226
  1462.         dc.w    0214,0202,0190,0180,0170,0160,0151,0143,0135,0127,0120,0113
  1463.         dc.w    0107,0101,0095,0090,0085,0080,0076,0072,0068,0064,0060,0057
  1464. samples:    blk.l    15,0
  1465.  
  1466. **********************************************************************
  1467.  
  1468. sp1:
  1469. dc.l    $f6d0fd80
  1470. dc.w    $3c07,$01f7 ,$0404,$0114 ,$0404,$0114 ,$0407,$01f7
  1471. dc.w    $0404,$0114 ,$8404,$0114 ,$fc04,$0114
  1472. sp2:
  1473. dc.l    $f6d0fd80
  1474. dc.w    $0000,$0000 ,$0000,$0000 ,$0000,$0000 ,$0000,$0000
  1475. dc.w    $0000,$0000 ,$0000,$0000 ,$0000,$0000
  1476. sp3:
  1477. dc.l    $f6d8fd80
  1478. dc.w    $9e00,$803c ,$5100,$4040 ,$5100,$4040 ,$9e00,$807c
  1479. dc.w    $5100,$4040 ,$5100,$4040 ,$5100,$403c
  1480. sp4:
  1481. dc.l    $f6d8fd80
  1482. dc.w    $1e3c,$0000 ,$1140,$0000 ,$1140,$0000 ,$1e7c,$0000
  1483. dc.w    $1140,$0000 ,$1140,$0000 ,$113c,$0000
  1484.  
  1485. **********************************************************************
  1486.  
  1487. copper:
  1488. dc.l    $01200007,$0122fff8,$01240007,$0126fff8,$01280007,$012afff8
  1489. dc.l    $012c0007,$012efff8,$01300007,$0132fff8,$01340007,$0136fff8
  1490. dc.l    $01380007,$013afff8,$013c0007,$013efff8
  1491. dc.l    $01020000,$01080002,$010a0002
  1492. dc.l    $008e2581,$00903fc1,$00920038,$009400d0
  1493. dc.l    $00e00006,$00e20000,$00e40006,$00e62800
  1494. bpl:
  1495. dc.l    $00e80007,$00ea0000,$00ec0007,$00ee2000
  1496. cols:
  1497. dc.l    $01800000,$01820000,$01840000,$01860000
  1498. dc.l    $0188066f,$018a066f,$018c066f,$018e066f
  1499. dc.l    $0190044c,$0192044c,$0194044c,$0196044c
  1500. dc.l    $0198022a,$019a022a,$019c022a,$019e022a
  1501. scol:
  1502. dc.l    $01a00fff,$01a20eee,$01a40ddd,$01a60ccc
  1503. dc.l    $01a80bbb,$01aa0000,$01ac0000,$01ae0000
  1504. dc.l    $2611fffe,$0180066f
  1505. dc.l    $2711fffe,$0180044d
  1506. dc.l    $280bfffe,$01004200,$01800000
  1507. dc.l    $fd11fffe,$01000200,$0180066f
  1508. dc.l    $fe11fffe,$0180044d
  1509. dc.l    $ff11fffe,$01800000
  1510. dc.l    $fffffffe
  1511.  
  1512. ***************************************
  1513.  
  1514. text:
  1515.  
  1516. ;    opcodes (special instructions) inside text:
  1517.  
  1518. ;    first of all,  small o for opcode
  1519. ;    0 after o  =  end of list
  1520. ;    1 after o  =  short wait at end of page
  1521. ;    2 after o  =  long wait at end of page
  1522.  
  1523. *   remeber -   only 12 lines per page
  1524.  
  1525. dc    "       ANGELS & DEFJAM PRESENTS:        "
  1526. dc    "                                        "
  1527. dc    "                                        "
  1528. dc    "          (CRACK NAME HERE!!)           "
  1529. dc    "                                        "
  1530. dc    "                                        "
  1531. dc    "      CRACKED BY (CRACKERS NAME!)       "
  1532. dc    "                                        "
  1533. dc    "     ORIGINAL BY (SUPPLIERS NAME!!)     "
  1534. dc    "                                        "
  1535. dc    "         INTRO CODED BY JARRE           o2"
  1536.  
  1537. dc    "           CALL AN ANGELS BBS :         "
  1538. dc    "                                        "
  1539. dc    "    AMIGA EAST      -  804 499 2266     "
  1540. dc    "    WRECK HOUSE     -  201 751 2175     "
  1541. dc    "    BLACK PLAGUE    -  201 946 2764     "
  1542. dc    "    ESCAPE ZONE     -  704 254 6448     "
  1543. dc    "    REIGN IN BLOOD  -  +49 203 406 0981 "
  1544. dc    "    DULCET TONES    -  +44 382 739 192  "
  1545. dc    "    SOFTWARE HOUSE  -  +45 867 750 750  "
  1546. dc    "    DUTCH PIRATE    -  +31 117 200 16   o2"
  1547.  
  1548. dc    "           CALL A DEFJAM BBS :          "
  1549. dc    "                                        "
  1550. dc    "     PLEASURE POINT -  415 649 8588     "
  1551. dc    "     MOTHERBOARD    -  516 783 1450     "
  1552. dc    "     EAST BBS       -  +46 313 118 79   "
  1553. dc    "     WEST BBS       -  +46 894 0614     o2o1o0"
  1554.  
  1555. even
  1556.  
  1557.