home *** CD-ROM | disk | FTP | other *** search
/ Fujiology Archive / fujiology_archive_v1_0.iso / !FALCON / LINEOUT / DELTA.ZIP / DELTASRC.ZIP / DELTA.SRC / PINCH.SO < prev    next >
Text File  |  2003-01-02  |  13KB  |  794 lines

  1. ; Pinchy offsetmap effect! Lame tunnelfuckup by earx. A screen for delta.
  2.  
  3. ;======= OBJECT EQUATES ========
  4.  
  5.             RSRESET
  6. Pinch.offsetTable:    RS.W    320*200
  7. Pinch.FONT:        RS.W    320*200
  8. Pinch.BLOCK_SIZE:    RS.B    0
  9.  
  10. ;======= OBJECT TABLE ========
  11.  
  12. ; Must be first in object!!
  13. Pinch.table:
  14.     DC.L    Pinch.mainLoop
  15.     DC.L    Pinch.init
  16.     DC.L    Pinch.setRes
  17.     DC.L    Pinch.setText1
  18.     DC.L    Pinch.setText2
  19.     DC.L    Pinch.setText3
  20.     DC.L    Pinch.setFadeIn
  21.     DC.L    Pinch.setFadeOut
  22.     DC.L    0
  23.  
  24. ;======= RESOLUTION SETTING ROUTINE ========
  25.  
  26. Pinch.setRes:
  27.     IFEQ    testmode
  28.     move.w    monitormode,d0
  29.     cmpi.w    #vga60,d0
  30.     beq.s    .vga60
  31.     cmpi.w    #vga100,d0
  32.     beq.s    .vga100
  33.     cmpi.w    #rgb50,d0
  34.     beq.s    .rgb50
  35. ; Unknown monitormode..
  36.     rts
  37. .vga60:    bra.l    vga60_16bit_160_200
  38. .vga100:bra.l    vga100_16bit_160_100
  39. .rgb50:    bra.l    rgb50_16bit_320_100
  40.     ENDC
  41.     rts
  42.  
  43. ;======= INIT SUBROUTINE ========
  44.  
  45. ; OUTPUT:
  46. ; d0.l: =0 all clear, <0 error
  47. Pinch.init:
  48.     move.l    #Pinch.BLOCK_SIZE,d0
  49.     bsr.l    Mem.register
  50.  
  51.     lea    Pinch.chromeInstTable,a1
  52.     lea    Pinch.chromePal,a0
  53.     bsr.l    Pal.makeGradientTc
  54.  
  55.     lea    Pinch.chromePal,a2
  56.     lea    Pinch.alphaTable,a0
  57.     bsr    Pinch.calcMixTable
  58.  
  59. .success:
  60.     moveq    #0,d0
  61.     rts
  62. .error:    moveq    #-1,d0
  63.     rts
  64.  
  65. ;======= REALTIME INIT SUBROUTINE ========
  66.  
  67. Pinch.realtimeInit:
  68.     move.l    #rts,vbl_gfx
  69.  
  70.     bsr.l    Mem.getBlock
  71.     move.l    d0,Pinch.baseAdr
  72.  
  73.     move.l    d0,d1
  74.     addi.l    #Pinch.FONT,d1
  75.     move.l    d1,Pinch.fontAdr
  76.  
  77.     lea    Font.degasPic,a1
  78.     movea.l    Pinch.fontAdr,a0
  79.     bsr    Pinch.convertDegas
  80.  
  81.     lea    Pinch.buf1+160*8*2,a0
  82.     lea    Pinch.text1,a4
  83.     bsr    Pinch.paintTextToBuf
  84.  
  85.     lea    Pinch.buf2+160*8*2,a0
  86.     lea    Pinch.text2,a4
  87.     bsr    Pinch.paintTextToBuf
  88.  
  89.     lea    Pinch.buf3,a0
  90.     lea    Pinch.text3,a4
  91.     bsr    Pinch.paintTextToBuf
  92.  
  93.     bsr    Pinch.calcMap
  94.  
  95.     move.l    $04BA.w,Pinch.startTime
  96.     clr.w    Pinch.sceneNum
  97.     clr.l    Pinch.sumTime
  98.     clr.w    Pinch.fadeDir
  99.     clr.w    Pinch.fadePos
  100.     rts
  101.  
  102. ;======= MAINLOOP SUBROUTINE ========
  103.  
  104. Pinch.mainLoop:
  105.     move.w    $0468.w,.old468
  106.     move.w    $04BC.w,Pinch.frameTime
  107.  
  108.     move.l    frmcnt,d0
  109.     sub.l    lastframecount,d0
  110.     bne.s    .end_realtime_init
  111.     bsr    Pinch.realtimeInit
  112. .end_realtime_init:
  113.  
  114.     lea    Pinch.storyTable,a0
  115.     move.w    (a0)+,d7
  116.     move.l    $04BA.w,d0
  117.     sub.l    Pinch.startTime,d0
  118.     move.w    Pinch.sceneNum,d2
  119.     cmp.w    d2,d7
  120.     beq.s    .scene_done
  121.     move.l    (a0,d2.w*8),d3
  122.     movea.l    4(a0,d2.w*8),a0
  123.     sub.l    Pinch.sumTime,d0        ; d0.l=time-point
  124.     cmp.l    d3,d0
  125.     blt.s    .scene_done
  126.     addq.w    #1,Pinch.sceneNum
  127.     add.l    d3,Pinch.sumTime
  128.     jsr    (a0)
  129. .scene_done:
  130.  
  131.     move.w    Pinch.fadeDir,d0
  132.     beq.s    .end_fade
  133.     move.l    $04BA.w,d1
  134.     sub.l    Pinch.fadeStart,d1
  135.     lsr.l    #4,d1
  136.     cmpi.l    #15,d1
  137.     blt.s    .fade_done
  138.     moveq    #15,d1
  139.     clr.w    Pinch.fadeDir
  140. .fade_done:
  141.     muls.w    d0,d1
  142.     tst.w    d0
  143.     bgt.s    .pos_ok
  144.     addi.w    #15,d1
  145. .pos_ok:move.w    d1,Pinch.fadePos
  146. .end_fade:
  147.  
  148.     bsr    Pinch.paintUp
  149.     bsr    Pinch.alphaCraps
  150.     bsr    Pinch.paintDown
  151.  
  152.     IFEQ    testmode
  153.     lea    scr,a0
  154.     move.l    (a0)+,d0
  155.     move.l    (a0)+,d1
  156.     move.l    (a0),-4(a0)
  157.     move.l    d0,(a0)
  158.     move.l    d1,-8(a0)
  159.     move.l    d0,d1
  160.     lsr.w    #8,d0
  161.     move.l    d0,$ffff8200.w
  162.     move.b    d1,$ffff820d.w
  163.     ENDC
  164.  
  165.     move.w    .old468(pc),d0
  166. .wait:    cmp.w    $0468.w,d0
  167.     beq.s    .wait
  168.  
  169.     move.l    frmcnt,d0
  170.     sub.l    lastframecount,d0
  171.     bne.s    .res_done
  172.     bsr    Pinch.setRes
  173. .res_done:
  174.  
  175.     rts
  176.  
  177. .old468:DC.W    0
  178.  
  179. ;======= OBJECT SUBROUTINES ========
  180.  
  181. Pinch.setText1:
  182.     move.l    #(42*160+24)*2,Pinch.textOffset
  183.     move.l    #Pinch.buf1,Pinch.layerAdr
  184.     rts
  185.  
  186. Pinch.setText2:
  187.     move.l    #(42*160+8)*2,Pinch.textOffset
  188.     move.l    #Pinch.buf2,Pinch.layerAdr
  189.     rts
  190.  
  191. Pinch.setText3:
  192.     move.l    #34*160*2,Pinch.textOffset
  193.     move.l    #Pinch.buf3,Pinch.layerAdr
  194.     rts
  195.  
  196. Pinch.setFadeIn:
  197.     move.l    $04BA.w,Pinch.fadeStart
  198.     move.w    #+1,Pinch.fadeDir
  199.     rts
  200.  
  201. Pinch.setFadeOut:
  202.     move.l    $04BA.w,Pinch.fadeStart
  203.     move.w    #-1,Pinch.fadeDir
  204.     rts
  205.  
  206. ; Calculates a highcolor-word lookup table from two truecolor palettes.
  207. ; INPUT:
  208. ; a0: dst highcolor lookuptable
  209. ; a2: truecolor palette (256 entries)
  210. Pinch.calcMixTable:
  211.  
  212. ; 1: saturated part..
  213.     moveq    #16-1,d7
  214.  
  215. .sat_loop:
  216.     moveq    #0,d6
  217.  
  218. .satcolorloop:
  219.     moveq    #0,d3
  220.     moveq    #0,d4
  221.     move.b    (a2)+,d3
  222.     move.b    (a2)+,d4
  223.     move.w    (a2)+,d5
  224.     lsl.w    #8,d3
  225.     lsl.w    #3,d4
  226.     lsr.w    #3,d5
  227.     andi.w    #%1111100000000000,d3
  228.     andi.w    #%0000011111100000,d4
  229.     or.w    d4,d3
  230.     or.w    d5,d3
  231.     move.w    d3,(a0)+
  232. ;    move.w    d3,(a0)+
  233.     addq.b    #1,d6
  234.     bne.s    .satcolorloop
  235.  
  236.     suba.w    #256*4,a2
  237.     dbf    d7,.sat_loop
  238.  
  239. ; 2: darkened part..
  240.     moveq    #16-1,d7
  241.  
  242. .dark_loop:
  243.     moveq    #0,d6
  244.  
  245. .darkcolorloop:
  246.     moveq    #0,d3
  247.     moveq    #0,d4
  248.     move.b    (a2)+,d3
  249.     move.b    (a2)+,d4
  250.     move.w    (a2)+,d5
  251.     mulu.w    d7,d3
  252.     mulu.w    d7,d4
  253.     mulu.w    d7,d5
  254.     lsr.l    #4,d3
  255.     bcc.s    .r_done
  256.     addq.w    #1,d3
  257. .r_done:lsr.l    #4,d4
  258.     bcc.s    .g_done
  259.     addq.w    #1,d4
  260. .g_done:lsr.l    #4,d5
  261.     bcc.s    .b_done
  262.     addq.w    #1,d5
  263. .b_done:lsl.w    #8,d3
  264.     lsl.w    #3,d4
  265.     lsr.w    #3,d5
  266.     andi.w    #%1111100000000000,d3
  267.     andi.w    #%0000011111100000,d4
  268.     or.w    d4,d3
  269.     or.w    d5,d3
  270.     move.w    d3,(a0)+
  271. ;    move.w    d3,(a0)+
  272.     addq.b    #1,d6
  273.     bne.s    .darkcolorloop
  274.  
  275.     suba.w    #256*4,a2
  276.     dbf    d7,.dark_loop
  277.  
  278.     rts
  279.  
  280. ; INPUT:
  281. ; a0: dst hc pic (320*200)
  282. ; a1: degas pi1
  283. Pinch.convertDegas:
  284. ; Convert pal..
  285.     addq    #2,a1
  286.     lea    Pinch.fontPal,a2
  287.     moveq    #16-1,d7
  288.  
  289. .pal_loop:
  290.     move.w    (a1)+,d0
  291.     move.w    d0,d1
  292.     move.w    d0,d2
  293.     move.w    d0,d3
  294.     clr.b    d0
  295.     lsl.w    #5,d0
  296.     bcc.s    .end_red
  297.     bset    #$C,d0                ; Set ls red bit.
  298. .end_red:
  299. ; d0.w=highcol (red)
  300.     lsl.w    #4,d1
  301.     andi.w    #$0700,d1            ; d1.w=green msbits
  302.     andi.w    #$0080,d2            ; d2.w=green lsbit
  303.     or.w    d1,d0                ; d0.w=red+(green msbits)
  304.     or.w    d2,d0                ; d0.w=red+green
  305. ; Do blue..
  306.     move.w    d3,d1
  307.     andi.w    #$0007,d1
  308.     lsl.w    #2,d1                ; d1.w=blue msbits
  309.     or.w    d1,d0                ; d0.w=red+green+(blue msbits)
  310.     lsr.w    #3,d3
  311.     andi.w    #1,d3                ; d3.w=blue lsbit
  312.     or.w    d3,d0                ; d0.w=red+green+blue
  313.  
  314.     move.w    d0,(a2)+            ; Store color.
  315.     dbf    d7,.pal_loop
  316.  
  317.     IFNE    1
  318.     lea    Pinch.pal,a2
  319.     ELSE
  320.     suba.w    #16*2,a2
  321.     ENDC
  322.  
  323. ; Convert pixels..
  324. ; a2: pal
  325.     moveq    #320/16,d0
  326.     move.w    #200,d1
  327.     moveq    #4,d2
  328.     bra.l    Bitmap.convIBplToHC
  329.  
  330. ; INPUT:
  331. ; a0: dst buffer
  332. ; a4: text
  333. Pinch.paintTextToBuf:
  334.     move.l    a0,d4
  335.     movea.l    Pinch.fontAdr,a1
  336.     lea    Font.charTable,a3
  337.  
  338. .charloop:
  339.     clr.l    d0
  340.     move.b    (a4)+,d0
  341.     beq.s    .end
  342.     cmpi.w    #$0A,d0
  343.     bne.s    .char
  344.     addi.l    #16*160*2,d4
  345.     movea.l    d4,a0
  346.     bra.s    .charloop
  347.  
  348. .char:    subi.b    #32,d0
  349.     mulu.w    #6,d0
  350.     movem.w    (a3,d0.l),d0-d2
  351.     mulu.w    #320,d0
  352.     add.l    d1,d0
  353.     move.w    d2,d5
  354.     subq.w    #1,d5
  355.     lea    (a1,d0.l*2),a2
  356.     movea.w    #160,a6
  357.     movea.w    #320,a5
  358.     suba.l    d2,a6
  359.     suba.l    d2,a5
  360.     adda.l    a6,a6
  361.     adda.l    a5,a5
  362.     moveq    #16-1,d7
  363.  
  364. .yloop:    move.w    d5,d6
  365.  
  366. .xloop:    move.w    (a2)+,(a0)+
  367.     dbf    d6,.xloop
  368.  
  369.     adda.l    a6,a0
  370.     adda.l    a5,a2
  371.     dbf    d7,.yloop
  372.     
  373.     suba.w    #160*16*2,a0
  374.     lea    2(a0,d2.l*2),a0
  375.  
  376.     bra.s    .charloop
  377.  
  378. .end:    rts
  379.  
  380. ; Weird pinch stuff..
  381. ; Calcs only one quadrant and mirrors/copies the rest..
  382. Pinch.calcMap:
  383.     lea    Pinch.squareTable,a0
  384.     move.w    #-319,d0
  385.  
  386. .calc_sqr_loop:
  387.     move.w    d0,d1
  388.     muls.w    d1,d1
  389.     move.l    d1,(a0)+
  390.     addq.w    #2,d0
  391.     cmpi.w    #+319,d0
  392.     blt.s    .calc_sqr_loop
  393.  
  394.     moveq    #$7F,d5
  395.     movea.l    Pinch.baseAdr,a0
  396.     movea.l    a0,a3
  397.     movea.l    a0,a4
  398.     movea.l    a0,a5
  399.     adda.l    #Pinch.offsetTable,a0
  400.     adda.l    #Pinch.offsetTable+320*200*2,a3
  401.     adda.l    #Pinch.offsetTable+320*2,a4
  402.     adda.l    #Pinch.offsetTable+320*199*2,a5
  403.     lea    Pinch.squareTable+60*4,a1
  404.     move.w    #+199,d7
  405.  
  406. .yloop:    move.w    #+319,d6
  407.     move.l    (a1)+,d4
  408.     lea    Pinch.squareTable,a2
  409.  
  410. .xloop:    move.l    (a2)+,d1
  411.     add.l    d4,d1
  412.     lsr.l    #4,d1
  413.     clr.l    d2
  414.     clr.l    d3
  415.     move.w    d6,d2
  416.     move.w    d7,d3
  417.     swap    d2
  418.     swap    d3
  419.     divs.w    d1,d2
  420.     divs.w    d1,d3
  421.     asr.w    #6,d2
  422.     asr.w    #6,d3
  423.     and.w    d5,d2
  424.     and.w    d5,d3
  425.     move.b    d2,(a0)+
  426.     move.b    d3,(a0)+
  427.     not.b    d2
  428.     and.w    d5,d2
  429.     move.b    d3,-(a4)
  430.     move.b    d2,-(a4)
  431.     not.b    d3
  432.     and.w    d5,d3
  433.     move.b    d3,-(a3)
  434.     move.b    d2,-(a3)
  435.     not.b    d2
  436.     and.w    d5,d2
  437.     move.b    d2,(a5)+
  438.     move.b    d3,(a5)+
  439.  
  440.     subq.w    #2,d6
  441.     bpl.s    .xloop
  442.  
  443.     adda.w    #160*2,a0
  444.     adda.w    #480*2,a4
  445.     suba.w    #160*2,a3
  446.     suba.w    #480*2,a5
  447.     subq.w    #2,d7
  448.     bpl.s    .yloop
  449.     rts
  450.  
  451. Pinch.alphaCraps:
  452.     clr.l    d0
  453.     move.w    Pinch.frameTime,d0
  454.     lsr.w    d0
  455.     andi.w    #$7F,d0
  456.     lea    Texture.8bTexture1,a1
  457.     lea    (a1,d0.l),a1
  458.     movea.l    Pinch.baseAdr,a2
  459.     adda.l    #Pinch.offsetTable,a2
  460.     move.w    Pinch.frameTime,d0
  461.     move.w    d0,d1
  462.     mulu.w    #3,d0
  463.     lsr.l    d0
  464.     mulu.w    #7,d1
  465.     lsr.l    #2,d1
  466.     Do_SinModulo    d0
  467.     Do_SinModulo    d1
  468.     lea    sine_tbl,a3
  469.     Get_Sin    a3,d0,d0
  470.     Get_Sin    a3,d1,d1
  471.     muls.w    #320-160,d0
  472.     muls.w    #200-100,d1
  473.     swap    d0
  474.     swap    d1
  475.     addi.w    #160-80,d0
  476.     addi.w    #100-50,d1
  477.     mulu.w    #320,d1
  478.     add.w    d0,d1
  479.     andi.l    #$FFFF,d1
  480.  
  481.     movea.l    scr,a0
  482.     lea    (a2,d1.l*2),a2
  483.     movea.l    Pinch.layerAdr,a3
  484.     move.w    Pinch.fadePos,d1
  485.     mulu.w    #256*2,d1
  486.     lea    (Pinch.alphaTable.l,d1.l),a4
  487.     move.l    #160*34*2,d1
  488.     lea    (320*34*2.l,a2),a2
  489.  
  490.     moveq    #32-1,d7
  491.     clr.l    d0
  492.  
  493.     move.w    monitormode,d0
  494.     cmpi.w    #vga60,d0
  495.     beq.s    Pinch.paintAVga60
  496.     cmpi.w    #vga100,d0
  497.     beq.s    Pinch.paintAVga100
  498.     cmpi.w    #rgb50,d0
  499.     beq.s    Pinch.paintARgb50
  500. ; Unknown monitormode..
  501.     rts
  502.  
  503. Pinch.paintAVga100:
  504.     adda.l    d1,a0
  505.  
  506. .yloop:    moveq    #80-1,d6
  507.  
  508. .xloop:
  509.     REPT    2
  510.     move.w    (a2)+,d0
  511.     move.w    (a3)+,d1
  512.     move.b    (a1,d0.l),d1
  513.     move.w    (a4,d1.l*2),(a0)+
  514.     ENDR
  515.     dbf    d6,.xloop
  516.  
  517.     adda.w    #160*2,a2
  518.     dbf    d7,.yloop
  519.     rts
  520.  
  521. Pinch.paintAVga60:
  522.     lea    (a0,d1.l*2),a0
  523.  
  524. .yloop:    moveq    #80-1,d6
  525.     lea    160*2(a0),a5
  526.  
  527. .xloop:    REPT    2
  528.     move.w    (a2)+,d0
  529.     move.w    (a3)+,d1
  530.     move.b    (a1,d0.l),d1
  531.     move.w    (a4,d1.l*2),(a0)+
  532.     move.w    (a4,d1.l*2),(a5)+
  533.     ENDR
  534.     dbf    d6,.xloop
  535.  
  536.     adda.w    #160*2,a2
  537.     adda.w    #160*2,a0
  538.     dbf    d7,.yloop
  539.     rts
  540.  
  541. Pinch.paintARgb50:
  542.     lea    (a0,d1.l*2),a0
  543.  
  544. .yloop:    moveq    #80-1,d6
  545.  
  546. .xloop:    REPT    2
  547.     move.w    (a2)+,d0
  548.     move.w    (a3)+,d1
  549.     move.b    (a1,d0.l),d1
  550.     move.w    (a4,d1.l*2),(a0)+
  551.     move.w    (a4,d1.l*2),(a0)+
  552.     ENDR
  553.     dbf    d6,.xloop
  554.  
  555.     adda.w    #160*2,a2
  556.     dbf    d7,.yloop
  557.     rts
  558.  
  559. Pinch.paintUp:
  560.     clr.l    d0
  561.     move.w    Pinch.frameTime,d0
  562.     lsr.w    d0
  563.     andi.w    #$7F,d0
  564.     lea    Texture.16bTexture1,a1
  565.     lea    (a1,d0.l*2),a1
  566.     movea.l    Pinch.baseAdr,a2
  567.     adda.l    #Pinch.offsetTable,a2
  568.     move.w    Pinch.frameTime,d0
  569.     move.w    d0,d1
  570.     mulu.w    #3,d0
  571.     lsr.l    d0
  572.     mulu.w    #7,d1
  573.     lsr.l    #2,d1
  574.     Do_SinModulo    d0
  575.     Do_SinModulo    d1
  576.     lea    sine_tbl,a3
  577.     Get_Sin    a3,d0,d0
  578.     Get_Sin    a3,d1,d1
  579.     muls.w    #320-160,d0
  580.     muls.w    #200-100,d1
  581.     swap    d0
  582.     swap    d1
  583.     addi.w    #160-80,d0
  584.     addi.w    #100-50,d1
  585.     mulu.w    #320,d1
  586.     add.w    d0,d1
  587.     andi.l    #$FFFF,d1
  588.  
  589.     movea.l    scr,a0
  590.     lea    (a2,d1.l*2),a2
  591.  
  592.     moveq    #34-1,d7
  593.     clr.l    d0
  594.     clr.l    d1
  595.  
  596.     move.w    monitormode,d0
  597.     cmpi.w    #vga60,d0
  598.     beq    Pinch.paintVga60
  599.     cmpi.w    #vga100,d0
  600.     beq    Pinch.paintVga100
  601.     cmpi.w    #rgb50,d0
  602.     beq    Pinch.paintRgb50
  603. ; Unknown monitormode..
  604.     rts
  605.  
  606. Pinch.paintDown:
  607.     clr.l    d0
  608.     move.w    Pinch.frameTime,d0
  609.     lsr.w    d0
  610.     andi.w    #$7F,d0
  611.     lea    Texture.16bTexture1,a1
  612.     lea    (a1,d0.l*2),a1
  613.     movea.l    Pinch.baseAdr,a2
  614.     adda.l    #Pinch.offsetTable,a2
  615.     move.w    Pinch.frameTime,d0
  616.     move.w    d0,d1
  617.     mulu.w    #3,d0
  618.     lsr.l    d0
  619.     mulu.w    #7,d1
  620.     lsr.l    #2,d1
  621.     Do_SinModulo    d0
  622.     Do_SinModulo    d1
  623.     lea    sine_tbl,a3
  624.     Get_Sin    a3,d0,d0
  625.     Get_Sin    a3,d1,d1
  626.     muls.w    #320-160,d0
  627.     muls.w    #200-100,d1
  628.     swap    d0
  629.     swap    d1
  630.     addi.w    #160-80,d0
  631.     addi.w    #100-50,d1
  632.     mulu.w    #320,d1
  633.     add.w    d0,d1
  634.     andi.l    #$FFFF,d1
  635.  
  636.     movea.l    scr,a0
  637.     lea    (a2,d1.l*2),a2
  638.  
  639.     moveq    #34-1,d7
  640.     clr.l    d0
  641.     move.l    #160*66*2,d1
  642.     lea    (a2,d1.l*2),a2
  643.  
  644.     move.w    monitormode,d0
  645.     cmpi.w    #vga60,d0
  646.     beq    Pinch.paintVga60
  647.     cmpi.w    #vga100,d0
  648.     beq    Pinch.paintVga100
  649.     cmpi.w    #rgb50,d0
  650.     beq    Pinch.paintRgb50
  651. ; Unknown monitormode..
  652.     bra    Pinch.paintVga100
  653.     rts
  654.  
  655. Pinch.paintVga100:
  656.     adda.l    d1,a0
  657.  
  658. .yloop:    moveq    #80-1,d6
  659.  
  660. .xloop:    REPT    2
  661.     move.w    (a2)+,d0
  662.     move.w    (a1,d0.l*2),(a0)+
  663.     ENDR
  664.     dbf    d6,.xloop
  665.  
  666.     adda.w    #160*2,a2
  667.     dbf    d7,.yloop
  668.     rts
  669.  
  670. Pinch.paintVga60:
  671.     lea    (a0,d1.l*2),a0
  672.  
  673. .yloop:    moveq    #80-1,d6
  674.     lea    160*2(a0),a3
  675.  
  676. .xloop:    REPT    2
  677.     move.w    (a2)+,d0
  678.     move.w    (a1,d0.l*2),(a0)+
  679.     move.w    (a1,d0.l*2),(a3)+
  680.     ENDR
  681.     dbf    d6,.xloop
  682.  
  683.     adda.w    #160*2,a2
  684.     adda.w    #160*2,a0
  685.     dbf    d7,.yloop
  686.     rts
  687.  
  688. Pinch.paintRgb50:
  689.     lea    (a0,d1.l*2),a0
  690.  
  691. .yloop:    moveq    #80-1,d6
  692.  
  693. .xloop:    REPT    2
  694.     move.w    (a2)+,d0
  695.     move.w    (a1,d0.l*2),(a0)+
  696.     move.w    (a1,d0.l*2),(a0)+
  697.     ENDR
  698.     dbf    d6,.xloop
  699.  
  700.     adda.w    #160*2,a2
  701.     dbf    d7,.yloop
  702.     rts
  703.  
  704. ;======= OBJECT DATA ========
  705.  
  706.     DATA
  707.  
  708. Pinch.text1:
  709.     DC.B    "    this was part a.",0
  710. Pinch.text2:
  711.     DC.B    " ..part b is up next..",0
  712. Pinch.text3:
  713.     DC.B    " so do not hit space",$0A
  714.     DC.B    "    like a monkey",0
  715.  
  716.     EVEN
  717.  
  718. Pinch.pal:
  719.     DC.W    $0F00,$0E00,$0D00,$0C00,$0B00,$0A00,$0900,$0800
  720.     DC.W    $0700,$0600,$0500,$0400,$0300,$0200,$0100,$0000
  721.  
  722. Pinch.chromeInstTable:
  723.     DC.W    (.end-.start)/4-1
  724.     DC.W    5
  725. .start:    DC.L    $0F000000
  726.     DC.L    $4F2F002F
  727.     DC.L    $847F007F
  728.     DC.L    $C4BF00BF
  729.     DC.L    $FFFF00FF
  730.     DC.L    $FFFF00FF
  731.     DC.L    $FFFF00FF
  732.     DC.L    $FFFF00FF
  733.     DC.L    $FFFF00FF
  734. .end:
  735.  
  736. Pinch.layerAdr:
  737.     DC.L    Pinch.buf1
  738.  
  739. Pinch.storyTable:
  740.     DC.W    (.end-.start)/8
  741. .start:    DC.L    800,Pinch.setText1
  742.     DC.L    000,Pinch.setFadeIn
  743.     DC.L    800,Pinch.setFadeOut
  744.     DC.L    400,Pinch.setText2
  745.     DC.L    000,Pinch.setFadeIn
  746.     DC.L    800,Pinch.setFadeOut
  747.     DC.L    400,Pinch.setText3
  748.     DC.L    000,Pinch.setFadeIn
  749.     DC.L    800,Pinch.setFadeOut
  750. .end:
  751.  
  752. ;======= OBJECT RESERVES ========
  753.  
  754.     BSS
  755.  
  756. Pinch.baseAdr:
  757.     DS.L    1
  758. Pinch.buf1:
  759.     DS.W    160*32
  760. Pinch.buf2:
  761.     DS.W    160*32
  762. Pinch.buf3:
  763.     DS.W    160*32
  764. Pinch.fontPal:
  765.     DS.W    16
  766.  
  767. Pinch.textOffset:
  768.     DS.L    1
  769. Pinch.alphaTable:
  770.     DS.W    32*256
  771. Pinch.chromePal:
  772.     DS.L    256
  773.  
  774. Pinch.fadeStart:
  775.     DS.L    1
  776. Pinch.fadeDir:
  777.     DS.W    1
  778. Pinch.fadePos:
  779.     DS.W    1
  780. Pinch.startTime:
  781.     DS.L    1
  782. Pinch.sceneNum:
  783.     DS.L    1
  784. Pinch.sumTime:
  785.     DS.L    1
  786.  
  787. Pinch.frameTime:
  788.     DS.W    1
  789.  
  790. Pinch.squareTable:
  791.     DS.L    320
  792.  
  793. Pinch.fontAdr:
  794.     DS.L    1