home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format 43 / af043a.adf / BULL6.LHA / init.s < prev    next >
Text File  |  1992-12-15  |  4KB  |  221 lines

  1. ********************************************************************************
  2. *               oo                                      oo                       *
  3. *             \(  )/       Bullfrog Programming Demo    \(  )/                       *
  4. *             ^ ^^ ^                                 ^ ^^ ^                       *
  5. ********************************************************************************
  6.  
  7. _init
  8.     tst.w    delay
  9.     beq.s    .let_do_init
  10.         sub.w    #1,delay
  11.         bra        .not_init
  12. .let_do_init
  13.     cmp.w    #NO_LIVES,game_over
  14.     bge.s    .not_alive
  15.  
  16.         tst.w    to_collect
  17.         bne.s    .not_init
  18.         move.w    #0,fallen
  19.         bsr        _clear_objects
  20.         bsr        _clear_bad_guys
  21.  
  22.         move.w    current_level,d0
  23.         bge.s    .on_last_level
  24.             move.w    #MAX_LEVELS-1,d0
  25. .on_last_level
  26.         asl.w    #TWO,d0
  27.         add.w    #1,current_level
  28.         add.w    #1,total_levels
  29.         cmp.w    #MAX_LEVELS,current_level
  30.         bne.s    .ok
  31.             move.w    #0,current_level
  32. .ok
  33.         move.w    #0,man_vx
  34.         move.w    #150*4,man_y
  35.         move.w    #0,man_x
  36.         move.w    .init_table(pc,d0.w),d0
  37.         jmp        .init_table(pc,d0.w)
  38.     even
  39. .init_table    dc.w    lev0-.init_table
  40.             dc.w    lev1-.init_table
  41.             dc.w    lev2-.init_table
  42.             dc.w    lev3-.init_table
  43.  
  44. *insert extra level labels into jump table here
  45.  
  46.             dc.w    .not_init-.init_table
  47.  
  48. .not_alive
  49.     move.w    #1,died
  50. .not_init
  51.     rts
  52.  
  53. lev0
  54.     lea        _map0,a0
  55.     move.l    a0,map_pointer
  56.     lea        _objects,a0
  57.     move.w    #1,OBJ_ON(a0)
  58.     lea        OBJ_SIZE(a0),a0
  59.     move.w    #1,OBJ_ON(a0)
  60.     move.w    #304,OBJ_X(a0)
  61.  
  62.     lea        OBJ_SIZE(a0),a0
  63.     move.w    #1,OBJ_ON(a0)
  64.     move.w    #96,OBJ_X(a0)
  65.  
  66.     lea        OBJ_SIZE(a0),a0
  67.     move.w    #1,OBJ_ON(a0)
  68.     move.w    #304,OBJ_X(a0)
  69.     move.w    #50,OBJ_Y(a0)
  70.  
  71.     lea        OBJ_SIZE(a0),a0
  72.     move.w    #1,OBJ_ON(a0)
  73.     move.w    #192,OBJ_X(a0)
  74.     move.w    #4,to_collect
  75.  
  76.     lea        _bad_guys,a0
  77.     move.w    #BAD_STATE_LEFT,BAD_ON(a0)
  78.     move.w    #160,BAD_X(a0)
  79.     move.w    #160,BAD_Y(a0)
  80.     move.w    #BAD_LEFT_START,BAD_FRAME(a0)
  81.  
  82.     lea        BAD_SIZE(a0),a0
  83.     move.w    #BAD_STATE_RIGHT,BAD_ON(a0)
  84.     move.w    #176,BAD_X(a0)
  85.     move.w    #160,BAD_Y(a0)
  86.     move.w    #BAD_RIGHT_START,BAD_FRAME(a0)
  87.  
  88.     lea        BAD_SIZE(a0),a0
  89.     move.w    #BAD_STATE_RIGHT,BAD_ON(a0)
  90.     move.w    #176,BAD_X(a0)
  91.     move.w    #0,BAD_Y(a0)
  92.     move.w    #BAD_RIGHT_START,BAD_FRAME(a0)
  93.     rts
  94.  
  95. lev1
  96.     lea        _map1,a0
  97.     move.l    a0,map_pointer
  98.     lea        _objects,a0
  99.     move.w    #1,OBJ_ON(a0)
  100.     move.w    #112,OBJ_X(a0)
  101.     lea        OBJ_SIZE(a0),a0
  102.  
  103.     move.w    #1,OBJ_ON(a0)
  104.     move.w    #128,OBJ_X(a0)
  105.     lea        OBJ_SIZE(a0),a0
  106.  
  107.     move.w    #1,OBJ_ON(a0)
  108.     move.w    #144,OBJ_X(a0)
  109.     lea        OBJ_SIZE(a0),a0
  110.  
  111.     move.w    #1,OBJ_ON(a0)
  112.     move.w    #160,OBJ_X(a0)
  113.     lea        OBJ_SIZE(a0),a0
  114.  
  115.     move.w    #1,OBJ_ON(a0)
  116.     move.w    #176,OBJ_X(a0)
  117.     lea        OBJ_SIZE(a0),a0
  118.  
  119.     move.w    #1,OBJ_ON(a0)
  120.     move.w    #192,OBJ_X(a0)
  121.     lea        OBJ_SIZE(a0),a0
  122.  
  123.     move.w    #1,OBJ_ON(a0)
  124.     move.w    #64,OBJ_X(a0)
  125.     move.w    #48,OBJ_Y(a0)
  126.     lea        OBJ_SIZE(a0),a0
  127.  
  128.     move.w    #1,OBJ_ON(a0)
  129.     move.w    #240,OBJ_X(a0)
  130.     move.w    #48,OBJ_Y(a0)
  131.     move.w    #8,to_collect
  132.  
  133.     lea        _bad_guys,a0
  134.     move.w    #1,BAD_ON(a0)
  135.     move.w    #80,BAD_X(a0)
  136.     move.w    #96,BAD_Y(a0)
  137.     lea        BAD_SIZE(a0),a0
  138.  
  139.     move.w    #1,BAD_ON(a0)
  140.     move.w    #112,BAD_X(a0)
  141.     move.w    #16,BAD_Y(a0)
  142.     rts
  143.  
  144. lev2
  145.     lea        _map2,a0
  146.     move.l    a0,map_pointer
  147.     lea        _objects,a0
  148.     move.w    #1,OBJ_ON(a0)
  149.     lea        OBJ_SIZE(a0),a0
  150.     move.w    #1,OBJ_ON(a0)
  151.     move.w    #304,OBJ_X(a0)
  152.     move.w    #2,to_collect
  153.  
  154.     lea        _bad_guys,a0
  155.     move.w    #BAD_STATE_LEFT,BAD_ON(a0)
  156.     move.w    #32,BAD_X(a0)
  157.     move.w    #48,BAD_Y(a0)
  158.     move.w    #BAD_LEFT_START,BAD_FRAME(a0)
  159.  
  160.     lea        BAD_SIZE(a0),a0
  161.     move.w    #BAD_STATE_RIGHT,BAD_ON(a0)
  162.     move.w    #160,BAD_X(a0)
  163.     move.w    #80,BAD_Y(a0)
  164.     move.w    #BAD_RIGHT_START,BAD_FRAME(a0)
  165.     rts
  166.  
  167. lev3
  168.     lea        _map3,a0
  169.     move.l    a0,map_pointer
  170.     lea        _objects,a0
  171.     move.w    #1,OBJ_ON(a0)
  172.     lea        OBJ_SIZE(a0),a0
  173.     move.w    #1,OBJ_ON(a0)
  174.     move.w    #304,OBJ_X(a0)
  175.     move.w    #2,to_collect
  176.  
  177.  
  178.     lea        _bad_guys,a0
  179.     move.w    #BAD_STATE_LEFT,BAD_ON(a0)
  180.     move.w    #160,BAD_X(a0)
  181.     move.w    #160,BAD_Y(a0)
  182.     move.w    #BAD_LEFT_START,BAD_FRAME(a0)
  183.  
  184.     lea        BAD_SIZE(a0),a0
  185.     move.w    #BAD_STATE_RIGHT,BAD_ON(a0)
  186.     move.w    #0,BAD_X(a0)
  187.     move.w    #48,BAD_Y(a0)
  188.     move.w    #BAD_RIGHT_START,BAD_FRAME(a0)
  189.     rts
  190.  
  191. ********************************************************************************
  192.  
  193. _clear_objects
  194.     lea        _objects,a0
  195.     move.w    #MAX_OBJECTS-1,d0
  196. .loop
  197.         move.w    #0,OBJ_ON(a0)
  198.         move.w    #0,OBJ_X(a0)
  199.         move.w    #0,OBJ_Y(a0)
  200.         move.w    #0,OBJ_FRAME(a0)
  201.         lea        OBJ_SIZE(a0),a0
  202.     dbra    d0,.loop
  203.     rts
  204.  
  205. ********************************************************************************
  206.  
  207. _clear_bad_guys
  208.     lea        _bad_guys,a0
  209.     move.w    #MAX_BADDIES-1,d0
  210. .loop
  211.         move.w    #0,BAD_ON(a0)
  212.         move.w    #0,BAD_X(a0)
  213.         move.w    #0,BAD_Y(a0)
  214.         move.w    #0,BAD_FRAME(a0)
  215.         move.w    #BAD_FRAME_DELAY,BAD_DELAY(a0)
  216.         lea        BAD_SIZE(a0),a0
  217.     dbra    d0,.loop
  218.     rts
  219.  
  220. ********************************************************************************
  221.