home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 4: The Falcon Archive / nf_archive_four_v1.0.iso / ARCHIVE / DEMOS / LAZER / LAZEROS.ZIP / LAZEROS / CREDITS / BACK_09.S next >
Text File  |  1999-04-03  |  12KB  |  709 lines

  1. ;Credits screen for dba-intro (Lazer/Dba)
  2. ;Don't blame us if the code is ugly, we were forced by aliens!!
  3.  
  4.  
  5.  
  6.      OUTPUT    h:\dba\back.PRG
  7.  
  8.     jmp    main        ;See the 3d-part for the exact docs
  9.     bra    init_rout    ;Only the vbl_rout is documented
  10.     bra    exit_rout    ;here...
  11.     bra    do_once
  12.     bra    do_vbl
  13.  
  14. ;-----------------------------------------------------------
  15.     include startup.s
  16.     include    demo.s
  17. ;-----------------------------------------------------------
  18. BLITTER = $ffff8a00
  19.  
  20. HALFTONE    = 0
  21. SRC_XINC    = 32
  22. SRC_YINC    = 34
  23. SRC_ADDR    = 36
  24. ENDMASK1    = 40
  25. ENDMASK2    = 42
  26. ENDMASK3    = 44
  27. DST_XINC    = 46
  28. DST_YINC    = 48
  29. DST_ADDR    = 50
  30. X_COUNT        = 54
  31. Y_COUNT        = 56
  32. HOP        = 58
  33. OP        = 59
  34. LINE_NUM    = 60
  35. SKEW        = 61
  36.  
  37. FHOP_SOURCE    = 1
  38. FHOP_HALFTONE    = 0
  39. FSKEWFXSR    = 7
  40. FSKEWNFSR    = 6
  41. FLINEBUSY    = 7
  42. FLINEHOG    = 6
  43. FLINESMUDGE    = 5
  44.  
  45. MHOP_SOURCE    = $02
  46. MHOP_HALFTONE    = $01
  47. MSKEWFXSR    = $80
  48. MSKEWNFSR     = $40
  49. MLINEBUSY    = $80
  50. MLINEHOG    = $40
  51. MLINESMUDGE    = $20
  52.  
  53.  
  54. ;-----------------------------------------------------------
  55. main
  56.     shrink_memory
  57.  
  58.     bsr    init
  59.     save_stack
  60.     bsr    phoenix_init
  61.  
  62.     save_interrupts
  63.     set_interrupts
  64.  
  65.     move.w    #32/2,$ffff820e
  66.     bsr    moir
  67.     bsr    black
  68.  
  69. .main_loop
  70.     move.l    scr1,d0
  71.     move.l    scr2,scr1
  72.     move.l    d0,scr2
  73.     setscreen
  74.     vsync
  75.     
  76.     lea    colors,a0
  77.     lea    $ffff9800,a1
  78.     move.w    #255,d0
  79. .2    move.l    (a0)+,(a1)+
  80.     dbf    d0,.2
  81.  
  82.     bsr    show_text    
  83.  
  84.     bsr    parallax
  85.     
  86.  
  87.     tst.w    exit_flag
  88.     beq.s    .exit
  89.  
  90.     move.b    key,old_key
  91.     move.b    $fffffc02.w,key
  92.     cmp.b    #$39,key
  93.     bne    .main_loop
  94.  
  95. .exit
  96.  
  97.     restore_interrupts
  98.     bsr    phoenix_exit
  99.     restore_stack
  100.     bsr    exit
  101.     terminate
  102. ;-----------------------------------------------------------
  103. init_rout
  104.     move.l    a0,parameters
  105.  
  106.     move.l    parameters,a0
  107.     move.l    WORK_SCREEN(a0),scr1
  108.     move.l    SHOW_SCREEN(a0),scr2
  109.  
  110.     rts
  111. ;-----------------------------------------------------------
  112. exit_rout
  113.     rts
  114. ;-----------------------------------------------------------
  115. do_once
  116.     move.l    parameters,a0
  117.     move.w    #2,SCREEN_COUNT(a0)    ;this part uses 2 screens
  118.     move.w    #TRUE,SCREEN_SWAP(a0)    ;they are to be swapped
  119.  
  120.     move.l    parameters,a0
  121.     move.w    #TRUE,PALETTE_UPDATE(a0) ;The palette is to be changed
  122.     move.l    #colors,PALETTE(a0)
  123.  
  124.     move.l    parameters,a0
  125.     lea    rgb_320x240x256_cin,a1  ; and change rez
  126.     move.l    a1,SCRMODE(a0)
  127.     move.w    #TRUE,SCRMODE_UPDATE(a0)
  128.  
  129.     move.l    parameters,a0
  130.     move.l    WORK_SCREEN(a0),scr1
  131.     move.l    SHOW_SCREEN(a0),scr2
  132.     bsr    clrscr
  133.     move.w    #32/2,$ffff820e
  134.     bsr    black            ; Some inits for this screen
  135.     bsr    moir            ; Place inits/precalcs here
  136.  
  137. ll    bra.s    ll
  138.  
  139. ;-----------------------------------------------------------
  140.  
  141. ;This Vbl-rout is called by the os. Care! Not rte at the end. 
  142. ;The os handles this for you.
  143.  
  144. do_vbl
  145.  
  146.  
  147.     move.l    parameters,a0
  148.     move.w    #TRUE,SCRMODE_UPDATE(a0)    
  149.     lea    rgb_320x240x256_cin,a1
  150.     move.l    a1,SCRMODE(a0)
  151.     move.w    #TRUE,SCRMODE_UPDATE(a0)
  152.  
  153.     move.w    #32/2,$ffff820e
  154.  
  155.     move.l    parameters,a0
  156.     move.l    WORK_SCREEN(a0),scr1
  157.     move.l    SHOW_SCREEN(a0),scr2
  158.  
  159.     move.w    #TRUE,PALETTE_UPDATE(a0)
  160.     move.l    #colors,PALETTE(a0)
  161.     
  162.     bsr    show_text    ; And do your own effects routs
  163.  
  164.     bsr    parallax
  165.     
  166.     demo_swapscreens
  167.  
  168.     rts
  169. ;-----------------------------------------------------------
  170. ;-> a0...palette
  171. set_palette
  172.  
  173.     lea    coltab3,a1
  174.     move.w    #155,d0
  175. .1    move.l    (a1)+,(a0)+
  176.     dbf    d0,.1
  177.  
  178.     rts
  179. ;-----------------------------------------------------------
  180. show_text
  181.  
  182.     add.w    #1,timer
  183.     
  184.     cmp.w    #2,timer
  185.     bne.s    .1
  186.     move.l    scr1,a0
  187.     add.l    #(320+32)*20,a0
  188.     add.w    #10,a0
  189.     lea    text1,a1
  190.     moveq    #0,d0        ;x_skew
  191.     bsr    set_blitter_t
  192.     bsr    clr_dummen_pixel
  193. .1
  194.     cmp.w    #3,timer
  195.     bne.s    .1a
  196.     move.l    scr1,a0
  197.     add.l    #(320+32)*20,a0
  198.     add.w    #10,a0
  199.     lea    text1,a1
  200.     moveq    #0,d0        ;x_skew
  201.     bsr    set_blitter_t
  202.     bsr    clr_dummen_pixel
  203. .1a
  204.  
  205.     cmp.w    #10,timer
  206.     blt.s    .2
  207.     cmp.w    #150,timer
  208.     bgt.s    .2
  209.     bsr    fade_in_all
  210. .2
  211.  
  212.     cmp.w    #600,timer
  213.     blt.s    .3a
  214.     cmp.w    #650,timer
  215.     bgt.s    .3a
  216.     bsr    fade_out    ;1.mal ausblenden
  217. .3a
  218.  
  219.     cmp.w    #652,timer
  220.     bne.s    .4
  221.     move.l    scr1,a0
  222.     add.l    #(320+32)*20,a0
  223.     add.w    #10,a0
  224.     lea    text2,a1
  225.     moveq    #0,d0        ;x_skew
  226.     bsr    set_blitter_t
  227. .4
  228.     cmp.w    #653,timer
  229.     bne.s    .4a
  230.     move.l    scr1,a0
  231.     add.l    #(320+32)*20,a0
  232.     add.w    #10,a0
  233.     lea    text2,a1
  234.     moveq    #0,d0        ;x_skew
  235.     bsr    set_blitter_t
  236. .4a
  237.  
  238.     cmp.w    #660,timer
  239.     blt.s    .5a
  240.     cmp.w    #710,timer
  241.     bgt.s    .5a
  242.     bsr    fade_in
  243. .5a
  244.  
  245. ;----
  246.     cmp.w    #900,timer
  247.     blt.s    .8a
  248.     cmp.w    #950,timer
  249.     bgt.s    .8a
  250.     bsr    fade_out    ;2.mal ausblenden
  251. .8a
  252.  
  253.     cmp.w    #952,timer
  254.     bne.s    .9
  255.     move.l    scr1,a0
  256.     add.l    #(320+32)*20,a0
  257.     add.w    #10,a0
  258.     lea    text3,a1
  259.     moveq    #0,d0        ;x_skew
  260.     bsr    set_blitter_t
  261. .9
  262.     cmp.w    #953,timer
  263.     bne.s    .9a
  264.     move.l    scr1,a0
  265.     add.l    #(320+32)*20,a0
  266.     add.w    #10,a0
  267.     lea    text3,a1
  268.     moveq    #0,d0        ;x_skew
  269.     bsr    set_blitter_t
  270. .9a
  271.  
  272.     cmp.w    #960,timer
  273.     blt.s    .aa
  274.     cmp.w    #1010,timer
  275.     bgt.s    .aa
  276.     bsr    fade_in
  277. .aa
  278.  
  279.  
  280.     cmp.w    #1460,timer
  281.     blt.s    .6a
  282.     cmp.w    #1560,timer
  283.     bgt.s    .6a
  284.     bsr    fade_out_all
  285. .6a
  286.  
  287.     cmp.w    #1600,timer
  288.     bne.s    .22
  289.     clr.w    exit_flag
  290. .22
  291.     rts
  292. ;-----------------------------------------------------------
  293. clr_dummen_pixel
  294.  
  295.     move.l    scr1,a0
  296.     add.l    #10,a0
  297.     add.l    #(320+32)*192+16*14,a0
  298.     move.l    #0,(a0)
  299.  
  300.     rts
  301. ;-----------------------------------------------------------
  302. fade_in
  303.     lea    coltab3,a1
  304.     lea    colors,a0
  305.     move.l    #1,d0        ;1,3,7,15,...
  306.     move.w    #255,anz
  307.     bsr    xxxx
  308.     rts
  309. ;-----------------------------------------------------------
  310. fade_out
  311.  
  312.     lea    coltab2,a1
  313.     lea    colors,a0
  314.     move.l    #1,d0        ;1,3,7,15,...
  315.     move.w    #255,anz
  316.     bsr    xxxx
  317.     rts
  318. ;-----------------------------------------------------------
  319. fade_in_all
  320.  
  321.     lea    coltab3,a1
  322.     lea    colors,a0
  323.     move.l    #1,d0        ;1,3,7,15,...
  324.     move.w    #255,anz
  325.     bsr    xxxx
  326.     rts
  327. ;-----------------------------------------------------------
  328. fade_out_all
  329.  
  330.     lea    coltab1,a1
  331.     lea    colors,a0
  332.     move.l    #1,d0        ;1,3,7,15,...
  333.     move.w    #255,anz
  334.     bsr    xxxx
  335.     rts
  336. ;-----------------------------------------------------------
  337. xxxx
  338.     add.w    #1,fade_speed
  339.     and.w    d0,fade_speed
  340.     bne    .exit_fade
  341.  
  342.     move.w    #-1,d4
  343.  
  344.     moveq    #0,d1
  345.     moveq    #0,d2
  346.  
  347.     move.w    anz,d0
  348. .1
  349.     move.l    (a0),temp_col
  350.  
  351.     move.b    (a0),d1
  352.     and.b    #%11111100,d1
  353.     move.b    (a1),d2
  354.     and.b    #%11111100,d2
  355.     cmp.w    d2,d1
  356.     blt.s    .fade_up
  357.     cmp.w    d2,d1
  358.     bgt.s    .fade_down
  359.     bra.s    .r_fade_ready
  360. .fade_up
  361.     clr.w    d4
  362.     add.b    #$04,temp_col
  363.     bra.s    .r_fade_ready
  364. .fade_down
  365.     clr.w    d4
  366.     sub.b    #$04,temp_col
  367. .r_fade_ready
  368.  
  369.  
  370.     move.b    1(a0),d1
  371.     and.b    #%11111100,d1
  372.     move.b    1(a1),d2
  373.     and.b    #%11111100,d2
  374.     cmp.w    d2,d1
  375.     blt.s    .fade_up2
  376.     cmp.w    d2,d1
  377.     bgt.s    .fade_down2
  378.     bra.s    .g_fade_ready
  379. .fade_up2
  380.     clr.w    d4
  381.     add.b    #$04,temp_col+1
  382.     bra.s    .g_fade_ready
  383. .fade_down2
  384.     clr.w    d4
  385.     sub.b    #$04,temp_col+1
  386. .g_fade_ready
  387.  
  388.     move.b    3(a0),d1
  389.     and.b    #%11111100,d1
  390.     move.b    3(a1),d2
  391.     and.b    #%11111100,d2
  392.     cmp.w    d2,d1
  393.     blt.s    .fade_up3
  394.     cmp.w    d2,d1
  395.     bgt.s    .fade_down3
  396.     bra.s    .b_fade_ready
  397. .fade_up3
  398.     clr.w    d4
  399.     add.b    #$04,temp_col+3
  400.     bra.s    .b_fade_ready
  401. .fade_down3
  402.     clr.w    d4
  403.     sub.b    #$04,temp_col+3
  404. .b_fade_ready
  405.     move.l    temp_col,(a0)+
  406.     addq    #4,a1
  407.     dbf    d0,.1
  408.  
  409. .exit_fade
  410.     rts
  411. ;-----------------------------------------------------------
  412. moir
  413.  
  414.     move.l    scr1,a0
  415.     move.l    scr2,a1
  416.     addq    #6,a0
  417.     addq    #6,a1
  418.     move.w    #%0101010101010101,d2
  419.  
  420.     move.w    #238,d1
  421. .1
  422.     not.w    d2
  423.     moveq    #19,d0
  424. .2    move.w    d2,(a0)
  425.     move.w    d2,(a1)
  426.     lea    16(a0),a0
  427.     lea    16(a1),a1
  428.     dbf    d0,.2
  429.     lea    32(a0),a0
  430.     lea    32(a1),a1
  431.     dbf    d1,.1
  432.  
  433.     rts
  434. ;-----------------------------------------------------------
  435. black
  436.  
  437.     move.l    scr1,a0
  438.     move.l    scr2,a1
  439.     addq    #8,a0
  440.     addq    #8,a1
  441.     move.w    #-1,d2
  442.  
  443.     move.w    #238,d1
  444. .1
  445.     moveq    #19,d0
  446. .2    move.w    d2,(a0)
  447.     move.w    d2,(a1)
  448.     lea    16(a0),a0
  449.     lea    16(a1),a1
  450.     dbf    d0,.2
  451.     lea    32(a0),a0
  452.     lea    32(a1),a1
  453.     dbf    d1,.1
  454.  
  455.     rts
  456. ;-----------------------------------------------------------
  457. parallax
  458.  
  459.     lea    wave1,a2
  460.     add.w    waveptr1,a2
  461.     add.w    #4,waveptr1
  462.     cmp.w    #4*360,waveptr1
  463.     bne.s    .1
  464.     clr.w    waveptr1
  465. .1    move.l    scr1,a0
  466.     sub.w    #16,a0
  467.     lea    bitmap1,a1
  468.     add.w    (a2),a1        ;x_word
  469.     move.w    2(a2),d0    ;x_skew
  470.     bsr    set_blitter
  471.     
  472.     
  473.     lea    wave2,a2
  474.     add.w    waveptr2,a2
  475.     add.w    #4,waveptr2
  476.     cmp.w    #4*360,waveptr2
  477.     bne.s    .2
  478.     clr.w    waveptr2
  479. .2    move.l    scr1,a0
  480.     addq    #2,a0
  481.     sub.w    #16,a0
  482.     lea    bitmap2,a1
  483.     add.w    (a2),a1        ;x_word
  484.     move.w    2(a2),d0    ;x_skew
  485.     bsr    set_blitter
  486.  
  487.     lea    wave3,a2
  488.     add.w    waveptr3,a2
  489.     add.w    #4,waveptr3
  490.     cmp.w    #4*360,waveptr3
  491.     bne.s    .3
  492.     clr.w    waveptr3
  493. .3    move.l    scr1,a0
  494.     addq    #4,a0
  495.     sub.w    #16,a0
  496.     lea    bitmap3,a1
  497.     add.w    (a2),a1        ;x_word
  498.     move.w    2(a2),d0    ;x_skew
  499.     bsr    set_blitter
  500.  
  501.     rts
  502. ;-----------------------------------------------------------
  503. set_blitter
  504.  
  505.     lea    BLITTER,a6
  506.  
  507.     move.w    #2,SRC_XINC(a6)
  508.     move.w    #2+20*2,SRC_YINC(a6)
  509.     move.w    #16,DST_XINC(a6)
  510.     move.w    #16*3,DST_YINC(a6)
  511.     move.b    #MHOP_SOURCE,HOP(a6)
  512.     move.b    #3,OP(a6)
  513.     move.l    a1,SRC_ADDR(a6)
  514.     move.l    a0,DST_ADDR(a6)
  515.     move.w    #20,X_COUNT(a6)
  516.     move.w    #239,Y_COUNT(a6)
  517.     move.w    #$ffff,ENDMASK1(a6)
  518.     move.w    #$ffff,ENDMASK2(a6)
  519.     move.w    #$ffff,ENDMASK3(a6)
  520.     move.b    d0,SKEW(a6)
  521.  
  522.     move.b    #MLINEBUSY+MLINEHOG,LINE_NUM(a6)
  523.  
  524.  
  525.     rts
  526. ;-----------------------------------------------------------
  527. set_blitter_t
  528.  
  529.     lea    BLITTER,a6
  530.  
  531.     move.w    #2,SRC_XINC(a6)
  532.     move.w    #2,SRC_YINC(a6)
  533.     move.w    #16,DST_XINC(a6)
  534.     move.w    #16*3,DST_YINC(a6)
  535.     move.b    #MHOP_SOURCE,HOP(a6)
  536.     move.b    #3,OP(a6)
  537.     move.l    a1,SRC_ADDR(a6)
  538.     move.l    a0,DST_ADDR(a6)
  539.     move.w    #20,X_COUNT(a6)
  540.     move.w    #199,Y_COUNT(a6)
  541.     move.w    #$ffff,ENDMASK1(a6)
  542.     move.w    #$ffff,ENDMASK2(a6)
  543.     move.w    #$ffff,ENDMASK3(a6)
  544.     move.b    d0,SKEW(a6)
  545.  
  546.     move.b    #MLINEBUSY+MLINEHOG,LINE_NUM(a6)
  547.  
  548.  
  549.     rts
  550. ;-----------------------------------------------------------
  551.  
  552.  
  553.  
  554. ;-----------------------------------------------------------
  555. clrscr
  556.     move.l    scr1,a5
  557.     move.l    scr2,a6
  558.     moveq    #0,d0
  559.     moveq    #0,d1
  560.     moveq    #0,d2
  561.     moveq    #0,d3
  562.     moveq    #0,d4
  563.     moveq    #0,d5
  564.     moveq    #0,d6
  565.     move.l    d0,a0
  566.     move.l    d0,a1
  567.     move.l    d0,a2
  568.  
  569.     move.w    #489,d7
  570. .1    
  571.     rept    10
  572.     movem.l    d0-d6/a0-a2,(a5)
  573.     movem.l    d0-d6/a0-a2,(a6)
  574.     lea    40(a5),a5
  575.     lea    40(a6),a6
  576.     endr
  577.     dbf    d7,.1
  578.     rts
  579. ;-----------------------------------------------------------
  580. vbl
  581.  
  582. old_vbl    jmp    $12345678
  583.     rte
  584. ;-----------------------------------------------------------
  585. init
  586.     clr_bss
  587.  
  588.     super_on
  589.     mouse_off
  590.  
  591.     cache_on
  592.  
  593.         move.l  $44e.w,old_screen
  594.     save_resolution
  595.  
  596.     move.l    #screens+256,d0
  597.     clr.b    d0
  598.     move.l    d0,scr1
  599.     add.l    #384*240*2,d0
  600.     move.l    d0,scr2
  601.     add.l    #384*240*2,d0
  602.     move.l    d0,scr3
  603.  
  604.     move.l    scr1,d0
  605.     setscreen
  606.  
  607.     *lea    rgb_384x240x256,a0
  608.     lea    rgb_320x240x256_cin,a0
  609.     set_resolution
  610.  
  611.     move.l    #0,$ffff9800.w
  612.         rts
  613. ;-----------------------------------------------------------
  614. exit
  615.     
  616.     move.l    old_screen,d0
  617.     setscreen
  618.     restore_resolution
  619.  
  620.     mouse_on
  621.     super_off
  622.     rts
  623. ;-----------------------------------------------------------
  624.  
  625.  
  626.  
  627. ;-----------------------------------------------------------
  628. scr1        dc.l    0
  629. scr2        dc.l    0
  630. scr3        dc.l    0
  631.  
  632. exit_flag    dc.w    -1
  633.  
  634. timer        dc.w    0
  635.  
  636. waveptr1    dc.w    0
  637. waveptr2    dc.w    0
  638. waveptr3    dc.w    0
  639.  
  640. temp_col    dc.l    0
  641. anz        dc.w    0
  642. fade_speed    dc.w    0
  643.  
  644. xx        dc.w    1
  645. ;-----------------------------------------------------------
  646. coltab3    
  647.     dc.l    $0        ;BG
  648.  
  649.     REPT    16
  650.     dc.l    0
  651.     ENDR
  652.  
  653.     REPT 2
  654.     dc.l    $300020        
  655.     dc.l    $0,0,$200030,$0,$280018,$0,$180018    ;woobel
  656.     ENDR
  657.  
  658.     REPT    (256-32)/8
  659.     dc.l    $500040        
  660.     dc.l    $200020,$200020,$400050,$200020,$480058,$200020,$380038    
  661.                 ;text
  662.     ENDR
  663.  
  664.     
  665.  
  666.  
  667. coltab2    
  668.     REPT    16
  669.     dc.l    $0        ;BG
  670.     dc.l    $300040,0,$200030,$0,$280018,$0
  671.     dc.l    $180018
  672.     dc.l    $0,0,0,0,0,0,0,0    ;moir
  673.     ENDR
  674.  
  675. coltab1
  676.     REPT    256
  677.     dc.l    0
  678.     ENDR
  679.  
  680. colors    
  681.     REPT    256
  682.     dc.l    -1
  683.     ENDR
  684.  
  685. ;-----------------------------------------------------------
  686. bitmap1        incbin    daten\map1.dat
  687. bitmap2        incbin    daten\map2.dat
  688. bitmap3        incbin    daten\map3.dat
  689.  
  690. wave1        incbin    daten\wave1.dat
  691. wave2        incbin    daten\wave2.dat
  692. wave3        incbin    daten\wave3.dat
  693.  
  694. text1        incbin    code.dat
  695. text2        incbin    rest.dat
  696. text3        incbin    cred.dat
  697. ;-----------------------------------------------------------
  698.  
  699.     even
  700.  
  701.     section bss
  702.  
  703.     ds.l    1000
  704. mystack        ds.l    0
  705.  
  706. start_bss
  707. screens        ds.b    3*384*240*2+256
  708. end_bss
  709.