home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 5 / Amiga Tools 5.iso / tools / developer-tools / assembler-tools / apathysource / miniwall / miniwall.s < prev    next >
Encoding:
Text File  |  1980-01-28  |  24.7 KB  |  1,016 lines

  1. ;;; "                 Includes & Defines"
  2.            Machine   68020
  3.            Incdir    "!Includes:"
  4.            Include   "StdLibInc.i"
  5.            Include   "StdHardInc.i"
  6.  
  7.            Include   "Loader.i"
  8.            Include   "Support.i"
  9.            Include   "Demo.i"
  10.  
  11.            Incdir    "!Includes:os3.0/"
  12.            Include   "exec/memory.i"
  13.  
  14.            ;------------------
  15.  
  16.            xdef      MiniWall_Init
  17.            xdef      MiniWall_Show
  18.            xdef      MiniWall_Counter
  19.            xdef      MiniWall_Main
  20.            xdef      MiniWall_Remove
  21.  
  22. ;precalc stuff
  23. ;-------------
  24. UPP                Equ       128
  25. LOW                Equ       32
  26. DIFF               Equ       UPP-LOW
  27.  
  28. MUSIC              Equ       0
  29. ;;;
  30.  
  31. ***************************************
  32. *       Exempel/TestProgram...        *
  33. ***************************************
  34.  
  35.            Section   code,CODE
  36.  
  37.            IFND      noexample
  38. ;;; "                 Example"
  39. Start:             Jsr       _InitDemo
  40.            Tst.l     d0
  41.            Bne       Exit2
  42.  
  43. PlayMusic:
  44.            IFNE      MUSIC
  45.            Lea       Module,a0       ;Module
  46.            Sub.l     a1,a1           ;No separate samples
  47.            Lea       Samples,a2      ;Sample buffer
  48.            Jsr       _PlayMusic
  49.            Tst.l     d0
  50.            Bne       Exit
  51.            ENDC
  52.  
  53.            Bsr       MiniWall_Init
  54.            Tst.l     d0
  55.            Bne       StopMusic
  56.  
  57.            Bsr       MiniWall_Show
  58.  
  59. Main:              Bsr       _Sync
  60.            Bsr       MiniWall_Counter
  61.            Bsr       MiniWall_Main
  62.  
  63.            Btst      #6,$bfe001
  64.            Bne       Main
  65. .waitlop           Btst      #6,$bfe001
  66.            Beq       .waitlop
  67.  
  68.            Bsr       MiniWall_Remove
  69.  
  70. StopMusic:
  71.            IFNE      MUSIC
  72.            Bsr       _StopMusic
  73.            ENDC
  74.  
  75. Exit:              Bsr       _UninitDemo
  76. Exit2:             Moveq     #0,d0
  77.            Rts
  78. ;;;
  79.            ENDC
  80.  
  81.  
  82. ***************************************
  83. *   MiniWall-Subrutiner nedanför....  *
  84. ***************************************
  85.  
  86. MiniWall_Init:
  87. ;;; "                 Allocate and init copperlist"
  88. AllocCopper:       Move.l    #32*1024,d0                   ;Should be enough
  89.                                ;for copper list.
  90.            Move.l    #PowerWall_ID,d1
  91.            Bsr       _AllocChip
  92.            Move.l    d0,CopperPtr
  93.            Beq       InitError
  94.  
  95. InitCopper:        Move.l    d0,a0
  96.  
  97.            ;Basic Stuff...
  98.            ;--------------
  99.            Move.l    #$008e2c81,(a0)+    ; DIWSTRT
  100.            Move.l    #$00902cc1,(a0)+    ; DIWSTOP
  101.            Move.l    #$00920038,(a0)+    ; DDFSTRT
  102.            Move.l    #$009400d0,(a0)+    ; DDFSTOP
  103.            Move.l    #$0100c201,(a0)+    ; BPLCON0
  104.            Move.l    #$01020000,(a0)+    ; BPLCON1
  105.            Move.l    #$01040000,(a0)+    ; BPLCON2
  106.            Move.l    #$01060020,(a0)+    ; BPLCON3 ($0020 = copborder)
  107.            Move.l    #$01fc0003,(a0)+    ; FETCHMODE
  108.  
  109.            Move.w    #$0108,(a0)+         ;Modulo
  110.            Move.w    #-88,(a0)+
  111.            Move.w    #$010a,(a0)+         ;Modulo
  112.            Move.w    #-88,(a0)+
  113.  
  114.            ;Sprite pointers
  115.            ;---------------
  116.            Move.l    a0,SprPtr
  117.            Move.l    #$01200000,(a0)+     ; SPRxPT
  118.            Move.l    #$01220000,(a0)+     ; SPRxPT
  119.            Move.l    #$01240000,(a0)+     ; SPRxPT
  120.            Move.l    #$01260000,(a0)+     ; SPRxPT
  121.            Move.l    #$01280000,(a0)+     ; SPRxPT
  122.            Move.l    #$012a0000,(a0)+     ; SPRxPT
  123.            Move.l    #$012c0000,(a0)+     ; SPRxPT
  124.            Move.l    #$012e0000,(a0)+     ; SPRxPT
  125.            Move.l    #$01300000,(a0)+     ; SPRxPT
  126.            Move.l    #$01320000,(a0)+     ; SPRxPT
  127.            Move.l    #$01340000,(a0)+     ; SPRxPT
  128.            Move.l    #$01360000,(a0)+     ; SPRxPT
  129.            Move.l    #$01380000,(a0)+     ; SPRxPT
  130.            Move.l    #$013a0000,(a0)+     ; SPRxPT
  131.            Move.l    #$013c0000,(a0)+     ; SPRxPT
  132.            Move.l    #$013e0000,(a0)+     ; SPRxPT
  133.  
  134.            Move.l    #$2a01fffe,(a0)+     ;Wait line $2A
  135.  
  136.            ;Bitplane pointers
  137.            ;-----------------
  138.            Move.l    a0,BplPtr0
  139.            Move.l    #$00e00000,(a0)+     ; BPLxPTH
  140.            Move.l    #$00e20000,(a0)+     ; BPLxPTL
  141.            Move.l    #$00e40000,(a0)+     ; BPLxPTH
  142.            Move.l    #$00e60000,(a0)+     ; BPLxPTL
  143.            Move.l    #$00e80000,(a0)+     ; BPLxPTH
  144.            Move.l    #$00ea0000,(a0)+     ; BPLxPTL
  145.            Move.l    #$00ec0000,(a0)+     ; BPLxPTH
  146.            Move.l    #$00ee0000,(a0)+     ; BPLxPTL
  147.  
  148.            ;Copperlist for every line (1)
  149.            ;-----------------------------
  150. Lines1:            Move.l    a0,BplPtr
  151.            Moveq     #$2b,d0
  152.            Move.w    #213-1,d1
  153. .lop1
  154.            Move.l    d0,d2
  155.            Lsl.l     #8,d2
  156.            Addq.l    #1,d2
  157.            Swap      d2
  158.            Move.w    #$fffe,d2
  159.            Move.l    d2,(a0)+
  160.  
  161.            Move.w    #$0108,(a0)+         ;Modulo
  162.            Move.w    #-88,(a0)+
  163.            Move.w    #$010a,(a0)+         ;Modulo
  164.            Move.w    #-88,(a0)+
  165.  
  166.            Move.w    #16-1,d2
  167.            Move.w    #$180,d3
  168.  
  169. .lop2              Move.w    d3,(a0)+
  170.            Move.w    #0,(a0)+
  171.            Addq.w    #2,d3
  172.            Dbra      d2,.lop2
  173.  
  174.            Addq.l    #1,d0
  175.            Dbra      d1,.lop1
  176.  
  177.            Move.l    #$ffdffffe,(a0)+     ;Copper wraps
  178.  
  179.            ;Copperlist for every line (2)
  180.            ;-----------------------------
  181. Lines2:            Move.l    a0,BplPtr2
  182.            Moveq     #$00,d0
  183.            Move.w    #44-1,d1
  184. .lop1
  185.            Move.l    d0,d2
  186.            Lsl.l     #8,d2
  187.            Addq.l    #1,d2
  188.            Swap      d2
  189.            Move.w    #$fffe,d2
  190.            Move.l    d2,(a0)+
  191.  
  192.            Move.w    #$0108,(a0)+         ;Modulo
  193.            Move.w    #-88,(a0)+
  194.            Move.w    #$010a,(a0)+         ;Modulo
  195.            Move.w    #-88,(a0)+
  196.  
  197.            Move.w    #16-1,d2
  198.            Move.w    #$180,d3
  199.  
  200. .lop2              Move.w    d3,(a0)+
  201.            Move.w    #0,(a0)+
  202.            Addq.w    #2,d3
  203.            Dbra      d2,.lop2
  204.  
  205.            Addq.l    #1,d0
  206.            Dbra      d1,.lop1
  207.  
  208.            Move.l    #$fffffffe,(a0)+
  209. ;;;
  210. ;;; "                 Allocate Basepicture memory"
  211. AllocBasePic:      Move.l    #80*256*4,d0
  212.  
  213.            Move.l    #PowerWall_ID,d1
  214.            Bsr       _AllocChip
  215.            Move.l    d0,BasePicPtr
  216.            Beq       InitError
  217. ;;;
  218. ;;; "                 Init Screen (Ptrs & Copperlists)"
  219. InitScreen:        Move.l    BplPtr0,a0
  220.            Move.l    BasePicPtr,d1
  221.            Moveq     #3,d2
  222.            Move.l    #10240*2,d0
  223.            Bsr       _SetPtrs
  224.  
  225.            Lea       ObeyBpl,a0
  226.            Move.l    #ObeyPic,d1
  227.            Moveq     #0,d2
  228.            Move.l    #10240,d0
  229.            Bsr       _SetPtrs
  230.  
  231.            Move.l    SprPtr,a0
  232.            Move.l    #SpriteDummy,d1
  233.            Moveq     #7,d2
  234.            Moveq     #0,d0
  235.            Bsr       _SetPtrs
  236. ;;;
  237. ;;; "                 PreCalc"
  238.            Move.w    #255,Counter
  239. PreMain:
  240. PreCalc:           Move.l    #UPP*256,d5
  241.            Move.w    Counter,d1
  242.            Muls.w    #DIFF,d1
  243.            Sub.l     d1,d5
  244.  
  245.            ;-----------------------
  246.  
  247.            Lea       .table,a2
  248.            Lea       PreCalcTable,a1
  249.            Move.l    BasePicPtr,a4
  250.            Move.l    #639,d0
  251.            Moveq     #0,d7
  252.            Move.l    #320,d6
  253.  
  254. .lop               Move.l    d0,d1
  255.            Sub.l     d6,d1
  256.            Asl.l     #8,d1
  257.            Asl.l     #8,d1
  258.            Divs.l    d5,d1
  259.            Asr.l     #4,d1
  260.            Addx.l    d7,d1
  261.            Add.l     d6,d1
  262.  
  263.            Divu.w    #30,d1
  264.            Swap      d1
  265.  
  266.            ;----- Sätt pixel ------
  267.  
  268.            Move.l    a4,a0
  269.            Move.w    #255+1,d3
  270.            Sub.w     Counter,d3
  271.            Move.w    d3,d4
  272.            Lsl.w     #6,d3
  273.            Lsl.w     #4,d4
  274.            Add.w     d4,d3
  275.  
  276.            Move.l    d0,d4
  277.            Lsr.l     #3,d4
  278.            Sub.l     d4,d3
  279.            Subq.l    #1,d3
  280.            Add.l     d3,a0
  281.  
  282.            Move.w    (a1,d1.w*2),d2
  283.  
  284.            ;-----------------------
  285.            Moveq     #1,d3
  286.            Move.l    d0,d4
  287.            Rol.b     d4,d3
  288.  
  289.            Move.l    #10240*2,d4
  290.  
  291.            Move.l    (a2,d2.w*4),a3
  292.            Jmp       (a3)
  293.  
  294. .table             Dc.l      .0,.1,.2,.3,.4,.5,.6,.7,.8,.9
  295.            Dc.l      .10,.11,.12,.13,.14,.15
  296.  
  297. .12:               Add.l     d4,a0
  298.            Or.b      d3,(a0,d4)
  299.            Or.b      d3,(a0,d4*2)
  300.            Bra       .done
  301.  
  302. .13:               Or.b      d3,(a0)
  303.            Or.b      d3,(a0,d4*2)
  304.            Add.l     d4,a0
  305.            Or.b      d3,(a0,d4*2)
  306.            Bra       .done
  307.  
  308. .10:               Add.l     d4,a0
  309.            Or.b      d3,(a0)
  310.            Or.b      d3,(a0,d4*2)
  311.            Bra       .done
  312.  
  313. .5:                Or.b      d3,(a0)
  314. .4:                Or.b      d3,(a0,d4*2)
  315.            Bra       .done
  316.  
  317. .11:               Or.b      d3,(a0,d4)
  318. .9:                Or.b      d3,(a0)
  319. .8:                Add.l     d4,a0
  320.            Or.b      d3,(a0,d4*2)
  321.            Bra       .done
  322.  
  323. .14:               Add.l     d4,a0
  324.            Or.b      d3,(a0)
  325. .6:                Add.l     d4,a0
  326.            Or.b      d3,(a0)
  327. .2:                Or.b      d3,(a0,d4)
  328.            Bra       .done
  329.  
  330. .15:               Or.b      d3,(a0)
  331.            Add.l     d4,a0
  332. .7:                Or.b      d3,(a0)
  333.            Add.l     d4,a0
  334. .3:                Or.b      d3,(a0,d4)
  335. .1:                Or.b      d3,(a0)
  336. .0:
  337. .done
  338.            Dbra      d0,.lop
  339.  
  340.            Subq.w    #1,Counter
  341.            Bge       PreMain
  342.  
  343. ;;;
  344. ;;; "                 Rts"
  345.            Moveq     #0,d0
  346.            Rts
  347. InitError:
  348.            Move.l    #PowerWall_ID,d0
  349.            Bsr       _FreeMany
  350.            Moveq     #1,d0
  351.            Rts
  352. ;;;
  353.  
  354. MiniWall_Show:     Move.l    CopperPtr,a0
  355.            Bsr       _InstallCopper
  356.            Rts
  357.  
  358. MiniWall_Counter:
  359. ;;; "                 Counters"
  360. SyncIt:
  361.            Lea       Custom,a5
  362.  
  363.            Lea       Table1,a0
  364.            Move.l    a0,TablePtr1
  365.            Lea       Table2,a0
  366.            Move.l    a0,TablePtr2
  367.            Lea       Table3,a0
  368.            Move.l    a0,TablePtr3
  369.            Lea       Table4,a0
  370.            Move.l    a0,TablePtr4
  371.  
  372.            Move.w    E8,d0
  373.            Move.w    P61_E8,d1
  374.            Move.w    d1,E8
  375.            Cmp.w     d1,d0
  376.            Beq       .skip
  377.  
  378.            ;Move.l    #4,Event
  379.  
  380. .skip              Tst.l     Event
  381.            Beq       .ok
  382.            Subq.l    #1,Event
  383. .ok
  384.  
  385.            Add.l     #4,Co
  386.            And.l     #1023,Co
  387.  
  388.            Add.l     #5,Co2
  389.            And.l     #1023,Co2
  390.  
  391.            Add.l     #3,Co3
  392.            And.l     #1023,Co3
  393. ;;;
  394.            Rts
  395.  
  396. MiniWall_Main:
  397. ;;; "                 Events"
  398.            Cmp.l     #2,Event
  399.            Blt       .noevent1
  400.            Sub.l     #100,Co
  401.            Lea       Copper2,a0
  402.            Bsr       _InstallCopper
  403.            Move.w    #$fff,$dff180
  404.            Move.w    #$ccc,$dff182
  405.            Bra       .noevent3
  406.  
  407. .noevent1          Cmp.l     #1,Event
  408.            Bne       .noevent2
  409.            Move.w    #$000,$dff180
  410.            Move.w    #$000,$dff182
  411.            Bra       .noevent3
  412.  
  413. .noevent2          Move.l    CopperPtr,a0
  414.            Bsr       _InstallCopper
  415. .noevent3
  416. ;;;
  417. ;;; "                 Ptr 1"
  418.            Clr.l     Vert
  419.            Lea       _Sin1024,a0
  420.            Move.l    BplPtr,a3
  421.            Move.l    TablePtr1,a2
  422.            Move.l    Co,d0
  423.            Move.l    #212,d1
  424.  
  425.            ;--------------------
  426.  
  427.            Move.l    d1,d3
  428.            Sub.l     d0,d3
  429.            Add.l     Co2,d3
  430.            Asl.l     #1,d3
  431.            And.l     #1023,d3
  432.            Move.w    (a0,d3.l*2),d2
  433.            Ext.l     d2
  434.            Add.l     d0,d2
  435.            Add.l     Co2,d2
  436.            ;Add.l     d1,d2
  437.            Add.l     d1,d2
  438.            Add.l     Co3,d2
  439.            And.l     #1023,d2
  440.  
  441.            Move.w    (a0,d2.l*2),d7
  442.            Asr.w     #1,d7
  443.            Add.w     #128,d7
  444.            Move.w    d7,Pos
  445.            Muls.w    #80,d7
  446.  
  447.            Move.l    BplPtr0,a0
  448.            Move.l    BasePicPtr,d1
  449.            Add.l     d7,d1
  450.            Moveq     #3,d2
  451.            Move.l    #10240*2,d0
  452.            Bsr       _SetPtrs
  453.  
  454.            Lea       _Sin1024,a0
  455.            Move.l    BplPtr,a3
  456.            Lea       Table1,a2
  457.            Move.l    Co,d0
  458.            Move.l    #212,d1
  459.  
  460.            ;----------------
  461. PtrLoop:
  462.            Move.l    d1,d3
  463.            Sub.l     d0,d3
  464.            Add.l     Co2,d3
  465.            Asl.l     #1,d3
  466.            And.l     #1023,d3
  467.            Move.w    (a0,d3.l*2),d2
  468.            Ext.l     d2
  469.            Add.l     d0,d2
  470.            Add.l     Co2,d2
  471.            ;Add.l     d1,d2
  472.            Add.l     d1,d2
  473.            Add.l     Co3,d2
  474.            And.l     #1023,d2
  475.  
  476.            Move.w    (a0,d2.l*2),d7
  477.            Asr.w     #1,d7
  478.            Add.w     #128,d7
  479.            Move.w    d7,d5
  480.            Move.w    #255+100,d2
  481.            Sub.w     d7,d2
  482.            Lsr.w     #4,d2
  483.            Add.w     d2,Vert
  484.            And.w     #255,Vert
  485.  
  486.            ;------------------------
  487.  
  488.            Move.w    Pos,d2
  489.            Move.w    d7,Pos              ;Store this position
  490.            Sub.w     d2,d7
  491.  
  492.            Muls.w    #80,d7
  493.            Sub.l     #88,d7
  494.  
  495.            Move.w    d7,6(a3)            ;Change modulos
  496.            Move.w    d7,10(a3)           ;Change modulos
  497.  
  498.            ;------------------
  499.  
  500.            Lsr.w     #4,d5
  501.            Lsl.w     #1,d5
  502.  
  503.            Move.w    Vert,d2
  504.            Move.l    TablePtr1,a2
  505.            Cmp.w     #192,d2
  506.            Bgt       .skip
  507.            Move.l    TablePtr2,a2
  508.            Cmp.w     #128,d2
  509.            Bgt       .skip
  510.            Move.l    TablePtr3,a2
  511.            Cmp.w     #64,d2
  512.            Bgt       .skip
  513.            Move.l    TablePtr4,a2
  514. .skip
  515.            Move.w    32*0(a2,d5.w),14(a3)
  516.            Move.w    32*1(a2,d5.w),18(a3)
  517.            Move.w    32*2(a2,d5.w),22(a3)
  518.            Move.w    32*3(a2,d5.w),26(a3)
  519.            Move.w    32*4(a2,d5.w),30(a3)
  520.            Move.w    32*5(a2,d5.w),34(a3)
  521.            Move.w    32*6(a2,d5.w),38(a3)
  522.            Move.w    32*7(a2,d5.w),42(a3)
  523.  
  524.            Move.w    32*8(a2,d5.w),46(a3)
  525.            Move.w    32*9(a2,d5.w),50(a3)
  526.            Move.w    32*10(a2,d5.w),54(a3)
  527.            Move.w    32*11(a2,d5.w),58(a3)
  528.            Move.w    32*12(a2,d5.w),62(a3)
  529.            Move.w    32*13(a2,d5.w),66(a3)
  530.            Move.w    32*14(a2,d5.w),70(a3)
  531.            Move.w    32*15(a2,d5.w),74(a3)
  532.  
  533.            Lea       19*4(a3),a3
  534.  
  535.            Dbra      d1,PtrLoop
  536. ;;;
  537. ;;; "                 Ptr 2"
  538.            Move.l    BplPtr2,a3
  539.            Move.l    #43,d1
  540. PtrLoop2:
  541.            Move.l    d1,d3
  542.            Sub.l     d0,d3
  543.            Add.l     Co2,d3
  544.            Sub.l     #44,d3
  545.            Asl.l     #1,d3
  546.            And.l     #1023,d3
  547.            Move.w    (a0,d3.l*2),d2
  548.            Ext.l     d2
  549.            Add.l     d0,d2
  550.            Add.l     Co2,d2
  551.            Add.l     d1,d2
  552.            ;Add.l     d1,d2
  553.            Sub.l     #44*1,d2
  554.            Add.l     Co3,d2
  555.            And.l     #1023,d2
  556.  
  557.            Move.w    (a0,d2.l*2),d7
  558.            Asr.w     #1,d7
  559.            Add.w     #128,d7
  560.            Move.w    d7,d5
  561.            Move.w    #255+100,d2
  562.            Sub.w     d7,d2
  563.            Lsr.w     #4,d2
  564.            Add.w     d2,Vert
  565.            And.w     #255,Vert
  566.  
  567.            ;------------------------
  568.  
  569.            Move.w    Pos,d2
  570.            Move.w    d7,Pos              ;Store this position
  571.            Sub.w     d2,d7
  572.  
  573.            Muls.w    #80,d7
  574.            Sub.l     #88,d7
  575.  
  576.            Move.w    d7,6(a3)            ;Change modulos
  577.            Move.w    d7,10(a3)           ;Change modulos
  578.  
  579.            ;------------------
  580.  
  581.            Lsr.w     #4,d5
  582.            Lsl.w     #1,d5
  583.  
  584.            Move.w    Vert,d2
  585.            Move.l    TablePtr1,a2
  586.            Cmp.w     #192,d2
  587.            Bgt       .skip
  588.            Move.l    TablePtr2,a2
  589.            Cmp.w     #128,d2
  590.            Bgt       .skip
  591.            Move.l    TablePtr3,a2
  592.            Cmp.w     #64,d2
  593.            Bgt       .skip
  594.            Move.l    TablePtr4,a2
  595. .skip
  596.            Move.w    32*0(a2,d5.w),14(a3)
  597.            Move.w    32*1(a2,d5.w),18(a3)
  598.            Move.w    32*2(a2,d5.w),22(a3)
  599.            Move.w    32*3(a2,d5.w),26(a3)
  600.            Move.w    32*4(a2,d5.w),30(a3)
  601.            Move.w    32*5(a2,d5.w),34(a3)
  602.            Move.w    32*6(a2,d5.w),38(a3)
  603.            Move.w    32*7(a2,d5.w),42(a3)
  604.  
  605.            Move.w    32*8(a2,d5.w),46(a3)
  606.            Move.w    32*9(a2,d5.w),50(a3)
  607.            Move.w    32*10(a2,d5.w),54(a3)
  608.            Move.w    32*11(a2,d5.w),58(a3)
  609.            Move.w    32*12(a2,d5.w),62(a3)
  610.            Move.w    32*13(a2,d5.w),66(a3)
  611.            Move.w    32*14(a2,d5.w),70(a3)
  612.            Move.w    32*15(a2,d5.w),74(a3)
  613.  
  614.            Lea       19*4(a3),a3
  615.  
  616.            Dbra      d1,PtrLoop2
  617. ;;;
  618.            Rts
  619.  
  620. MiniWall_Remove:
  621. ;;; "                 Free Memory"
  622. FreeMemory:        Move.l    #PowerWall_ID,d0
  623.            Bsr       _FreeMany
  624. ;;;
  625.            Rts
  626.  
  627.  
  628. ***************************************
  629. *          MiniWall data...          *
  630. ***************************************
  631.  
  632. ;;; "Variables & Data"
  633. E8:                Dc.l      0
  634.  
  635. Co:                Dc.l      0
  636. Co2:               Dc.l      0
  637. Co3:               Dc.l      0
  638. Vert:              Dc.l      0
  639.  
  640. BasePicPtr:        Dc.l      0
  641. CopperPtr:         Dc.l      0
  642. SprPtr:            Dc.l      0
  643. BplPtr0:           Dc.l      0
  644. BplPtr:            Dc.l      0
  645. BplPtr2:           Dc.l      0
  646.  
  647. TablePtr1:         Dc.l      0
  648. TablePtr2:         Dc.l      0
  649. TablePtr3:         Dc.l      0
  650. TablePtr4:         Dc.l      0
  651.  
  652. Event:             Dc.l      0
  653. Counter:           Dc.w      0
  654. Pos:               Dc.w      0
  655.  
  656. PreCalcTable:      Dc.w      0,1,2,3,4,5,6,7,8,9,10,11,12,13,14
  657.            Dc.w      15,14,13,12,11,10,9,8,7,6,5,4,3,2,1
  658. ;;;
  659. ;;; "Table 1-4"
  660. Table1:            Dc.w      $00f,$11f,$22f,$33f
  661.            Dc.w      $44f,$55f,$66f,$77f
  662.            Dc.w      $88f,$99f,$aaf,$bbf
  663.            Dc.w      $ccf,$ddf,$eef,$fff
  664.  
  665.            Dc.w      $000,$100,$211,$322
  666.            Dc.w      $433,$544,$655,$766
  667.            Dc.w      $877,$988,$a99,$baa
  668.            Dc.w      $cbb,$dcc,$edd,$fee
  669.  
  670.            Dc.w      $000,$100,$200,$311
  671.            Dc.w      $422,$533,$644,$755
  672.            Dc.w      $866,$977,$a88,$b99
  673.            Dc.w      $caa,$dbb,$ecc,$fdd
  674.  
  675.            Dc.w      $000,$100,$200,$300
  676.            Dc.w      $411,$522,$633,$744
  677.            Dc.w      $855,$966,$a77,$b88
  678.            Dc.w      $c99,$daa,$ebb,$fcc
  679.  
  680.            Dc.w      $000,$100,$200,$300
  681.            Dc.w      $400,$511,$622,$733
  682.            Dc.w      $844,$955,$a66,$b77
  683.            Dc.w      $c88,$d99,$eaa,$fbb
  684.  
  685.            Dc.w      $000,$100,$200,$300
  686.            Dc.w      $400,$500,$611,$722
  687.            Dc.w      $833,$944,$a55,$b66
  688.            Dc.w      $c77,$d88,$e99,$faa
  689.  
  690.            Dc.w      $000,$100,$200,$300
  691.            Dc.w      $400,$500,$600,$711
  692.            Dc.w      $822,$933,$a44,$b55
  693.            Dc.w      $c66,$d77,$e88,$f99
  694.  
  695.            Dc.w      $000,$100,$200,$300
  696.            Dc.w      $400,$500,$600,$700
  697.            Dc.w      $811,$922,$a33,$b44
  698.            Dc.w      $c55,$d66,$e77,$f88
  699.  
  700.  
  701.            Dc.w      $000,$100,$200,$300
  702.            Dc.w      $400,$500,$600,$700
  703.            Dc.w      $800,$911,$a22,$b33
  704.            Dc.w      $c44,$d55,$e66,$f77
  705.  
  706.            Dc.w      $000,$100,$200,$300
  707.            Dc.w      $400,$500,$600,$700
  708.            Dc.w      $800,$900,$a11,$b22
  709.            Dc.w      $c33,$d44,$e55,$f66
  710.  
  711.            Dc.w      $000,$100,$200,$300
  712.            Dc.w      $400,$500,$600,$700
  713.            Dc.w      $800,$900,$a00,$b11
  714.            Dc.w      $c22,$d33,$e44,$f55
  715.  
  716.            Dc.w      $000,$100,$200,$300
  717.            Dc.w      $400,$500,$600,$700
  718.            Dc.w      $800,$900,$a00,$b00
  719.            Dc.w      $c11,$d22,$e33,$f44
  720.  
  721.            Dc.w      $000,$100,$200,$300
  722.            Dc.w      $400,$500,$600,$700
  723.            Dc.w      $800,$900,$a00,$b00
  724.            Dc.w      $c00,$d11,$e22,$f33
  725.  
  726.            Dc.w      $000,$100,$200,$300
  727.            Dc.w      $400,$500,$600,$700
  728.            Dc.w      $800,$900,$a00,$b00
  729.            Dc.w      $c00,$d00,$e11,$f22
  730.  
  731.            Dc.w      $000,$100,$200,$300
  732.            Dc.w      $400,$500,$600,$700
  733.            Dc.w      $800,$900,$a00,$b00
  734.            Dc.w      $c00,$d00,$e00,$f11
  735.  
  736.            Dc.w      $006,$106,$205,$305
  737.            Dc.w      $404,$504,$603,$703
  738.            Dc.w      $802,$902,$a01,$b01
  739.            Dc.w      $c00,$d00,$e00,$f00
  740.  
  741.  
  742. Table2:            Dc.w      $00f,$10f,$20f,$30f
  743.            Dc.w      $40f,$50f,$60f,$70f
  744.            Dc.w      $80f,$91f,$a2f,$b3f
  745.            Dc.w      $c4f,$d5f,$e6f,$f7f
  746.  
  747.            Dc.w      $000,$100,$200,$300
  748.            Dc.w      $400,$500,$600,$700
  749.            Dc.w      $800,$900,$a11,$b22
  750.            Dc.w      $c33,$d44,$e55,$f66
  751.  
  752.            Dc.w      $000,$100,$200,$300
  753.            Dc.w      $400,$500,$600,$700
  754.            Dc.w      $800,$900,$a00,$b11
  755.            Dc.w      $c22,$d33,$e44,$f55
  756.  
  757.            Dc.w      $000,$100,$200,$300
  758.            Dc.w      $400,$500,$600,$700
  759.            Dc.w      $800,$900,$a00,$b00
  760.            Dc.w      $c11,$d22,$e33,$f44
  761.  
  762.            Dc.w      $000,$100,$200,$300
  763.            Dc.w      $400,$500,$600,$700
  764.            Dc.w      $800,$900,$a00,$b00
  765.            Dc.w      $c00,$d11,$e22,$f33
  766.  
  767.            Dc.w      $000,$100,$200,$300
  768.            Dc.w      $400,$500,$600,$700
  769.            Dc.w      $800,$900,$a00,$b00
  770.            Dc.w      $c00,$d00,$e11,$f22
  771.  
  772.            Dc.w      $000,$100,$200,$300
  773.            Dc.w      $400,$500,$600,$700
  774.            Dc.w      $800,$900,$a00,$b00
  775.            Dc.w      $c00,$d00,$e00,$f11
  776.  
  777.            Dc.w      $006,$106,$205,$305
  778.            Dc.w      $404,$504,$603,$703
  779.            Dc.w      $802,$902,$a01,$b01
  780.            Dc.w      $c00,$d00,$e00,$f00
  781.  
  782.            Dc.w      $00f,$11f,$22f,$33f
  783.            Dc.w      $44f,$55f,$66f,$77f
  784.            Dc.w      $88f,$99f,$aaf,$bbf
  785.            Dc.w      $ccf,$ddf,$eef,$fff
  786.  
  787.            Dc.w      $000,$100,$211,$322
  788.            Dc.w      $433,$544,$655,$766
  789.            Dc.w      $877,$988,$a99,$baa
  790.            Dc.w      $cbb,$dcc,$edd,$fee
  791.  
  792.            Dc.w      $000,$100,$200,$311
  793.            Dc.w      $422,$533,$644,$755
  794.            Dc.w      $866,$977,$a88,$b99
  795.            Dc.w      $caa,$dbb,$ecc,$fdd
  796.  
  797.            Dc.w      $000,$100,$200,$300
  798.            Dc.w      $411,$522,$633,$744
  799.            Dc.w      $855,$966,$a77,$b88
  800.            Dc.w      $c99,$daa,$ebb,$fcc
  801.  
  802.            Dc.w      $000,$100,$200,$300
  803.            Dc.w      $400,$511,$622,$733
  804.            Dc.w      $844,$955,$a66,$b77
  805.            Dc.w      $c88,$d99,$eaa,$fbb
  806.  
  807.            Dc.w      $000,$100,$200,$300
  808.            Dc.w      $400,$500,$611,$722
  809.            Dc.w      $833,$944,$a55,$b66
  810.            Dc.w      $c77,$d88,$e99,$faa
  811.  
  812.            Dc.w      $000,$100,$200,$300
  813.            Dc.w      $400,$500,$600,$711
  814.            Dc.w      $822,$933,$a44,$b55
  815.            Dc.w      $c66,$d77,$e88,$f99
  816.  
  817.            Dc.w      $000,$100,$200,$300
  818.            Dc.w      $400,$500,$600,$700
  819.            Dc.w      $811,$922,$a33,$b44
  820.            Dc.w      $c55,$d66,$e77,$f88
  821.  
  822.  
  823. Table3:            Dc.w      $00f,$10f,$20f,$30f
  824.            Dc.w      $40f,$50f,$61f,$72f
  825.            Dc.w      $83f,$94f,$a5f,$b6f
  826.            Dc.w      $c7f,$d8f,$e9f,$faf
  827.  
  828.            Dc.w      $000,$100,$200,$300
  829.            Dc.w      $400,$500,$600,$711
  830.            Dc.w      $822,$933,$a44,$b55
  831.            Dc.w      $c66,$d77,$e88,$f99
  832.  
  833.            Dc.w      $000,$100,$200,$300
  834.            Dc.w      $400,$500,$600,$700
  835.            Dc.w      $811,$922,$a33,$b44
  836.            Dc.w      $c55,$d66,$e77,$f88
  837.  
  838.            Dc.w      $000,$100,$200,$300
  839.            Dc.w      $400,$500,$600,$700
  840.            Dc.w      $800,$911,$a22,$b33
  841.            Dc.w      $c44,$d55,$e66,$f77
  842.  
  843.            Dc.w      $000,$100,$200,$300
  844.            Dc.w      $400,$500,$600,$700
  845.            Dc.w      $800,$900,$a11,$b22
  846.            Dc.w      $c33,$d44,$e55,$f66
  847.  
  848.            Dc.w      $000,$100,$200,$300
  849.            Dc.w      $400,$500,$600,$700
  850.            Dc.w      $800,$900,$a00,$b11
  851.            Dc.w      $c22,$d33,$e44,$f55
  852.  
  853.            Dc.w      $000,$100,$200,$300
  854.            Dc.w      $400,$500,$600,$700
  855.            Dc.w      $800,$900,$a00,$b00
  856.            Dc.w      $c11,$d22,$e33,$f44
  857.  
  858.            Dc.w      $000,$100,$200,$300
  859.            Dc.w      $400,$500,$600,$700
  860.            Dc.w      $800,$900,$a00,$b00
  861.            Dc.w      $c00,$d11,$e22,$f33
  862.  
  863.            Dc.w      $000,$100,$200,$300
  864.            Dc.w      $400,$500,$600,$700
  865.            Dc.w      $800,$900,$a00,$b00
  866.            Dc.w      $c00,$d00,$e11,$f22
  867.  
  868.            Dc.w      $000,$100,$200,$300
  869.            Dc.w      $400,$500,$600,$700
  870.            Dc.w      $800,$900,$a00,$b00
  871.            Dc.w      $c00,$d00,$e00,$f11
  872.  
  873.            Dc.w      $006,$106,$205,$305
  874.            Dc.w      $404,$504,$603,$703
  875.            Dc.w      $802,$902,$a01,$b01
  876.            Dc.w      $c00,$d00,$e00,$f00
  877.  
  878.            Dc.w      $00f,$11f,$22f,$33f
  879.            Dc.w      $44f,$55f,$66f,$77f
  880.            Dc.w      $88f,$99f,$aaf,$bbf
  881.            Dc.w      $ccf,$ddf,$eef,$fff
  882.  
  883.            Dc.w      $000,$100,$211,$322
  884.            Dc.w      $433,$544,$655,$766
  885.            Dc.w      $877,$988,$a99,$baa
  886.            Dc.w      $cbb,$dcc,$edd,$fee
  887.  
  888.            Dc.w      $000,$100,$200,$311
  889.            Dc.w      $422,$533,$644,$755
  890.            Dc.w      $866,$977,$a88,$b99
  891.            Dc.w      $caa,$dbb,$ecc,$fdd
  892.  
  893.            Dc.w      $000,$100,$200,$300
  894.            Dc.w      $411,$522,$633,$744
  895.            Dc.w      $855,$966,$a77,$b88
  896.            Dc.w      $c99,$daa,$ebb,$fcc
  897.  
  898.            Dc.w      $000,$100,$200,$300
  899.            Dc.w      $400,$511,$622,$733
  900.            Dc.w      $844,$955,$a66,$b77
  901.            Dc.w      $c88,$d99,$eaa,$fbb
  902.  
  903.  
  904. Table4:            Dc.w      $00f,$10f,$20f,$30f
  905.            Dc.w      $40f,$50f,$60f,$70f
  906.            Dc.w      $80f,$90f,$a0f,$b0f
  907.            Dc.w      $c0f,$d1f,$e2f,$f3f
  908.  
  909.            Dc.w      $000,$100,$200,$300
  910.            Dc.w      $400,$500,$600,$700
  911.            Dc.w      $800,$900,$a00,$b00
  912.            Dc.w      $c00,$d00,$e11,$f22
  913.  
  914.            Dc.w      $000,$100,$200,$300
  915.            Dc.w      $400,$500,$600,$700
  916.            Dc.w      $800,$900,$a00,$b00
  917.            Dc.w      $c00,$d00,$e00,$f11
  918.  
  919.            Dc.w      $000,$100,$200,$300
  920.            Dc.w      $400,$500,$611,$722
  921.            Dc.w      $833,$944,$a55,$b66
  922.            Dc.w      $c77,$d88,$e99,$faa
  923.  
  924.            Dc.w      $000,$100,$200,$300
  925.            Dc.w      $400,$500,$600,$711
  926.            Dc.w      $822,$933,$a44,$b55
  927.            Dc.w      $c66,$d77,$e88,$f99
  928.  
  929.            Dc.w      $000,$100,$200,$300
  930.            Dc.w      $400,$500,$600,$700
  931.            Dc.w      $811,$922,$a33,$b44
  932.            Dc.w      $c55,$d66,$e77,$f88
  933.  
  934.            Dc.w      $000,$100,$200,$300
  935.            Dc.w      $400,$500,$600,$700
  936.            Dc.w      $800,$911,$a22,$b33
  937.            Dc.w      $c44,$d55,$e66,$f77
  938.  
  939.            Dc.w      $000,$100,$200,$300
  940.            Dc.w      $400,$500,$600,$700
  941.            Dc.w      $800,$900,$a11,$b22
  942.            Dc.w      $c33,$d44,$e55,$f66
  943.  
  944.            Dc.w      $000,$100,$200,$300
  945.            Dc.w      $400,$500,$600,$700
  946.            Dc.w      $800,$900,$a00,$b11
  947.            Dc.w      $c22,$d33,$e44,$f55
  948.  
  949.            Dc.w      $000,$100,$200,$300
  950.            Dc.w      $400,$500,$600,$700
  951.            Dc.w      $800,$900,$a00,$b00
  952.            Dc.w      $c11,$d22,$e33,$f44
  953.  
  954.            Dc.w      $006,$106,$205,$305
  955.            Dc.w      $404,$504,$603,$703
  956.            Dc.w      $802,$902,$a01,$b01
  957.            Dc.w      $c00,$d00,$e00,$f00
  958.  
  959.            Dc.w      $00f,$11f,$22f,$33f
  960.            Dc.w      $44f,$55f,$66f,$77f
  961.            Dc.w      $88f,$99f,$aaf,$bbf
  962.            Dc.w      $ccf,$ddf,$eef,$fff
  963.  
  964.            Dc.w      $000,$100,$211,$322
  965.            Dc.w      $433,$544,$655,$766
  966.            Dc.w      $877,$988,$a99,$baa
  967.            Dc.w      $cbb,$dcc,$edd,$fee
  968.  
  969.            Dc.w      $000,$100,$200,$311
  970.            Dc.w      $422,$533,$644,$755
  971.            Dc.w      $866,$977,$a88,$b99
  972.            Dc.w      $caa,$dbb,$ecc,$fdd
  973.  
  974.            Dc.w      $000,$100,$200,$300
  975.            Dc.w      $411,$522,$633,$744
  976.            Dc.w      $855,$966,$a77,$b88
  977.            Dc.w      $c99,$daa,$ebb,$fcc
  978.  
  979.            Dc.w      $000,$100,$200,$300
  980.            Dc.w      $400,$511,$622,$733
  981.            Dc.w      $844,$955,$a66,$b77
  982.            Dc.w      $c88,$d99,$eaa,$fbb
  983. ;;;
  984.            Section   chipdata,DATA_C
  985. ;;; "ObeyPic"
  986. ObeyPic:           ;Incbin    "!projects:powerwall/obeypwl.raw"
  987. ;;;
  988. ;;; "Obey Copperlist!"
  989. Copper2:           Dc.w      $008e,$2c81     ; DIWSTRT
  990.            Dc.w      $0090,$2cc1     ; DIWSTOP
  991.            Dc.w      $0092,$0038     ; DDFSTRT
  992.            Dc.w      $0094,$00d0     ; DDFSTOP
  993.            Dc.w      $0100,$1201     ; BPLCON0
  994.            Dc.w      $0102,$0000     ; BPLCON1
  995.            Dc.w      $0104,$0000     ; BPLCON2
  996.            Dc.w      $0106,$0000     ; BPLCON3 ($0020 = copborder)
  997.            Dc.w      $0108,-8        ; BPLMOD1
  998.            Dc.w      $010a,-8        ; BPLMOD2
  999.            Dc.w      $01fc,$0003     ; FETCHMODE
  1000.  
  1001. ObeyBpl:           Dc.w      $00e0,$0000     ; BPL1PTH
  1002.            Dc.w      $00e2,$0000     ; BPL1PTL
  1003.  
  1004.            Dc.w      $ffff,$fffe
  1005. ;;;
  1006. ;;; "Music"
  1007.            IFND      noexample
  1008.            IFNE      MUSIC
  1009. Module:            Incbin    "!projects:Loader/P61.57remixMINI"
  1010.  
  1011.            Section   Samples,bss_c
  1012. Samples:           Ds.b      34762
  1013.            ENDC
  1014.            ENDC
  1015. ;;;
  1016.