home *** CD-ROM | disk | FTP | other *** search
/ Falcon 030 Power 2 / F030_POWER2.iso / ST_STE / MAGS / MAGGIE24.ARJ / maggie24 / GOODIES / SOURCE_C.ODE / NEMESIS.S < prev   
Text File  |  1994-01-20  |  3KB  |  155 lines

  1. ***********************************
  2. *=================================*
  3. * RESERVOIR GODS LIBRARY ROUTINES *
  4. *=================================*
  5. *       |                  |      *
  6. *       |  NEMESIS LIBRARY |      *
  7. *       |                  |      *
  8. ***********************************
  9. * CODE: MR. PINK | (C): 11/07/97  *
  10. ***********************************
  11.  
  12. **************************************************************************
  13.     SECTION TEXT
  14. **************************************************************************
  15.  
  16. rlnem_nemesis_constructor
  17.     bsr    rlnem_read_nemesis_cookie
  18.     move.l    d0,rlnem_old_nemesis_mode
  19.     tst.l    d0
  20.     bmi    .no_nem
  21.     cmp.w    #2,rlsc_monitor_type(a0)
  22.     beq.s    .no_nem
  23.     lea    rlnem_rgb_vbl,a0
  24.     jsr    rlvc_install_vbl_routine
  25. .no_nem    rts
  26.  
  27. rlnem_nemesis_deconstructor
  28.     move.l    rlnem_old_nemesis_mode,d0
  29.     bsr    rlnem_set_nemesis_mode
  30.     lea    rlnem_rgb_vbl,a0
  31.     jsr    rlvc_remove_vbl_routine
  32.     rts
  33.  
  34. rlnem_set_nemesis_mode
  35.     move.l    d0,-(a7)
  36.     and.w    #3,d0
  37.     jsr    ([rlnem_nemesis_routs,d0.w*4])
  38.     move.l    (a7)+,d0
  39.     rts
  40.  
  41. rlnem_nemesis_routs
  42.     dc.l    rlnem_nemesis_off
  43.     dc.l    rlnem_nemesis_lo
  44.     dc.l    rlnem_nemesis_hi
  45.     dc.l    rlnem_nemesis_off
  46.  
  47. rlnem_nemesis_off:
  48.     movem.l    a0,-(a7)
  49.     bsr    rlnem_set_nemesis_rgb
  50.     jsr    rlvc_wait_vbl
  51.     movea.w    #$fc04,a0
  52.     move.b    #3,(a0)
  53.     move.b    #-$6b,(a0)
  54.     subq.w    #4,a0
  55.     move.b    #3,(a0)
  56.     move.b    #-$6a,(a0)
  57.     bset    #0,$ffff8007.w    ;68030 16 mhz
  58.     bset    #2,$ffff8007.w    ;blitter 16mhz
  59.     move.l    (a7)+,a0
  60.     rts
  61.  
  62. rlnem_nemesis_lo:
  63.     movem.l    a0,-(a7)
  64.     bsr    rlnem_set_nemesis_rgb
  65.     jsr    rlvc_wait_vbl
  66.     movea.w    #$fc04,a0
  67.     move.b    #3,(a0)
  68.     move.b    #-$6b,(a0)
  69.     subq.w    #4,a0
  70.     move.b    #3,(a0)
  71.     move.b    #-$2a,(a0)
  72.     bset.b    #0,$ffff8007.w    ;68030 16 mhz
  73.     bclr.b    #2,$ffff8007.w    ;blitter 8 mhz
  74.     move.l    (a7)+,a0
  75.     rts
  76.  
  77. rlnem_nemesis_hi:
  78.     movem.l    a0,-(a7)
  79.     bsr    rlnem_set_nemesis_rgb
  80.     jsr    rlvc_wait_vbl
  81.     movea.w    #$fc04,a0
  82.     move.b    #3,(a0)
  83.     move.b    #-$2b,(a0)
  84.     subq.w    #4,a0
  85.     move.b    #3,(a0)
  86.     move.b    #-$2a,(a0)
  87.     bclr.b    #2,$ffff8007.w    ;blitter 8mhz
  88.     move.l    (a7)+,a0
  89.     rts
  90.  
  91. rlnem_read_nemesis_cookie:
  92.     movem.l    d1/a0,-(a7)
  93.  
  94.     movea.l    $5a0.w,a0
  95.     move.l    #$4e737064,d0
  96.     bra.s    .first
  97.  
  98. .check    cmp.l    d0,d1
  99.     beq.s    .found
  100.     addq.w    #8,a0
  101. .first    move.l    (a0),d1
  102.     bne.s    .check
  103.  
  104.     moveq    #-1,d0
  105.     movem.l    (a7)+,a0/d1
  106.     rts
  107.  
  108. .found    move.l    4(a0),d0
  109.     movem.l    (a7)+,a0/d1
  110.     rts
  111.  
  112. rlnem_write_nemesis_cookie:
  113.     movem.l    d0-d2/a0,-(a7)
  114.  
  115.     movea.l    $5a0.w,a0
  116.     move.l    #$4e737064,d2
  117.     bra.s    .first
  118.  
  119. .check    cmp.l    d2,d1
  120.     beq.s    .found
  121.     addq.w    #8,a0
  122. .first    move.l    (a0),d1
  123.     bne.s    .check
  124.  
  125.     movem.l    (a7)+,d0-d2/a0
  126.     rts
  127.  
  128. .found    move.l    d0,4(a0)
  129.     movem.l    (a7)+,d0-d2/a0
  130.     rts
  131.     
  132. rlnem_set_nemesis_rgb
  133.     move.l    a0,-(a7)
  134.  
  135.     bsr    rlnem_read_nemesis_cookie
  136.     bne    .vga
  137.  
  138.     lea    rlsc_screen_space,a0
  139.     cmp.w    #2,rlsc_monitor_type(a0)
  140.     beq.s    .vga
  141.  
  142.     btst.b    #2,$ffff82c1.w
  143.     bne.s    .vga
  144.     bset.b    #2,$ffff82c1.w
  145.  
  146. .vga    move.l    (a7)+,a0
  147.     rts    
  148.  
  149. rlnem_rgb_vbl:
  150.     btst.b    #2,$ffff82c1.w
  151.     bne.s    .vga
  152.     bset.b    #2,$ffff82c1.w
  153. .vga    rts
  154.  
  155. rlnem_old_nemesis_mode:    dc.l    0