home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assembly / angint5.s.lha / intro2.s < prev    next >
Encoding:
Text File  |  1980-02-15  |  32.0 KB  |  1,668 lines

  1. ;Intro coded by Corto in 1990 
  2.  
  3. ;A,  JRUN pour tester...  as usual
  4. ;pour sauvegarder: WI, filename,  run,  end
  5. ;texte vers ligne 110
  6. ;l*** pour les commentaires
  7.  
  8. ;ceci est la version amelioree de 'Trainer1.s' mais sans le trainer
  9.  
  10. org $40000
  11. load $40000
  12.  
  13. run:
  14. movem.L d0-d7/a0-a6,-(sp)
  15. lea $50000,a0
  16. move #24575,d7
  17. run1:
  18. move.b #$0,(a0)+
  19. dbra d7,run1
  20. lea $56000,a1
  21. move #37887,d7
  22. run2:clr.l (a1)+
  23. dbra d7,run2
  24. move sin+$200,sin200+2
  25. move cos+$200,cos200+2
  26. move sin+$200,sin200b+2
  27. move cos+$200,cos200b+2
  28. move sin+$600,sin600+2
  29. move cos+$600,cos600+2
  30. move sin+$600,sin600b+2
  31. move cos+$600,cos600b+2
  32. bsr.L save_all
  33. bsr.L makecopper
  34. lea $dff000,a6
  35. move #$3fff,$9a(a6)
  36. move #$c010,$9a(a6)
  37. move #$3fff,$96(a6)
  38. move #$83c0,$96(a6)
  39. move.l #irq,$6c
  40. move.L #%111101111011100111101111,$50000+38
  41. move.L #%100001001010100011001001,$50000+44+38
  42. move.L #%100001001011100011001001,$50000+88+38
  43. move.l #%100001001010010011001001,$50000+132+38
  44. move.l #%111101111010010011001111,$50000+176+38
  45. move.l    #$56000+[48*80]+2,a2 ;70=No de ligne
  46. bsr.L makmask
  47.  
  48. affiche:
  49. lea    fonts,a1
  50. clr.w    d0
  51. lettre:
  52. lea    text1(pc),a0
  53. lea    quelle(pc),a3
  54. add.w    (a3),a0
  55. move.b    (a0),d0
  56. addq.w    #1,(a3)
  57. nextline:
  58. cmpi.b    #$fe,d0
  59. bne.s    dernier
  60.  
  61. ;add.l    #[48*8]-40,a2    ;pour texte normal
  62. addi.l #[48*13]-40,a2    ;pour texte double
  63.  
  64. bra.s    lettre
  65. dernier:
  66. tst.b    d0
  67. beq.L    suite
  68. espace:
  69. cmpi.b    #$20,d0
  70. bne.s    noespace
  71. add.w    #96,a1
  72. bra.s    affichelettre
  73. noespace:
  74. sub.b    #$2b,d0
  75. add.b    d0,d0
  76. add.w    d0,a1
  77. affichelettre:
  78. bsr.l    affichefont
  79. addq.l    #1,a2
  80. bra.s    affiche
  81.  
  82. affichefont:    ;pour text normal: enlever les 6 ';' suivants
  83. move.b    (a1),(a2)
  84. ;move.b    [$62*1](a1),[48*1](a2)
  85. ;move.b    [$62*2](a1),[48*2](a2)
  86. ;move.b    [$62*3](a1),[48*3](a2)
  87. ;move.b    [$62*4](a1),[48*4](a2)
  88. ;move.b    [$62*5](a1),[48*5](a2)
  89. ;rts
  90.         ;puis mettre ';' devant chaque ligne
  91.     move.B  (a1),48(a2)
  92.     move.b    [$62*1](a1),[48*2](a2)
  93.     move.b    [$62*1](a1),[48*3](a2)
  94.     move.b    [$62*2](a1),[48*4](a2)
  95.     move.b    [$62*2](a1),[48*5](a2)
  96.  
  97.     move.b    [$62*3](a1),[48*6](a2)
  98.     move.b    [$62*3](a1),[48*7](a2)
  99.     move.b    [$62*4](a1),[48*8](a2)
  100.     move.b    [$62*4](a1),[48*9](a2)
  101.     move.b    [$62*5](a1),[48*10](a2)
  102.     move.b    [$62*5](a1),[48*11](a2)
  103. rts
  104.         ;jusqu'ici !
  105.  
  106.  
  107. ;*** ici le texte...
  108. ;44 carac. par ligne - ne pas descendre trop bas pour le degrade
  109.  
  110.  
  111. text1:
  112. dc.b "                PRESENT                 ",$FE
  113. DC.B "                                        ",$FE
  114. dc.b "         XXXXXXXX FINAL VERSION         ",$FE
  115. dc.b "                                        ",$fe
  116. DC.B "                                        ",$FE
  117. dc.b "                                        ",$fe
  118. dc.b "  PRESS LEFT MOUSEBUTTON TO START GAME  ",0
  119. even
  120. quelle:dc.w 0
  121. text:
  122. dc.B "    XXXXXXXX FINAL VERSION ..."
  123. DC.B " CRACKED BY  --- A N G E L S ---"
  124. DC.B "  GREETZ TO ALL OUR "
  125. DC.B "FRIENDS AND CONTACTS ...   INTRO CODED BY CORTO. "
  126. DC.B "                         ",0
  127. even
  128.  
  129.  
  130. rout1:move d0,6(a0)
  131. swap d0
  132. move d0,2(a0)
  133. addq.L #8,a0
  134. rts
  135.  
  136. suite:
  137. lea copspr,a0
  138. move.L #set1,d0
  139. bsr.s rout1
  140. move.l #set2,d0
  141. bsr.s rout1
  142. move.l #set3,d0
  143. bsr.s rout1
  144. move.l #set4,d0
  145. bsr.s rout1
  146. move.l #set5,d0
  147. bsr.s rout1
  148. move.l #set6,d0
  149. bsr.s rout1
  150. move.l #setf,d0
  151. bsr.s rout1
  152. move.l #setf,d0
  153. bsr.s rout1
  154.  
  155. jsr init_music
  156. lea $dff000,a6
  157. move.L #$3c791cc9,$8e(a6)
  158. move.l #$3000d8,$92(a6)
  159. move.L #copperlist,$80(a6)
  160. clr $88(a6)
  161. wait:
  162. tst flag1
  163. bne.s wait1
  164. ;bsr jongle
  165. bsr.L bras
  166. move #1,flag1
  167. wait1:
  168. btst #6,$bfe001
  169. bne.s wait
  170. wb:btst #$e,2(a6)
  171. bne.s wb
  172. bsr.L restore_all
  173. jsr end_music
  174. movem.L (sp)+,d0-d7/a0-a6
  175. rts
  176. flag:dc.w -1
  177. flag1:dc.w 0
  178. juga:dc.w 0
  179. jugw:dc.w 50
  180.  
  181. makmask:
  182. lea bob1,a0
  183. lea mask1,a1
  184. bsr.s masque1
  185. lea bob2,a0
  186. lea mask2,a1
  187. bsr.s masque1
  188. lea bob8,a0
  189. lea mask8,a1
  190. bsr.s masque1
  191. move #4,d6
  192. lea bob3,a0
  193. lea mask3,a1
  194. masl1:
  195. bsr.s masque2
  196. dbra d6,masl1
  197.  
  198. lea bob9,a0
  199. lea mask9,a1
  200. bsr.s masque2
  201. rts
  202.  
  203. masque1:
  204. move #31,d7
  205. masq1:
  206. move.L (a0),d0
  207. addq.L #6,a0
  208. or.l (a0),d0
  209. addq.l #6,a0
  210. or.l (a0),d0
  211. addq.L #6,a0
  212. move.l d0,(a1)+
  213. clr (a1)+
  214. move.l d0,(a1)+
  215. clr (a1)+
  216. move.l d0,(a1)+
  217. clr (a1)+
  218. dbra d7,masq1
  219. rts
  220.  
  221. masque2:
  222. move #15,d7
  223. masq2:
  224. move (a0),d0
  225. addq.L #4,a0
  226. or.w (a0),d0
  227. addq.l #4,a0
  228. or.w (a0),d0
  229. addq.L #4,a0
  230. move d0,(a1)+
  231. clr (a1)+
  232. move d0,(a1)+
  233. clr (a1)+
  234. move d0,(a1)+
  235. clr (a1)+
  236. dbra d7,masq2
  237. rts
  238.  
  239. irq:
  240. movem.L d0-d7/a0-a6,-(a7)
  241. lea $dff000,a6
  242. bsr.L altern
  243. bsr.L cycle
  244. bsr.L stars
  245. jsr play
  246. lea $dff000,a6
  247. move #$8400,$96(a6)
  248. cyc:btst #$e,2(a6)
  249. bne.s cyc
  250. move #$400,$96(a6)
  251. tst flag
  252. bne.s irq1
  253. bsr.L clear
  254. bsr.L copscroll
  255. bsr.L print
  256. move #$8400,$96(a6)
  257. cyc2:btst #$e,2(a6)
  258. bne.s cyc2
  259. move #$400,$96(a6)
  260. move #1,flag
  261. irq4:move #$10,$9c(a6)
  262. movem.L (a7)+,d0-d7/a0-a6
  263. rte
  264.  
  265. irq1:
  266. tst flag1
  267. beq.s irq4
  268. move #$8400,$96(a6)
  269. cyc4:btst #$e,2(a6)
  270. bne.s cyc4
  271. move #$400,$96(a6)
  272. bsr.L bob
  273. ;move #$f00,$180(a6)
  274. move #$8400,$96(a6)
  275. cyc3:btst #$e,2(a6)
  276. bne.s cyc3
  277. move #$400,$96(a6)
  278. ;move #$ff0,$180(a6)
  279. move #$10,$9c(a6)
  280. clr flag
  281. clr flag1
  282. movem.L (a7)+,d0-d7/a0-a6
  283. rte
  284. t1:dc.l 0
  285. t2:dc.l 0
  286. altern:
  287. tst flag
  288. bne.s alt1
  289. move.L bpw1,d0
  290. move.L bpa1,bpw1
  291. move.l d0,bpa1
  292. move d0,copbpl3+6
  293. swap d0
  294. move d0,copbpl3+2
  295. swap d0
  296. addi.L #64,d0
  297. move d0,copbpl3+14
  298. swap d0
  299. move d0,copbpl3+10
  300. swap d0
  301. addi.L #64,d0
  302. move d0,copbpl3+22
  303. swap d0
  304. move d0,copbpl3+18
  305. alt1:rts
  306.  
  307. stars:
  308. lea set5+1,a0
  309. move #15,d7
  310. spriteloop:
  311. addq.B #5,(a0)
  312. add.l #8,a0
  313. dbra d7,spriteloop
  314. lea set6+1,a0
  315. move #15,d7
  316. spriteloopa:
  317. addq.B #6,(a0)
  318. add.l #8,a0
  319. dbra d7,spriteloopa
  320. lea set3+1,a0
  321. move #21,d7
  322. spriteloop2:
  323. addq.b #3,(a0)
  324. add.l #8,a0
  325. dbra d7,spriteloop2
  326. lea set4+1,a0
  327. move #21,d7
  328. sprite2loopa:
  329. addq.B #4,(a0)
  330. add.L #8,a0
  331. dbra d7,sprite2loopa
  332. lea set1+1,a0
  333. move #31,d7
  334. spriteloop3:
  335. addq.b #1,(a0)
  336. add.l #8,a0
  337. dbra d7,spriteloop3
  338. lea set2+1,a0
  339. move #31,d7
  340. spriteloop3a:
  341. addq.b #2,(a0)
  342. add.l #8,a0
  343. dbra d7,spriteloop3a
  344. rts
  345.  
  346. textptr:dc.l text
  347.  
  348. cycle:
  349. move #$8400,$96(a6)
  350. cyc1:btst #6,2(a6)
  351. bne.s cyc1
  352. move #$400,$96(a6)
  353. move.l #$e9f00000,$40(a6)
  354. move.l #-1,$44(a6)
  355. move.L #$56000+[210*48],$50(a6)
  356. move.l #$56000+[210*48]-2,$54(a6)
  357. move.l #$00000,$64(a6)
  358. move #344,$58(a6)
  359. rts
  360.  
  361. print:
  362. tst pra
  363. bne.s printa
  364. lea $56000+[210*48]+44,a2
  365. move.L textptr,a0
  366. clr d0
  367. move.b (a0)+,d0
  368. tst.b (a0)
  369. bne.s print1
  370. lea text,a0
  371. print1:move.l a0,textptr
  372.  
  373. lea    fonts,a1
  374. espace1:
  375. cmpi.b    #$20,d0
  376. bne.s    noespace1
  377. add.w    #96,a1
  378. bra.s    affichefont1
  379. noespace1:
  380. sub.b    #$2b,d0
  381. add.b    d0,d0
  382. add.w    d0,a1
  383. affichelettre1:
  384. bra.l    affichefont1
  385.  
  386. affichefont1:
  387. move.b    (a1),(a2)
  388. move.b    [$62*1](a1),[48*1](a2)
  389. move.b    [$62*2](a1),[48*2](a2)
  390. move.b    [$62*3](a1),[48*3](a2)
  391. move.b    [$62*4](a1),[48*4](a2)
  392. move.b    [$62*5](a1),[48*5](a2)
  393. printa:bchg #0,pra
  394. rts
  395.  
  396. pra:dc.w 0
  397.  
  398.  
  399. clear:move #$34,$66(a6)
  400. move.l bpw1,d0
  401. addi.L #[10*3*64]+16,d0
  402. move.l d0,$54(a6)
  403. move.L #$1000000,$40(a6)
  404. move #38400+6,$58(a6)
  405. rts
  406.  
  407. spball:dc.w 0
  408. balls:dc.w 0
  409.  
  410. moveball:
  411. lea boules+2,a0
  412. tst balls
  413. bne.s mb1
  414. add #12,spball
  415. move spball,d0
  416. sub d0,(a0)
  417. cmpi #-1400,(a0)
  418. blo.s mb2
  419. rts
  420. mb2:move #-1,balls
  421. add d0,(a0)
  422. rts
  423. mb1:
  424. sub #12,spball
  425. move spball,d0
  426. add d0,(a0)
  427. tst spball
  428. beq.s mb3
  429. rts
  430. mb3:clr balls
  431. move #$200,bra1
  432. rts
  433.  
  434. bras:    ;lea sin cos deja fait
  435. bsr.s moveball
  436. lea sin,a0
  437. lea cos,a1
  438. lea hand+2,a2
  439. move bra1,d6
  440. addi #72,d6
  441. andi #$7fe,d6
  442. move d6,bra1
  443. move.L #38*8,d0
  444. muls (a1,d6.w),d0
  445. asr.L #5,d0
  446. asr.l #8,d0
  447. addi #12,d0
  448. ;move d0,(a2)
  449. move d0,18(a2)
  450. addq.l #6,a2
  451.  
  452. move.L #75*8,d0
  453. muls (a1,d6.w),d0
  454. asr.L #5,d0
  455. asr.l #8,d0
  456. subi #25,d0
  457. ;move d0,(a2)
  458. move d0,18(a2)
  459. addq.L #6,a2
  460.  
  461. move.L #100*8,d0
  462. muls (a1,d6.w),d0
  463. asr.L #5,d0
  464. asr.l #8,d0
  465. subi #50,d0
  466. ;move d0,(a2)
  467. move d0,18(a2)
  468.  
  469. ;*** speed contient la vitesse de rotation (paire) 
  470. speed=16
  471.  
  472. calcule:
  473. addi #speed,z+2
  474. andi #$7fe,z+2
  475. ;lea sin,a0    ;deja fait
  476. ;lea cos,a1
  477. lea jug,a2
  478. lea coord,a3
  479. lea val,a4
  480. sub.l a5,a5
  481. movem.L vide,d0-d7
  482. calculoop:
  483. movem.w (a2)+,d0/d1/d2
  484. move d0,d5
  485. move d1,d6
  486. sin200:muls #,d0    
  487. cos200:muls #,d1
  488. sub.l d1,d0
  489. cos200b:muls #,d5
  490. move d6,d1
  491. sin200b:muls #,d1
  492. add.l d5,d1
  493. asr.l #8,d0
  494. asr.l #2,d0
  495. asr.l #8,d1
  496. asr.l #2,d1
  497. y:move #$600,d3
  498. move d1,d5
  499. move d2,d6
  500. sin600:muls #,d1
  501. cos600:muls #,d2
  502. sub.l d2,d1
  503. cos600b:muls #,d5
  504. move d6,d2
  505. sin600b:muls #,d2
  506. add.l d5,d2
  507. asr.l #2,d1
  508. asr.l #8,d2
  509. asr.l #2,d2
  510. z:move #$200,d3
  511. move d2,d5
  512. move d0,d6
  513. muls (a0,d3),d2
  514. muls (a1,d3),d0
  515. sub.l d0,d2
  516. muls (a1,d3),d5
  517. move d6,d0
  518. muls (a0,d3),d0
  519. add.l d5,d0
  520. asr.l #2,d0
  521. asr.l #8,d2
  522. asr.l #6,d2
  523.  
  524. add #300,d2
  525. divs d2,d0
  526. divs d2,d1
  527. move d2,(a4)+
  528. cmpi #3,a5
  529. blo.s cal0
  530. addi #[41*64]+16,d0
  531. addi #[111*16],d1
  532. bra.s cal1
  533. cal0:addi #[40*64]-48,d0
  534. addi #[111*16],d1
  535. cal1:
  536. asr #4,d0
  537. asr #4,d1
  538. move d0,d2
  539. lsr #3,d0
  540. bclr #0,d0
  541. and #$f,d2
  542. lsl #6,d1
  543. ;muls #3,d1
  544. move d1,d6
  545. add d6,d1
  546. add d6,d1
  547. add d1,d0
  548. swap d0
  549. clr d0
  550. swap d0
  551. ;add.l bpw1,d0
  552. move.l d0,(a3)+
  553. ror #4,d2
  554. move d2,(a3)+
  555. or #$fca,d2
  556. move d2,(a3)+
  557. add #1,a5
  558. cmpi #$7777,(a2)
  559. bne.L calculoop
  560. move #$7777,(a3)
  561. move #$7777,(a4)
  562.  
  563. lea ordre,a0
  564. lea val,a1
  565. clr.L d0
  566. loop1:
  567. move.L d0,d1
  568. add.l #2,d1
  569. loop2:
  570. move (a0,d0.w),d2
  571. move (a0,d1.w),d3
  572. lsl #1,d2
  573. lsl #1,d3
  574. move (a1,d2.w),d4
  575. move (a1,d3.w),d5
  576. cmp d5,d4
  577. bge.s noexg
  578. lsr #1,d2
  579. lsr #1,d3
  580. move d2,(a0,d1.w)
  581. move d3,(a0,d0.w)
  582. noexg:
  583. addq.L #2,d1
  584. cmpi #$7777,(a0,d1.w)
  585. bne.s loop2
  586. add.l #2,d0
  587. cmpi #$7777,2(a0,d0.w)
  588. bne.s loop1
  589. clr.l d0
  590. rts
  591.  
  592. bob:
  593. lea ordre,a1
  594. lea bo,a4
  595. lea coord,a3
  596. move.l #$ffff0000,$44(a6)
  597. clr.L $62(a6)
  598. move #$8400,$96(a6)
  599. move.l bpw1,d0
  600. bobl1:
  601. btst #$e,2(a6)
  602. bne.s bobl1
  603. move (a1)+,d2
  604. lsl #3,d2
  605. ;clr.L d1
  606. move.l (a3,d2.w),d1
  607. add.L d0,d1
  608. ;move 4(a3,d2.w),d5
  609. ;lsl #1,d2
  610. move.l (a4,d2.w),d4
  611. move.l d4,$4c(a6)
  612. move.L 4(a4,d2.w),$50(a6)
  613. move.l d1,$48(a6)
  614. move.L d1,$54(a6)
  615. cmpi.L #bob1,d4
  616. beq.s bobb2
  617. cmpi.L #bob2,d4
  618. beq.s bobb2
  619. cmpi.l #bob8,d4
  620. beq.s bobb2
  621. move #$3c,$60(a6)
  622. move #$3c,$66(a6)
  623. ;move d5,$42(a6)
  624. ;or #$fca,d5
  625. ;move d5,$40(a6)
  626. move 4(a3,d2.w),$42(a6)
  627. move 6(a3,d2.w),$40(a6)
  628. move #3074,$58(a6)
  629. cmpi #$7777,(a1)
  630. bne.s bobl1
  631. rts
  632.  
  633. bobb2:
  634. move #$3a,$60(a6)
  635. move #$3a,$66(a6)
  636. ;move d5,$42(a6)
  637. ;or #$fca,d5
  638. ;move d5,$40(a6)
  639. move 4(a3,d2.w),$42(a6)
  640. move 6(a3,d2.w),$40(a6)
  641. move #6147,$58(a6)
  642. cmpi #$7777,(a1)
  643. bne.L bobl1
  644. rts
  645.  
  646.  
  647. copscroll:
  648. lea cop1+6,a0
  649. move #94,d7
  650. move (a0),d0
  651. cops1:
  652. move 12(a0),(a0)
  653. move 12(a0),4(a0)
  654. add.L #12,a0
  655. dbra d7,cops1
  656. move d0,(a0)
  657. move d0,4(a0)
  658. rts
  659.  
  660. save_all:
  661. move.L 4,a6
  662. jsr -132(a6)
  663. move.b #%10000111,$bfd100
  664. move.l $6c,save_vecteur_irq
  665. move.w $dff01c,save_intena
  666. or.w #$c000,save_intena
  667. move.w $dff002,save_dmacon
  668. or.w #$8100,save_dmacon
  669. rts
  670. restore_all:
  671. move.l save_vecteur_irq,$6c
  672. move.w #$7fff,$dff09a
  673. move.w save_intena,$dff09a
  674. move.w #$7fff,$dff096
  675. move.w save_dmacon,$dff096
  676. move.l 4,a6
  677. lea name_glib,a1
  678. moveq #0,d0
  679. jsr -552(a6)
  680. move.l d0,a0
  681. move.l 38(a0),$dff080
  682. clr.w $dff088
  683. move.L 4,a6
  684. jsr -138(a6)
  685. rts
  686. save_intena:dc.w 0
  687. save_dmacon:dc.w 0
  688. save_vecteur_irq:dc.l 0
  689. name_glib:dc.b "graphics.library",0
  690. even
  691.  
  692. makecopper:
  693. lea cop1,a0
  694. move.L #$8bdffffe,d0
  695. move #95,d6
  696. mcl0:
  697. move.l d0,(a0)+
  698. move.L #$1920000,(a0)+
  699. move.l #$1960000,(a0)+
  700. add.L #$1000000,d0
  701. dbra d6,mcl0
  702.  
  703. lea cop1+6,a0
  704. lea deg,a1
  705. move #5,d6
  706. mcl5:
  707. move (a1)+,d0
  708. move (a1)+,d1
  709. move (a1),d2
  710. move #15,d7
  711. mcl6:
  712. move d0,(a0)
  713. move d0,4(a0)
  714. add.L #12,a0
  715. add d1,d0
  716. dbra d7,mcl6
  717. dbra d6,mcl5
  718.  
  719. move.l #logo,d0
  720. move #2,d7
  721. lea copbpl4+4,a0
  722. mcl9:
  723. move d0,6(a0)
  724. swap d0
  725. move d0,2(a0)
  726. swap d0
  727. addi.l #[44*36],d0
  728. addq.l #8,a0
  729. dbra d7,mcl9
  730. rts
  731. mcs1:dc.w 0
  732.  
  733. deg:dc.W $f00,$10,$ff0,-$100,$f0,1,$ff,-$10,$f,$100,$f0f,-1
  734. copperlist:
  735. dc.L $10ffffe,$920030,$9400d8,$9683e0
  736. copspr:dc.L $1200000,$1220000,$1240000,$1260000,$1280000,$12a0000
  737. dc.L $12c0000,$12e0000,$1300000,$1320000,$1340000,$1360000,$1380000
  738. dc.l $13a0000,$13c0000,$13e0000
  739. dc.l $1020000,$1040000,$1080094,$10a0004,$1000200
  740. dc.w    $0180,$0000 ,$0192,$0000
  741.  
  742. dc.w    $0180,$0000 ,$0182,$0eca ,$0184,$035e ,$0186,$023a
  743. dc.w    $0188,$0126 ,$018a,$0cc0 ,$018c,$0c80 ,$018e,$0c50
  744. dc.w    $01a0,$0000 ,$01a2,$099a ,$01a4,$0778 ,$01a6,$0334
  745. dc.w    $01a8,$0000 ,$01aa,$0667 ,$01ac,$0445 ,$01ae,$0223
  746. dc.w    $01b0,$0000 ,$01b2,$0fff ,$01b4,$0aaa ,$01b6,$0666
  747.  
  748. ;logo rouge
  749. ;dc.w    $0190,$0000 ,$0192,$0e11 ,$0194,$0c12 ,$0196,$0b23
  750. ;dc.w    $0198,$0923 ,$019a,$0723 ,$019c,$0622 ,$019e,$0412
  751. ;logo bleu
  752. dc.w    $0190,$0000 ,$0192,$0fff ,$0194,$0bcd ,$0196,$07ab
  753. dc.w    $0198,$0589 ,$019a,$0257 ,$019c,$0145 ,$019e,$0023
  754.  
  755. dc.L $1b80000,$1ba0000,$1bc0000,$1be0000
  756. dc.L $200ffffe,$9683e0
  757. copbpl1:dc.W $e4,5,$e6,$6000,$ec,5,$ee,$6030
  758. copbpl3:dc.w $e0,0,$e2,0,$e8,0,$ea,0,$f0,0,$f2,0
  759.  
  760. copscr1:dc.L $3d0ffffe,$1005600
  761. dc.L $400ffffe,$1800002
  762. dc.L $410ffffe,$1800004
  763. dc.L $420ffffe,$1800007
  764. dc.L $430ffffe,$1800004
  765. dc.l $440ffffe,$1800002
  766. dc.L $44dffffe,$1800000,$10a0000,$450ffffe
  767. copbpl4:
  768. dc.l $1006600,$e40000,$e60000,$ec0000,$ee0000,$f40000,$f60000
  769. dc.L $68dffffe,$1005600
  770. dc.w $e4,6,$e6,$b000,$ec,6,$ee,$b000
  771.  
  772. dc.L $7edffffe
  773. dc.w $e4,5,$e6,$6c90,$ec,5,$ee,$6cc0
  774. dc.L $1005600,$10a0004,$1040040
  775. dc.L $1940888
  776. cop1:blk.b 96*12
  777. dc.L $1920fff,$1960fff
  778. dc.l $ffdffffe
  779. dc.L $d0ffffe,$1920fff,$194000f,$1960fff
  780. dc.L $150ffffe,$9c8010,$1000200,$1840fff,$1860fff,$1820004
  781. dc.l $1a20000,$1a40000,$1a60000,$1aa0000,$1ac0000,$1ae0000
  782. dc.l $1b20000,$1b40000,$1b60000,$e00005,$e20000,$1080000
  783. dc.L $160ffffe,$1001200,$960020
  784. bar1:dc.L $1800002,$1820fff
  785. dc.L $170ffffe
  786. bar2:dc.l $1800004,$1820eee
  787. dc.L $180ffffe
  788. bar3:dc.L $1800007,$1820ddd
  789. dc.L $190ffffe
  790. bar4:dc.L $1800004,$1820ccc
  791. dc.l $1a0ffffe
  792. bar5:dc.L $1800002,$1820bbb
  793.  
  794. dc.L $1b0ffffe
  795. dc.L $1000200,$1800000
  796. dc.L -2
  797.  
  798. bpa1:dc.L bp3
  799. bpw1:dc.L bp4
  800.  
  801. ***************************************************************
  802. **  Amiga FUTURE COMPOSER V1.0 / 1.2 / 1.3   Replay routine  **
  803. ***************************************************************
  804.  
  805. END_MUSIC:
  806. ;clr.w onoff
  807. clr.l $dff0a6
  808. clr.l $dff0b6
  809. clr.l $dff0c6
  810. clr.l $dff0d6
  811. move.w #$000f,$dff096
  812. rts
  813.  
  814. INIT_MUSIC:
  815. ;move.w #1,onoff
  816. lea MODULE(pc),a0
  817. lea 100(a0),a1
  818. lea    SEQpoint(pc),a5
  819. move.l a1,(a5)
  820. move.l a0,a1
  821. add.l 8(a0),a1
  822. lea    PATpoint(pc),a5
  823. move.l a1,(a5)
  824. move.l a0,a1
  825. add.l 16(a0),a1
  826. lea    FRQpoint(pc),a5
  827. move.l a1,(a5)
  828. move.l a0,a1
  829. add.l 24(a0),a1
  830. lea    VOLpoint(pc),a5
  831. move.l a1,(a5)
  832. move.l 4(a0),d0
  833. divu #13,d0
  834.  
  835. lea 40(a0),a1
  836. lea SOUNDINFO+4(pc),a2
  837. moveq #10-1,d1
  838. initloop:
  839. move.w (a1)+,(a2)+
  840. move.l (a1)+,(a2)+
  841. addq.w #4,a2
  842. dbf d1,initloop
  843. moveq #0,d2
  844. move.l a0,d1
  845. add.l 32(a0),d1
  846. lea    waveforms(pc),a5
  847. sub.l a5,d1
  848. lea SOUNDINFO(pc),a0
  849. move.l d1,(a0)+
  850. moveq #9-1,d3
  851. initloop1:
  852. move.w (a0),d2
  853. add.l d2,d1
  854. add.l d2,d1
  855. addq.w #6,a0
  856. move.l d1,(a0)+
  857. dbf d3,initloop1
  858.  
  859. move.l SEQpoint(pc),a0
  860. moveq #0,d2
  861. move.b 12(a0),d2        ;Get replay speed
  862. bne.s speedok
  863. move.b #3,d2            ;Set default speed
  864. speedok:
  865. lea    respcnt(pc),a5
  866. move.w d2,(a5)        ;Init repspeed counter
  867. lea    repspd(pc),a5
  868. move.w d2,(a5)
  869. INIT2:
  870. lea    audtemp(pc),a5
  871. clr.w (a5)
  872. move.w #$000f,$dff096        ;Disable audio DMA
  873. move.w #$0780,$dff09a        ;Disable audio IRQ
  874. moveq #0,d7
  875. mulu #13,d0
  876. moveq #4-1,d6            ;Number of soundchannels-1
  877. lea V1data(pc),a0        ;Point to 1st voice data area
  878. lea silent(pc),a1
  879. lea o4a0c8(pc),a2
  880. initloop2:
  881. move.l a1,10(a0)
  882. move.l a1,18(a0)
  883. clr.l 14(a0)
  884. clr.b 45(a0)
  885. clr.b 47(a0)
  886. clr.w 8(a0)
  887. clr.l 48(a0)
  888. move.b #$01,23(a0)
  889. move.b #$01,24(a0)
  890. clr.b 25(a0)
  891. clr.l 26(a0)
  892. clr.w 30(a0)
  893. moveq #$00,d3
  894. move.w (a2)+,d1
  895. move.w (a2)+,d3
  896. divu #$0003,d3
  897. move.b d3,32(a0)
  898. mulu #$0003,d3
  899. andi.l #$00ff,d3
  900. andi.l #$00ff,d1
  901. addi.l #$dff0a0,d1
  902. move.l d1,a6
  903. move.l #$0000,(a6)
  904. move.w #$0100,4(a6)
  905. move.w #$0000,6(a6)
  906. move.w #$0000,8(a6)
  907. move.l d1,60(a0)
  908. clr.w 64(a0)
  909. move.l SEQpoint(pc),(a0)
  910. move.l SEQpoint(pc),52(a0)
  911. add.l d0,52(a0)
  912. add.l d3,52(a0)
  913. add.l d7,(a0)
  914. add.l d3,(a0)
  915. move.w #$000d,6(a0)
  916. move.l (a0),a3
  917. move.b (a3),d1
  918. andi.l #$00ff,d1
  919. lsl.w #6,d1
  920. move.l PATpoint(pc),a4
  921. adda.w d1,a4
  922. move.l a4,34(a0)
  923. clr.l 38(a0)
  924. move.b #$01,33(a0)
  925. move.b #$02,42(a0)
  926. move.b 1(a3),44(a0)
  927. move.b 2(a3),22(a0)
  928. clr.b 43(a0)
  929. clr.b 45(a0)
  930. clr.w 56(a0)
  931. adda.w #$004a,a0    ;Point to next voice's data area
  932. dbf d6,initloop2
  933. rts
  934.  
  935. PLAY:
  936. lea pervol(pc),a6
  937. ;tst.w onoff
  938. ;bne.s music_on
  939. ;rts
  940. music_on:
  941. lea    respcnt(pc),a5
  942. subq.w #1,(a5)            ;Decrease replayspeed counter
  943. bne.s nonewnote
  944. move.w repspd(pc),(a5)        ;Restore replayspeed counter
  945. lea V1data(pc),a0        ;Point to voice1 data area
  946. bsr.L new_note
  947. lea V2data(pc),a0        ;Point to voice2 data area
  948. bsr.L new_note
  949. lea V3data(pc),a0        ;Point to voice3 data area
  950. bsr.L new_note
  951. lea V4data(pc),a0        ;Point to voice4 data area
  952. bsr.L new_note
  953.  
  954. nonewnote:
  955. lea    audtemp(pc),a5
  956. clr.w (a5)
  957. lea V1data(pc),a0
  958. bsr.L effects
  959. move.w d0,(a6)+
  960. move.w d1,(a6)+
  961. lea V2data(pc),a0
  962. bsr.L effects
  963. move.w d0,(a6)+
  964. move.w d1,(a6)+
  965. lea V3data(pc),a0
  966. bsr.L effects
  967. move.w d0,(a6)+
  968. move.w d1,(a6)+
  969. lea V4data(pc),a0
  970. bsr.L effects
  971. move.w d0,(a6)+
  972. move.w d1,(a6)+
  973. lea pervol(pc),a6
  974. move.w audtemp(pc),d0
  975. ori.w #$8000,d0            ;Set/clr bit = 1
  976. move.w d0,-(a7)
  977. moveq #0,d1
  978. move.l start1(pc),d2        ;Get samplepointers
  979. move.w offset1(pc),d1        ;Get offset
  980. add.l d1,d2            ;Add offset
  981. move.l start2(pc),d3
  982. move.w offset2(pc),d1
  983. add.l d1,d3
  984. move.l start3(pc),d4
  985. move.w offset3(pc),d1
  986. add.l d1,d4
  987. move.l start4(pc),d5
  988. move.w offset4(pc),d1
  989. add.l d1,d5
  990. move.w ssize1(pc),d0        ;Get sound lengths
  991. move.w ssize2(pc),d1
  992. move.w ssize3(pc),d6
  993. move.w ssize4(pc),d7
  994. move.w (a7)+,$dff096        ;Enable audio DMA
  995. chan1:
  996. lea V1data(pc),a0
  997. tst.w 72(a0)
  998. beq.l chan2
  999. subq.w #1,72(a0)
  1000. cmpi.w #1,72(a0)
  1001. bne.s chan2
  1002. clr.w 72(a0)
  1003. move.l d2,$dff0a0        ;Set soundstart
  1004. move.w d0,$dff0a4        ;Set soundlength
  1005. chan2:
  1006. lea V2data(pc),a0
  1007. tst.w 72(a0)
  1008. beq.s chan3
  1009. subq.w #1,72(a0)
  1010. cmpi.w #1,72(a0)
  1011. bne.s chan3
  1012. clr.w 72(a0)
  1013. move.l d3,$dff0b0
  1014. move.w d1,$dff0b4
  1015. chan3:
  1016. lea V3data(pc),a0
  1017. tst.w 72(a0)
  1018. beq.s chan4
  1019. subq.w #1,72(a0)
  1020. cmpi.w #1,72(a0)
  1021. bne.s chan4
  1022. clr.w 72(a0)
  1023. move.l d4,$dff0c0
  1024. move.w d6,$dff0c4
  1025. chan4:
  1026. lea V4data(pc),a0
  1027. tst.w 72(a0)
  1028. beq.s setpervol
  1029. subq.w #1,72(a0)
  1030. cmpi.w #1,72(a0)
  1031. bne.s setpervol
  1032. clr.w 72(a0)
  1033. move.l d5,$dff0d0
  1034. move.w d7,$dff0d4
  1035. setpervol:
  1036. lea $dff0a6,a5
  1037. move.w (a6)+,(a5)    ;Set period
  1038. move.w (a6)+,2(a5)    ;Set volume
  1039. move.w (a6)+,16(a5)
  1040. move.w (a6)+,18(a5)
  1041. move.w (a6)+,32(a5)
  1042. move.w (a6)+,34(a5)
  1043. move.w (a6)+,48(a5)
  1044. move.w (a6)+,50(a5)
  1045. rts
  1046.  
  1047. NEW_NOTE:
  1048. moveq #0,d5
  1049. move.l 34(a0),a1
  1050. adda.w 40(a0),a1
  1051. cmp.w #64,40(a0)
  1052. bne.s samepat
  1053. move.l (a0),a2
  1054. adda.w 6(a0),a2        ;Point to next sequence row
  1055. cmpa.l 52(a0),a2    ;Is it the end?
  1056. bne.s notend
  1057. move.w d5,6(a0)        ;yes!
  1058. move.l (a0),a2        ;Point to first sequence
  1059. notend:
  1060. moveq #0,d1
  1061. lea    spdtemp(pc),a5
  1062. addq.b #1,(a5)
  1063. cmpi.b #4,(a5)
  1064. bne.s nonewspd
  1065. move.b d5,(a5)
  1066. move.b -1(a1),d1    ;Get new replay speed
  1067. beq.s nonewspd
  1068. lea    respcnt(pc),a5
  1069. move.w d1,(a5)        ;store in counter
  1070. lea    repspd(pc),a5
  1071. move.w d1,(a5)
  1072. nonewspd:
  1073. move.b (a2),d1        ;Pattern to play
  1074. move.b 1(a2),44(a0)    ;Transpose value
  1075. move.b 2(a2),22(a0)    ;Soundtranspose value
  1076.  
  1077. move.w d5,40(a0)
  1078. lsl.w #6,d1
  1079. add.l PATpoint(pc),d1    ;Get pattern pointer
  1080. move.l d1,34(a0)
  1081. addi.w #$000d,6(a0)
  1082. move.l d1,a1
  1083. samepat:
  1084. move.b 1(a1),d1        ;Get info byte
  1085. move.b (a1)+,d0        ;Get note
  1086. bne.s ww1
  1087. andi.w #%11000000,d1
  1088. beq.s noport
  1089. bra.s ww11
  1090. ww1:
  1091. move.w d5,56(a0)
  1092. ww11:
  1093. move.b d5,47(a0)
  1094. move.b (a1),31(a0)
  1095.  
  1096.         ;31(a0) = PORTAMENTO/INSTR. info
  1097.             ;Bit 7 = portamento on
  1098.             ;Bit 6 = portamento off
  1099.             ;Bit 5-0 = instrument number
  1100.         ;47(a0) = portamento value
  1101.             ;Bit 7-5 = always zero
  1102.             ;Bit 4 = up/down
  1103.             ;Bit 3-0 = value
  1104. t_porton:
  1105. btst #7,d1
  1106. beq.s noport
  1107. move.b 2(a1),47(a0)    
  1108. noport:
  1109. andi.w #$007f,d0
  1110. beq.s nextnote
  1111. move.b d0,8(a0)
  1112. move.b (a1),9(a0)
  1113. move.b 32(a0),d2
  1114. moveq #0,d3
  1115. bset d2,d3
  1116. lea    audtemp(pc),a5
  1117. or.w d3,(a5)
  1118. move.w d3,$dff096
  1119. move.b (a1),d1
  1120. andi.w #$003f,d1    ;Max 64 instruments
  1121. add.b 22(a0),d1
  1122. move.l VOLpoint(pc),a2
  1123. lsl.w #6,d1
  1124. adda.w d1,a2
  1125. move.w d5,16(a0)
  1126. move.b (a2),23(a0)
  1127. move.b (a2)+,24(a0)
  1128. move.b (a2)+,d1
  1129. andi.w #$00ff,d1
  1130. move.b (a2)+,27(a0)
  1131. move.b #$40,46(a0)
  1132. move.b (a2)+,d0
  1133. move.b d0,28(a0)
  1134. move.b d0,29(a0)
  1135. move.b (a2)+,30(a0)
  1136. move.l a2,10(a0)
  1137. move.l FRQpoint(pc),a2
  1138. lsl.w #6,d1
  1139. adda.w d1,a2
  1140. move.l a2,18(a0)
  1141. move.w d5,50(a0)
  1142. move.b d5,26(a0)
  1143. move.b d5,25(a0)
  1144. nextnote:
  1145. addq.w #2,40(a0)
  1146. rts
  1147.  
  1148. EFFECTS:
  1149. moveq #0,d7
  1150. testsustain:
  1151. tst.b 26(a0)        ;Is sustain counter = 0
  1152. beq.s sustzero
  1153. subq.b #1,26(a0)    ;if no, decrease counter
  1154. bra.L VOLUfx
  1155. sustzero:        ;Next part of effect sequence
  1156. move.l 18(a0),a1    ;can be executed now.
  1157. adda.w 50(a0),a1
  1158. testeffects:
  1159. cmpi.b #$e1,(a1)    ;E1 = end of FREQseq sequence
  1160. beq.L VOLUfx
  1161. cmpi.b #$e0,(a1)    ;E0 = loop to other part of sequence
  1162. bne.s testnewsound
  1163. move.b 1(a1),d0        ;loop to start of sequence + 1(a1)
  1164. andi.w #$003f,d0
  1165. move.w d0,50(a0)
  1166. move.l 18(a0),a1
  1167. adda.w d0,a1
  1168. testnewsound:
  1169. cmpi.b #$e2,(a1)    ;E2 = set waveform
  1170. bne.s o49c64
  1171. moveq #0,d0
  1172. moveq #0,d1
  1173. move.b 32(a0),d1
  1174. bset d1,d0
  1175. lea    audtemp(pc),a5
  1176. or.w d0,(a5)
  1177. move.w d0,$dff096
  1178. move.b 1(a1),d0
  1179. andi.w #$00ff,d0
  1180. lea SOUNDINFO(pc),a4
  1181. add.w d0,d0
  1182. move.w d0,d1
  1183. add.w d1,d1
  1184. add.w d1,d1
  1185. add.w d1,d0
  1186. adda.w d0,a4
  1187. move.l 60(a0),a3
  1188. move.l (a4),d1
  1189. lea    waveforms(pc),a5
  1190. add.l a5,d1
  1191. move.l d1,(a3)
  1192. move.l d1,68(a0)
  1193. move.w 4(a4),4(a3)
  1194. move.l 6(a4),64(a0)
  1195. swap d1
  1196. move.w #$0003,72(a0)
  1197. tst.w d1
  1198. bne.s o49c52
  1199. move.w #$0002,72(a0)
  1200. o49c52:
  1201. clr.w 16(a0)
  1202. move.b #$01,23(a0)
  1203. addq.w #2,50(a0)
  1204. bra.L o49d02
  1205. o49c64:
  1206. cmpi.b #$e4,(a1)
  1207. bne.s testpatjmp
  1208. move.b 1(a1),d0
  1209. andi.w #$00ff,d0
  1210. lea SOUNDINFO(pc),a4
  1211. add.w d0,d0
  1212. move.w d0,d1
  1213. add.w d1,d1
  1214. add.w d1,d1
  1215. add.w d1,d0
  1216. adda.w d0,a4
  1217. move.l 60(a0),a3
  1218. move.l (a4),d1
  1219. lea    waveforms(pc),a5
  1220. add.l a5,d1
  1221. move.l d1,(a3)
  1222. move.l d1,68(a0)
  1223. move.w 4(a4),4(a3)
  1224. move.l 6(a4),64(a0)
  1225.  
  1226. swap d1
  1227. move.w #$0003,72(a0)
  1228. tst.w d1
  1229. bne.s o49cae
  1230. move.w #$0002,72(a0)
  1231. o49cae:
  1232. addq.w #2,50(a0)
  1233. bra.s o49d02
  1234. testpatjmp:
  1235. cmpi.b #$e7,(a1)
  1236. bne.s testnewsustain
  1237. move.b 1(a1),d0
  1238. andi.w #$00ff,d0
  1239. lsl.w #6,d0
  1240. move.l FRQpoint(pc),a1
  1241. adda.w d0,a1
  1242. move.l a1,18(a0)
  1243. move.w d7,50(a0)
  1244. bra.L testeffects
  1245. testnewsustain:
  1246. cmpi.b #$e8,(a1)    ;E8 = set sustain time
  1247. bne.s o49cea
  1248. move.b 1(a1),26(a0)
  1249. addq.w #2,50(a0)
  1250. bra.L testsustain
  1251. o49cea:
  1252. cmpi.b #$e3,(a1)
  1253. bne.s o49d02
  1254. addq.w #3,50(a0)
  1255. move.b 1(a1),27(a0)
  1256. move.b 2(a1),28(a0)
  1257. o49d02:
  1258. move.l 18(a0),a1
  1259. adda.w 50(a0),a1
  1260. move.b (a1),43(a0)
  1261. addq.w #1,50(a0)
  1262. VOLUfx:
  1263. tst.b 25(a0)
  1264. beq.s o49d1e
  1265. subq.b #1,25(a0)
  1266. bra.s o49d70
  1267. o49d1e:
  1268. subq.b #1,23(a0)
  1269. bne.s o49d70
  1270. move.b 24(a0),23(a0)
  1271. o49d2a:
  1272. move.l 10(a0),a1
  1273. adda.w 16(a0),a1
  1274. move.b (a1),d0
  1275. cmpi.b #$e8,d0
  1276. bne.s o49d4a
  1277. addq.w #2,16(a0)
  1278. move.b 1(a1),25(a0)
  1279. bra.s VOLUfx
  1280. o49d4a:
  1281. cmpi.b #$e1,d0
  1282. beq.s o49d70
  1283. cmpi.b #$e0,d0
  1284. bne.s o49d68
  1285. move.b 1(a1),d0
  1286. andi.l #$003f,d0
  1287. subq.b #5,d0
  1288. move.w d0,16(a0)
  1289. bra.s o49d2a
  1290. o49d68:
  1291. move.b (a1),45(a0)
  1292. addq.w #1,16(a0)
  1293. o49d70:
  1294. move.b 43(a0),d0
  1295. bmi.s o49d7e
  1296. add.b 8(a0),d0
  1297. add.b 44(a0),d0
  1298. o49d7e:
  1299. andi.w #$007f,d0
  1300. lea PERIODS(pc),a1
  1301. add.w d0,d0
  1302. move.w d0,d1
  1303. adda.w d0,a1
  1304. move.w (a1),d0
  1305. move.b 46(a0),d7
  1306. tst.b 30(a0)
  1307. beq.s o49d9e
  1308. subq.b #1,30(a0)
  1309.  
  1310. bra.s o49df4
  1311. o49d9e:
  1312. move.b d1,d5
  1313. move.b 28(a0),d4
  1314. add.b d4,d4
  1315. move.b 29(a0),d1
  1316. tst.b d7
  1317. bpl.s o49db4
  1318. btst #0,d7
  1319. bne.s o49dda
  1320. o49db4:
  1321. btst #5,d7
  1322. bne.s o49dc8
  1323. sub.b 27(a0),d1
  1324. bcc.s o49dd6
  1325. bset #5,d7
  1326. moveq #0,d1
  1327. bra.s o49dd6
  1328. o49dc8:
  1329. add.b 27(a0),d1
  1330. cmp.b d4,d1
  1331. bcs.s o49dd6
  1332. bclr #5,d7
  1333. move.b d4,d1
  1334. o49dd6:
  1335. move.b d1,29(a0)
  1336. o49dda:
  1337. lsr.b #1,d4
  1338. sub.b d4,d1
  1339. bcc.s o49de4
  1340. subi.w #$0100,d1
  1341. o49de4:
  1342. addi.b #$a0,d5
  1343. bcs.s o49df2
  1344. o49dea:
  1345. add.w d1,d1
  1346. addi.b #$18,d5
  1347. bcc.s o49dea
  1348. o49df2:
  1349. add.w d1,d0
  1350. o49df4:
  1351. eori.b #$01,d7
  1352. move.b d7,46(a0)
  1353.  
  1354. ; DO THE PORTAMENTO THING
  1355. moveq #0,d1
  1356. move.b 47(a0),d1    ;get portavalue
  1357. beq.s a56d0        ;0=no portamento
  1358. cmpi.b #$1f,d1
  1359. bls.s portaup
  1360. portadown: 
  1361. andi.w #$1f,d1
  1362. neg.w d1
  1363. portaup:
  1364. sub.w d1,56(a0)
  1365. a56d0:
  1366. add.w 56(a0),d0
  1367. o49e3e:
  1368. cmpi.w #$0070,d0
  1369. bhi.s nn1
  1370. move.w #$0071,d0
  1371. nn1:
  1372. cmpi.w #$06b0,d0
  1373. bls.s nn2
  1374. move.w #$06b0,d0
  1375. nn2:
  1376. moveq #0,d1
  1377. move.b 45(a0),d1
  1378. rts
  1379.  
  1380. pervol: blk.b 16,0    ;Periods & Volumes temp. store
  1381. respcnt: dc.w 0        ;Replay speed counter 
  1382. repspd:  dc.w 0        ;Replay speed counter temp
  1383. firseq:     dc.w 0        ;First sequence
  1384. lasseq:     dc.w 0        ;Last sequence
  1385. audtemp: dc.w 0
  1386. spdtemp: dc.w 0
  1387.  
  1388. V1data:  blk.b 64,0    ;Voice 1 data area
  1389. offset1: blk.b 02,0    ;Is added to start of sound
  1390. ssize1:  blk.b 02,0    ;Length of sound
  1391. start1:  blk.b 06,0    ;Start of sound
  1392.  
  1393. V2data:  blk.b 64,0    ;Voice 2 data area
  1394. offset2: blk.b 02,0
  1395. ssize2:  blk.b 02,0
  1396. start2:  blk.b 06,0
  1397.  
  1398. V3data:  blk.b 64,0    ;Voice 3 data area
  1399. offset3: blk.b 02,0
  1400. ssize3:  blk.b 02,0
  1401. start3:  blk.b 06,0
  1402.  
  1403. V4data:  blk.b 64,0    ;Voice 4 data area
  1404. offset4: blk.b 02,0
  1405. ssize4:  blk.b 02,0
  1406. start4:  blk.b 06,0
  1407.  
  1408. o4a0c8: dc.l $00000000,$00100003,$00200006,$00300009
  1409. SEQpoint: dc.l 0
  1410. PATpoint: dc.l 0
  1411. FRQpoint: dc.l 0
  1412. VOLpoint: dc.l 0
  1413.  
  1414. SILENT: dc.w $0100,$0000,$0000,$00e1
  1415.  
  1416. PERIODS:dc.w $06b0,$0650,$05f4,$05a0,$054c,$0500,$04b8,$0474
  1417.     dc.w $0434,$03f8,$03c0,$038a,$0358,$0328,$02fa,$02d0
  1418.     dc.w $02a6,$0280,$025c,$023a,$021a,$01fc,$01e0,$01c5
  1419.     dc.w $01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d
  1420.     dc.w $010d,$00fe,$00f0,$00e2,$00d6,$00ca,$00be,$00b4
  1421.     dc.w $00aa,$00a0,$0097,$008f,$0087,$007f,$0078,$0071
  1422.     dc.w $0071,$0071,$0071,$0071,$0071,$0071,$0071,$0071
  1423.     dc.w $0071,$0071,$0071,$0071,$0d60,$0ca0,$0be8,$0b40
  1424.     dc.w $0a98,$0a00,$0970,$08e8,$0868,$07f0,$0780,$0714
  1425.     dc.w $1ac0,$1940,$17d0,$1680,$1530,$1400,$12e0,$11d0
  1426.     dc.w $10d0,$0fe0,$0f00,$0e28
  1427.  
  1428. SOUNDINFO:
  1429. ;Offset.l , Sound-length.w , Start-offset.w , Repeat-length.w 
  1430.  
  1431. ;Reserved for samples
  1432.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1433.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1434.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1435.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1436.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1437.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1438.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1439.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1440.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1441.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1442. ;Reserved for synth sounds
  1443.     dc.w $0000,$0000 ,$0010 ,$0000 ,$0010 
  1444.     dc.w $0000,$0020 ,$0010 ,$0000 ,$0010 
  1445.     dc.w $0000,$0040 ,$0010 ,$0000 ,$0010 
  1446.     dc.w $0000,$0060 ,$0010 ,$0000 ,$0010 
  1447.     dc.w $0000,$0080 ,$0010 ,$0000 ,$0010 
  1448.     dc.w $0000,$00a0 ,$0010 ,$0000 ,$0010 
  1449.     dc.w $0000,$00c0 ,$0010 ,$0000 ,$0010 
  1450.     dc.w $0000,$00e0 ,$0010 ,$0000 ,$0010 
  1451.     dc.w $0000,$0100 ,$0010 ,$0000 ,$0010 
  1452.     dc.w $0000,$0120 ,$0010 ,$0000 ,$0010 
  1453.     dc.w $0000,$0140 ,$0010 ,$0000 ,$0010 
  1454.     dc.w $0000,$0160 ,$0010 ,$0000 ,$0010 
  1455.     dc.w $0000,$0180 ,$0010 ,$0000 ,$0010 
  1456.     dc.w $0000,$01a0 ,$0010 ,$0000 ,$0010 
  1457.     dc.w $0000,$01c0 ,$0010 ,$0000 ,$0010 
  1458.     dc.w $0000,$01e0 ,$0010 ,$0000 ,$0010 
  1459.     dc.w $0000,$0200 ,$0010 ,$0000 ,$0010 
  1460.     dc.w $0000,$0220 ,$0010 ,$0000 ,$0010 
  1461.     dc.w $0000,$0240 ,$0010 ,$0000 ,$0010 
  1462.     dc.w $0000,$0260 ,$0010 ,$0000 ,$0010 
  1463.     dc.w $0000,$0280 ,$0010 ,$0000 ,$0010 
  1464.     dc.w $0000,$02a0 ,$0010 ,$0000 ,$0010 
  1465.     dc.w $0000,$02c0 ,$0010 ,$0000 ,$0010 
  1466.     dc.w $0000,$02e0 ,$0010 ,$0000 ,$0010 
  1467.     dc.w $0000,$0300 ,$0010 ,$0000 ,$0010 
  1468.     dc.w $0000,$0320 ,$0010 ,$0000 ,$0010 
  1469.     dc.w $0000,$0340 ,$0010 ,$0000 ,$0010 
  1470.     dc.w $0000,$0360 ,$0010 ,$0000 ,$0010 
  1471.     dc.w $0000,$0380 ,$0010 ,$0000 ,$0010 
  1472.     dc.w $0000,$03a0 ,$0010 ,$0000 ,$0010 
  1473.     dc.w $0000,$03c0 ,$0010 ,$0000 ,$0010 
  1474.     dc.w $0000,$03e0 ,$0010 ,$0000 ,$0010 
  1475.     dc.w $0000,$0400 ,$0008 ,$0000 ,$0008 
  1476.     dc.w $0000,$0410 ,$0008 ,$0000 ,$0008 
  1477.     dc.w $0000,$0420 ,$0008 ,$0000 ,$0008 
  1478.     dc.w $0000,$0430 ,$0008 ,$0000 ,$0008 
  1479.     dc.w $0000,$0440 ,$0008 ,$0000 ,$0008
  1480.     dc.w $0000,$0450 ,$0008 ,$0000 ,$0008
  1481.     dc.w $0000,$0460 ,$0008 ,$0000 ,$0008
  1482.     dc.w $0000,$0470 ,$0008 ,$0000 ,$0008
  1483.     dc.w $0000,$0480 ,$0010 ,$0000 ,$0010
  1484.     dc.w $0000,$04a0 ,$0008 ,$0000 ,$0008
  1485.     dc.w $0000,$04b0 ,$0010 ,$0000 ,$0010
  1486.     dc.w $0000,$04d0 ,$0010 ,$0000 ,$0010
  1487.     dc.w $0000,$04f0 ,$0008 ,$0000 ,$0008
  1488.     dc.w $0000,$0500 ,$0008 ,$0000 ,$0008
  1489.     dc.w $0000,$0510 ,$0018 ,$0000 ,$0018
  1490.  
  1491. WAVEFORMS:
  1492. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1493. dc.w $3f37,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  1494. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1495. dc.w $c037,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  1496. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1497. dc.w $c0b8,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  1498. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1499. dc.w $c0b8,$b027,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  1500. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1501. dc.w $c0b8,$b0a8,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  1502. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1503. dc.w $c0b8,$b0a8,$a017,$0f07,$ff07,$0f17,$1f27,$2f37
  1504. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1505. dc.w $c0b8,$b0a8,$a098,$0f07,$ff07,$0f17,$1f27,$2f37
  1506. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1507. dc.w $c0b8,$b0a8,$a098,$9007,$ff07,$0f17,$1f27,$2f37
  1508. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1509. dc.w $c0b8,$b0a8,$a098,$9088,$ff07,$0f17,$1f27,$2f37
  1510. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1511. dc.w $c0b8,$b0a8,$a098,$9088,$8007,$0f17,$1f27,$2f37
  1512. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1513. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$0f17,$1f27,$2f37
  1514. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1515. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9017,$1f27,$2f37
  1516. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1517. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$1f27,$2f37
  1518. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1519. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a027,$2f37
  1520. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1521. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a0a8,$2f37
  1522. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1523. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a0a8,$b037
  1524. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1525. dc.w $7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1526. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1527. dc.w $817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1528. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1529. dc.w $8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1530. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1531. dc.w $8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1532. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1533. dc.w $8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1534. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1535. dc.w $8181,$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1536. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1537. dc.w $8181,$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1538. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1539. dc.w $8181,$8181,$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f
  1540. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1541. dc.w $8181,$8181,$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f
  1542. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1543. dc.w $8181,$8181,$8181,$8181,$817f,$7f7f,$7f7f,$7f7f
  1544. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1545. dc.w $8181,$8181,$8181,$8181,$8181,$7f7f,$7f7f,$7f7f
  1546. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1547. dc.w $8181,$8181,$8181,$8181,$8181,$817f,$7f7f,$7f7f
  1548. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1549. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$7f7f,$7f7f
  1550. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1551. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$817f,$7f7f
  1552. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$8080
  1553. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$7f7f
  1554. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$8080
  1555. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$807f
  1556. dc.w $8080,$8080,$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f
  1557. dc.w $8080,$8080,$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f
  1558. dc.w $8080,$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1559. dc.w $8080,$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1560. dc.w $8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1561. dc.w $8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1562. dc.w $8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1563. dc.w $8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1564. dc.w $8080,$9098,$a0a8,$b0b8,$c0c8,$d0d8,$e0e8,$f0f8
  1565. dc.w $0008,$1018,$2028,$3038,$4048,$5058,$6068,$707f
  1566. dc.w $8080,$a0b0,$c0d0,$e0f0,$0010,$2030,$4050,$6070
  1567. dc.w $4545,$797d,$7a77,$7066,$6158,$534d,$2c20,$1812
  1568. dc.w $04db,$d3cd,$c6bc,$b5ae,$a8a3,$9d99,$938e,$8b8a
  1569. dc.w $4545,$797d,$7a77,$7066,$5b4b,$4337,$2c20,$1812
  1570. dc.w $04f8,$e8db,$cfc6,$beb0,$a8a4,$9e9a,$9594,$8d83
  1571. dc.w $0000,$4060,$7f60,$4020,$00e0,$c0a0,$80a0,$c0e0
  1572. dc.w $0000,$4060,$7f60,$4020,$00e0,$c0a0,$80a0,$c0e0
  1573. dc.w $8080,$9098,$a0a8,$b0b8,$c0c8,$d0d8,$e0e8,$f0f8
  1574. dc.w $0008,$1018,$2028,$3038,$4048,$5058,$6068,$707f
  1575. dc.w $8080,$a0b0,$c0d0,$e0f0,$0010,$2030,$4050,$6070
  1576.  
  1577. MODULE:    ;*** changer muzik ici
  1578. incbin "mod.thalion"
  1579.  
  1580. setf:blk.b 4,0
  1581. set:
  1582. incbin "set1"
  1583. set1=set
  1584. set2=set1+256
  1585. set3=set2+256
  1586. set4=set3+$b0
  1587. set5=set4+$b0
  1588. set6=set5+$80
  1589. fonts:
  1590. incbin "fonts"
  1591.  
  1592. sin:
  1593. incbin "sincos"
  1594. cos=sin+$200
  1595. vide:blk.b 32,0
  1596.  
  1597. jug:
  1598. dc.w 0,500,0,0,0,0
  1599. dc.w 0,1180,0    ;tete
  1600. dc.W 0,700,0
  1601. dc.w 350,550,0,500,380,0,650,220,0
  1602. dc.w -350,550,0,-400,300,0,-400,50,0
  1603. dc.W 300,-250,100,-300,-250,100
  1604. dc.W 300,-480,100,300,-710,100
  1605. dc.W -300,-480,100,-300,-710,100
  1606. dc.w 300,-940,90,300,-1170,60
  1607. dc.w -300,-940,90,-300,-1170,60
  1608. dc.W 300,-1400,20,-300,-1400,20
  1609. hand:dc.w 520,100,0,370,25,0,220,-50,0
  1610. dc.w -400,-25,200,-400,-100,350,-400,-150,470
  1611. boules:dc.w -400,-250,470
  1612. dc.w 110,1070,190,-110,1070,190
  1613. dc.w $7777
  1614.  
  1615. coord:blk.w 138,0
  1616. ordre:dc.w 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14
  1617. dc.w 15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,$7777
  1618.  
  1619. bra1:dc.w $200
  1620.  
  1621. bo:dc.L bob1,mask1,bob2,mask2
  1622. dc.l bob8,mask8
  1623. dc.L bob3,mask3
  1624. dc.l bob5,mask5,bob5,mask5,bob5,mask5
  1625. dc.l bob5,mask5,bob5,mask5,bob5,mask5
  1626. dc.l bob4,mask4,bob4,mask4
  1627. dc.l bob5,mask5,bob5,mask5
  1628. dc.l bob5,mask5,bob5,mask5
  1629. dc.l bob5,mask5,bob5,mask5
  1630. dc.l bob5,mask5,bob5,mask5
  1631. dc.l bob5,mask5,bob5,mask5
  1632. dc.l bob5,mask5,bob6,mask6,bob7,mask7
  1633. dc.l bob5,mask5,bob6,mask6,bob7,mask7
  1634. dc.L bob9,mask9    ;boules
  1635. dc.L bob7,mask7,bob7,mask7
  1636. val:blk.w 35
  1637. bobs:incbin "bobs"
  1638. bob1=bobs
  1639. bob2=bob1+576
  1640. bob3=bob2+576
  1641. bob4=bob3+192
  1642. bob5=bob4+192
  1643. bob6=bob5+192
  1644. bob7=bob6+192
  1645. bob8=bob7+192
  1646. bob9=bob8+576
  1647.  
  1648. logo:
  1649. incbin "logo44"
  1650.  
  1651. end:
  1652. masks:
  1653. mask1:
  1654. mask2=mask1+576
  1655. mask3=mask2+576
  1656. mask4=mask3+192
  1657. mask5=mask4+192
  1658. mask6=mask5+192
  1659. mask7=mask6+192
  1660. mask8=mask7+192
  1661. mask9=mask8+576
  1662. bp1=$50000
  1663. ;bp2=bp1+11638
  1664. bp5=$56000
  1665. bp3=$60000
  1666. bp4=$70000
  1667. bpv=$6b000
  1668.